吉安感知网项目-前端
张含笑
2026-01-20 90f526d55cf49e5410558d473788da92629b915e
Merge remote-tracking branch 'origin/master'
6 files modified
86 ■■■■ changed files
applications/drone-command/src/styles/common/cockpit.scss 17 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue 29 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue 17 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/inspectionRequestApi.js 9 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue 2 ●●● patch | view | raw | blame | history
packages/utils/common/index.js 12 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/styles/common/cockpit.scss
@@ -1079,6 +1079,7 @@
    transform: translate(-50%, -50%);
    .el-dialog__header {
        padding-bottom: 20px;
        position: relative;
        span {
@@ -1111,7 +1112,7 @@
            padding: 0 10px;
            .detail-title {
                line-height: 40px;
                margin-bottom: 20px;
                font-family: Source Han Sans CN, Source Han Sans CN;
                font-weight: 500;
                font-size: 16px;
@@ -1123,7 +1124,7 @@
            .el-row {
                .el-col {
                    margin-bottom: 0;
                    margin-bottom: 20px;
                    display: flex;
                    align-items: center;
@@ -1133,7 +1134,6 @@
                        font-weight: 500;
                        font-size: 14px;
                        color: #D4D5D7;
                        line-height: 40px;
                        text-align: right;
                        font-style: normal;
                        text-transform: none;
@@ -1145,7 +1145,6 @@
                        font-weight: 400;
                        font-size: 14px;
                        color: #9E9EBA;
                        line-height: 40px;
                        text-align: left;
                        font-style: normal;
                        text-transform: none;
@@ -1165,6 +1164,11 @@
        }
        .dialog-form {
            h3 {
                margin: 0;
                margin-bottom: 20px;
            }
            .detail-title {
                line-height: 40px;
                font-family: Source Han Sans CN, Source Han Sans CN;
@@ -1433,7 +1437,7 @@
                    align-items: center;
                    justify-content: space-between;
                    padding-left: 16px;
                    padding-bottom: 16px;
                    padding-bottom: 20px;
                    font-family: Source Han Sans CN, Source Han Sans CN;
                    font-weight: 400;
                    font-size: 18px;
@@ -1469,7 +1473,7 @@
                    .el-row {
                        .el-col {
                            margin-bottom: 0;
                            margin-bottom: 20px;
                            display: flex;
                            align-items: center;
@@ -1479,7 +1483,6 @@
                                font-weight: 500;
                                font-size: 14px;
                                color: #D4D5D7;
                                line-height: 40px;
                                text-align: right;
                                font-style: normal;
                                text-transform: none;
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -154,7 +154,7 @@
        </div>
        <template #footer>
            <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
            <!--            <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>-->
            <el-button
                class="save-btn"
                color="#4C34FF"
@@ -165,6 +165,19 @@
            >
                确认
            </el-button>
            <template v-if="requester">
                <el-button color="#F2F3F5" v-if="taskStatus === '1'">拒绝原因</el-button>
                <el-button color="#F2F3F5" @click="statusChange(3)" v-if="taskStatus === '3'">撤回任务</el-button>
                <el-button color="#F2F3F5" @click="statusChange(6)" v-if="taskStatus === '6'">拒绝验收</el-button>
                <el-button color="#F2F3F5" @click="statusChange(7)" v-if="taskStatus === '6'">验收通过</el-button>
            </template>
            <template v-else>
                <el-button color="#F2F3F5" @click="statusChange(2)" v-if="taskStatus === '0'">拒绝签收</el-button>
                <el-button color="#F2F3F5" @click="statusChange(1)" v-if="taskStatus === '0'">签收</el-button>
                <el-button color="#F2F3F5" @click="statusChange(5)" v-if="taskStatus === '3'">驳回</el-button>
                <el-button color="#F2F3F5" @click="statusChange(4)" v-if="taskStatus === '3'">通过</el-button>
            </template>
        </template>
    </el-dialog>
</template>
@@ -173,7 +186,7 @@
import { computed, ref, onMounted } from 'vue'
import { ElMessage } from 'element-plus'
import { fieldRules, getDictLabel } from '@ztzf/utils'
import { gdPatrolTaskRepublish, gdFlyerPageApi } from './inspectionRequestApi'
import { gdPatrolTaskRepublish, gdFlyerPageApi, gdPatrolTaskAuditApi } from './inspectionRequestApi'
import { gdWorkOrderPageApi } from '../orderManage/orderManageApi'
import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi'
import { pxToRem } from '@/utils/rem'
@@ -194,6 +207,7 @@
const mapRef = ref(null)
const dictObj = inject('dictObj')
const requester = inject('requester')
const emit = defineEmits(['success'])
const formRef = ref(null)
const formData = ref(initForm())
@@ -202,7 +216,7 @@
const submitting = ref(false)
const dialogReadonly = computed(() => dialogMode.value === 'view')
const titleEnum = ref({ edit: '编辑', view: '查看' })
const taskStatus = computed(() => formData.value.taskStatus)
// 下拉选项
const flyerList = ref([])
const deviceList = ref([])
@@ -255,6 +269,14 @@
    flyerList.value = res?.data?.data?.records ?? []
}
// 操作类型:1.同意签收、2.拒绝签收 、3.撤回任务 、4.同意审核、 5.拒绝审核、 6.验收通过、 7.验收拒绝
function statusChange(auditStatus) {
    gdPatrolTaskAuditApi({ auditStatus, id: formData.value.id }).then(res => {
        visible.value = false
        emit('success')
    })
}
// 获取设备列表
async function getDeviceList() {
    const res = await gdManageDeviceListApi()
@@ -280,6 +302,7 @@
async function open({ mode = 'view', row } = {}) {
    dialogMode.value = mode
    formData.value = { ...initForm(), ...row }
    console.log(formData.value)
    initMap()
}
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
@@ -63,6 +63,8 @@
        </el-form>
        <div class="gd-table-toolbar">
            <el-button color="#F2F3F5" @click="requester = !requester">我是{{ requester ? '需求方' : '服务方' }}</el-button>
            <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>
@@ -90,9 +92,8 @@
                    <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>
                            <el-link @click="viewDiaLogView(row)">查看</el-link>
                            <!--                            <el-link @click="openForm('edit', row)">编辑</el-link>-->
                        </template>
                    </el-table-column>
                </el-table>
@@ -210,9 +211,17 @@
    })
}
function viewDiaLogView(mode, row) {
// 状态:0待签收、1拒绝签收、2已撤回、3待审核、4审核驳回
// 5审核通过、6待验收、7拒绝验收、8验收通过
function viewDiaLogView(row) {
    viewDiaLogVisible.value = true
    nextTick(() => {
        let mode
        if (requester.value) {
            mode = ['0', '2', '3', '5', '6', '7', '8'].includes(row.taskStatus) ? 'view' : 'edit'
        } else {
            mode = 'view'
        }
        viewDiaLogRef.value?.open({ mode, row })
    })
}
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/inspectionRequestApi.js
@@ -44,3 +44,12 @@
        data,
    })
}
// 审核巡查任务 - 传入审核参数,拒绝时必须填写拒绝原因
export const gdPatrolTaskAuditApi = data => {
    return request({
        url: `/drone-gd/workOrder/gdPatrolTask/audit`,
        method: 'post',
        data,
    })
}
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
@@ -108,7 +108,7 @@
                    <el-table-column label="操作" class-name="operation-btns">
                        <template v-slot="{ row }">
                            <el-link @click="openFormChange(row)">查看</el-link>
                            <!--                            <el-link @click="openForm('edit', row)">编辑</el-link>-->
                            <!--<el-link @click="openForm('edit', row)">编辑</el-link>-->
                            <el-link @click="handleDelete(row)">删除</el-link>
                        </template>
                    </el-table-column>
packages/utils/common/index.js
@@ -1,3 +1,13 @@
/*
 * @Author       : yuan
 * @Date         : 2026-01-20 17:01:20
 * @LastEditors  : yuan
 * @LastEditTime : 2026-01-20 17:20:21
 * @FilePath     : \packages\utils\common\index.js
 * @Description  :
 * Copyright 2026 OBKoro1, All Rights Reserved.
 * 2026-01-20 17:01:20
 */
export function fieldRules(required,max) {
// export function fieldRules({ required = true, isSelect = false, max = 50,type = 'string' }) {
    const trigger = ['blur', 'change']
@@ -14,7 +24,7 @@
export function getDictLabel(value, dictList) {
    return dictList.filter(item => value.includes(item.dictKey)).map(item => item.dictValue).join(',')
    return dictList.filter(item => String(value).includes(String(item.dictKey))).map(item => item.dictValue).join(',')
}
export function blobDownload(res) {