applications/drone-command/src/styles/common/cockpit.scss
@@ -39,6 +39,49 @@ .command-radio-group { height: 40px; } .command-cascader { height: 40px; .el-input { height: 40px; } .el-input__wrapper { --el-input-text-color: #161B2C !important; } } .command-cascader-popper.el-cascader__dropdown { border: none; background: #2E2E48 !important; .el-cascader-panel { .el-cascader-menu { color: #fff; .el-cascader-node:hover, .el-cascader-node:focus { background: transparent !important; } .el-cascader-node.is-selectable.in-active-path { color: #fff; } } } .el-popper__arrow::before { background: #2E2E48 !important; border: 1px solid #2E2E48 !important; } } .command-cascader-popper, .command-radio-group { .el-radio { .el-radio__input { @@ -139,7 +182,7 @@ } .command-date-picker-popper { background: #161B2C !important; background: #2E2E48 !important; border: none !important; border-radius: 0px 0px 8px 8px; @@ -157,7 +200,7 @@ .el-picker-panel { .el-picker-panel__body-wrapper { .el-picker-panel__body { background: #161B2C !important; background: #2E2E48 !important; color: #fff !important; .el-date-range-picker__time-header { @@ -220,6 +263,12 @@ } } } .el-input__wrapper { height: 28px; background: #1A1A2A; box-shadow: none; } } } @@ -269,11 +318,17 @@ background-color: #161B2C !important; } td.current:not(.disabled) { .el-date-table-cell__text { background-color: #284FE3; } } td.in-range div, td.in-range div:hover, &.is-week-mode .el-date-table__row.current div, &.is-week-mode .el-date-table__row:hover div { background-color: rgba(60, 121, 202) !important; background-color: #284FE3 !important; } } } @@ -283,8 +338,8 @@ .el-popper__arrow { &::before { background: #161B2C !important; border: 1px solid #161B2C !important; background: #2E2E48 !important; border: 1px solid #2E2E48 !important; box-sizing: border-box; } } @@ -326,21 +381,53 @@ } .el-picker-panel__footer { background: #161B2C; background: #2E2E48; color: #fff; border-top: none; .el-button--small { box-shadow: 0 0 0 0.1rem#409eff; background-color: #161B2C; color: #fff; border: none; border: 1px solid rgba(255, 255, 255, 0.3); box-shadow: none; background-color: transparent !important; &:hover { background-color: #161B2C; color: #fff; border-color: #409eff; border-color: none; background-color: transparent !important; } } .el-button--small:last-child { border: none; background-color: #284FE3 !important; &:hover { border: none; background-color: #284FE3 !important; } } } .el-time-panel__content { .el-time-spinner__item { &.is-active { color: #fff; } &:hover { background: transparent !important; } } } .el-time-panel__footer { .el-time-panel__btn { color: #fff; } .el-time-panel__btn:first-child { color: #86909C; } } } @@ -435,45 +522,6 @@ } } .command-cascader { height: 40px; .el-input { height: 40px; } .el-input__wrapper { --el-input-text-color: #161B2C !important; } } .command-cascader-popper.el-cascader__dropdown { border: none; background: #2E2E48 !important; .el-cascader-panel { .el-cascader-menu { color: #fff; .el-cascader-node:hover, .el-cascader-node:focus { background: transparent !important; } .el-cascader-node.is-selectable.in-active-path { color: #fff; } } } .el-popper__arrow::before { background: #2E2E48 !important; border: 1px solid #2E2E48 !important; } } // 树形选择 .command-tree-select-popper { background: #2E2E48 !important; @@ -508,6 +556,11 @@ .el-tree-node.is-current>.el-tree-node__content { color: #479dff !important; } .el-tree-node__content { height: 34px; line-height: 34px; } } @@ -875,40 +928,6 @@ flex: 1; display: flex; flex-direction: column; .el-checkbox { width: 16px; height: 16px; .el-checkbox__input { width: 16px; height: 16px; .el-checkbox__inner { width: 16px; height: 16px; background: transparent !important; border-radius: 2px 2px 2px 2px; border: 2px solid #A1A3D4; box-shadow: none; box-sizing: border-box; } } &.is-checked { .el-checkbox__input { .el-checkbox__inner { border: none; background: url("@/assets/images/common/checkbox.png") no-repeat center / 100% 100% !important; &::after { content: none; } } } } } } .command-table-content-bg { @@ -933,17 +952,17 @@ } th.el-table__cell { height: 40px; border-bottom: 1px solid #323241 !important; .cell { display: flex; align-items: center; padding: 0; padding-left: 16px; font-family: Source Han Sans CN, Source Han Sans CN; font-weight: 500; font-size: 14px; color: #FFFFFF; line-height: 40px; font-style: normal; text-transform: none; } @@ -961,7 +980,6 @@ font-weight: 400; font-size: 14px; color: #D2D2E7; line-height: 18px; font-style: normal; text-transform: none; } @@ -990,6 +1008,44 @@ background: transparent !important; } .el-table__empty-text { color: #fff; } .el-checkbox { width: 16px; height: 16px; .el-checkbox__input { width: 16px; height: 16px; .el-checkbox__inner { width: 16px; height: 16px; background: transparent !important; border-radius: 2px 2px 2px 2px; border: 2px solid #A1A3D4; box-shadow: none; box-sizing: border-box; } } &.is-checked { .el-checkbox__input { .el-checkbox__inner { border: none; background: url("@/assets/images/common/checkbox.png") no-repeat center / 100% 100% !important; &::after { content: none; } } } } } .fixed-column { background-color: #1A1A2A !important; } applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue
@@ -116,9 +116,9 @@ <el-table class="command-table" ref="areaTableRef" :data="areaList.filter(item => item.areaName.includes(searchName))" row-key="id" @selection-change="handleAreaSelectionChange"> <el-table-column type="selection" width="55" :reserve-selection="true" /> <el-table-column prop="areaName" label="区域名称" /> <el-table-column prop="areaType" label="区域类型"> <el-table-column type="selection" width="55" /> <el-table-column prop="areaName" show-overflow-tooltip label="区域名称" /> <el-table-column prop="areaType" show-overflow-tooltip label="区域类型"> <template v-slot="{ row }"> {{ getDictLabel(row.areaType, dictObj.areaType) }} </template> applications/drone-command/src/views/basicManage/deviceScrap/FormDiaLog.vue
@@ -39,7 +39,7 @@ <div class="label">报废时间</div> <div class="val">{{dayjs(formData.scrapTime).format('YYYY-MM-DD')}}</div> </el-col> <el-col :span="24"> <el-col :span="12"> <div class="label">报废原因</div> <div class="val">{{ formData.scrapReason }}</div> </el-col> applications/drone-command/src/views/dataCockpit/components/DeviceHistoryDialog.vue
@@ -3,25 +3,26 @@ :close-on-click-modal="false" :destroy-on-close="true"> <el-form ref="queryParamsRef" :model="searchParams" class="command-dialog-history-search"> <el-form-item label="关键字" prop="keyword"> <el-input class="command-input" v-model="searchParams.keyword" placeholder="名称/序列号" clearable @clear="handleSearch" /> <el-input class="command-input" v-model="searchParams.keyword" placeholder="名称/序列号" clearable @clear="handleSearch" /> </el-form-item> <el-form-item prop="dateRange"> <el-date-picker class="command-date-picker" popper-class="command-date-picker-popper" v-model="searchParams.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY/MM/DD" @change="handleSearch" /> <el-date-picker class="command-date-picker" popper-class="command-date-picker-popper" v-model="searchParams.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY/MM/DD" @change="handleSearch" /> </el-form-item> <el-form-item label="区域" prop="area"> <el-tree-select class="command-select" popper-class="command-tree-select-popper" v-model="searchParams.area" :data="areaTree" :props="areaTreeProps" node-key="value" check-strictly filterable :filter-node-method="filterAreaNode" clearable placeholder="请选择" @change="handleSearch" /> v-model="searchParams.area" :data="areaTree" :props="areaTreeProps" node-key="value" check-strictly filterable :filter-node-method="filterAreaNode" clearable placeholder="请选择" @change="handleSearch" /> </el-form-item> <el-form-item label="无人机类型" prop="droneType"> <el-select class="command-select" popper-class="command-select-popper" v-model="searchParams.droneType" placeholder="请选择" clearable @change="handleSearch"> <el-select class="command-select" popper-class="command-select-popper" v-model="searchParams.droneType" placeholder="请选择" clearable @change="handleSearch"> <el-option v-for="item in dictObj.droneType" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" /> </el-select> @@ -44,8 +45,8 @@ {{ getDroneTypeText(row.droneType) }} </template> </el-table-column> <el-table-column prop="areaName" label="区域" min-width="90" /> <el-table-column prop="deviceName" label="数据来源" min-width="110" /> <el-table-column prop="areaName" show-overflow-tooltip label="区域" min-width="90" /> <el-table-column prop="deviceName" show-overflow-tooltip label="数据来源" min-width="110" /> <el-table-column label="信号频段" min-width="100"> <template #default="{ row }"> {{ formatFrequency(row.signalFreqMhz) }} @@ -62,9 +63,9 @@ </div> <div class="command-table-pagination"> <el-pagination popper-class="command-select-popper" v-model:current-page="searchParams.current" v-model:page-size="searchParams.size" layout="total, prev, pager, next, sizes" :total="total" @change="getList" /> <el-pagination popper-class="command-select-popper" v-model:current-page="searchParams.current" v-model:page-size="searchParams.size" layout="total, prev, pager, next, sizes" :total="total" @change="getList" /> </div> </div> </el-dialog> applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation/FormDiaLog.vue
@@ -17,7 +17,7 @@ <div class="val">{{ formData.droneType || '-' }}</div> </el-col> <el-col :span="12"> <div class="label">无人机设备编码</div> <div class="label">设备编码</div> <div class="val">{{ formData.droneDeviceCode || '-' }}</div> </el-col> <el-col :span="12"> @@ -81,7 +81,7 @@ const initForm = () => ({ droneName: '', // 无人机名称 droneType: '', // 无人机类型 droneDeviceCode: '', // 无人机设备编码 droneDeviceCode: '', // 设备编码 findTime: '', // 发现时间 counterEffect: '', // 反制效果 counterWay: '', // 反制方式 applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation/index.vue
@@ -59,7 +59,7 @@ <el-table-column type="index" width="64" show-overflow-tooltip label="序号" /> <el-table-column prop="droneName" show-overflow-tooltip width="130" label="无人机名称" /> <el-table-column prop="droneType" show-overflow-tooltip width="130" label="无人机类型" /> <el-table-column prop="droneDeviceCode" show-overflow-tooltip width="140" label="无人机设备编码" /> <el-table-column prop="droneDeviceCode" show-overflow-tooltip width="140" label="设备编码" /> <el-table-column prop="findTime" show-overflow-tooltip width="140" label="发现时间" /> <el-table-column prop="counterEffect" show-overflow-tooltip width="120" label="反制效果"> <template v-slot="{ row }"> applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
@@ -74,6 +74,7 @@ class="command-select" popper-class="command-select-popper" v-model="formData.deviceType" disabled placeholder="请选择" clearable > @@ -101,6 +102,7 @@ <el-input class="command-input" v-model="formData.deviceSn" disabled placeholder="请输入" clearable /> @@ -109,6 +111,7 @@ <el-input class="command-input" v-model="formData.deviceModel" disabled placeholder="请输入" clearable /> applications/task-work-order/src/buildConfig/buildConfig/config.default.js
@@ -2,8 +2,7 @@ export default function getBaseConfig () { return { loginTitle: '中图智飞低空智能感知网平台', //登陆页面标题 // envName: 'jiangwu', loginTitle: '任务工单', //登陆页面标题 ...defaultLayer } } } applications/task-work-order/src/buildConfig/buildConfig/config.jiangwu.js
File was deleted applications/task-work-order/src/buildConfig/config.js
@@ -1,14 +1,12 @@ // 直接导入所有配置文件 import jiangwuConfig from '@/buildConfig/buildConfig/config.jiangwu.js' import defaultConfig from '@/buildConfig/buildConfig/config.default.js' // 根据环境变量选择配置 const env = import.meta.env.VITE_APP_ENV || 'default' const configMap = { jiangwu: jiangwuConfig, default: defaultConfig } // 导出配置函数 export default configMap[env] || configMap.default export default configMap[env] || configMap.default applications/task-work-order/src/buildConfig/layerConfig/jiangwuLayer.js
File was deleted applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
@@ -20,7 +20,7 @@ placeholder="请选择" clearable filterable :disabled="dialogReadonly" :disabled="dialogMode !== 'add'" @change="handleWorkOrderChange" > <el-option v-for="item in workOrderList" :key="item.id" :label="item.workOrderName" :value="item.id" /> @@ -153,7 +153,7 @@ <el-input class="gd-input" v-model="row.taskDesc" placeholder="请输入" :disabled="dialogReadonly" /> </template> </el-table-column> <el-table-column label="操作" width="80" fixed="right" v-if="!dialogReadonly"> <el-table-column label="操作" width="80" fixed="right" v-if="dialogMode === 'add'"> <template v-slot="{ $index }"> <el-button type="primary" :icon="Plus" circle size="small" @click="addTaskRow" /> <el-button @@ -192,7 +192,7 @@ import { ElMessage } from 'element-plus' import { Plus, Delete } from '@element-plus/icons-vue' import { getDictLabel } from '@ztzf/utils' import { gdPatrolTaskSaveApi, gdFlyerPageApi } from './inspectionRequestApi' import { gdPatrolTaskSaveApi, gdFlyerPageApi, gdPatrolTaskAuditApi } from './inspectionRequestApi' import { gdWorkOrderPageApi } from '../orderManage/orderManageApi' import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi' @@ -312,12 +312,15 @@ } submitting.value = true try { const preID = taskList.value[0].id const dataList = taskList.value.map(item => ({ ...item, workOrderId: selectedWorkOrderId.value, id: undefined, })) await gdPatrolTaskSaveApi(dataList) ElMessage.success('新增成功') dialogMode.value === 'add' ? ElMessage.success('新增成功') : ElMessage.success('修改成功') dialogMode.value === 'edit' && await gdPatrolTaskAuditApi({ auditStatus: 7, id: preID }) visible.value = false emit('success') } finally { @@ -327,6 +330,7 @@ // 打开弹框 async function open({ mode = 'add', row } = {}) { console.log(row,'rowrow') dialogMode.value = mode if (mode === 'add') { selectedWorkOrderId.value = null applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -45,6 +45,21 @@ <div class="val">{{ formData.taskDesc }}</div> </el-col> </el-row> <template v-if="['6','7','8'].includes(taskStatus)"> <div>任务成功({{list.length || 0}}条)</div> <div style="display: flex"> <div v-for="item in list"> <el-image v-if="item.resultUrl" :src="item.resultUrl" :preview-src-list="[item.resultUrl]" fit="cover" style="width: 80px; height: 60px" preview-teleported /> </div> </div> </template> </div> <!-- 编辑模式 --> @@ -167,10 +182,11 @@ </el-button> <template v-if="requester"> <!-- statusChange(6)--> <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> <el-button color="#F2F3F5" @click="refusalToAccept" v-if="taskStatus === '6'">拒绝验收</el-button> <el-button color="#F2F3F5" @click="statusChange(6)" v-if="taskStatus === '6'">验收通过</el-button> </template> <template v-else> <el-button color="#F2F3F5" @click="statusChange(2)" v-if="taskStatus === '0'">拒绝签收</el-button> @@ -191,6 +207,7 @@ import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi' import { pxToRem } from '@/utils/rem' import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue' import { gdTaskResultListApi } from '@/views/orderView/orderManage/clueEvents/achievementApi' // 初始化表单数据 const initForm = () => ({ @@ -208,7 +225,7 @@ const mapRef = ref(null) const dictObj = inject('dictObj') const requester = inject('requester') const emit = defineEmits(['success']) const emit = defineEmits(['success','refusalAccept']) const formRef = ref(null) const formData = ref(initForm()) const visible = defineModel() @@ -277,6 +294,11 @@ }) } function refusalToAccept() { emit('refusalAccept',formData.value) visible.value = false } // 获取设备列表 async function getDeviceList() { const res = await gdManageDeviceListApi() @@ -298,11 +320,22 @@ } } let list = ref([]) // 获取成果列表 async function getList() { if (!formData.value?.id) return try { const res = await gdTaskResultListApi({ patrolTaskId: formData.value.id }) list.value = res?.data?.data ?? [] } finally { } } // 打开弹框 async function open({ mode = 'view', row } = {}) { dialogMode.value = mode formData.value = { ...initForm(), ...row } console.log(formData.value) formData.value = { ...initForm(), ...row }; ['6','7','8'].includes(row.taskStatus) && getWorkOrderList() initMap() } applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
@@ -117,7 +117,7 @@ </div> <FormDiaLog ref="dialogRef" @success="getList" v-if="dialogVisible" v-model="dialogVisible" /> <ViewDiaLog ref="viewDiaLogRef" @success="getList" v-if="viewDiaLogVisible" v-model="viewDiaLogVisible" /> <ViewDiaLog ref="viewDiaLogRef" @success="getList" @refusalAccept="refusalAccept" v-if="viewDiaLogVisible" v-model="viewDiaLogVisible" /> </basic-container> </template> <script setup> @@ -207,22 +207,6 @@ }) } // 删除 async function handleDelete(row) { const tips = row ? '该条' : '选中的项' await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', { type: 'warning', customClass: 'gd-confirm-custom', confirmButtonClass: 'gd-confirm-button', cancelButtonClass: 'gd-confirm-cancel-button', }) const ids = row ? row.id : selectedIds.value.join(',') await gdPatrolTaskRemoveApi({ ids }) ElMessage.success('删除成功') selectedIds.value = [] getList() } // 勾选值设置 function handleSelectionChange(rows) { selectedIds.value = rows.map(item => item.id) @@ -235,6 +219,13 @@ }) } function refusalAccept(row) { dialogVisible.value = true nextTick(() => { dialogRef.value?.open({ mode:'edit', row }) }) } onMounted(() => { getList() getDictList()