| applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue | ●●●●● patch | view | raw | blame | history | |
| applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue | ●●●●● patch | view | raw | blame | history | |
| applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue | ●●●●● patch | view | raw | blame | history | |
| applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/inspectionRequestApi.js | ●●●●● patch | view | raw | blame | history | |
| packages/utils/common/index.js | ●●●●● patch | view | raw | blame | history |
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
New file @@ -0,0 +1,352 @@ <template> <el-dialog class="gd-dialog" v-model="visible" :title="titleEnum[dialogMode]" @closed="visible = false" destroy-on-close width="60%" > <div class="gd-dialog-form"> <!-- 关联工单选择 --> <div class="work-order-section"> <div class="form-item-row"> <span class="label required">选择工单:</span> <el-select class="gd-select" style="width: 150px" popper-class="gd-select-popper" v-model="selectedWorkOrderId" placeholder="请选择" clearable filterable :disabled="dialogReadonly" @change="handleWorkOrderChange" > <el-option v-for="item in workOrderList" :key="item.id" :label="item.workOrderName" :value="item.id" /> </el-select> </div> </div> <!-- 工单信息展示 --> <div class="work-order-info" v-if="selectedWorkOrder"> <el-row> <el-col :span="12"> <div class="info-item"> <span class="label">工单类型</span> <span class="val">{{ getDictLabel(selectedWorkOrder.workOrderType, dictObj.workOrderType) }}</span> </div> </el-col> <el-col :span="12"> <div class="info-item"> <span class="label">执行时间范围</span> <span class="val">{{ selectedWorkOrder.executeStartTime }} ~ {{ selectedWorkOrder.executeEndTime }}</span> </div> </el-col> <el-col :span="12"> <div class="info-item"> <span class="label">设备需求</span> <span class="val">{{ getDictLabel(selectedWorkOrder.deviceLoadDemand, dictObj.deviceLoadDemand) }}</span> </div> </el-col> <el-col :span="12"> <div class="info-item"> <span class="label">工单备注</span> <span class="val">{{ selectedWorkOrder.remark }}</span> </div> </el-col> </el-row> </div> <!-- 子任务表格表单 --> <div class="task-table-section"> <div class="section-title">添加子任务:</div> <div class="task-table-container"> <el-table :data="taskList"> <el-table-column width="50" label=""> <template v-slot="{ $index }">{{ $index + 1 }}</template> </el-table-column> <el-table-column prop="patrolTaskName" label="巡查任务名称" min-width="120"> <template v-slot="{ row }"> <el-input class="gd-input" v-model="row.patrolTaskName" placeholder="请输入" :disabled="dialogReadonly" /> </template> </el-table-column> <el-table-column prop="patrolTaskType" label="巡查任务类型" min-width="140"> <template v-slot="{ row }"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="row.patrolTaskType" placeholder="请选择" :disabled="dialogReadonly" > <el-option v-for="item in dictObj.patrolTaskType" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" /> </el-select> </template> </el-table-column> <el-table-column prop="executeTime" label="任务执行时间" min-width="180"> <template v-slot="{ row }"> <el-date-picker class="gd-date-picker" popper-class="gd-date-picker-popper" v-model="row.executeTime" type="datetime" placeholder="请选择" value-format="YYYY-MM-DD HH:mm:ss" :disabled="dialogReadonly" /> </template> </el-table-column> <el-table-column prop="patrolRouteUrl" label="巡查任务航线" min-width="120"> <template v-slot="{ row }"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="row.patrolRouteUrl" placeholder="请选择" :disabled="dialogReadonly" > <el-option v-for="item in routeOptions" :key="item.id" :label="item.name" :value="item.id" /> </el-select> </template> </el-table-column> <el-table-column prop="recommendFlyerName" label="推荐飞手" min-width="120"> <template v-slot="{ row }"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="row.recommendFlyerName" placeholder="请选择" filterable :disabled="dialogReadonly" > <el-option v-for="item in flyerList" :key="item.id" :label="item.flyerName" :value="item.flyerName" /> </el-select> </template> </el-table-column> <el-table-column prop="deviceId" label="选择设备" min-width="120"> <template v-slot="{ row }"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="row.deviceId" placeholder="请选择" filterable :disabled="dialogReadonly" > <el-option v-for="item in deviceList" :key="item.id" :label="item.nickname" :value="item.id" /> </el-select> </template> </el-table-column> <el-table-column prop="taskDesc" label="巡查任务描述" min-width="120"> <template v-slot="{ row }"> <el-input class="gd-input" v-model="row.taskDesc" placeholder="请输入" :disabled="dialogReadonly" /> </template> </el-table-column> <el-table-column label="操作" width="80" fixed="right" v-if="!dialogReadonly"> <template v-slot="{ $index }"> <el-button type="primary" :icon="Plus" circle size="small" @click="addTaskRow" /> <el-button type="danger" :icon="Delete" circle size="small" @click="removeTaskRow($index)" :disabled="taskList.length <= 1" /> </template> </el-table-column> </el-table> </div> </div> </div> <template #footer> <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button> <el-button class="save-btn" color="#4C34FF" v-if="!dialogReadonly" :loading="submitting" :disabled="submitting" @click="handleSubmit" > 确认 </el-button> </template> </el-dialog> </template> <script setup> import { computed, ref, onMounted } from 'vue' import { ElMessage } from 'element-plus' import { Plus, Delete } from '@element-plus/icons-vue' import { getDictLabel } from '@ztzf/utils' import { gdPatrolTaskSaveApi, gdFlyerPageApi } from './inspectionRequestApi' import { gdWorkOrderPageApi } from '../orderManage/orderManageApi' import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi' // 初始化任务行 const initTaskRow = () => ({ patrolTaskName: '', patrolTaskType: '', executeTime: '', patrolRouteUrl: '', recommendFlyerName: '', deviceId: null, taskDesc: '', }) const dictObj = inject('dictObj') const emit = defineEmits(['success']) const visible = defineModel() // 弹框显隐 const dialogMode = ref('add') // 弹框模式 const submitting = ref(false) // 提交中 const dialogReadonly = computed(() => dialogMode.value === 'view') const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' }) // 工单相关 const workOrderList = ref([]) // 工单列表 const selectedWorkOrderId = ref(null) // 选中的工单ID const selectedWorkOrder = ref(null) // 选中的工单信息 // 下拉选项 const flyerList = ref([]) // 飞手列表 const deviceList = ref([]) // 设备列表 const routeOptions = ref([ { name: '航线1', id: '1' }, { name: '航线2', id: '2' }, { name: '航线3', id: '3' }, ]) // 航线假数据 // 子任务列表 const taskList = ref([initTaskRow()]) // 处理工单选择变化 function handleWorkOrderChange(val) { if (val) { selectedWorkOrder.value = workOrderList.value.find(item => item.id === val) } else { selectedWorkOrder.value = null } } // 添加任务行 function addTaskRow() { taskList.value.push(initTaskRow()) } // 删除任务行 function removeTaskRow(index) { if (taskList.value.length > 1) { taskList.value.splice(index, 1) } } // 获取工单列表 async function getWorkOrderList() { const res = await gdWorkOrderPageApi({ size: 999 }) workOrderList.value = res?.data?.data?.records ?? [] } // 获取飞手列表 async function getFlyerList() { const res = await gdFlyerPageApi({ size: 999 }) flyerList.value = res?.data?.data?.records ?? [] } // 获取设备列表 async function getDeviceList() { const res = await gdManageDeviceListApi() deviceList.value = res?.data?.data ?? [] } // 提交新增 async function handleSubmit() { if (!selectedWorkOrderId.value) { ElMessage.warning('请选择关联工单') return } if (!taskList.value.length) { ElMessage.warning('请添加至少一个子任务') return } // 校验子任务 for (let i = 0; i < taskList.value.length; i++) { const task = taskList.value[i] if (!task.patrolTaskName) { ElMessage.warning(`第${i + 1}行: 请输入巡查任务名称`) return } if (!task.patrolTaskType) { ElMessage.warning(`第${i + 1}行: 请选择巡查任务类型`) return } if (!task.executeTime) { ElMessage.warning(`第${i + 1}行: 请选择任务执行时间`) return } if (!task.patrolRouteUrl) { ElMessage.warning(`第${i + 1}行: 请选择巡查任务航线`) return } if (!task.recommendFlyerName) { ElMessage.warning(`第${i + 1}行: 请选择推荐飞手`) return } if (!task.deviceId) { ElMessage.warning(`第${i + 1}行: 请选择设备`) return } } submitting.value = true try { const dataList = taskList.value.map(item => ({ ...item, workOrderId: selectedWorkOrderId.value, })) await gdPatrolTaskSaveApi(dataList) ElMessage.success('新增成功') visible.value = false emit('success') } finally { submitting.value = false } } // 打开弹框 async function open({ mode = 'add', row } = {}) { dialogMode.value = mode if (mode === 'add') { selectedWorkOrderId.value = null selectedWorkOrder.value = null taskList.value = [initTaskRow()] } else { // 编辑/查看模式 - 加载已有数据 selectedWorkOrderId.value = row?.workOrderId handleWorkOrderChange(row?.workOrderId) taskList.value = [{ ...row }] } } onMounted(() => { getWorkOrderList() getFlyerList() getDeviceList() }) defineExpose({ open }) </script> <style scoped lang="scss"></style> applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
New file @@ -0,0 +1,315 @@ <template> <el-dialog class="gd-dialog" v-model="visible" :title="titleEnum[dialogMode]" @closed="visible = false" :style="{ width: pxToRem(1216) }" destroy-on-close > <div class="content" style="display: flex"> <div class="leftBox"> <!-- 查看模式 --> <div class="detail-container" v-if="dialogReadonly"> <el-row> <el-col :span="12"> <div class="label">巡查任务名称</div> <div class="val">{{ formData.patrolTaskName }}</div> </el-col> <el-col :span="12"> <div class="label">巡查任务类型</div> <div class="val">{{ getDictLabel(formData.patrolTaskType, dictObj.patrolTaskType) }}</div> </el-col> <el-col :span="12"> <div class="label">任务执行时间</div> <div class="val">{{ formData.executeTime }}</div> </el-col> <el-col :span="12"> <div class="label">巡查任务航线</div> <div class="val">{{ getRouteName(formData.patrolRouteUrl) }}</div> </el-col> <el-col :span="12"> <div class="label">推荐飞手</div> <div class="val">{{ formData.recommendFlyerName }}</div> </el-col> <el-col :span="12"> <div class="label">选择设备</div> <div class="val">{{ getDeviceName(formData.deviceId) }}</div> </el-col> <el-col :span="12"> <div class="label">关联工单</div> <div class="val">{{ getWorkOrderName(formData.workOrderId) }}</div> </el-col> <el-col :span="24"> <div class="label">巡查任务描述</div> <div class="val">{{ formData.taskDesc }}</div> </el-col> </el-row> </div> <!-- 编辑模式 --> <el-form class="gd-dialog-form" v-else ref="formRef" :model="formData" :rules="rules" label-width="110px"> <el-row> <el-col :span="12"> <el-form-item label="巡查任务名称" prop="patrolTaskName"> <el-input class="gd-input" v-model="formData.patrolTaskName" placeholder="请输入" clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="巡查任务类型" prop="patrolTaskType"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="formData.patrolTaskType" placeholder="请选择" clearable > <el-option v-for="item in dictObj.patrolTaskType" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="任务执行时间" prop="executeTime"> <el-date-picker class="gd-date-picker" popper-class="gd-date-picker-popper" v-model="formData.executeTime" type="datetime" placeholder="请选择" value-format="YYYY-MM-DD HH:mm:ss" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="巡查任务航线" prop="patrolRouteUrl"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="formData.patrolRouteUrl" placeholder="请选择" clearable > <el-option v-for="item in routeOptions" :key="item.id" :label="item.name" :value="item.id" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="推荐飞手" prop="recommendFlyerName"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="formData.recommendFlyerName" placeholder="请选择" filterable clearable > <el-option v-for="item in flyerList" :key="item.id" :label="item.flyerName" :value="item.flyerName" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="选择设备" prop="deviceId"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="formData.deviceId" placeholder="请选择" filterable clearable > <el-option v-for="item in deviceList" :key="item.id" :label="item.nickname" :value="item.id" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="关联工单"> <span>{{ getWorkOrderName(formData.workOrderId) }}</span> </el-form-item> </el-col> <el-col :span="24"> <el-form-item label="巡查任务描述" prop="taskDesc"> <el-input class="gd-input" type="textarea" v-model="formData.taskDesc" placeholder="请输入" clearable /> </el-form-item> </el-col> </el-row> </el-form> <!-- 地图组件 --> <CommonCesiumMap ref="mapRef" class="leftMap gd-cesium" :active="visible" :flat-mode="false" :terrain="true" :layer-mode="4" :boundary="false" :zoomToBoundary="false" /> </div> </div> <template #footer> <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button> <el-button class="save-btn" color="#4C34FF" v-if="!dialogReadonly" :loading="submitting" :disabled="submitting" @click="handleSubmit" > 确认 </el-button> </template> </el-dialog> </template> <script setup> import { computed, ref, onMounted } from 'vue' import { ElMessage } from 'element-plus' import { fieldRules, getDictLabel } from '@ztzf/utils' import { gdPatrolTaskRepublish, gdFlyerPageApi } from './inspectionRequestApi' import { gdWorkOrderPageApi } from '../orderManage/orderManageApi' import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi' import { pxToRem } from '@/utils/rem' import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue' // 初始化表单数据 const initForm = () => ({ id: null, patrolTaskName: '', patrolTaskType: '', executeTime: '', patrolRouteUrl: '', recommendFlyerName: '', deviceId: null, taskDesc: '', workOrderId: null, }) const mapRef = ref(null) const dictObj = inject('dictObj') const emit = defineEmits(['success']) const formRef = ref(null) const formData = ref(initForm()) const visible = defineModel() const dialogMode = ref('view') const submitting = ref(false) const dialogReadonly = computed(() => dialogMode.value === 'view') const titleEnum = ref({ edit: '编辑', view: '查看' }) // 下拉选项 const flyerList = ref([]) const deviceList = ref([]) const workOrderList = ref([]) const routeOptions = ref([ { name: '航线1', id: '1' }, { name: '航线2', id: '2' }, { name: '航线3', id: '3' }, ]) let viewer // 校验规则 const rules = { patrolTaskName: fieldRules(true, 50), patrolTaskType: fieldRules(true), executeTime: fieldRules(true), patrolRouteUrl: fieldRules(true), recommendFlyerName: fieldRules(true), deviceId: fieldRules(true), } // 获取航线名称 function getRouteName(id) { const item = routeOptions.value.find(item => item.id === id) return item ? item.name : id } // 获取设备名称 function getDeviceName(id) { const item = deviceList.value.find(item => item.id === id) return item ? item.nickname : id } // 获取工单名称 function getWorkOrderName(id) { const item = workOrderList.value.find(item => item.id === id) return item ? item.workOrderName : id } // 获取工单列表 async function getWorkOrderList() { const res = await gdWorkOrderPageApi({ size: 999 }) workOrderList.value = res?.data?.data?.records ?? [] } // 获取飞手列表 async function getFlyerList() { const res = await gdFlyerPageApi({ size: 999 }) flyerList.value = res?.data?.data?.records ?? [] } // 获取设备列表 async function getDeviceList() { const res = await gdManageDeviceListApi() deviceList.value = res?.data?.data ?? [] } // 提交编辑 async function handleSubmit() { const isValid = await formRef.value?.validate().catch(() => false) if (!isValid) return submitting.value = true try { await gdPatrolTaskRepublish(formData.value) ElMessage.success('更新成功') visible.value = false emit('success') } finally { submitting.value = false } } // 打开弹框 async function open({ mode = 'view', row } = {}) { dialogMode.value = mode formData.value = { ...initForm(), ...row } initMap() } // 初始化地图实例 function initMap() { if (viewer) return const map = mapRef.value?.getMap() viewer = map?.viewer || null } onMounted(() => { getWorkOrderList() getFlyerList() getDeviceList() }) defineExpose({ open }) </script> <style lang="scss" scoped> .content { display: flex; gap: 0 20px; .leftBox { width: 0; flex: 1; .gd-cesium { width: 100%; height: 423px; } } } </style> applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
@@ -1,9 +1,253 @@ <template> <basic-container> 基础3管理 </basic-container> <basic-container> <el-form ref="queryParamsRef" :model="searchParams" class="gd-search-form"> <el-form-item label="任务名称" prop="patrolTaskName"> <el-input class="gd-input" v-model="searchParams.patrolTaskName" placeholder="请输入" clearable @clear="handleSearch" /> </el-form-item> <el-form-item label="任务类型" prop="patrolTaskType"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="searchParams.patrolTaskType" placeholder="请选择" clearable @change="handleSearch" > <el-option v-for="item in dictObj.patrolTaskType" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" /> </el-select> </el-form-item> <el-form-item label="任务状态" prop="taskStatus"> <el-select class="gd-select" popper-class="gd-select-popper" v-model="searchParams.taskStatus" placeholder="请选择" clearable @change="handleSearch" > <el-option v-for="item in taskStatusOptions" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> <el-form-item label="执行时间" prop="executeTime"> <el-date-picker class="gd-date-picker" popper-class="gd-date-picker-popper" v-model="dateRange" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD HH:mm:ss" @change="handleSearch" /> </el-form-item> <el-form-item class="gd-search-actions"> <el-button :icon="RefreshRight" @click="resetForm"></el-button> <el-button class="search-btn" :icon="Search" @click="handleSearch"></el-button> </el-form-item> </el-form> <div class="gd-table-toolbar"> <el-button :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">新增</el-button> <el-button :icon="Delete" color="#4C34FF" :disabled="!selectedIds.length" @click="handleDelete()">删除</el-button> </div> <div class="gd-table-container" v-loading="loading"> <div class="gd-table-content gd-table-content-bg"> <el-table class="gd-table" :data="list" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="46" /> <el-table-column type="index" width="64" label="序号" /> <el-table-column prop="patrolTaskName" show-overflow-tooltip label="巡查任务名称" /> <el-table-column prop="taskNo" show-overflow-tooltip label="巡查任务编号" /> <el-table-column prop="patrolTaskType" show-overflow-tooltip label="巡查任务类型"> <template v-slot="{ row }"> {{ getDictLabel(row.patrolTaskType, dictObj.patrolTaskType) }} </template> </el-table-column> <el-table-column prop="taskStatus" show-overflow-tooltip label="巡查任务状态"> <template v-slot="{ row }"> {{ getTaskStatusLabel(row.taskStatus) }} </template> </el-table-column> <el-table-column prop="executeTime" show-overflow-tooltip label="任务执行时间" /> <el-table-column prop="workOrderName" show-overflow-tooltip label="关联工单" /> <el-table-column prop="createTime" show-overflow-tooltip label="巡查任务创建时间" /> <el-table-column prop="taskDesc" show-overflow-tooltip label="巡查任务描述" /> <el-table-column label="操作" class-name="operation-btns"> <template v-slot="{ row }"> <el-link @click="viewDiaLogView('view', row)">查看</el-link> <el-link @click="openForm('edit', row)">编辑</el-link> <el-link @click="handleDelete(row)">删除</el-link> </template> </el-table-column> </el-table> </div> <div class="gd-pagination-parent"> <el-pagination popper-class="gd-select-popper" v-model:current-page="searchParams.current" v-model:page-size="searchParams.size" layout="total, prev, pager, next, sizes" :total="total" @change="getList" /> </div> </div> <FormDiaLog ref="dialogRef" @success="getList" v-if="dialogVisible" v-model="dialogVisible" /> <ViewDiaLog ref="viewDiaLogRef" @success="getList" v-if="viewDiaLogVisible" v-model="viewDiaLogVisible" /> </basic-container> </template> <script setup> import { Search, RefreshRight, Plus, Delete } from '@element-plus/icons-vue' import { onMounted, ref } from 'vue' import { ElMessage, ElMessageBox } from 'element-plus' import { getDictionaryByCode } from '@/api/system/dictbiz' import { dateRangeFormat, getDictLabel } from '@ztzf/utils' import FormDiaLog from './FormDiaLog.vue' import { gdPatrolTaskPageApi, gdPatrolTaskRemoveApi } from './inspectionRequestApi' import ViewDiaLog from '@/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue' // 初始化查询参数 const initSearchParams = () => ({ patrolTaskName: '', // 任务名称 patrolTaskType: '', // 任务类型 taskStatus: '', // 任务状态 startTime: '', // 开始时间 endTime: '', // 结束时间 current: 1, // 当前页 size: 10, // 每页大小 }) const searchParams = ref(initSearchParams()) // 查询参数 const dateRange = ref([]) // 执行时间范围 const total = ref(0) // 总条数 const loading = ref(true) // 列表加载中 const list = ref([]) // 列表数据 const selectedIds = ref([]) // 勾选的ID列表 const queryParamsRef = ref(null) // 查询表单实例 const dialogRef = ref(null) const viewDiaLogRef = ref(null) const dialogVisible = ref(false) const viewDiaLogVisible = ref(false) const requester = ref(true) const dictObj = ref({ patrolTaskType: [], // 巡查任务类型 workOrderType: [], // 工单类型 deviceLoadDemand: [], // 设备负载需求 }) // 任务状态选项 const taskStatusOptions = [ { label: '待签收', value: '0' }, { label: '拒绝签收', value: '1' }, { label: '已撤回', value: '2' }, { label: '待审核', value: '3' }, { label: '审核驳回', value: '4' }, { label: '审核通过', value: '5' }, { label: '待验收', value: '6' }, { label: '拒绝验收', value: '7' }, { label: '验收通过', value: '8' }, ] provide('dictObj', dictObj) provide('taskStatusOptions', taskStatusOptions) provide('requester', requester) // 获取任务状态标签 function getTaskStatusLabel(value) { const item = taskStatusOptions.find(item => item.value === value) return item ? item.label : value } // 获取列表 async function getList() { const range = dateRangeFormat(dateRange.value) loading.value = true try { const res = await gdPatrolTaskPageApi({ ...searchParams.value, startTime: range[0], endTime: range[1] }) list.value = res?.data?.data?.records ?? [] total.value = res?.data?.data?.total ?? 0 } finally { loading.value = false } } // 查询 function handleSearch() { searchParams.value.current = 1 getList() } // 重置查询 function resetForm() { queryParamsRef.value?.resetFields() dateRange.value = [] searchParams.value.current = 1 getList() } // 新增/编辑/查看 弹框 function openForm(mode, row) { dialogVisible.value = true nextTick(() => { dialogRef.value?.open({ mode, row }) }) } function viewDiaLogView(mode, row) { viewDiaLogVisible.value = true nextTick(() => { viewDiaLogRef.value?.open({ mode, row }) }) } // 删除 async function handleDelete(row) { const tips = row ? '该条' : '选中的项' await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', { type: 'warning', customClass: 'gd-confirm-custom', confirmButtonClass: 'gd-confirm-button', cancelButtonClass: 'gd-confirm-cancel-button', }) const ids = row ? row.id : selectedIds.value.join(',') await gdPatrolTaskRemoveApi({ ids }) ElMessage.success('删除成功') selectedIds.value = [] getList() } // 勾选值设置 function handleSelectionChange(rows) { selectedIds.value = rows.map(item => item.id) } // 获取字典 function getDictList() { getDictionaryByCode('patrolTaskType,workOrderType,deviceLoadDemand').then(res => { dictObj.value = res.data.data }) } onMounted(() => { getList() getDictList() }) </script> <style scoped lang="scss"> </style> <style scoped lang="scss"></style> applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/inspectionRequestApi.js
New file @@ -0,0 +1,46 @@ import request from '@/axios' // 分页查询 export const gdPatrolTaskPageApi = params => { return request({ url: `/drone-gd/workOrder/gdPatrolTask/page`, method: 'get', params: { descs: 'create_time', ...params }, }) } // 新增 export const gdPatrolTaskSaveApi = data => { return request({ url: `/drone-gd/workOrder/gdPatrolTask/save`, method: 'post', data, }) } // 删除 export const gdPatrolTaskRemoveApi = params => { return request({ url: `/drone-gd/workOrder/gdPatrolTask/remove`, method: 'post', params, }) } // 飞手分页 export const gdFlyerPageApi = params => { return request({ url: `/drone-gd/flyer/gdFlyer/page`, method: 'get', params, }) } // 更新单个巡查任务信息 export const gdPatrolTaskRepublish = data => { return request({ url: `/drone-gd/workOrder/gdPatrolTask/republish`, method: 'post', data, }) } packages/utils/common/index.js
@@ -14,7 +14,7 @@ export function getDictLabel(value, dictList) { return dictList.find(item => item.dictKey === String(value))?.dictValue || value || '' return dictList.filter(item => value.includes(item.dictKey)).map(item => item.dictValue).join(',') } export function blobDownload(res) {