applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -239,33 +239,74 @@ </div> <template #footer v-if="detailLoaded"> <el-button v-if="['1', '4', '7'].includes(taskStatus)" @click="viewDescription" color="#F2F3F5"> <el-button v-if="['1', '4', '7'].includes(taskStatus)" :disabled="footerLoading" @click="viewDescription" color="#F2F3F5" > {{ gdStatusObj[taskStatus].reason }} </el-button> <el-button @click="statusChange(3)" v-if="taskStatus === '3' && permission.flyOrder_revoke" color="#4C34FF"> <el-button v-if="taskStatus === '3' && permission.flyOrder_revoke" :loading="statusLoading === 3" :disabled="footerLoading" @click="statusChange(3)" color="#4C34FF" > 撤回任务 </el-button> <template v-if="permission.flyOrder_controlAcceptance"> <el-button @click="refusalToAccept" v-if="taskStatus === '6'" color="#F2F3F5">拒绝验收</el-button> <el-button @click="statusChange(6)" v-if="taskStatus === '6'" color="#4C34FF">验收通过</el-button> <el-button v-if="taskStatus === '6'" :disabled="footerLoading" @click="refusalToAccept" color="#F2F3F5"> 拒绝验收 </el-button> <el-button v-if="taskStatus === '6'" :loading="statusLoading === 6" :disabled="footerLoading" @click="statusChange(6)" color="#4C34FF" > 验收通过 </el-button> </template> <el-button v-if="!dialogReadonly || (['1', '4'].includes(taskStatus) && permission.flyOrder_add)" :loading="submitting" :disabled="submitting" :disabled="footerLoading" color="#4C34FF" @click="handleSubmit" > 提交 </el-button> <template v-if="permission.flyOrder_controlSignFor"> <el-button v-if="taskStatus === '0'" @click="addDescription" color="#F2F3F5">拒绝签收</el-button> <el-button v-if="taskStatus === '0'" @click="statusChange(1)" color="#4C34FF">签收</el-button> <el-button v-if="taskStatus === '0'" :disabled="footerLoading" @click="addDescription" color="#F2F3F5"> 拒绝签收 </el-button> <el-button v-if="taskStatus === '0'" :loading="statusLoading === 1" :disabled="footerLoading" @click="statusChange(1)" color="#4C34FF" > 签收 </el-button> </template> <template v-if="permission.flyOrder_controlReview"> <el-button v-if="taskStatus === '3'" @click="addDescription" color="#F2F3F5">驳回</el-button> <el-button v-if="taskStatus === '3'" @click="statusChange(4)" color="#4C34FF">通过</el-button> <el-button v-if="taskStatus === '3'" :disabled="footerLoading" @click="addDescription" color="#F2F3F5"> 驳回 </el-button> <el-button v-if="taskStatus === '3'" :loading="statusLoading === 4" :disabled="footerLoading" @click="statusChange(4)" color="#4C34FF" > 通过 </el-button> </template> </template> <RefuseOrderDialog1 @@ -335,6 +376,8 @@ const visible = defineModel() const dialogMode = ref('view') const submitting = ref(false) const statusLoading = ref(null) const footerLoading = computed(() => submitting.value || statusLoading.value !== null) const detailLoaded = ref(false) const dialogReadonly = computed(() => dialogMode.value === 'view') const titleEnum = ref({ edit: '编辑', view: '查看' }) @@ -469,11 +512,16 @@ } // 操作类型:1.同意签收、2.拒绝签收 、3.撤回任务 、4.同意审核、 5.拒绝审核、 6.验收通过、 7.验收拒绝 function statusChange(auditStatus) { gdPatrolTaskAuditApi({ auditStatus, id: formData.value.id }).then(res => { async function statusChange(auditStatus) { if (footerLoading.value) return statusLoading.value = auditStatus try { await gdPatrolTaskAuditApi({ auditStatus, id: formData.value.id }) visible.value = false emit('success') }) } finally { statusLoading.value = null } } function refusalToAccept() { @@ -497,10 +545,11 @@ // 提交编辑 async function handleSubmit() { const isValid = await formRef.value?.validate().catch(() => false) if (!isValid) return if (footerLoading.value) return submitting.value = true try { const isValid = await formRef.value?.validate().catch(() => false) if (!isValid) return await gdPatrolTaskRepublish(formData.value) ElMessage.success('更新成功') visible.value = false @@ -545,6 +594,35 @@ outlineWidth: 0, speed: 5, }) // 创建航线起终点标记 function createRouteEndpoint(position, text, color) { viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(Number(position[0]), Number(position[1]), position[2]), point: { pixelSize: 16, color, outlineColor: Cesium.Color.WHITE, outlineWidth: 4, disableDepthTestDistance: Number.POSITIVE_INFINITY, }, label: { text, font: 'bold 14px sans-serif', fillColor: Cesium.Color.WHITE, outlineColor: Cesium.Color.BLACK.withAlpha(0.35), outlineWidth: 2, style: Cesium.LabelStyle.FILL_AND_OUTLINE, showBackground: true, backgroundColor: color.withAlpha(0.9), backgroundPadding: new Cesium.Cartesian2(10, 6), pixelOffset: new Cesium.Cartesian2(0, -18), verticalOrigin: Cesium.VerticalOrigin.BOTTOM, disableDepthTestDistance: Number.POSITIVE_INFINITY, }, }) } // 获取航线详情 function getAirDetails() { const dockHeight = formData.value.height @@ -569,28 +647,12 @@ material: arrowLineMaterialProperty, }, }) // 渲染起点(蓝色) // 渲染起点 const startPoint = result[0] viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(Number(startPoint[0]), Number(startPoint[1]), startPoint[2]), point: { pixelSize: 12, color: Cesium.Color.BLUE, outlineColor: Cesium.Color.WHITE, outlineWidth: 2, }, }) // 渲染终点(红色) createRouteEndpoint(startPoint, '起点', Cesium.Color.fromCssColorString('#22C55E')) // 渲染终点 const endPoint = result[result.length - 1] viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(Number(endPoint[0]), Number(endPoint[1]), endPoint[2]), point: { pixelSize: 12, color: Cesium.Color.RED, outlineColor: Cesium.Color.WHITE, outlineWidth: 2, }, }) createRouteEndpoint(endPoint, '终点', Cesium.Color.fromCssColorString('#EF4444')) flyVisual({ positionsData: list.map(i => [Number(i.longitude), Number(i.latitude), i.height || 0]), viewer, applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -190,22 +190,30 @@ </div> <template #footer v-if="activeName === 'basic' && detailLoaded"> <el-button v-if="['11', '21', '23', '31', '60'].includes(gdStatus)" @click="viewDescription" color="#F2F3F5"> <el-button v-if="['11', '21', '23', '31', '60'].includes(gdStatus)" :disabled="footerLoading" @click="viewDescription" color="#F2F3F5" > {{ gdStatusObj[gdStatus]?.reason }} </el-button> <template v-if="!suddenlyEdit"> <el-button @click="addDescription" v-if="['20'].includes(gdStatus) && permission.order_applyCancel" :disabled="footerLoading" @click="addDescription" color="#F2F3F5" > 申请取消 </el-button> <el-button color="#4C34FF" @click="requestModification" v-if="['20'].includes(gdStatus) && permission.order_applyEdit" :loading="modifying" :disabled="footerLoading" @click="requestModification" color="#4C34FF" > 申请修改 </el-button> @@ -213,32 +221,86 @@ <el-button v-if="(['11'].includes(gdStatus) || suddenlyEdit || !formData.id) && permission.order_release" :loading="submitting" :disabled="submitting" :disabled="footerLoading" color="#4C34FF" @click="handleSubmit" > {{ gdStatus === '11' || !gdStatus ? '发布' : '提交修改' }} </el-button> <el-button v-if="gdStatus === '50' && permission.order_settlement" @click="addDescription" color="#F2F3F5"> <el-button v-if="gdStatus === '50' && permission.order_settlement" :disabled="footerLoading" @click="addDescription" color="#F2F3F5" > 结算 </el-button> <template v-if="permission.order_controlOrder"> <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 === '10'" :disabled="footerLoading" @click="addDescription" color="#F2F3F5"> 拒绝接单 </el-button> <el-button v-if="gdStatus === '10'" :loading="statusLoading === 1" :disabled="footerLoading" @click="statusChange(1)" color="#4C34FF" > 接单 </el-button> </template> <template v-if="permission.order_controlEdit"> <el-button v-if="gdStatus === '22'" @click="statusChange(8)" color="#F2F3F5">驳回</el-button> <el-button v-if="gdStatus === '22'" @click="statusChange(7)" color="#4C34FF">同意</el-button> <el-button v-if="gdStatus === '22'" :loading="statusLoading === 8" :disabled="footerLoading" @click="statusChange(8)" color="#F2F3F5" > 驳回 </el-button> <el-button v-if="gdStatus === '22'" :loading="statusLoading === 7" :disabled="footerLoading" @click="statusChange(7)" color="#4C34FF" > 同意 </el-button> </template> <template v-if="permission.order_controlCancel"> <el-button v-if="gdStatus === '21'" @click="statusChange(6)" color="#F2F3F5">驳回</el-button> <el-button v-if="gdStatus === '21'" @click="statusChange(5)" color="#4C34FF">通过</el-button> <el-button v-if="gdStatus === '21'" :loading="statusLoading === 6" :disabled="footerLoading" @click="statusChange(6)" color="#F2F3F5" > 驳回 </el-button> <el-button v-if="gdStatus === '21'" :loading="statusLoading === 5" :disabled="footerLoading" @click="statusChange(5)" color="#4C34FF" > 通过 </el-button> </template> <el-button v-if="gdStatus === '30' && permission.order_applyNegotiation" @click="addDescription" color="#4C34FF"> <el-button v-if="gdStatus === '30' && permission.order_applyNegotiation" :disabled="footerLoading" @click="addDescription" color="#4C34FF" > 协商修改 </el-button> <el-button v-if="gdStatus === '31' && permission.order_controlNegotiation" :loading="statusLoading === 10" :disabled="footerLoading" @click="statusChange(10)" color="#4C34FF" > @@ -314,6 +376,9 @@ const visible = defineModel() // 弹框显隐 const dialogMode = ref('add') // 弹框模式 const submitting = ref(false) // 提交中 const modifying = ref(false) // 申请修改中 const statusLoading = ref(null) // 状态操作中 const footerLoading = computed(() => submitting.value || modifying.value || statusLoading.value !== null) const detailLoaded = ref(false) // 详情加载完成 const dialogReadonly = computed(() => dialogMode.value === 'view') const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' }) @@ -355,26 +420,37 @@ // 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消 // 6不同意取消 7.同意修改 8.不同意修改 9.协商修改,10:同意协商修改,11.结算 function statusChange(operationType) { gdWorkOrderHandleStatusApi({ operationType: operationType, workOrderId: formData.value.id, }).then(res => { async function statusChange(operationType) { if (footerLoading.value) return statusLoading.value = operationType try { await gdWorkOrderHandleStatusApi({ operationType: operationType, workOrderId: formData.value.id, }) visible.value = false emit('success') }) } finally { statusLoading.value = null } } // 申请修改按钮 async function requestModification() { suddenlyEdit.value = true dialogMode.value = 'edit' await getDeviceList() nextTick(() => { syncSelection() viewPlane && viewer.entities.remove(viewPlane) editPolygon() }) if (footerLoading.value) return modifying.value = true try { suddenlyEdit.value = true dialogMode.value = 'edit' await getDeviceList() nextTick(() => { syncSelection() viewPlane && viewer.entities.remove(viewPlane) editPolygon() }) } finally { modifying.value = false } } // 填写说明弹框回调 @@ -441,16 +517,17 @@ // 提交新增/编辑 async function handleSubmit() { const isValid = await formRef.value?.validate().catch(() => false) if (!isValid) return if (!pointList.value.length) { return ElMessage.warning('请绘制范围') } if (!formData.value.recommendDeviceIds) { return ElMessage.warning('请选择设备') } if (footerLoading.value) return submitting.value = true try { const isValid = await formRef.value?.validate().catch(() => false) if (!isValid) return if (!pointList.value.length) { return ElMessage.warning('请绘制范围') } if (!formData.value.recommendDeviceIds) { return ElMessage.warning('请选择设备') } const str = [...pointList.value, pointList.value[0]].map(item => `${item.longitude} ${item.latitude}`).join(',') formData.value.geom = `POLYGON((${str}))` if (!formData.value.id) {