فهرست منبع

巡检统计处理

lipenghui 1 ماه پیش
والد
کامیت
52a701c7cd

+ 2 - 2
src/api/pms/stat/index.ts

@@ -30,13 +30,13 @@ export const IotStatApi = {
     return await request.get({ url: `/rq/stat/inspect/total` })
   },
   getInspectStatus: async (params: any) => {
-    return await request.get({ url: `/rq/stat/inspect/status` })
+    return await request.get({ url: `/rq/stat/inspect/status`, params })
   },
   getInspectTodayStatus: async (params: any) => {
     return await request.get({ url: `/rq/stat/inspect/today/status` })
   },
   getInspectDeviceStatus: async (params: any) => {
-    return await request.get({ url: `/rq/stat/inspect/device` })
+    return await request.get({ url: `/rq/stat/inspect/device`, params })
   },
   getMaintenanceDay: async (params: any) => {
     return await request.get({ url: `/rq/stat/maintenance/day` })

+ 2 - 2
src/router/modules/remaining.ts

@@ -829,7 +829,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
     },
     children: [
       {
-        path: 'inspect/order/detail/index/:status?',
+        path: 'inspect/order/detail/index/:deptId?/:status?/:createTime*',
         component: () => import('@/views/pms/inspect/order/detail/IotInspectOrderDetailStat.vue'),
         name: 'IotInspectOrderDetailStat',
         meta: {
@@ -842,7 +842,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
         }
       },
       {
-        path: 'inspect/order/index/:status?',
+        path: 'inspect/order/index/:deptId?/:status?/:createTime*',
         component: () => import('@/views/pms/inspect/order/index.vue'),
         name: 'IotInspectOrdere',
         meta: {

+ 11 - 0
src/views/pms/inspect/order/detail/IotInspectOrderDetailStat.vue

@@ -83,12 +83,16 @@ const { params } = useRoute()
 const loading = ref(true) // 列表的加载中
 const list = ref<IotInspectItemVO[]>([]) // 列表的数据
 const total = ref(0) // 列表的总页数
+const deptId= params.deptId;
+const createTime = params.createTime;
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   status: undefined,
   deviceCode: undefined,
   deviceName: undefined,
+  deptId: undefined,
+  createTime: undefined,
 })
 const productClassifyList = ref<Tree[]>([]) // 树形结构
 const queryFormRef = ref() // 搜索的表单
@@ -124,6 +128,13 @@ onMounted(async () => {
   if (params.status) {
     queryParams.status = params.status
   }
+  if(deptId != null){
+    queryParams.deptId = deptId;
+  }
+
+  if(createTime){
+    queryParams.createTime = createTime;
+  }
   await getList()
 })
 </script>

+ 10 - 0
src/views/pms/inspect/order/index.vue

@@ -177,6 +177,8 @@ const { t } = useI18n() // 国际化
 const loading = ref(true) // 列表的加载中
 const list = ref<IotInspectOrderVO[]>([]) // 列表的数据
 const status = params.status
+const deptId= params.deptId;
+const createTime = params.createTime;
 const total = ref(0) // 列表的总页数
 const queryParams = reactive({
   pageNo: 1,
@@ -263,9 +265,17 @@ const handleExport = async () => {
 
 /** 初始化 **/
 onMounted(() => {
+  debugger
   if (params.status) {
     queryParams.status = params.status
   }
+  if(deptId != null){
+    queryParams.deptId = deptId;
+  }
+
+  if(createTime){
+    queryParams.createTime = createTime;
+  }
   getList()
 })
 </script>

+ 104 - 13
src/views/pms/stat/inspect.vue

@@ -1,5 +1,62 @@
 <template>
   <!-- 第一行:统计卡片行 -->
+  <el-row :gutter="16" class="mb-4">
+    <el-col :span="24">
+      <el-card class="chart-card" shadow="never">
+        <el-form
+          class="-mb-15px"
+          :model="queryParams"
+          ref="queryFormRef"
+          :inline="true"
+          label-width="68px"
+        >
+          <el-form-item label="所属部门" prop="project_name">
+            <el-tree-select
+              v-model="queryParams.deptId"
+              :data="deptList"
+              :props="defaultProps"
+              check-strictly
+              node-key="id"
+              filterable
+              placeholder="请选择所在部门"
+              clearable
+              style="width: 180px"
+            />
+          </el-form-item>
+          <el-form-item label="创建时间" prop="createTime">
+            <el-date-picker
+              v-model="queryParams.createTime"
+              value-format="YYYY-MM-DD HH:mm:ss"
+              type="daterange"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
+              class="!w-220px"
+            />
+          </el-form-item>
+          <!--          <el-form-item label="填写状态" prop="project_name">
+                      <el-select
+                        v-model="queryParams.status"
+                        placeholder="填写状态"
+                        clearable
+                        class="!w-240px"
+                      >
+                        <el-option
+                          v-for="dict in getIntDictOptions(DICT_TYPE.OPERATION_FILL_ORDER_STATUS)"
+                          :key="dict.value"
+                          :label="dict.label"
+                          :value="dict.value"
+                        />
+                      </el-select>
+                    </el-form-item>-->
+          <el-form-item>
+            <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
+            <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
+          </el-form-item>
+        </el-form>
+      </el-card>
+    </el-col>
+  </el-row>
   <el-row :gutter="16" class="mb-4">
     <el-col :span="6">
     <el-card class="stat-card" shadow="never">
@@ -214,6 +271,11 @@ import {
 const { currentRoute, push } = useRouter()
 import { formatDate } from '@/utils/formatTime'
 import { IotStatApi } from '@/api/pms/stat'
+import {defaultProps, handleTree} from "@/utils/tree";
+import {ref} from "vue";
+import {DeptTreeItem} from "@/api/system/dept";
+import * as DeptApi from "@/api/system/dept";
+import {useUserStore} from "@/store/modules/user";
 
 // TODO @super:参考下 /Users/yunai/Java/yudao-ui-admin-vue3/src/views/mall/home/index.vue,拆一拆组件
 
@@ -238,8 +300,11 @@ echarts.use([
 
 const timeRange = ref('7d') // 修改默认选择为近一周
 const dateRange = ref<[Date, Date] | null>(null)
+const deptList = ref<DeptTreeItem[]>([]) // 树形结构部门列表
 
 const queryParams = reactive({
+  deptId: undefined,
+  createTime: undefined,
   startTime: Date.now() - 7 * 24 * 60 * 60 * 1000, // 设置默认开始时间为 7 天前
   endTime: Date.now() // 设置默认结束时间为当前时间
 })
@@ -271,20 +336,40 @@ const statsData = ref<IotStatisticsSummaryRespVO>({
   productCategoryDeviceCounts: {}
 })
 
+const handleQuery = () => {
+  getStats()
+  // initChart()
+  // initCharts()
+}
+const resetQuery = () => {
+  // 重置查询参数
+  queryParams.startTime = Date.now() - 7 * 24 * 60 * 60 * 1000
+  queryParams.endTime = Date.now()
+  queryParams.deptId = useUserStore().getUser.deptId;
+  queryParams.createTime = null
+
+  // 重新获取数据
+  getStats()
+}
+
 const clickStatus = (type) => {
   let status = '';
+  const createTime = queryParams.createTime;
+  const deptId = queryParams.deptId;
+  debugger
   if (type === '工单待执行') {
     status = 'todo'
-    push({ name: 'IotInspectOrdere', params: { status} })
+    push({ name: 'IotInspectOrdere', params:{deptId,status,createTime}})
   } else if (type === '工单已执行') {
     status = 'finished'
-    push({name: 'IotInspectOrdere', params: { status} })
+    push({name: 'IotInspectOrdere', params:{deptId,status,createTime}})
   } else if (type==='设备待执行') {
     status = 'todo'
-    push({name:'IotInspectOrderDetailStat', params:{status}})
+    debugger
+    push({name:'IotInspectOrderDetailStat', params:{deptId,status,createTime}})
   } else if (type==='设备已执行'){
     status = 'finished'
-    push({name:'IotInspectOrderDetailStat', params:{status}})
+    push({name:'IotInspectOrderDetailStat', params:{deptId,status,createTime}})
   }
 }
 
@@ -380,12 +465,14 @@ const getStats = async () => {
   IotStatApi.getInspectTotal().then((res) => {
     total.value = res
   })
-  IotStatApi.getInspectStatus().then((res) => {
+  IotStatApi.getInspectStatus(queryParams).then((res) => {
     status.value = res
+    initChart()
     initCharts()
   })
-  IotStatApi.getInspectDeviceStatus().then((res) => {
+  IotStatApi.getInspectDeviceStatus(queryParams).then((res) => {
     todayStatus.value = res
+    initChart()
     initCharts()
   })
   // statsData.value = await ProductCategoryApi.getIotStatisticsSummary()
@@ -481,19 +568,21 @@ const initGaugeChart = (el: any, value: number, color: string, type: string) =>
   chart.on('click', (params) => {
     console.log('点击的数据值为:', params.value);
     console.log('点击的数据类型为:', params.data.type);
+    const createTime = queryParams.createTime;
+    const deptId = queryParams.deptId;
     let status = '';
     if (params.data.type === '工单待执行') {
       status = 'todo'
-      push({ name: 'IotInspectOrdere', params: { status} })
+      push({ name: 'IotInspectOrdere', params:{deptId,status,createTime}})
     } else if (params.data.type === '工单已执行') {
       status = 'finished'
-      push({name: 'IotInspectOrdere', params: { status} })
+      push({name: 'IotInspectOrdere', params:{deptId,status,createTime}})
     } else if (params.data.type==='设备待执行') {
       status = 'todo'
-      push({name:'IotInspectOrderDetailStat', params:{status}})
+      push({name:'IotInspectOrderDetailStat', params:{deptId,status,createTime}})
     } else if (params.data.type==='设备已执行'){
       status = 'finished'
-      push({name:'IotInspectOrderDetailStat', params:{status}})
+      push({name:'IotInspectOrderDetailStat', params:{deptId,status,createTime}})
     }
   });
 }
@@ -722,9 +811,11 @@ const handleResize = () => {
   chartInstance?.resize()
 }
 /** 初始化 */
-onMounted(() => {
-  getStats()
-  initChart()
+onMounted(async () => {
+  deptList.value = handleTree(await DeptApi.getSimpleDeptList())
+  await getStats()
+  // await initChart()
+  // await initCharts()
 })
 onUnmounted(() => {
   chartInstance?.dispose()