Commit 80be6124 by chenxin

fix:build 服务监督 图表 各项评分概况

parent 5a72d8c0
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.9a658fa885f95ce4783ef7bfacf2aeaa.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.35.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.10.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.2.16.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.42.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.2.10.js></script><script type=text/javascript src=/marketing/static/js/manifest.e7f6efddd965d0374fed.js></script><script type=text/javascript src=/marketing/static/js/vendor.cbb380c2053ab598e892.js></script><script type=text/javascript src=/marketing/static/js/main.93d39b4ed9fa3dfcebd2.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.c492994ca7244b246a9799497d9e428f.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.35.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.10.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.2.16.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.42.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.2.10.js></script><script type=text/javascript src=/marketing/static/js/manifest.ff2f1112249adbf46c49.js></script><script type=text/javascript src=/marketing/static/js/vendor.cbb380c2053ab598e892.js></script><script type=text/javascript src=/marketing/static/js/main.93d39b4ed9fa3dfcebd2.js></script></body></html>
\ No newline at end of file
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(t,a,c){for(var i,f,u,s=0,l=[];s<t.length;s++)f=t[s],n[f]&&l.push(n[f][0]),n[f]=0;for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);for(r&&r(t,a,c);l.length;)l.shift()();if(c)for(s=0;s<c.length;s++)u=o(o.s=c[s]);return u};var t={},n={13:0};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.e=function(e){var r=n[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var t=new Promise(function(t,o){r=n[e]=[t,o]});r[2]=t;var a=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,o.nc&&c.setAttribute("nonce",o.nc),c.src=o.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"message",4:"ewash",5:"evaluation",6:"ecm",7:"activity",8:"recharge",9:"msg",10:"calllog"}[e]||e)+"."+{0:"a14b2d4a95cf7a2f73b3",1:"5603aa6bc3c455d7b51e",2:"f0b4c0e5c36f5ed6b7a8",3:"dbb7db1bf14e057fd6e0",4:"6d9e78ea84d8a6629c63",5:"532be8ee883e509fee13",6:"393c92cf9310bf3051e4",7:"c7e6a74eba07ee933137",8:"cc0950432812606ca31b",9:"293881968b0a6ef82c82",10:"4b68b26d138f9bc39980"}[e]+".js";var i=setTimeout(f,12e4);function f(){c.onerror=c.onload=null,clearTimeout(i);var r=n[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),n[e]=void 0)}return c.onerror=c.onload=f,a.appendChild(c),t},o.m=e,o.c=t,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.p="/marketing/",o.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s<t.length;s++)u=t[s],n[u]&&l.push(n[u][0]),n[u]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(r&&r(t,c,a);l.length;)l.shift()();if(a)for(s=0;s<a.length;s++)f=o(o.s=a[s]);return f};var t={},n={13:0};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.e=function(e){var r=n[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var t=new Promise(function(t,o){r=n[e]=[t,o]});r[2]=t;var c=document.getElementsByTagName("head")[0],a=document.createElement("script");a.type="text/javascript",a.charset="utf-8",a.async=!0,a.timeout=12e4,o.nc&&a.setAttribute("nonce",o.nc),a.src=o.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"message",4:"ewash",5:"evaluation",6:"ecm",7:"activity",8:"recharge",9:"msg",10:"calllog"}[e]||e)+"."+{0:"6c26959b60e382668042",1:"5603aa6bc3c455d7b51e",2:"f0b4c0e5c36f5ed6b7a8",3:"dbb7db1bf14e057fd6e0",4:"6d9e78ea84d8a6629c63",5:"60028c53524bb4040e70",6:"393c92cf9310bf3051e4",7:"c7e6a74eba07ee933137",8:"cc0950432812606ca31b",9:"32e2fb20e9e49c721b1a",10:"4b68b26d138f9bc39980"}[e]+".js";var i=setTimeout(u,12e4);function u(){a.onerror=a.onload=null,clearTimeout(i);var r=n[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),n[e]=void 0)}return a.onerror=a.onload=u,c.appendChild(a),t},o.m=e,o.c=t,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.p="/marketing/",o.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -23,14 +23,14 @@
<div class="rate-item" :class="{ pb20: index !== 2 }" v-for="(item, index) in rate" :key="index">
<div class="rate-top">
<span class="pr10">{{ item.name }} (共{{ item.sum }}人)</span>
<span class="fz18 bold"> {{ Number(item.score / item.sum).toFixed(2) }}</span>
<span class="fz18 bold"> {{ item.sum ? Number(item.score / item.sum).toFixed(2) : 0 }}</span>
</div>
<ul class="rate-bottom gray-bg">
<li v-for="(v, i) in item.list" :key="i">
<el-rate class="inline-block" v-model="v.socre" disabled></el-rate>
<span class="rate-text">{{ v.socre * 2 }}</span>
<div class="progress" :style="{ width: (v.count / item.sum) * 100 + 'px' }"></div>
<span class="progress-text fz12 vertical-middle pl5"> {{ Number((v.count * 100) / item.sum).toFixed(2) }}%</span>
<span class="progress-text fz12 vertical-middle pl5"> {{ item.sum ? Number((v.count * 100) / item.sum).toFixed(2) : 0 }}%</span>
</li>
</ul>
</div>
......@@ -117,113 +117,50 @@ export default {
});
}
if (type === 2) {
const scoreList = res.result.evaluateScoreList;
let fwtdScore = 0;
let fwtdCount2 = 0;
let fwtdCount4 = 0;
let fwtdCount6 = 0;
let fwtdCount8 = 0;
let fwtdCount10 = 0;
let fwtdSum = 1;
let zycdScore = 0;
let zycdSum = 1;
let zycdCount2 = 0;
let zycdCount4 = 0;
let zycdCount6 = 0;
let zycdCount8 = 0;
let zycdCount10 = 0;
let mdhjScore = 0;
let mdhjSum = 1;
let mdhjCount2 = 0;
let mdhjCount4 = 0;
let mdhjCount6 = 0;
let mdhjCount8 = 0;
let mdhjCount10 = 0;
scoreList.map((v, i) => {
if (i == 0) {
fwtdSum = 0;
zycdSum = 0;
mdhjSum = 0;
}
let name = scoreList[i][0];
let count = scoreList[i][2];
let score = scoreList[i][1];
if (name.indexOf('service') != -1) {
fwtdSum += count;
fwtdScore += score * count;
if (parseInt(score) == 2) {
fwtdCount2 = count;
}
if (parseInt(score) == 4) {
fwtdCount4 = count;
}
if (parseInt(score) == 6) {
fwtdCount6 = count;
}
if (parseInt(score) == 8) {
fwtdCount8 = count;
}
if (parseInt(score) == 10) {
fwtdCount10 = count;
}
}
if (name.indexOf('major') != -1) {
zycdSum += count;
zycdScore += score * count;
if (parseInt(score) == 2) {
zycdCount2 = count;
}
if (parseInt(score) == 4) {
zycdCount4 = count;
}
if (parseInt(score) == 6) {
zycdCount6 = count;
}
if (parseInt(score) == 8) {
zycdCount8 = count;
}
if (parseInt(score) == 10) {
zycdCount10 = count;
}
}
if (name.indexOf('store') != -1) {
mdhjSum += count;
mdhjScore += score * count;
if (parseInt(score) == 2) {
mdhjCount2 = count;
}
if (parseInt(score) == 4) {
mdhjCount4 = count;
}
if (parseInt(score) == 6) {
mdhjCount6 = count;
}
if (parseInt(score) == 8) {
mdhjCount8 = count;
}
if (parseInt(score) == 10) {
mdhjCount10 = count;
}
}
});
// 后端没数据返回[],必须写默认值
let scoreList = ['{"2":0,"4":0,"6":0,"8":0,"10":0}', '{"2":0,"4":0,"6":0,"8":0,"10":0}', '{"2":0,"4":0,"6":0,"8":0,"10":0}'];
if (res.result.evaluateScoreList && res.result.evaluateScoreList.length) {
scoreList = res.result.evaluateScoreList && res.result.evaluateScoreList;
}
const fwtd = JSON.parse(scoreList[0]);
this.rate[0].name = '服务态度评分';
this.rate[0].score = fwtdScore;
this.rate[0].sum = fwtdSum;
this.rate[0].list = [{ socre: 1, count: fwtdCount2 }, { socre: 2, count: fwtdCount4 }, { socre: 3, count: fwtdCount6 }, { socre: 4, count: fwtdCount8 }, { socre: 5, count: fwtdCount10 }]; // eslint-disable-line
this.rate[0].score = Object.keys(fwtd).reduce((t, v) => t + fwtd[v] * v, 0) || 0;
this.rate[0].sum = Object.keys(fwtd).reduce((t, v) => t + fwtd[v], 0) || 0;
this.rate[0].list =
Object.keys(fwtd).map((v, idx) => {
return {
socre: idx + 1,
count: fwtd[v]
};
}) || 0;
this.rate[1].name = '专业程度评分';
this.rate[1].score = zycdScore;
this.rate[1].sum = zycdSum;
this.rate[1].list = [{ socre: 1, count: zycdCount2 }, { socre: 2, count: zycdCount4 }, { socre: 3, count: zycdCount6 }, { socre: 4, count: zycdCount8 }, { socre: 5, count: zycdCount10 }]; // eslint-disable-line
const zycd = JSON.parse(scoreList[1]);
this.rate[1].name = '门店环境评分';
this.rate[1].score = Object.keys(zycd).reduce((t, v) => t + zycd[v] * v, 0) || 0;
this.rate[1].sum = Object.keys(zycd).reduce((t, v) => t + zycd[v], 0) || 0;
this.rate[1].list =
Object.keys(zycd).map((v, idx) => {
return {
socre: idx + 1,
count: zycd[v]
};
}) || 0;
const mdhj = JSON.parse(scoreList[2]);
this.rate[2].name = '门店环境评分';
this.rate[2].score = mdhjScore;
this.rate[2].sum = mdhjSum;
this.rate[2].list = [{ socre: 1, count: mdhjCount2 }, { socre: 2, count: mdhjCount4 }, { socre: 3, count: mdhjCount6 }, { socre: 4, count: mdhjCount8 }, { socre: 5, count: mdhjCount10 }]; // eslint-disable-line
this.rate[2].score = Object.keys(mdhj).reduce((t, v) => t + mdhj[v] * v, 0) || 0;
this.rate[2].sum = Object.keys(mdhj).reduce((t, v) => t + mdhj[v], 0) || 0;
this.rate[2].list =
Object.keys(mdhj).map((v, idx) => {
return {
socre: idx + 1,
count: mdhj[v]
};
}) || 0;
}
if (type === 3) {
const goodTagList = res.result.goodTagList;
const badTagList = res.result.badTagList;
const goodTagList = res.result.goodTagList || [];
const badTagList = res.result.badTagList || [];
//正面快评生成
let goodList = [];
const goodTotal = goodTagList.map(v => v[0]).reduce((total, num) => total + num);
......@@ -244,7 +181,7 @@ export default {
//负面快评生成
let badList = [];
const badTotal = badTagList.map(v => v[0]).reduce((total, num) => total + num);
const badTotal = badTagList.length ? badTagList.map(v => v[0]).reduce((total, num) => total + num) : 0;
badTagList.map((v, i) => {
badList.push({ item: v[1], count: parseInt(v[0]), percent: parseFloat((v[0] / badTotal).toFixed(2)) });
});
......
......@@ -86,7 +86,7 @@ export default {
return (row.hpl ? Number(row.hpl).toFixed(2) : '0.00') + '%';
}
},
{ label: '不良评价数', prop: '_badCount', width: '120', sortable: 'custom', align: 'left' }
{ label: '不良评价数', prop: 'badCount', width: '120', sortable: 'custom', align: 'left' }
],
tableList: [],
total: 0
......@@ -120,7 +120,7 @@ export default {
sortList(obj) {
this.listParams.sortType = obj.order === 'ascending' ? 'asc' : 'desc';
this.listParams.storeDetailSortName = obj.prop || '';
if (obj.prop === '_badCount') {
if (obj.prop === 'badCount') {
this.listParams.storeDetailSortName = 'badCount';
}
this.storeEvaluateDetail();
......
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