|
@@ -9,33 +9,33 @@
|
|
|
<view class="air-item">
|
|
|
<view class="test-item">
|
|
|
<view class="name">总面积(㎡)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{houseData.totalArea}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">已租面积(㎡)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{houseData.remainArea}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">剩余面积(㎡)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{houseData.haveRentedArea}}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="air-item">
|
|
|
<view class="test-item">
|
|
|
<view class="name">总房源(个)</view>
|
|
|
- <view class="number">64</view>
|
|
|
+ <view class="number">{{houseData.totalRoom}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">已租房源(个)</view>
|
|
|
- <view class="number">63</view>
|
|
|
+ <view class="number">{{houseData.remainRoom}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">剩余房源(个)</view>
|
|
|
- <view class="number">1</view>
|
|
|
+ <view class="number">{{houseData.haveRentedRoom}}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -45,8 +45,9 @@
|
|
|
<view class="title-line"></view>
|
|
|
<view class="title-label">费用管理</view>
|
|
|
<view class="title-tab">
|
|
|
- <uv-subsection :list="list" :current="current" activeColor="#08979c"
|
|
|
- custom-style="border-radius: 16rpx;" custom-item-style="border-radius: 12rpx;" @change="change">
|
|
|
+ <uv-subsection :list="billList" :current="billIndex" activeColor="#08979c"
|
|
|
+ custom-style="border-radius: 16rpx;" custom-item-style="border-radius: 12rpx;"
|
|
|
+ @change="changeBill">
|
|
|
</uv-subsection>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -56,17 +57,17 @@
|
|
|
<view class="air-item">
|
|
|
<view class="test-item">
|
|
|
<view class="name">应收(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.property.receivable}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">已收(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.property.received}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">逾期(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.property.overdue}}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -75,17 +76,17 @@
|
|
|
<view class="air-item">
|
|
|
<view class="test-item">
|
|
|
<view class="name">应收(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.rent.receivable}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">已收(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.rent.received}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">逾期(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.rent.overdue}}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -94,17 +95,17 @@
|
|
|
<view class="air-item">
|
|
|
<view class="test-item">
|
|
|
<view class="name">应收(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.hydropower.receivable}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">已收(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.hydropower.received}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">逾期(元)</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{nowPaymentData.hydropower.overdue}}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -117,7 +118,7 @@
|
|
|
</view>
|
|
|
<view class="project-content">
|
|
|
<view class="remind-chart">
|
|
|
- <qiun-data-charts type="pie" :opts="opts" :chartData="chartData" :canvas2d="true"
|
|
|
+ <qiun-data-charts type="pie" :opts="remindData.option" :chartData="remindData.data" :canvas2d="true"
|
|
|
canvasId="remind1">
|
|
|
</qiun-data-charts>
|
|
|
</view>
|
|
@@ -133,21 +134,27 @@
|
|
|
<view class="order-item">
|
|
|
<view class="order-content">
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">
|
|
|
+ {{orderData.internal.totalNumber}}
|
|
|
+ </view>
|
|
|
<view class="order-label">工单数</view>
|
|
|
</view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">
|
|
|
+ {{orderData.internal.completedNumber}}
|
|
|
+ </view>
|
|
|
<view class="order-label">已完成</view>
|
|
|
</view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">
|
|
|
+ {{orderData.internal.incompleteNumber}}
|
|
|
+ </view>
|
|
|
<view class="order-label">未完成</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="order-chart">
|
|
|
- <qiun-data-charts type="arcbar" :opts="orderOpts" :chartData="orderChartData" :canvas2d="true"
|
|
|
- canvasId="order1">
|
|
|
+ <qiun-data-charts type="arcbar" :opts="internal.option" :chartData="internal.data"
|
|
|
+ :canvas2d="true" canvasId="order1">
|
|
|
</qiun-data-charts>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -155,21 +162,21 @@
|
|
|
<view class="order-item">
|
|
|
<view class="order-content">
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{orderData.external.totalNumber}}</view>
|
|
|
<view class="order-label">工单数</view>
|
|
|
</view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{orderData.external.completedNumber}}</view>
|
|
|
<view class="order-label">已完成</view>
|
|
|
</view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{orderData.external.incompleteNumber}}</view>
|
|
|
<view class="order-label">未完成</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="order-chart">
|
|
|
- <qiun-data-charts type="arcbar" :opts="orderOpts" :chartData="orderChartData" :canvas2d="true"
|
|
|
- canvasId="order2">
|
|
|
+ <qiun-data-charts type="arcbar" :opts="external.option" :chartData="external.data"
|
|
|
+ :canvas2d="true" canvasId="order2">
|
|
|
</qiun-data-charts>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -183,43 +190,43 @@
|
|
|
<view class="project-content">
|
|
|
<view class="device-content">
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{deviceData.device.totalNumber}}</view>
|
|
|
<view class="order-label">总设备</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{deviceData.device.onLineNumber}}</view>
|
|
|
<view class="order-label">在线</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{deviceData.device.offLineNumber}}</view>
|
|
|
<view class="order-label">离线</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{deviceData.device.faultNumber}}</view>
|
|
|
<view class="order-label">故障</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="device-content">
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{deviceData.alarm.totalNumber}}</view>
|
|
|
<view class="order-label">总设备</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{deviceData.alarm.dayNumber}}</view>
|
|
|
<view class="order-label">在线</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{deviceData.alarm.handledNumber}}</view>
|
|
|
<view class="order-label">离线</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="order-item-li">
|
|
|
- <view class="order-number">0</view>
|
|
|
+ <view class="order-number">{{deviceData.alarm.unhandledNumber}}</view>
|
|
|
<view class="order-label">故障</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -235,17 +242,17 @@
|
|
|
<view class="air-item">
|
|
|
<view class="test-item">
|
|
|
<view class="name">总客户</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{clientData.totalNumber}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">月新增</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{clientData.monthNowAddNumber}}</view>
|
|
|
</view>
|
|
|
<view class="line"></view>
|
|
|
<view class="test-item">
|
|
|
<view class="name">洽商客户</view>
|
|
|
- <view class="number">120</view>
|
|
|
+ <view class="number">{{clientData.negotiateNumber}}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -260,78 +267,108 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+ import {
|
|
|
+ houseManagement,
|
|
|
+ paymentManagement,
|
|
|
+ clientManagement,
|
|
|
+ eventManagement,
|
|
|
+ orderManagement,
|
|
|
+ deviceManagement
|
|
|
+ } from '@/request/api/staging.js'
|
|
|
+ import {
|
|
|
+ getCustomerListByPage
|
|
|
+ } from '@/request/api/my.js'
|
|
|
+ const color = ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", "#ea7ccc"];
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
- list: ['当月', '当年', '累计'],
|
|
|
- current: 0,
|
|
|
- chartData: {},
|
|
|
- //您可以通过修改 config-ucharts.js 文件中下标为 ['pie'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
|
|
|
- opts: {
|
|
|
- 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: true,
|
|
|
- borderWidth: 3,
|
|
|
- borderColor: "#FFFFFF",
|
|
|
- linearType: "custom"
|
|
|
- }
|
|
|
+ project: {},
|
|
|
+ houseData: {
|
|
|
+ remainArea: 0,
|
|
|
+ remainRoom: 0,
|
|
|
+ totalRoom: 0,
|
|
|
+ totalArea: 0,
|
|
|
+ haveRentedRoom: 0,
|
|
|
+ haveRentedArea: 0,
|
|
|
+ },
|
|
|
+ paymentData: {},
|
|
|
+ nowPaymentData: {
|
|
|
+ hydropower: { //水电
|
|
|
+ overdue: 0,
|
|
|
+ received: 0,
|
|
|
+ receivable: 0
|
|
|
+ },
|
|
|
+ property: { //房租
|
|
|
+ overdue: 0,
|
|
|
+ received: 0,
|
|
|
+ receivable: 0
|
|
|
+ },
|
|
|
+ rent: { //物业
|
|
|
+ overdue: 0,
|
|
|
+ received: 0,
|
|
|
+ receivable: 0
|
|
|
}
|
|
|
},
|
|
|
- orderChartData: {
|
|
|
- series: [{
|
|
|
- name: "",
|
|
|
- color: "#2fc25b",
|
|
|
- data: 0.8
|
|
|
- }]
|
|
|
+ billList: [{
|
|
|
+ id: 1,
|
|
|
+ name: '当月',
|
|
|
+ type: 'month'
|
|
|
+ }, {
|
|
|
+ id: 2,
|
|
|
+ name: '当年',
|
|
|
+ type: 'year'
|
|
|
+ }, {
|
|
|
+ id: 3,
|
|
|
+ name: '累计',
|
|
|
+ type: 'accumulate'
|
|
|
+ }],
|
|
|
+ billIndex: 0,
|
|
|
+ remindData: {
|
|
|
+ option: {},
|
|
|
+ data: {}
|
|
|
},
|
|
|
- orderOpts: {
|
|
|
- color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
|
|
|
- "#ea7ccc"
|
|
|
- ],
|
|
|
- padding: undefined,
|
|
|
- title: {
|
|
|
- name: "80%",
|
|
|
- fontSize: 15,
|
|
|
- color: "#2fc25b"
|
|
|
+ orderData: {
|
|
|
+ external: {
|
|
|
+ totalNumber: 0,
|
|
|
+ completedNumber: 0,
|
|
|
+ incompleteNumber: 0
|
|
|
},
|
|
|
- subtitle: {
|
|
|
- name: "",
|
|
|
- fontSize: 25,
|
|
|
- color: "#666666"
|
|
|
+ internal: {
|
|
|
+ totalNumber: 0,
|
|
|
+ completedNumber: 0,
|
|
|
+ incompleteNumber: 0
|
|
|
+ }
|
|
|
+ },
|
|
|
+ external: {
|
|
|
+ option: {},
|
|
|
+ data: {}
|
|
|
+ },
|
|
|
+ internal: {
|
|
|
+ option: {},
|
|
|
+ data: {}
|
|
|
+ },
|
|
|
+ deviceData: {
|
|
|
+ alarm: {
|
|
|
+ totalNumber: 0,
|
|
|
+ handledNumber: 0,
|
|
|
+ dayNumber: 0,
|
|
|
+ unhandledNumber: 0
|
|
|
},
|
|
|
- extra: {
|
|
|
- arcbar: {
|
|
|
- type: "default",
|
|
|
- width: 12,
|
|
|
- backgroundColor: "#E9E9E9",
|
|
|
- startAngle: 0.75,
|
|
|
- endAngle: 0.25,
|
|
|
- gap: 2,
|
|
|
- linearType: "custom"
|
|
|
- }
|
|
|
+ device: {
|
|
|
+ totalNumber: 0,
|
|
|
+ faultNumber: 0,
|
|
|
+ onLineNumber: 0,
|
|
|
+ offLineNumber: 0
|
|
|
}
|
|
|
},
|
|
|
- clientChartData: {
|
|
|
- categories: ["24/01", "24/02", "24/03", "24/04", "24/05", "24/06"],
|
|
|
- series: [{
|
|
|
- name: "新增客户",
|
|
|
- data: [35, 8, 25, 37, 4, 20]
|
|
|
- }]
|
|
|
+ clientData: {
|
|
|
+ monthNowAddNumber: 0,
|
|
|
+ totalNumber: 0,
|
|
|
+ negotiateNumber: 0
|
|
|
},
|
|
|
- //您可以通过修改 config-ucharts.js 文件中下标为 ['line'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
|
|
|
+ clientChartData: {},
|
|
|
clientOpts: {
|
|
|
- color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
|
|
|
- "#ea7ccc"
|
|
|
- ],
|
|
|
+ color: color,
|
|
|
padding: [15, 15, 0, 5],
|
|
|
enableScroll: true,
|
|
|
legend: {},
|
|
@@ -341,8 +378,7 @@
|
|
|
itemCount: 4
|
|
|
},
|
|
|
yAxis: {
|
|
|
- gridType: "dash",
|
|
|
- dashLength: 2
|
|
|
+ gridType: "dash"
|
|
|
},
|
|
|
extra: {
|
|
|
line: {
|
|
@@ -355,36 +391,205 @@
|
|
|
}
|
|
|
},
|
|
|
onReady() {
|
|
|
- this.getServerData();
|
|
|
+ this.project = this.$store.getters.project;
|
|
|
+ this.init();
|
|
|
},
|
|
|
methods: {
|
|
|
- getServerData() {
|
|
|
- //模拟从服务器获取数据时的延时
|
|
|
- setTimeout(() => {
|
|
|
- //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
|
|
|
- let res = {
|
|
|
- series: [{
|
|
|
- data: [{
|
|
|
- "name": "重要",
|
|
|
- "value": 3,
|
|
|
- "labelShow": false
|
|
|
- }, {
|
|
|
- "name": "会议",
|
|
|
- "value": 1,
|
|
|
- "labelShow": false
|
|
|
- }, {
|
|
|
- "name": "看房",
|
|
|
- "value": 1,
|
|
|
- "labelShow": false
|
|
|
- }, {
|
|
|
- "name": "日常",
|
|
|
- "value": 1,
|
|
|
- "labelShow": false
|
|
|
+ init() {
|
|
|
+ this.initHouseData();
|
|
|
+ this.initPaymentData();
|
|
|
+ this.initRemind();
|
|
|
+ this.initOrder();
|
|
|
+ this.initDevice();
|
|
|
+ this.initClientData();
|
|
|
+ },
|
|
|
+ initHouseData() {
|
|
|
+ houseManagement(this.project.id).then(res => {
|
|
|
+ if (res.code === 200) this.houseData = res.data;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ initPaymentData() {
|
|
|
+ paymentManagement(this.project.id).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.paymentData = res.data;
|
|
|
+ this.nowPaymentData = this.paymentData[this.billList[this.billIndex].type];
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ initRemind() {
|
|
|
+ eventManagement(this.project.id).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ let data = res.data;
|
|
|
+ this.remindData = {
|
|
|
+ option: {
|
|
|
+ color: color,
|
|
|
+ padding: [5, 5, 5, 5],
|
|
|
+ enableScroll: false,
|
|
|
+ extra: {
|
|
|
+ pie: {
|
|
|
+ activeOpacity: 0.5,
|
|
|
+ activeRadius: 10,
|
|
|
+ offsetAngle: 0,
|
|
|
+ labelWidth: 15,
|
|
|
+ border: true,
|
|
|
+ borderWidth: 3,
|
|
|
+ borderColor: "#FFFFFF",
|
|
|
+ linearType: "custom"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ series: [{
|
|
|
+ data: [{
|
|
|
+ "name": "重要",
|
|
|
+ "value": data.importantNumber,
|
|
|
+ "labelShow": false
|
|
|
+ }, {
|
|
|
+ "name": "会议",
|
|
|
+ "value": data.meetingNumber,
|
|
|
+ "labelShow": false
|
|
|
+ }, {
|
|
|
+ "name": "看房",
|
|
|
+ "value": data.seeRoomNumber,
|
|
|
+ "labelShow": false
|
|
|
+ }, {
|
|
|
+ "name": "日常",
|
|
|
+ "value": data.remoteNumber,
|
|
|
+ "labelShow": false
|
|
|
+ }]
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ initOrder() {
|
|
|
+ orderManagement(this.project.id).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.orderData = res.data;
|
|
|
+ this.internal = {
|
|
|
+ option: {
|
|
|
+ color: color,
|
|
|
+ padding: undefined,
|
|
|
+ title: {
|
|
|
+ name: this.returnPercent(this.orderData.internal) + '%',
|
|
|
+ fontSize: 15,
|
|
|
+ color: "#2fc25b"
|
|
|
+ },
|
|
|
+ subtitle: {
|
|
|
+ name: "",
|
|
|
+ fontSize: 25,
|
|
|
+ color: "#666666"
|
|
|
+ },
|
|
|
+ extra: {
|
|
|
+ arcbar: {
|
|
|
+ type: "default",
|
|
|
+ width: 12,
|
|
|
+ backgroundColor: "#E9E9E9",
|
|
|
+ startAngle: 0.75,
|
|
|
+ endAngle: 0.25,
|
|
|
+ gap: 2,
|
|
|
+ linearType: "custom"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ series: [{
|
|
|
+ name: "",
|
|
|
+ color: "#2fc25b",
|
|
|
+ data: this.returnPercent(this.orderData.internal) / 100
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.external = {
|
|
|
+ option: {
|
|
|
+ color: color,
|
|
|
+ padding: undefined,
|
|
|
+ title: {
|
|
|
+ name: this.returnPercent(this.orderData.external) + '%',
|
|
|
+ fontSize: 15,
|
|
|
+ color: "#2fc25b"
|
|
|
+ },
|
|
|
+ subtitle: {
|
|
|
+ name: "",
|
|
|
+ fontSize: 25,
|
|
|
+ color: "#666666"
|
|
|
+ },
|
|
|
+ extra: {
|
|
|
+ arcbar: {
|
|
|
+ type: "default",
|
|
|
+ width: 12,
|
|
|
+ backgroundColor: "#E9E9E9",
|
|
|
+ startAngle: 0.75,
|
|
|
+ endAngle: 0.25,
|
|
|
+ gap: 2,
|
|
|
+ linearType: "custom"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ series: [{
|
|
|
+ name: "",
|
|
|
+ color: "#2fc25b",
|
|
|
+ data: this.returnPercent(this.orderData.external) / 100
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ initClientData() {
|
|
|
+ clientManagement(this.project.id).then(res => {
|
|
|
+ if (res.code === 200) this.clientData = res.data;
|
|
|
+ })
|
|
|
+ getCustomerListByPage({
|
|
|
+ currPage: 1,
|
|
|
+ pageSize: 100,
|
|
|
+ organizationId: this.$store.getters.organization.id,
|
|
|
+ projectId: this.project.id
|
|
|
+ }).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ let resData = res.data.dataList;
|
|
|
+ let obj = {},
|
|
|
+ x = [],
|
|
|
+ data = [];
|
|
|
+ for (let i = 0; i < resData.length; i++) {
|
|
|
+ let date = this.$dayjs(resData[i].visitingTime).format('YY/MM');
|
|
|
+ if (!obj[date]) obj[date] = 0;
|
|
|
+ obj[date]++
|
|
|
+ }
|
|
|
+ for (let key in obj) {
|
|
|
+ x.push(key);
|
|
|
+ data.push(obj[key]);
|
|
|
+ }
|
|
|
+ this.clientChartData = {
|
|
|
+ categories: x,
|
|
|
+ series: [{
|
|
|
+ name: "客户分析",
|
|
|
+ data: data
|
|
|
}]
|
|
|
- }]
|
|
|
- };
|
|
|
- this.chartData = JSON.parse(JSON.stringify(res));
|
|
|
- }, 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+ initDevice() {
|
|
|
+ deviceManagement(this.project.id).then(res => {
|
|
|
+ if (res.code === 200) this.deviceData = res.data;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ returnPercent(data) {
|
|
|
+ let num = 0
|
|
|
+ if (data.totalNumber) {
|
|
|
+ num = parseInt(data.completedNumber / data.totalNumber * 100)
|
|
|
+ }
|
|
|
+ return num;
|
|
|
+ },
|
|
|
+ changeBill(index) {
|
|
|
+ this.billIndex = index;
|
|
|
+ this.nowPaymentData = this.paymentData[this.billList[this.billIndex].type];
|
|
|
},
|
|
|
change(index) {
|
|
|
this.current = index;
|