吉安感知网项目-前端
chenyao
2026-01-28 5ea049205416e245ecb1ec3d0962e48c5ec73ec3
Merge remote-tracking branch 'origin/master'
14 files modified
224 ■■■■■ changed files
applications/drone-command/src/styles/common/cockpit.scss 4 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue 20 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionDept/index.vue 12 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue 84 ●●●●● patch | view | raw | blame | history
applications/task-work-order/env/.env 3 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue 4 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue 45 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue 37 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue 5 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue 2 ●●● patch | view | raw | blame | history
applications/drone-command/src/styles/common/cockpit.scss
@@ -563,6 +563,10 @@
        }
    }
    .el-select__wrapper.is-disabled .el-select__selected-item {
        color: #a8abb2;
    }
    .el-select {
        --el-select-border-color-hover: rgb(0, 162, 255) !important;
    }
applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue
@@ -28,10 +28,6 @@
                    <div class="val">{{ formData.areaName || '-' }}</div>
                </el-col>
                <el-col :span="12">
                    <div class="label">部署模式</div>
                    <div class="val">{{ deploymentModeLabel(formData.deploymentMode) }}</div>
                </el-col>
                <el-col :span="12">
                    <div class="label">排序</div>
                    <div class="val">{{ formData.sort }}</div>
                </el-col>
@@ -98,14 +94,6 @@
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="部署模式" prop="deploymentMode">
                        <el-radio-group v-model="formData.deploymentMode" class="command-radio-group">
                            <el-radio :label="0">统一部署</el-radio>
                            <el-radio :label="1">独立部署</el-radio>
                        </el-radio-group>
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="备注" prop="remark">
                        <el-input class="command-input" v-model="formData.remark" type="textarea" :rows="3" placeholder="请输入" clearable />
@@ -141,7 +129,6 @@
    deptNature: null,
    areaCode: [],
    areaName: '',
    deploymentMode: 0,
    sort: 0,
    remark: '',
})
@@ -207,14 +194,7 @@
    deptCategory: fieldRules(true),
    deptNature: fieldRules(true),
    areaCode: fieldRules(true),
    deploymentMode: fieldRules(true),
    sort: fieldRules(true),
}
function deploymentModeLabel(value) {
    if (value === 1) return '独立部署'
    if (value === 0) return '统一部署'
    return value ?? '-'
}
function normalizeAreaCode(value) {
applications/drone-command/src/views/permissionManage/permissionDept/index.vue
@@ -62,11 +62,7 @@
                    <el-table-column prop="sort" show-overflow-tooltip width="80" label="排序" />
                    <el-table-column prop="bingId" show-overflow-tooltip width="100" label="组织id" />
                    <el-table-column prop="areaName" show-overflow-tooltip width="180" label="行政区划" />
                    <el-table-column prop="deploymentMode" show-overflow-tooltip width="120" label="部署模式">
                        <template v-slot="{ row }">
                            {{ deploymentModeLabel(row.deploymentMode) }}
                        </template>
                    </el-table-column>
                    <el-table-column label="操作" class-name="operation-btns" width="220">
                        <template v-slot="{ row }">
                            <el-link @click="handleView(row)">查看</el-link>
@@ -128,12 +124,6 @@
provide('dictObj', dictObj)
provide('deptTree', deptTree)
function deploymentModeLabel(value) {
    if (value === 1) return '独立部署'
    if (value === 0) return '统一部署'
    return value ?? '-'
}
async function getList() {
    loading.value = true
applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue
@@ -43,22 +43,6 @@
                    <div class="label">账号状态</div>
                    <div class="val">{{ formData.statusName }}</div>
                </el-col>
                <el-col :span="12">
                    <div class="label">到期时间</div>
                    <div class="val">{{ formData.expireTime }}</div>
                </el-col>
                <el-col :span="12">
                    <div class="label">次数限制</div>
                    <div class="val">{{ formData.maxLoginNum }}</div>
                </el-col>
                <el-col :span="12">
                    <div class="label">飞行开始时间</div>
                    <div class="val">{{ formData.flightStartTime }}</div>
                </el-col>
                <el-col :span="12">
                    <div class="label">飞行结束时间</div>
                    <div class="val">{{ formData.flightEndTime }}</div>
                </el-col>
            </el-row>
        </div>
@@ -178,55 +162,6 @@
                    </el-form-item>
                </el-col>
            </el-row>
            <div class="detail-title">登录限制</div>
            <el-row :gutter="16">
                <el-col :span="12">
                    <el-form-item label="到期时间" prop="expireTime">
                        <el-date-picker
                            class="command-date-picker"
                            popper-class="command-date-picker-popper"
                            v-model="formData.expireTime"
                            type="datetime"
                            placeholder="请选择"
                            format="YYYY-MM-DD HH:mm:ss"
                            value-format="YYYY-MM-DD HH:mm:ss"
                            clearable
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="次数限制" prop="maxLoginNum">
                        <el-input class="command-input" v-model="formData.maxLoginNum" placeholder="请输入" clearable />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="飞行开始时间" prop="flightStartTime">
                        <el-time-picker
                            class="command-date-picker"
                            popper-class="command-date-picker-popper"
                            v-model="formData.flightStartTime"
                            placeholder="请选择"
                            format="HH:mm"
                            value-format="HH:mm"
                            clearable
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="飞行结束时间" prop="flightEndTime">
                        <el-time-picker
                            class="command-date-picker"
                            popper-class="command-date-picker-popper"
                            v-model="formData.flightEndTime"
                            placeholder="请选择"
                            format="HH:mm"
                            value-format="HH:mm"
                            clearable
                        />
                    </el-form-item>
                </el-col>
            </el-row>
        </el-form>
        <template #footer>
@@ -260,10 +195,6 @@
    code: '',
    roleId: '',
    deptId: '',
    expireTime: '',
    maxLoginNum: '',
    flightStartTime: '',
    flightEndTime: '',
})
const treeProps = {
@@ -340,24 +271,9 @@
    visible.value = false
}
function validateFlightTime() {
    if (formData.value.flightStartTime && formData.value.flightEndTime) {
        const [startHours, startMinutes] = formData.value.flightStartTime.split(':').map(Number)
        const [endHours, endMinutes] = formData.value.flightEndTime.split(':').map(Number)
        const startTotalMinutes = startHours * 60 + startMinutes
        const endTotalMinutes = endHours * 60 + endMinutes
        if (endTotalMinutes < startTotalMinutes) {
            ElMessage.error('飞行结束时间不能小于飞行开始时间')
            return false
        }
    }
    return true
}
async function handleSubmit() {
    const isValid = await formRef.value?.validate().catch(() => false)
    if (!isValid) return
    if (!validateFlightTime()) return
    submitting.value = true
    try {
        const submitData = { ...formData.value }
applications/task-work-order/env/.env
@@ -18,3 +18,6 @@
# xt接口地址
VITE_APP_URL_XT=http://218.202.104.82:8200
# 预览地址 previewURL
VITE_APP_PREVIEW_URL=http://192.168.1.204:8012
applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue
@@ -60,7 +60,7 @@
                    <el-table-column prop="resourceName" show-overflow-tooltip label="资源名称" />
                    <el-table-column prop="resourceCode" show-overflow-tooltip label="资源编码" />
                    <el-table-column prop="caseDesc" show-overflow-tooltip label="案例描述" />
                    <el-table-column label="操作" class-name="operation-btns" width="240">
                    <el-table-column label="操作" class-name="operation-btns" width="150">
                        <template v-slot="{ row }">
                            <el-link  type="primary"  @click="openForm('view', row)">查看</el-link>
<!--                            <el-link  type="primary"  @click="openForm('edit', row)">编辑</el-link>-->
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue
@@ -67,9 +67,9 @@
                    <el-table-column prop="handleUnit" show-overflow-tooltip label="处理单位" />
                    <el-table-column prop="objectionDesc" show-overflow-tooltip label="异议描述" />
                    <el-table-column prop="objectionBasis" show-overflow-tooltip label="异议依据" />
                    <el-table-column prop="attachName" show-overflow-tooltip label="附件名称" />
                    <el-table-column prop="attachNames" show-overflow-tooltip label="附件名称" />
                    <el-table-column prop="reviewOpinion" show-overflow-tooltip label="审核意见" />
                    <el-table-column label="操作" class-name="operation-btns" width="240">
                    <el-table-column label="操作" class-name="operation-btns" width="150">
                        <template v-slot="{ row }">
                            <el-link  type="primary"  @click="openForm('view', row)">查看</el-link>
                            <el-link  type="primary"  @click="openForm('edit', row)" v-if="!['1', '2'].includes(row.objectionStatus)">编辑</el-link>
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue
@@ -53,7 +53,7 @@
                        </template>
                    </el-table-column>
                    <el-table-column prop="evaluationContent" show-overflow-tooltip label="评价内容" />
                    <el-table-column label="操作" class-name="operation-btns" width="240">
                    <el-table-column label="操作" class-name="operation-btns" width="150">
                        <template v-slot="{ row }">
                            <el-link  type="primary"  @click="openForm('view', row)">查看</el-link>
                            <el-link  type="primary"  @click="openForm('edit', row)">编辑</el-link>
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
@@ -107,8 +107,8 @@
        </div>
        <template #footer>
            <template v-if="detailDemandStatus === '1' && !requesterProvider">
                <el-button color="#F2F3F5"  @click="rejectTheApplication">拒绝申请</el-button>
                <el-button class="" color="#4C34FF" @click="approvedByTheReview">审核通过</el-button>
                <el-button color="#F2F3F5" :loading="submitting" :disabled="submitting" @click="rejectTheApplication">拒绝申请</el-button>
                <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="approvedByTheReview">审核通过</el-button>
            </template>
            <template v-if="detailDemandStatus === '2'">
                <el-button class="" color="#4C34FF" @click="downloadAllFiles">全部下载</el-button>
@@ -154,6 +154,7 @@
const fileList = ref([]) // 上传文件列表
const uploadedFiles = ref([]) // 已上传文件列表
const responseData = ref(null)
const submitting = ref(false) // 提交中状态
// 自定义上传请求函数
const handleHttpRequest = async (options) => {
    try {
@@ -182,10 +183,21 @@
const tableData = ref([]) // 附件表格数据
// 文件移除
const handleFileRemove = (file, fileList) => {
console.log('删除文件', fileList);
uploadedFiles.value = fileList
    // 从已上传文件列表中移除对应文件
    if (file.response && file.response.attachId) {
        uploadedFiles.value = uploadedFiles.value.filter(item => item.attachId !== file.response.attachId)
    }
    // if (file.response && file.response.attachId) {
    //     // uploadedFiles.value = uploadedFiles.value.filter(item => item.attachId !== file.response.attachId)
    //     // 找到 id=1 的对象的索引
    //     const index = uploadedFiles.value.findIndex(item => item.attachId !== file.response.attachId)
    //     // 如果找到了,移除该对象
    //     if (index !== -1) {
    //         uploadedFiles.value.splice(index, 1)
    //     }
    //     console.log('删除文件', uploadedFiles.value);
    // }
    // 清空响应数据
    if (responseData.value && responseData.value.attachId === file.response?.attachId) {
        responseData.value = null
@@ -389,6 +401,7 @@
    // 从 uploadedFiles.value 中提取所有 attachId
    const id = uploadedFiles.value.map(file => file.attachId)
    submitting.value = true
    gdSupplyDemandAuditRejectApi({ attachIds: id, auditOpinion: reason, demandId: demandId.value })
        .then(() => {
            ElMessage.success('拒绝申请成功')
@@ -400,19 +413,27 @@
            ElMessage.error('拒绝申请失败,请重试')
            emit('success')
        })
        .finally(() => {
            submitting.value = false
        })
}
// 审核通过
const approvedByTheReview = () => {
    if (uploadedFiles.value.length === 0) {
        return ElMessage.warning('请上传数据')
    }
    }
    // 从 uploadedFiles.value 中提取所有 attachId
    const id = uploadedFiles.value.map(file => file.attachId)
    gdSupplyDemandAuditPassApi({ attachIds: id, demandId: demandId.value }).then(() => {
        ElMessage.success('审核通过成功')
        visible.value = false
        emit('success')
    })
    submitting.value = true
    gdSupplyDemandAuditPassApi({ attachIds: id, demandId: demandId.value })
        .then(() => {
            ElMessage.success('审核通过成功')
            visible.value = false
            emit('success')
        })
        .finally(() => {
            submitting.value = false
        })
}
defineExpose({ open })
@@ -482,4 +503,6 @@
:deep(.el-upload-list) {
    margin-top: 10px;
}
.el-upload-list__item.is-success:focus .el-upload-list__item-status-label, .el-upload-list__item.is-success:hover .el-upload-list__item-status-label{
display: none !important;}
</style>
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue
@@ -76,7 +76,7 @@
                    <el-table-column prop="responsibleDeptName" show-overflow-tooltip label="责任部门" />
                    <el-table-column prop="dataSource" show-overflow-tooltip label="数据来源依据" />
                    <el-table-column prop="demandInfo" show-overflow-tooltip label="需求信息项" />
                    <el-table-column label="操作" class-name="operation-btns" width="240">
                    <el-table-column label="操作" class-name="operation-btns" width="150">
                        <template v-slot="{ row }">
                            <el-link  type="primary"  @click="openForm('view', row)">查看</el-link>
                            <!-- 只对非审批状态显示编辑和删除按钮 -->
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
@@ -145,6 +145,7 @@
import { getDictLabel } from '@ztzf/utils'
import PreviewFiles from '@/components/PreviewFiles/PreviewFiles.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { Base64 } from 'js-base64'
const store = useStore()
const userInfo = computed(() => store.getters.userInfo)
@@ -237,29 +238,33 @@
    editParams.value.link = row.link
}
// 'zip', 'rar', 'jar', 'tar', 'gzip', '7z',
const allSupportedExtensions = [
    'doc', 'docx', 'xls', 'xlsx', 'xlsm', 'ppt', 'pptx', 'csv', 'tsv', 'dotm', 'xlt', 'xltm', 'dot', 'dotx', 'xlam', 'xla',
    'wps', 'dps', 'et', 'ett', 'wpt',
    'odt', 'ods', 'ots', 'odp', 'otp', 'six', 'ott', 'fodt', 'fods',
    'vsd', 'vsdx', 'wmf', 'emf', 'psd',
    'pdf', 'ofd', 'rtf', 'epub',
    'xmind', 'bpmn', 'eml',
    'obj', '3ds', 'stl', 'ply', 'gltf', 'glb', 'off', '3dm', 'fbx', 'dae', 'wrl', '3mf', 'ifc', 'brep', 'step', 'iges', 'fcstd', 'bim',
    'dwg', 'dxf',
    'txt', 'xml', 'md', 'java', 'php', 'py', 'js', 'css',
    'jpg', 'jpeg', 'png', 'gif', 'bmp', 'ico', 'jfif', 'webp', 'tif', 'tiff', 'tga', 'svg',
    'mp3', 'wav', 'mp4', 'flv', 'avi', 'mov', 'rm', 'webm', 'ts', 'mkv', 'mpeg', 'ogg', 'mpg', 'rmvb', 'wmv', '3gp', 'swf'
];
const { VITE_APP_PREVIEW_URL } = import.meta.env
// 在线查看文档
function seeOnlineWord(row) {
    // 获取点之后的文件格式名
    const fileType = row?.link?.split('.').pop() || ''
    if (!row.link) {
        ElMessage.warning('文件链接不存在')
        return
    } else if (
        !row.link.includes('docx') &&
        !row.link.includes('pdf') &&
        !row.link.includes('png') &&
        !row.link.includes('jpg')
    ) {
    }else if (allSupportedExtensions.includes(fileType)){
        window.open(`${VITE_APP_PREVIEW_URL}/onlinePreview?url=`+encodeURIComponent(Base64.encode(row.link)));
    }else {
        ElMessage.warning(`${fileType}文件格式,可以下载再查看`)
        return
    } else if (row.link.includes('png') || row.link.includes('jpg')) {
        previewVisibleImg.value = true
        searchUrl.value = row.link
        return
    } else if (row.link.includes('docx') || row.link.includes('pdf')) {
        previewVisible.value = true
        searchUrl.value = row.link
        return
    }
}
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -203,8 +203,8 @@
                    >
                        {{ gdStatusObj[gdStatus].reason }}
                    </el-button>
                    <el-button @click="addDescription" v-if="['20', '24', '25', '50'].includes(gdStatus)" color="#F2F3F5">
                        {{ gdStatus === '50' ? '结算' : '申请取消' }}
                    <el-button @click="addDescription" v-if="['20', '24', '25'].includes(gdStatus)" color="#F2F3F5">
                        申请取消
                    </el-button>
                    <el-button color="#4C34FF" @click="requestModification" v-if="['20', '25'].includes(gdStatus)">
                        申请修改
@@ -224,6 +224,7 @@
                <el-button v-if="['21', '23'].includes(gdStatus)" @click="viewDescription" color="#F2F3F5">
                    {{ gdStatusObj[gdStatus].reason }}
                </el-button>
                <el-button v-if="gdStatus === '50'" @click="addDescription" color="#F2F3F5">结算</el-button>
                <el-button v-if="gdStatus === '10'" @click="addDescription" color="#F2F3F5">拒绝接单</el-button>
                <el-button v-if="gdStatus === '10'" @click="statusChange(1)" color="#4C34FF">接单</el-button>
                <el-button v-if="gdStatus === '22'" @click="addDescription" color="#F2F3F5">不同意修改</el-button>
applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue
@@ -68,7 +68,7 @@
             {{ getDictLabel(row.status, dictObj.institutionStatus) }}
            </template>
          </el-table-column>
          <el-table-column label="操作" class-name="operation-btns" width="400">
          <el-table-column label="操作" class-name="operation-btns" width="200">
            <template v-slot="{ row }">
              <el-link type="primary" @click="openForm('view', row)">查看</el-link>
              <el-link type="primary"  @click="openForm('edit', row)">编辑</el-link>
applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue
@@ -65,7 +65,7 @@
              {{ getDictLabel(row.status, dictObj.zoningStatus) }}
            </template>
          </el-table-column>
          <el-table-column label="操作" class-name="operation-btns" width="400">
          <el-table-column label="操作" class-name="operation-btns" width="200">
            <template v-slot="{ row }">
              <el-link type="primary" @click="openForm('view', row)">查看</el-link>
              <el-link type="primary"  @click="openForm('edit', row)">编辑</el-link>