吉安感知网项目-前端
罗广辉
2026-06-06 c44ade277c2df14948956d7faade8bba2e39ed0c
feat: 类型多选改造1
5 files modified
92 ■■■■■ changed files
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue 72 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue 13 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue 1 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/taskTypeOptions.js 4 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
@@ -13,21 +13,16 @@
            </el-form-item>
            <el-form-item label="文档类型" prop="resultType">
                <el-select
                    class="gd-select gray"
                    popper-class="gd-select-popper"
                <el-cascader
                    class="gd-cascader gray"
                    popper-class="gd-cascader-popper"
                    v-model="searchParams.resultType"
                    :options="workOrderTypeXT"
                    :props="taskTypeCascaderProps"
                    placeholder="请选择"
                    clearable
                    @change="handleSearch"
                >
                    <el-option
                        v-for="item in dictObj.workOrderType"
                        :key="item.dictKey"
                        :label="item.dictValue"
                        :value="item.dictKey"
                    />
                </el-select>
                />
            </el-form-item>
            <el-form-item class="gd-search-actions">
@@ -56,7 +51,7 @@
                    <!-- <el-table-column prop="resultType" show-overflow-tooltip label="文档类型" /> -->
                    <el-table-column prop="resultType" show-overflow-tooltip label="文档类型">
                        <template v-slot="{ row }">
                            {{ getDictLabel(row.resultType, dictObj.workOrderType) }}
                            {{ getTaskTypeLabel(row.resultType, workOrderTypeXT) }}
                        </template>
                    </el-table-column>
                    <el-table-column label="操作" class-name="operation-btns">
@@ -94,20 +89,16 @@
                    <el-input v-model="editParams.nickName" class="gd-input" placeholder="请输入" />
                </el-form-item>
                <el-form-item label="文档类型" prop="resultType" v-if="titleTxt === '上传巡查报告'">
                    <el-select
                        class="gd-select"
                        popper-class="gd-select-popper"
                    <el-cascader
                        class="gd-cascader"
                        popper-class="gd-cascader-popper"
                        v-model="editParams.resultType"
                        :options="workOrderTypeXT"
                        :props="{ ...taskTypeCascaderProps, multiple: true }"
                        placeholder="请选择"
                        clearable
                    >
                        <el-option
                            v-for="item in dictObj.workOrderType"
                            :key="item.dictKey"
                            :label="item.dictValue"
                            :value="item.dictKey"
                        />
                    </el-select>
                        collapse-tags
                    />
                </el-form-item>
                <el-form-item label="上传文件" prop="link" v-if="titleTxt === '上传巡查报告'">
                    <el-upload class="avatar-uploader" action="" :show-file-list="false" :before-upload="onUploadFileBefore">
@@ -142,15 +133,19 @@
    </basic-container>
</template>
<script setup>
import { Search, RefreshRight, Download, Upload, Delete } from '@element-plus/icons-vue'
import { fjPageApi, fjSubmitApi, fjRemoveApi, fjDetailApi, fjUploadApi,fjDownloadByByteApi } from './inspectionRequestApi'
import { Search, RefreshRight, Download, Upload } from '@element-plus/icons-vue'
import { fjPageApi, fjSubmitApi, fjRemoveApi, fjUploadApi, fjDownloadByByteApi } from './inspectionRequestApi'
import { useStore } from 'vuex'
import { ref, computed, inject, onMounted } from 'vue'
import { ElMessage, ElMessageBox, ElLoading } from 'element-plus'
import { getDictLabel } from '@ztzf/utils'
import { ref, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import PreviewFiles from '@/components/PreviewFiles/PreviewFiles.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { Base64 } from 'js-base64'
import { getDictListApi } from '@/api/zkxt'
import {
    getTaskTypeLabel,
    normalizeTaskTypeOptions,
    taskTypeCascaderProps,
} from '../taskTypeOptions'
const store = useStore()
const userInfo = computed(() => store.getters.userInfo)
@@ -173,9 +168,7 @@
// 上传名称
const uploadName = ref('')
const dictObj = ref({
    workOrderType: [], // 巡查任务类型
})
const workOrderTypeXT = ref([])
const searchParams = ref(initSearchParams()) // 查询参数
const total = ref(0) // 总条数
@@ -203,9 +196,13 @@
// 获取字典
function getDictList() {
    getDictionaryByCode('workOrderType').then(res => {
        dictObj.value = res.data.data
    getDictListApi('task_inspection_type').then(res => {
        workOrderTypeXT.value = normalizeTaskTypeOptions(res.data.data || [])
    })
}
function toTaskTypeQueryValue(value) {
    return Array.isArray(value) ? value.join(',') : value
}
// 将字节大小转换为可读格式的函数
@@ -221,7 +218,10 @@
async function getList() {
    loading.value = true
    try {
        const res = await fjPageApi({ ...searchParams.value })
        const res = await fjPageApi({
            ...searchParams.value,
            resultType: toTaskTypeQueryValue(searchParams.value.resultType),
        })
        list.value = res?.data?.data?.records ?? []
        total.value = res?.data?.data?.total ?? 0
    } finally {
@@ -401,7 +401,7 @@
        if (valid) {
            submitting.value = true
            try {
                await fjSubmitApi({ ...editParams.value })
                await fjSubmitApi(editParams.value)
                ElMessage.success('保存成功')
                isShowEditView.value = false
                getList()
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
@@ -161,8 +161,7 @@
                                    v-model="row.deviceFlyerId"
                                    placeholder="请选择"
                                    filterable
                                    :disabled="dialogReadonly || !hasTaskTypeValue(taskList[$index].patrolTaskType)"
                                    :disabled="dialogReadonly || !taskList[$index].patrolTaskType"
                                >
                                    <el-option
                                        v-for="item in flyerListMap[$index] || []"
@@ -275,7 +274,6 @@
    getTaskTypeLabel,
    taskTypeCascaderProps,
    toTaskTypeCascaderValue,
    toTaskTypeRequestValue,
} from '../taskTypeOptions'
// 初始化任务行
@@ -475,7 +473,6 @@
function isTaskRowFilled(task) {
    return !!(
        task.patrolTaskName ||
        hasTaskTypeValue(task.patrolTaskType) ||
        task.executeTime ||
        task.patrolRouteUrl ||
        task.deviceFlyerId ||
@@ -483,9 +480,6 @@
    )
}
function hasTaskTypeValue(value) {
    return !!toTaskTypeRequestValue(value).length
}
// 提交新增
async function handleSubmit() {
@@ -507,10 +501,6 @@
        // 已填写的行需要校验完整性
        if (!task.patrolTaskName) {
            ElMessage.warning(`第${i + 1}行: 请输入巡查任务名称`)
            return
        }
        if (!hasTaskTypeValue(task.patrolTaskType)) {
            ElMessage.warning(`第${i + 1}行: 请选择巡查任务类型`)
            return
        }
        if (!task.executeTime) {
@@ -536,7 +526,6 @@
        // 只提交已填写的任务行
        const dataList = filledTasks.map(item => ({
            ...item,
            patrolTaskType: toTaskTypeRequestValue(item.patrolTaskType),
            workOrderId: selectedWorkOrderId.value,
            id: undefined,
        }))
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -299,7 +299,7 @@
import { queryAirById, airlineListApi, algorithmGroupedApi } from '@/api/zkxt'
import * as Cesium from 'cesium'
import { useStore } from 'vuex'
import { getTaskTypeLabel, taskTypeCascaderProps, toTaskTypeCascaderValue, toTaskTypeRequestValue } from '../taskTypeOptions'
import { getTaskTypeLabel, taskTypeCascaderProps, toTaskTypeCascaderValue } from '../taskTypeOptions'
// 初始化表单数据
const initForm = () => ({
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -285,7 +285,6 @@
    getTaskTypeLabel,
    taskTypeCascaderProps,
    toTaskTypeCascaderValue,
    toTaskTypeRequestValue,
} from '../taskTypeOptions'
const store = useStore()
const permission = computed(() => store.state.user.permission)
applications/task-work-order/src/views/orderView/orderManage/taskTypeOptions.js
@@ -57,10 +57,6 @@
    return value.filter(isValidPath)
}
export function toTaskTypeRequestValue(value) {
    return toTaskTypeCascaderValue(value).map(item => [item[0], item[1]])
}
export function getTaskTypeLabel(value, options = []) {
    if (!value?.length) return ''