Commit 0ce3ba61 by 陈羽

Merge branch 'feature/销售线索4' of http://git.gicdev.com/office/haoban-3

parents c2785099 fb2c48ca
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<link rel="shortcut icon" href="./favicon.ico" /> <link rel="shortcut icon" href="./favicon.ico" />
<title>好办管理平台</title> <title>好办管理平台</title>
<link rel="stylesheet" type="text/css" href="//web-1251519181.file.myqcloud.com/custom-element/custom-element.1.0.58.3.css" /> <link rel="stylesheet" type="text/css" href="//web-1251519181.file.myqcloud.com/custom-element/custom-element.1.0.68.css" />
</head> </head>
......
...@@ -14,3 +14,12 @@ export const tagList = params => postRequest('/haoban-app-customer-web/tag/tag-l ...@@ -14,3 +14,12 @@ export const tagList = params => postRequest('/haoban-app-customer-web/tag/tag-l
// 会员标签-同步记录 // 会员标签-同步记录
export const syncLog = params => postRequest('/haoban-app-customer-web/tag/sync-log', params); export const syncLog = params => postRequest('/haoban-app-customer-web/tag/sync-log', params);
// 会员标签-同步会员明细
export const syncMemberLog = params => postRequest('/haoban-app-customer-web/tag/sync-member-log', params);
// 会员标签-同步标签明细
export const syncTagLog = params => postRequest('/haoban-app-customer-web/tag/sync-tag-log', params);
// 会员标签-是否可以操作校验
export const checkSync = () => postRequest('/haoban-app-customer-web/tag/check-sync', {});
...@@ -21,15 +21,12 @@ ...@@ -21,15 +21,12 @@
<div class="p-t-12"> <div class="p-t-12">
<ul class="tab-left-list"> <ul class="tab-left-list">
<template v-for="(item, index) in tabData"> <template v-for="(item, index) in tabData">
<li :class="['tab-left-list-cell color-303133 font-14 border-box p-l-14', item.tabId == activeTab ? 'active-tab' : '']" :key="index" @click="selectTab(item, false, index)"> <li :class="['tab-left-list-cell color-303133 font-14 border-box p-l-14', item.tabId == activeTab ? 'active-tab' : '']" :key="index" @click="selectTab(item, false, index)"><i :class="['p-r-10 color-303133 iconfont', item.icon]"></i>{{ item.tabName }}<i v-if="!!item.children && !!item.children.length" :class="[!!item.collapsFlag ? 'el-icon-arrow-up' : 'el-icon-arrow-down']"></i></li>
<i :class="['p-r-10 color-303133 iconfont', item.icon, !!item.onlyIconActive ? '' : '']"></i>{{ item.tabName }} <ul class="child-tab-left-list" :key="'childitem' + index" :style="{ height: !!item.collapsFlag && item.children ? 'auto' : 0 }">
<!-- iconActive <i v-if="!!item.children && !!item.children.length" :class="[!!collapsFlag ? 'el-icon-arrow-up' : 'el-icon-arrow-down']"></i> -->
</li>
<ul class="child-tab-left-list" :key="'childitem' + index">
<!-- v-if="!!item.collapsFlag"--> <!-- v-if="!!item.collapsFlag"-->
<template v-for="(childitem, childIndex) in item.children"> <template v-for="(childitem, childIndex) in item.children">
<li :class="['tab-left-list-cell color-303133 font-14 border-box p-l-40', childitem.tabId == activeTab ? 'active-tab' : '']" :key="childIndex" @click="selectTab(childitem, 'child', index)">{{ childitem.tabName }}</li> <li :class="['tab-left-list-cell color-303133 font-14 border-box p-l-40', childitem.tabId == activeTab ? 'active-tab' : '']" :key="childIndex" @click="selectTab(childitem, 'child', index)">{{ childitem.tabName }}<i v-if="!!childitem.children && !!childitem.children.length" :class="[!!childitem.collapsFlag ? 'el-icon-arrow-up' : 'el-icon-arrow-down']"></i></li>
<ul class="third-tab-left-list" :key="'thirditem' + childIndex"> <ul class="third-tab-left-list" :key="'thirditem' + childIndex" v-if="childitem.children" :style="{ height: !!childitem.collapsFlag && childitem.children ? 'auto' : 0 }">
<template v-for="(thirditem, thirdIndex) in childitem.children"> <template v-for="(thirditem, thirdIndex) in childitem.children">
<li :class="['tab-left-list-cell color-303133 font-14 border-box p-l-60', thirditem.tabId == activeTab ? 'active-tab' : '']" :key="thirdIndex" @click="selectTab(thirditem, 'child', index)">{{ thirditem.tabName }}</li> <li :class="['tab-left-list-cell color-303133 font-14 border-box p-l-60', thirditem.tabId == activeTab ? 'active-tab' : '']" :key="thirdIndex" @click="selectTab(thirditem, 'child', index)">{{ thirditem.tabName }}</li>
</template> </template>
...@@ -68,12 +65,28 @@ export default { ...@@ -68,12 +65,28 @@ export default {
data() { data() {
return { return {
projectName: '', // 当前项目名 projectName: '', // 当前项目名
activeTab: '1', activeTab: '0',
tabData: this.tabListData, tabData: []
collapsFlag: true
}; };
}, },
mounted() {
this.activeTab = this.activeSelTab;
let tabListData = [].concat(this.tabListData);
tabListData.map(item => {
item.collapsFlag = true;
if (item.hasOwnProperty('children') && item.children.length) {
if (this.activeSelTab == item.tabId) {
this.activeTab = item.children[0].tabId;
} else {
item.children.map(child => {
child.collapsFlag = true;
if (child.hasOwnProperty('children') && child.children.length && this.activeSelTab == child.tabId) this.activeTab = child.children[0].tabId;
});
}
}
});
this.$nextTick(_ => (this.tabData = [].concat(tabListData)));
},
methods: { methods: {
/** /**
* 路由跳转 * 路由跳转
...@@ -86,45 +99,24 @@ export default { ...@@ -86,45 +99,24 @@ export default {
* 选择后触发方法,返回 tabId * 选择后触发方法,返回 tabId
*/ */
selectTab(item, flag, index) { selectTab(item, flag, index) {
let that = this;
if (!!flag) {
that.tabData[index].onlyIconActive = true;
} else {
that.tabData.forEach(ele => {
ele.onlyIconActive = false;
});
if (item.hasOwnProperty('children') && !!item.children.length) {
that.collapsFlag = !!that.collapsFlag && item.hasOwnProperty('children') && !!item.children.length ? false : true;
}
}
// 判断已选 item, 判断只让 icon 变色
if (item.hasOwnProperty('children')) { if (item.hasOwnProperty('children')) {
that.tabData[index].onlyIconActive = true; if (!!item.children.length) {
if (item.children[0].hasOwnProperty('children')) { item.collapsFlag = !item.collapsFlag;
that.activeTab = item.children[0].children[0].tabId; this.tabData = JSON.parse(JSON.stringify(this.tabData));
that.$emit('setSelectTab', item); } else {
return false; this.activeTab = item.tabId;
this.$emit('setSelectTab', item);
} }
that.activeTab = item.children[0].tabId; } else {
that.$emit('setSelectTab', item); this.activeTab = item.tabId;
return false; this.$emit('setSelectTab', item);
} }
that.activeTab = item.tabId;
that.$emit('setSelectTab', item);
} }
}, },
watch: { watch: {
tabListData: function(newData, oldData) { activeSelTab(newV) {
let that = this; this.activeTab = newV;
that.tabData = newData;
},
activeSelTab: function(newData, oldData) {
let that = this;
that.activeTab = newData;
} }
},
mounted() {
this.activeTab = this.activeSelTab;
} }
}; };
</script> </script>
...@@ -141,6 +133,13 @@ export default { ...@@ -141,6 +133,13 @@ export default {
.iconActive { .iconActive {
color: #2f54eb; color: #2f54eb;
} }
.el-icon-arrow-up,
.el-icon-arrow-down {
position: absolute;
right: 5px;
top: 50%;
transform: translateY(-50%);
}
&:hover { &:hover {
color: #2f54eb; color: #2f54eb;
background: rgba(47, 84, 235, 0.05); background: rgba(47, 84, 235, 0.05);
...@@ -157,10 +156,11 @@ export default { ...@@ -157,10 +156,11 @@ export default {
} }
} }
.child-tab-left-list { .child-tab-left-list {
-webkit-transition: all 0.5s ease-in-out; -webkit-transition: all 0.3s ease-in-out;
-o-transition: all 0.5s ease-in-out; -o-transition: all 0.3s ease-in-out;
-moz-transition: all 0.5s ease-in-out; -moz-transition: all 0.3s ease-in-out;
transition: all 0.5s ease-in-out; transition: all 0.3s ease-in-out;
overflow: hidden;
li { li {
position: relative; position: relative;
text-align: left; text-align: left;
......
...@@ -190,7 +190,7 @@ export default { ...@@ -190,7 +190,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
} }
......
...@@ -18,9 +18,8 @@ ...@@ -18,9 +18,8 @@
<i class="el-alert__icon el-icon-info"></i> <i class="el-alert__icon el-icon-info"></i>
<div class="el-alert__content"> <div class="el-alert__content">
<span class="el-alert__title"> <span class="el-alert__title">
1.预计2021年1月功能更新后将仅保留近一年数据,历史数据将清除。如需保存超过一年历史数据,请于1月前导出保存;<br /> 1.此处仅统计近一年内的数据<br />
2.话务任务统计数据每日刷新一次;<br /> 2.门店下具体某条话务任务的完成状态每天更新一次;下方列表中任务完成数据统计也为每天统计更新一次,非实时刷新。
3.需要注意:话务完成详情是实时展示;完成数据统计是每日刷新,可能出现任务详情显示已完成,但是已完成数量并没有+1。这属于统计的正常情况。
</span> </span>
</div> </div>
</div> </div>
...@@ -37,7 +36,7 @@ ...@@ -37,7 +36,7 @@
<el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" :style="{ width: '100%', minHeight: tableH }" @selection-change="handleSelectionChange"> <el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" :style="{ width: '100%', minHeight: tableH }" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="45"> </el-table-column> <el-table-column type="selection" width="45"> </el-table-column>
<el-table-column width="25"> <el-table-column width="25">
<template slot="header" slot-scope="scope"> <template slot="header">
<el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start"> <el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start">
<span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span> <span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
...@@ -46,7 +45,7 @@ ...@@ -46,7 +45,7 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
<template slot-scope="scope"> </template> <template slot-scope="scope">{{ scope ? ' ' : ' ' }}</template>
</el-table-column> </el-table-column>
<el-table-column label="任务名称" width="120" show-overflow-tooltip> <el-table-column label="任务名称" width="120" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.ecmName }}</template> <template slot-scope="scope">{{ scope.row.ecmName }}</template>
......
...@@ -288,7 +288,7 @@ export default { ...@@ -288,7 +288,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
} }
......
...@@ -286,7 +286,7 @@ export default { ...@@ -286,7 +286,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
} }
......
...@@ -286,7 +286,7 @@ export default { ...@@ -286,7 +286,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
} }
......
...@@ -273,7 +273,7 @@ export default { ...@@ -273,7 +273,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
} }
......
...@@ -47,8 +47,8 @@ ...@@ -47,8 +47,8 @@
<template slot-scope="scope">{{ scope.row.nationCode }}-{{ scope.row.phoneNumber }}</template> <template slot-scope="scope">{{ scope.row.nationCode }}-{{ scope.row.phoneNumber }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="" label="导购ID"> <el-table-column prop="" label="导购ID">
<template slot="header" slot-scope="scope"> <template slot="header">
<el-tooltip class="item" effect="light" placement="right"> <el-tooltip class="item" effect="dark" placement="right">
<div slot="content"> <div slot="content">
是否使用好办3.0小程序 是否使用好办3.0小程序
</div> </div>
...@@ -60,8 +60,8 @@ ...@@ -60,8 +60,8 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="" label="关联详情" show-overflow-tooltip> <el-table-column prop="" label="关联详情" show-overflow-tooltip>
<template slot="header" slot-scope="scope"> <template slot="header">
<el-tooltip class="item" effect="light" placement="right"> <el-tooltip class="item" effect="dark" placement="right">
<div slot="content">员工关联导购详情,因只能识别企业微信用户usrid且门店与部门不相关联,<br />所以虽然在一个部门下,但是可能出现一个人关联多个导购code。<br />即一个用户对应多个导购code</div> <div slot="content">员工关联导购详情,因只能识别企业微信用户usrid且门店与部门不相关联,<br />所以虽然在一个部门下,但是可能出现一个人关联多个导购code。<br />即一个用户对应多个导购code</div>
<span style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">关联详情</span> <span style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">关联详情</span>
</el-tooltip> </el-tooltip>
......
...@@ -285,7 +285,7 @@ export default { ...@@ -285,7 +285,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
.count-number { .count-number {
......
...@@ -271,7 +271,7 @@ export default { ...@@ -271,7 +271,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
} }
......
...@@ -117,6 +117,7 @@ export default { ...@@ -117,6 +117,7 @@ export default {
} else { } else {
that.$router.push(path); that.$router.push(path);
} }
that.$emit('changeRoute', path);
}, },
/** /**
* 选择品牌 * 选择品牌
...@@ -126,6 +127,7 @@ export default { ...@@ -126,6 +127,7 @@ export default {
that.selectBrand = item; that.selectBrand = item;
this.$store.commit('changeWxEntertype', item.wxEnterpriseType); this.$store.commit('changeWxEntertype', item.wxEnterpriseType);
that.$emit('selectBrandId', item.enterpriseId); that.$emit('selectBrandId', item.enterpriseId);
sessionStorage.setItem('userInfoBrandId', item.enterpriseId);
that.brandVisible = false; that.brandVisible = false;
}, },
...@@ -149,9 +151,19 @@ export default { ...@@ -149,9 +151,19 @@ export default {
} }
}); });
return false; return false;
} else if (sessionStorage.getItem('userInfoBrandId')) {
that.activeBrand = sessionStorage.getItem('userInfoBrandId');
that.$emit('selectBrandId', sessionStorage.getItem('userInfoBrandId'));
that.brandListData.forEach(ele => {
if (ele.enterpriseId == that.activeBrand) {
that.selectBrand = ele;
}
});
return;
} }
that.selectBrand = that.brandListData[0]; that.selectBrand = that.brandListData[0];
that.activeBrand = that.brandListData[0].enterpriseId; that.activeBrand = that.brandListData[0].enterpriseId;
sessionStorage.setItem('userInfoBrandId', that.activeBrand);
this.$store.commit('changeWxEntertype', that.brandListData[0].wxEnterpriseType); this.$store.commit('changeWxEntertype', that.brandListData[0].wxEnterpriseType);
// 由于门店选择组件中没有品牌id ,只有 groupId // 由于门店选择组件中没有品牌id ,只有 groupId
that.$emit('selectBrandId', that.brandListData[0].enterpriseId, that.brandListData[0].enterpriseId); that.$emit('selectBrandId', that.brandListData[0].enterpriseId, that.brandListData[0].enterpriseId);
......
...@@ -17,13 +17,19 @@ ...@@ -17,13 +17,19 @@
<el-form-item label="小程序名称" prop="miniprogramName"> <el-form-item label="小程序名称" prop="miniprogramName">
<el-input show-word-limit placeholder="请输入小程序名称" type="text" v-model="ruleForm.miniprogramName" maxlength="20"></el-input> <el-input show-word-limit placeholder="请输入小程序名称" type="text" v-model="ruleForm.miniprogramName" maxlength="20"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="AppID:" prop="appId"> <el-form-item prop="appId">
<span slot="label"
><el-tooltip class="item" effect="dark" placement="top">
<div slot="content">如何查看AppId:<a href="https://jingyan.baidu.com/article/95c9d20d0545f9ec4e75612d.html" target="blank">https://jingyan.baidu.com/article/95c9d20d0545f9ec4e75612d.html</a></div>
<span style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">AppId</span>
</el-tooltip></span
>
<el-input show-word-limit placeholder="请输入AppId" type="text" v-model="ruleForm.appId" maxlength="80"></el-input> <el-input show-word-limit placeholder="请输入AppId" type="text" v-model="ruleForm.appId" maxlength="80"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="标题" prop="title"> <el-form-item label="标题" prop="title">
<el-input show-word-limit placeholder="请输入标题" type="text" v-model="ruleForm.title" maxlength="80"></el-input> <el-input show-word-limit placeholder="请输入标题" type="text" v-model="ruleForm.title" maxlength="80"></el-input>
</el-form-item> </el-form-item>
<el-form-item label=" 封面" prop="pic"> <el-form-item label=" 封面" prop="pic">
<single-upload uploadType="1" :imgSrc.sync="ruleForm.imageUrl" :field="''" class="app-set" :uploadLimit="20"> </single-upload> <single-upload uploadType="1" :imgSrc.sync="ruleForm.imageUrl" :field="''" class="app-set" :uploadLimit="20"> </single-upload>
<p style="margin-top: 9px;font-size: 12px;color: #909399;line-height: 17px;">建议尺寸520*416,支持png、jpg、jpeg格式</p> <p style="margin-top: 9px;font-size: 12px;color: #909399;line-height: 17px;">建议尺寸520*416,支持png、jpg、jpeg格式</p>
</el-form-item> </el-form-item>
......
...@@ -298,7 +298,7 @@ export default { ...@@ -298,7 +298,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
} }
......
...@@ -85,7 +85,7 @@ export default { ...@@ -85,7 +85,7 @@ export default {
images_upload_credentials: true, //是否应传递cookie等跨域的凭据 images_upload_credentials: true, //是否应传递cookie等跨域的凭据
// images_upload_handler提供三个参数:blobInfo, success, failure // images_upload_handler提供三个参数:blobInfo, success, failure
images_upload_handler: (blobInfo, success, failure)=>{ images_upload_handler: (blobInfo, success, failure)=>{
console.log(blobInfo) // console.log(blobInfo)
this.handleImgUpload(blobInfo, success, failure) this.handleImgUpload(blobInfo, success, failure)
}, },
// 添加插件 // 添加插件
...@@ -96,7 +96,7 @@ export default { ...@@ -96,7 +96,7 @@ export default {
setup: function(editor) { setup: function(editor) {
// 点击编辑框回调 // 点击编辑框回调
editor.on('click', function(e) { editor.on('click', function(e) {
console.log('Editor was clicked'); // console.log('Editor was clicked');
}); });
}, },
fontsize_formats: "8px 10px 12px 14px 18px 24px 36px", fontsize_formats: "8px 10px 12px 14px 18px 24px 36px",
...@@ -112,11 +112,11 @@ export default { ...@@ -112,11 +112,11 @@ export default {
let formdata = new FormData() let formdata = new FormData()
formdata.set('upload_file', blobInfo.blob()) formdata.set('upload_file', blobInfo.blob())
formdata.set("requestProject",that.repProjectName); formdata.set("requestProject",that.repProjectName);
console.log(formdata) // console.log(formdata)
postForm('/api-plug/upload-img', formdata).then(res => { postForm('/api-plug/upload-img', formdata).then(res => {
success(res.data.result[0].qcloudImageUrl) success(res.data.result[0].qcloudImageUrl)
}).catch(res => { }).catch(res => {
console.log(res) // console.log(res)
failure('error') failure('error')
}) })
}, },
......
...@@ -176,7 +176,7 @@ export default { ...@@ -176,7 +176,7 @@ export default {
*/ */
handleDownload() { handleDownload() {
const that = this; const that = this;
console.log(that.currentExcelTagItemId); // console.log(that.currentExcelTagItemId);
const para = { const para = {
tagItemId: that.tagItemId tagItemId: that.tagItemId
...@@ -205,7 +205,7 @@ export default { ...@@ -205,7 +205,7 @@ export default {
errMsg.errorMsg(resData); errMsg.errorMsg(resData);
}) })
.catch(function(error) { .catch(function(error) {
console.log(error); // console.log(error);
that.$message.error({ that.$message.error({
duration: 1000, duration: 1000,
...@@ -225,7 +225,7 @@ export default { ...@@ -225,7 +225,7 @@ export default {
const tHeader = header; // ['phoneNum'] const tHeader = header; // ['phoneNum']
const filterVal = header; //['phoneNum'] const filterVal = header; //['phoneNum']
const list = currentExcelData; const list = currentExcelData;
console.log(list); // console.log(list);
if (!list.length) { if (!list.length) {
that.$message.error({ that.$message.error({
duration: 1000, duration: 1000,
...@@ -234,7 +234,7 @@ export default { ...@@ -234,7 +234,7 @@ export default {
return false; return false;
} }
const data = that.formatJson(filterVal, list); const data = that.formatJson(filterVal, list);
console.log(data); // console.log(data);
export_json_to_excel(tHeader, data, '导出列表'); export_json_to_excel(tHeader, data, '导出列表');
}); });
}, },
...@@ -245,7 +245,7 @@ export default { ...@@ -245,7 +245,7 @@ export default {
}, },
watch: { watch: {
currentIndex: function(newdata, oldData) { currentIndex: function(newdata, oldData) {
console.log('watch:', newdata); // console.log('watch:', newdata);
this.useIndex = newdata; this.useIndex = newdata;
}, },
// failData: function(newdata,oldData){ // failData: function(newdata,oldData){
...@@ -253,17 +253,17 @@ export default { ...@@ -253,17 +253,17 @@ export default {
// this.failedData = newdata // this.failedData = newdata
// }, // },
currentExcelTagItemId: function(newdata, oldData) { currentExcelTagItemId: function(newdata, oldData) {
console.log('watch:', newdata); // console.log('watch:', newdata);
this.tagItemId = newdata; this.tagItemId = newdata;
}, },
status: function(newdata, oldData) { status: function(newdata, oldData) {
console.log('watch:', newdata); // console.log('watch:', newdata);
this.tagItemStatus = newdata; this.tagItemStatus = newdata;
} }
}, },
mounted() { mounted() {
console.log(this.currentIndex); // console.log(this.currentIndex);
this.useIndex = this.currentIndex; this.useIndex = this.currentIndex;
// this.failedData = this.failData // this.failedData = this.failData
this.tagItemId = this.currentExcelTagItemId; this.tagItemId = this.currentExcelTagItemId;
......
...@@ -139,43 +139,47 @@ export const constantRouterMap = [{ ...@@ -139,43 +139,47 @@ export const constantRouterMap = [{
{ {
path: '/salesleads', path: '/salesleads',
name: '销售线索', name: '销售线索',
redirect: 'grStoreList', redirect: 'trafficTaskSet',
component: _import('salesleads', 'index'), component: _import('salesleads', 'index'),
children: [ children: [{
// { path: '/taskRecord',
// path: '/storeList', name: '话务任务记录',
// name: '门店视图', component: _import('salesleads/trafficTask', 'taskRecord')
// component: _import('salesleads', 'storeList'), },
// }, {
// { path: '/taskView',
// path: '/storeDetail/:id', name: '话务任务记录',
// name: '门店视图', component: _import('salesleads/trafficTask', 'taskView')
// component: _import('salesleads', 'storeDetail') },
// }, {
// { path: '/taskDetail',
// path: '/salesTaskList', name: '话务任务详情',
// name: '计划视图', component: _import('salesleads/trafficTask', 'taskDetail')
// component: _import('salesleads', 'taskList'), },
// }, {
// { path: '/taskViewDetail',
// path: '/salesleadsSet', name: '话务任务详情',
// name: '销售线索设置', component: _import('salesleads/trafficTask', 'taskViewDetail')
// component: _import('salesleads', 'salesleadsSet') },
// }, {
path: '/trafficTaskSet',
name: '话务任务设置',
component: _import('salesleads/trafficTask', 'trafficTaskSet')
},
{ {
path: '/grStoreList', // 群发任务-门店视图 path: '/grStoreList', // 群发任务-门店视图
name: '门店视图', name: '门店视图',
component: _import('salesleads', 'grStoreList') component: _import('salesleads/groupSend', 'grStoreList')
}, },
{ {
path: '/grStoreDetail/:id', // 群发任务-门店视图-任务详情 path: '/grStoreDetail/:id', // 群发任务-门店视图-任务详情
name: '门店视图', name: '门店视图',
component: _import('salesleads', 'grStoreDetail') component: _import('salesleads/groupSend', 'grStoreDetail')
}, },
{ {
path: '/grTaskList', // 群发任务-计划视图 path: '/grTaskList', // 群发任务-计划视图
name: '计划视图', name: '计划视图',
component: _import('salesleads', 'grTaskList') component: _import('salesleads/groupSend', 'grTaskList')
} }
] ]
}, },
...@@ -329,58 +333,6 @@ export const constantRouterMap = [{ ...@@ -329,58 +333,6 @@ export const constantRouterMap = [{
] ]
}, },
{ {
path: '/trafficTask',
name: '话务任务',
redirect: '/taskRecord',
component: _import('apps/trafficTask', 'index'),
children: [{
path: '/taskRecord',
name: '话务任务记录',
component: _import('apps/trafficTask', 'taskRecord')
},
{
path: '/taskView',
name: '话务任务记录',
component: _import('apps/trafficTask', 'taskView')
},
{
path: '/taskDetail',
name: '话务任务详情',
component: _import('apps/trafficTask', 'taskDetail')
},
{
path: '/taskViewDetail',
name: '话务任务详情',
component: _import('apps/trafficTask', 'taskViewDetail')
},
{
path: '/trafficTaskSet',
name: '话务任务设置',
component: _import('apps/trafficTask', 'trafficTaskSet')
},
{
path: '/badEvaluateSet',
name: '不良评价设置',
component: _import('apps/badEvaluate', 'badEvaluateSet')
},
{
path: '/taskList',
name: '会话任务列表',
component: _import('apps/trafficTask', 'taskList')
},
{
path: '/newSession',
name: '新建会话任务',
component: _import('apps/trafficTask', 'newSession')
},
{
path: '/taskSessionSet',
name: '会话任务设置',
component: _import('apps/trafficTask', 'taskSessionSet')
}
]
},
{
path: '/quota', path: '/quota',
name: '指标管理', name: '指标管理',
redirect: '/monthList', redirect: '/monthList',
...@@ -514,6 +466,10 @@ export const constantRouterMap = [{ ...@@ -514,6 +466,10 @@ export const constantRouterMap = [{
path: '/evaluate-set', path: '/evaluate-set',
name: '订单评价', name: '订单评价',
component: _import('apps/order-evaluate', 'evaluate-set') component: _import('apps/order-evaluate', 'evaluate-set')
},{
path: '/bad-evaluate',
name: '不良评价回访设置',
component: _import('apps/order-evaluate', 'bad-evaluate-set')
}] }]
} }
] ]
......
...@@ -80,6 +80,9 @@ export default new Vuex.Store({ ...@@ -80,6 +80,9 @@ export default new Vuex.Store({
}, },
clearTreeData(context, data) { clearTreeData(context, data) {
context.commit('clearData'); context.commit('clearData');
},
changeWxEntertypeData(context, data) {
context.commit('changeWxEntertype', data);
} }
} }
}); });
...@@ -46,6 +46,16 @@ export default { ...@@ -46,6 +46,16 @@ export default {
activeSelTab: '1', activeSelTab: '1',
activeTab: '1', activeTab: '1',
// 面包屑参数 // 面包屑参数
defaultNavpath: [
{
name: '首页',
path: '/index'
},
{
name: '卡券赠送',
path: '/cardList'
}
],
navpath: [ navpath: [
{ {
name: '首页', name: '首页',
...@@ -53,9 +63,21 @@ export default { ...@@ -53,9 +63,21 @@ export default {
}, },
{ {
name: '卡券赠送', name: '卡券赠送',
path: '' path: '/cardList'
} }
], ],
navName: {
1: '卡券列表',
11: '编辑卡券',
12: '新增卡券',
2: '卡券记录'
},
navFrontPath: {
1: '/cardList',
11: '/cardList',
12: '/cardList',
2: '/cardList'
},
tabListData: [ tabListData: [
{ {
tabId: '1', tabId: '1',
...@@ -133,28 +155,17 @@ export default { ...@@ -133,28 +155,17 @@ export default {
* 各路由返回 tabId * 各路由返回 tabId
*/ */
showTab(id) { showTab(id) {
let ids = [...arguments];
let that = this; let that = this;
that.activeTab = id; that.activeTab = id;
that.activeSelTab = id; that.activeSelTab = id;
that.tabListData.forEach(ele => { this.navpath = [...this.defaultNavpath];
if (ele.tabId == id) { if (ids.length) {
ele.onlyIconActive = false; ids.map(tabId => {
} this.navpath[this.navpath.length - 1].path = this.navFrontPath[tabId];
if (!!ele.children) { this.navpath.push({ name: this.navName[tabId], path: '' });
ele.children.forEach(el => { });
if (el.tabId == id) { }
ele.onlyIconActive = true;
}
if (!!el.children) {
el.children.forEach(item => {
if (item.tabId == id) {
ele.onlyIconActive = true;
}
});
}
});
}
});
} }
}, },
watch: { watch: {
...@@ -176,8 +187,6 @@ export default { ...@@ -176,8 +187,6 @@ export default {
} }
}, },
mounted() { mounted() {
// const that = this;
// that.changeNavShow(that.$route);
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
}, },
destroyed() { destroyed() {
......
...@@ -412,12 +412,13 @@ export default { ...@@ -412,12 +412,13 @@ export default {
}, },
mounted() { mounted() {
const that = this; const that = this;
that.$emit('showTab', '1');
that.activeBrand = that.brandId; that.activeBrand = that.brandId;
if (that.$route.query.coupCardId && that.brandId) { if (that.$route.query.coupCardId && that.brandId) {
that.$emit('showTab', '1', '11');
that.addTag = false; that.addTag = false;
that.getCardData(); that.getCardData();
} else { } else {
that.$emit('showTab', '1', '12');
that.loadingPage = false; that.loadingPage = false;
} }
} }
......
...@@ -1393,9 +1393,10 @@ export default { ...@@ -1393,9 +1393,10 @@ export default {
}, },
mounted() { mounted() {
const that = this; const that = this;
that.$emit('showTab', '32');
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
let query = that.$route.query; let query = that.$route.query;
that.$emit('showTab', '32',query.type==='copy'?'322':query.templateId?'321':'322');
// 获取已经配置的数据 // 获取已经配置的数据
/* eslint-disable */ /* eslint-disable */
Promise.all([that.getAllFields(2)]) Promise.all([that.getAllFields(2)])
......
...@@ -480,7 +480,7 @@ export default { ...@@ -480,7 +480,7 @@ export default {
mounted() { mounted() {
const that = this; const that = this;
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '11'); that.$emit('showTab', '11','111');
that.activeBrand = that.brandId; that.activeBrand = that.brandId;
that.conditionObj.storeId = that.$route.query.storeId; that.conditionObj.storeId = that.$route.query.storeId;
if (!!that.brandId) { if (!!that.brandId) {
......
...@@ -427,6 +427,7 @@ export default { ...@@ -427,6 +427,7 @@ export default {
}, },
mounted() { mounted() {
let that = this; let that = this;
that.$emit('showTab', '11');
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.activeBrand = that.brandId; that.activeBrand = that.brandId;
that.activeGroup = that.activeGroupId; that.activeGroup = that.activeGroupId;
......
...@@ -44,6 +44,16 @@ export default { ...@@ -44,6 +44,16 @@ export default {
activeSelTab: '11', activeSelTab: '11',
activeTab: '11', activeTab: '11',
// 面包屑参数 // 面包屑参数
defaultNavpath: [
{
name: '首页',
path: '/index'
},
{
name: '云日报',
path: '/dailyRecord'
}
],
navpath: [ navpath: [
{ {
name: '首页', name: '首页',
...@@ -51,9 +61,30 @@ export default { ...@@ -51,9 +61,30 @@ export default {
}, },
{ {
name: '云日报', name: '云日报',
path: '' path: '/dailyRecord'
} }
], ],
navName: {
11: '云日报-云日报记录',
111: '云日报-记录详情',
12: '云日报导出',
2: '任务下发设置',
3: '云日报设置',
31: '云日报设置-系统报表',
32: '云日报设置-自定义报表',
321: '编辑模板',
322: '新建模板'
},
navFrontPath: {
11: '/dailyRecord',
111: '/dailyRecord',
12: '/dailyRecord',
2: '/dailyRecord',
31: '/dailyRecord',
32: '/dailyRecord',
321: '/customReport',
322: '/customReport'
},
tabListData: [ tabListData: [
{ {
tabId: '1', tabId: '1',
...@@ -173,28 +204,18 @@ export default { ...@@ -173,28 +204,18 @@ export default {
* 各路由返回 tabId * 各路由返回 tabId
*/ */
showTab(id) { showTab(id) {
let ids = [...arguments];
let that = this; let that = this;
that.activeTab = id; that.activeTab = id;
that.activeSelTab = id; that.activeSelTab = id;
that.tabListData.forEach(ele => { let navpath = [...this.defaultNavpath];
if (ele.tabId == id) { if (ids.length) {
ele.onlyIconActive = false; ids.map(tabId => {
} navpath[navpath.length - 1].path = this.navFrontPath[tabId];
if (!!ele.children) { navpath.push({ name: this.navName[tabId], path: '' });
ele.children.forEach(el => { });
if (el.tabId == id) { }
ele.onlyIconActive = true; this.$nextTick(() => (this.navpath = [].concat(navpath)));
}
if (!!el.children) {
el.children.forEach(item => {
if (item.tabId == id) {
ele.onlyIconActive = true;
}
});
}
});
}
});
}, },
changeNavShow(val) { changeNavShow(val) {
const that = this; const that = this;
......
...@@ -9,11 +9,11 @@ ...@@ -9,11 +9,11 @@
<template> <template>
<div class="my-customer-wrap common-set-wrap"> <div class="my-customer-wrap common-set-wrap">
<nav-crumb :navpath="navpath" @selectBrandId="selectBrandId"> </nav-crumb> <nav-crumb :navpath="navpath" @selectBrandId="selectBrandId"> </nav-crumb>
<div class="right-content"> <div class="right-content" v-loading="loading">
<div class="right-box" style="min-height: calc(100vh - 112px);"> <div class="right-box" style="min-height: calc(100vh - 112px);">
<div class="apps-content flex" style="min-height: calc(100vh - 112px);"> <div class="apps-content flex" style="min-height: calc(100vh - 112px);">
<div class="apps-content-left w-157" style="min-height: calc(100vh - 112px);"> <div class="apps-content-left w-157" style="min-height: calc(100vh - 112px);">
<common-detail-left :tabListData="tabListData" :activeSelTab="activeSelTab" @setSelectTab="setSelectTab"> </common-detail-left> <common-detail-left v-if="!loading" :tabListData="tabListData" :activeSelTab="activeSelTab" @setSelectTab="setSelectTab"> </common-detail-left>
</div> </div>
<div class="apps-content-right"> <div class="apps-content-right">
<transition name="fade" mode="out-in"> <transition name="fade" mode="out-in">
...@@ -41,8 +41,8 @@ export default { ...@@ -41,8 +41,8 @@ export default {
return { return {
bgHeight: window.screen.availHeight - 380 + 'px', bgHeight: window.screen.availHeight - 380 + 'px',
activeSelTab: '1', activeSelTab: '11',
activeTab: '1', activeTab: '11',
// 面包屑参数 // 面包屑参数
navpath: [ navpath: [
{ {
...@@ -51,7 +51,17 @@ export default { ...@@ -51,7 +51,17 @@ export default {
}, },
{ {
name: '我的顾客', name: '我的顾客',
path: '' path: '/memberShowSet'
}
],
defaultNavpath: [
{
name: '首页',
path: '/index'
},
{
name: '我的顾客',
path: '/memberShowSet'
} }
], ],
tabListData: [ tabListData: [
...@@ -94,13 +104,96 @@ export default { ...@@ -94,13 +104,96 @@ export default {
icon: 'icongukeguanliicon' icon: 'icongukeguanliicon'
} }
], ],
navName: {
1: '会员基础设置',
11: '会员展示设置',
12: '会员分组设置',
13: '会员搜索设置',
14: '会员详情设置',
15: '会员标签设置',
151: '同步记录',
2: '我的顾客列表'
},
navFrontPath: {
11: '/memberShowSet',
12: '/memberShowSet',
13: '/memberShowSet',
14: '/memberShowSet',
15: '/memberShowSet',
151: '/memberTagSet',
2: '/memberShowSet',
21: '/myCustomerList'
},
activeBrand: '', // 商户(品牌) id activeBrand: '', // 商户(品牌) id
activeGroup: '', // 商户(品牌) groupId activeGroup: '', // 商户(品牌) groupId
expiredFlag: false expiredFlag: false,
loading: true
}; };
}, },
computed: {}, computed: {},
methods: { methods: {
checkTagTab() {
let para = {
enterpriseId: this.activeBrand
};
let list = [
{
tabId: '1',
tabName: '会员基础设置',
icon: 'iconjichushezhi',
onlyIconActive: false,
children: [
{
tabId: '11',
tabName: '会员展示设置',
icon: ''
},
{
tabId: '12',
tabName: '会员分组设置',
icon: ''
},
{
tabId: '13',
tabName: '会员搜索设置',
icon: ''
},
{
tabId: '14',
tabName: '会员详情设置',
icon: ''
}
// {
// tabId: '15',
// tabName: '会员标签设置',
// icon: ''
// }
]
},
{
tabId: '2',
tabName: '我的顾客列表',
icon: 'icongukeguanliicon'
}
];
getRequest('/haoban-app-customer-web/tag/open-tag', para)
.then(res => {
this.loading = true;
if (!!res.data.result) {
list[0].children[4] = {
tabId: '15',
tabName: '会员标签设置',
icon: ''
};
} else if (this.$route.path === '/memberTagSet') {
this.$router.replace('memberShowSet');
}
this.$nextTick(() => {
this.tabListData = [].concat(list);
});
})
.finally(_ => (this.loading = false));
},
getExpired() { getExpired() {
const that = this; const that = this;
let para = { let para = {
...@@ -137,6 +230,7 @@ export default { ...@@ -137,6 +230,7 @@ export default {
that.activeBrand = id; that.activeBrand = id;
that.activeGroup = groupId; that.activeGroup = groupId;
that.getExpired(); // 到期通知 that.getExpired(); // 到期通知
that.checkTagTab();
}, },
/** /**
...@@ -171,87 +265,16 @@ export default { ...@@ -171,87 +265,16 @@ export default {
* 各路由返回 tabId * 各路由返回 tabId
*/ */
showTab(id) { showTab(id) {
let ids = [...arguments];
let that = this; let that = this;
that.activeTab = id; that.activeTab = id;
that.activeSelTab = id; that.activeSelTab = id;
that.tabListData.forEach(ele => { this.navpath = [...this.defaultNavpath];
if (ele.tabId == id) { if (ids.length) {
ele.onlyIconActive = false; ids.map(tabId => {
} this.navpath[this.navpath.length - 1].path = this.navFrontPath[tabId];
if (!!ele.children) { this.navpath.push({ name: this.navName[tabId], path: '' });
ele.children.forEach(el => { });
if (el.tabId == id) {
ele.onlyIconActive = true;
}
if (!!el.children) {
el.children.forEach(item => {
if (item.tabId == id) {
ele.onlyIconActive = true;
}
});
}
});
}
});
},
changeNavShow(val) {
const that = this;
if (val.path == '/addGroupTemplate') {
that.navpath = [
{
name: '首页',
path: '/index'
},
{
name: '我的顾客',
path: '/memberShowSet'
},
{
name: that.$route.query.templateId ? '编辑模板' : '新建模板',
path: ''
}
];
} else if (val.path == '/storeRangeSet') {
that.navpath = [
{
name: '首页',
path: '/index'
},
{
name: '我的顾客',
path: '/memberShowSet'
},
{
name: '门店范围设置',
path: ''
}
];
} else if (val.path == '/syncHistory') {
that.navpath = [
{
name: '首页',
path: '/index'
},
{
name: '我的顾客',
path: '/memberShowSet'
},
{
name: '同步历史',
path: ''
}
];
} else {
that.navpath = [
{
name: '首页',
path: '/index'
},
{
name: '我的顾客',
path: ''
}
];
} }
} }
}, },
...@@ -263,19 +286,9 @@ export default { ...@@ -263,19 +286,9 @@ export default {
activeGroup: function(newData, oldData) { activeGroup: function(newData, oldData) {
const that = this; const that = this;
that.activeGroup = newData; that.activeGroup = newData;
},
$route: {
handler: function(val, oldVal) {
const that = this;
that.changeNavShow(val);
},
// 深度观察监听
deep: true
} }
}, },
mounted() { mounted() {
let that = this;
that.changeNavShow(that.$route);
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
}, },
destroyed() { destroyed() {
...@@ -406,6 +419,7 @@ export default { ...@@ -406,6 +419,7 @@ export default {
.app-detail-wrap { .app-detail-wrap {
height: 100%; height: 100%;
background: #fff; background: #fff;
overflow: hidden;
} }
.common-set-wrap { .common-set-wrap {
height: 100%; height: 100%;
......
...@@ -29,8 +29,9 @@ ...@@ -29,8 +29,9 @@
</el-select> </el-select>
</div> </div>
<div> <div>
<el-checkbox v-model="overTimeSeeFlag" @change="saveGroupSet"></el-checkbox> <el-checkbox v-model="overTimeSeeFlag" @change="saveGroupSet" :disabled="$store.state.wxEnterpriseType">
<el-tooltip class="item" effect="dark" content="开启后,GIC中设置的好办端会员分组失效后,即使在GIC开启好办展示,好办移动端也不再展示该条分组" placement="top-start"> <span style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;" class="font-14 color-606266 m-r-20">会员分组失效后不展示</span></el-tooltip> <el-tooltip class="item" effect="dark" content="开启后,GIC中设置的好办端会员分组失效后,即使在GIC开启好办展示,好办移动端也不再展示该条分组" placement="top-start"> <span style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;margin-left:-4px;" class="font-14 color-606266 m-r-20">会员分组失效后不展示</span></el-tooltip>
</el-checkbox>
<el-button type="primary" :loading="loadingBtn" @click="toSync" :disabled="$store.state.wxEnterpriseType">立即同步</el-button> <el-button type="primary" :loading="loadingBtn" @click="toSync" :disabled="$store.state.wxEnterpriseType">立即同步</el-button>
<span v-if="syncDate" class="font-14 color-606266 p-r-10">最近一次同步时间:{{ syncDate | formatTimeStamp }}</span> <span v-if="syncDate" class="font-14 color-606266 p-r-10">最近一次同步时间:{{ syncDate | formatTimeStamp }}</span>
</div> </div>
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" :style="{ width: '100%' }" @selection-change="handleSelectionChange"> <el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" :style="{ width: '100%' }" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="45"> </el-table-column> <el-table-column type="selection" width="45"> </el-table-column>
<el-table-column width="25"> <el-table-column width="25">
<template slot="header" slot-scope="scope"> <template slot="header">
<el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start"> <el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start">
<span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span> <span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
<template slot-scope="scope"> </template> <template slot-scope="{ $index }"><p :key="$index"></p></template>
</el-table-column> </el-table-column>
<el-table-column label="会员姓名" width="120" show-overflow-tooltip> <el-table-column label="会员姓名" width="120" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.memberName || '--' }}</template> <template slot-scope="scope">{{ scope.row.memberName || '--' }}</template>
...@@ -163,21 +163,24 @@ export default { ...@@ -163,21 +163,24 @@ export default {
if (!!item.storeId) { if (!!item.storeId) {
return false; return false;
} }
that.departObj = item; // that.getSelectData(param);
that.showMember = false;
// 重新组装树形部门 // 重新组装树形部门
let copyData = JSON.parse(JSON.stringify(that.gicDataCopy)); let copyData = JSON.parse(JSON.stringify(that.gicDataCopy));
for (let i = 0; i < copyData.length; i++) { for (let i = 0; i < copyData.length; i++) {
if (that.departObj.parentGroupId == copyData[i].storeGroupId) { if (item.parentGroupId == copyData[i].storeGroupId) {
copyData[i].expand = true; copyData[i].expand = true;
if (copyData[i].parentGroupId != 0) { if (copyData[i].parentGroupId != 0) {
await that.setParent(copyData[i], copyData); await that.setParent(copyData[i], copyData);
} }
} }
} }
that.gicData = await that.treeData(JSON.parse(JSON.stringify(copyData))); let gicData = await that.treeData(JSON.parse(JSON.stringify(copyData)));
that.gicData[0].expand = true; gicData[0].expand = true;
that.showMember = false;
this.$nextTick(() => {
that.gicData = [].concat(gicData);
that.departObj = Object.assign({}, item);
});
}, },
/** /**
* 获取会员数据 * 获取会员数据
......
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2019-03-20 14:36:37
* @LastEditors: 无尘
* @LastEditTime: 2020-09-24 13:52:54
-->
<template>
<div class="app-detail-wrap">
<div class="task-set-content boder-box">
<div class="task-set-cell">
<div class="set-line-item flex">
<el-tooltip class="item" effect="dark" content="代理商户默认关闭双向呼叫功能,如需开通请联系达摩运营或实施进行开通" placement="top-start" :open-delay="200">
<span class="set-line-item_title text-right m-r-4"> <i style="cursor: pointer;font-style: normal;padding-bottom: 2px; border-bottom: 1px dashed rgb(47, 84, 235);" class="font-14 color-606266">不良评价拨打</i></span>
</el-tooltip>
<el-checkbox-group v-model="setObj.taskCallTypes"
><el-checkbox :label="item.value" v-for="item in options" :key="item.value">
<el-tooltip class="item" effect="dark" placement="top-start" :open-delay="200">
<template slot="content">
<p v-for="tip in item.tooltips" :key="tip">{{ tip }}</p>
</template>
<i :class="['tooltips', setObj.taskCallTypes.includes(item.value) ? 'color-303133' : 'color-606266']">{{ item.label }}</i>
</el-tooltip>
</el-checkbox>
</el-checkbox-group>
</div>
<div class="set-line-item">
<span class="set-line-item_title font-14 color-606266 text-right">任务分配:</span>
<el-radio style="margin-right: 5px;" v-model="setObj.distributeCustomerJudge" :label="1">{{ '' }}</el-radio
><el-tooltip class="item" effect="dark" content="勾选此项,不良评价回访任务将分配给产生该笔消费订单的所在门店店长" placement="top-start">
<span :class="['font-14 color-606266', setObj.distributeCustomerJudge == 1 ? 'color-303133' : 'color-606266']" style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">分配给消费门店店长</span>
</el-tooltip>
<el-radio style="margin-right: 5px;" class="p-l-40" v-model="setObj.distributeCustomerJudge" :label="2">{{ '' }}</el-radio
><el-tooltip class="item" effect="dark" content="勾选此项,不良评价回访任务将分配给产生该笔消费订单的会员的专属导购" placement="top-start">
<span :class="['font-14 ', setObj.distributeCustomerJudge == 2 ? 'color-303133' : 'color-606266']" style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">分配给专属导购</span>
</el-tooltip>
</div>
<div class="set-line-item">
<span class="set-line-item_title font-14 color-606266 text-right">逾期设置:</span>
<span class=" font-14 color-303133">不良评价回访下发后</span>
<el-input-number controls-position="right" class="w-100" v-model="setObj.overDayJudge" placeholder="请输入内容" :step="1" :step-strictly="true" :min="0" :max="99999999"></el-input-number><span class="font-14 color-606266 p-l-10"></span>
<span class="font-14 color-909399 p-l-15">注:0天即为当天下发,当天完成,1天即为当天下发,次日24:00之前完成</span>
</div>
<!-- <div v-if="setObj.taskCallTypes == 2" class="set-line-item">
<span class="set-line-item_title font-14 color-606266 text-right">放弃任务条件:</span><span class="font-14 color-606266">不良评价下发后 </span><el-input-number controls-position="right" class="w-100" v-model="setObj.giveUpJudge" placeholder="请输入内容" :step="1" :step-strictly="true" :min="0" :max="99999999"></el-input-number><span class="font-14 color-606266 p-l-10">次</span>
<span class="font-14 color-606266">呼叫后无响应,导购可放弃该条任务</span>
</div>-->
<!-- <div class="set-line-item">
<span class="set-line-item_title font-14 color-606266 text-right">不良评价释放:</span><el-checkbox v-model="setObj.relaxTaskJudge"></el-checkbox
><el-tooltip class="item" effect="dark" content="开启后,导购换绑导购code后,原导购code任务将被释放给门店店长" placement="top-start">
<span :class="['font-14 color-606266 m-l-10']" style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">释放未绑定/解绑导购任务</span>
</el-tooltip>
</div> -->
<div class="set-line-item">
<span class="set-line-item_title font-14 color-606266 text-right"></span>
<el-button type="primary" :loading="loadingBtn" @click="saveSet" :disabled="$store.state.wxEnterpriseType">保存</el-button>
</div>
</div>
<div class="task-set-save m-t-30"></div>
</div>
</div>
</template>
<script>
import { _debounce } from '@/common/js/public';
import errMsg from '@/common/js/error';
import showMsg from '@/common/js/showmsg';
import { postRequest } from '@/api/api';
export default {
name: 'reviewed',
props: {
brandId: {
type: String,
default() {
return '';
}
}
},
data() {
return {
activeTab: '1',
activeBrand: this.brandId, // 商户(品牌) id
options: [
{
label: '企业电话',
value: '1',
tooltips: ['1.对接第三方呼叫中心,外呼显示第三方号码,可监控通话状态。费用结算及通话记录存储于GIC计费中心;', '2.若任务创建时无双向呼叫权限,此项设置勾选也不生效']
},
{
label: '私人电话',
value: '2',
tooltips: ['导购手机呼叫,无法监控通话状态。呼叫结算费用由导购手机自费']
},
{
label: '企微会话',
value: '3',
tooltips: ['通过企微会话完成任务,无法监控通话状态。不产生通话费用']
}
],
activeId: '1',
setObj: {
taskCallTypes: [],
taskType: 0,
overDayJudge: '3',
distributeTypeJudge: '',
distributeCustomerJudge: 1,
giveUpJudge: ''
},
loadingBtn: false
};
},
computed: {},
methods: {
/**
* 保存
*/
saveSet: _debounce(function() {
const that = this;
that.loadingBtn = true;
that.postSave();
}, 500),
postSave() {
const that = this;
let para = {
enterpriseId: that.activeBrand,
taskCallTypes: that.setObj.taskCallTypes.join(','),
taskType: 0,
overDayJudge: that.setObj.overDayJudge,
giveUpJudge: that.setObj.giveUpJudge,
distributeTypeJudge: that.setObj.distributeTypeJudge,
distributeCustomerJudge: that.setObj.distributeCustomerJudge,
relaxTaskJudge: that.setObj.relaxTaskJudge ? 1 : 0
};
postRequest('/haoban-app-tel-task-three-web/setting/save-task-setting', para)
.then(res => {
let resData = res.data;
that.loadingBtn = false;
if (resData.errorCode == 1) {
showMsg.showmsg('保存成功', 'success');
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.loadingBtn = false;
that.$message.error({
duration: 1000,
message: error.message
});
});
},
/**
* 获取设置数据
*/
getData() {
let that = this;
let para = {
enterpriseId: that.activeBrand,
taskType: 0
};
postRequest('/haoban-app-tel-task-three-web/setting/find-task-setting', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
resData.result.relaxTaskJudge = resData.result.relaxTaskJudge == 1 ? true : false;
const taskCallTypes = typeof resData.result.taskCallTypes === 'string' ? resData.result.taskCallTypes.split(',') : [];
that.setObj = Object.assign({}, resData.result, { taskCallTypes });
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
}
},
watch: {
brandId: function(newData, oldData) {
const that = this;
if (!!newData) {
that.activeBrand = newData;
that.getData();
}
}
},
mounted() {
let that = this;
document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '2');
if (!!that.brandId) {
that.getData();
}
},
destroyed() {
document.documentElement.style.backgroundColor = '#fff';
},
components: {}
};
</script>
<style type="text/scss" lang="scss" scoped>
.w-100 {
width: 100px;
}
.w-240 {
width: 240px;
}
.p-l-3 {
padding-left: 3px;
}
.m-r-4 {
margin-right: 4px;
}
.p-l-40 {
padding-left: 40px;
}
.task-set-content {
padding: 30px;
.task-set-cell {
/* padding: 30px 0; */
.el-date-editor.el-input {
width: 118px;
}
}
.set-line-item {
margin-bottom: 20px;
.set-line-item_title {
display: inline-block;
width: 110px;
}
}
.set-long-tip {
display: inline-block;
vertical-align: middle;
max-width: 600px;
line-height: 16px;
white-space: pre-wrap;
}
}
.tooltips {
cursor: pointer;
font-style: normal;
padding-bottom: 2px;
border-bottom: 1px dashed rgb(47, 84, 235);
font-size: 14px;
}
</style>
...@@ -51,7 +51,17 @@ export default { ...@@ -51,7 +51,17 @@ export default {
}, },
{ {
name: '订单评价', name: '订单评价',
path: '' path: '/evaluate-set'
}
],
defaultNavpath: [
{
name: '首页',
path: '/index'
},
{
name: '订单评价',
path: '/evaluate-set'
} }
], ],
tabListData: [ tabListData: [
...@@ -59,8 +69,17 @@ export default { ...@@ -59,8 +69,17 @@ export default {
tabId: '1', tabId: '1',
tabName: '订单评价设置', tabName: '订单评价设置',
icon: 'iconshangpinshezhi' icon: 'iconshangpinshezhi'
},
{
tabId: '2',
tabName: '不良评价回访设置',
icon: 'icondingdan_pingjia'
} }
], ],
navName: {
1: '订单评价设置',
2: '不良评价回访设置'
},
activeBrand: '', // 商户(品牌) id activeBrand: '', // 商户(品牌) id
activeGroup: '', // 商户(品牌) groupId activeGroup: '', // 商户(品牌) groupId
expiredFlag: false expiredFlag: false
...@@ -116,6 +135,9 @@ export default { ...@@ -116,6 +135,9 @@ export default {
case '1': case '1':
that.changeRoute(`evaluate-set`); that.changeRoute(`evaluate-set`);
break; break;
case '2':
that.changeRoute(`bad-evaluate`);
break;
} }
}, },
...@@ -123,28 +145,16 @@ export default { ...@@ -123,28 +145,16 @@ export default {
* 各路由返回 tabId * 各路由返回 tabId
*/ */
showTab(id) { showTab(id) {
let ids = [...arguments];
let that = this; let that = this;
that.activeTab = id; that.activeTab = id;
that.activeSelTab = id; that.activeSelTab = id;
that.tabListData.forEach(ele => { this.navpath = [...this.defaultNavpath];
if (ele.tabId == id) { if (ids.length) {
ele.onlyIconActive = false; ids.map(tabId => {
} this.navpath.push({ name: this.navName[tabId], path: '' });
if (!!ele.children) { });
ele.children.forEach(el => { }
if (el.tabId == id) {
ele.onlyIconActive = true;
}
if (!!el.children) {
el.children.forEach(item => {
if (item.tabId == id) {
ele.onlyIconActive = true;
}
});
}
});
}
});
} }
}, },
watch: { watch: {
......
...@@ -738,7 +738,7 @@ export default { ...@@ -738,7 +738,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 4px; border-radius: 4px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
.count-number { .count-number {
......
...@@ -783,7 +783,7 @@ export default { ...@@ -783,7 +783,7 @@ export default {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
border-radius: 4px; border-radius: 4px;
border: 1px solid #c4c6cf; border: 1px solid #dcdfe6;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
.count-number { .count-number {
......
...@@ -367,7 +367,7 @@ export default { ...@@ -367,7 +367,7 @@ export default {
mounted() { mounted() {
let that = this; let that = this;
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '1'); that.$emit('showTab', '1', '12');
if (!!that.brandId) { if (!!that.brandId) {
that.yearMonth = that.$route.query.yearMonth; that.yearMonth = that.$route.query.yearMonth;
that.getData(); that.getData();
......
...@@ -53,7 +53,17 @@ export default { ...@@ -53,7 +53,17 @@ export default {
}, },
{ {
name: '指标管理', name: '指标管理',
path: '' path: '/monthList'
}
],
defaultNavpath: [
{
name: '首页',
path: '/index'
},
{
name: '指标管理',
path: '/monthList'
} }
], ],
tabListData: [ tabListData: [
...@@ -68,6 +78,23 @@ export default { ...@@ -68,6 +78,23 @@ export default {
icon: 'iconrenwu' icon: 'iconrenwu'
} }
], ],
navName: {
1: '月指标',
11: '门店月指标',
111: '导购月指标详情',
12: '商户日权重月指标',
2: '月指标任务',
21: '月指标任务详情'
},
navFrontPath: {
1: '/monthList',
11: '/monthList',
111: '/storeMonthTask',
12: '/monthList',
13: '/monthList',
2: '/monthList',
21: '/monthTask'
},
activeBrand: '', // 商户(品牌) id activeBrand: '', // 商户(品牌) id
activeGroup: '', // 商户(品牌) groupId activeGroup: '', // 商户(品牌) groupId
expiredFlag: false expiredFlag: false
...@@ -133,103 +160,20 @@ export default { ...@@ -133,103 +160,20 @@ export default {
* 各路由返回 tabId * 各路由返回 tabId
*/ */
showTab(id) { showTab(id) {
let ids = [...arguments];
let that = this; let that = this;
that.activeTab = id; that.activeTab = id;
that.activeSelTab = id; that.activeSelTab = id;
that.tabListData.forEach(ele => { this.navpath = [...this.defaultNavpath];
if (ele.tabId == id) { if (ids.length) {
ele.onlyIconActive = false; ids.map(tabId => {
} this.navpath[this.navpath.length - 1].path = tabId === '111' ? `${this.navFrontPath[tabId]}?yearMonth=${this.$route.query.yearMonth}` : this.navFrontPath[tabId];
if (!!ele.children) { this.navpath.push({ name: this.navName[tabId], path: '' });
ele.children.forEach(el => { });
if (el.tabId == id) {
ele.onlyIconActive = true;
}
if (!!el.children) {
el.children.forEach(item => {
if (item.tabId == id) {
ele.onlyIconActive = true;
}
});
}
});
}
});
},
changeNavShow(val) {
const that = this;
if (val.path == '/storeMonthTask') {
that.navpath = [
{
name: '首页',
path: '/index'
},
{
name: '指标管理',
path: '/monthList'
},
{
name: '门店月指标',
path: ''
}
];
} else if (val.path == '/salerMonthDetail') {
that.navpath = [
{
name: '首页',
path: '/index'
},
{
name: '指标管理',
path: '/monthList'
},
{
name: '门店月指标',
path: `storeMonthTask?yearMonth=${this.$route.query.yearMonth}`
},
{
name: '导购月指标详情',
path: ''
}
];
} else if (val.path == '/companyDaySet') {
that.navpath = [
{
name: '首页',
path: '/index'
},
{
name: '指标管理',
path: '/monthList'
},
{
name: '商户日权重',
path: ''
}
];
} else {
that.navpath = [
{
name: '首页',
path: '/index'
},
{
name: '指标管理',
path: ''
}
];
} }
} }
}, },
watch: { watch: {
$route: {
handler: function(val, oldVal) {
const that = this;
that.changeNavShow(val);
},
// 深度观察监听
deep: true
},
activeBrand: function(newData, oldData) { activeBrand: function(newData, oldData) {
const that = this; const that = this;
that.activeBrand = newData; that.activeBrand = newData;
...@@ -240,8 +184,6 @@ export default { ...@@ -240,8 +184,6 @@ export default {
} }
}, },
mounted() { mounted() {
const that = this;
that.changeNavShow(that.$route);
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
}, },
destroyed() { destroyed() {
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange"> <el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="45" :selectable="selectInit"> </el-table-column> <el-table-column type="selection" width="45" :selectable="selectInit"> </el-table-column>
<el-table-column width="25"> <el-table-column width="25">
<template slot="header" slot-scope="scope"> <template slot="header">
<el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start"> <el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start">
<span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span> <span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
...@@ -35,7 +35,9 @@ ...@@ -35,7 +35,9 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
<template slot-scope="scope"> </template> <template slot-scope="scope"
><p style="display:none">{{ scope.$index }}</p></template
>
</el-table-column> </el-table-column>
<el-table-column label="指派对象" width="260"> <el-table-column label="指派对象" width="260">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -234,7 +236,7 @@ export default { ...@@ -234,7 +236,7 @@ export default {
let startDate = that.$route.query.startDate; let startDate = that.$route.query.startDate;
let endDate = that.$route.query.endDate; let endDate = that.$route.query.endDate;
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '2'); that.$emit('showTab', '2','21');
that.activeBrand = that.brandId; that.activeBrand = that.brandId;
that.conditionObj.storeId = that.$route.query.storeId; that.conditionObj.storeId = that.$route.query.storeId;
that.conditionObj.dateRange = endDate ? [startDate, endDate] : []; that.conditionObj.dateRange = endDate ? [startDate, endDate] : [];
...@@ -467,9 +469,6 @@ export default { ...@@ -467,9 +469,6 @@ export default {
} }
} }
}, },
activated() {
this.init();
},
mounted() { mounted() {
this.init(); this.init();
}, },
......
...@@ -33,8 +33,8 @@ ...@@ -33,8 +33,8 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="总计=门店月指标" width="418px"> <el-table-column label="总计=门店月指标" width="418px">
<template slot-scope="scope"> <template slot-scope="{ $index }">
<div><span class="font-14 color-606266 text-left">总计</span><span class=" p-l-175 font-14 color-606266 text-left">门店月指标</span></div> <div :key="$index"><span class="font-14 color-606266 text-left">总计</span><span class=" p-l-175 font-14 color-606266 text-left">门店月指标</span></div>
<div style="margin-top: 4px;"> <div style="margin-top: 4px;">
<el-input class="w-161" v-model="performanceSum" disabled> <el-input class="w-161" v-model="performanceSum" disabled>
<i slot="prefix" style="font-style: normal;position: absolute;top: 4px;left: 10px;"></i> <i slot="prefix" style="font-style: normal;position: absolute;top: 4px;left: 10px;"></i>
...@@ -247,7 +247,7 @@ export default { ...@@ -247,7 +247,7 @@ export default {
mounted() { mounted() {
let that = this; let that = this;
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '1'); that.$emit('showTab', '1', '11', '111');
if (!!that.brandId) { if (!!that.brandId) {
that.clerkObj.yearMonth = that.$route.query.yearMonth; that.clerkObj.yearMonth = that.$route.query.yearMonth;
......
...@@ -322,7 +322,7 @@ export default { ...@@ -322,7 +322,7 @@ export default {
mounted() { mounted() {
let that = this; let that = this;
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '1'); that.$emit('showTab', '1', '11');
that.activeBrand = that.brandId; that.activeBrand = that.brandId;
that.activeGroup = that.activeGroupId; that.activeGroup = that.activeGroupId;
that.conditionObj.storeId = that.$route.query.storeId; that.conditionObj.storeId = that.$route.query.storeId;
......
...@@ -51,6 +51,10 @@ export default { ...@@ -51,6 +51,10 @@ export default {
}, },
{ {
name: '商品中心', name: '商品中心',
path: '/goodsShowSet'
},
{
name: '商品展示设置',
path: '' path: ''
} }
], ],
...@@ -126,25 +130,6 @@ export default { ...@@ -126,25 +130,6 @@ export default {
let that = this; let that = this;
that.activeTab = id; that.activeTab = id;
that.activeSelTab = id; that.activeSelTab = id;
that.tabListData.forEach(ele => {
if (ele.tabId == id) {
ele.onlyIconActive = false;
}
if (!!ele.children) {
ele.children.forEach(el => {
if (el.tabId == id) {
ele.onlyIconActive = true;
}
if (!!el.children) {
el.children.forEach(item => {
if (item.tabId == id) {
ele.onlyIconActive = true;
}
});
}
});
}
});
} }
}, },
watch: { watch: {
......
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2019-03-20 14:36:37
* @LastEditors: 无尘
* @LastEditTime: 2020-05-11 10:44:48
-->
<template>
<div class="app-detail-wrap">
<div class="task-set-content boder-box">
<el-form :model="formData" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
<el-form-item label="任务标题" prop="taskTitle">
<limitInput :inputWidth="372" :disflag="$route.query.sessionTaskId ? true : false" :inputValue.sync="formData.taskTitle" :getByType="'word'" :holder="'请输入任务标题'" :maxLength="20"> </limitInput>
</el-form-item>
<el-form-item label="任务内容" prop="taskContent">
<limit-textarea :inputWidth="372" :inputValue.sync="formData.taskContent" :holder="'请输入任务内容'" :getByType="'word'" :maxLength="200"></limit-textarea>
</el-form-item>
<!--<el-form-item label="使用说明" prop="useDescript">
<el-radio v-model="formData.radio" label="1">所有好友会员</el-radio>
<el-radio v-model="formData.radio" label="2">非会员好友</el-radio>
</el-form-item>-->
<el-form-item label="添加好友时间" prop="addTimeType">
<el-radio v-model="formData.addTimeType" label="1">近一个月</el-radio>
<el-radio v-model="formData.addTimeType" label="2">近一周</el-radio>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">确认{{ $route.query.sessionTaskId ? '编辑' : '新建' }}</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import limitInput from '@/components/limit-input.vue';
import limitTextarea from '@/components/limit-textarea.vue';
import { _debounce } from '@/common/js/public';
import errMsg from '@/common/js/error';
import showMsg from '@/common/js/showmsg';
import { postRequest } from '@/api/api';
export default {
name: 'reviewed',
props: {
brandId: {
type: String,
default() {
return '';
}
}
},
data() {
return {
activeTab: '1',
activeId: '1',
activeBrand: this.brandId, // 商户(品牌) id
wxEnterpriseId: localStorage.getItem('userInfos') ? JSON.parse(localStorage.getItem('userInfos')).wxEnterpriseId : '',
createName: !!localStorage.getItem('userInfos') && !!JSON.parse(localStorage.getItem('userInfos')).staffDTO ? JSON.parse(localStorage.getItem('userInfos')).staffDTO.staffName : '',
formData: {
taskTitle: '',
taskContent: '',
addTimeType: '1'
},
rules: {
taskTitle: [{ required: true, message: '请输入任务标题', trigger: 'blur' }],
taskContent: [{ required: true, message: '请输入任务内容', trigger: 'blur' }]
}
};
},
computed: {},
methods: {
/**
* 保存
*/
submitForm: _debounce(function(formName) {
let that = this;
that.$refs[formName].validate(valid => {
if (valid) {
that.postSave();
}
});
}, 500),
postSave() {
let that = this;
let para = {
taskTitle: that.formData.taskTitle,
taskContent: that.formData.taskContent,
addTimeType: that.formData.addTimeType,
wxEnterpriseId: that.wxEnterpriseId,
createName: that.createName
};
postRequest('/haoban-app-tel-task-three-web/create-session-task', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
showMsg.showmsg('保存成功', 'success');
that.$router.push('/taskList');
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
},
/**
* 获取设置数据
*/
getData() {
let that = this;
let para = {
enterpriseId: that.activeBrand,
taskType: 1
};
postRequest('/haoban-app-tel-task-three-web/find-task-setting', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
resData.result.relaxTaskJudge = resData.result.relaxTaskJudge == 1 ? true : false;
that.setObj = resData.result;
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
}
},
watch: {
brandId: function(newData, oldData) {
const that = this;
if (!!newData) {
that.activeBrand = newData;
}
}
},
mounted() {
let that = this;
document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '3');
if (!!that.brandId) {
// that.getData();
}
},
destroyed() {
document.documentElement.style.backgroundColor = '#fff';
},
components: { limitInput, limitTextarea }
};
</script>
<style type="text/scss" lang="scss" scoped>
.w-100 {
width: 100px;
}
.vertical-top {
vertical-align: top;
}
.task-set-content {
padding: 30px;
.task-set-cell {
/* padding: 30px 0; */
.el-date-editor.el-input {
width: 118px;
}
}
.set-line-item {
margin-bottom: 20px;
table {
tr {
td {
padding: 17px 30px;
border: 1px solid #ebeef5;
}
}
}
.set-line-item_title {
display: inline-block;
width: 120px;
&.w-320 {
width: 320px;
i {
font-style: normal;
padding-left: 10px;
}
}
}
}
}
</style>
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2019-03-20 14:36:37
* @LastEditors: 无尘
* @LastEditTime: 2020-06-08 13:40:59
-->
<template>
<div class="app-detail-wrap">
<div class="task-set-content boder-box">
<div class="task-set-cell">
<div class="set-line-item"><span class="set-line-item_title font-14 color-606266 text-right">任务归属:</span><el-radio v-model="setObj.taskBelong" label="1">成员所属专属导购 > 协管导购,若无专属导购,则随机分配给一名协管导购</el-radio></div>
<div class="set-line-item">
<span class="set-line-item_title font-14 color-606266 text-right">逾期设置:</span><span class="font-14 color-606266">话务任务下发后 </span><el-input-number controls-position="right" class="w-100" v-model="setObj.overDayJudge" placeholder="请输入内容" :step="1" :step-strictly="true" :min="0" :max="99999999"></el-input-number><span class="font-14 color-606266 p-l-10"></span>
<span class="font-14 color-606266">注:0天即为当天下发,当天完成,1天即为当天下发,次日24:00之前完成</span>
</div>
<div class="set-line-item">
<span class="set-line-item_title font-14 color-606266 text-right"></span>
<el-button type="primary" :loading="loadingBtn" @click="saveSet">保存并用于全部商户</el-button>
</div>
</div>
<div class="task-set-save m-t-30">
<!-- <el-button type="primary" @click="saveSet">保 存</el-button> -->
</div>
</div>
</div>
</template>
<script>
import { _debounce } from '@/common/js/public';
import errMsg from '@/common/js/error';
import showMsg from '@/common/js/showmsg';
import { postRequest } from '@/api/api';
export default {
name: 'reviewed',
props: {
brandId: {
type: String,
default() {
return '';
}
}
},
data() {
return {
activeTab: '1',
activeId: '1',
activeBrand: this.brandId, // 商户(品牌) id
wxEnterpriseId: localStorage.getItem('userInfos') ? JSON.parse(localStorage.getItem('userInfos')).wxEnterpriseId : '',
setObj: {
taskBelong: '1',
overDayJudge: ''
},
loadingBtn: false
};
},
computed: {},
methods: {
/**
* 保存
*/
saveSet: _debounce(function() {
let that = this;
that.loadingBtn = true;
that.postSave();
}, 500),
postSave() {
let that = this;
let para = {
taskBelong: that.setObj.taskBelong,
overDayJudge: that.setObj.overDayJudge,
wxEnterpriseId: that.wxEnterpriseId
};
postRequest('/haoban-app-tel-task-three-web/setting/save-session-task-setting', para)
.then(res => {
let resData = res.data;
that.loadingBtn = false;
if (resData.errorCode == 1) {
showMsg.showmsg('保存成功', 'success');
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.loadingBtn = false;
that.$message.error({
duration: 1000,
message: error.message
});
});
},
/**
* 获取设置数据
*/
getData() {
let that = this;
let para = {
wxEnterpriseId: that.wxEnterpriseId
};
postRequest('/haoban-app-tel-task-three-web/setting/find-session-task-setting', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
if (!!resData.result) {
resData.result.taskBelong = String(resData.result.taskBelong);
} else {
resData.result = {};
resData.result.taskBelong = '1';
resData.result.overDayJudge = '';
}
that.setObj = resData.result;
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
}
},
watch: {
brandId: function(newData, oldData) {
const that = this;
if (!!newData) {
that.activeBrand = newData;
that.getData();
}
}
},
mounted() {
let that = this;
document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '22');
that.getData();
},
destroyed() {
document.documentElement.style.backgroundColor = '#fff';
},
components: {}
};
</script>
<style type="text/scss" lang="scss" scoped>
.w-100 {
width: 100px;
}
.vertical-top {
vertical-align: top;
}
.task-set-content {
padding: 30px;
.task-set-cell {
/* padding: 30px 0; */
.el-date-editor.el-input {
width: 118px;
}
}
.set-line-item {
margin-bottom: 20px;
table {
tr {
td {
padding: 17px 30px;
border: 1px solid #ebeef5;
}
}
}
.set-line-item_title {
display: inline-block;
width: 120px;
&.w-320 {
width: 320px;
i {
font-style: normal;
padding-left: 10px;
}
}
}
}
}
</style>
...@@ -158,7 +158,7 @@ ...@@ -158,7 +158,7 @@
<el-table-column prop="" label="AppID" width="239"> <el-table-column prop="" label="AppID" width="239">
<template slot="header"> <template slot="header">
<el-tooltip class="item" effect="dark" placement="top"> <el-tooltip class="item" effect="dark" placement="top">
<div slot="content">如何查看AppId:<a href="https://jingyan.baidu.com/article/95c9d20d0545f9ec4e75612d.html">https://jingyan.baidu.com/article/95c9d20d0545f9ec4e75612d.html</a></div> <div slot="content">如何查看AppId:<a href="https://jingyan.baidu.com/article/95c9d20d0545f9ec4e75612d.html" target="blank">https://jingyan.baidu.com/article/95c9d20d0545f9ec4e75612d.html</a></div>
<span style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">AppId</span> <span style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">AppId</span>
</el-tooltip> </el-tooltip>
</template> </template>
......
...@@ -168,6 +168,7 @@ export default { ...@@ -168,6 +168,7 @@ export default {
that.brandListData.forEach(ele => { that.brandListData.forEach(ele => {
if (ele.enterpriseId == val) { if (ele.enterpriseId == val) {
that.activeBrand = ele.enterpriseId; that.activeBrand = ele.enterpriseId;
sessionStorage.setItem('userInfoBrandId', val);
} }
}); });
that.getLoginData(); that.getLoginData();
...@@ -185,7 +186,7 @@ export default { ...@@ -185,7 +186,7 @@ export default {
if (resData.errorCode == 1) { if (resData.errorCode == 1) {
if (!!resData.result && !!resData.result.length) { if (!!resData.result && !!resData.result.length) {
that.brandListData = resData.result; that.brandListData = resData.result;
that.activeBrand = !!that.$route.query.brandId ? that.$route.query.brandId : that.brandListData[0].enterpriseId; that.activeBrand = sessionStorage.getItem('userInfoBrandId') ? sessionStorage.getItem('userInfoBrandId') : !!that.$route.query.brandId ? that.$route.query.brandId : that.brandListData[0].enterpriseId;
that.getLoginData(); that.getLoginData();
that.getTendData(); that.getTendData();
that.getAreaLoginData(); that.getAreaLoginData();
...@@ -309,15 +310,15 @@ export default { ...@@ -309,15 +310,15 @@ export default {
} }
}, },
watch: { watch: {
activeBrand: function(newData, oldData) { // activeBrand: function(newData, oldData) {
const that = this; // const that = this;
if (newData) { // if (newData) {
// that.getLoginData(); // // that.getLoginData();
// that.getTendData(); // // that.getTendData();
// that.getAreaLoginData(); // // that.getAreaLoginData();
} // }
that.activeBrand = newData; // that.activeBrand = newData;
} // }
}, },
mounted() { mounted() {
const that = this; const that = this;
......
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2019-03-20 14:36:37
* @LastEditors: 无尘
* @LastEditTime: 2020-08-26 10:05:42
-->
<template> <template>
<div class="my-customer-wrap common-set-wrap"> <div class="my-customer-wrap common-set-wrap">
<!-- <nav-crumb :navpath="navpath"> </nav-crumb> --> <!-- <nav-crumb :navpath="navpath"> </nav-crumb> -->
...@@ -22,10 +14,12 @@ ...@@ -22,10 +14,12 @@
</div> </div>
</div> </div>
</div> </div>
<div class="table-condition-search m-t-20"> <div class="table-condition-search m-t-20 flex flex-align-center">
<el-select class="w-103" v-model="pageParams.finishOverStatus" slot="prepend" placeholder="所有完成情况" @change="reFetch"> <span style="font-size:14px;margin-right:-4px;">创建时间:</span><el-date-picker prefix-icon="el-icon-time" :picker-options="pickerOptions" v-model="pageParams.date" @change="reFetch" :value-format="'yyyy-MM-dd'" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间"> </el-date-picker>
<el-select class="w-103 m-l-10" v-model="pageParams.finishOverStatus" slot="prepend" placeholder="所有完成情况" @change="reFetch">
<el-option :label="item.text" :value="item.id" v-for="item in filterOpts" :key="'filter' + item.id"></el-option> <el-option :label="item.text" :value="item.id" v-for="item in filterOpts" :key="'filter' + item.id"></el-option>
</el-select> </el-select>
<el-input placeholder="请输入任务标题" prefix-icon="el-icon-search" v-model="pageParams.taskTitle" class="w-260 m-l-10" @change="reFetch" clearable> </el-input>
</div> </div>
<div class="m-t-20"> <div class="m-t-20">
<el-table v-loading="loading" class="select-table" ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%;"> <el-table v-loading="loading" class="select-table" ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%;">
...@@ -59,7 +53,7 @@ ...@@ -59,7 +53,7 @@
<template slot-scope="scope"><span class="point" :style="'background:' + overdueStyle[scope.row.overdueStatus] + ';'"></span>{{ scope.row.overdueStatus === 1 ? '已逾期' : scope.row.overdueStatus === 2 ? '未逾期' : '' }}</template> <template slot-scope="scope"><span class="point" :style="'background:' + overdueStyle[scope.row.overdueStatus] + ';'"></span>{{ scope.row.overdueStatus === 1 ? '已逾期' : scope.row.overdueStatus === 2 ? '未逾期' : '' }}</template>
</el-table-column> </el-table-column>
<el-table-column label="完成情况" min-width="90"> <el-table-column label="完成情况" min-width="90">
<template slot-scope="scope"><span class="point" :style="'background:' + taskStyle[scope.row.taskStatus] + ';'"></span>{{ scope.row.taskStatus === 1 ? '未完成' : scope.row.overdueStatus === 2 ? '已完成' : '' }}</template> <template slot-scope="scope"><span v-if="scope.row.taskStatus" class="point" :style="'background:' + taskStyle[scope.row.taskStatus] + ';'"></span>{{ scope.row.taskStatus === 1 ? '未完成' : scope.row.taskStatus === 2 ? '已完成' : '' }}</template>
</el-table-column> </el-table-column>
<el-table-column label="完成详情" min-width="280"> <el-table-column label="完成详情" min-width="280">
<template slot-scope="scope"> 待发送:{{ scope.row.waitSendCount }},已发送:{{ scope.row.successCount }},发送失败:{{ scope.row.failCount }} </template> <template slot-scope="scope"> 待发送:{{ scope.row.waitSendCount }},已发送:{{ scope.row.successCount }},发送失败:{{ scope.row.failCount }} </template>
...@@ -211,6 +205,11 @@ export default { ...@@ -211,6 +205,11 @@ export default {
enterpriseId: sessionStorage.getItem('userInfoBrandId'), enterpriseId: sessionStorage.getItem('userInfoBrandId'),
storeId: that.$route.params.id storeId: that.$route.params.id
}; };
if (Array.isArray(para.date) && para.date.length === 2) {
para.startTime = para.date[0];
para.endTime = para.date[1];
delete para.date;
}
if (this.$route.query.ecmPlanId) { if (this.$route.query.ecmPlanId) {
para.ecmPlanId = this.$route.query.ecmPlanId; para.ecmPlanId = this.$route.query.ecmPlanId;
} }
...@@ -304,9 +303,9 @@ export default { ...@@ -304,9 +303,9 @@ export default {
that.getTableList(); that.getTableList();
}); });
if (that.$route.query.tab) { if (that.$route.query.tab) {
that.$emit('showTab', 2); that.$emit('showTab', '212', '2121', '21211');
} else { } else {
that.$emit('showTab', 1); that.$emit('showTab', '211', '2111');
} }
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
}, },
......
...@@ -21,13 +21,17 @@ ...@@ -21,13 +21,17 @@
</el-popover> </el-popover>
</div> </div>
<div class="table-condition-search m-t-20"> <div class="table-condition-search m-t-20">
<el-input placeholder="请输入门店名称" prefix-icon="el-icon-search" v-model="pageParams.storeName" class="w-260" @change="reFetch" clearable @clear="clearInput"> </el-input> <el-input placeholder="请输入门店名称" prefix-icon="el-icon-search" v-model="pageParams.storeName" class="w-260" @change="reFetch" clearable> </el-input>
<gic-select-group :brandId="brandId" class="m-l-10" :width="213" :selectData="pageParams.storeGroup" @checkGroupIds="checkGroupIds"> </gic-select-group>
<el-date-picker class="m-l-10" prefix-icon="el-icon-time" :picker-options="pickerOptions" v-model="pageParams.date" @change="reFetch" :value-format="'yyyy-MM-dd'" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间"> </el-date-picker> <el-date-picker class="m-l-10" prefix-icon="el-icon-time" :picker-options="pickerOptions" v-model="pageParams.date" @change="reFetch" :value-format="'yyyy-MM-dd'" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间"> </el-date-picker>
</div> </div>
<div class="m-t-20"> <div class="m-t-20">
<el-table v-loading="loading" class="select-table" ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%;"> <el-table v-loading="loading" class="select-table" ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%;">
<el-table-column label="门店名称" show-overflow-tooltip> <el-table-column label="门店名称" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.storeName || '--' }}</template> <template slot-scope="scope"
>{{ scope.row.storeName || '--' }}
<p style="color:#909399">{{ scope.row.storeCode }}</p>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="" label="任务总数"> <el-table-column prop="" label="任务总数">
<template slot-scope="scope">{{ scope.row.taskCnt || '--' }}</template> <template slot-scope="scope">{{ scope.row.taskCnt || '--' }}</template>
...@@ -46,7 +50,7 @@ ...@@ -46,7 +50,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="" label="操作" width="150"> <el-table-column prop="" label="操作" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click="showDetail(scope.row)">任务详情</el-button> <el-button type="text" @click="showDetail(scope.row)">查看详情</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -62,6 +66,7 @@ ...@@ -62,6 +66,7 @@
</div> </div>
</template> </template>
<script> <script>
import gicSelectGroup from '@/components/common/gic-select-group.vue';
import navCrumb from '@/components/nav/nav.vue'; import navCrumb from '@/components/nav/nav.vue';
import { getRequest } from '@/api/api'; import { getRequest } from '@/api/api';
import errMsg from '@/common/js/error'; import errMsg from '@/common/js/error';
...@@ -89,13 +94,18 @@ export default { ...@@ -89,13 +94,18 @@ export default {
path: '/index' path: '/index'
}, },
{ {
name: '销售线索', name: '营销任务',
path: '/trafficTaskSet'
},
{
name: '话务任务-话务任务设置',
path: '' path: ''
} }
], ],
pageParams: { pageParams: {
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20,
storeGroup: []
}, },
// 分页参数 // 分页参数
total: 0, total: 0,
...@@ -121,6 +131,11 @@ export default { ...@@ -121,6 +131,11 @@ export default {
}, },
computed: {}, computed: {},
methods: { methods: {
checkGroupIds: function(nodes) {
const that = this;
that.pageParams.storeGroup = nodes;
that.reFetch();
},
/** /**
* 路由跳转 * 路由跳转
*/ */
...@@ -167,6 +182,14 @@ export default { ...@@ -167,6 +182,14 @@ export default {
qywxEnterpriseId: JSON.parse(localStorage.getItem('userInfos')).wxEnterpriseId, qywxEnterpriseId: JSON.parse(localStorage.getItem('userInfos')).wxEnterpriseId,
taskType: 2 taskType: 2
}; };
if (that.pageParams.storeGroup) {
let storeGroups = [];
that.pageParams.storeGroup.forEach(ele => {
storeGroups.push(ele.storeGroupId);
});
delete para.storeGroup;
para.storeGroupIds = storeGroups.join(',') || '';
}
if (para.date) { if (para.date) {
para.startTime = para.date[0]; para.startTime = para.date[0];
para.endTime = para.date[1]; para.endTime = para.date[1];
...@@ -214,11 +237,11 @@ export default { ...@@ -214,11 +237,11 @@ export default {
}, },
mounted() { mounted() {
const that = this; const that = this;
if (this.brandId) that.getTableList(); that.getTableList();
if (this.$route.query.ecmPlanId) { if (this.$route.query.ecmPlanId) {
that.$emit('showTab', 2); that.$emit('showTab', '212', '2121');
} else { } else {
that.$emit('showTab', 1); that.$emit('showTab', '211');
} }
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
}, },
...@@ -226,7 +249,8 @@ export default { ...@@ -226,7 +249,8 @@ export default {
document.documentElement.style.backgroundColor = '#fff'; document.documentElement.style.backgroundColor = '#fff';
}, },
components: { components: {
navCrumb navCrumb,
gicSelectGroup
} }
}; };
</script> </script>
......
...@@ -215,7 +215,7 @@ export default { ...@@ -215,7 +215,7 @@ export default {
mounted() { mounted() {
const that = this; const that = this;
that.getTableList(); that.getTableList();
that.$emit('showTab', 2); that.$emit('showTab', 212);
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
}, },
destroyed() { destroyed() {
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</div> </div>
<div class="apps-content-right border-box"> <div class="apps-content-right border-box">
<transition name="fade" mode="out-in"> <transition name="fade" mode="out-in">
<router-view :brandId="activeBrand" :activeGroupId="activeGroup" :tabType="activeTab" @showTab="showTab"></router-view> <router-view :brandId="activeBrand" :activeGroupId="activeGroup" :tabType="activeTab" @showTab="showTab" @reNav="reNav"></router-view>
</transition> </transition>
</div> </div>
</div> </div>
...@@ -32,139 +32,213 @@ ...@@ -32,139 +32,213 @@
</div> </div>
</div> </div>
</div> </div>
<expired-dialog v-if="expiredFlag"></expired-dialog>
</div> </div>
</template> </template>
<script> <script>
import navCrumb from '@/components/nav/nav-app.vue'; import navCrumb from '@/components/nav/nav-app.vue';
import commonDetailLeft from '@/components/app/app-detail-left.vue'; import commonDetailLeft from '@/components/app/app-detail-left.vue';
import expiredDialog from '@/components/company/expired-dialog.vue';
import vueOfficeHeader from '@/components/vue-office-header'; import vueOfficeHeader from '@/components/vue-office-header';
import errMsg from '@/common/js/error';
import { getRequest } from '@/api/api';
export default { export default {
name: 'salesleads', name: 'salesleads',
data() { data() {
return { return {
bgHeight: window.screen.availHeight - 288 + 'px', bgHeight: window.screen.availHeight - 288 + 'px',
activeSelTab: '1', activeSelTab: '11',
activeTab: '1', activeTab: '11',
activeBrand: '', activeBrand: '',
activeGroup: '',
expiredFlag: false,
navpath: [ navpath: [
{ {
name: '首页', name: '首页',
path: '/index' path: '/index'
}, },
{ {
name: '销售线索', name: '营销任务',
path: '' path: '/trafficTaskSet'
}
],
defaultNavpath: [
{
name: '首页',
path: '/index'
},
{
name: '营销任务',
path: '/trafficTaskSet'
} }
], ],
tabListData: [ tabListData: [
// {
// tabId: '0',
// tabName: '销售线索记录',
// icon: 'iconjichushezhi',
// children: [
// {
// tabId: '1',
// tabName: '门店视图'
// },
// {
// tabId: '2',
// tabName: '计划视图'
// }
// ]
// },
// {
// tabId: '3',
// tabName: '销售线索设置',
// icon: 'iconribaoshezhi'
// }
{ {
tabId: '0', tabId: '1',
tabName: '群发任务记录', tabName: '话务任务',
icon: 'iconjichushezhi', icon: 'iconjichushezhi',
children: [ children: [
{ {
tabId: '1', tabId: '11',
tabName: '门店视图' tabName: '话务任务设置',
icon: 'iconribaoshezhi'
}, },
{ {
tabId: '2', tabId: '12',
tabName: '计划视图' tabName: '话务任务记录',
icon: 'iconribaoshezhi',
// collapsFlag: true, // 三级菜单手动设置默认展开
children: [
{
tabId: '121',
tabName: '门店视图'
},
{
tabId: '122',
tabName: '任务视图'
}
]
}
]
},
{
tabId: '2',
tabName: '群发任务',
icon: 'iconjichushezhi',
children: [
{
tabId: '21',
tabName: '群发任务记录',
icon: 'iconjichushezhi',
children: [
{
tabId: '211',
tabName: '门店视图'
},
{
tabId: '212',
tabName: '计划视图'
}
]
} }
] ]
} }
] ],
navName: {
11: '话务任务-话务任务设置',
121: '话务任务-话务任务记录-门店视图',
1211: '任务详情',
122: '话务任务-话务任务记录-任务视图',
1221: '任务门店详情',
12211: '任务详情',
211: '群发任务-群发任务记录-门店视图',
2111: '任务详情',
212: '群发任务-群发任务记录-计划视图',
2121: '任务门店详情',
21211: '任务详情'
},
navFrontPath: {
11: '/trafficTaskSet',
121: '/trafficTaskSet',
1211: '/taskRecord',
122: '/trafficTaskSet',
1221: '/taskView',
211: '/trafficTaskSet',
2111: '/grStoreList',
212: '/trafficTaskSet',
2121: '/grTaskList'
}
}; };
}, },
computed: {}, computed: {},
methods: { methods: {
// 处理路由跳转
toRouterView(val) { toRouterView(val) {
let that = this; let that = this;
// 模拟检查数据
// //有两个参数
//{
// name:,
// path:
//}
that.$router.push({ that.$router.push({
path: val.path path: val.path
}); });
}, },
/**
* 路由跳转
*/
changeRoute(path) { changeRoute(path) {
this.$router.push(path); this.$router.push(path);
}, },
/**
* 选择后返回tabId,做各路由判断
*/
setSelectTab(item) { setSelectTab(item) {
let that = this; let that = this;
that.activeTab = item.tabId; that.activeTab = item.tabId;
this.navpath[2] = { name: this.navName[item.tabId], path: '' };
switch (item.tabId) { switch (item.tabId) {
case '0': case '1':
that.changeRoute(`/trafficTaskSet`);
break;
case '11':
that.changeRoute(`/trafficTaskSet`);
break;
case '12':
that.changeRoute(`/taskRecord`);
break;
case '121':
that.changeRoute(`/taskRecord`);
break;
case '122':
that.changeRoute(`/taskView`);
break;
case '2':
that.changeRoute(`/grStoreList`); that.changeRoute(`/grStoreList`);
break; break;
case '1': case '21':
that.changeRoute(`/grStoreList`); that.changeRoute(`/grStoreList`);
break; break;
case '2': case '211':
that.changeRoute(`/grStoreList`);
break;
case '212':
that.changeRoute(`/grTaskList`); that.changeRoute(`/grTaskList`);
break; break;
} }
}, },
selectBrandId(val) {
this.activeBrand = val; selectBrandId(id, groupId) {
sessionStorage.setItem('userInfoBrandId', val); let that = this;
that.activeBrand = id;
that.activeGroup = groupId;
sessionStorage.setItem('userInfoBrandId', id);
that.getExpired(); // 到期通知
},
getExpired() {
const that = this;
let para = {
enterpriseId: that.activeBrand
};
getRequest('/haoban-manage3-web/enterprise-is-over', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
that.expiredFlag = resData.result;
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
}, },
/** /**
* 各路由返回 tabId * 各路由返回 tabId
*/ */
showTab(id) { showTab(id) {
let ids = [...arguments];
let that = this; let that = this;
that.activeTab = id; that.activeTab = id;
that.activeSelTab = id; that.activeSelTab = id;
that.tabListData.forEach(ele => { this.navpath = [...this.defaultNavpath];
if (ele.tabId == id) { if (ids.length) {
ele.onlyIconActive = false; ids.map(tabId => {
} this.navpath[this.navpath.length - 1].path = tabId === '21211' ? `/grStoreList?ecmPlanId=${this.$route.query.ecmPlanId}` : tabId === '12211' ? `/taskViewDetail?ecmId=${this.$route.query.ecmId}` : this.navFrontPath[tabId];
if (!!ele.children) { this.navpath.push({ name: this.navName[tabId], path: '' });
ele.children.forEach(el => { });
if (el.tabId == id) { }
ele.onlyIconActive = true;
}
if (!!el.children) {
el.children.forEach(item => {
if (item.tabId == id) {
ele.onlyIconActive = true;
}
});
}
});
}
});
} }
}, },
watch: { watch: {
...@@ -179,7 +253,8 @@ export default { ...@@ -179,7 +253,8 @@ export default {
} }
}, },
mounted() { mounted() {
// const that = this; this.activeBrand = sessionStorage.getItem('userInfoBrandId');
if (this.activeBrand) this.getExpired(); // 到期通知
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
}, },
destroyed() { destroyed() {
...@@ -188,7 +263,9 @@ export default { ...@@ -188,7 +263,9 @@ export default {
components: { components: {
navCrumb, navCrumb,
commonDetailLeft, commonDetailLeft,
vueOfficeHeader vueOfficeHeader,
expiredDialog,
errMsg
} }
}; };
</script> </script>
......
<template>
<div class="my-customer-wrap common-set-wrap">
<div class="right-content">
<div class="flex">
<p class="m-r-11 font-14 color-606266">电话方式选择:</p>
<div>
<el-checkbox-group v-model="callType">
<el-checkbox label="1">
<div class="m-b-21" style="display:inline-block;vertical-align:top;">
<p class="l-h-1 m-b-5">公司电话</p>
<p class="tip">1.对接第三方呼叫中心,外呼显示第三方号码,可监控通话状态。费用结算及通话记录存储于GIC计费中心</p>
<p class="tip">2.若任务创建时无双向呼叫权限,此项设置勾选也不生效</p>
</div>
</el-checkbox>
<el-checkbox label="2" class="m-b-24">
<div class="m-b-21" style="display:inline-block;vertical-align:top;">
<p class="l-h-1 m-b-5">私人电话</p>
<p class="tip">导购手机呼叫,无法监控通话状态。呼叫结算费用由导购手机自费</p>
</div>
</el-checkbox>
</el-checkbox-group>
<p><el-button type="primary" @click="submitForm" :loading="loading">保存</el-button><span class="font-14 color-909399 m-l-12">保存后立即生效,历史数据不变,后续下达的任务按新设置运行</span></p>
</div>
</div>
</div>
<!-- <vue-gic-footer></vue-gic-footer> -->
</div>
</template>
<script>
import navCrumb from '@/components/nav/nav.vue';
import { postRequest } from '@/api/api';
import errMsg from '@/common/js/error';
export default {
name: 'authMerchant',
props: {
brandId: {
type: String,
default() {
return '';
}
}
},
data() {
return {
bgHeight: window.screen.availHeight - 104 + 'px',
callType: [], // 0 : 未设置, 1 : 公司电话(双向呼叫), 2 : 私人电话, 多个请用逗号拼接
loading: false
};
},
computed: {},
methods: {
/**
* 路由跳转
* @param {path} path
*/
changeRoute(path) {
this.$router.push(path);
},
submitForm() {
const that = this;
if (that.loading === true) {
return false;
}
that.loading = true;
that
.$confirm('是否确认保存该设置?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
let para = {
enterpriseId: sessionStorage.getItem('userInfoBrandId'),
qywxEnterpriseId: JSON.parse(localStorage.getItem('userInfos')).wxEnterpriseId
};
if (that.callType.length) {
para.callType = that.callType.join(',');
} else {
para.callType = '0';
}
postRequest('/haoban-task-manage-web/market/clue/web/setting-update', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
that.$message.success({
duration: 1000,
message: '保存成功!'
});
that.loading = false;
that.getDeatil();
return false;
}
that.loading = false;
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.loading = false;
that.$message.error({
duration: 1000,
message: error.message
});
});
})
.catch(() => {
that.loading = false;
});
},
getDeatil() {
const that = this;
let para = {
enterpriseId: sessionStorage.getItem('userInfoBrandId'),
qywxEnterpriseId: JSON.parse(localStorage.getItem('userInfos')).wxEnterpriseId
};
postRequest('/haoban-task-manage-web/market/clue/web/get-setting', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
if (resData.result && resData.result.callType !== '0') {
that.callType = resData.result.callType.split(',');
} else {
that.callType = [];
}
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
}
},
watch: {
brandId(newV, oldV) {
this.getDeatil();
}
},
mounted() {
this.$emit('showTab', 3);
this.getDeatil();
document.documentElement.style.backgroundColor = '#f0f2f5';
},
destroyed() {
document.documentElement.style.backgroundColor = '#fff';
},
components: {
navCrumb
}
};
</script>
<style type="text/scss" lang="scss" scoped>
.right-content {
padding: 33px 0 0 50px;
}
.el-checkbox {
display: flex;
min-height: 22px;
>>> .el-checkbox__label {
padding-top: 1px;
}
}
.el-checkbox + .el-checkbox {
margin-left: 0;
}
.m-l-12 {
margin-left: 12px;
}
.m-r-11 {
margin-right: 11px;
}
.m-b-5 {
margin-bottom: 5px;
}
.m-b-21 {
margin-bottom: 21px;
}
.m-b-24 {
margin-bottom: 24px;
}
.font-14 {
font-size: 14px;
}
.l-h-1 {
line-height: 1;
}
.tip {
font-size: 12px;
color: #909399;
line-height: 22px;
}
</style>
...@@ -14,13 +14,8 @@ ...@@ -14,13 +14,8 @@
<i class="el-alert__icon el-icon-info"></i> <i class="el-alert__icon el-icon-info"></i>
<div class="el-alert__content"> <div class="el-alert__content">
<span class="el-alert__title"> <span class="el-alert__title">
<!-- 话务任务应用下线通知:<br /> 1.此处仅统计近一年内的数据<br />
1.【话务任务】预计将于5月下旬下线,功能将由【销售线索】替代;<br /> 2.门店下具体某条话务任务的完成状态每天更新一次;下方列表中任务完成数据统计也为每天统计更新一次,非实时刷新。
2.【话务任务】下线后,【GIC后台-智能营销】中的“话务”事件也将下线,后续如需针对门店终端下发任务,请通过【GIC后台-智能营销】中的“企微任务”事件下发;<br />
3.【话务任务】下线后,该应用中原本的“会话任务”也会下线,“不良评价回访”任务将转移至其他应用,请知悉<br /> -->
1.仅统计近一年数据;<br />
2.话务任务统计数据每日刷新一次;<br />
3.需要注意:话务完成详情是实时展示;完成数据统计是每日刷新,可能出现任务详情显示已完成,但是已完成数量并没有+1。这属于统计的正常情况。
</span> </span>
</div> </div>
</div> </div>
...@@ -37,10 +32,10 @@ ...@@ -37,10 +32,10 @@
</div> </div>
</div> </div>
<el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" :style="{ width: '100%', minHeight: tableH }" @selection-change="handleSelectionChange"> <el-table class="select-table" ref="multipleTable" :key="tableRefresh" v-loading="loading" :data="tableData" tooltip-effect="dark" :style="{ width: '100%', minHeight: tableH }" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="45"> </el-table-column> <el-table-column type="selection" width="45"> </el-table-column>
<el-table-column width="25"> <el-table-column width="25">
<template slot="header" slot-scope="scope"> <template slot="header">
<el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start"> <el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start">
<span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span> <span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
...@@ -49,11 +44,12 @@ ...@@ -49,11 +44,12 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
<template slot-scope="scope"> </template> <template slot-scope="scope">{{ scope ? ' ' : ' ' }}</template>
</el-table-column> </el-table-column>
<el-table-column label="门店名称" width="120" show-overflow-tooltip> <el-table-column label="门店名称" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<div style="width: 100%; overflow:hidden;text-overflow: ellipsis;">{{ scope.row.storeName }}</div> <div style="width: 100%; overflow:hidden;text-overflow: ellipsis;">{{ scope.row.storeName }}</div>
<p style="color:#909399">{{ scope.row.storeCode }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="" label="任务总数"> <el-table-column prop="" label="任务总数">
...@@ -128,7 +124,8 @@ export default { ...@@ -128,7 +124,8 @@ export default {
currentPage: 1, currentPage: 1,
pageSize: 20, pageSize: 20,
total: 0, total: 0,
loadingBtn: false loadingBtn: false,
tableRefresh: false
}; };
}, },
computed: {}, computed: {},
...@@ -148,6 +145,7 @@ export default { ...@@ -148,6 +145,7 @@ export default {
*/ */
handleCommand(command) { handleCommand(command) {
this.selectRadio = command; this.selectRadio = command;
this.tableRefresh = !this.tableRefresh;
}, },
/** /**
...@@ -453,6 +451,7 @@ export default { ...@@ -453,6 +451,7 @@ export default {
that.conditionObj.dateRange = that.initDataRange(); that.conditionObj.dateRange = that.initDataRange();
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.activeBrand = that.brandId; that.activeBrand = that.brandId;
that.$emit('showTab', 121);
if (!!this.brandId) { if (!!this.brandId) {
that.$nextTick(() => { that.$nextTick(() => {
that.getTableList(); that.getTableList();
......
...@@ -62,7 +62,7 @@ export default { ...@@ -62,7 +62,7 @@ export default {
}, },
mounted() { mounted() {
const that = this; const that = this;
that.$emit('showTab', '12'); that.$emit('showTab', '122');
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.activeBrand = that.brandId; that.activeBrand = that.brandId;
}, },
......
...@@ -26,7 +26,7 @@ import taskViewDetail from '@/components/app/taskViewDetail.vue'; ...@@ -26,7 +26,7 @@ import taskViewDetail from '@/components/app/taskViewDetail.vue';
<el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" :style="{ width: '100%', minHeight: tableH }" @selection-change="handleSelectionChange"> <el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" tooltip-effect="dark" :style="{ width: '100%', minHeight: tableH }" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="45"> </el-table-column> <el-table-column type="selection" width="45"> </el-table-column>
<el-table-column width="25"> <el-table-column width="25">
<template slot="header" slot-scope="scope"> <template slot="header">
<el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start"> <el-dropdown style="line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);" @command="handleCommand" placement="bottom-start">
<span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span> <span class="el-dropdown-link"><i class="iconfont icongengduo"></i> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
...@@ -35,7 +35,7 @@ import taskViewDetail from '@/components/app/taskViewDetail.vue'; ...@@ -35,7 +35,7 @@ import taskViewDetail from '@/components/app/taskViewDetail.vue';
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
<template slot-scope="scope"> </template> <template slot-scope="{ $index }"><p :key="$index"></p></template>
</el-table-column> </el-table-column>
<el-table-column label="门店名称" width="120" show-overflow-tooltip> <el-table-column label="门店名称" width="120" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -472,7 +472,7 @@ export default { ...@@ -472,7 +472,7 @@ export default {
}, },
mounted() { mounted() {
const that = this; const that = this;
that.$emit('showTab', '12'); that.$emit('showTab', '122', '1221');
that.conditionObj.dateRange = that.initDataRange(); that.conditionObj.dateRange = that.initDataRange();
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.activeBrand = that.brandId; that.activeBrand = that.brandId;
......
...@@ -222,7 +222,7 @@ export default { ...@@ -222,7 +222,7 @@ export default {
mounted() { mounted() {
let that = this; let that = this;
document.documentElement.style.backgroundColor = '#f0f2f5'; document.documentElement.style.backgroundColor = '#f0f2f5';
that.$emit('showTab', '21'); that.$emit('showTab', '11');
if (!!that.brandId) { if (!!that.brandId) {
that.getData(); that.getData();
} }
......
...@@ -1334,7 +1334,7 @@ button.el-button--danger.is-plain { ...@@ -1334,7 +1334,7 @@ button.el-button--danger.is-plain {
padding-top: 3px; padding-top: 3px;
} }
.el-select-dropdown__item.mult-line-select { .el-select-dropdown__item.mult-line-select {
height: 50px; height: 50px !important;
padding: 5px 20px; padding: 5px 20px;
} }
.mult-line-select .line-20 { .mult-line-select .line-20 {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
@font-face { @font-face {
font-family: "iconfont"; font-family: "iconfont"; /* Project id 1628375 */
/* Project id 1628375 */ src: url('iconfont.woff2?t=1627375504150') format('woff2'),
src: url('iconfont.woff2?t=1621413599446') format('woff2'), url('iconfont.woff?t=1621413599446') format('woff'), url('iconfont.ttf?t=1621413599446') format('truetype'); url('iconfont.woff?t=1627375504150') format('woff'),
url('iconfont.ttf?t=1627375504150') format('truetype');
} }
.iconfont { .iconfont {
font-family: "iconfont" !important; font-family: "iconfont" !important;
font-size: 16px; font-size: 16px;
font-style: normal; font-style: normal;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
}
.iconkongbiaoqian:before {
content: "\e64c";
}
.icondingdan_pingjia:before {
content: "\e654";
} }
.iconxiaochengxu:before { .iconxiaochengxu:before {
content: "\e625"; content: "\e625";
} }
.iconpre:before { .iconpre:before {
content: "\e641"; content: "\e641";
} }
.iconnext:before { .iconnext:before {
content: "\e640"; content: "\e640";
} }
.iconhuanyingci:before { .iconhuanyingci:before {
content: "\e60d"; content: "\e60d";
} }
.iconnew:before { .iconnew:before {
content: "\e61d"; content: "\e61d";
} }
.iconmingxibeifen:before { .iconmingxibeifen:before {
content: "\eae0"; content: "\eae0";
} }
.iconshangpinshezhi:before { .iconshangpinshezhi:before {
content: "\e60b"; content: "\e60b";
} }
.icongukeguanliicon:before { .icongukeguanliicon:before {
content: "\e60a"; content: "\e60a";
} }
.iconshuaxin1:before { .iconshuaxin1:before {
content: "\e613"; content: "\e613";
} }
.icongou:before { .icongou:before {
content: "\e606"; content: "\e606";
} }
.iconshouquanyanzheng:before { .iconshouquanyanzheng:before {
content: "\e687"; content: "\e687";
} }
.iconhuaban:before { .iconhuaban:before {
content: "\e62a"; content: "\e62a";
} }
.iconsucaiku:before { .iconsucaiku:before {
content: "\eab6"; content: "\eab6";
} }
.iconwenjian1:before { .iconwenjian1:before {
content: "\eaae"; content: "\eaae";
} }
.iconbofang1:before { .iconbofang1:before {
content: "\eaad"; content: "\eaad";
} }
.iconbiaoqing:before { .iconbiaoqing:before {
content: "\e612"; content: "\e612";
} }
.iconwenzi:before { .iconwenzi:before {
content: "\e611"; content: "\e611";
} }
.icondaima:before { .icondaima:before {
content: "\e6bc"; content: "\e6bc";
} }
.icontupian:before { .icontupian:before {
content: "\e73a"; content: "\e73a";
} }
.iconwenjian:before { .iconwenjian:before {
content: "\e62d"; content: "\e62d";
} }
.iconshipin:before { .iconshipin:before {
content: "\e605"; content: "\e605";
} }
.icontuozhuaiopen:before { .icontuozhuaiopen:before {
content: "\e61c"; content: "\e61c";
} }
.icontoufang2:before { .icontoufang2:before {
content: "\e845"; content: "\e845";
} }
.iconcelve:before { .iconcelve:before {
content: "\eaa9"; content: "\eaa9";
} }
.iconmoban:before { .iconmoban:before {
content: "\e619"; content: "\e619";
} }
.icontongxunlu:before { .icontongxunlu:before {
content: "\e64e"; content: "\e64e";
} }
.iconwodeqiaquan-:before { .iconwodeqiaquan-:before {
content: "\e6bb"; content: "\e6bb";
} }
.iconhuihuajinglingicon-:before { .iconhuihuajinglingicon-:before {
content: "\e678"; content: "\e678";
} }
.iconshibai:before { .iconshibai:before {
content: "\e60e"; content: "\e60e";
} }
.iconchenggong:before { .iconchenggong:before {
content: "\e63c"; content: "\e63c";
} }
.iconqiyeweixin:before { .iconqiyeweixin:before {
content: "\e628"; content: "\e628";
} }
.iconnan:before { .iconnan:before {
content: "\e629"; content: "\e629";
} }
.iconxingbienv:before { .iconxingbienv:before {
content: "\e66b"; content: "\e66b";
} }
.iconrenwuzhipai:before { .iconrenwuzhipai:before {
content: "\e7a5"; content: "\e7a5";
} }
.iconwanchengrenwu:before { .iconwanchengrenwu:before {
content: "\ea6c"; content: "\ea6c";
} }
.iconziyuan1:before { .iconziyuan1:before {
content: "\e6a4"; content: "\e6a4";
} }
.icondingwei:before { .icondingwei:before {
content: "\e918"; content: "\e918";
} }
.icongengduo2:before { .icongengduo2:before {
content: "\ea5b"; content: "\ea5b";
} }
.iconqiyexinxi:before { .iconqiyexinxi:before {
content: "\ea7a"; content: "\ea7a";
} }
.iconjia:before { .iconjia:before {
content: "\ea79"; content: "\ea79";
} }
.icondaishenhe_orange:before { .icondaishenhe_orange:before {
content: "\e604"; content: "\e604";
} }
.iconrenwu1:before { .iconrenwu1:before {
content: "\e607"; content: "\e607";
} }
.iconshenhe:before { .iconshenhe:before {
content: "\e772"; content: "\e772";
} }
.icongengduo1:before { .icongengduo1:before {
content: "\e68c"; content: "\e68c";
} }
.iconjian:before { .iconjian:before {
content: "\e634"; content: "\e634";
} }
.iconguanliyuanliebiao:before { .iconguanliyuanliebiao:before {
content: "\e609"; content: "\e609";
} }
.iconbumen:before { .iconbumen:before {
content: "\ea78"; content: "\ea78";
} }
.iconxiafa:before { .iconxiafa:before {
content: "\e64a"; content: "\e64a";
} }
.icongengduo:before { .icongengduo:before {
content: "\e603"; content: "\e603";
} }
.iconxitongguanlitubiao_mobanshezhi:before { .iconxitongguanlitubiao_mobanshezhi:before {
content: "\e618"; content: "\e618";
} }
.iconribao:before { .iconribao:before {
content: "\e750"; content: "\e750";
} }
.iconribaoshezhi:before { .iconribaoshezhi:before {
content: "\e7f4"; content: "\e7f4";
} }
.iconrenwu:before { .iconrenwu:before {
content: "\e77a"; content: "\e77a";
} }
.iconzhibiao:before { .iconzhibiao:before {
content: "\e610"; content: "\e610";
} }
.iconhuawujinengzupeizhi:before { .iconhuawujinengzupeizhi:before {
content: "\e601"; content: "\e601";
} }
.iconbuliangpingjiashezhi:before { .iconbuliangpingjiashezhi:before {
content: "\e7f6"; content: "\e7f6";
} }
.iconhuawushuju:before { .iconhuawushuju:before {
content: "\e600"; content: "\e600";
} }
.iconshuaxin:before { .iconshuaxin:before {
content: "\e61b"; content: "\e61b";
} }
.iconqiaquan:before { .iconqiaquan:before {
content: "\e6b6"; content: "\e6b6";
} }
.iconjichushezhi:before { .iconjichushezhi:before {
content: "\e65e"; content: "\e65e";
} }
.icontianjiajiahaowubiankuang:before { .icontianjiajiahaowubiankuang:before {
content: "\e81a"; content: "\e81a";
} }
.iconchengyuan:before { .iconchengyuan:before {
content: "\e61a"; content: "\e61a";
} }
.iconnavigate_next:before { .iconnavigate_next:before {
content: "\e62f"; content: "\e62f";
} }
.iconchangyongicon-:before { .iconchangyongicon-:before {
content: "\e617"; content: "\e617";
} }
.iconqiye-tianchong:before { .iconqiye-tianchong:before {
content: "\e730"; content: "\e730";
} }
.iconzuzhijiagouguanli:before { .iconzuzhijiagouguanli:before {
content: "\e635"; content: "\e635";
} }
.icondianpu-kuai:before { .icondianpu-kuai:before {
content: "\e602"; content: "\e602";
} }
.iconxiala:before { .iconxiala:before {
content: "\e608"; content: "\e608";
} }
.iconrizhifuwu:before { .iconrizhifuwu:before {
content: "\e65a"; content: "\e65a";
} }
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
No preview for this file type
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