From fc65fa524d624d11124518e030dd1695d505c8df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E7=BB=A7=E7=BB=AD=E5=90=B9?= <17611323298@163.com> Date: Mon, 27 Nov 2023 10:24:43 +0800 Subject: [PATCH] =?UTF-8?q?AI=E5=AF=B9=E8=AF=9D=E5=8A=9F=E8=83=BD=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/modules/http.js | 9 + .../Statistics/ai/intelligentReporting.vue | 2 +- src/views/Statistics/ai/reportDetail.vue | 1324 +---------------- 3 files changed, 26 insertions(+), 1309 deletions(-) diff --git a/src/api/modules/http.js b/src/api/modules/http.js index 38bff40..a0ebbc1 100644 --- a/src/api/modules/http.js +++ b/src/api/modules/http.js @@ -1747,3 +1747,12 @@ export function uploadFileOpenApiData(params) { }) } + +// 获取项目转写类型 +export function findDataByRuleIdopenApiData(params) { + return request({ + url: 'autoSR/openApiData/findDataByRuleId', + method: 'get', + params + }) +} \ No newline at end of file diff --git a/src/views/Statistics/ai/intelligentReporting.vue b/src/views/Statistics/ai/intelligentReporting.vue index a0d3fb6..e42e443 100644 --- a/src/views/Statistics/ai/intelligentReporting.vue +++ b/src/views/Statistics/ai/intelligentReporting.vue @@ -241,7 +241,7 @@ export default { methods: { // 生成记录 findDataByRuleId() { - this.$api.http.findDataByRuleId(this.creatHistory).then((res) => { + this.$api.http.findDataByRuleIdopenApiData(this.creatHistory).then((res) => { this.gridData = res.data.records; this.roleHistory = true; // 获取到数据后展示列表 this.creatHistory.total = res.data.total; diff --git a/src/views/Statistics/ai/reportDetail.vue b/src/views/Statistics/ai/reportDetail.vue index 3844e2b..6c1c583 100644 --- a/src/views/Statistics/ai/reportDetail.vue +++ b/src/views/Statistics/ai/reportDetail.vue @@ -1,1312 +1,20 @@ <template> <div class="pages"> - - <div id="pdfHtml"> - <div class="abtitles"> - <div style="width: 100%;"> - <div class="label-items"> - {{ objPagesData.name }} - </div> - </div> - <div class="label-item"> - <span class="left-label"> - 生成时间: - </span> - <span>{{ objPagesData.createTime }}</span> - </div> - <div class="sections"> - <div class="sl-fl-tit"> - <div class="s-title">基础筛选</div> - </div> - <div class="s-box"> - <div class="date"> - <span class="ld" style="flex-shrink: 0;">接待时间</span> - <div class="date-box"> - <el-select class="selectone" placeholder="请选择" disabled v-model="params.dateType"> - <el-option - v-for="item in dateTypeLsit" - :key="item.label" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - - <template v-if="params.dateType == '周'"> - <el-date-picker - v-model="params.time" - type="week" - format="yyyy年-W周" - disabled - :picker-options="weekPickerOptions" - placeholder="请选择"> - </el-date-picker> - </template> - - <template v-if="params.dateType == '月'"> - <el-date-picker - v-model="params.time" - type="month" - format="yyyy-MM" - disabled - value-format="yyyy-MM" - :picker-options="weekPickerOptions" - placeholder="请选择"> - </el-date-picker> - </template> - - <template v-if="params.dateType == '自定义'"> - <el-date-picker - class="little" - value-format="yyyy-MM-dd" - v-model="params.time" - type="daterange" - disabled - range-separator="-" - start-placeholder="开始日期" - end-placeholder="结束日期" - :picker-options="weekPickerOptions"> - </el-date-picker> - </template> - - <span class="ld" style="margin: 0 10px;flex-shrink: 0">对比时间</span> - - <template v-if="params.dateType == '周'"> - <el-date-picker - v-model="params.contrastTime" - type="week" - format="yyyy年-W周" - disabled - :picker-options="weekPickerOptions" - placeholder="请选择"> - </el-date-picker> - </template> - - <template v-if="params.dateType == '月'"> - <el-date-picker - v-model="params.contrastTime" - type="month" - format="yyyy-MM" - value-format="yyyy-MM" - disabled - :picker-options="weekPickerOptions" - placeholder="请选择"> - </el-date-picker> - </template> - - <template v-if="params.dateType == '自定义'"> - <el-date-picker - class="little" - v-model="params.contrastTime" - type="daterange" - value-format="yyyy-MM-dd" - range-separator="-" - disabled - start-placeholder="开始日期" - end-placeholder="结束日期" - :picker-options="weekPickerOptions"> - </el-date-picker> - </template> - </div> - </div> - <div class="date"> - <span class="ld">选择项目</span> - <div class="date-box"> - <el-select class="selectone" placeholder="请选择" v-model="params.houseType" disabled> - <el-option - v-for="item in selectItem" - :key="item.label" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - - <template v-if="params.houseType != '全部'"> - <el-select class="selectone" style="width: 280px" placeholder="请选择" - v-model="params.selectHouseId" multiple collapse-tags disabled> - <el-option - v-for="item in projectList" - :key="item.id" - :label="item.propertyName" - :value="item.id"> - </el-option> - </el-select> - </template> - </div> - </div> - </div> - </div> - <div style="display: flex;justify-content: flex-end"> - <el-button type="primary" style="width:300px" @click="exportData">导出pdf</el-button> + <div style="width: 100%"> + <div class="label-items"> + {{ objPagesData.name }} </div> - </div> - - <!-- 数据概览 --> -<div class="block-box" v-for="(item, index) in dateAllLocking" :key="item.name"> - <div class="block-boxs" v-for="(data, dataIndex) in item.children" :key="data.name"> - <template v-if="data.name.indexOf('概况') != -1" v-for="(chil, i) in data.children"> - <div class="box-card" v-if="chil"> - <div class="title">一、{{ item.name }}- {{ data.name }} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="cont-box"> - <div v-for="(children, childrenIndex) in chil" :key="childrenIndex" - class="cont-item"> - <div class="name"> - <div class="dot"> - <div class="dot1"></div> - <div class="dot2"></div> - </div> - {{ children.name || '' }} - </div> - <div class="number-box"> - <div class="number">{{ children.data.count || 0 }}</div> - {{ children.name | unitText }} - </div> - <div class="visit-box" v-if="showRecheck(children.name)"> - <div class="visit-item">首访:{{ children.data.first || 0 }}</div> - <div class="visit-item">复访:{{ children.data.plural || 0 }}</div> - </div> - <div class="dedc"> - <span> - 本月{{ children.name }}共 - </span> - <span> - {{ children.data.count || 0 }} - </span> - <span> - {{ children.name | unitText }},与对比时间段内的{{ children.name }} - </span> - <span>{{ children.data.lastCount }}{{ children.name | unitText }}</span> - <span v-if="children.data.differ == 0">持平</span> - <span v-if="children.data.differ > 0">上升</span> - <span v-if="children.data.differ < 0">下降</span> - - <template v-if="children.data.differ != 0"> - <span :class="{up: children.data.differ > 0, down: children.data.differ < 0}"> - {{ children.data.differ || ''}} - </span> - {{ children.name | unitText }} - </template> - , - <template v-if="children.data.maxProjectName"> - <span> - {{ children.name }}最高的项目是 - </span> - <span class="up"> - {{ children.data.maxProjectName || '' }} - </span> - <span> - 为 - </span> - <span> - {{ children.data.maxProjectCount || '' }} - </span> - <span> - {{ children.name | unitText }}。 - </span> - </template> - </div> - </div> - </div> - </div> - </template> - <template v-if="data.name.indexOf('趋势') != -1"> - <template v-for="(chil, i) in data.children" v-if="chil&&chil.data"> - <div class="box-card"> - <div class="title">一、{{ item.name }}-{{ chil.name }}趋势 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div :id="chil.echartsId" style="height: 400px"></div> - </div> - </template> - </template> - <template v-if="data.name.indexOf('分布') != -1" v-for="(chil, i) in data.children"> - <template v-if="chil.data && chil.data.length > 0"> - <div class="box-card"> - <div class="title">一、{{ item.name }}-{{ chil.name }}分布 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div :id="chil.echartsId" style="height: 400px"></div> - </div> - <div class="box-card"> - <div class="title">一、{{ item.name }}-{{ chil.name }}分布 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="tab"> - <el-table - :data="chil.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="执行率"> - </el-table-column> - <el-table-column - align="center" - prop="count" - :label="objPagesData.nowDate"> - </el-table-column> - <el-table-column - align="center" - prop="lastCount" - :label="objPagesData.contrastDate"> - </el-table-column> - <el-table-column - align="center" - prop="differ" - label="涨跌幅"> - <template slot-scope="{row}"> - <span :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ}}</span><span - v-if="row.differ !=0" - :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ > 0 ? '↑' : '↓'}}</span> - </template> - </el-table-column> - </el-table> - </div> - <div class="tip" v-if="chil.analyze">分析:{{ chil.analyze }}</div> - <div class="subtip">备注:涨跌幅为红色表示上升<span class="up">↑</span>,绿色为下降<span class="down">↓</span> - </div> - </div> - </template> - </template> - </div> -</div> - -<!-- 销讲分析 --> -<div class="block-box" v-for="(ites, index) in marketingAnalysis" :key="index"> - <div class="block-boxs" v-for="(data, dataIndex) in ites.children" :key="data.name"> - <template v-if="data.name == '项目排名'"> - <!-- 项目排名柱状图 --> - <div class="box-card" v-for="(chil, chilIndex) in data.children" :key="chilIndex" - v-if="chil.data && chil.data.length > 0"> - <div class="title">二、{{ ites.name }}-{{ chil.name }}排名 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title" v-if="chil.value"> - {{ chil.value }} - <span style="color: #3E50E8"> - {{ chil.avg || 0}}% - </span> - </div> - - <div class="chart-title"> - - </div> - <div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div> - </div> - </template> - - <template v-else-if="data.name == '达标率'"> - <div class="box-card" v-for="(chil, chilIndex) in data.children" :key="chilIndex" - v-if="chil.data && chil.data.length > 0"> - <div class="title">二、{{ ites.name }}-{{ chil.name }} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - - <div class="tab"> - <template v-if="chil.name == '有效接待率' && chil.data"> - <el-table - :data="chil.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="项目名称"> - </el-table-column> - <el-table-column - align="center" - prop="data" - label="接待量"> - </el-table-column> - <el-table-column - align="center" - prop="count" - label="有效接待"> - </el-table-column> - <el-table-column - align="center" - prop="activeCount" - label="无效接待"> - </el-table-column> - <el-table-column - align="center" - label="有效接待率"> - <template slot-scope="{row}"> - <span>{{row.rate || 0}}%</span> - </template> - </el-table-column> - <el-table-column - align="center" - prop="differ" - :label="'与集团'+ chil.avg +'%对比'"> - <template slot-scope="{row}"> - <span :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ}}%</span><span - v-if="row.differ !=0" - :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ > 0 ? '↑' : '↓'}}</span> - </template> - </el-table-column> - </el-table> - </template> - - <template v-if="chil.name == '标记顾问率' && chil.data"> - <el-table - :data="chil.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="项目名称"> - </el-table-column> - <el-table-column - align="center" - prop="data" - label="有效接待"> - </el-table-column> - <el-table-column - align="center" - prop="count" - label="已标记"> - </el-table-column> - <el-table-column - align="center" - prop="activeCount" - label="未标记"> - </el-table-column> - <el-table-column - align="center" - label="标记顾问率"> - <template slot-scope="{row}"> - <span>{{row.rate || 0}}%</span> - </template> - </el-table-column> - <el-table-column - align="center" - prop="differ" - :label="'与集团'+ chil.avg +'%对比'"> - <template slot-scope="{row}"> - <span :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ}}%</span><span - v-if="row.differ !=0" - :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ > 0 ? '↑' : '↓'}}</span> - </template> - </el-table-column> - </el-table> - </template> - - <template v-if="chil.name == '画像校准率' && chil.data"> - <el-table - :data="chil.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="项目名称"> - </el-table-column> - <el-table-column - align="center" - prop="data" - label="有效接待"> - </el-table-column> - <el-table-column - align="center" - prop="count" - label="已校准"> - </el-table-column> - <el-table-column - align="center" - prop="activeCount" - label="未校准"> - </el-table-column> - <el-table-column - align="center" - label="校准率"> - <template slot-scope="{row}"> - <span>{{row.rate || 0}}%</span> - </template> - </el-table-column> - <el-table-column - align="center" - prop="differ" - :label="'与集团'+ chil.avg +'%对比'"> - <template slot-scope="{row}"> - <span :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ}}%</span><span - v-if="row.differ !=0" - :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ > 0 ? '↑' : '↓'}}</span> - </template> - </el-table-column> - </el-table> - </template> - </div> - <div class="subtip">备注:涨跌幅为红色表示上升<span class="up">↑</span>,绿色为下降<span class="down">↓</span> - </div> - </div> - </template> - - <!-- 提升最高 --> - <template v-else-if="checkShow(data.name)"> - <template v-for="(chil, chilIndex) in data.children"> - <template v-if="chil.name == '平均销讲执行率' && Object.keys(chil.data).length > 0 "> - <div v-if="chil.data" class="box-card"> - <div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title"> - <span> - {{ chil.data.name }}项目{{ objPagesData.nowDate - }}{{ objPagesData.nowDate.length > 10 ? '' : '月份' }} - </span> - <span>{{ chil.name }} {{ data.name | showWhat }}</span> - <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> - {{ Math.abs(chil.data.count || 0) }}% - </span> - </div> - <div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div> - </div> - <!-- 表格 --> - <div v-if="chil.data" class="box-card"> - <div class="title">二、{{ ites.name }}{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - - <div class="chart-title"> - <span> - {{ chil.data.name }}项目{{ objPagesData.nowDate - }}{{ objPagesData.nowDate.length > 10 ? '' : '月份' }} - </span> - <span>{{ chil.name }} {{ data.name | showWhat }}</span> - <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> - {{ Math.abs(chil.data.count || 0) }}% - </span> - </div> - <div class="tab"> - <el-table - :data="chil.data.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="销讲场景"> - </el-table-column> - <el-table-column - align="center" - prop="count" - :label="objPagesData.nowDate"> - </el-table-column> - <el-table-column - align="center" - prop="lastCount" - :label="objPagesData.contrastDate"> - </el-table-column> - <el-table-column - align="center" - prop="differ" - label="对比"> - <template slot-scope="{row}"> - <span :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ}}%<span - v-if="row.differ !=0" - :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ > 0 ? '↑' : '↓'}}</span></span> - </template> - </el-table-column> - </el-table> - </div> - <div class="tip" v-if="chil.analyze">分析:{{ chil.analyze }}</div> - <div class="subtip">备注:涨跌幅为红色表示上升<span class="up">↑</span>,绿色为下降<span - class="down">↓</span> - </div> - </div> - <!-- 二级 --> - <div v-if="chil.data" class="box-card"> - <div class="title"> - 二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title"> - <span> - {{ chil.data.name }}项目{{ objPagesData.nowDate - }}{{ objPagesData.nowDate.length > 10 ? '' : '月份' }} - </span> - <span>{{ chil.name }} {{ data.name | showWhat }}</span> - <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> - {{ Math.abs(chil.data.count || 0) }}% - </span> - </div> - <!-- 循环的box --> - <div v-for="(wqe,adasd) in chil.data.data" :key="adasd"> - <div class="titles">{{ wqe.name }}</div> - <div class="percents"> - <div class="percents-box" v-for="(dadsa21, dsahdahjk2) in wqe.children" - :key="dsahdahjk2"> - <span class="left_label">{{ dadsa21.name }}</span> - <div class="percent-box"> - <div class="showtext">{{ dadsa21.count }}%</div> - <div class="percent-line" :style="{width: (dadsa21.count+'%') }"></div> - </div> - </div> - </div> - </div> - </div> - </template> - <template v-else-if="(data.name == '指标下降最大' || data.name == '指标提升最大') && Object.keys(chil.data).length > 0 "> - <div class="box-card" :key="chilIndex"> - <div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title"> - {{ chil.data.name }}项目,{{chil.name}} - <span>{{ chil.data.differ > 0 ? "提升" : "下降"}}</span> - <span :class="{up: chil.data.differ > 0, down: chil.data.differ < 0}">{{ chil.data.differ || 0}}{{ formatTimes('', chil.name) - }}</span> - </div> - <div class="pieRemark"> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress0'" - :data-color="'#F9A825'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.lastCount || 0"></canvas> - <span>{{ objPagesData.contrastDate }}</span> - </div> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress1'" - :data-color="'#33CAAE'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.count || 0"></canvas> - - <span>{{ objPagesData.nowDate }}</span> - </div> - </div> - </div> - </template> - <template v-else-if="(data.name == '指标最高项目' || data.name == '指标最低项目') && Object.keys(chil.data).length > 0 "> - <template v-if="chil.name == '标记顾问率'"> - <div class="box-card" :key="chilIndex"> - <div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title"> - {{ chil.data.name }}项目,{{chil.name}} - <span style="color: #3E50E8">{{ chil.data.rate || 0 }}%</span> - </div> - <div class="pieRemark"> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress0'" - :data-color="'#33CAAE'" :data-unit="'次'" - :data-value="chil.data.data || 0"></canvas> - <span>有效接待</span> - </div> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress1'" - :data-color="'#F9A825'" :data-unit="'个'" - :data-value="chil.data.count || 0"></canvas> - <span>已标记</span> - </div> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress2'" - :data-color="'#F9A825'" :data-unit="'%'" - :data-value="chil.data.rate || 0"></canvas> - <span>标记率</span> - </div> - </div> - </div> - </template> - <template v-else-if="chil.name == '接待量'"> - <div class="box-card" :key="chilIndex"> - <div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title">{{ chil.data.name }}项目,{{chil.name}}<span - style="color: #3E50E8">{{ chil.data.data || 0 - }}</span>次 - </div> - <div class="pieRemark"> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress0'" - :data-color="'#33CAAE'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.data || 0"></canvas> - <span>接待量</span> - </div> - </div> - </div> - </template> - <template v-else-if="chil.name == '违禁接待次数' || chil.name == '平均接待时长' || chil.name == '敏感词触发次数' || chil.name == '有效接待率' || '平均挖掘执行率'"> - <div class="box-card" :key="chilIndex"> - <div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title">{{ chil.data.name }}项目,{{chil.name}}<span - style="color: #3E50E8">{{ chil.data.rate || 0 - }}</span>{{ chil.name | unitText }} - </div> - <div class="pieRemark"> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress0'" - :data-color="'#33CAAE'" data-unit="次" - :data-value="chil.data.data || 0"></canvas> - <span>有效接待</span> - </div> - - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress1'" - :data-color="'#F9A825'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.rate || 0"></canvas> - <span>{{ chil.name }}</span> - </div> - </div> - </div> - </template> - <template v-else> - <div class="box-card" :key="chilIndex"> - <div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title">{{ chil.data.name }}项目,{{chil.name}}<span - style="color: #3E50E8">{{ chil.data.rate || 0 - }}</span>{{ chil.name | unitText }} - </div> - <div class="pieRemark"> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress0'" - :data-color="'#33CAAE'" data-unit="次" - :data-value="chil.data.data || 0"></canvas> - <span>接待量</span> - </div> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress1'" - :data-color="'#F9A825'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.rate || 0"></canvas> - <span>有效接待</span> - - </div> - </div> - </div> - </template> - </template> - <template v-else> - <template v-if="chil.data && Object.keys(chil.data).length > 0"> - <div class="box-card" :key="chilIndex"> - <div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} - <image class="logo" - src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title"> - <span> - {{ chil.data.name }}项目,{{chil.name}} - </span> - <span :class="{up: chil.data.differ > 0, down: chil.data.differ < 0}"> - {{ chil.data.differ || 0}} - </span> - </div> - <div class="pieRemark"> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress0'" - :data-color="'#33CAAE'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.data || 0"></canvas> - <span>接待量</span> - </div> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress1'" - :data-color="'#F9A825'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.rate || 0"></canvas> - <span>有效接待</span> - </div> - </div> - </div> - </template> - </template> - </template> - </template> - - <template v-else-if="data.name == '项目指标变化'"> - <div class="box-card" v-for="(chil, chilIndex) in data.children" :key="chilIndex"> - <div class="title">二、{{ ites.name }}-{{ chil.name }} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - - <div class="tab"> - <el-table - :data="chil.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="项目名称"> - </el-table-column> - <el-table-column - align="center" - prop="data" - :label="objPagesData.nowDate"> - </el-table-column> - <el-table-column - align="center" - prop="lastData" - :label="objPagesData.contrastDate"> - </el-table-column> - <el-table-column - align="center" - prop="differ" - label="涨跌幅"> - <template slot-scope="{row}"> - <span :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ}}</span><span - v-if="row.differ !=0" - :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ > 0 ? '↑' : '↓'}}</span> - </template> - </el-table-column> - </el-table> - </div> - <div class="subtip">备注:涨跌幅为红色表示上升<span class="up">↑</span>,绿色为下降<span class="down">↓</span> - </div> - </div> - </template> - </div> -</div> - - -<!-- 员工分析 --> -<div class="block-box" v-for="(ites, index) in employeeAnalysis" :key="index"> - <div class="block-boxs" v-for="(data, dataIndex) in ites.children" :key="data.name"> - <!-- 提升最高 --> - <template v-for="(chil, chilIndex) in data.children"> - <template - v-if="checkStaffShow(data.name) && chil.name == '平均销讲执行率' && chil.data && Object.keys(chil.data).length > 0"> - <div v-if="chil.data.data" class="box-card"> - <div class="title">三、{{ ites.name }}-{{ chil.name }}{{ data.name }} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title"> - <span> - {{ chil.data.name }}项目{{ chil.data.agentName }}{{ objPagesData.nowDate - }}{{ objPagesData.nowDate.length > 10 ? '' : '月份' }}{{ chil.name }} - </span> - <span>{{ chil.name }} {{ data.name | showWhat }}</span> - <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> - {{ Math.abs(chil.data.count || 0) }}% - </span> - </div> - <div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div> - </div> - <!-- 表格 --> - <div class="box-card" v-if="chil.data.data"> - <div class="title">三、{{ ites.name }}-{{ chil.name }}{{ data.name }} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title"> - <span> - {{ chil.data.name }}项目{{ chil.data.agentName }}{{ objPagesData.nowDate - }}{{ objPagesData.nowDate.length > 10 ? '' : '月份' }}{{ chil.name }} - </span> - <span>{{ chil.name }} {{ data.name | showWhat }}</span> - <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> - {{ Math.abs(chil.data.count || 0) }}% - </span> - </div> - <div class="tab"> - <el-table - :data="chil.data.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="销讲场景"> - </el-table-column> - <el-table-column - align="center" - prop="count" - :label="objPagesData.nowDate"> - </el-table-column> - <el-table-column - align="center" - prop="lastCount" - :label="objPagesData.contrastDate"> - </el-table-column> - <el-table-column - align="center" - prop="differ" - label="对比"> - - <template slot-scope="{row}"> - <span :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ}}</span><span - v-if="row.differ !=0" - :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ > 0 ? '↑' : '↓'}}</span> - </template> - </el-table-column> - </el-table> - </div> - <div class="tip" v-if="chil.analyze">分析:{{ chil.analyze }}</div> - <div class="subtip">备注:涨跌幅为红色表示上升<span class="up">↑</span>,绿色为下降<span class="down">↓</span> - </div> - </div> - <!-- 二级 --> - <div v-if="chil.data.data" class="box-card"> - <div class="title"> - 三、{{ ites.name }}-{{ chil.name }}{{ data.name }} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title"> - <span> - {{ chil.data.name }}项目{{ chil.data.agentName }}{{ objPagesData.nowDate - }}{{ objPagesData.nowDate.length > 10 ? '' : '月份' }}{{ chil.name }} - </span> - <span>{{ chil.name }} {{ data.name | showWhat }}</span> - <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> - {{ Math.abs(chil.data.count || 0) }}% - </span> - </div> - <!-- 循环的box --> - <div v-for="(wqe,adasd) in chil.data.data" :key="adasd"> - <div class="titles">{{ wqe.name }}</div> - <div class="percents"> - <div class="percents-box" v-for="(dadsa21, dsahdahjk2) in wqe.children" - :key="dsahdahjk2"> - <span class="left_label">{{ dadsa21.name }}</span> - <div class="percent-box"> - <div class="showtext">{{ dadsa21.count }}%</div> - <div class="percent-line" :style="{width: (dadsa21.count+'%') }"></div> - </div> - </div> - </div> - </div> - </div> - </template> - <template v-else-if="data.name == '管理者记录'"> - <div class="box-card"> - <div class="title"> - 三、{{ ites.name }}-{{ chil.name }}管理员操作记录 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="tab"> - <el-table - :data="chil.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="项目名称"> - </el-table-column> - <el-table-column - align="center" - prop="loginCount" - label="登录次数"> - </el-table-column> - <el-table-column - align="center" - prop="lookRecordCount" - label="查看接待"> - </el-table-column> - <el-table-column - align="center" - prop="violatedCount" - label="违禁处理"> - </el-table-column> - <el-table-column - align="center" - prop="invaildAuditCount" - label="无效审核"> - </el-table-column> - </el-table> - </div> - </div> - </template> - <template v-else-if="data.name == '员工排名'"> - <div class="box-card"> - <div class="title"> - 三、{{ ites.name }}-{{ chil.name }}{{ data.name }} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <template v-if="chil.name.indexOf('平均') != -1"> - <div class="chart-title" v-if="chil.avg && chil.avg != 0">{{ chil.value }}<span - style="color: #3E50E8">{{ chil.avg || 0 - }}</span>{{ formatTimes('', chil.name) }} - </div> - </template> - <div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div> - </div> - </template> - <template v-else-if="data.name == '提升排名'"> - <div class="box-card" v-if="chil.data && chil.data.length > 0"> - <div class="title"> - 三、{{ ites.name }}-{{ chil.name }}{{data.name}}top{{chil.data.length}} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="tab"> - <el-table - :data="chil.data" - border - header-cell-class-name="header-style" - style="width: 100%"> - <el-table-column - align="center" - prop="name" - label="项目名称"> - </el-table-column> - <el-table-column - align="center" - prop="agentName" - label="员工"> - </el-table-column> - <el-table-column - align="center" - prop="count" - :label="objPagesData.nowDate"> - </el-table-column> - <el-table-column - align="center" - prop="lastCount" - :label="objPagesData.contrastDate"> - </el-table-column> - <el-table-column - align="center" - prop="differ" - label="涨跌幅"> - <template slot-scope="{row}"> - <span :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ}}</span><span - v-if="row.differ !=0" - :class="{up: row.differ > 0, down: row.differ < 0}">{{row.differ > 0 ? '↑' : '↓'}}</span> - </template> - </el-table-column> - </el-table> - </div> - </div> - </template> - <template v-else> - <div class="box-card" - v-if="chil.data && (Object.keys(chil.data).length > 0 || chil.data.length > 0)"> - <!-- | upDownText --> - <div class="title">三、{{ ites.name }}-{{ chil.name }}{{ data.name }} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title">{{ chil.data.name }}的{{ chil.data.agentName }}{{chil.name}}{{ data.name | showWhat }}<span - style="color: #3E50E8">{{ Math.abs(chil.data.differ || 0) - }}</span>{{ formatTimes('', chil.name) }} - </div> - <div class="pieRemark"> - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress0'" - :data-color="'#33CAAE'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.lastCount || 0"></canvas> - <span>{{ objPagesData.contrastDate }}</span> - </div> - - <div class="item"> - <canvas :class="chil.echartsId" :id="chil.echartsId+'Progress1'" - :data-color="'#F9A825'" :data-unit="formatProgress(chil.name)" - :data-value="chil.data.count || 0"></canvas> - <span>{{ objPagesData.nowDate }}</span> - - </div> - </div> - </div> - </template> - </template> - </div> -</div> - -<!-- 用户画像 --> -<div class="block-box"> - <div class="box-card" v-if="customerPortrait.includes('画像触达总览')"> - <div class="title"> - 四、用户画像-总览 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="tab tab-flex"> - <el-table - :data="customerPortraitList" - border - header-cell-class-name="header-style" - style="width: 48%"> - <el-table-column - align="center" - type="index" - width="60px" - label="排名"> - </el-table-column> - <el-table-column - align="center" - prop="name" - label="需求名称"> - </el-table-column> - <el-table-column - align="center" - prop="data" - label="触达客户"> - <template slot-scope="scope"> - <span>{{scope.row.data || 0}}%</span> - </template> - </el-table-column> - <el-table-column - align="center" - class-name="reds" - label="触达项目"> - <template slot-scope="scope"> - <span>{{scope.row.count || 0}}%</span> - </template> - </el-table-column> - </el-table> - </div> - <div class="subtip" style="color: #E7483C;">提示:本次统计仅计算已标记的接待</div> - </div> - - <div class="box-card" v-if="customerPortrait.includes('项目画像触达')" v-for="(item,index) in touchesList"> - <div class="title"> - 四、用户画像-{{item.name}} - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="chart-title">{{item.name}}项目,{{ objPagesData.nowDate - }}{{ objPagesData.nowDate.length > 10 ? '' : '月份' }}的挖掘成功率为<span - style="color: #E7483C">{{item.count}}%</span></div> - <div class="alllistbox"> - <div class="alllist" v-for="(subitem,i) in item.data" @click="movePlace(index)" - style="cursor:pointer;"> - <div class="alllist-text1">{{subitem.name}}</div> - <div class="alllist-text1">{{subitem.count}}</div> - </div> - </div> - <div class="subtip" style="color: #E7483C;">提示:本次统计仅计算已标记的接待</div> - </div> - <div class="box-card" v-if="customerPortrait.includes('项目画像触达')"> - <div class="title"> - 四、用户画像-弱项优化 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> </div> - <div class="advice-name"> - <div class="quetion-mark">问题</div> - 针对【用户画像】中部分画像触达为0 + <div class="label-item"> + <span class="left-label"> 生成时间: </span> + <span>{{ objPagesData.createTime }}</span> </div> - <div class="reason"> - <div class="label">原因:</div> - 1、案场规范问题,导致接待录音数据丢失,以及接待时置业顾问没有提问或客户并未回答,因而影响画像描摹清晰度。</br> - 2、接收到的项目提供的客户画像资料不多。 - </div> - <div class="reason"> - <div class="label">建议:</div> - 1、接待后及时标记;针对「0 触达」模块,增加符合案场话术的后台配置,或进行无效模块的删减。</br> - 2、标记顾问后,顾问可对客户画像进行校准,对客户画像进行完善。 - </div> - </div> -</div> - -<!-- 使用建议 --> -<template v-if="usageSuggestions.length > 0"> - <div class="block-box" - v-if="usageSuggestions.includes('硬件-充电及网络问题') || usageSuggestions.includes('硬件-充电及网络问题解决方案')"> - <div class="box-card" v-if="usageSuggestions.includes('硬件-充电及网络问题')"> - <div class="title">五、使用提升建议 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="advice-name"> - <div class="dot"> - <div class="dot1"></div> - <div class="dot2"></div> - </div> - 硬件-充电及网络问题 - </div> - <div class="question-box"> - <div class="question-item"> - <div class="name">1、未及时充电</div> - <div class="answer">项目由于接待量大导致工牌未及时充电,造成接待过程中工牌没电自动关机。</div> - <div class="method"><span class="label">解决办法:</span>目前可以达成小程序提醒,在低电量和即将超</div> - </div> - <div class="question-item"> - <div class="name">2、离线接待(无网)</div> - <div class="answer">项目出现离线开启录音情况,造成离线接待问</div> - <div class="method"><span class="label">建议:</span>确保工牌有电量的状态下,每次接待开启工牌建议先看一下工牌是否在线,工牌开启地点选在wifi设备附近,确保网络情况良好。 - </div> - </div> - - </div> - </div> - <div class="box-card" v-if="usageSuggestions.includes('硬件-充电及网络问题解决方案')"> - <div class="title">五、使用提升建议 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="advice-name"> - <div class="dot"> - <div class="dot1"></div> - <div class="dot2"></div> - </div> - 硬件-充电及网络问题解决方案 - </div> - <div style="display: flex"> - <div class="list-box"> - <div class="list-item"> - <div class="index">1</div> - <div class="text">点击进入小程序个人页面订阅消息模块。</div> - </div> - <div class="list-item"> - <div class="index">2</div> - <div class="text">关注数智工牌公众号,识别二维码点击【用户绑定】,完成绑定即可。</div> - </div> - <div class="list-item"> - <div class="index">3</div> - <div class="text">设备低电量提醒发送给设备领用人;接待即将超时提醒发送给接待的顾问。</div> - </div> - </div> - <image class="pic" style="width: 250px;display: block;" - src="http://images.2weisou.com/20221125194511gL47NpBB.png"/> - </div> - </div> - </div> - <div class="block-box" - v-if="usageSuggestions.includes('应用-顾问未标记') || usageSuggestions.includes('应用-标记顾问流程')"> - <div class="box-card" v-if="usageSuggestions.includes('应用-顾问未标记')"> - <div class="title">五、使用提升建议 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="advice-name"> - <div class="dot"> - <div class="dot1"></div> - <div class="dot2"></div> - </div> - 应用-顾问未标记 - </div> - <div class="advice-name"> - <div class="quetion-mark">问题</div> - 针对【用户画像】中部分画像触达为0 - </div> - <div class="reason"> - <div class="label">建议一、</div> - 督促顾问形成习惯进行客户角色标记,只有标记才能识别客户画像词语,生成客户画像分析。</br> - </div> - <div class="reason"> - <div class="label">建议二、</div> - 管理者可在小程序【顾问排名】查看未标顾问及未标数量,及时通知置业顾问,或形成相应考核制度辅助监管。</br> - </div> - </div> - <div class="box-card" v-if="usageSuggestions.includes('应用-标记顾问流程')"> - <div class="title">五、使用提升建议 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="advice-name"> - <div class="dot"> - <div class="dot1"></div> - <div class="dot2"></div> - </div> - 应用-标记顾问流程 - </div> - <div class="process"> - <div class="item"> - <image class="pic" src="http://images.2weisou.com/202211251729093vYNRp1i.png"/> - <div class="name">客户接访记录列表</div> - </div> - <div class="item"> - <image class="pic" src="http://images.2weisou.com/20221125173044kTmpxyEm.png"/> - <div class="name">点击接访记录可查看接访详情</div> - </div> - <div class="item"> - <image class="pic" src="http://images.2weisou.com/202211251731018ztwFyRH.png"/> - <div class="name">根据角色分离结果标记置业顾问声音</div> - </div> - <div class="item"> - <image class="pic" src="http://images.2weisou.com/20221125173123zVTd8Ej6.png"/> - <div class="name">标注完成,系统自动标注客户画像</div> - </div> - </div> + </div> - </div> - </div> - <div class="block-box" v-if="usageSuggestions.includes('应用-执行率问题') || usageSuggestions.includes('自定义内容')"> - <div class="box-card" v-if="usageSuggestions.includes('应用-执行率问题')"> - <div class="title">五、使用提升建议 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="advice-name"> - <div class="dot"> - <div class="dot1"></div> - <div class="dot2"></div> - </div> - 应用-执行率问题 - </div> - <div class="advice-name"> - <div class="quetion-mark">问题</div> - 接待销讲分差大 - </div> - <div class="reason"> - <div class="label">原因:</div> - 督促顾问形成习惯进行客户角色标记,只有标记才能识别客户画像词语,生成客户画像分析 - </div> - <div class="reason"> - <div class="label">建议:</div> - 稳定销讲输出,非接待场景请提醒置业顾问不要开启录音。接待时,离客户不要过远,工牌不要用衣物遮挡。如果涉及非接待场景录音等情况,可以向管理者评估是否标记无效,否则影响销讲率。 - </div> - <div class="advice-name"> - <div class="quetion-mark">问题</div> - 场景输出少 - </div> - <div class="reason"> - <div class="label">原因:</div> - 场景输出不彻底,遗漏部分的关键词。 - </div> - <div class="reason"> - <div class="label">建议:</div> - 建议管理员定时抽查置业顾问对加强对销讲词的熟悉程度。建议管理人员考核话术宣贯,并加强督促执行;考核词需要优化更改请及时联系服务人员。 - </div> - <div class="advice-name"> - <div class="quetion-mark">问题</div> - 场景输出少 - </div> - <div class="reason"> - <div class="label">建议:</div> - 建议管理员根据顾问执行情况,适时调整销讲词。 - </div> - </div> - <div class="box-card" v-if="usageSuggestions.includes('自定义内容')"> - <div class="title">五、使用提升建议 - <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> - </div> - <div class="mybtn" @click="centerDialogVisible=true"> - <image src="http://images.2weisou.com/20221125170116L5z8D0Ek.png" class="add-icon"/> - 自定义内容 - </div> - </div> + <div class="box" v-html="objPagesData.data"></div> </div> - <el-dialog - title="修改意见" - :visible.sync="centerDialogVisible" - width="50%" - center> - <el-form ref="form" :model="form" label-width="100px"> - <el-form-item label="建议标题"> - <el-input v-model="form.name"></el-input> - </el-form-item> - <el-form-item label="建议内容"> - <el-input - type="textarea" - :rows="2" - placeholder="请输入内容" - v-model="form.cont"> - </el-input> - </el-form-item> - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button @click="centerDialogVisible = false">取 消</el-button> - <el-button type="primary" @click="submitFun">确 定</el-button> - </span> - </el-dialog> -</template> -</div> - - </div> </template> @@ -1530,8 +238,8 @@ export default { let bgColor = $(this).attr("data-color"); new Progressbar({ id: childs.echartsId + "Progress" + index, - width: '300px', - height: '300px', + width: "300px", + height: "300px", radius: 90, text: unit, value: value, @@ -1572,8 +280,8 @@ export default { let bgColor = $(this).attr("data-color"); new Progressbar({ id: childs.echartsId + "Progress" + index, - width: '300px', - height: '300px', + width: "300px", + height: "300px", radius: 90, text: unit, value: value, @@ -2290,7 +998,7 @@ export default { text: " {a|}", x: "center", y: "center", - subtext: '糟糕!数据不见了', + subtext: "糟糕!数据不见了", itemGap: -20, textStyle: { rich: { @@ -2363,7 +1071,7 @@ export default { return "提升"; } if ((str = "明显下跌")) { - return "下跌" + return "下跌"; } }, }, @@ -2373,6 +1081,7 @@ export default { <style lang="scss" scoped> .pages { padding: 0 20px; + min-height: 100%; } .block-boxs { width: 100%; @@ -2473,7 +1182,7 @@ div { .box-card .percents .percent-box .percent-line { /*width: 80%;*/ height: 100%; - background: rgba(62, 80, 232, .2); + background: rgba(62, 80, 232, 0.2); } .box-card .title .logo { @@ -2533,7 +1242,6 @@ div { // border-bottom: none; } - .alllist:nth-of-type(-n + 5) { border-top: 1px solid #e0e0e0; }