吉安感知网项目-前端
罗广辉
2026-05-22 32fab9684f6642bf8c6c9b3d913b3124ce997f4d
feat: 巡检任务使用xt接口
8 files modified
115 ■■■■■ changed files
applications/task-work-order/src/api/zkxt/index.js 8 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/clueEvents/index.vue 18 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue 17 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue 16 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue 14 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue 18 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue 14 ●●●● patch | view | raw | blame | history
packages/utils/common/index.js 10 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/api/zkxt/index.js
@@ -62,4 +62,12 @@
    })
}
// 获取字典下拉 task_inspection_type
export const getDictListApi = (str) => {
    return request({
        url: `/system/dict/data/type/${str}`,
        method: 'get',
    })
}
applications/task-work-order/src/views/orderView/orderManage/clueEvents/index.vue
@@ -22,10 +22,10 @@
                    @change="handleSearch"
                >
                    <el-option
                        v-for="item in dictObj.workOrderType"
                        :key="item.dictKey"
                        :label="item.dictValue"
                        :value="item.dictKey"
                        v-for="item in workOrderTypeXT"
                        :key="item.dictValue"
                        :label="item.dictLabel"
                        :value="item.dictValue"
                    />
                </el-select>
            </el-form-item>
@@ -76,7 +76,7 @@
                    <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.workOrderType) }}
                            {{ getDictLabelXT(row.patrolTaskType, workOrderTypeXT) }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="taskStatus" show-overflow-tooltip label="巡查任务状态">
@@ -117,7 +117,8 @@
import { Search, RefreshRight } from '@element-plus/icons-vue'
import { onMounted, ref } from 'vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { dateRangeFormat, getDictLabel } from '@ztzf/utils'
import { dateRangeFormat, getDictLabel, getDictLabelXT } from '@ztzf/utils'
import { getDictListApi } from '@/api/zkxt'
import { gdPatrolTaskPageApi } from '../inspectionRequest/inspectionRequestApi'
import { getDeptTree } from '@/api/system/dept'
import ViewDiaLog from './ViewDiaLog.vue'
@@ -149,8 +150,10 @@
    workOrderType: [], // 巡查任务类型
    taskStatus: [], // 巡查任务状态
})
const workOrderTypeXT = ref([])
provide('dictObj', dictObj)
provide('workOrderTypeXT', workOrderTypeXT)
provide('deptTree', deptTree)
provide('treeProps', treeProps)
@@ -199,6 +202,9 @@
    getDictionaryByCode('workOrderType,taskStatus').then(res => {
        dictObj.value = res.data.data
    })
    getDictListApi('task_inspection_type').then(res => {
        workOrderTypeXT.value = res.data.data || []
    })
}
// 获取部门树
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
@@ -33,7 +33,7 @@
                        <div class="info-item">
                            <span class="label">工单类型</span>
                            <span class="val" v-if="selectedWorkOrder">
                                {{ getDictLabel(selectedWorkOrder.workOrderType, dictObj.workOrderType) }}
                                {{ getDictLabelXT(selectedWorkOrder.workOrderType, workOrderTypeXT) }}
                            </span>
                            <span class="val grayText" v-else>选择工单后自动带出</span>
                        </div>
@@ -106,10 +106,10 @@
                                    @change="handlePatrolTaskTypeChange($index, $event)"
                                >
                                    <el-option
                                        v-for="item in dictObj.workOrderType"
                                        :key="item.dictKey"
                                        :label="item.dictValue"
                                        :value="item.dictKey"
                                        v-for="item in workOrderTypeXT"
                                        :key="item.dictValue"
                                        :label="item.dictLabel"
                                        :value="item.dictValue"
                                    />
                                </el-select>
                            </template>
@@ -265,10 +265,11 @@
</template>
<script setup>
import { computed, ref, onMounted } from 'vue'
import { computed, ref, onMounted, inject } from 'vue'
import { ElMessage } from 'element-plus'
import { Plus, Delete } from '@element-plus/icons-vue'
import { geomAnalysis, getDictLabel } from '@ztzf/utils'
import { geomAnalysis, getDictLabel, getDictLabelXT } from '@ztzf/utils'
import { gdPatrolTaskSaveApi, gdFlyerPageApi, gdPatrolTaskAuditApi } from './inspectionRequestApi'
import { gdWorkOrderPageApi } from '../orderManage/orderManageApi'
import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi'
@@ -305,6 +306,7 @@
const routeOptions = ref([]) // 航线选项(根据工单范围获取)
const routeLoading = ref(false) // 航线加载中
const algorithmTreeData = ref([]) // 算法树形数据
const workOrderTypeXT = inject('workOrderTypeXT', ref([]))
// 获取算法分组数据
async function getAlgorithmList() {
@@ -534,6 +536,7 @@
    dialogMode.value = mode
    await getWorkOrderList()
    getAlgorithmList()
    if (dialogMode.value === 'add') {
        selectedWorkOrderId.value = null
        selectedWorkOrder.value = null
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -42,7 +42,7 @@
                        </el-col>
                        <el-col :span="12">
                            <div class="label">巡查任务类型</div>
                            <div class="val">{{ getDictLabel(formData.patrolTaskType, dictObj.workOrderType) }}</div>
                            <div class="val">{{ getDictLabelXT(formData.patrolTaskType, workOrderTypeXT) }}</div>
                        </el-col>
                        <el-col :span="12">
                            <div class="label">任务执行时间</div>
@@ -119,10 +119,10 @@
                                    clearable
                                >
                                    <el-option
                                        v-for="item in dictObj.workOrderType"
                                        :key="item.dictKey"
                                        :label="item.dictValue"
                                        :value="item.dictKey"
                                        v-for="item in workOrderTypeXT"
                                        :key="item.dictValue"
                                        :label="item.dictLabel"
                                        :value="item.dictValue"
                                    />
                                </el-select>
                            </el-form-item>
@@ -284,9 +284,9 @@
</template>
<script setup>
import { computed, ref, onMounted } from 'vue'
import { computed, ref, onMounted, inject } from 'vue'
import { ElMessage } from 'element-plus'
import { fieldRules, flyVisual, getDictLabel, geomAnalysis } from '@ztzf/utils'
import { fieldRules, flyVisual, getDictLabel, getDictLabelXT, geomAnalysis } from '@ztzf/utils'
import {
    gdPatrolTaskRepublish,
    gdFlyerPageApi,
@@ -345,6 +345,7 @@
}
const algorithmTreeData = ref([]) // 算法树形数据
const workOrderTypeXT = inject('workOrderTypeXT', ref([]))
// 获取算法分组数据
async function getAlgorithmList() {
@@ -580,6 +581,7 @@
async function open({ mode = 'view', row } = {}) {
    detailLoaded.value = false
    dialogMode.value = mode
    const res = await gdPatrolTaskDetailApi({ id: row.id })
    formData.value = { ...initForm(), ...res.data.data }
    // 确保 algorithmIds 是数组
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
@@ -13,8 +13,8 @@
            <el-form-item label="任务类型" prop="patrolTaskType">
                <el-select class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.patrolTaskType"
                    placeholder="请选择" clearable @change="handleSearch">
                    <el-option v-for="item in dictObj.workOrderType" :key="item.dictKey" :label="item.dictValue"
                        :value="item.dictKey" />
                    <el-option v-for="item in workOrderTypeXT" :key="item.dictValue" :label="item.dictLabel"
                        :value="item.dictValue" />
                </el-select>
            </el-form-item>
@@ -55,7 +55,7 @@
                    <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.workOrderType) }}
                            {{ getDictLabelXT(row.patrolTaskType, workOrderTypeXT) }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="taskStatus" show-overflow-tooltip label="巡查任务状态">
@@ -93,7 +93,8 @@
import { onMounted, ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { dateRangeFormat, getDictLabel } from '@ztzf/utils'
import { dateRangeFormat, getDictLabel, getDictLabelXT } from '@ztzf/utils'
import { getDictListApi } from '@/api/zkxt'
import FormDiaLog from './FormDiaLog.vue'
import { gdPatrolTaskPageApi, gdPatrolTaskRemoveApi } from './inspectionRequestApi'
import ViewDiaLog from '@/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue'
@@ -130,8 +131,10 @@
    deviceLoadDemand: [], // 设备负载需求
    taskStatus: [], // 巡查任务状态
})
const workOrderTypeXT = ref([])
const activeName = ref('all')
provide('dictObj', dictObj)
provide('workOrderTypeXT', workOrderTypeXT)
const colors = {
    0: '#F6A000',//0待签收
@@ -213,6 +216,9 @@
    getDictionaryByCode('workOrderType,deviceLoadDemand,taskStatus').then(res => {
        dictObj.value = res.data.data
    })
    getDictListApi('task_inspection_type').then(res => {
        workOrderTypeXT.value = res.data.data || []
    })
}
function refusalAccept (row) {
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -31,7 +31,7 @@
                        </el-col>
                        <el-col :span="12">
                            <div class="label">工单类型</div>
                            <div class="val">{{ getDictLabel(formData.workOrderType, dictObj.workOrderType) }}</div>
                            <div class="val">{{ getDictLabelXT(formData.workOrderType, workOrderTypeXT) }}</div>
                        </el-col>
                        <el-col :span="12">
                            <div class="label">执行时间范围</div>
@@ -62,7 +62,7 @@
                            <el-table-column prop="patrolTaskName" show-overflow-tooltip label="巡查任务名称" />
                            <el-table-column prop="patrolTaskType" show-overflow-tooltip label="巡查任务类型">
                                <template v-slot="{ row }">
                                    {{ getDictLabel(row.patrolTaskType, dictObj.workOrderType) }}
                                    {{ getDictLabelXT(row.patrolTaskType, workOrderTypeXT) }}
                                </template>
                            </el-table-column>
                            <el-table-column prop="taskStatus" show-overflow-tooltip label="任务状态">
@@ -102,10 +102,10 @@
                                    clearable
                                >
                                    <el-option
                                        v-for="item in dictObj.workOrderType"
                                        :key="item.dictKey"
                                        :label="item.dictValue"
                                        :value="item.dictKey"
                                        v-for="item in workOrderTypeXT"
                                        :key="item.dictValue"
                                        :label="item.dictLabel"
                                        :value="item.dictValue"
                                    />
                                </el-select>
                            </el-form-item>
@@ -262,9 +262,9 @@
</template>
<script setup>
import { computed, ref, nextTick } from 'vue'
import { computed, ref, nextTick, inject } from 'vue'
import { ElMessage } from 'element-plus'
import { dateRangeFormat, fieldRules, flyVisual, geomAnalysis, getDictLabel } from '@ztzf/utils'
import { dateRangeFormat, fieldRules, flyVisual, geomAnalysis, getDictLabel, getDictLabelXT } from '@ztzf/utils'
import {
    gdWorkOrderDetailApi,
    gdWorkOrderFlowListApi,
@@ -286,6 +286,7 @@
import { useStore } from 'vuex'
import OrderStepBar from '@/views/orderView/orderManage/orderManage/OrderStepBar.vue'
import OutcomeData from './outcomeData.vue'
import { getDictListApi } from '@/api/zkxt'
const store = useStore()
const permission = computed(() => store.state.user.permission)
const activeName = ref('basic')
@@ -305,6 +306,7 @@
const mapRef = ref(null)
const rejectVisible = ref(false)
const dictObj = inject('dictObj')
const workOrderTypeXT = inject('workOrderTypeXT', ref([]))
const dateRange = ref([])
const patrolTaskList = ref([])
const emit = defineEmits(['success'])
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
@@ -13,8 +13,8 @@
            <el-form-item label="工单类型" prop="workOrderType">
                <el-select class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.workOrderType"
                    placeholder="请选择" clearable @change="handleSearch">
                    <el-option v-for="item in dictObj.workOrderType" :key="item.dictKey" :label="item.dictValue"
                        :value="item.dictKey" />
                    <el-option v-for="item in workOrderTypeXT" :key="item.dictValue" :label="item.dictLabel"
                        :value="item.dictValue" />
                </el-select>
            </el-form-item>
@@ -53,7 +53,7 @@
                    <el-table-column prop="workOrderCode" show-overflow-tooltip label="工单编号" />
                    <el-table-column prop="workOrderType" show-overflow-tooltip label="工单类型">
                        <template v-slot="{ row }">
                            {{ getDictLabel(row.workOrderType, dictObj.workOrderType) }}
                            {{ getDictLabelXT(row.workOrderType, workOrderTypeXT) }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="status" show-overflow-tooltip label="阶段状态">
@@ -102,7 +102,8 @@
import { onMounted, ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { dateRangeFormat, getDictLabel } from '@ztzf/utils'
import { dateRangeFormat, getDictLabel, getDictLabelXT } from '@ztzf/utils'
import { getDictListApi } from '@/api/zkxt'
import FormDiaLog from './FormDiaLog.vue'
import { gdWorkOrderPageApi, gdWorkOrderRemoveApi } from './orderManageApi'
import dayjs from 'dayjs'
@@ -143,7 +144,9 @@
    workOrderType: [], // 工单类型
    workOrderStatus: [], // 工单状态
})
const workOrderTypeXT = ref([])
provide('dictObj', dictObj)
provide('workOrderTypeXT', workOrderTypeXT)
// 获取列表
async function getList () {
@@ -246,6 +249,9 @@
    getDictionaryByCode('deviceLoadDemand,workOrderType,workOrderStatus,taskStatus').then(res => {
        dictObj.value = res.data.data
    })
    getDictListApi('task_inspection_type').then(res => {
        workOrderTypeXT.value = res.data.data || []
    })
}
// 获取两个tab的总条数
packages/utils/common/index.js
@@ -38,6 +38,16 @@
        .join(',');
}
// id转label xt
export function getDictLabelXT(value, dictList = []) {
    if (value === null || value === undefined || value === '') return '';
    const values = String(value).split(',');
    return dictList
        .filter(item => values.includes(String(item.dictValue)))
        .map(item => item.dictLabel)
        .join(',');
}
export function blobDownload(res) {
    const disposition = res.headers?.['content-disposition'] || res.headers?.['Content-Disposition']
    const encodedName = disposition.split('filename=')[1]