Commit d32a5da0 by wangyusheng

会员分组删除流程优化;会员标签商品筛选添加提示文案

parent 11909e0a
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>GIC-会员标签</title><link href=./static/css/app.fee60df041579ca8214a46b3658256d2.css rel=stylesheet></head><body style="background-color: #f0f2f5;min-width: 1400px;"><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.6.6/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/elementUI/index.2.5.4.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.35.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.02.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.55.js></script><script src=//web-1251519181.file.myqcloud.com/components/aside-menu.2.0.11.js></script><script src=//web-1251519181.file.myqcloud.com/components/area-ab.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.11.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.1.95.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=./static/js/manifest.265007f75363e9d51a46.js></script><script type=text/javascript src=./static/js/vendor.4aa38b9b9bf3652c83db.js></script><script type=text/javascript src=./static/js/app.83ee2abea834ad46d78e.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>GIC-会员标签</title><link href=./static/css/app.875c1cbe72ed5a3e800fa22e8501019d.css rel=stylesheet></head><body style="background-color: #f0f2f5;min-width: 1400px;"><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.6.6/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/elementUI/index.2.5.4.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.35.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.02.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.55.js></script><script src=//web-1251519181.file.myqcloud.com/components/aside-menu.2.0.11.js></script><script src=//web-1251519181.file.myqcloud.com/components/area-ab.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.11.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.1.95.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=./static/js/manifest.2d0ad948c535e0b6fb15.js></script><script type=text/javascript src=./static/js/vendor.4aa38b9b9bf3652c83db.js></script><script type=text/javascript src=./static/js/app.83ee2abea834ad46d78e.js></script></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
!function(e){var a=window.webpackJsonp;window.webpackJsonp=function(c,r,t){for(var o,b,d,i=0,u=[];i<c.length;i++)b=c[i],f[b]&&u.push(f[b][0]),f[b]=0;for(o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);for(a&&a(c,r,t);u.length;)u.shift()();if(t)for(i=0;i<t.length;i++)d=n(n.s=t[i]);return d};var c={},f={34:0};function n(a){if(c[a])return c[a].exports;var f=c[a]={i:a,l:!1,exports:{}};return e[a].call(f.exports,f,f.exports,n),f.l=!0,f.exports}n.e=function(e){var a=f[e];if(0===a)return new Promise(function(e){e()});if(a)return a[2];var c=new Promise(function(c,n){a=f[e]=[c,n]});a[2]=c;var r=document.getElementsByTagName("head")[0],t=document.createElement("script");t.type="text/javascript",t.charset="utf-8",t.async=!0,t.timeout=12e4,n.nc&&t.setAttribute("nonce",n.nc),t.src=n.p+"static/js/"+e+"."+{0:"4f43bb4c1623eca5f7f7",1:"ff9a48317f8bf815760f",2:"4df627ba6a84ab219e1f",3:"b1e7df48534613c9eef7",4:"d17b0665c4456542e03d",5:"2ce2ef3e02e625f3c87e",6:"623b48c4ef01900118d4",7:"c7838120b1a8977d10d8",8:"03aacefe02ac1da31eec",9:"32877e1ab63375369274",10:"f554e888c1709956bad4",11:"c827777ffded659cfe9f",12:"91cd77fb402bcc20c476",13:"5e9fa2db703b47354a58",14:"fdf29b8ca338cce9942a",15:"999f87f7cd93f3f0f882",16:"65adc5156891f1b57717",17:"d0b5334e5282b4a8d1ac",18:"3ee77aca5a8e38a7ca47",19:"34e7b6016ac35b3b3bfb",20:"c7d5fb4d00858abc4a68",21:"e5e6b6eaea60a744902b",22:"c5831a0e6963d3099114",23:"c24a9f56d0040598512c",24:"4ad2674933e6886df395",25:"7f79b0404f25fcd67f4f",26:"80e295efa02de6e5fb81",27:"ddb488688ceec6baa35c",28:"16762be5e95423ba5423",29:"1727f9e83db20ba57b45",30:"6a5ee2a1c27c5a16c485",31:"4581161a7b4779f896f3"}[e]+".js";var o=setTimeout(b,12e4);function b(){t.onerror=t.onload=null,clearTimeout(o);var a=f[e];0!==a&&(a&&a[1](new Error("Loading chunk "+e+" failed.")),f[e]=void 0)}return t.onerror=t.onload=b,r.appendChild(t),c},n.m=e,n.c=c,n.d=function(e,a,c){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:c})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,"a",a),a},n.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},n.p="./",n.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var a=window.webpackJsonp;window.webpackJsonp=function(c,f,t){for(var o,d,b,i=0,u=[];i<c.length;i++)d=c[i],n[d]&&u.push(n[d][0]),n[d]=0;for(o in f)Object.prototype.hasOwnProperty.call(f,o)&&(e[o]=f[o]);for(a&&a(c,f,t);u.length;)u.shift()();if(t)for(i=0;i<t.length;i++)b=r(r.s=t[i]);return b};var c={},n={34:0};function r(a){if(c[a])return c[a].exports;var n=c[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.e=function(e){var a=n[e];if(0===a)return new Promise(function(e){e()});if(a)return a[2];var c=new Promise(function(c,r){a=n[e]=[c,r]});a[2]=c;var f=document.getElementsByTagName("head")[0],t=document.createElement("script");t.type="text/javascript",t.charset="utf-8",t.async=!0,t.timeout=12e4,r.nc&&t.setAttribute("nonce",r.nc),t.src=r.p+"static/js/"+e+"."+{0:"8826a8cbe9e0c81d7317",1:"ff9a48317f8bf815760f",2:"4df627ba6a84ab219e1f",3:"949c9492cbf3e408a15c",4:"d17b0665c4456542e03d",5:"f5904c5703f17e307ebd",6:"623b48c4ef01900118d4",7:"a5407efd1961de0aca68",8:"03aacefe02ac1da31eec",9:"32877e1ab63375369274",10:"f554e888c1709956bad4",11:"c827777ffded659cfe9f",12:"91cd77fb402bcc20c476",13:"5e9fa2db703b47354a58",14:"fdf29b8ca338cce9942a",15:"999f87f7cd93f3f0f882",16:"65adc5156891f1b57717",17:"d0b5334e5282b4a8d1ac",18:"3ee77aca5a8e38a7ca47",19:"34e7b6016ac35b3b3bfb",20:"c7d5fb4d00858abc4a68",21:"e5e6b6eaea60a744902b",22:"c5831a0e6963d3099114",23:"c24a9f56d0040598512c",24:"4ad2674933e6886df395",25:"7f79b0404f25fcd67f4f",26:"80e295efa02de6e5fb81",27:"ddb488688ceec6baa35c",28:"16762be5e95423ba5423",29:"1727f9e83db20ba57b45",30:"6a5ee2a1c27c5a16c485",31:"4581161a7b4779f896f3"}[e]+".js";var o=setTimeout(d,12e4);function d(){t.onerror=t.onload=null,clearTimeout(o);var a=n[e];0!==a&&(a&&a[1](new Error("Loading chunk "+e+" failed.")),n[e]=void 0)}return t.onerror=t.onload=d,f.appendChild(t),c},r.m=e,r.c=c,r.d=function(e,a,c){r.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:c})},r.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(a,"a",a),a},r.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},r.p="./",r.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
......@@ -87,6 +87,7 @@ export default {
this.$message.success({
message: '删除成功'
});
this.$emit('after-del', res.data.result)
}
});
} else if (batchNum == 2) {
......
......@@ -681,6 +681,7 @@
<!-- 嵌入商品选择器 -->
<div v-if="parent.templateCode == 'com022'">
<p style="margin-bottom:15px">下方商品筛选器的“剔除”逻辑是剔除用户消费的商品,而非剔除会员,若想“剔除”人,请使用外面标签与标签之间的“剔除”逻辑。</p>
<vue-gic-goods-selector ref="selector" @changelist="changelist"></vue-gic-goods-selector>
<!-- <vue-gic-selector ref="selector" @changelist="changelist"></vue-gic-selector> -->
</div>
......
......@@ -68,7 +68,7 @@
<div class="label-title">是否固化</div>
<el-select v-model="ruleForm.fixedType" style="margin-bottom:15px">
<el-option label="否" :value="0" />
<el-option label="是" :value="1" />
<el-option label="是" :value="2" />
</el-select>
<br v-if="ruleForm.fixedType">
<el-date-picker v-if="ruleForm.fixedType" :clearable="false" :picker-options="fixedTimeOptions" v-model="ruleForm.fixedTime" value-format="yyyy-MM-dd" placeholder="选择期初固化日期" style="margin-bottom:15px"></el-date-picker>
......@@ -132,15 +132,22 @@
<div class="tips-count" style="color: red;margin-bottom: 15px;" v-show="ruleForm.isActive == 0 && realCount.totalCount <= realCount.currCount">
您的非实时会员分组数量已达上限{{realCount.totalCount}},建议您删除或失效部分非实时会员分组!
</div>
<el-tooltip class="item" effect="dark" :disabled="ruleForm.isActive == 0 && realCount.totalCount <= realCount.currCount" content="您商户的非实时分组数量已达到上限" placement="top-start" v-if="isAllowAdd && ruleForm.isActive == 0">
<el-button type="primary" style="color: #c0c4cc;cursor: not-allowed;background-image: none;background-color: #F5F7FA;border-color: #DCDFE6;">{{$route.query.memberTagGroupId ? '保存': '创建会员分组'}}</el-button>
</el-tooltip>
<el-button
v-else
type="primary"
:disabled="ruleForm.isActive == 0 && realCount.totalCount <= realCount.currCount"
@click.stop="confirmSavePost"
>{{$route.query.memberTagGroupId ? '保存': '创建会员分组'}}</el-button>
<template v-if="hasFixed">
<el-tooltip class="item" effect="dark" placement="top-start" content="该分组包含固化人群,不可编辑">
<el-button type="primary" style="color: #c0c4cc;cursor: not-allowed;background-image: none;background-color: #F5F7FA;border-color: #DCDFE6;">{{$route.query.memberTagGroupId ? '保存': '创建会员分组'}}</el-button>
</el-tooltip>
</template>
<template v-else>
<el-tooltip class="item" effect="dark" :disabled="ruleForm.isActive == 0 && realCount.totalCount <= realCount.currCount" content="您商户的非实时分组数量已达到上限" placement="top-start" v-if="isAllowAdd && ruleForm.isActive == 0">
<el-button type="primary" style="color: #c0c4cc;cursor: not-allowed;background-image: none;background-color: #F5F7FA;border-color: #DCDFE6;">{{$route.query.memberTagGroupId ? '保存': '创建会员分组'}}</el-button>
</el-tooltip>
<el-button
v-else
type="primary"
:disabled="ruleForm.isActive == 0 && realCount.totalCount <= realCount.currCount"
@click.stop="confirmSavePost"
>{{$route.query.memberTagGroupId ? '保存': '创建会员分组'}}</el-button>
</template>
<el-button>
<router-link to="/memberGroupList">返回</router-link>
</el-button>
......@@ -385,6 +392,7 @@ export default {
total: 0,
isAllowAdd: false,
hasFixed: false, // 是否包含固化人群
};
},
computed: {
......@@ -663,9 +671,10 @@ export default {
// this.ruleForm.updateDay = !!tagGroupDto.updateDay ? Number(tagGroupDto.updateDay) : '';
this.ruleForm.updateType = 1;
this.ruleForm.updateDay = '';
this.ruleForm.fixedType = tagGroupDto.fixedType || 0
this.ruleForm.fixedType = +tagGroupDto.fixedType || 0
this.ruleForm.fixedTime = tagGroupDto.fixedTime || this.ruleForm.fixedTime
this.ruleForm.fixedEndTime = tagGroupDto.fixedEndTime || this.ruleForm.fixedEndTime
this.hasFixed = tagGroupDto.fixedType == 2;
}
let tagValueDtoList = Array.isArray(resData.result.tagValueDtoList) ? resData.result.tagValueDtoList : [];
......
......@@ -64,14 +64,14 @@
{{ scope.row.effectiveStatus == 1 ? '有效' : '失效' }}
</template>
</el-table-column>
<el-table-column label="操作" width="240px">
<!-- <el-table-column label="操作" width="240px">
<template slot-scope="scope">
<!-- <router-link
<router-link
:to="`/memberGroupDetail?memberTagGroupId=${scope.row.memberTagGroupId}`"
class="edit-btn el-button--text p-r-12"
>
详情
</router-link> -->
</router-link>
<router-link
:to="`/memberGroupEdit?memberTagGroupId=${scope.row.memberTagGroupId}`"
class="edit-btn el-button--text p-r-12"
......@@ -79,7 +79,7 @@
编辑
</router-link>
</template>
</el-table-column>
</el-table-column> -->
</el-table>
</div>
<div class="block common-wrap__page text-right" v-if="groupTableData.length != 0">
......@@ -344,7 +344,24 @@
</template>
</div>
<vue-gic-footer></vue-gic-footer>
<batch-list :batchVisiable.sync="batchVisiable" @refresh-list="refreshList" :operateNumber="operateNumber" :multipleSelection="multipleSelection"></batch-list>
<batch-list :batchVisiable.sync="batchVisiable" @refresh-list="refreshList" :operateNumber="operateNumber" :multipleSelection="multipleSelection" @after-del="handleDelGroupMsg"></batch-list>
<el-dialog title="提示" :visible.sync="dialogDelTips.show" width="480px">
<p>{{ dialogDelTips.isSingle ? '当前' : '存在' }}分组正在被以下模块使用,请先删除对应的内容后再来删除分组</p>
<div v-if="dialogDelTips.isSingle" class="error-tips">
<p v-for="i in dialogDelTips.list" :key="i.link">
<a target="_blank" class="error-tip-link" :href="i.link">{{ i.name }}</a>
</p>
</div>
<div v-else class="error-tips">
<div class="error-tip-row" v-for="(row, k) in dialogDelTips.list" :key="k">
<span class="label">{{ row.groupName }}:</span>
<p v-for="i in row.list" :key="i.link">
<a target="_blank" class="error-tip-link" :href="i.link">{{ i.name }}</a>
</p>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
......@@ -423,7 +440,12 @@ export default {
groupSetShow: false,
loading: false,
statusSelect: '',
batchSelect: ''
batchSelect: '',
dialogDelTips: {
show: false,
isSingle: true,
list: [],
},
};
},
......@@ -517,10 +539,26 @@ export default {
message: '删除成功'
});
this.getGroupList();
this.handleDelGroupMsg(res.data.result);
}
});
})
},
handleDelGroupMsg(list) {
if(!list || !list.length) return
let map = list.reduce((res, el) => {
res[el.groupName] || (res[el.groupName] = { groupName: el.groupName, list: [] })
res[el.groupName].list.push({
link: el.businessLink,
name: `{${el.businessModuleName}-${el.businessName}}`
})
return res
}, {})
list = Object.values(map)
let isSingle = list.length == 1
isSingle && (list = list[0].list)
this.$set(this, 'dialogDelTips', { show: true, isSingle, list })
},
getMemberGroupList() {
memberGroupList({
requestProject: 'gic-member-tag-web'
......@@ -1068,4 +1106,28 @@ export default {
}
}
}
.error-tips{
margin: 20px 0;
> p{
margin: 0 0 15px 0;
}
.error-tip-link{
color: #1890ff;
}
.error-tip-row{
margin: 0 0 15px 0;
padding: 0 0 0 150px;
position: relative;
.label{
position: absolute;
top: 0;
left: 0;
text-align: right;
width: 150px;
}
p{
margin: 0 0 10px 0;
}
}
}
</style>
......@@ -106,7 +106,7 @@
<label for="">是否固化</label>
<el-select v-model="tagConfig.fixedType" style="margin-bottom:15px">
<el-option label="否" :value="0" />
<el-option label="是" :value="1" />
<el-option label="是" :value="2" />
</el-select>
<br v-if="tagConfig.fixedType">
<el-date-picker v-if="tagConfig.fixedType" :clearable="false" :picker-options="fixedTimeOptions" v-model="tagConfig.fixedTime" value-format="yyyy-MM-dd" placeholder="选择期初固化日期" style="margin-bottom:15px"></el-date-picker>
......
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