Commit ca105703 by 无尘

feat: 增加会员分组设置

parent c2c34b08
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>好办管理平台</title><link href=./static/css/app.3691c37f4436239d588c2294341e277e.css rel=stylesheet></head><body style="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/components/img-preview.2.0.00.js></script><script>// Raven.config('https://3715a345910d4c768e7a1ec14619c2d5@sentry.io/1413672').install();</script><script type=text/javascript src=./static/js/manifest.6fcb315dc51b25efab4f.js></script><script type=text/javascript src=./static/js/vendor.fe563ee1a7b37e2ffba9.js></script><script type=text/javascript src=./static/js/app.2948e840ffb3b1f1a451.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>好办管理平台</title><link href=./static/css/app.868ac453a5b44347f60819e4f04d1ee4.css rel=stylesheet></head><body style="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/components/img-preview.2.0.00.js></script><script>// Raven.config('https://3715a345910d4c768e7a1ec14619c2d5@sentry.io/1413672').install();</script><script type=text/javascript src=./static/js/manifest.195c46cf22c6f6b2998c.js></script><script type=text/javascript src=./static/js/vendor.fe563ee1a7b37e2ffba9.js></script><script type=text/javascript src=./static/js/app.33ed74d941b082037b38.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.
!function(e){var a=window.webpackJsonp;window.webpackJsonp=function(c,b,n){for(var r,t,o,i=0,u=[];i<c.length;i++)t=c[i],f[t]&&u.push(f[t][0]),f[t]=0;for(r in b)Object.prototype.hasOwnProperty.call(b,r)&&(e[r]=b[r]);for(a&&a(c,b,n);u.length;)u.shift()();if(n)for(i=0;i<n.length;i++)o=d(d.s=n[i]);return o};var c={},f={82:0};function d(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,d),f.l=!0,f.exports}d.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,d){a=f[e]=[c,d]});a[2]=c;var b=document.getElementsByTagName("head")[0],n=document.createElement("script");n.type="text/javascript",n.charset="utf-8",n.async=!0,n.timeout=12e4,d.nc&&n.setAttribute("nonce",d.nc),n.src=d.p+"static/js/"+e+"."+{0:"092a70307753050a7516",1:"0ebe3ead93207dc78a78",2:"8a2f7c1e8ea85d4eee2e",3:"a43577b9e52a5719a124",4:"82103d2b04b685deeb5c",5:"d9203f5f3cde9a86b69d",6:"cac66cefec658c30f74a",7:"8f462a353a2ce9c0c116",8:"e5372980f04518fa84ec",9:"860dbe8cf83334f9e3c0",10:"bc6fc513e88c1943d351",11:"e34a64dea1b7a059dcfd",12:"bdcf26a1bcccf7e0239b",13:"6c87f5cefdf77374932d",14:"2db4e13b049c8acc9488",15:"b9ac3428fbf05e58374e",16:"c4ebe5ae46670e5c0754",17:"d72d88bab51f8f18f5db",18:"ca2eb072a4ce38f9e487",19:"7971a9a5d92fefa82083",20:"75e0997b94e5d6294ec8",21:"1f2f9b53312cba8a436c",22:"33d9c4e585c1fe7257cb",23:"9efbbc6dd315a676ce09",24:"4637a4566383d6e864cf",25:"4f9db49437ea94436d03",26:"b549610764e2236c48ce",27:"acda88d3c2aa77c9f51c",28:"0635cfc88ef2b2920961",29:"44a582fb4b10fa9ec2e4",30:"c6439b279653a45ce256",31:"8baa6bca929d1c9a38f6",32:"ec0bbd85e6d55909453d",33:"1a9ac0c12df7a396447f",34:"f9d53c31059aaff9b360",35:"c75699cc6fe47597f200",36:"739a8647e970d20d77b7",37:"8016d3ac07df8acaf73d",38:"401ecfbced781ca109ff",39:"06cea2d21bef8fbe9891",40:"f4fd9d68a9e906649040",41:"9fcb9feb2cab7a8a2cbe",42:"47c4c30ceefa4af03de5",43:"2689bc2d619a26183b90",44:"deb9f07fde1e218414cf",45:"feeb9dd78b7b12f700d2",46:"a2f306cec3cdc3c685d3",47:"ad1d3e7f3e13e438bcbf",48:"ef7f29a451f2754469b0",49:"f6871122a1fa7e18f158",50:"07c4baa205f7e23b698d",51:"7fc0ff7b08a3b083ca59",52:"df5a79b4bcadd0cdc55d",53:"da30134b8aa4c56f0f7e",54:"e33162e0cb4a06558216",55:"2586e98e5ad576900fd5",56:"5eea40c26d0d1b243d13",57:"594fe3f9a553b253aa93",58:"4eca8a1ed0c691766a4e",59:"8c76e4fdc3e8670fb2a4",60:"c07ded9edbf754244fff",61:"74fdf5c07fea15af8610",62:"3edbfb7b8910942f64cf",63:"bb4a3303a21ec46167a0",64:"aabae4961cf30cf05770",65:"f8d77d8c96f3e79fe702",66:"3ba7e89277d851279c4d",67:"54211f408298416c6536",68:"510e6b0aa6ffadff566b",69:"518fa345263ef1bb9abc",70:"5d2e33dad1088489e653",71:"e51a1b885d499897baff",72:"bfd2694c02bae17c273e",73:"7751e4d66fee99c15a39",74:"646f1b9348d1bb8cfbf7",75:"6b82dfb7f160db815f54",76:"6c9ea7acb0f245a3225b",77:"33a3a159e61bf292071f",78:"fc56a26c0dc7625bba4a",81:"be325ddaae712f760e1a"}[e]+".js";var r=setTimeout(t,12e4);function t(){n.onerror=n.onload=null,clearTimeout(r);var a=f[e];0!==a&&(a&&a[1](new Error("Loading chunk "+e+" failed.")),f[e]=void 0)}return n.onerror=n.onload=t,b.appendChild(n),c},d.m=e,d.c=c,d.d=function(e,a,c){d.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:c})},d.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(a,"a",a),a},d.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},d.p="./",d.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var c=window.webpackJsonp;window.webpackJsonp=function(a,b,n){for(var r,t,o,i=0,u=[];i<a.length;i++)t=a[i],f[t]&&u.push(f[t][0]),f[t]=0;for(r in b)Object.prototype.hasOwnProperty.call(b,r)&&(e[r]=b[r]);for(c&&c(a,b,n);u.length;)u.shift()();if(n)for(i=0;i<n.length;i++)o=d(d.s=n[i]);return o};var a={},f={82:0};function d(c){if(a[c])return a[c].exports;var f=a[c]={i:c,l:!1,exports:{}};return e[c].call(f.exports,f,f.exports,d),f.l=!0,f.exports}d.e=function(e){var c=f[e];if(0===c)return new Promise(function(e){e()});if(c)return c[2];var a=new Promise(function(a,d){c=f[e]=[a,d]});c[2]=a;var b=document.getElementsByTagName("head")[0],n=document.createElement("script");n.type="text/javascript",n.charset="utf-8",n.async=!0,n.timeout=12e4,d.nc&&n.setAttribute("nonce",d.nc),n.src=d.p+"static/js/"+e+"."+{0:"0ee5284d96f0ebdec55b",1:"0ebe3ead93207dc78a78",2:"8a2f7c1e8ea85d4eee2e",3:"a43577b9e52a5719a124",4:"82103d2b04b685deeb5c",5:"d9203f5f3cde9a86b69d",6:"cac66cefec658c30f74a",7:"8f462a353a2ce9c0c116",8:"e5372980f04518fa84ec",9:"860dbe8cf83334f9e3c0",10:"bc6fc513e88c1943d351",11:"e34a64dea1b7a059dcfd",12:"bdcf26a1bcccf7e0239b",13:"6c87f5cefdf77374932d",14:"2db4e13b049c8acc9488",15:"b9ac3428fbf05e58374e",16:"c4ebe5ae46670e5c0754",17:"d72d88bab51f8f18f5db",18:"ca2eb072a4ce38f9e487",19:"7971a9a5d92fefa82083",20:"75e0997b94e5d6294ec8",21:"1f2f9b53312cba8a436c",22:"33d9c4e585c1fe7257cb",23:"9efbbc6dd315a676ce09",24:"4637a4566383d6e864cf",25:"4f9db49437ea94436d03",26:"b549610764e2236c48ce",27:"acda88d3c2aa77c9f51c",28:"0635cfc88ef2b2920961",29:"44a582fb4b10fa9ec2e4",30:"c6439b279653a45ce256",31:"8baa6bca929d1c9a38f6",32:"ec0bbd85e6d55909453d",33:"1a9ac0c12df7a396447f",34:"f9d53c31059aaff9b360",35:"c75699cc6fe47597f200",36:"739a8647e970d20d77b7",37:"8016d3ac07df8acaf73d",38:"401ecfbced781ca109ff",39:"06cea2d21bef8fbe9891",40:"f4fd9d68a9e906649040",41:"9fcb9feb2cab7a8a2cbe",42:"47c4c30ceefa4af03de5",43:"2689bc2d619a26183b90",44:"deb9f07fde1e218414cf",45:"feeb9dd78b7b12f700d2",46:"a2f306cec3cdc3c685d3",47:"ad1d3e7f3e13e438bcbf",48:"ef7f29a451f2754469b0",49:"f6871122a1fa7e18f158",50:"07c4baa205f7e23b698d",51:"7fc0ff7b08a3b083ca59",52:"df5a79b4bcadd0cdc55d",53:"da30134b8aa4c56f0f7e",54:"e33162e0cb4a06558216",55:"2586e98e5ad576900fd5",56:"5eea40c26d0d1b243d13",57:"594fe3f9a553b253aa93",58:"4eca8a1ed0c691766a4e",59:"8c76e4fdc3e8670fb2a4",60:"c07ded9edbf754244fff",61:"74fdf5c07fea15af8610",62:"3edbfb7b8910942f64cf",63:"bb4a3303a21ec46167a0",64:"aabae4961cf30cf05770",65:"f8d77d8c96f3e79fe702",66:"3ba7e89277d851279c4d",67:"54211f408298416c6536",68:"510e6b0aa6ffadff566b",69:"518fa345263ef1bb9abc",70:"5d2e33dad1088489e653",71:"e51a1b885d499897baff",72:"bfd2694c02bae17c273e",73:"7751e4d66fee99c15a39",74:"646f1b9348d1bb8cfbf7",75:"6b82dfb7f160db815f54",76:"6c9ea7acb0f245a3225b",77:"33a3a159e61bf292071f",78:"fc56a26c0dc7625bba4a",81:"b70a353b3c794793e525"}[e]+".js";var r=setTimeout(t,12e4);function t(){n.onerror=n.onload=null,clearTimeout(r);var c=f[e];0!==c&&(c&&c[1](new Error("Loading chunk "+e+" failed.")),f[e]=void 0)}return n.onerror=n.onload=t,b.appendChild(n),a},d.m=e,d.c=a,d.d=function(e,c,a){d.o(e,c)||Object.defineProperty(e,c,{configurable:!1,enumerable:!0,get:a})},d.n=function(e){var c=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(c,"a",c),c},d.o=function(e,c){return Object.prototype.hasOwnProperty.call(e,c)},d.p="./",d.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
......@@ -10,6 +10,7 @@
<el-tabs v-model="activeName" class="daily-set-tab" @tab-click="handleTabClick">
<el-tab-pane label="会员搜索设置" name="first"></el-tab-pane>
<el-tab-pane label="会员展示设置" name="second"></el-tab-pane>
<el-tab-pane label="会员分组设置" name="third"></el-tab-pane>
</el-tabs>
</div>
<div v-if="activeName == 'first'" class="app-detail-pane border-box p-45">
......@@ -27,6 +28,49 @@
<el-button type="primary" @click="submit('showFlag')">保 存</el-button>
</div>
</div>
<div v-if="activeName == 'third'" class="app-detail-pane border-box p-45">
<div class="condition-wrap">
<el-input placeholder="请输入门店名称" v-model="conditionObj.searchInput" class="w-264 m-l-10" style="width: 264px;" @keyup.native="value => toInput(value, conditionObj.searchInput)"> <i slot="prefix" class="el-input__icon el-icon-search"></i> </el-input>
<el-select class="w-105 m-l-10" v-model="conditionObj.storeType" placeholder="请选择" @change="changeStoreType">
<el-option v-for="item in classifyList" :key="item.classifyName" :label="item.classifyName" :value="item.classifyName"> </el-option>
</el-select>
</div>
<div>
<el-table class="select-table" ref="multipleTable" :data="groupListData" tooltip-effect="dark" :style="{ width: '100%', minHeight: tableH }">
<el-table-column label="分组名称" width="120" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.groupName }}</template>
</el-table-column>
<el-table-column prop="" label="分类">
<template slot-scope="scope">{{ scope.row.memberTagGroupClassifyName }}</template>
</el-table-column>
<el-table-column prop="" label="是否实时" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.isRealTime == 1 ? '是' : '否' }}</template>
</el-table-column>
<el-table-column prop="" label="更新频率" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.completedRate }}</template>
</el-table-column>
<el-table-column prop="" label="状态" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.effectiveStatus == '1' ? '有效' : '无效' }}</template>
</el-table-column>
<el-table-column prop="" label="覆盖人数" show-overflow-tooltip>
<template slot-scope="scope"
>{{ scope.row.memberCount || 0 }}</template
>
</el-table-column>
<el-table-column prop="" label="到期时间" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.effectiveDate }}</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" @click="toEditGroup(scope.$index, scope.row)">编辑分组可见范围</el-button>
</template>
</el-table-column>
</el-table>
<div class="block common-wrap__page text-right m-t-24" v-if="tableData.length != 0">
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination>
</div>
</div>
</div>
</div>
<div v-if="tabType == 2">
<common-detail-top :topMenuData="topMenuData" :activeId="activeId"></common-detail-top>
......@@ -37,10 +81,12 @@
</div>
</div>
</div>
<vue-select-store ref="storeSelector" :currentBrand="activeGroup" :appScene="appScene" :treeSet="storeTreeSet" :selectType="'group'" :defaultList="defaultStoreList" @handleSelectedList="handleSelectedList"> </vue-select-store>
</div>
</template>
<script>
import commonDetailTop from '@/components/app/common-detail-top.vue';
import vueSelectStore from 'components/common/vueSelectStore';
import showMsg from '@/common/js/showmsg';
import errMsg from '@/common/js/error';
import { _debounce } from '@/common/js/public';
......@@ -59,12 +105,19 @@ export default {
default() {
return '1';
}
},
activeGroupId: {
type: String,
default() {
return '';
}
}
},
data() {
return {
projectName: '', // 当前项目名
activeName: 'first',
activeGroup: this.activeGroupId, // 商户(品牌) groupId
myCustomData: {
searchFlag: false,
chatFlag: false,
......@@ -79,7 +132,27 @@ export default {
name: '会员搜索设置'
}
],
activeId: '1'
activeId: '1',
// 会员分组设置
conditionObj: {
searchInput: '',
classifyName: '',
effectiveStatus: ''
},
groupListData: [], // 列表数据
classifyList: [], // 会员分组
currentPage: 1,
pageSize: 20,
total: 0,
// 门店选择
appScene: 2,
defaultStoreList: [],
storeTreeSet: {
isSelectPerson: false, // 控制只能选部门(false)
dialogVisible: false, // 控制显示/隐藏
isSingle: false // 是否单选
}
};
},
beforeMount() {
......@@ -97,10 +170,138 @@ export default {
const that = this;
if (tab.name == 'first') {
that.getCustomerSet(that.brandId);
}else {
}else if (tab.name == 'second') {
that.getShowSet(that.brandId);
}else {
that.getGroupClassify(that.brandId)
that.getGroupList(that.brandId)
}
},
/**
* 获取会员分组分类
*/
getGroupClassify(brandId) {
const that = this;
let para = {
brandId: brandId
};
postRequest('/haoban-app-member-web/memberGroup/get-member-class-list', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
that.classifyList = resData.result.list;
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
},
/**
* 编辑分组可见范围
*
*/
toEditGroup(index, row) {
const that = this;
that.memberGroupId = row.memberGroupId;
that.storeTreeSet = {
dialogVisible: true,
isSingle: false,
isSelectPerson: false
};
},
handleSelectedList(data) {
console.log(data)
that.defaultStoreList = data || [];
},
saveGorupRange() {
const that = this;
let storeGroups = [];
let filterStoreIds = [];
that.defaultStoreList.forEach(ele => {
if (ele.type == 2) {
storeGroups.push(ele.groupId);
}
if (ele.type == 3) {
filterStoreIds.push(ele.storeId);
}
});
let para = {
brandId: that.brandId,
memberGroupId: that.memberGroupId,
groupList: storeGroups.join(',') || '',
storeList: filterStoreIds.join(',') || ''
};
postRequest('/haoban-app-member-web/memberGroup/save-gorup-see-range', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
showMsg.showmsg('编辑成功', 'success');
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
},
/**
* 分页---页码变化
*/
handleSizeChange(val) {
const that = this;
that.pageSize = val;
that.getGroupList();
},
/**
* 分页---当前页变化
*/
handleCurrentChange(val) {
const that = this;
that.currentPage = val;
that.getGroupList();
},
/**
* 获取会员分组设置列表
*/
getGroupList(brandId) {
const that = this;
let para = {
brandId: brandId,
memberGroupName: that.conditionObj.searchInput,
classifyName: that.conditionObj.classifyName,
effectiveStatus: that.conditionObj.effectiveStatus,
pageNum: that.currentPage,
pageSize: that.pageSize
};
postRequest('/haoban-app-member-web/memberGroup/member-tag-group-list', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
that.groupListData = resData.result.list;
that.total = resData.result.total;
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
},
/**
* 保存
......@@ -239,6 +440,8 @@ export default {
that.getChatSet(newData);
that.getCustomerSet(newData);
that.getShowSet(newData);
that.getGroupClassify(newData)
that.getGroupList(newData)
},
tabType: function(newData, oldData) {
const that = this;
......@@ -265,7 +468,8 @@ export default {
const that = this;
},*/
components: {
commonDetailTop
commonDetailTop,
vueSelectStore
}
};
</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