Shannon_mu 2 лет назад
Родитель
Сommit
203ca958d0

+ 150 - 0
operationSupport/src/views/newWorkBench/components/facilityInspections/taskType.vue

@@ -0,0 +1,150 @@
+<template>
+    <div class="modelBlock">
+        <template v-if="permissionFiltering">
+            <div class="model-title">
+                <div class="model-title-text">住户身份占比</div>
+            </div>
+            <div class="model-content">
+                <zz-echart :option="clientOptions" class="chart"></zz-echart>
+                <div class="totals">
+                    <span>{{ total }}</span>
+                    <span class="numbers">总人数</span>
+                </div>
+            </div>
+        </template>
+        <no-permission v-else tipsText="住户身份占比"></no-permission>
+    </div>
+</template>
+<script>
+import { GradualChange, ringType } from '../indexOptionChart';
+import permissionComponent from '../permissionComponent';
+const colors = [
+    GradualChange('#22D8FF', '#00B2FF'),
+    GradualChange('#F0646C', '#F4994E'),
+    GradualChange('#5EEDCC ', '#24C3F1'),
+    GradualChange('#7178FF', '#D2A4FF'),
+    GradualChange('#884DD2', '#DF63CC')
+];
+export default {
+    mixins: [permissionComponent],
+    data() {
+        return {
+            defaultModel: {
+                permissUrl: 'ownerManagement/index',
+                titleName: '住户管理'
+            },
+            mixins_query: {
+                communityId: ''
+            },
+            total: 0,
+            clientOptions: ringType(
+                colors,
+                [
+                    { value: 0, name: '业主' },
+                    { value: 0, name: '亲属' },
+                    { value: 0, name: '租客' },
+                    { value: 0, name: '租户管理员' },
+                    { value: 0, name: '普通员工' }
+                ],
+                {},
+                { type: 'number', total: 0 }
+            )
+        };
+    },
+    methods: {
+        getData() {
+            this.$http.get('/sc-community/statisticsUserIdentities', this.mixins_query).then(({ data, msg, status }) => {
+                if (status == 0 && !!data.datas) {
+                    this.clientOptions = ringType(colors, this.eachartObj(data), {}, { type: 'number', total: data.total });
+                } else {
+                    this.clientOptions = ringType(
+                        colors,
+                        [
+                            { value: 0, name: '业主' },
+                            { value: 0, name: '亲属' },
+                            { value: 0, name: '租客' },
+                            { value: 0, name: '租户管理员' },
+                            { value: 0, name: '普通员工' }
+                        ],
+                        {},
+                        { type: 'number', total: 0 }
+                    );
+                }
+            });
+        },
+        eachartObj(data) {
+            this.total = data.total;
+            let typeName = {
+                1: '业主',
+                2: '亲属',
+                3: '租客',
+                4: '租户管理员',
+                5: '普通员工'
+            };
+            let newData = [];
+            for (let a in data.datas) {
+                newData.push({
+                    value: data.datas[a],
+                    name: typeName[a]
+                });
+            }
+            return newData;
+        }
+    },
+    created() {
+        this.getData();
+    }
+};
+</script>
+<style lang="scss" scoped>
+@import '@assets/css/public-style.scss';
+.modelBlock {
+    height: 100%;
+    padding: rem(15) rem(20) rem(20);
+    background: #171f32;
+    .model-title {
+        line-height: rem(30);
+        display: flex;
+        justify-content: space-between;
+        padding-bottom: rem(15);
+        border-bottom: 1px solid rgba(224, 225, 227, 0.2);
+        .saveColumn-select {
+            width: rem(120);
+            margin-left: rem(20);
+            /deep/ .el-input__inner {
+                background: transparent;
+                color: white;
+                border-color: rgba(255, 255, 255, 0.2);
+            }
+        }
+        .model-title-text {
+            color: white;
+        }
+    }
+    .model-content {
+        height: calc(100% - #{rem(45)});
+        display: flex;
+        justify-content: space-between;
+        font-size: 12px;
+        position: relative;
+        .totals {
+            position: absolute;
+            right: rem(10);
+            top: rem(26);
+            width: rem(120);
+            height: rem(40);
+            background: linear-gradient(90deg, rgba(14, 174, 255, 0.5) 0%, rgba(14, 174, 255, 0) 100%);
+            border-radius: 5px;
+            font-size: 20px;
+            padding: rem(8) rem(10);
+            display: flex;
+            justify-content: space-between;
+            .numbers {
+                font-size: 12px;
+                opacity: 0.5;
+                line-height: rem(32);
+            }
+        }
+    }
+}
+</style>

+ 23 - 44
operationSupport/src/views/newWorkBench/components/index.js

@@ -16,56 +16,35 @@
 // communityAnnouncement 社区公告 OK
 // personnelScore 运维人员评分 OK
 // billToBeCollected  待收款账单 OK
-// contractAward 合同签约   接口不通
+// contractAward 合同签约   OK
 // dispatchWorkOrder 待分派工单 OK
+// taskType 巡检任务类型分布
 
-
-
-import maps from '@views/newWorkBench/components/map.vue';
-import complaintsSuggestions from '@views/newWorkBench/components/complaintsSuggestions.vue';
-import commonFunctions from '@views/newWorkBench/components/commonFunctions.vue';
-import satisfaction from '@views/newWorkBench/components/satisfaction.vue';
-import discount from '@views/newWorkBench/components/discount.vue';
-import rentalAndSaleRate from '@views/newWorkBench/components/rentalAndSaleRate.vue';
-import collectionRate from '@views/newWorkBench/components/collectionRate.vue';
-import householdGender from '@views/newWorkBench/components/householdGender.vue';
-import householdIdentity from '@views/newWorkBench/components/householdIdentity.vue';
-import equipmentStatistics from '@views/newWorkBench/components/equipmentStatistics.vue';
-import ownerApproval from '@views/newWorkBench/components/ownerApproval.vue';
-import pendingComplaints from '@views/newWorkBench/components/pendingComplaints.vue';
-import complaintsAndSuggestions from '@views/newWorkBench/components/complaintsAndSuggestions.vue';
-
-import patrolDuration from '@views/newWorkBench/components/patrolDuration.vue';
-import communityAnnouncement from '@views/newWorkBench/components/communityAnnouncement.vue';
-import personnelScore from '@views/newWorkBench/components/personnelScore.vue';
-import billToBeCollected from '@views/newWorkBench/components/billToBeCollected.vue';
-import contractAward from '@views/newWorkBench/components/contractAward.vue';
-import dispatchWorkOrder from '@views/newWorkBench/components/dispatchWorkOrder.vue';
-
-
+const comUrl = 'newWorkBench/components/'
+// taskType
 export default {
   components: {
     //小组件模块
-    maps,
-    complaintsSuggestions,
-    commonFunctions,
-    satisfaction,
-    discount,
-    rentalAndSaleRate,
-    collectionRate,
-    householdGender,
-    householdIdentity,
-    equipmentStatistics,
-    ownerApproval,
-    pendingComplaints,
-    complaintsAndSuggestions,
+    maps: resolve => require([`@views/${comUrl}map.vue`], resolve),
+    complaintsSuggestions: resolve => require([`@views/${comUrl}complaintsSuggestions.vue`], resolve),
+    commonFunctions: resolve => require([`@views/${comUrl}commonFunctions.vue`], resolve),
+    satisfaction: resolve => require([`@views/${comUrl}satisfaction.vue`], resolve),
+    discount: resolve => require([`@views/${comUrl}discount.vue`], resolve),
+    rentalAndSaleRate: resolve => require([`@views/${comUrl}rentalAndSaleRate.vue`], resolve),
+    collectionRate: resolve => require([`@views/${comUrl}collectionRate.vue`], resolve),
+    householdGender: resolve => require([`@views/${comUrl}householdGender.vue`], resolve),
+    householdIdentity: resolve => require([`@views/${comUrl}householdIdentity.vue`], resolve),
+    equipmentStatistics: resolve => require([`@views/${comUrl}equipmentStatistics.vue`], resolve),
+    ownerApproval: resolve => require([`@views/${comUrl}ownerApproval.vue`], resolve),
+    pendingComplaints: resolve => require([`@views/${comUrl}pendingComplaints.vue`], resolve),
+    complaintsAndSuggestions: resolve => require([`@views/${comUrl}complaintsAndSuggestions.vue`], resolve),
 
-    patrolDuration,
-    communityAnnouncement,
-    personnelScore,
-    billToBeCollected,
-    contractAward,
-    dispatchWorkOrder
+    patrolDuration: resolve => require([`@views/${comUrl}patrolDuration.vue`], resolve),
+    communityAnnouncement: resolve => require([`@views/${comUrl}communityAnnouncement.vue`], resolve),
+    personnelScore: resolve => require([`@views/${comUrl}personnelScore.vue`], resolve),
+    billToBeCollected: resolve => require([`@views/${comUrl}billToBeCollected.vue`], resolve),
+    contractAward: resolve => require([`@views/${comUrl}contractAward.vue`], resolve),
+    dispatchWorkOrder: resolve => require([`@views/${comUrl}dispatchWorkOrder.vue`], resolve)
   },
   data() {
     return {