<template> <div class="app-container"> <el-form :model="queryParams" ref="queryForm" size="small" :rules="rules" :disabled="showViewTime" label-width="120px" > <el-form-item :label="$t('指标类型')" prop="type"> <dict-selector clearable :type="DICT_TYPE.SCORE_RULE_TYPE" v-model="queryParams.type" > </dict-selector> </el-form-item> <el-row :gutter="10"> <el-col :span="12"> <el-form-item :label="$t('中文标题')" prop="titleZh"> <el-input style="width: 300px" v-model.trim="queryParams.titleZh" :placeholder="$t('请输入查找')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> <el-button size="mini" type="text" style="margin-left: 10px" v-if="queryParams.type == '4' && !showViewTime" @click="handleSelectBannerDialog()" >{{ $t("选择") }}</el-button > </el-form-item> </el-col> <el-col :span="12"> <el-form-item :label="$t('英文标题')" prop="titleEn"> <el-input style="width: 300px" v-model.trim="queryParams.titleEn" :placeholder="$t('请输入查找')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item ></el-col> </el-row> <el-row :gutter="10"> <el-col :span="12"> <el-form-item :label="$t('中文封面图')"> <image-upload v-model="queryParams.coverImageZh" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :label="$t('英文封面图')"> <image-upload v-model="queryParams.coverImageEn" /> </el-form-item> </el-col> </el-row> <!--分享活动内容 --> <el-form-item :label="$t('中文活动内容')" prop="extraShare.activityDescZh" v-if="queryParams.type == '4'" > <editor :readOnly="showViewTime" :class="{ readOnlyEditor: showViewTime }" v-model="queryParams.extraShare.activityDescZh" :min-height="150" /> </el-form-item> <el-form-item :label="$t('英文活动内容')" prop="extraShare.activityDescEn" v-if="queryParams.type == '4'" > <editor :class="{ readOnlyEditor: showViewTime }" :readOnly="showViewTime" v-model="queryParams.extraShare.activityDescEn" :min-height="150" /> </el-form-item> <!-- 链接 --> <el-form-item :label="$t('活动链接')" v-if="queryParams.type == '4'"> <el-input v-model="queryParams.extraShare.activityUrl" :placeholder="$t('请输入活动链接')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item> <!-- 推荐分享文案 --> <el-row :gutter="10" v-if="queryParams.type == '3'"> <el-col :span="12"> <el-form-item :label="$t('中文分享文案 ')" prop="extraRecommend.shareContentZh" > <el-input type="textarea" style="width: 300px" v-model.trim="queryParams.extraRecommend.shareContentZh" :placeholder="$t('请输入分享文案')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item ></el-col> <el-col :span="12"> <el-form-item :label="$t('英文分享文案')" prop="extraRecommend.shareContentEn" > <el-input type="textarea" style="width: 300px" v-model.trim="queryParams.extraRecommend.shareContentEn" :placeholder="$t('请输入分享文案')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item ></el-col> </el-row> <el-form-item v-if="queryParams.type == '1'" :label="$t('首单')"> <el-radio-group v-model="queryParams.extraOrderV.firstOrder"> <el-radio v-for="dict in getDictDatas(DICT_TYPE.YES_OR_NO)" :key="dict.value" :label="dict.value" >{{ $l(dict, "label") }}</el-radio > </el-radio-group> </el-form-item> <el-form-item :label="$t('运输方式')" v-if="queryParams.type == '1'" prop="extraOrderV.transportType" > <dict-selector clearable :type="DICT_TYPE.TRANSPORT_TYPE" v-model="queryParams.extraOrderV.transportType" > </dict-selector> </el-form-item> <el-form-item :label="$t('提货点')" v-if="queryParams.type == '1'" prop="extraOrderV.receiveAddrList" > <el-cascader v-if="cascaderState" style="width: 400px" :options="regionTreeList" v-model="queryParams.extraOrderV.receiveAddrList" :props="cascaderProps" clearable ></el-cascader> </el-form-item> <el-form-item :label="$t('渠道')" v-if="queryParams.extraOrderV.transportType == '3'" > <el-select v-model="queryParams.channel" multiple placeholder="请选择"> <el-option v-for="item in channelList" :key="item.channelId" :label="isChinese ? item.nameZh : item.nameEn" :value="item.channelId" > </el-option> </el-select> </el-form-item> <el-form-item :label="$t('积分规则')" v-if="queryParams.type == '1'" required > <el-row type="flex" justify="start" v-for="(item, index) in queryParams.extraOrderV.orderVRule" > <el-col :span="2"> <el-form-item :prop="'extraOrderV.orderVRule.' + index + '.low'" :rules="rules.extraOrderV.orderVRule.low" > <el-input style="width: 100px" v-model.number="item.low" ></el-input ></el-form-item> </el-col> <el-col :span="1"> {{ queryParams.transportType == "3" ? "kg" : "m³" }} {{ $t("至") }} </el-col> <el-col :span="2"> <el-form-item :prop="'extraOrderV.orderVRule.' + index + '.high'" :rules="rules.extraOrderV.orderVRule.high" > <el-input style="width: 100px" v-model.number="item.high" ></el-input> </el-form-item ></el-col> <el-col :span="1"> {{ queryParams.transportType == "3" ? "kg" : "m³" }} = </el-col> <el-col :span="2"> <el-form-item :prop="'extraOrderV.orderVRule.' + index + '.score'" :rules="rules.extraOrderV.orderVRule.score" ><el-input style="width: 100px" v-model.number="item.score" ></el-input ></el-form-item> </el-col> <el-col :span="1"> {{ $t("积分") }} </el-col> <el-col :span="1"> <el-button type="primary" :icon="index == '0' ? 'el-icon-plus' : 'el-icon-minus'" @click="handleOrderVRule(item, index)" ></el-button> </el-col> </el-row> </el-form-item> <!-- 除v值之外的积分规则 --> <el-form-item v-if="queryParams.type != '1'" :label="$t('积分规则')" prop="getScoreOnce" > <el-input style="width: 300px" v-model.number="queryParams.getScoreOnce" :placeholder="$t('请输入数字')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item> <el-form-item v-if="queryParams.type != '2'" :label="$t('累计最高积分')"> <el-input style="width: 300px" v-model.number="queryParams.maxScoreTotal" :placeholder="$t('请输入累计最高积分')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item> <el-form-item v-if="queryParams.type == '1'" :label="$t('订单入口')" prop="extraOrderV.orderEntry" > <dict-selector clearable :multiple="true" :type="DICT_TYPE.PLATFORM_TYPE" v-model="queryParams.extraOrderV.orderEntry" > </dict-selector> </el-form-item> <el-form-item :label="$t('活动有效期')" prop="dateRangeCreateTime" :rules="rules.dateRangeCreateTime" > <el-date-picker type="daterange" clearable placement="bottom-start" v-model="queryParams.dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" /> </el-form-item> <el-form-item :label="$t('积分有效期')" prop="scorePeriod"> <el-input v-model.number="queryParams.scorePeriod" :placeholder="$t('请输入积分有效期天数')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item> <el-form-item :label="$t('排序')" prop="orderNum"> <el-input v-model.number="queryParams.orderNum" :placeholder="$t('请输入排序')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item> <el-row :gutter="10"> <el-col :span="12"> <el-form-item :label="$t('中文规则说明')" prop="descZh"> <el-input type="textarea" v-model="queryParams.descZh"></el-input> </el-form-item> <span class="del-btn">{{ $t("注:此说明用于展示给会员查看积分原因,请规范填写") }}</span> </el-col> <el-col :span="12"> <el-form-item :label="$t('英文规则说明')" prop="descEn"> <el-input type="textarea" v-model="queryParams.descEn"></el-input> </el-form-item> <span class="del-btn">{{ $t("注:此说明用于展示给会员查看积分原因,请规范填写") }}</span> </el-col> </el-row> <el-form-item :label="$t('是否推送')" prop="pushActivity"> <el-radio-group v-model="queryParams.pushActivity"> <el-radio v-for="dict in getDictDatas(DICT_TYPE.YES_OR_NO)" :key="dict.value" :label="dict.value" >{{ $l(dict, "label") }}</el-radio > </el-radio-group> </el-form-item> <el-form-item :label="$t('展示平台')"> <dict-selector clearable formType="checkbox" :multiple="true" :type="DICT_TYPE.PLATFORM_TYPE" v-model="queryParams.showPlatform" > </dict-selector> </el-form-item> <el-form-item v-if="queryParams.type == '2'" :label="$t('注册平台')" prop="extraRegister.registerPlatform" > <dict-selector clearable :multiple="true" :type="DICT_TYPE.CLIENT_PLATFORM" v-model="queryParams.extraRegister.registerPlatform" > </dict-selector> </el-form-item> <el-form-item :label="$t('是否分享')" prop="extraRecommend.shareStatus" v-if="queryParams.type == '3'" > <el-radio-group v-model="queryParams.extraRecommend.shareStatus"> <el-radio v-for="dict in getDictDatas(DICT_TYPE.YES_OR_NO)" :key="dict.value" :label="dict.value" >{{ $l(dict, "label") }}</el-radio > </el-radio-group> </el-form-item> <el-form-item :label="$t('是否分享')" prop="extraShare.shareStatus" v-if="queryParams.type == '4'" > <el-radio-group v-model="queryParams.extraShare.shareStatus"> <el-radio v-for="dict in getDictDatas(DICT_TYPE.YES_OR_NO)" :key="dict.value" :label="dict.value" >{{ $l(dict, "label") }}</el-radio > </el-radio-group> </el-form-item> <!-- 编辑相关内容 --> <div v-if="showViewTime"> <el-form-item :label="$t('创建人')"> <el-input v-model.number="queryParams.creator" :placeholder="$t('请输入创建人')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item> <el-form-item :label="$t('创建时间')"> <el-date-picker type="date" :placeholder="$t('选择创建时间')" v-model="queryParams.createTime" value-format="yyyy-MM-dd HH:mm:ss" placement="bottom-start" ></el-date-picker> </el-form-item> <el-form-item :label="$t('最后更新人')"> <el-input v-model.number="queryParams.updater" :placeholder="$t('请输入最后更新人')" clearable onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> </el-form-item> <el-form-item :label="$t('最后更新时间')"> <el-date-picker type="date" :placeholder="$t('选择最后更新时间')" v-model="queryParams.updateTime" value-format="yyyy-MM-dd HH:mm:ss" placement="bottom-start" ></el-date-picker> </el-form-item> </div> </el-form> <el-row justify="end" :gutter="20" type="flex"> <el-col :span="3" v-if="$route.query.pageStatus == 'new'"> <el-button type="primary" @click="handleSaveIntegralRule" style="width: 100%" >{{ $t("保存") }}</el-button > </el-col> <el-col :span="3" v-if="$route.query.pageStatus == 'new'"> <el-button type="primary" style="width: 100%" @click="handleEnableIntegralRule" >{{ $t("保存并启用") }}</el-button > </el-col> <el-col :span="3" v-if="$route.query.pageStatus == 'edit'"> <el-button type="primary" style="width: 100%" @click="handleUpdatedIntegralRule" >{{ $t("更新") }}</el-button > </el-col> <el-col :span="3"> <el-button type="primary" style="width: 100%" @click="handleResetIntegralRule" >{{ $t("重置") }}</el-button > </el-col> <el-col :span="3"> <el-button style="width: 100%" type="primary" @click="handleGoBack">{{ $t("返回") }}</el-button> </el-col> </el-row> <!-- 选择广告弹窗 --> <el-dialog :title="$t('选择广告')" :visible.sync="dialogVisible" width="50%" > <el-table v-loading="loading" :data="list"> <el-table-column label="" align="center" prop="id" /> <el-table-column :label="$t('标题')" align="center" prop="titleZh" /> <el-table-column :label="$t('WEB端图片')" align="center" prop="bannerUrlWeb" > <template slot-scope="scope"> <el-image :src="scope.row.bannerUrlWeb"></el-image> </template> </el-table-column> <el-table-column :label="$t('APP端图片')" align="center" prop="bannerUrlApp" > <template slot-scope="scope"> <el-image :src="scope.row.bannerUrlApp"></el-image> </template> </el-table-column> <el-table-column :label="$t('状态')" align="center" prop="status"> <template slot-scope="scope"> <span>{{ statusName(scope.row.status) }}</span> </template> </el-table-column> <el-table-column :label="$t('创建时间')" align="center" prop="createTime" width="180" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime) }}</span> </template> </el-table-column> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" > <template slot-scope="scope"> <el-button size="mini" type="text" @click="handleSelectAdvertising(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="getList" /> </el-dialog> </div> </template> <script> import { CommonStatusEnum } from "@/utils/constants"; import { getBannerPage } from "@/api/ecw/banner"; import Editor from "@/components/Editor"; import { getDictDatas, DICT_TYPE } from "@/utils/dict"; import { getRegionTreeList, getChannelList, createIntegralRule, integralRuleDetails, integralRuleUpdated, } from "@/api/ecw/memberManagement"; import { deepClone } from "@/utils/index"; import ImageUpload from "@/components/ImageUpload"; import { parseTime } from "@/utils/ruoyi"; import { isNumber } from "min-dash"; import { mergeWith } from "lodash"; export default { name: "addIntegrationRuleOperation", components: { ImageUpload, Editor, }, data() { const validatePass2 = (rule, value, callback) => { const index = Number(rule.field.split(".")[2]); if (index == "0") { if ( this.queryParams.extraOrderV.orderVRule[index].low >= this.queryParams.extraOrderV.orderVRule[index].high && this.queryParams.extraOrderV.orderVRule[index].high ) { callback(this.$t("开始积分应小于本次最终积分")); } else { callback(); } } else if (index > "0") { if ( this.queryParams.extraOrderV.orderVRule[index].low >= this.queryParams.extraOrderV.orderVRule[index].high && this.queryParams.extraOrderV.orderVRule[index].high ) { callback(this.$t("开始积分应小于本次最终积分")); } else if ( this.queryParams.extraOrderV.orderVRule[index].low <= this.queryParams.extraOrderV.orderVRule[index - 1].high ) { callback(this.$t("开始积分应大于上一次最终积分")); } else { callback(); } } else { callback(); } }; const validatehigh = (rule, value, callback) => { const index = Number(rule.field.split(".")[2]); if (index == "0") { if ( this.queryParams.extraOrderV.orderVRule[index].low && this.queryParams.extraOrderV.orderVRule[index].low >= this.queryParams.extraOrderV.orderVRule[index].high ) { callback(this.$t("本次最终积分应大于本次开始积分")); } else if ( this.queryParams.extraOrderV.orderVRule[index + 1] && this.queryParams.extraOrderV.orderVRule[index + 1].low && this.queryParams.extraOrderV.orderVRule[index + 1].low <= this.queryParams.extraOrderV.orderVRule[index].high ) { callback(this.$t("本次最终积分应小于下一次开始积分")); } else { callback(); } } else if (index > "0") { if ( this.queryParams.extraOrderV.orderVRule[index].low && this.queryParams.extraOrderV.orderVRule[index].low >= this.queryParams.extraOrderV.orderVRule[index].high ) { callback(this.$t("本次最终积分应大于本次开始积分")); } else if ( this.queryParams.extraOrderV.orderVRule[index].high <= this.queryParams.extraOrderV.orderVRule[index + 1].low ) { callback(this.$t("本次最终积分应小于下一次开始积分")); } else { callback(); } } else { callback(); } }; return { //查看显示时间详情 showViewTime: false, CommonStatusEnum: CommonStatusEnum, statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS), loading: true, total: 0, // 广告设置列表 list: [], queryadvertisingParams: { pageNo: 1, pageSize: 10, titleZh: null, titleEn: null, contentZh: null, contentEn: null, bannerUrlWeb: null, bannerUrlApp: null, status: null, }, cascaderState: true, channelList: [], regionTreeList: [], dialogVisible: false, rules: { pushActivity: [ { required: true, message: this.$t("请选择是否推送"), trigger: "change", }, ], getScoreOnce: [ { required: true, message: this.$t("请输入积分规则"), trigger: "blur", }, { type: "number", message: this.$t("请输入整数"), trigger: "blur", }, ], descEn: [ { required: true, message: this.$t("请输入英文规则说明"), trigger: "blur", }, ], descZh: [ { required: true, message: this.$t("请输入中文规则说明"), trigger: "blur", }, ], titleZh: [ { required: true, message: this.$t("请输入中文标题"), trigger: "blur", }, ], titleEn: [ { required: true, message: this.$t("请输入中文标题"), trigger: "blur", }, ], orderNum: [ { required: true, message: this.$t("请输入排序"), trigger: "blur", }, { type: "number", message: this.$t("请输入整数"), trigger: "blur", }, ], scorePeriod: [ { type: "number", message: this.$t("请输入整数"), trigger: "blur", }, { required: true, message: this.$t("请输入积分有效天数"), trigger: "blur", }, ], type: [ { required: true, message: this.$t("请选择指标类型"), trigger: "change", }, ], dateRangeCreateTime: [ { required: true, message: this.$t("请选择活动有效期"), trigger: "change", }, ], //推荐 extraRecommend: { shareContentEn: [ { required: true, message: this.$t("请输入分享文案"), trigger: "blur", }, ], shareContentZh: [ { required: true, message: this.$t("请输入分享文案"), trigger: "blur", }, ], shareStatus: [ { required: true, message: this.$t("请选择是否分享"), trigger: "change", }, ], }, //v值 extraOrderV: { orderEntry: [ { required: true, message: "请选择订单入口", trigger: "change" }, ], transportType: [ { required: true, message: "请选择运输方式", trigger: "change" }, ], receiveAddrList: [ { required: true, message: "请选择提货点", trigger: "change" }, ], orderVRule: { low: [ { required: true, message: this.$t("不能为空"), trigger: "blur", }, { type: "number", message: this.$t("请输入整数"), trigger: "blur", }, { validator: validatePass2, trigger: "blur" }, ], score: [ { required: true, message: this.$t("不能为空"), trigger: "blur", }, { type: "number", message: this.$t("请输入整数"), trigger: "blur", }, ], high: [ { required: true, message: this.$t("不能为空"), trigger: "blur", }, { type: "number", message: this.$t("请输入整数"), trigger: "blur", }, { validator: validatehigh, trigger: "blur" }, ], }, }, //注册 extraRegister: { registerPlatform: [ { required: true, message: this.$t("请选择注册平台"), trigger: "change", }, ], }, //分享 extraShare: { activityDescEn: [ { required: true, message: this.$t("中文活动内容不能为空"), trigger: "blur", }, ], activityDescZh: [ { required: true, message: this.$t("英文活动内容不能为空"), trigger: "blur", }, ], shareStatus: [ { required: true, message: this.$t("请选择是否分享"), trigger: "change", }, ], }, }, queryParams: { dateRangeCreateTime: [], //活动有效期 type: "", //指标类型 titleZh: "", titleEn: "", coverImageZh: "", coverImageEn: "", maxScoreTotal: "", endTime: "", startTime: "", //活动开始时间 scorePeriod: "", //积分有效期 orderNum: "", //排序 descZh: "", pushActivity: "0", //是否推送(0是,1否)默认是 descEn: "", getScoreOnce: "", //除v值之外的积分规则 showPlatform: "1,2,3", //展示平台 extraRecommend: { //推荐 shareContentEn: "", shareContentZh: "", shareStatus: "0", //是否分享(0是,1否)默认是 }, extraRegister: { // 注册扩展字段 registerPlatform: null, }, extraOrderV: { //订单V值扩展字段 firstOrder: "1", orderEntry: null, transportType: "", //运输方式 receiveAddrList: [], orderVRule: [{ low: "", high: "", score: "" }], }, extraShare: { // 分享扩展字段 activityDescEn: null, activityDescZh: null, activityUrl: "", shareStatus: "0", }, }, }; }, computed: { statusName() { return (value) => { for (let index in this.statusDictDatas) { let dictItem = this.statusDictDatas[index]; if (dictItem.value == value) { return dictItem.value == CommonStatusEnum.ENABLE + "" ? this.$t("正常") : this.$t("禁用"); } } }; }, isChinese() { return this.$i18n.locale === "zh_CN"; }, cascaderProps() { const label = this.isChinese ? "labelZh" : "labelEn"; return { multiple: true, value: "id", label }; }, }, watch: { "queryParams.dateRangeCreateTime": { handler: function (newVal, oldVal) { this.$nextTick(() => { if (newVal.length > 0) { this.queryParams.startTime = newVal[0]; this.queryParams.endTime = newVal[1]; } else { this.queryParams.startTime = ""; this.queryParams.endTime = ""; } }); }, immediate: true, }, isChinese: { handler: function (newVal, oldVal) { this.cascaderState = false; this.$nextTick(() => { this.cascaderState = true; }); }, immediate: true, }, }, created() { this.handleGetChannelList(); this.handleGetRegionTreeList(); this.getList(); if (this.$route.query.pageStatus == "edit") { this.handleIntegralRuleDetails(); } if (this.$route.query.pageStatus == "view") { this.showViewTime = true; this.handleIntegralRuleDetails(); } }, activated() {}, methods: { //编辑更新积分规则 handleUpdatedIntegralRule() { this.$refs["queryForm"].validate((valid) => { if (valid) { let params = deepClone(this.queryParams); integralRuleUpdated(params).then((res) => { this.$message.success(this.$t("更新成功")); this.$router.go(-1); }); } else { console.log("error submit!!"); return false; } }); }, //获取积分规则详情 handleIntegralRuleDetails() { integralRuleDetails({ id: this.$route.query.id }).then((res) => { const params = mergeWith( deepClone(this.queryParams), res.data, (a, b) => { return b === null ? a : undefined; } ); params.createTime = parseTime(res.data.createTime); params.updateTime = parseTime(res.data.updateTime); if (isNumber(res.data.extraOrderV?.firstOrder)) { params.extraOrderV.firstOrder = res.data.extraOrderV?.firstOrder.toString(); } if (isNumber(res.data.pushActivity)) { params.pushActivity = res.data.pushActivity.toString(); } if (isNumber(res.data.extraShare?.shareStatus)) { params.extraShare.shareStatus = params.extraShare.shareStatus.toString(); } if (isNumber(res.data.extraRecommend?.shareStatus)) { params.extraRecommend.shareStatus = res.data.extraRecommend?.shareStatus.toString(); } console.log(params); params.dateRangeCreateTime = [ parseTime(res.data.startTime), parseTime(res.data.endTime), ]; this.queryParams = { ...params }; }); }, handleSelectBannerDialog() { this.dialogVisible = true; }, handleSelectAdvertising(row) { this.dialogVisible = false; this.queryParams.titleZh = row.titleZh; this.queryParams.titleEn = row.titleEn; this.queryParams.coverImageZh = row.bannerUrlApp; this.queryParams.coverImageEn = row.bannerUrlApp; this.queryParams.extraShare.activityDescZh = row.contentEn; this.queryParams.extraShare.activityDescEn = row.contentZh; }, /** 查询列表 */ getList() { this.loading = true; // 处理查询参数 let params = { ...this.queryadvertisingParams }; getBannerPage(params).then((response) => { this.list = response.data.list; this.total = response.data.total; this.loading = false; }); }, //重置按钮操作 handleResetIntegralRule() { this.$modal .confirm(this.$t("是否确认重置此礼品规则表单"), this.$t("提示")) .then(() => { this.$refs["queryForm"].resetFields(); this.$modal.msgSuccess(this.$t("重置成功")); }) .catch(() => {}); }, //返回按钮操作 handleGoBack() { this.$modal .confirm(this.$t("是否确认返回"), this.$t("提示")) .then(() => { // this.$router.go(-1); this.$store.dispatch("tagsView/delCurrentView"); this.$modal.msgSuccess(this.$t("成功")); }) .catch(() => {}); }, //保存 handleSaveIntegralRule() { this.$refs["queryForm"].validate((valid) => { if (valid) { let params = deepClone(this.queryParams); params.showPlatform = this.queryParams.showPlatform?.join(); params.extraOrderV.orderEntry = this.queryParams.extraOrderV?.orderEntry?.join(); params.extraRegister.registerPlatform = this.queryParams.extraRegister.registerPlatform?.join(); params.status = this.queryParams.status || "2"; createIntegralRule(params).then((res) => { this.$message.success(this.$t("成功")); this.$router.go(-1); }); } else { console.log("error submit!!"); return false; } }); }, //保存并启用 handleEnableIntegralRule() { this.$refs["queryForm"].validate((valid) => { if (valid) { let params = deepClone(this.queryParams); params.showPlatform = this.queryParams.showPlatform?.join(); params.extraOrderV.orderEntry = this.queryParams.extraOrderV.orderEntry?.join(); params.extraRegister.registerPlatform = this.queryParams.extraRegister.registerPlatform?.join(); params.status = this.queryParams.status || "1"; createIntegralRule(params).then((res) => { this.$message.success(this.$t("成功")); this.$router.go(-1); }); } else { console.log("error submit!!"); return false; } }); }, handleOrderVRule(item, index) { if (index == "0") { this.queryParams.extraOrderV.orderVRule.push({ low: "", high: "", score: "", }); } else { this.queryParams.extraOrderV.orderVRule.splice(index, 1); } }, //获取渠道列表 handleGetChannelList() { getChannelList().then((res) => { this.channelList = res.data; }); }, //获取目的仓列表 handleGetRegionTreeList() { getRegionTreeList().then((res) => { this.regionTreeList = res.data; }); }, traverseTree(tree, newVal) { for (let node of tree) { node.labeluu = newVal ? node.labelZh : node.labelEn; if (node.children && node.children.length > 0) { this.traverseTree(node.children); // 递归遍历子节点 } } return tree; }, //积分来源 handleSourceType(id) { return this.getDictDatas(DICT_TYPE.SCORE_RULE_TYPE).filter( (item) => item.value == id )[0]; }, }, }; </script> <style lang="scss" scoped> .del-btn { color: red; padding-left: 120px; } .readOnlyEditor { background-color: #f5f7fa; cursor: not-allowed; } </style>