|
@@ -1,5 +1,62 @@
|
|
<template>
|
|
<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-row :gutter="16" class="mb-4">
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
<el-card class="stat-card" shadow="never">
|
|
<el-card class="stat-card" shadow="never">
|
|
@@ -214,6 +271,11 @@ import {
|
|
const { currentRoute, push } = useRouter()
|
|
const { currentRoute, push } = useRouter()
|
|
import { formatDate } from '@/utils/formatTime'
|
|
import { formatDate } from '@/utils/formatTime'
|
|
import { IotStatApi } from '@/api/pms/stat'
|
|
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,拆一拆组件
|
|
// 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 timeRange = ref('7d') // 修改默认选择为近一周
|
|
const dateRange = ref<[Date, Date] | null>(null)
|
|
const dateRange = ref<[Date, Date] | null>(null)
|
|
|
|
+const deptList = ref<DeptTreeItem[]>([]) // 树形结构部门列表
|
|
|
|
|
|
const queryParams = reactive({
|
|
const queryParams = reactive({
|
|
|
|
+ deptId: undefined,
|
|
|
|
+ createTime: undefined,
|
|
startTime: Date.now() - 7 * 24 * 60 * 60 * 1000, // 设置默认开始时间为 7 天前
|
|
startTime: Date.now() - 7 * 24 * 60 * 60 * 1000, // 设置默认开始时间为 7 天前
|
|
endTime: Date.now() // 设置默认结束时间为当前时间
|
|
endTime: Date.now() // 设置默认结束时间为当前时间
|
|
})
|
|
})
|
|
@@ -271,20 +336,40 @@ const statsData = ref<IotStatisticsSummaryRespVO>({
|
|
productCategoryDeviceCounts: {}
|
|
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) => {
|
|
const clickStatus = (type) => {
|
|
let status = '';
|
|
let status = '';
|
|
|
|
+ const createTime = queryParams.createTime;
|
|
|
|
+ const deptId = queryParams.deptId;
|
|
|
|
+ debugger
|
|
if (type === '工单待执行') {
|
|
if (type === '工单待执行') {
|
|
status = 'todo'
|
|
status = 'todo'
|
|
- push({ name: 'IotInspectOrdere', params: { status} })
|
|
|
|
|
|
+ push({ name: 'IotInspectOrdere', params:{deptId,status,createTime}})
|
|
} else if (type === '工单已执行') {
|
|
} else if (type === '工单已执行') {
|
|
status = 'finished'
|
|
status = 'finished'
|
|
- push({name: 'IotInspectOrdere', params: { status} })
|
|
|
|
|
|
+ push({name: 'IotInspectOrdere', params:{deptId,status,createTime}})
|
|
} else if (type==='设备待执行') {
|
|
} else if (type==='设备待执行') {
|
|
status = 'todo'
|
|
status = 'todo'
|
|
- push({name:'IotInspectOrderDetailStat', params:{status}})
|
|
|
|
|
|
+ debugger
|
|
|
|
+ push({name:'IotInspectOrderDetailStat', params:{deptId,status,createTime}})
|
|
} else if (type==='设备已执行'){
|
|
} else if (type==='设备已执行'){
|
|
status = 'finished'
|
|
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) => {
|
|
IotStatApi.getInspectTotal().then((res) => {
|
|
total.value = res
|
|
total.value = res
|
|
})
|
|
})
|
|
- IotStatApi.getInspectStatus().then((res) => {
|
|
|
|
|
|
+ IotStatApi.getInspectStatus(queryParams).then((res) => {
|
|
status.value = res
|
|
status.value = res
|
|
|
|
+ initChart()
|
|
initCharts()
|
|
initCharts()
|
|
})
|
|
})
|
|
- IotStatApi.getInspectDeviceStatus().then((res) => {
|
|
|
|
|
|
+ IotStatApi.getInspectDeviceStatus(queryParams).then((res) => {
|
|
todayStatus.value = res
|
|
todayStatus.value = res
|
|
|
|
+ initChart()
|
|
initCharts()
|
|
initCharts()
|
|
})
|
|
})
|
|
// statsData.value = await ProductCategoryApi.getIotStatisticsSummary()
|
|
// statsData.value = await ProductCategoryApi.getIotStatisticsSummary()
|
|
@@ -481,19 +568,21 @@ const initGaugeChart = (el: any, value: number, color: string, type: string) =>
|
|
chart.on('click', (params) => {
|
|
chart.on('click', (params) => {
|
|
console.log('点击的数据值为:', params.value);
|
|
console.log('点击的数据值为:', params.value);
|
|
console.log('点击的数据类型为:', params.data.type);
|
|
console.log('点击的数据类型为:', params.data.type);
|
|
|
|
+ const createTime = queryParams.createTime;
|
|
|
|
+ const deptId = queryParams.deptId;
|
|
let status = '';
|
|
let status = '';
|
|
if (params.data.type === '工单待执行') {
|
|
if (params.data.type === '工单待执行') {
|
|
status = 'todo'
|
|
status = 'todo'
|
|
- push({ name: 'IotInspectOrdere', params: { status} })
|
|
|
|
|
|
+ push({ name: 'IotInspectOrdere', params:{deptId,status,createTime}})
|
|
} else if (params.data.type === '工单已执行') {
|
|
} else if (params.data.type === '工单已执行') {
|
|
status = 'finished'
|
|
status = 'finished'
|
|
- push({name: 'IotInspectOrdere', params: { status} })
|
|
|
|
|
|
+ push({name: 'IotInspectOrdere', params:{deptId,status,createTime}})
|
|
} else if (params.data.type==='设备待执行') {
|
|
} else if (params.data.type==='设备待执行') {
|
|
status = 'todo'
|
|
status = 'todo'
|
|
- push({name:'IotInspectOrderDetailStat', params:{status}})
|
|
|
|
|
|
+ push({name:'IotInspectOrderDetailStat', params:{deptId,status,createTime}})
|
|
} else if (params.data.type==='设备已执行'){
|
|
} else if (params.data.type==='设备已执行'){
|
|
status = 'finished'
|
|
status = 'finished'
|
|
- push({name:'IotInspectOrderDetailStat', params:{status}})
|
|
|
|
|
|
+ push({name:'IotInspectOrderDetailStat', params:{deptId,status,createTime}})
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -722,9 +811,11 @@ const handleResize = () => {
|
|
chartInstance?.resize()
|
|
chartInstance?.resize()
|
|
}
|
|
}
|
|
/** 初始化 */
|
|
/** 初始化 */
|
|
-onMounted(() => {
|
|
|
|
- getStats()
|
|
|
|
- initChart()
|
|
|
|
|
|
+onMounted(async () => {
|
|
|
|
+ deptList.value = handleTree(await DeptApi.getSimpleDeptList())
|
|
|
|
+ await getStats()
|
|
|
|
+ // await initChart()
|
|
|
|
+ // await initCharts()
|
|
})
|
|
})
|
|
onUnmounted(() => {
|
|
onUnmounted(() => {
|
|
chartInstance?.dispose()
|
|
chartInstance?.dispose()
|