Commit 61078ec6 authored by 余金瑶's avatar 余金瑶

Merge branch 'pre-release' of...

Merge branch 'pre-release' of http://110.41.143.128:8081/lanbaoming/jiedao-app-operator-master into yujinyao
parents 28d40e8a f304a9b6
......@@ -3,7 +3,7 @@
<ul class="el-upload-list el-upload-list--picture-card">
<li tabindex="0" class="el-upload-list__item is-success" v-for="(item, index) in fileList" :key="index">
<video v-if="item.url.substr(-4) == '.mp4'" :src="item.url"></video>
<img v-else :src="item.url" :alt="item.name" class="el-upload-list__item-thumbnail">
<img v-else :src="item.url" :alt="item.name" class="el-upload-list__item-thumbnail" />
<!-- <a class="el-upload-list__item-name">
<i class="el-icon-document"></i>
</a> -->
......@@ -16,80 +16,58 @@
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(item)">
<i class="el-icon-zoom-in"></i>
</span>
<span class="el-upload-list__item-delete" @click="handleRemove(item)" v-if ="isShowEditButton">
<span class="el-upload-list__item-delete" @click="handleRemove(item)" v-if="isShowEditButton">
<i class="el-icon-delete"></i>
</span>
</span>
</li>
</ul>
<el-upload
v-if ="isShowEditButton"
multiple
:action="uploadImgUrl"
list-type="picture-card"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
name="file"
:on-remove="handleRemove"
:show-file-list="false"
:headers="headers"
:file-list="fileList"
:on-preview="handlePictureCardPreview"
:class="{hide: this.fileList.length >= this.limit}"
>
<el-upload v-if="isShowEditButton" multiple :action="uploadImgUrl" list-type="picture-card" :on-success="handleUploadSuccess" :before-upload="handleBeforeUpload" :limit="limit" :on-error="handleUploadError" :on-exceed="handleExceed" name="file" :on-remove="handleRemove" :show-file-list="false" :headers="headers" :file-list="fileList" :on-preview="handlePictureCardPreview" :class="{ hide: this.fileList.length >= this.limit }">
<i class="el-icon-plus"></i>
</el-upload>
<!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip">
{{$t('请上传')}}
<template v-if="fileSize"> {{$t('大小不超过')}} <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
<template v-if="fileType"> {{$t('格式为')}} <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
{{$t('的文件')}}
{{ $t("请上传") }}
<template v-if="fileSize">
{{ $t("大小不超过") }} <b style="color: #f56c6c">{{ fileSize }}MB</b>
</template>
<template v-if="fileType">
{{ $t("格式为") }} <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
</template>
{{ $t("的文件") }}
</div>
<el-dialog
:visible.sync="dialogVisible"
:title="$t('预览')"
width="800"
append-to-body
>
<el-dialog :visible.sync="dialogVisible" :title="$t('预览')" width="800" append-to-body>
<template v-if="dialogImageUrl">
<video v-if="dialogImageUrl.substr(-4) == '.mp4'" :src="dialogImageUrl" controls autoplay style="display: block; max-width: 100%; margin: 0 auto"></video>
<img
v-else
:src="dialogImageUrl"
style="display: block; max-width: 100%; margin: 0 auto"
/>
<img v-else :src="dialogImageUrl" style="display: block; max-width: 100%; margin: 0 auto" />
</template>
</el-dialog>
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
import { getToken } from "@/utils/auth"
export default {
props: {
value: [String, Object, Array],
// 图片数量限制
limit2: {
limit: {
type: Number,
default: 5,
default: 5
},
// 大小限制(MB)
fileSize: {
type: Number,
default: 5,
default: 5
},
// 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: {
type: Array,
default: () => ["png", "jpg", "jpeg", 'mp4'],
default: () => ["png", "jpg", "jpeg", "mp4"]
},
// 是否显示提示
isShowTip: {
......@@ -97,7 +75,7 @@ export default {
default: true
},
//是否显示编辑按钮
isShowEditButton:{
isShowEditButton: {
type: Boolean,
default: true
}
......@@ -112,32 +90,31 @@ export default {
baseUrl: process.env.VUE_APP_BASE_API,
uploadImgUrl: process.env.VUE_APP_BASE_API + "/app-api/file/upload", // 上传的图片服务器地址
headers: {
Authorization: "Bearer " + getToken(),
Authorization: "Bearer " + getToken()
},
fileList: [],
limit: 5
};
fileList: []
}
},
watch: {
value: {
handler(val) {
if (val) {
// 首先将值转为数组
const list = Array.isArray(val) ? val : this.value.split(',');
const list = Array.isArray(val) ? val : this.value.split(",")
// 然后将数组转为对象数组
this.fileList = list.map(item => {
this.fileList = list.map((item) => {
if (typeof item === "string") {
if (item.indexOf(this.baseUrl) === -1) {
item = { name: item, url: item };
item = { name: item, url: item }
} else {
item = { name: item, url: item };
item = { name: item, url: item }
}
}
return item;
});
return item
})
} else {
this.fileList = [];
return [];
this.fileList = []
return []
}
},
deep: true,
......@@ -147,87 +124,87 @@ export default {
computed: {
// 是否显示提示
showTip() {
return this.isShowTip && (this.fileType || this.fileSize);
},
return this.isShowTip && (this.fileType || this.fileSize)
}
},
methods: {
// 删除图片
handleRemove(file, fileList) {
const findex = this.fileList.map(f => f.name).indexOf(file.name);
if(findex > -1) {
this.fileList.splice(findex, 1);
this.$emit("input", this.listToString(this.fileList));
const findex = this.fileList.map((f) => f.name).indexOf(file.name)
if (findex > -1) {
this.fileList.splice(findex, 1)
this.$emit("input", this.listToString(this.fileList))
}
},
// 上传成功回调
handleUploadSuccess(res) {
console.log({res})
this.uploadList.push({ name: res.data.split('/').pop(), url: res.data });
console.log({ res })
this.uploadList.push({ name: res.data.split("/").pop(), url: res.data })
if (this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading();
this.fileList = this.fileList.concat(this.uploadList)
this.uploadList = []
this.number = 0
this.$emit("input", this.listToString(this.fileList))
this.$modal.closeLoading()
}
},
// 上传前loading加载
handleBeforeUpload(file) {
let isImg = false;
let isImg = false
if (this.fileType.length) {
let fileExtension = "";
let fileExtension = ""
if (file.name.lastIndexOf(".") > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1)
}
isImg = this.fileType.some(type => {
if (file.type.indexOf(type) > -1) return true;
if (fileExtension && fileExtension.indexOf(type) > -1) return true;
return false;
});
isImg = this.fileType.some((type) => {
if (file.type.indexOf(type) > -1) return true
if (fileExtension && fileExtension.indexOf(type) > -1) return true
return false
})
} else {
isImg = file.type.indexOf("image") > -1;
isImg = file.type.indexOf("image") > -1
}
if (!isImg) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);
return false;
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`)
return false
}
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize;
const isLt = file.size / 1024 / 1024 < this.fileSize
if (!isLt) {
this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
return false;
this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`)
return false
}
}
this.$modal.loading("正在上传图片,请稍候...");
this.number++;
this.$modal.loading("正在上传图片,请稍候...")
this.number++
},
// 文件个数超出
handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`)
},
// 上传失败
handleUploadError() {
this.$modal.msgError("上传图片失败,请重试");
this.$modal.closeLoading();
this.$modal.msgError("上传图片失败,请重试")
this.$modal.closeLoading()
},
// 预览
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
this.dialogImageUrl = file.url
this.dialogVisible = true
// window.open(file.url)
},
// 对象转成指定字符串分隔
listToString(list, separator) {
let strs = "";
separator = separator || ",";
let strs = ""
separator = separator || ","
for (let i in list) {
strs += list[i].url.replace(this.baseUrl, "") + separator;
strs += list[i].url.replace(this.baseUrl, "") + separator
}
return strs != '' ? strs.substr(0, strs.length - 1) : '';
return strs != "" ? strs.substr(0, strs.length - 1) : ""
}
}
};
}
</script>
<style scoped lang="scss">
// .el-upload--picture-card 控制加号部分
......@@ -240,14 +217,14 @@ export default {
transition: all 0s;
}
::v-deep .el-list-enter, .el-list-leave-active {
::v-deep .el-list-enter,
.el-list-leave-active {
opacity: 0;
transform: translateY(0);
}
.component-upload-image{
.component-upload-image {
display: flex;
flex-wrap: wrap;
}
</style>
......@@ -424,7 +424,7 @@ export default {
width: 286px;
}
.el-input {
width: 140px;
width: 141px;
}
.el-form-item--small.el-form-item {
margin-bottom: 0;
......
......@@ -27,16 +27,21 @@
</el-row>
<el-row :gutter="10" v-for="(item, index) in queryParams.nodeIds">
<el-col :span="6">
<el-form-item :label="$t('提货点')" :prop="`nodeIds[${index}].wareHouses`" :rules="rules.nodeIds.wareHouses">
<el-form-item v-if="title == 3" :label="$t('提货点')" :prop="`nodeIds[${index}].wareHouses`" :rules="rules.nodeIds.wareHouses">
<el-select v-model="item.wareHouses" :placeholder="$t('请选择提货点')" :disabled="isDisable" clearable multiple filterable remote reserve-keyword :remote-method="handleWarehouseList" @visible-change="changeWarehouseList" :loading="loading" size="small">
<el-option v-for="nodeItem in warehouseList" :key="nodeItem.id" :label="isChinese ? nodeItem.titleZh : nodeItem.titleEn" :value="nodeItem.id" />
</el-select>
</el-form-item>
<el-form-item v-else :label="$t('提货点')" :prop="`nodeIds[${index}].wareHouses`" :rules="rules.nodeIds.wareHouses">
<el-select v-model="queryParams.nodeId" :placeholder="$t('请选择提货点')" :disabled="isDisable" clearable filterable remote reserve-keyword :remote-method="handleWarehouseList" @visible-change="changeWarehouseList" :loading="loading" size="small">
<el-option v-for="nodeItem in warehouseList" :key="nodeItem.id" :label="isChinese ? nodeItem.titleZh : nodeItem.titleEn" :value="nodeItem.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('兑换积分')" :prop="`nodeIds[${index}].points`" :rules="rules.nodeIds.points"> <el-input v-model.trim.number="item.points" :placeholder="$t('请输入')" :disabled="isDisable" /> </el-form-item
></el-col>
<el-col :span="6">
<el-col :span="6" class="giftNum">
<el-form-item :label="$t('剩余数量')" :prop="`nodeIds[${index}].quantityRemain`" :rules="rules.nodeIds.quantityRemain">
<el-input class="input-item-width" :disabled="isDisable && disabelEnableStatus" v-model.trim="item.quantityRemain" :placeholder="$t('请输入')" type="number" />
</el-form-item>
......@@ -92,7 +97,7 @@ import { editRewards, addRewards, getWarehouseList } from "@/api/ecw/giftManagem
import { getDictDatas, DICT_TYPE } from "@/utils/dict"
import imageUpload from "@/components/ImageUpload"
import { parseTime, resetForm } from "../../../../utils/ruoyi"
import { deepClone } from "@/utils"
import { deepClone, titleCase } from "@/utils"
export default {
name: "operatingGift",
props: {
......@@ -324,6 +329,7 @@ export default {
params.startTime = this.queryParams?.dateRangeCreateTime?.[0]
params.endTime = this.queryParams?.dateRangeCreateTime?.[1]
params.pickMethod = this.queryParams.pickMethod.toString()
params.nodeIds[0].wareHouses[0] = params.nodeId
this.$refs["queryForm"].validate((valid) => {
if (valid) {
if (this.title == "2") {
......@@ -377,4 +383,7 @@ export default {
.input-item-width {
width: 194px;
}
.giftNum .input-item-width {
width: auto;
}
</style>
<template>
<div class="app-container">
<el-row class="mb8">
<el-button
type="success"
size="mini"
icon="el-icon-plus"
@click="handleNewScoreRule"
>{{ $t("添加规则") }}</el-button
>
<el-button
type="success"
size="mini"
icon="el-icon-delete"
@click="handleDelScoreRule"
>{{ $t("删除规则") }}</el-button
>
<el-button type="success" size="mini" icon="el-icon-plus" @click="handleNewScoreRule">{{ $t("添加规则") }}</el-button>
<el-button type="success" size="mini" icon="el-icon-delete" @click="handleDelScoreRule">{{ $t("删除规则") }}</el-button>
</el-row>
<el-table
ref="multipleTable"
v-loading="loading"
@selection-change="handleSelectionChange"
:data="memberLevelList"
>
<el-table ref="multipleTable" v-loading="loading" @selection-change="handleSelectionChange" :data="memberLevelList">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column
width="140"
:label="$t('序号')"
align="center"
prop="id"
></el-table-column>
<el-table-column
:label="$t('等级名称')"
align="center"
prop="name"
></el-table-column>
<el-table-column width="140" :label="$t('序号')" align="center" prop="id"></el-table-column>
<el-table-column :label="$t('等级名称')" align="center" prop="name"></el-table-column>
<el-table-column
width="140"
:label="$t('图标')"
align="center"
prop="mobile"
>
<el-table-column width="140" :label="$t('图标')" align="center" prop="mobile">
<template slot-scope="scope">
<el-image :src="scope.row.icon" style="width: 50px; height: 50px">{{
$t("")
}}</el-image>
<el-image :src="scope.row.icon" style="width: 50px; height: 50px">{{ $t("") }}</el-image>
</template>
</el-table-column>
<el-table-column :label="$t('积分范围')" align="center">
<template slot-scope="scope">
{{ scope.row.lowerCount }}-{{ scope.row.upperCount }}
</template>
<template slot-scope="scope"> {{ scope.row.lowerCount }}-{{ scope.row.upperCount }} </template>
</el-table-column>
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>{{ $t("修改") }}</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>{{ $t("删除") }}</el-button
>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">{{ $t("修改") }}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">{{ $t("删除") }}</el-button>
</template>
</el-table-column>
</el-table>
<!-- //分页列表 -->
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="handleQueryPagination"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="handleQueryPagination" />
<el-dialog
:title="$t('添加规则')"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
>
<el-form
:model="ruleForm"
ref="ruleForm"
label-width="100px"
class="demo-ruleForm"
>
<el-dialog :title="$t('添加规则')" :visible.sync="dialogVisible" width="30%" :before-close="handleClose">
<el-form :model="ruleForm" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item :label="$t('等级名称')">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
......@@ -110,31 +47,24 @@
</el-col>
</el-form-item>
<el-form-item :label="$t('上传图标')">
<image-upload v-model="ruleForm.icon" />
<image-upload v-model="ruleForm.icon" :fileType="['png', 'jpg', 'jpeg']" :limit="1" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">{{ $t("取 消") }}</el-button>
<el-button type="primary" @click="handelAddNewMemberLevel">{{
$t("确定")
}}</el-button>
<el-button type="primary" @click="handelAddNewMemberLevel">{{ $t("确定") }}</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { getDictDatas, DICT_TYPE } from "@/utils/dict";
import {
getMemberLevelList,
addNewMemberLevel,
delMemberLevel,
editMemberLevel,
} from "@/api/ecw/memberManagement";
import ImageUpload from "@/components/ImageUpload";
import { getDictDatas, DICT_TYPE } from "@/utils/dict"
import { getMemberLevelList, addNewMemberLevel, delMemberLevel, editMemberLevel } from "@/api/ecw/memberManagement"
import ImageUpload from "@/components/ImageUpload"
export default {
name: "integralRecord",
components: {
ImageUpload,
ImageUpload
},
data() {
return {
......@@ -144,104 +74,104 @@ export default {
icon: "",
lowerCount: "",
name: "",
upperCount: "",
upperCount: ""
},
total: 0,
loading: true,
memberLevelList: [],
queryParams: {
pageNo: 1,
pageSize: 10,
},
};
pageSize: 10
}
}
},
computed: {
isChinese() {
return this.$i18n.locale === "zh_CN";
},
return this.$i18n.locale === "zh_CN"
}
},
created() {
this.handleQuery();
this.handleQuery()
},
activated() {
this.handleQuery();
this.handleQuery()
},
methods: {
handleUpdate(row) {
this.ruleForm = { ...row };
this.dialogVisible = true;
this.ruleForm = { ...row }
this.dialogVisible = true
},
handleDelete(row) {
let ids = [row.id];
let ids = [row.id]
delMemberLevel(ids).then((res) => {
this.$message.success(this.$t("删除成功"));
this.handleClose();
this.handleQuery();
});
this.$message.success(this.$t("删除成功"))
this.handleClose()
this.handleQuery()
})
},
handelAddNewMemberLevel() {
if (this.ruleForm.id) {
editMemberLevel(this.ruleForm).then((res) => {
this.$message.success(this.$t("更新成功"));
this.handleClose();
this.handleQuery();
});
this.$message.success(this.$t("更新成功"))
this.handleClose()
this.handleQuery()
})
} else {
let params = { ...this.ruleForm };
let params = { ...this.ruleForm }
addNewMemberLevel(params).then((res) => {
this.$message.success(this.$t("保存成功"));
this.handleClose();
this.handleQuery();
});
this.$message.success(this.$t("保存成功"))
this.handleClose()
this.handleQuery()
})
}
},
handleSelectionChange(ids) {
this.selectList = ids;
this.selectList = ids
},
handleClose() {
this.dialogVisible = false;
this.selectList = [];
this.dialogVisible = false
this.selectList = []
this.ruleForm = {
icon: "",
lowerCount: "",
name: "",
upperCount: "",
};
upperCount: ""
}
},
handleDelScoreRule() {
if (this.selectList.length > 0) {
let ids = this.selectList.map((item) => {
return item.id;
});
return item.id
})
delMemberLevel(ids).then((res) => {
this.$message.success(this.$t("删除成功"));
this.handleClose();
this.handleQuery();
});
this.$message.success(this.$t("删除成功"))
this.handleClose()
this.handleQuery()
})
} else {
this.$message.warning(this.$t("请先选择要删除的会员等级"));
this.$message.warning(this.$t("请先选择要删除的会员等级"))
}
},
handleNewScoreRule() {
this.dialogVisible = true;
this.dialogVisible = true
},
handleQuery() {
this.queryParams.pageNo = 1;
let params = { ...this.queryParams };
this.queryParams.pageNo = 1
let params = { ...this.queryParams }
getMemberLevelList(params).then((res) => {
this.loading = false;
this.memberLevelList = res.data.list;
this.total = res.data.total;
});
this.loading = false
this.memberLevelList = res.data.list
this.total = res.data.total
})
},
handleQueryPagination() {
let params = { ...this.queryParams };
let params = { ...this.queryParams }
getMemberLevelList(params).then((res) => {
this.loading = false;
this.memberLevelList = res.data.list;
this.total = res.data.total;
});
},
},
};
this.loading = false
this.memberLevelList = res.data.list
this.total = res.data.total
})
}
}
}
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment