@@ -613,6 +613,15 @@ | |||||
"enablePullDownRefresh": false | "enablePullDownRefresh": false | ||||
} | } | ||||
} | |||||
,{ | |||||
"path" : "warningList/warningList", | |||||
"style" : | |||||
{ | |||||
"navigationBarTitleText": "项目预警", | |||||
"enablePullDownRefresh": false | |||||
} | |||||
} | } | ||||
] | ] | ||||
} | } | ||||
@@ -1,10 +1,12 @@ | |||||
const stayPendingProcessingArr = [{ | |||||
// 待处理 | |||||
const stayPendingProcessingArr = [ | |||||
{ | |||||
title: '录音未开启', | title: '录音未开启', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: true, // 是否展示默认展示一部分 | show: true, // 是否展示默认展示一部分 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
}, | }, | ||||
{ | { | ||||
title: '录音未合并', | title: '录音未合并', | ||||
@@ -25,6 +27,7 @@ const stayPendingProcessingArr = [{ | |||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: true, // 是否展示默认展示一部分 | show: true, // 是否展示默认展示一部分 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
}, | }, | ||||
{ | { | ||||
@@ -54,8 +57,10 @@ const stayPendingProcessingArr = [{ | |||||
] | ] | ||||
// 简报指标 | |||||
const ReceptionBriefingArr = [ | |||||
const ReceptionBriefingArr = [{ | |||||
{ | |||||
title: '接待量', | title: '接待量', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: true, // 是否展示默认展示一部分 | show: true, // 是否展示默认展示一部分 | ||||
@@ -71,16 +76,15 @@ const ReceptionBriefingArr = [{ | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
}, | }, | ||||
{ | { | ||||
title: '正在接待', | title: '正在接待', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | |||||
checked: false, // 是否选中 | |||||
show: true, // 是否展示默认展示一部分 | |||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
checked: false, // 是否选中 | |||||
}, | }, | ||||
{ | { | ||||
title: '复访接待', | title: '复访接待', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
@@ -179,27 +183,22 @@ const ReceptionBriefingArr = [{ | |||||
}, | }, | ||||
] | ] | ||||
const IndexRankingArr = [{ | |||||
title: '接待量', | |||||
params: '', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | |||||
// 指标排名 | |||||
const IndexRankingArr = [ | |||||
checked: false, // 是否选中 | |||||
data: 0, // 对应展示的值 | |||||
}, | |||||
{ | { | ||||
title: '有效接待', | |||||
title: '接待量', | |||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
{ | { | ||||
title: '正在接待', | |||||
title: '有效接待', | |||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -207,7 +206,7 @@ const IndexRankingArr = [{ | |||||
title: '复访接待', | title: '复访接待', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -215,7 +214,7 @@ const IndexRankingArr = [{ | |||||
title: '违禁接待', | title: '违禁接待', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -223,7 +222,7 @@ const IndexRankingArr = [{ | |||||
title: '无录音', | title: '无录音', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -231,7 +230,7 @@ const IndexRankingArr = [{ | |||||
title: '平均挖掘执行率', | title: '平均挖掘执行率', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -239,7 +238,7 @@ const IndexRankingArr = [{ | |||||
title: '平均销讲执行率', | title: '平均销讲执行率', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -247,7 +246,7 @@ const IndexRankingArr = [{ | |||||
title: '平均客户意向度', | title: '平均客户意向度', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -255,7 +254,7 @@ const IndexRankingArr = [{ | |||||
title: '平均挖掘成功率', | title: '平均挖掘成功率', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -263,7 +262,7 @@ const IndexRankingArr = [{ | |||||
title: '录音开启失败', | title: '录音开启失败', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -271,7 +270,7 @@ const IndexRankingArr = [{ | |||||
title: '平均接待时长', | title: '平均接待时长', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -279,7 +278,7 @@ const IndexRankingArr = [{ | |||||
title: '录音开启平均时长', | title: '录音开启平均时长', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -287,7 +286,7 @@ const IndexRankingArr = [{ | |||||
title: '录音开启率', | title: '录音开启率', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
@@ -295,40 +294,33 @@ const IndexRankingArr = [{ | |||||
title: '平均信号强度', | title: '平均信号强度', | ||||
params: '', // 后端定义参数 | params: '', // 后端定义参数 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
isShowCity: true, // 默认展示按城市 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
] | ] | ||||
// 趋势 | |||||
const IndicatorTrendsArr = [ | |||||
const IndicatorTrendsArr = [{ | |||||
{ | |||||
title: '接待量', | title: '接待量', | ||||
params: '', // 后端定义参数 | |||||
params: 'receptionCount', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
{ | { | ||||
title: '有效接待', | title: '有效接待', | ||||
params: '', // 后端定义参数 | |||||
params: 'activeCustomer', // 后端定义参数 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | }, | ||||
{ | |||||
title: '正在接待', | |||||
params: '', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | |||||
checked: false, // 是否选中 | |||||
data: 0, // 对应展示的值 | |||||
}, | |||||
{ | { | ||||
title: '复访接待', | title: '复访接待', | ||||
params: '', // 后端定义参数 | |||||
params: 'visitAgainCount', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -336,7 +328,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '违禁接待', | title: '违禁接待', | ||||
params: '', // 后端定义参数 | |||||
params: 'prohibitedCustomer', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -352,7 +344,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '平均挖掘执行率', | title: '平均挖掘执行率', | ||||
params: '', // 后端定义参数 | |||||
params: 'wordFraction', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -360,7 +352,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '平均销讲执行率', | title: '平均销讲执行率', | ||||
params: '', // 后端定义参数 | |||||
params: 'fraction', // 后端定义参数 | |||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
@@ -368,7 +360,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '平均客户意向度', | title: '平均客户意向度', | ||||
params: '', // 后端定义参数 | |||||
params: 'sumLevelFraction ', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -376,7 +368,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '平均挖掘成功率', | title: '平均挖掘成功率', | ||||
params: '', // 后端定义参数 | |||||
params: 'wordFinishFraction', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -384,7 +376,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '录音开启失败', | title: '录音开启失败', | ||||
params: '', // 后端定义参数 | |||||
params: 'recordingFailed', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -392,7 +384,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '平均接待时长', | title: '平均接待时长', | ||||
params: '', // 后端定义参数 | |||||
params: 'avgDuration', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -400,7 +392,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '录音开启平均时长', | title: '录音开启平均时长', | ||||
params: '', // 后端定义参数 | |||||
params: 'avgStartRecording', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -408,7 +400,7 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '录音开启率', | title: '录音开启率', | ||||
params: '', // 后端定义参数 | |||||
params: 'recordingStartOdds', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
@@ -416,23 +408,15 @@ const IndicatorTrendsArr = [{ | |||||
}, | }, | ||||
{ | { | ||||
title: '平均信号强度', | title: '平均信号强度', | ||||
params: '', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | |||||
checked: false, // 是否选中 | |||||
data: 0, // 对应展示的值 | |||||
}, | |||||
{ | |||||
title: '接待质量', | |||||
params: '', // 后端定义参数 | |||||
params: 'avgSignalDevice', // 后端定义参数 | |||||
show: false, // 是否展示默认展示一部分 | show: false, // 是否展示默认展示一部分 | ||||
checked: false, // 是否选中 | checked: false, // 是否选中 | ||||
data: 0, // 对应展示的值 | data: 0, // 对应展示的值 | ||||
}, | |||||
} | |||||
] | ] | ||||
// 分布 | |||||
const IndicatorDistributionArr = [ | const IndicatorDistributionArr = [ | ||||
{ | { | ||||
@@ -525,7 +509,6 @@ const IndicatorDistributionArr = [ | |||||
}, | }, | ||||
] | ] | ||||
export { | export { | ||||
stayPendingProcessingArr, | stayPendingProcessingArr, | ||||
ReceptionBriefingArr, | ReceptionBriefingArr, | ||||
@@ -67,19 +67,25 @@ | |||||
{{item.title}}排名(top10) | {{item.title}}排名(top10) | ||||
</view> | </view> | ||||
<view class="rside"> | <view class="rside"> | ||||
<view class="rside-item"> | |||||
<view class="rside-item" :class="{active: item.isShowCity}" @click="checkCity(item, '按项目')"> | |||||
按项目 | 按项目 | ||||
</view> | </view> | ||||
<view class="rside-item"> | |||||
<view class="rside-item" :class="{active: !item.isShowCity}" @click="checkCity(item, '按城市')"> | |||||
按城市 | 按城市 | ||||
</view> | </view> | ||||
</view> | </view> | ||||
</view> | </view> | ||||
<view class="echarts"> | <view class="echarts"> | ||||
<template v-if="item.lineOptsect"> | |||||
<qiun-data-charts :type="item.type" :chartData="item.lineOptsect" :opts="item.lineOpts" | |||||
background="none" :ontouch="true" :canvasId="item.canvasId" :canvas2d="true" /> | |||||
<template v-if="item.type"> | |||||
<template v-if="item.isShowCity"> | |||||
<qiun-data-charts :type="item.type" :chartData="item.lineOptsect" :opts="item.lineOpts" | |||||
background="none" :ontouch="true" :canvasId="item.canvasId" :canvas2d="true" /> | |||||
</template> | |||||
<template v-else> | |||||
<qiun-data-charts :type="item.type" :chartData="item.lineOptsect1" :opts="item.lineOpts" | |||||
background="none" :ontouch="true" :canvasId="item.canvasId1" :canvas2d="true" /> | |||||
</template> | |||||
</template> | </template> | ||||
<template v-else> | <template v-else> | ||||
<view class="empty"> | <view class="empty"> | ||||
@@ -143,7 +149,7 @@ | |||||
</view> | </view> | ||||
<view class="echarts"> | <view class="echarts"> | ||||
<template v-if="item.lineOptsect"> | |||||
<template v-if="item.type"> | |||||
<qiun-data-charts :type="item.type" :chartData="item.lineOptsect" :opts="item.lineOpts" | <qiun-data-charts :type="item.type" :chartData="item.lineOptsect" :opts="item.lineOpts" | ||||
background="none" :ontouch="true" :canvasId="item.canvasId" :canvas2d="true" /> | background="none" :ontouch="true" :canvasId="item.canvasId" :canvas2d="true" /> | ||||
</template> | </template> | ||||
@@ -174,10 +180,12 @@ | |||||
<view :class="{ activecllasscet: params.dateType == 0 }" @click="tabtimetap(0, '今天')">今天</view> | <view :class="{ activecllasscet: params.dateType == 0 }" @click="tabtimetap(0, '今天')">今天</view> | ||||
</view> | </view> | ||||
<view class="tabbox"> | <view class="tabbox"> | ||||
<view :class="{ activecllasscet: params.dateType == 1 }" @click="tabtimetap(1, '近七天')">近七天</view> | |||||
<view :class="{ activecllasscet: params.dateType == 1 }" @click="tabtimetap(1, '近七天')">近七天 | |||||
</view> | |||||
</view> | </view> | ||||
<view class="tabbox"> | <view class="tabbox"> | ||||
<view :class="{ activecllasscet: params.dateType == 2 }" @click="tabtimetap(2, '近30天')">近30天</view> | |||||
<view :class="{ activecllasscet: params.dateType == 2 }" @click="tabtimetap(2, '近30天')">近30天 | |||||
</view> | |||||
</view> | </view> | ||||
<view class="tabbox"> | <view class="tabbox"> | ||||
<view :class="{ activecllasscet: params.dateType == null }" @click="tabtimetap(null, '自定义')">自定义 | <view :class="{ activecllasscet: params.dateType == null }" @click="tabtimetap(null, '自定义')">自定义 | ||||
@@ -202,11 +210,12 @@ | |||||
export default { | export default { | ||||
data() { | data() { | ||||
return { | return { | ||||
showTimeText: '今天', // 展示文字 | |||||
showTimeText: '近七天', // 展示文字 | |||||
showBeText: '公司', // | showBeText: '公司', // | ||||
showBeText1: '项目', // | showBeText1: '项目', // | ||||
showTemplate: false, | showTemplate: false, | ||||
screenShow: false, // 日期选择器 | screenShow: false, // 日期选择器 | ||||
totalTimeShow: false, // 日期选择器 | |||||
templateList: [], // 销讲业务 | templateList: [], // 销讲业务 | ||||
houseList: [], // 项目列表 | houseList: [], // 项目列表 | ||||
companyList: [], // 项目列表 | companyList: [], // 项目列表 | ||||
@@ -215,18 +224,41 @@ | |||||
IndexRankingArr: allArrList.IndexRankingArr, // 排名 | IndexRankingArr: allArrList.IndexRankingArr, // 排名 | ||||
IndicatorTrendsArr: allArrList.IndicatorTrendsArr, // 排名 | IndicatorTrendsArr: allArrList.IndicatorTrendsArr, // 排名 | ||||
IndicatorDistributionArr: allArrList.IndicatorDistributionArr, // 排名 | IndicatorDistributionArr: allArrList.IndicatorDistributionArr, // 排名 | ||||
params: { | params: { | ||||
staDate: '', //开启时间 | staDate: '', //开启时间 | ||||
endDate: '', // 结束时间 | endDate: '', // 结束时间 | ||||
houseId: '', // 楼盘 | houseId: '', // 楼盘 | ||||
orgCode: '', // 公司code | orgCode: '', // 公司code | ||||
dateType: 0, // 自定义时间 今天0 昨天1 近七天2 | |||||
dateType: 1, // 自定义时间 今天0 近七天1 30天2 | |||||
}, | }, | ||||
needFormatArr: ['stayPendingProcessingArr', 'ReceptionBriefingArr', 'IndexRankingArr', | needFormatArr: ['stayPendingProcessingArr', 'ReceptionBriefingArr', 'IndexRankingArr', | ||||
'IndicatorTrendsArr', 'IndicatorDistributionArr' | 'IndicatorTrendsArr', 'IndicatorDistributionArr' | ||||
], // 需要格式化的数组 | ], // 需要格式化的数组 | ||||
publicId: '', // 标识区别选择的是公司还是项目 | publicId: '', // 标识区别选择的是公司还是项目 | ||||
publicOpts: { | |||||
color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", | |||||
"#ea7ccc" | |||||
], | |||||
padding: [15, 10, 20, 15], | |||||
enableScroll: false, | |||||
legend: {}, | |||||
xAxis: { | |||||
rotateLabel: true, | |||||
rotateAngle: 90, | |||||
fontSize: 10, | |||||
}, | |||||
yAxis: { | |||||
gridType: "dash", | |||||
}, | |||||
extra: { | |||||
line: { | |||||
type: "straight", | |||||
width: 2, | |||||
activeType: "hollow" | |||||
} | |||||
} | |||||
} | |||||
}; | }; | ||||
}, | }, | ||||
@@ -238,7 +270,7 @@ | |||||
methods: { | methods: { | ||||
// 字典 | // 字典 | ||||
biDictionary() { | biDictionary() { | ||||
this.$u.get('/customer/biDict').then(res => { | this.$u.get('/customer/biDict').then(res => { | ||||
@@ -250,8 +282,9 @@ | |||||
indexType: index | indexType: index | ||||
} | } | ||||
}) | }) | ||||
let arr1 = res.filter(arr => arr.indexType == index) | let arr1 = res.filter(arr => arr.indexType == index) | ||||
arr1.map(ie => { | arr1.map(ie => { | ||||
let objs = this[item].findIndex(obj => { | let objs = this[item].findIndex(obj => { | ||||
return obj.title == ie.indexName && obj.indexType == ie | return obj.title == ie.indexName && obj.indexType == ie | ||||
@@ -264,12 +297,14 @@ | |||||
} | } | ||||
}) | }) | ||||
}, | }, | ||||
// 回显 | // 回显 | ||||
getFindBiByAccountId() { | getFindBiByAccountId() { | ||||
this.$u.get('/customer/findBiByAccountId').then(res => { | this.$u.get('/customer/findBiByAccountId').then(res => { | ||||
if (res) { | if (res) { | ||||
let arr = [...res.index1.split(','), ...res.index2.split(','), ...res.index3.split(','), ...res.index4.split(','), ...res.index5.split(',')] | |||||
let arr = [...res.index1.split(','), ...res.index2.split(','), ...res.index3.split(','), | |||||
...res.index4.split(','), ...res.index5.split(',') | |||||
] | |||||
this.needFormatArr.forEach(item => { | this.needFormatArr.forEach(item => { | ||||
this[item].forEach(items => { | this[item].forEach(items => { | ||||
let obj = arr.find(obj => obj == items.id) | let obj = arr.find(obj => obj == items.id) | ||||
@@ -280,18 +315,29 @@ | |||||
} | } | ||||
}) | }) | ||||
}, | }, | ||||
async initPage() { | async initPage() { | ||||
await this.biDictionary() | await this.biDictionary() | ||||
await this.bishowIndex1() | await this.bishowIndex1() | ||||
await this.bishowIndex2() | await this.bishowIndex2() | ||||
// await this.bishowIndex3() | |||||
await this.bishowIndex4() | |||||
this.$nextTick(() => { | |||||
this.bishowIndex3() | |||||
this.bishowIndex4() | |||||
this.bishowIndex5() | |||||
}) | |||||
}, | |||||
checkCity(item, name) { | |||||
if (name == '按项目') { | |||||
item.isShowCity = true | |||||
} else { | |||||
item.isShowCity = false | |||||
} | |||||
this.$forceUpdate() | |||||
}, | }, | ||||
bishowIndex1() { | bishowIndex1() { | ||||
this.$u.post('/customer/bishowIndex1', this.params).then(res => { | this.$u.post('/customer/bishowIndex1', this.params).then(res => { | ||||
console.log(res) | |||||
if (res) { | if (res) { | ||||
this.stayPendingProcessingArr.forEach(item => { | this.stayPendingProcessingArr.forEach(item => { | ||||
item.data = res[item.id] || 0 | item.data = res[item.id] || 0 | ||||
@@ -299,10 +345,9 @@ | |||||
} | } | ||||
}) | }) | ||||
}, | }, | ||||
bishowIndex2() { | bishowIndex2() { | ||||
this.$u.post('/customer/bishowIndex2', this.params).then(res => { | this.$u.post('/customer/bishowIndex2', this.params).then(res => { | ||||
console.log(res) | |||||
if (res) { | if (res) { | ||||
this.ReceptionBriefingArr.forEach(item => { | this.ReceptionBriefingArr.forEach(item => { | ||||
item.data = res[item.id] || 0 | item.data = res[item.id] || 0 | ||||
@@ -310,26 +355,109 @@ | |||||
} | } | ||||
}) | }) | ||||
}, | }, | ||||
bishowIndex3() { | bishowIndex3() { | ||||
this.$u.post('/customer/bishowIndex3', this.params).then(res => { | this.$u.post('/customer/bishowIndex3', this.params).then(res => { | ||||
console.log(res) | |||||
// if (res) { | |||||
// this.IndexRankingArr.forEach(item => { | |||||
// item.data = res[item.id] || 0 | |||||
// }) | |||||
// } | |||||
if (res) { | |||||
this.IndexRankingArr.forEach(item => { | |||||
if (res[item.id] && res[item.id].data.length > 0) { | |||||
// 按项目 | |||||
item.canvasId = `IndexRankingArr${item.id}` | |||||
item.lineOptsect = { | |||||
categories: res[item.id].data.map(itme => { | |||||
return itme.name | |||||
}), | |||||
series: [{ | |||||
name: item.title, | |||||
data: JSON.parse(JSON.stringify(res[item.id].data)), | |||||
}] | |||||
} | |||||
item.type = 'column' | |||||
item.lineOpts = this.publicOpts | |||||
item.lineOpts.legend = { | |||||
show: false | |||||
} | |||||
// 按城市 | |||||
item.canvasId1 = `IndexRankingArrs${item.id}` | |||||
item.lineOptsect1 = { | |||||
categories: res[item.id].data2.map(itme => { | |||||
return itme.name | |||||
}), | |||||
series: [{ | |||||
name: item.title, | |||||
data: JSON.parse(JSON.stringify(res[item.id].data2)) | |||||
}] | |||||
} | |||||
this.$forceUpdate() | |||||
} | |||||
}) | |||||
} | |||||
}) | |||||
}, | |||||
bishowIndex5() { | |||||
this.$u.post('/customer/bishowIndex5', this.params).then(res => { | |||||
if (res) { | |||||
this.IndicatorDistributionArr.forEach(item => { | |||||
if (res[item.id]) { | |||||
console.log('进来了') | |||||
item.type = 'pie' | |||||
item.canvasId = `IndicatorDistributionArrs${item.id}` | |||||
item.lineOptsect = { | |||||
series: [{ | |||||
data: JSON.parse(JSON.stringify(res[item.id])) | |||||
}] | |||||
} | |||||
item.lineOpts = { | |||||
color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", | |||||
"#3CA272", "#FC8452", "#9A60B4", "#ea7ccc" | |||||
], | |||||
padding: [5, 5, 5, 5], | |||||
enableScroll: false, | |||||
extra: { | |||||
pie: { | |||||
activeOpacity: 0.5, | |||||
activeRadius: 10, | |||||
offsetAngle: 0, | |||||
labelWidth: 15, | |||||
border: false, | |||||
borderWidth: 3, | |||||
borderColor: "#FFFFFF" | |||||
} | |||||
} | |||||
} | |||||
this.$forceUpdate() | |||||
} | |||||
}) | |||||
} | |||||
}) | }) | ||||
}, | }, | ||||
bishowIndex4() { | bishowIndex4() { | ||||
this.$u.post('/customer/bishowIndex4', this.params).then(res => { | this.$u.post('/customer/bishowIndex4', this.params).then(res => { | ||||
console.log(res) | |||||
// if (res) { | |||||
// this.IndexRankingArr.forEach(item => { | |||||
// item.data = res[item.id] || 0 | |||||
// }) | |||||
// } | |||||
if (res) { | |||||
this.IndicatorTrendsArr.forEach(item => { | |||||
if (res[item.id]) { | |||||
item.canvasId = `IndicatorTrendsArr${item.id}` | |||||
item.lineOptsect = { | |||||
categories: [], | |||||
series: [{ | |||||
name: item.title, | |||||
data: [] | |||||
}] | |||||
} | |||||
item.type = 'line' | |||||
item.lineOpts = this.publicOpts | |||||
res[item.id].forEach(itme => { | |||||
item.lineOptsect.categories.push(itme.statDate.split(' ')[0]) | |||||
item.lineOptsect.series[0].data.push(itme[item.params] || 0) | |||||
}) | |||||
this.$forceUpdate() | |||||
} | |||||
}) | |||||
} | |||||
}) | }) | ||||
}, | }, | ||||
@@ -338,13 +466,13 @@ | |||||
url: '/pages/center/RuleEditing/RuleEditing' | url: '/pages/center/RuleEditing/RuleEditing' | ||||
}) | }) | ||||
}, | }, | ||||
showSelect(params) { | showSelect(params) { | ||||
this.publicId = params | this.publicId = params | ||||
this.templateList = this[params] | this.templateList = this[params] | ||||
this.showTemplate = true | this.showTemplate = true | ||||
}, | }, | ||||
// 获取项目 | // 获取项目 | ||||
getHouse() { | getHouse() { | ||||
uni.request({ | uni.request({ | ||||
@@ -364,7 +492,7 @@ | |||||
} | } | ||||
}) | }) | ||||
}, | }, | ||||
// 获取公司 | // 获取公司 | ||||
getCompany() { | getCompany() { | ||||
this.$u.post('/customer/getMyOrg').then(res => { | this.$u.post('/customer/getMyOrg').then(res => { | ||||
@@ -393,7 +521,7 @@ | |||||
this.initPage() | this.initPage() | ||||
} | } | ||||
}, | }, | ||||
//自定义时间 | //自定义时间 | ||||
totalTimeChange(e) { | totalTimeChange(e) { | ||||
this.screenShow = false | this.screenShow = false | ||||
@@ -419,7 +547,7 @@ | |||||
this.showBeText = e[0].label | this.showBeText = e[0].label | ||||
this.params.orgCode = e[0].value | this.params.orgCode = e[0].value | ||||
} | } | ||||
}, | }, | ||||
}, | }, | ||||
} | } | ||||
@@ -455,38 +583,38 @@ | |||||
text-overflow: ellipsis; | text-overflow: ellipsis; | ||||
} | } | ||||
} | } | ||||
.screen { | .screen { | ||||
//时间切换的样式 | |||||
.boxtittab { | |||||
width: 100%; | |||||
//时间切换的样式 | |||||
.boxtittab { | |||||
width: 100%; | |||||
height: 100%; | |||||
background: #FFFFFF; | |||||
display: flex; | |||||
flex-direction: column; | |||||
border: none; | |||||
.tabbox { | |||||
flex: 1; | |||||
height: 100%; | height: 100%; | ||||
background: #FFFFFF; | |||||
text-align: center; | |||||
line-height: 92rpx; | |||||
color: #666666; | |||||
font-size: 28rpx; | |||||
font-weight: 400; | |||||
display: flex; | display: flex; | ||||
flex-direction: column; | |||||
border: none; | |||||
.tabbox { | |||||
flex: 1; | |||||
height: 100%; | |||||
text-align: center; | |||||
line-height: 92rpx; | |||||
color: #666666; | |||||
font-size: 28rpx; | |||||
font-weight: 400; | |||||
display: flex; | |||||
justify-content: center; | |||||
.activecllasscet { | |||||
width: 96rpx; | |||||
color: #2671E2; | |||||
font-weight: 600; | |||||
border-bottom: 4rpx solid #2671E2; | |||||
} | |||||
justify-content: center; | |||||
.activecllasscet { | |||||
width: 96rpx; | |||||
color: #2671E2; | |||||
font-weight: 600; | |||||
border-bottom: 4rpx solid #2671E2; | |||||
} | } | ||||
} | } | ||||
} | |||||
} | } | ||||
.edit { | .edit { | ||||
@@ -556,7 +684,7 @@ | |||||
.rside-item { | .rside-item { | ||||
margin: 0 10rpx 0 0; | margin: 0 10rpx 0 0; | ||||
&.class { | |||||
&.active { | |||||
color: #1890FF; | color: #1890FF; | ||||
} | } | ||||
} | } | ||||
@@ -0,0 +1,125 @@ | |||||
<template> | |||||
<view class="pages"> | |||||
<block v-for="(data, index) in list"> | |||||
<view class="page-box" v-if="data.list.length > 0" :key="index"> | |||||
<view class="title"> | |||||
<text class="a1"> | |||||
{{ data.houseName || '' }} | |||||
</text> | |||||
<text @click="updateShowStatus(data)">已了解</text> | |||||
</view> | |||||
<u-checkbox-group @change="checkboxGroupChange" shape="circle"> | |||||
<block v-for="item in data.list" :key="item.id"> | |||||
<u-checkbox :disabled="item.showStatus == 0" @change="checkboxChange" v-model="item.checked"> | |||||
<view :style="{ textDecoration: item.showStatus == 0 ? 'line-through' : 'none'}"> | |||||
{{ item.createTime }} | |||||
</view> | |||||
<view :style="{ textDecoration: item.showStatus == 0 ? 'line-through' : 'none'}"> | |||||
{{ item.message }} | |||||
</view> | |||||
</u-checkbox> | |||||
</block> | |||||
</u-checkbox-group> | |||||
</view> | |||||
</block> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
data() { | |||||
return { | |||||
list: [], // | |||||
} | |||||
}, | |||||
onLoad() { | |||||
this.getWarningList() | |||||
}, | |||||
methods: { | |||||
// | |||||
updateShowStatus(data) { | |||||
let arr = data.list.filter(item => item.checked).map(items => {return items.id}) | |||||
console.log(arr) | |||||
if (arr.length == 0) { | |||||
uni.showToast({ | |||||
title: '请选择已了解的消息~', | |||||
icon: "none", | |||||
duration: 2000, | |||||
}) | |||||
return | |||||
} | |||||
this.$u.get('/customer/updateShowStatus', { | |||||
ids: arr.join(',') | |||||
}).then(res => { | |||||
uni.showToast({ | |||||
title: '提交成功', | |||||
icon: "none", | |||||
duration: 2000, | |||||
}) | |||||
setTimeout(() => { | |||||
this.getWarningList() | |||||
}, 1000) | |||||
}) | |||||
}, | |||||
// 项目预警列表 | |||||
getWarningList() { | |||||
this.$u.get('/customer/warningList').then(res => { | |||||
if (res) { | |||||
this.list = res.records.map(item => { | |||||
item.list.forEach(items => { | |||||
items.checked = items.showStatus == 0 ? true : false | |||||
}) | |||||
return item | |||||
}) | |||||
this.$forceUpdate() | |||||
} | |||||
}) | |||||
}, | |||||
// 选中某个复选框时,由checkbox时触发 | |||||
checkboxChange(e) { | |||||
console.log(e); | |||||
}, | |||||
// 选中任一checkbox时,由checkbox-group触发 | |||||
checkboxGroupChange(e) { | |||||
console.log(e); | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style lang="scss" scoped> | |||||
.pages { | |||||
padding: 20rpx 0; | |||||
width: 100vw; | |||||
min-height: 100vh; | |||||
background: #f2f2f2; | |||||
display: flex; | |||||
flex-direction: column; | |||||
.page-box { | |||||
margin: 0 auto 20rpx; | |||||
padding: 20rpx; | |||||
width: 686rpx; | |||||
background: #fff; | |||||
border-radius: 16rpx; | |||||
box-shadow: 0rpx 0rpx 7rpx #82848A; | |||||
.title { | |||||
display: flex; | |||||
justify-content: space-between; | |||||
.a1 { | |||||
font-size: 32rpx; | |||||
font-weight: 600; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |
@@ -325,7 +325,7 @@ | |||||
<view class="commonly-text">数据看板</view> | <view class="commonly-text">数据看板</view> | ||||
</view> | </view> | ||||
<view class="commonly" @click="toRequireAnalysis()" v-if="permissions.xmyj_sy"> | |||||
<view class="commonly" @click="toWoring" v-if="permissions.xmyj_sy"> | |||||
<view class="commonly-img"> | <view class="commonly-img"> | ||||
<image class="commonly-img1" src="https://static.quhouse.com/20230523104803.jpg" mode=""> | <image class="commonly-img1" src="https://static.quhouse.com/20230523104803.jpg" mode=""> | ||||
</image> | </image> | ||||
@@ -352,7 +352,8 @@ | |||||
<view class="commonly-img"> | <view class="commonly-img"> | ||||
<image class="commonly-img1" | <image class="commonly-img1" | ||||
src="https://static.quhouse.com/759c2e3240e54213827196559ce38fa4.png" mode=""></image> | src="https://static.quhouse.com/759c2e3240e54213827196559ce38fa4.png" mode=""></image> | ||||
</view> <view class="commonly-text">集团对比</view> | |||||
</view> | |||||
<view class="commonly-text">集团对比</view> | |||||
</view> | </view> | ||||
<view class="commonly" @click="Piabodata('设备管理')" v-if="permissions.sbgl"> | <view class="commonly" @click="Piabodata('设备管理')" v-if="permissions.sbgl"> | ||||
<view class="commonly-img"> | <view class="commonly-img"> | ||||
@@ -476,11 +477,11 @@ | |||||
return permissions.xjfx || permissions.lpdb || permissions.gwpm || permissions.xjqs || permissions | return permissions.xjfx || permissions.lpdb || permissions.gwpm || permissions.xjqs || permissions | ||||
.sjkb_sy || permissions.xmyj_sy | .sjkb_sy || permissions.xmyj_sy | ||||
}, | }, | ||||
// 接待管理 | // 接待管理 | ||||
hospitalityShow() { | hospitalityShow() { | ||||
let permissions = this.permissions | let permissions = this.permissions | ||||
return permissions.jdjl||permissions.wjjl||permissions.tddb | |||||
return permissions.jdjl || permissions.wjjl || permissions.tddb | |||||
}, | }, | ||||
}, | }, | ||||
@@ -609,13 +610,19 @@ | |||||
}); | }); | ||||
}, | }, | ||||
toWoring() { | |||||
uni.navigateTo({ | |||||
url: '/pages/center/warningList/warningList' | |||||
}); | |||||
}, | |||||
// 需求挖掘分析 | // 需求挖掘分析 | ||||
toRequireAnalysis() { | toRequireAnalysis() { | ||||
uni.navigateTo({ | uni.navigateTo({ | ||||
url: '/pages/center/Piabodata/requireminingAnalysis' | url: '/pages/center/Piabodata/requireminingAnalysis' | ||||
}); | }); | ||||
}, | }, | ||||
updateInit() { | updateInit() { | ||||
this.$u.get(config.service.notReadNum, { | this.$u.get(config.service.notReadNum, { | ||||
id: uni.getStorageSync('weapp_session_userInfo_data').accountId, | id: uni.getStorageSync('weapp_session_userInfo_data').accountId, | ||||