Commit cc33a773 authored by chenwei's avatar chenwei

积分记录

parent 6e9469c3
...@@ -218,3 +218,21 @@ export function integralRuleDelete(data) { ...@@ -218,3 +218,21 @@ export function integralRuleDelete(data) {
data, data,
}); });
} }
//获取积分规则详情
export function integralRuleDetails(data) {
return request({
url: "/member/score-rule/get",
method: "post",
data,
});
}
//编辑积分规则
export function integralRuleUpdated(data) {
return request({
url: "/member/score-rule/update",
method: "post",
data,
});
}
...@@ -128,14 +128,17 @@ export default { ...@@ -128,14 +128,17 @@ export default {
methods: { methods: {
format(val) { format(val) {
if (val === null || val == undefined || val == "") return val; if (val === null || val == undefined || val == "") return val;
let formatter = let formatter =
typeof this.formatter == "function" typeof this.formatter == "function"
? this.formatter ? this.formatter
: FORMATTERS[this.formatter]; : FORMATTERS[this.formatter];
if (!formatter) { if (!formatter) {
console.warn("格式器无效", this.formatter); console.warn("格式器无效", this.formatter);
return val; return val;
} }
return formatter(val); return formatter(val);
}, },
changeValue(val) { changeValue(val) {
......
...@@ -4638,5 +4638,27 @@ ...@@ -4638,5 +4638,27 @@
"请输入会员昵称": "Please enter a member nickname", "请输入会员昵称": "Please enter a member nickname",
"请输入礼品ID": "Please enter the gift ID", "请输入礼品ID": "Please enter the gift ID",
"新增兑换": "New exchange", "新增兑换": "New exchange",
"兑换信息导入": "Exchange Information Import" "兑换信息导入": "Exchange Information Import",
} "订单ID": "order ID",
"请选择是否分享": "Please choose whether to share ",
"是否分享": "Whether to share ",
"活动链接": "Activity Link ",
"英文活动内容": "English Activities ",
"中文活动内容": "Chinese Content",
"请输入查找": "Please enter to find ",
"删除规则": "Delete Rules ",
"积分范围": "Integral Range ",
"兑换记录ID": "Exchange Record ID",
"核销回退": "Write-off rollback ",
"请输入礼品积分": "Please enter Gift points ",
"请输入当前积分": "Please enter current credits ",
"请选择礼品": "Please select a Gift ",
"中文活动内容不能为空": "Chinese activity content cannot be empty ",
"英文活动内容不能为空": "English activity content cannot be empty ",
"开始积分应大于上一次最终积分": "Starting points should be greater than the last final points ",
"开始积分应小于本次最终积分": "The starting score should be less than the final score ",
"本次最终积分应大于本次开始积分": "The final score should be greater than the initial score ",
"本次最终积分应小于下一次开始积分": "This final score should be less than the next starting score ",
"确认兑换": "Confirm conversion",
"操作积分": "Operation integral"
}
\ No newline at end of file
...@@ -253,6 +253,7 @@ export const DICT_TYPE = { ...@@ -253,6 +253,7 @@ export const DICT_TYPE = {
SCORE_RULE_TYPE: "score_rule_type", //积分规则指标类型 SCORE_RULE_TYPE: "score_rule_type", //积分规则指标类型
YES_OR_NO: "yes_or_no", YES_OR_NO: "yes_or_no",
CLIENT_PLATFORM: "client_platform", CLIENT_PLATFORM: "client_platform",
MEMBER_SCORE_SOURCE: "member_score_source", //会员积分来源
}; };
/** /**
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
ref="queryForm" ref="queryForm"
size="small" size="small"
:rules="rules" :rules="rules"
:disabled="showViewTime"
label-width="120px" label-width="120px"
> >
<el-form-item :label="$t('指标类型')" prop="type"> <el-form-item :label="$t('指标类型')" prop="type">
...@@ -24,8 +25,17 @@ ...@@ -24,8 +25,17 @@
:placeholder="$t('请输入查找')" :placeholder="$t('请输入查找')"
clearable clearable
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/> </el-form-item />
></el-col> <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-col :span="12">
<el-form-item :label="$t('英文标题')" prop="titleEn"> <el-form-item :label="$t('英文标题')" prop="titleEn">
<el-input <el-input
...@@ -49,27 +59,67 @@ ...@@ -49,27 +59,67 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </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"> <el-row :gutter="10" v-if="queryParams.type == '3'">
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('中文分享文案 ')" prop="titleZh"> <el-form-item
:label="$t('中文分享文案 ')"
prop="extraRecommend.shareContentZh"
>
<el-input <el-input
type="textarea" type="textarea"
style="width: 300px" style="width: 300px"
v-model.trim="queryParams.titleZh" v-model.trim="queryParams.extraRecommend.shareContentZh"
:placeholder="$t('请输入分享文案')" :placeholder="$t('请输入分享文案')"
clearable clearable
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/> </el-form-item /> </el-form-item
></el-col> ></el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('英文分享文案')" prop="titleEn"> <el-form-item
:label="$t('英文分享文案')"
prop="extraRecommend.shareContentEn"
>
<el-input <el-input
type="textarea" type="textarea"
style="width: 300px" style="width: 300px"
v-model.trim="queryParams.titleEn" v-model.trim="queryParams.extraRecommend.shareContentEn"
:placeholder="$t('请输入分享文案')" :placeholder="$t('请输入分享文案')"
clearable clearable
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
...@@ -77,7 +127,6 @@ ...@@ -77,7 +127,6 @@
></el-col> ></el-col>
</el-row> </el-row>
<el-form-item v-if="queryParams.type == '1'" :label="$t('首单')"> <el-form-item v-if="queryParams.type == '1'" :label="$t('首单')">
<el-radio-group v-model="queryParams.extraOrderV.firstOrder"> <el-radio-group v-model="queryParams.extraOrderV.firstOrder">
<el-radio <el-radio
...@@ -307,46 +356,207 @@ ...@@ -307,46 +356,207 @@
> >
</dict-selector> </dict-selector>
</el-form-item> </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-form>
<el-row justify="end" :gutter="20" type="flex"> <el-row justify="end" :gutter="20" type="flex">
<el-col :span="3"> <el-col :span="3" v-if="$route.query.pageStatus == 'new'">
<el-button type="primary" @click="handleSaveIntegralRule">{{ <el-button
$t("保存") type="primary"
}}</el-button> @click="handleSaveIntegralRule"
style="width: 100%"
>{{ $t("保存") }}</el-button
>
</el-col> </el-col>
<el-col :span="3"> <el-col :span="3" v-if="$route.query.pageStatus == 'new'">
<el-button type="primary" @click="handleEnableIntegralRule">{{ <el-button
$t("保存并启用") type="primary"
}}</el-button> 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>
<el-col :span="3"> <el-col :span="3">
<el-button type="primary" @click="handleResetIntegralRule">{{ <el-button
$t("重置") type="primary"
}}</el-button> style="width: 100%"
@click="handleResetIntegralRule"
>{{ $t("重置") }}</el-button
>
</el-col> </el-col>
<el-col :span="3"> <el-col :span="3">
<el-button @click="handleGoBack">{{ $t("返回") }}</el-button> <el-button style="width: 100%" type="primary" @click="handleGoBack">{{
$t("返回")
}}</el-button>
</el-col> </el-col>
</el-row> </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> </div>
</template> </template>
<script> <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 { getDictDatas, DICT_TYPE } from "@/utils/dict";
import { import {
queryMemberScoreRecord,
getRegionTreeList, getRegionTreeList,
getChannelList, getChannelList,
createIntegralRule, createIntegralRule,
integralRuleDetails,
integralRuleUpdated,
} from "@/api/ecw/memberManagement"; } from "@/api/ecw/memberManagement";
import { deepClone } from "@/utils/index"; import { deepClone } from "@/utils/index";
import ImageUpload from "@/components/ImageUpload"; import ImageUpload from "@/components/ImageUpload";
import { parseTime } from "@/utils/ruoyi";
import { isNumber } from "min-dash";
import { mergeWith } from "lodash";
export default { export default {
name: "addIntegrationRuleOperation", name: "addIntegrationRuleOperation",
components: { components: {
ImageUpload, ImageUpload,
Editor,
}, },
data() { data() {
var validatePass2 = (rule, value, callback) => { const validatePass2 = (rule, value, callback) => {
const index = Number(rule.field.split(".")[2]); const index = Number(rule.field.split(".")[2]);
if (index == "0") { if (index == "0") {
...@@ -378,7 +588,7 @@ export default { ...@@ -378,7 +588,7 @@ export default {
callback(); callback();
} }
}; };
var validatehigh = (rule, value, callback) => { const validatehigh = (rule, value, callback) => {
const index = Number(rule.field.split(".")[2]); const index = Number(rule.field.split(".")[2]);
if (index == "0") { if (index == "0") {
if ( if (
...@@ -417,10 +627,29 @@ export default { ...@@ -417,10 +627,29 @@ export default {
} }
}; };
return { 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, cascaderState: true,
channelList: [], channelList: [],
regionTreeList: [], regionTreeList: [],
dialogVisible: false,
rules: { rules: {
pushActivity: [ pushActivity: [
{ {
...@@ -508,7 +737,29 @@ export default { ...@@ -508,7 +737,29 @@ export default {
}, },
], ],
//推荐 //推荐
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值 //v值
extraOrderV: { extraOrderV: {
orderEntry: [ orderEntry: [
...@@ -571,12 +822,38 @@ export default { ...@@ -571,12 +822,38 @@ export default {
}, },
], ],
}, },
//分享
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: { queryParams: {
dateRangeCreateTime: [], //活动有效期 dateRangeCreateTime: [], //活动有效期
type: "", //指标类型 type: "", //指标类型
titleZh: "", titleZh: "",
titleEn: "", titleEn: "",
coverImageZh: "",
coverImageEn: "",
maxScoreTotal: "", maxScoreTotal: "",
endTime: "", endTime: "",
startTime: "", //活动开始时间 startTime: "", //活动开始时间
...@@ -587,26 +864,47 @@ export default { ...@@ -587,26 +864,47 @@ export default {
descEn: "", descEn: "",
getScoreOnce: "", //除v值之外的积分规则 getScoreOnce: "", //除v值之外的积分规则
showPlatform: "1,2,3", //展示平台 showPlatform: "1,2,3", //展示平台
extraRecommend:{ //推荐 extraRecommend: {
shareContentEn:"", //推荐
shareContentZh:"", shareContentEn: "",
shareStatus:"" shareContentZh: "",
}, shareStatus: "0", //是否分享(0是,1否)默认是
},
extraRegister: { extraRegister: {
// 注册扩展字段 // 注册扩展字段
registerPlatform: "", registerPlatform: null,
}, },
extraOrderV: { extraOrderV: {
//订单V值扩展字段 //订单V值扩展字段
firstOrder: "1", firstOrder: "1",
orderEntry: null,
transportType: "", //运输方式 transportType: "", //运输方式
receiveAddrList: [], receiveAddrList: [],
orderVRule: [{ low: "", high: "", score: "" }], orderVRule: [{ low: "", high: "", score: "" }],
}, },
extraShare: {
// 分享扩展字段
activityDescEn: null,
activityDescZh: null,
activityUrl: "",
shareStatus: "0",
},
}, },
}; };
}, },
computed: { 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() { isChinese() {
return this.$i18n.locale === "zh_CN"; return this.$i18n.locale === "zh_CN";
}, },
...@@ -643,9 +941,94 @@ export default { ...@@ -643,9 +941,94 @@ export default {
created() { created() {
this.handleGetChannelList(); this.handleGetChannelList();
this.handleGetRegionTreeList(); this.handleGetRegionTreeList();
this.getList();
if (this.$route.query.pageStatus == "edit") {
this.handleIntegralRuleDetails();
}
if (this.$route.query.pageStatus == "view") {
this.showViewTime = true;
this.handleIntegralRuleDetails();
}
}, },
activated() {}, activated() {},
methods: { methods: {
//编辑更新积分规则
handleUpdatedIntegralRule() {
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();
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.toString();
}
if (isNumber(res.data.extraRecommend?.shareStatus)) {
params.extraRecommend.shareStatus.toString();
}
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() { handleResetIntegralRule() {
this.$modal this.$modal
...@@ -661,37 +1044,52 @@ export default { ...@@ -661,37 +1044,52 @@ export default {
this.$modal this.$modal
.confirm(this.$t("是否确认返回"), this.$t("提示")) .confirm(this.$t("是否确认返回"), this.$t("提示"))
.then(() => { .then(() => {
this.$router.go(-1); // this.$router.go(-1);
this.$store.dispatch("tagsView/delCurrentView");
this.$modal.msgSuccess(this.$t("成功")); this.$modal.msgSuccess(this.$t("成功"));
}) })
.catch(() => {}); .catch(() => {});
}, },
//保存 //保存
handleSaveIntegralRule() { handleSaveIntegralRule() {
let params = deepClone(this.queryParams); this.$refs["queryForm"].validate((valid) => {
params.showPlatform = this.queryParams.showPlatform?.join(); if (valid) {
params.extraOrderV.orderEntry = let params = deepClone(this.queryParams);
this.queryParams.extraOrderV.orderEntry?.join(); params.showPlatform = this.queryParams.showPlatform?.join();
params.extraRegister.registerPlatform = params.extraOrderV.orderEntry =
this.queryParams.extraRegister.registerPlatform?.join(); this.queryParams.extraOrderV?.orderEntry?.join();
params.status = this.queryParams.status || "2"; params.extraRegister.registerPlatform =
createIntegralRule(params).then((res) => { this.queryParams.extraRegister.registerPlatform?.join();
this.$message.success(this.$t("成功")); params.status = this.queryParams.status || "2";
this.$router.go(-1); createIntegralRule(params).then((res) => {
this.$message.success(this.$t("成功"));
this.$router.go(-1);
});
} else {
console.log("error submit!!");
return false;
}
}); });
}, },
//保存并启用 //保存并启用
handleEnableIntegralRule() { handleEnableIntegralRule() {
let params = deepClone(this.queryParams); this.$refs["queryForm"].validate((valid) => {
params.showPlatform = this.queryParams.showPlatform?.join(); if (valid) {
params.extraOrderV.orderEntry = let params = deepClone(this.queryParams);
this.queryParams.extraOrderV.orderEntry?.join(); params.showPlatform = this.queryParams.showPlatform?.join();
params.extraRegister.registerPlatform = params.extraOrderV.orderEntry =
this.queryParams.extraRegister.registerPlatform?.join(); this.queryParams.extraOrderV.orderEntry?.join();
params.status = this.queryParams.status || "1"; params.extraRegister.registerPlatform =
createIntegralRule(params).then((res) => { this.queryParams.extraRegister.registerPlatform?.join();
this.$message.success(this.$t("成功")); params.status = this.queryParams.status || "1";
this.$router.go(-1); createIntegralRule(params).then((res) => {
this.$message.success(this.$t("成功"));
this.$router.go(-1);
});
} else {
console.log("error submit!!");
return false;
}
}); });
}, },
handleOrderVRule(item, index) { handleOrderVRule(item, index) {
...@@ -740,4 +1138,8 @@ export default { ...@@ -740,4 +1138,8 @@ export default {
color: red; color: red;
padding-left: 120px; padding-left: 120px;
} }
.readOnlyEditor {
background-color: #f5f7fa;
cursor: not-allowed;
}
</style> </style>
...@@ -273,7 +273,6 @@ ...@@ -273,7 +273,6 @@
<el-form-item :label="$t('核销人')"> <el-form-item :label="$t('核销人')">
<el-input v-model="item.verifyUser"></el-input> <el-input v-model="item.verifyUser"></el-input>
</el-form-item> </el-form-item>
--{{ item.verifyTime }}--
<el-form-item :label="$t('核销时间')"> <el-form-item :label="$t('核销时间')">
<el-date-picker <el-date-picker
type="date" type="date"
......
...@@ -17,10 +17,10 @@ ...@@ -17,10 +17,10 @@
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('积分规则')"> <el-form-item :label="$t('积分来源')">
<dict-selector <dict-selector
clearable clearable
:type="DICT_TYPE.SCORE_RULE_TYPE" :type="DICT_TYPE.MEMBER_SCORE_SOURCE"
v-model="queryParams.sourceType" v-model="queryParams.sourceType"
@change="handleQuery" @change="handleQuery"
> >
...@@ -98,11 +98,17 @@ ...@@ -98,11 +98,17 @@
align="center" align="center"
prop="id" prop="id"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column :label="$t('会员名称')" align="center">
:label="$t('会员名称')" <template v-slot="{ row }">
align="center" <el-button
:prop="isChinese ? 'memberNameZh' : 'memberNameEn'" type="text"
></el-table-column> @click="
$router.push('/member/member/member-details/' + row.memberId)
"
>{{ isChinese ? row.memberNameZh : row.memberNameEn }}</el-button
>
</template>
</el-table-column>
<el-table-column <el-table-column
width="140" width="140"
...@@ -162,7 +168,69 @@ ...@@ -162,7 +168,69 @@
> >
</el-table-column> </el-table-column>
<el-table-column :label="$t('详细信息')" align="center"> <el-table-column :label="$t('详细信息')" align="center">
<template v-slot="{ row }"> {{}} </template> <template v-slot="{ row }">
<!-- 人工操作-->
<span v-if="row.sourceType == '1'">{{
row.extParamJson.comment || "-"
}}</span>
<!-- 兑换礼品2 兑换礼品撤销4 跳转兑换记录详情-->
<el-button
v-if="row.sourceType == '2' || row.sourceType == '4'"
type="text"
@click="
$router.push({
path: '/memberManagement/exchangeRecordOperation',
query: {
pageStatus: 'view',
exchangeRewardID: row.extParamJson.redeemId,
},
})
"
>{{ `${$t("兑换记录ID")}:${row.extParamJson.redeemId}` }}</el-button
>
<!-- 系统过期 sourceType = 3 不展示 -->
<span v-if="row.sourceType == '3'"> -</span>
<!-- 订单V: sourceType = 5 , extParamJson中取 orderId 跳转订单详情 -->
<el-button
v-if="row.sourceType == '5'"
type="text"
@click="
$router.push({
path: '/order/detail',
query: {
orderId: row.extParamJson.orderId,
},
})
"
>{{ `${$t("订单ID")}:${row.extParamJson.orderId}` }}</el-button
>
<!-- 注册sourceType = 6 , extParamJson中取 userIduserNameZh,userNameZh,phone 展示会员名+手机号(手机号脱敏处理)
推荐 : sourceType = 7 , extParamJson中取 userIduserNameZh,userNameZh,phone 展示会员名+手机号(手机号脱敏处理) -->
<span v-if="row.sourceType == '6' || row.sourceType == '7'">
{{
`${
isChinese
? row.extParamJson.userNameZh
: row.extParamJson.userNameEn
}(${row.extParamJson.phone})`
}}</span
>
<!-- sourceType = 8 , extParamJson中取 scoreRuleId 跳转活动详情 -->
<el-button
v-if="row.sourceType == '8'"
type="text"
@click="
$router.push({
path: '/memberManagement/addIntegrationRuleOperation',
query: {
id: row.extParamJson.scoreRuleId,
pageStatus: 'view',
},
})
"
>{{ `${$t("活动ID")}:${row.extParamJson.scoreRuleId}` }}</el-button
>
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- //分页列表 --> <!-- //分页列表 -->
...@@ -215,7 +283,7 @@ export default { ...@@ -215,7 +283,7 @@ export default {
methods: { methods: {
//积分来源 //积分来源
handleSourceType(id) { handleSourceType(id) {
return this.getDictDatas(DICT_TYPE.SCORE_RULE_TYPE).filter( return this.getDictDatas(DICT_TYPE.MEMBER_SCORE_SOURCE).filter(
(item) => item.value == id (item) => item.value == id
)[0]; )[0];
}, },
......
...@@ -198,9 +198,12 @@ ...@@ -198,9 +198,12 @@
</el-table-column> </el-table-column>
<el-table-column width="220px" :label="$t('操作')" align="center"> <el-table-column width="220px" :label="$t('操作')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="handleUpdate(scope.row)">{{ <el-button
$t("查看") size="mini"
}}</el-button> type="text"
@click="handleViewDetails(scope.row)"
>{{ $t("查看") }}</el-button
>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
...@@ -232,7 +235,7 @@ ...@@ -232,7 +235,7 @@
size="mini" size="mini"
type="text" type="text"
:disabled="scope.row.status == '1'" :disabled="scope.row.status == '1'"
@click="handleDelete(scope.row)" @click="handleUpdate(scope.row)"
>{{ $t("编辑") }}</el-button >{{ $t("编辑") }}</el-button
> >
<el-button <el-button
...@@ -329,6 +332,20 @@ export default { ...@@ -329,6 +332,20 @@ export default {
this.handleQuery(); this.handleQuery();
}, },
methods: { methods: {
//编辑操作按钮
handleUpdate(row) {
this.$router.push({
path: "/memberManagement/addIntegrationRuleOperation",
query: { id: row.id, pageStatus: "edit" },
});
},
//查看按钮操作
handleViewDetails(row) {
this.$router.push({
path: "/memberManagement/addIntegrationRuleOperation",
query: { id: row.id, pageStatus: "view" },
});
},
//延期按钮操作 //延期按钮操作
handleDelayButton(row) { handleDelayButton(row) {
this.postponeIntegralID = row.id; this.postponeIntegralID = row.id;
...@@ -400,6 +417,7 @@ export default { ...@@ -400,6 +417,7 @@ export default {
handleNewScoreRule() { handleNewScoreRule() {
this.$router.push({ this.$router.push({
path: "/memberManagement/addIntegrationRuleOperation", path: "/memberManagement/addIntegrationRuleOperation",
query: { pageStatus: "new" },
}); });
}, },
//积分来源 //积分来源
......
...@@ -285,7 +285,7 @@ export default { ...@@ -285,7 +285,7 @@ export default {
.then((_) => { .then((_) => {
let params = { ...this.formQuery }; let params = { ...this.formQuery };
operateMemberScore(params).then((res) => { operateMemberScore(params).then((res) => {
this.dialogVisible = true; this.dialogVisible = false;
this.formQuery = { this.formQuery = {
comment: "", comment: "",
memberIds: [], memberIds: [],
......
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
/>--> />-->
</div> </div>
</template> </template>
<script> <script>
import UserSelector from "@/components/UserSelector"; import UserSelector from "@/components/UserSelector";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
...@@ -389,4 +389,3 @@ export default { ...@@ -389,4 +389,3 @@ export default {
}, },
}; };
</script> </script>
\ No newline at end of file
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