Commit 960a90c9 authored by chenwei's avatar chenwei

Merge branch 'feature/099_customer_filter' into 'dev'

Feature/099 customer filter

See merge request !3
parents 7ef7fe75 a81376ea
......@@ -218,3 +218,21 @@ export function integralRuleDelete(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 {
methods: {
format(val) {
if (val === null || val == undefined || val == "") return val;
let formatter =
typeof this.formatter == "function"
? this.formatter
: FORMATTERS[this.formatter];
if (!formatter) {
console.warn("格式器无效", this.formatter);
return val;
}
return formatter(val);
},
changeValue(val) {
......
......@@ -4638,5 +4638,27 @@
"请输入会员昵称": "Please enter a member nickname",
"请输入礼品ID": "Please enter the gift ID",
"新增兑换": "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 = {
SCORE_RULE_TYPE: "score_rule_type", //积分规则指标类型
YES_OR_NO: "yes_or_no",
CLIENT_PLATFORM: "client_platform",
MEMBER_SCORE_SOURCE: "member_score_source", //会员积分来源
};
/**
......
......@@ -49,30 +49,50 @@
</el-form-item>
</el-col>
</el-row>
<el-form-item :label="$t('兑换积分')" prop="pointsRequire">
<el-input
v-model.trim="queryParams.pointsRequire"
:placeholder="$t('请输入')"
:disabled="isDisable"
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item :label="$t('兑换网点')" prop="nodeId">
<el-select
v-model="queryParams.nodeId"
:placeholder="$t('请选择兑换网点')"
:disabled="isDisable"
clearable
size="small"
>
<el-option
v-for="nodeItem in nodeList"
:key="nodeItem.id"
:label="isChinese ? nodeItem.titleZh : nodeItem.titleEn"
:value="nodeItem.id"
/>
</el-select>
</el-form-item>
<el-row :gutter="10" v-for="(item, index) in queryParams.nodeIds">
<el-col :span="6">
<el-form-item
:label="$t('兑换网点')"
:prop="'nodeIds.' + index + '.nodeId'"
:rules="rules.nodeIds.nodeId"
>
<el-select
v-model="item.nodeId"
:placeholder="$t('请选择兑换网点')"
:disabled="isDisable"
clearable
size="small"
>
<el-option
v-for="nodeItem in nodeList"
: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="item.points"
:placeholder="$t('请输入')"
:disabled="isDisable"
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/> </el-form-item
></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 :label="$t('剩余数量')" prop="quantityRemain">
<el-input
:disabled="isDisable && disabelEnableStatus"
......@@ -271,6 +291,7 @@ export default {
endTime: null,
imgEn: null,
imgZh: null,
nodeIds: [{ nodeId: "", points: "" }],
nodeId: null,
pickMethod: null,
pointsRequire: null,
......@@ -312,16 +333,23 @@ export default {
trigger: "blur",
},
],
pointsRequire: [
{
required: true,
message: this.$t("请输入兑换积分"),
trigger: "blur",
},
],
nodeId: [
{ required: true, message: this.$t("请选择网点"), trigger: "change" },
],
nodeIds: {
nodeId: [
{
required: true,
message: this.$t("请选择网点"),
trigger: "change",
},
],
points: [
{
required: true,
message: this.$t("请输入兑换积分"),
trigger: "blur",
},
],
},
quantityRemain: [
{
required: true,
......@@ -370,6 +398,13 @@ export default {
};
},
methods: {
handleOrderVRule(item, index) {
if (index == "0") {
this.queryParams.nodeIds.push({ nodeId: "", points: "" });
} else {
this.queryParams.nodeIds.splice(index, 1);
}
},
submit() {
let params = { ...this.queryParams };
params.startTime = this.queryParams.dateRangeCreateTime[0];
......@@ -400,6 +435,7 @@ export default {
this.queryParams = {
allowCount: null,
endTime: null,
nodeIds: [{ nodeId: "", points: "" }],
imgEn: null,
imgZh: null,
nodeId: null,
......
......@@ -148,7 +148,6 @@
></el-table-column>
<el-table-column :label="$t('礼品名称')" align="center">
<template slot-scope="scope">
{{ row }}
<el-button type="text" @click="handleView(scope.row)">{{
isChinese ? scope.row.titleZh : scope.row.titleEn
}}</el-button>
......@@ -224,11 +223,15 @@
</el-tooltip>
</template>
</el-table-column>
<el-table-column
:label="$t('已兑换次数')"
align="center"
prop="exchangeCount"
></el-table-column>
<el-table-column :label="$t('已兑换次数')" align="center">
<template slot-scope="scope">
<el-button
type="text"
@click="$router.push('/memberManagement/exchangeRecord')"
>{{ scope.row.exchangeCount }}</el-button
>
</template>
</el-table-column>
<el-table-column
:label="$t('剩余次数')"
align="center"
......
......@@ -273,7 +273,6 @@
<el-form-item :label="$t('核销人')">
<el-input v-model="item.verifyUser"></el-input>
</el-form-item>
--{{ item.verifyTime }}--
<el-form-item :label="$t('核销时间')">
<el-date-picker
type="date"
......
......@@ -17,10 +17,10 @@
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item :label="$t('积分规则')">
<el-form-item :label="$t('积分来源')">
<dict-selector
clearable
:type="DICT_TYPE.SCORE_RULE_TYPE"
:type="DICT_TYPE.MEMBER_SCORE_SOURCE"
v-model="queryParams.sourceType"
@change="handleQuery"
>
......@@ -98,11 +98,17 @@
align="center"
prop="id"
></el-table-column>
<el-table-column
:label="$t('会员名称')"
align="center"
:prop="isChinese ? 'memberNameZh' : 'memberNameEn'"
></el-table-column>
<el-table-column :label="$t('会员名称')" align="center">
<template v-slot="{ row }">
<el-button
type="text"
@click="
$router.push('/member/member/member-details/' + row.memberId)
"
>{{ isChinese ? row.memberNameZh : row.memberNameEn }}</el-button
>
</template>
</el-table-column>
<el-table-column
width="140"
......@@ -162,7 +168,69 @@
>
</el-table-column>
<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>
<!-- //分页列表 -->
......@@ -215,7 +283,7 @@ export default {
methods: {
//积分来源
handleSourceType(id) {
return this.getDictDatas(DICT_TYPE.SCORE_RULE_TYPE).filter(
return this.getDictDatas(DICT_TYPE.MEMBER_SCORE_SOURCE).filter(
(item) => item.value == id
)[0];
},
......
......@@ -39,7 +39,7 @@
<el-form-item :label="$t('状态')">
<dict-selector
clearable
:type="DICT_TYPE.REWARD_REDEEM_STATUS"
:type="DICT_TYPE.GIFT_STATUS"
v-model="queryParams.status"
>
</dict-selector>
......@@ -198,9 +198,12 @@
</el-table-column>
<el-table-column width="220px" :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleUpdate(scope.row)">{{
$t("查看")
}}</el-button>
<el-button
size="mini"
type="text"
@click="handleViewDetails(scope.row)"
>{{ $t("查看") }}</el-button
>
<el-button
size="mini"
type="text"
......@@ -232,7 +235,7 @@
size="mini"
type="text"
:disabled="scope.row.status == '1'"
@click="handleDelete(scope.row)"
@click="handleUpdate(scope.row)"
>{{ $t("编辑") }}</el-button
>
<el-button
......@@ -329,6 +332,20 @@ export default {
this.handleQuery();
},
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) {
this.postponeIntegralID = row.id;
......@@ -400,6 +417,7 @@ export default {
handleNewScoreRule() {
this.$router.push({
path: "/memberManagement/addIntegrationRuleOperation",
query: { pageStatus: "new" },
});
},
//积分来源
......
......@@ -285,7 +285,7 @@ export default {
.then((_) => {
let params = { ...this.formQuery };
operateMemberScore(params).then((res) => {
this.dialogVisible = true;
this.dialogVisible = false;
this.formQuery = {
comment: "",
memberIds: [],
......
......@@ -92,7 +92,7 @@
/>-->
</div>
</template>
<script>
import UserSelector from "@/components/UserSelector";
import Treeselect from "@riophae/vue-treeselect";
......@@ -389,4 +389,3 @@ export default {
},
};
</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