吉安感知网项目-前端
罗广辉
2026-01-21 0b8879efdd2888bfecc51d51afe8c4040b1b9050
Merge remote-tracking branch 'origin/master'
8 files modified
485 ■■■■■ changed files
applications/drone-command/src/styles/common/cockpit.scss 30 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/aICrudTemplate/index.vue 66 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/partition/index.vue 7 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/deviceStock/index.vue 7 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue 179 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/index.vue 14 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue 180 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/FormDiaLog.vue 2 ●●● patch | view | raw | blame | history
applications/drone-command/src/styles/common/cockpit.scss
@@ -215,10 +215,9 @@
                    .el-date-picker__editor-wrap {
                        .el-time-panel {
                            background: #161B2C !important;
                            background: #1A1A2A !important;
                            border-radius: 0px 0px 8px 8px;
                            border: 1px solid !important;
                            border-image: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(115, 192, 255, 1)) 1 1 !important;
                            border: none !important;
                            // 将 time-picker-popper 的样式移到这里
                            .el-time-panel__header {
@@ -229,10 +228,8 @@
                            .el-time-panel__content {
                                .el-time-spinner__item {
                                    color: #e6e6e6 !important;
                                    &:hover {
                                        background: rgba(71, 157, 255, 0.3) !important;
                                        background: transparent !important;
                                    }
                                    &.active {
@@ -243,23 +240,12 @@
                            }
                            .el-time-panel__footer {
                                background: #161B2C !important;
                                border-top: 1px solid rgba(71, 157, 255, 0.3) !important;
                                .el-button {
                                    color: #fff !important;
                                    &:hover {
                                        color: #479dff !important;
                                    }
                                .el-time-panel__btn {
                                    color: #fff;
                                }
                                .el-time-panel__btn.cancel {
                                    color: #fff !important;
                                    &:hover {
                                        color: #fff !important;
                                    }
                                .el-time-panel__btn:first-child {
                                    color: #86909C;
                                }
                            }
                        }
applications/drone-command/src/views/aICrudTemplate/index.vue
@@ -10,41 +10,22 @@
                <el-col :span="4">
                    <el-form-item label="类型" prop="deviceType">
                        <el-select v-model="searchParams.deviceType" placeholder="请选择" clearable @change="handleSearch">
                            <el-option
                                v-for="item in dictObj.deviceType"
                                :key="item.dictKey"
                                :label="item.dictValue"
                                :value="item.dictKey"
                            />
                            <el-option v-for="item in dictObj.deviceType" :key="item.dictKey" :label="item.dictValue"
                                :value="item.dictKey" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="4">
                    <el-form-item label="部门" prop="belongDept">
                        <el-tree-select
                            v-model="searchParams.belongDept"
                            :data="deptTree"
                            :props="treeProps"
                            node-key="id"
                            check-strictly
                            clearable
                            @change="handleSearch"
                        />
                        <el-tree-select v-model="searchParams.belongDept" :data="deptTree" :props="treeProps"
                            node-key="id" check-strictly clearable @change="handleSearch" />
                    </el-form-item>
                </el-col>
                <el-col :span="4">
                    <el-form-item label="时间">
                        <el-date-picker
                            popper-class="command-date-picker-popper"
                            class="command-date-picker"
                            v-model="dateRange"
                            type="daterange"
                            range-separator="至"
                            start-placeholder="开始日期"
                            end-placeholder="结束日期"
                            value-format="YYYY-MM-DD HH:mm:ss"
                            @change="handleSearch"
                        />
                        <el-date-picker popper-class="command-date-picker-popper" class="command-date-picker"
                            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-col>
                <el-col :span="4">
@@ -80,12 +61,8 @@
            </el-table-column>
        </el-table>
        <div>
            <el-pagination
                v-model:current-page="searchParams.current"
                v-model:page-size="searchParams.size"
                :total="total"
                @change="getList"
            />
            <el-pagination v-model:current-page="searchParams.current" v-model:page-size="searchParams.size"
                :total="total" @change="getList" />
        </div>
        <FormDiaLog v-if="dialogVisible" v-model="dialogVisible" ref="dialogRef" @success="getList" />
@@ -132,7 +109,7 @@
provide('deptTree', deptTree)
// 获取列表
async function getList() {
async function getList () {
    const range = dateRangeFormat(dateRange.value)
    loading.value = true
    try {
@@ -146,13 +123,13 @@
}
// 查询
function handleSearch() {
function handleSearch () {
    searchParams.value.current = 1
    getList()
}
// 重置查询
function resetForm() {
function resetForm () {
    dateRange.value = []
    queryParamsRef.value?.resetFields()
    searchParams.value.current = 1
@@ -160,9 +137,14 @@
}
// 删除
async function handleDelete(row) {
async function handleDelete (row) {
    const tips = row ? '该条' : '选中的项'
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', { type: 'warning' })
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', {
        type: 'warning',
        customClass: 'command-page-view-message-box',
        confirmButtonClass: 'command-message-box-confirm',
        cancelButtonClass: 'command-message-box-cancel',
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwDeviceRemoveApi({ ids })
    ElMessage.success('删除成功')
@@ -171,12 +153,12 @@
}
// 勾选值设置
function handleSelectionChange(rows) {
function handleSelectionChange (rows) {
    selectedIds.value = rows.map(item => item.id)
}
// 导出
function exportFile() {
function exportFile () {
    exportLoading.value = true
    exportFwDeviceApi()
        .then(res => {
@@ -188,21 +170,21 @@
}
// 获取字典
function getDictList() {
function getDictList () {
    getDictionaryByCode('deviceType,deviceAtt').then(res => {
        dictObj.value = res.data.data
    })
}
// 获取部门树
function getDeptTreeFun() {
function getDeptTreeFun () {
    getDeptTree().then(res => {
        deptTree.value = res.data.data
    })
}
// 新增/编辑/查看 弹框
function openForm(mode, row) {
function openForm (mode, row) {
    dialogVisible.value = true
    nextTick(() => {
        dialogRef.value?.open({ mode, row })
applications/drone-command/src/views/areaManage/partition/index.vue
@@ -129,7 +129,12 @@
// 删除
async function handleDelete (row) {
    const tips = row ? '该条' : '选中的项'
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', { type: 'warning' })
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', {
        type: 'warning',
        customClass: 'command-page-view-message-box',
        confirmButtonClass: 'command-message-box-confirm',
        cancelButtonClass: 'command-message-box-cancel',
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwAreaDivideRemoveApi({ ids })
    ElMessage.success('删除成功')
applications/drone-command/src/views/basicManage/deviceStock/index.vue
@@ -212,7 +212,12 @@
// 删除
async function handleDelete(row) {
    const tips = row ? '该条' : '选中的项'
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', { type: 'warning' })
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', {
        type: 'warning',
        customClass: 'command-page-view-message-box',
        confirmButtonClass: 'command-message-box-confirm',
        cancelButtonClass: 'command-message-box-cancel',
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwDeviceRemoveApi({ ids })
    ElMessage.success('删除成功')
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue
@@ -1,12 +1,6 @@
<template>
    <el-dialog
        class="command-page-view-dialog"
        v-model="visible"
        :title="titleEnum[dialogMode]"
        destroy-on-close
        :close-on-click-modal="false"
        @closed="handleClosed"
    >
    <el-dialog class="command-page-view-dialog" v-model="visible" :title="titleEnum[dialogMode]" destroy-on-close
        :close-on-click-modal="false" @closed="handleClosed">
        <div v-if="readonly" class="detail-container">
            <el-row>
                <el-col :span="12">
@@ -51,92 +45,62 @@
                </el-col>
            </el-row>
        </div>
        <el-form
            v-else
            ref="formRef"
            :model="formData"
            :rules="rules"
            :disabled="readonly"
            label-width="100px"
            class="dialog-form"
        >
        <el-form v-else ref="formRef" :model="formData" :rules="rules" :disabled="readonly" label-width="100px"
            class="dialog-form">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="设备" prop="deviceId">
                        <el-select
                            class="command-select"
                            popper-class="command-select-popper"
                            v-model="formData.deviceId"
                            placeholder="请选择"
                            clearable
                            @change="handleDeviceChange"
                        >
                            <el-option v-for="item in deviceList" :key="item.id" :label="item.deviceName" :value="item.id" />
                        <el-select class="command-select" popper-class="command-select-popper"
                            v-model="formData.deviceId" placeholder="请选择" clearable @change="handleDeviceChange">
                            <el-option v-for="item in deviceList" :key="item.id" :label="item.deviceName"
                                :value="item.id" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="设备编码" prop="deviceSn">
                        <el-input
                            class="command-input"
                            v-model="formData.deviceSn"
                            disabled
                            placeholder="选择设备后自动带出"
                        />
                        <el-input class="command-input" v-model="formData.deviceSn" disabled placeholder="选择设备后自动带出" />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="设备状态">
                        <el-select class="command-select" popper-class="command-select-popper"
                            v-model="deviceStatus" disabled placeholder="选择设备后自动带出">
                            <el-option v-for="item in dictObj.deviceStatus" :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="defenseSceneId">
                        <el-select
                            class="command-select"
                            popper-class="command-select-popper"
                            v-model="formData.defenseSceneId"
                            placeholder="请选择"
                            clearable
                            @change="handleSceneChange"
                        >
                            <el-option v-for="item in sceneList" :key="item.id" :label="item.sceneName" :value="item.id" />
                        <el-select class="command-select" popper-class="command-select-popper"
                            v-model="formData.defenseSceneId" placeholder="请选择" clearable @change="handleSceneChange">
                            <el-option v-for="item in sceneList" :key="item.id" :label="item.sceneName"
                                :value="item.id" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="区域" prop="areaDivideId">
                        <el-select
                            class="command-select"
                            popper-class="command-select-popper"
                            v-model="formData.areaDivideId"
                            placeholder="请先选择场景"
                            clearable
                            :disabled="!formData.defenseSceneId"
                            @change="handleAreaChange"
                        >
                            <el-option v-for="item in areaList" :key="item.id" :label="item.areaName" :value="item.id" />
                        <el-select class="command-select" popper-class="command-select-popper"
                            v-model="formData.areaDivideId" placeholder="请先选择场景" clearable
                            :disabled="!formData.defenseSceneId" @change="handleAreaChange">
                            <el-option v-for="item in areaList" :key="item.id" :label="item.areaName"
                                :value="item.id" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="调度人员" prop="dispatchUser">
                        <el-input
                            class="command-input"
                            v-model="formData.dispatchUser"
                            maxlength="50"
                            placeholder="请输入"
                            clearable
                        />
                        <el-input class="command-input" v-model="formData.dispatchUser" maxlength="50" placeholder="请输入"
                            clearable />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="调度日期" prop="dispatchDateRange">
                        <el-date-picker
                            class="command-date-picker"
                            popper-class="command-date-picker-popper"
                            v-model="formData.dispatchDateRange"
                            type="datetimerange"
                            range-separator="至"
                            start-placeholder="开始日期"
                            end-placeholder="结束日期"
                            value-format="YYYY-MM-DD HH:mm:ss"
                        />
                        <el-date-picker class="command-date-picker" popper-class="command-date-picker-popper"
                            v-model="formData.dispatchDateRange" type="daterange" range-separator="至"
                            start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD HH:mm:ss" />
                    </el-form-item>
                </el-col>
                <el-col :span="24">
@@ -144,48 +108,28 @@
                        <!--                        <el-button @click="selectLocation" style="width: 100%">-->
                        <el-button style="width: 100%">
                            {{
                                formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` : '选择区域后自动带出'
                                formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` :
                                    '选择区域后自动带出'
                            }}
                        </el-button>
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="调度内容" prop="dispatchContent">
                        <el-input
                            class="command-input"
                            v-model="formData.dispatchContent"
                            type="textarea"
                            :rows="3"
                            maxlength="500"
                            placeholder="请输入"
                            clearable
                        />
                        <el-input class="command-input" v-model="formData.dispatchContent" type="textarea" :rows="3"
                            maxlength="500" placeholder="请输入" clearable />
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="调度结果" prop="dispatchResult">
                        <el-input
                            class="command-input"
                            v-model="formData.dispatchResult"
                            type="textarea"
                            :rows="3"
                            maxlength="500"
                            placeholder="请输入"
                            clearable
                        />
                        <el-input class="command-input" v-model="formData.dispatchResult" type="textarea" :rows="3"
                            maxlength="500" placeholder="请输入" clearable />
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="处理措施" prop="disposeMeasure">
                        <el-input
                            class="command-input"
                            v-model="formData.disposeMeasure"
                            type="textarea"
                            :rows="3"
                            maxlength="500"
                            placeholder="请输入"
                            clearable
                        />
                        <el-input class="command-input" v-model="formData.disposeMeasure" type="textarea" :rows="3"
                            maxlength="500" placeholder="请输入" clearable />
                    </el-form-item>
                </el-col>
            </el-row>
@@ -193,14 +137,8 @@
        <template #footer>
            <el-button color="#2B2B4C" @click="handleCancel">{{ readonly ? '关闭' : '取消' }}</el-button>
            <el-button
                color="#284FE3"
                v-if="!readonly"
                type="primary"
                :loading="submitting"
                :disabled="submitting"
                @click="handleSubmit"
            >
            <el-button color="#284FE3" v-if="!readonly" type="primary" :loading="submitting" :disabled="submitting"
                @click="handleSubmit">
                保存
            </el-button>
        </template>
@@ -252,6 +190,8 @@
    deviceList: { type: Array, default: () => [] },
})
const dictObj = inject('dictObj')
const emit = defineEmits(['success'])
const formRef = ref(null) // 表单实例
const formData = ref(initForm()) // 表单数据
@@ -263,6 +203,7 @@
const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
const tempLocation = ref({ longitude: null, latitude: null })
const areaList = ref([]) // 区域列表
const deviceStatus = ref('')
const rules = {
    deviceId: fieldRules(true),
@@ -273,21 +214,23 @@
}
// 设备选择变化处理
function handleDeviceChange(deviceId) {
function handleDeviceChange (deviceId) {
    const device = props.deviceList.find(item => item.id === deviceId)
    if (device) {
        formData.value.deviceName = device.deviceName
        formData.value.deviceSn = device.deviceSn
        formData.value.deviceStatus = device.deviceStatus
        deviceStatus.value = String(device.status)
    } else {
        formData.value.deviceName = ''
        formData.value.deviceSn = ''
        formData.value.deviceStatus = ''
        deviceStatus.value = ''
    }
}
// 场景选择变化处理
async function handleSceneChange(sceneId) {
async function handleSceneChange (sceneId) {
    formData.value.areaDivideId = ''
    if (sceneId) {
        await loadAreaList(sceneId)
@@ -296,29 +239,29 @@
    }
}
function handleAreaChange(areaId) {
function handleAreaChange (areaId) {
    const find = areaList.value.find(item => item.id === areaId)
    formData.value.longitude = find?.longitude
    formData.value.latitude = find?.latitude
}
// 加载区域列表
async function loadAreaList(sceneId) {
async function loadAreaList (sceneId) {
    const res = await fwAreaDivideListApi({ sceneId })
    areaList.value = res?.data?.data ?? []
}
// 关闭弹框
function handleCancel() {
function handleCancel () {
    visible.value = false
}
function handleClosed() {
function handleClosed () {
    formData.value = initForm()
}
// 提交新增/编辑
async function handleSubmit() {
async function handleSubmit () {
    const isValid = await formRef.value?.validate().catch(() => false)
    if (!isValid) return
    submitting.value = true
@@ -338,7 +281,7 @@
}
// 加载详情
async function loadDetail() {
async function loadDetail () {
    if (!formData.value.id) return
    const res = await fwTaskScheduleDetailApi({ id: formData.value.id })
    const data = res?.data?.data ?? {}
@@ -354,7 +297,7 @@
}
// 左键点击事件处理
function LeftClickEvent(click) {
function LeftClickEvent (click) {
    const pos = click.position
    const cartesian3 = viewer.camera.pickEllipsoid(pos, viewer.scene.globe.ellipsoid)
    if (!cartesian3) {
@@ -395,7 +338,7 @@
}
// 地图弹框关闭处理
function positionClosed() {
function positionClosed () {
    redPointEntity = null
}
@@ -403,7 +346,7 @@
let redPointEntity
// 选择位置
async function selectLocation() {
async function selectLocation () {
    visible1.value = true
    await nextTick()
    const publicCesiumInstance = new PublicCesium({
@@ -418,13 +361,13 @@
}
// 地图取消
function handleMapCancel() {
function handleMapCancel () {
    tempLocation.value = { longitude: null, latitude: null }
    visible1.value = false
}
// 地图确认
function handleMapConfirm() {
function handleMapConfirm () {
    if (tempLocation.value.longitude != null && tempLocation.value.latitude != null) {
        formData.value.longitude = _.round(tempLocation.value.longitude, 6)
        formData.value.latitude = _.round(tempLocation.value.latitude, 6)
@@ -433,7 +376,7 @@
}
// 打开弹框
async function open({ mode, row } = {}) {
async function open ({ mode, row } = {}) {
    dialogMode.value = mode || 'add'
    formData.value = dialogMode.value === 'add' ? initForm() : { ...row }
    if (dialogMode.value !== 'add') {
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/index.vue
@@ -62,11 +62,13 @@
                    <el-table-column type="index" show-overflow-tooltip width="64" label="序号" />
                    <el-table-column prop="deviceName" show-overflow-tooltip width="140" label="设备名称" />
                    <el-table-column prop="deviceSn" show-overflow-tooltip width="140" label="设备编码" />
                    <el-table-column prop="status" show-overflow-tooltip width="100" label="设备状态">
                        <template v-slot="{ row }">
                            {{ formatDeployLocation(row) }}
                            {{ getDictLabel(row.deviceStatus, dictObj.deviceStatus) }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="areaName" show-overflow-tooltip width="120" label="区域" />
                    <el-table-column prop="defenseZoneName" show-overflow-tooltip width="120" label="场景" />
                    <el-table-column show-overflow-tooltip label="调度位置">
@@ -75,7 +77,7 @@
                    <el-table-column prop="dispatchUser" show-overflow-tooltip width="100" label="调度人员" />
                    <el-table-column show-overflow-tooltip label="调度日期">
                        <template v-slot="{ row }">
                            {{ formatDispatchDate(row) }}
                            {{dayjs(row.dispatchStartTime).format('YYYY-MM-DD')}}至{{dayjs(row.dispatchEndTime).format('YYYY-MM-DD')}}
                        </template>
                    </el-table-column>
                    <el-table-column prop="dispatchContent" show-overflow-tooltip width="160" label="调度内容" />
@@ -114,6 +116,7 @@
</template>
<script setup>
import dayjs from 'dayjs'
import { Search, RefreshRight, Plus, Delete } from '@element-plus/icons-vue'
import { nextTick, onMounted, ref, provide } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
@@ -189,7 +192,12 @@
// 删除
async function handleDelete(row) {
    const tips = row ? '该条' : '选中的项'
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', { type: 'warning' })
    await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', {
        type: 'warning',
        customClass: 'command-page-view-message-box',
        confirmButtonClass: 'command-message-box-confirm',
        cancelButtonClass: 'command-message-box-cancel',
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    await fwTaskScheduleRemoveApi({ ids })
    ElMessage.success('删除成功')
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
@@ -1,5 +1,5 @@
<template>
    <el-dialog class="gd-dialog" v-model="visible" :title="'查看申请'" @closed="visible = false" destroy-on-close>
    <el-dialog class="gd-dialog" v-model="visible" :title="'查看'" @closed="visible = false" destroy-on-close>
        <div class="detail-container">
            <!-- 左侧审批记录 -->
            <div class="detail-left">
@@ -9,81 +9,67 @@
            <div class="detail-right">
                <!--                拒绝申请-->
                <div class="reject-reason-container" v-if="detailDemandStatus === '3'">
                    <div class="label">拒绝原因</div>
                    <div class="detail-title">拒绝原因</div>
                    <div class="reject-reason">
                        {{reasonForRejection}}
                    </div>
                </div>
                <div>
                    <div class="label">需求详情</div>
                    <div class="requirementsDetailsBox">
                        <div class="detail-table">
                            <div class="detail-row">
                                <div class="detail-cell">
                                    <span class="cell-label">需求名称</span>
                                    <span class="cell-value">{{ formData.demandName }}</span>
                                </div>
                                <div class="detail-cell">
                                    <span class="cell-label">需求类型</span>
                                    <span class="cell-value">{{ getDictLabel(formData.demandType, dictObj.requirementType) }}</span>
                                </div>
                            </div>
                            <div class="detail-row">
                                <div class="detail-cell">
                                    <span class="cell-label">需求联系人</span>
                                    <span class="cell-value">{{ formData.contactPerson }}</span>
                                </div>
                                <div class="detail-cell">
                                    <span class="cell-label">需求联系人电话</span>
                                    <span class="cell-value">{{ formData.contactPhone }}</span>
                                </div>
                            </div>
                            <div class="detail-row">
                                <div class="detail-cell">
                                    <span class="cell-label">需求邮箱</span>
                                    <span class="cell-value">{{ formData.contactEmail }}</span>
                                </div>
                                <div class="detail-cell">
                                    <span class="cell-label">更新周期</span>
                                    <span class="cell-value">{{ formData.updateCycle }}</span>
                                </div>
                            </div>
                            <div class="detail-row">
                                <div class="detail-cell">
                                    <span class="cell-label">申请依据</span>
                                    <span class="cell-value">{{ formData.applyBasis }}</span>
                                </div>
                                <div class="detail-cell">
                                    <span class="cell-label">共享类型</span>
                                    <span class="cell-value">{{ getDictLabel(formData.shareType, dictObj.sharedType) }}</span>
                                </div>
                            </div>
                            <div class="detail-row">
                                <div class="detail-cell">
                                    <span class="cell-label">应用场景类型</span>
                                    <span class="cell-value">{{ getDictLabel(formData.applicationScene, dictObj.appSceneType) }}</span>
                                </div>
                                <div class="detail-cell">
                                    <span class="cell-label">责任部门</span>
                                    <span class="cell-value">{{ formData.responsibleDeptName }}</span>
                                </div>
                            </div>
                            <div class="detail-row">
                                <div class="detail-cell">
                                    <span class="cell-label">数据来源依据</span>
                                    <span class="cell-value">{{ formData.dataSource }}</span>
                                </div>
                                <div class="detail-cell">
                                    <span class="cell-label">需求信息项</span>
                                    <span class="cell-value">{{ formData.demandInfo }}</span>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="detail-title">需求详情</div>
                <el-row class="detail-row-view">
                            <el-col :span="12">
                                <div class="label">需求名称</div>
                                <div class="val">{{ formData.demandName }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">需求类型</div>
                                <div class="val">{{ getDictLabel(formData.demandType, dictObj.requirementType) }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">需求联系人</div>
                                <div class="val">{{ formData.contactPerson }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label" >需求联系人电话</div>
                                <div class="val">{{ formData.contactPhone }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">需求邮箱</div>
                                <div class="val">{{ formData.contactEmail }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">更新周期</div>
                                <div class="val">{{ formData.updateCycle }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">申请依据</div>
                                <div class="val">{{ formData.applyBasis }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">共享类型</div>
                                <div class="val">{{ getDictLabel(formData.shareType, dictObj.sharedType) }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">应用场景类型</div>
                                <div class="val">{{ getDictLabel(formData.applicationScene, dictObj.appSceneType) }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">责任部门</div>
                                <div class="val">{{ formData.responsibleDeptName }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">数据来源依据</div>
                                <div class="val">{{ formData.dataSource }}</div>
                            </el-col>
                            <el-col :span="12">
                                <div class="label">需求信息项</div>
                                <div class="val">{{ formData.demandInfo }}</div>
                            </el-col>
                        </el-row>
                </div>
                <!--                申请中-->
                <div v-if="detailDemandStatus === '1'">
                    <div class="label">数据上传</div>
                    <div class="detail-title">数据上传</div>
                    <div class="upload-container">
                        <el-upload
                        :http-request="handleHttpRequest"
@@ -106,8 +92,8 @@
                    </div>
                </div>
                <div v-if="detailDemandStatus === '2'">
                    <div class="label">数据详情</div>
                    <el-table :data="tableData" border style="width: 100%">
                    <div class="detail-title" :style="{ marginTop:pxToRem(20)}">数据详情</div>
                    <el-table :data="tableData"  style="width: 100%">
                        <el-table-column prop="fileOriginalName" label="文件名称" />
                        <el-table-column prop="fileSize" label="文件大小" />
                        <el-table-column fixed="right" label="操作" min-width="100">
@@ -142,6 +128,7 @@
</template>
<script setup>
import { pxToRem } from '@/utils/rem'
import { getDictLabel } from '@ztzf/utils'
import {
    gdSupplyDemandDetailApi,
@@ -454,48 +441,8 @@
        padding: 15px;
        height: 100px;
    }
    .requirementsDetailsBox {
        background: #f2f3f5;
        border-radius: 2px 2px 2px 2px;
    }
    /* 详情表格样式 */
    .detail-table {
        width: 100%;
    }
    .detail-row {
        display: flex;
        &:last-child {
            margin-bottom: 0;
        }
    }
    .detail-cell {
        flex: 1;
        display: flex;
        justify-content: space-between;
        padding: 5px 12px;
        margin-right: 8px;
        &:last-child {
            margin-right: 0;
        }
    }
    .cell-label {
        font-weight: 500;
        color: #333333;
        margin-right: 8px;
        text-align: right;
        min-width: 100px;
        flex-shrink: 0;
    }
    .cell-value {
        color: #666666;
        flex: 1;
        text-align: left;
    }
    .label {
    width: 130px !important;}
}
/* 上传容器样式 */
@@ -530,14 +477,7 @@
    }
}
.val {
    padding: 8px;
    background-color: #f5f7fa;
    border-radius: 4px;
    min-height: 32px;
    word-break: break-all;
    margin-bottom: 16px;
}
/* 上传按钮样式 */
:deep(.el-upload) {
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/FormDiaLog.vue
@@ -66,7 +66,7 @@
            :model="formData"
            :rules="rules"
            :disabled="dialogReadonly"
            label-width="130px"
            label-width="160px"
        >
            <el-row>
                <el-col :span="12">