Jelajahi Sumber

服务单元分析接口对接ing...

刘洋 1 tahun lalu
induk
melakukan
6dd813c929

+ 7 - 0
src/api/report.js

@@ -33,3 +33,10 @@ export const dispatchStatisticsAnalysis = (params) =>
     url: '/api/admin/tb/crm/analyse/project',
     params,
   });
+
+//服务单元概览
+export const serviceOverviewAnalysis = (params) =>
+  request({
+    url: '/api/service/analyse/overview',
+    params,
+  });

+ 0 - 1
src/components/common/china-point-chart/index.vue

@@ -37,7 +37,6 @@ onMounted(() => {
 // ];
 const props = defineProps({ data: Object });
 const convertData = (data) => {
-  console.log('data:::', data);
   var res = [];
   for (var i = 0; i < data.length; i++) {
     var geoCoord =

+ 12 - 70
src/views/report/dispatch-analysis/index.vue

@@ -57,81 +57,23 @@
             <div class="card chart7-box">
               <div class="title m-b-8px">项目派单完成率</div>
               <div class="chart-wrap overflow-auto service-box">
-                <div class="service-item">
+                <div
+                  class="service-item"
+                  v-for="item in result6"
+                  :key="item.id"
+                >
                   <div class="head flex justify-between items-center">
-                    <div>服务单元A</div>
-                    <div>91%</div>
+                    <div>{{ item.name }}</div>
+                    <div>{{ item.count * 100 + '%' }}</div>
                   </div>
                   <div class="body flex items-center">
                     <div class="label">状态:</div>
-                    <div class="status">已发布</div>
+                    <div class="status">未完成</div>
                     <div class="process-box">
-                      <div class="process" :style="{ width: 91 + '%' }"></div>
-                    </div>
-                  </div>
-                </div>
-                <div class="service-item">
-                  <div class="head flex justify-between items-center">
-                    <div>服务单元B</div>
-                    <div>100%</div>
-                  </div>
-                  <div class="body flex items-center">
-                    <div class="label">状态:</div>
-                    <div class="status finished">已完结</div>
-                    <div class="process-box">
-                      <div class="process" :style="{ width: 100 + '%' }"></div>
-                    </div>
-                  </div>
-                </div>
-                <div class="service-item">
-                  <div class="head flex justify-between items-center">
-                    <div>服务单元C</div>
-                    <div>100%</div>
-                  </div>
-                  <div class="body flex items-center">
-                    <div class="label">状态:</div>
-                    <div class="status finished">已完结</div>
-                    <div class="process-box">
-                      <div class="process" :style="{ width: 100 + '%' }"></div>
-                    </div>
-                  </div>
-                </div>
-                <div class="service-item">
-                  <div class="head flex justify-between items-center">
-                    <div>服务单元D</div>
-                    <div>100%</div>
-                  </div>
-                  <div class="body flex items-center">
-                    <div class="label">状态:</div>
-                    <div class="status finished">已完结</div>
-                    <div class="process-box">
-                      <div class="process" :style="{ width: 100 + '%' }"></div>
-                    </div>
-                  </div>
-                </div>
-                <div class="service-item">
-                  <div class="head flex justify-between items-center">
-                    <div>服务单元E</div>
-                    <div>100%</div>
-                  </div>
-                  <div class="body flex items-center">
-                    <div class="label">状态:</div>
-                    <div class="status finished">已完结</div>
-                    <div class="process-box">
-                      <div class="process" :style="{ width: 100 + '%' }"></div>
-                    </div>
-                  </div>
-                </div>
-                <div class="service-item">
-                  <div class="head flex justify-between items-center">
-                    <div>服务单元F</div>
-                    <div>100%</div>
-                  </div>
-                  <div class="body flex items-center">
-                    <div class="label">状态:</div>
-                    <div class="status finished">已完结</div>
-                    <div class="process-box">
-                      <div class="process" :style="{ width: 100 + '%' }"></div>
+                      <div
+                        class="process"
+                        :style="{ width: item.count * 100 + '%' }"
+                      ></div>
                     </div>
                   </div>
                 </div>

+ 30 - 9
src/views/report/service-analysis/index.vue

@@ -5,6 +5,7 @@
         style="width: auto; margin-right: 10px"
         v-model="serviceId"
         clearable
+        defaultSelect
       ></select-service-unit>
     </report-header>
     <div class="page-main">
@@ -19,19 +20,19 @@
             ></div>
             <div class="grid1-others">
               <div class="item">
-                <p class="num">348</p>
+                <p class="num">{{ result1?.equipmentOutboundTotal }}</p>
                 <div class="label">设备出库总量(台)</div>
               </div>
               <div class="item">
-                <p class="num">348</p>
+                <p class="num">{{ result1?.equipmentOccupancyRate }}</p>
                 <div class="label">设备占用率(%)</div>
               </div>
               <div class="item">
-                <p class="num">348</p>
+                <p class="num">{{ result1?.servicePersonnelTotal }}</p>
                 <div class="label">在服务人员总数(人)</div>
               </div>
               <div class="item">
-                <p class="num">348</p>
+                <p class="num">{{ result1?.sitePersonnelOccupancyRate }}</p>
                 <div class="label">现场人员占用率(%)</div>
               </div>
             </div>
@@ -150,7 +151,7 @@
 </template>
 
 <script setup name="DispatchAnalysis">
-import { ref, computed } from 'vue';
+import { ref, computed, watch } from 'vue';
 import SelectServiceUnit from '@/components/common/select-service-unit/index.vue';
 import {
   createWaterBallOption,
@@ -158,12 +159,32 @@ import {
   createCakePieOption,
   createStackingBarOption,
 } from '@/utils/chart';
+import { useRequest } from 'vue-request';
+import { serviceOverviewAnalysis } from '@/api/report';
 const curTimeRange = ref([]);
+const timeParams = computed(() => {
+  return {
+    startTime: new Date(curTimeRange.value[0]).getTime(),
+    endTime: new Date(curTimeRange.value[1]).getTime(),
+  };
+});
 const serviceId = ref('');
-const options1 = createWaterBallOption({
-  data: 23.5 / 100,
-  title: '项目执行进度',
-  radius: '80%',
+const {
+  data: result1,
+  loading: loading1,
+  run: run1,
+} = useRequest(serviceOverviewAnalysis);
+
+watch(serviceId, (serviceUnitId) => {
+  run1({ serviceUnitId });
+});
+
+const options1 = computed(() => {
+  return createWaterBallOption({
+    data: (result1?.projectProgress || 0) / 100,
+    title: '项目执行进度',
+    radius: '80%',
+  });
 });
 const options2 = createRingPieOption(
   {