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;
}
if (!!el.children) {
el.children.forEach(item => {
if (item.tabId == id) {
ele.onlyIconActive = true;
}
});
}
}); });
} }
}); this.$nextTick(() => (this.navpath = [].concat(navpath)));
}, },
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,88 +265,17 @@ export default { ...@@ -171,88 +265,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;
}
}); });
} }
});
}
});
},
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: ''
}
];
}
} }
}, },
watch: { watch: {
...@@ -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: '话务任务设置',
icon: 'iconribaoshezhi'
},
{
tabId: '12',
tabName: '话务任务记录',
icon: 'iconribaoshezhi',
// collapsFlag: true, // 三级菜单手动设置默认展开
children: [
{
tabId: '121',
tabName: '门店视图' tabName: '门店视图'
}, },
{ {
tabId: '122',
tabName: '任务视图'
}
]
}
]
},
{
tabId: '2', tabId: '2',
tabName: '群发任务',
icon: 'iconjichushezhi',
children: [
{
tabId: '21',
tabName: '群发任务记录',
icon: 'iconjichushezhi',
children: [
{
tabId: '211',
tabName: '门店视图'
},
{
tabId: '212',
tabName: '计划视图' 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 {
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8"/>
<title>iconfont Demo</title> <title>iconfont Demo</title>
<link rel="shortcut icon" href="//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico" type="image/x-icon" /> <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico" type="image/x-icon"/>
<link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg" /> <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg"/>
<link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css"> <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
<link rel="stylesheet" href="demo.css"> <link rel="stylesheet" href="demo.css">
<link rel="stylesheet" href="iconfont.css"> <link rel="stylesheet" href="iconfont.css">
...@@ -59,6 +59,18 @@ ...@@ -59,6 +59,18 @@
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib"> <li class="dib">
<span class="icon iconfont">&#xe64c;</span>
<div class="name">空标签</div>
<div class="code-name">&amp;#xe64c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe654;</span>
<div class="name">订单_评价</div>
<div class="code-name">&amp;#xe654;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe625;</span> <span class="icon iconfont">&#xe625;</span>
<div class="name">小程序</div> <div class="name">小程序</div>
<div class="code-name">&amp;#xe625;</div> <div class="code-name">&amp;#xe625;</div>
...@@ -487,16 +499,16 @@ ...@@ -487,16 +499,16 @@
</blockquote> </blockquote>
<p>Unicode 使用步骤如下:</p> <p>Unicode 使用步骤如下:</p>
<h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3> <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
<pre><code class="language-css" <pre><code class="language-css"
>@font-face { >@font-face {
font-family: 'iconfont'; font-family: 'iconfont';
src: url('iconfont.woff2?t=1621413599446') format('woff2'), src: url('iconfont.woff2?t=1627375504150') format('woff2'),
url('iconfont.woff?t=1621413599446') format('woff'), url('iconfont.woff?t=1627375504150') format('woff'),
url('iconfont.ttf?t=1621413599446') format('truetype'); url('iconfont.ttf?t=1627375504150') format('truetype');
} }
</code></pre> </code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3> <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
<pre><code class="language-css" <pre><code class="language-css"
>.iconfont { >.iconfont {
font-family: "iconfont" !important; font-family: "iconfont" !important;
font-size: 16px; font-size: 16px;
...@@ -506,7 +518,7 @@ ...@@ -506,7 +518,7 @@
} }
</code></pre> </code></pre>
<h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3> <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
<pre> <pre>
<code class="language-html" <code class="language-html"
>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt; >&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
</code></pre> </code></pre>
...@@ -519,6 +531,24 @@ ...@@ -519,6 +531,24 @@
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib"> <li class="dib">
<span class="icon iconfont iconkongbiaoqian"></span>
<div class="name">
空标签
</div>
<div class="code-name">.iconkongbiaoqian
</div>
</li>
<li class="dib">
<span class="icon iconfont icondingdan_pingjia"></span>
<div class="name">
订单_评价
</div>
<div class="code-name">.icondingdan_pingjia
</div>
</li>
<li class="dib">
<span class="icon iconfont iconxiaochengxu"></span> <span class="icon iconfont iconxiaochengxu"></span>
<div class="name"> <div class="name">
小程序 小程序
...@@ -1152,10 +1182,10 @@ ...@@ -1152,10 +1182,10 @@
</ul> </ul>
<p>使用步骤如下:</p> <p>使用步骤如下:</p>
<h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3> <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt; <pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
</code></pre> </code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3> <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;span class="iconfont iconxxx"&gt;&lt;/span&gt; <pre><code class="language-html">&lt;span class="iconfont iconxxx"&gt;&lt;/span&gt;
</code></pre> </code></pre>
<blockquote> <blockquote>
<p>" iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p> <p>" iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
...@@ -1167,6 +1197,22 @@ ...@@ -1167,6 +1197,22 @@
<li class="dib"> <li class="dib">
<svg class="icon svg-icon" aria-hidden="true"> <svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconkongbiaoqian"></use>
</svg>
<div class="name">空标签</div>
<div class="code-name">#iconkongbiaoqian</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icondingdan_pingjia"></use>
</svg>
<div class="name">订单_评价</div>
<div class="code-name">#icondingdan_pingjia</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconxiaochengxu"></use> <use xlink:href="#iconxiaochengxu"></use>
</svg> </svg>
<div class="name">小程序</div> <div class="name">小程序</div>
...@@ -1731,10 +1777,10 @@ ...@@ -1731,10 +1777,10 @@
</ul> </ul>
<p>使用步骤如下:</p> <p>使用步骤如下:</p>
<h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3> <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt; <pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
</code></pre> </code></pre>
<h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3> <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
<pre><code class="language-html">&lt;style&gt; <pre><code class="language-html">&lt;style&gt;
.icon { .icon {
width: 1em; width: 1em;
height: 1em; height: 1em;
...@@ -1745,7 +1791,7 @@ ...@@ -1745,7 +1791,7 @@
&lt;/style&gt; &lt;/style&gt;
</code></pre> </code></pre>
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3> <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt; <pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
&lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt; &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
&lt;/svg&gt; &lt;/svg&gt;
</code></pre> </code></pre>
......
@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 {
...@@ -12,6 +13,14 @@ ...@@ -12,6 +13,14 @@
-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";
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,7 +4,22 @@ ...@@ -4,7 +4,22 @@
"font_family": "iconfont", "font_family": "iconfont",
"css_prefix_text": "icon", "css_prefix_text": "icon",
"description": "", "description": "",
"glyphs": [{ "glyphs": [
{
"icon_id": "23164302",
"name": "空标签",
"font_class": "kongbiaoqian",
"unicode": "e64c",
"unicode_decimal": 58956
},
{
"icon_id": "8651336",
"name": "订单_评价",
"font_class": "dingdan_pingjia",
"unicode": "e654",
"unicode_decimal": 58964
},
{
"icon_id": "16514068", "icon_id": "16514068",
"name": "小程序", "name": "小程序",
"font_class": "xiaochengxu", "font_class": "xiaochengxu",
......
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