吉安感知网项目-前端
shuishen
2026-01-26 78287d94c535844c4cbad037b0196a812c00f153
Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web
28 files modified
314 ■■■■■ changed files
applications/task-work-order/src/api/zkxt/index.js 8 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/components/map-container/common-cesium-map.vue 18 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/styles/common.scss 1 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/styles/common/cockpit.scss 18 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/FormDiaLog.vue 4 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue 6 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue 8 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue 6 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/FormDiaLog.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue 6 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue 6 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/FormDiaLog.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue 6 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/clueEvents/DistributeDiaLog.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue 6 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/clueEvents/index.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue 8 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/RefuseOrderDialog1.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue 100 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue 3 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue 14 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue 68 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue 8 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/orderManageApi.js 2 ●●● patch | view | raw | blame | history
uniapps/work-app/src/store/modules/location.js 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/api/zkxt/index.js
@@ -37,4 +37,12 @@
    })
}
// 获取航线详情
export const queryAirById = (id) => {
    return request({
        url: `/webservice/webservice/airline/queryById/${id}`,
        method: 'get',
    })
}
applications/task-work-order/src/components/map-container/common-cesium-map.vue
@@ -66,6 +66,22 @@
let initialized = false
let removeCameraListener = null
const preventDefault = event => {
    event.preventDefault()
    return
}
const cesiumContextMenu = (isAdd = true) => {
    let cesium = document.getElementById(mapId)
    if (!cesium) return
    if (isAdd) {
        cesium.addEventListener('contextmenu', preventDefault)
    } else {
        cesium.removeEventListener('contextmenu', preventDefault)
    }
}
const initMap = async () => {
    if (initialized) return
    initialized = true
@@ -77,6 +93,7 @@
        boundary: props.boundary,
        contour: props.contour,
    })
    cesiumContextMenu(true)
    viewer.value = viewInstance.value.getViewer()
    if (props.showAdminBoundary) {
        adminBoundarySources = await loadJaAdminBoundary(viewer.value, {
@@ -118,6 +135,7 @@
    if (removeCameraListener) removeCameraListener()
    removeJaAdminBoundary(viewer.value, adminBoundarySources)
    viewInstance.value?.viewerDestroy?.()
    cesiumContextMenu(false)
})
const getMap = () => ({ viewer: viewer.value, publicCesium: viewInstance.value })
applications/task-work-order/src/styles/common.scss
@@ -271,6 +271,7 @@
}
.gd-cesium {
  position: relative;
  .cesium-viewer {
    height: 100%;
    overflow: hidden;
applications/task-work-order/src/styles/common/cockpit.scss
@@ -40,6 +40,18 @@
  }
}
.gd-button-main{
  --el-button-bg-color: #4C34FF;
  --el-button-text-color: #ffffff;
  --el-button-border-color: #4C34FF;
  --el-button-hover-bg-color: rgb(130, 113, 255);
  --el-button-hover-text-color: #ffffff;
  --el-button-hover-border-color: rgb(130, 113, 255);
  --el-button-active-bg-color: rgb(65, 46, 208);
  --el-button-active-border-color: rgb(65, 46, 208);
  color: #ffffff;
}
.gd-select {
  --bg: #{$form-bg};
  --tips: #{$form-tips};
@@ -514,15 +526,10 @@
      margin-left: 16px;
      width: 96px;
      height: 36px;
      color: #161B2C;
      &:first-child {
        margin-left: 0;
      }
    }
    .save-btn {
      color: #FFFFFF;
    }
  }
}
@@ -587,7 +594,6 @@
      position: relative;
      margin: 0 10px;
      min-width: 28px;
      color: #0075FF;
      &:first-child {
        margin-left: 0;
applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/FormDiaLog.vue
@@ -98,7 +98,7 @@
            <template v-if="!dialogReadonly">
                <el-button color="#F2F3F5" @click="visible = false">取消</el-button>
                <el-button
                    class="save-btn"
                    class=""
                    color="#4C34FF"
                    :loading="submitting"
@@ -111,7 +111,7 @@
            <template v-if="dialogReadonly && innovationDetailsStatus ==='0'">
                <el-button color="#F2F3F5" @click="handleReject">不通过</el-button>
                <el-button
                    class="save-btn"
                    class=""
                    color="#4C34FF"
                    :loading="submitting"
                    :disabled="submitting"
applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue
@@ -62,9 +62,9 @@
                    <el-table-column prop="caseDesc" show-overflow-tooltip label="案例描述" />
                    <el-table-column label="操作" class-name="operation-btns" width="180">
                        <template v-slot="{ row }">
                            <el-link @click="openForm('view', row)">查看</el-link>
<!--                            <el-link @click="openForm('edit', row)">编辑</el-link>-->
                            <el-link @click="handleDelete(row)" v-if="!['1', '2'].includes(row.innovationStatus)">删除</el-link>
                            <el-link  type="primary"  @click="openForm('view', row)">查看</el-link>
<!--                            <el-link  type="primary"  @click="openForm('edit', row)">编辑</el-link>-->
                            <el-link  type="primary"  @click="handleDelete(row)" v-if="!['1', '2'].includes(row.innovationStatus)">删除</el-link>
                        </template>
                    </el-table-column>
                </el-table>
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue
@@ -187,13 +187,13 @@
                >
                    保存
                </el-button>
                <el-button class="save-btn" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleApply">申请</el-button>
                <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleApply">申请</el-button>
            </template>
            <template v-if="dialogReadonly && detailObjectionStatus === '1'">
                <el-button color="#F2F3F5" :loading="submitting" :disabled="submitting" @click="visible = false">取消</el-button>
                <el-button
                    class="save-btn"
                    class=""
                    color="#4C34FF"
                    :loading="submitting"
@@ -204,7 +204,7 @@
                    反馈
                </el-button>
                <el-button
                        class="save-btn"
                        class=""
                        color="#4C34FF"
                        :loading="submitting"
@@ -444,7 +444,7 @@
        ElMessage.warning('没有可下载的附件')
        return
    }
    // 遍历所有附件并下载
    attachmentDetailsList.value.forEach(attach => {
        if (attach.link) {
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue
@@ -71,9 +71,9 @@
                    <el-table-column prop="reviewOpinion" show-overflow-tooltip label="审核意见" />
                    <el-table-column label="操作" class-name="operation-btns" width="180">
                        <template v-slot="{ row }">
                            <el-link @click="openForm('view', row)">查看</el-link>
                            <el-link @click="openForm('edit', row)" v-if="!['1', '2'].includes(row.objectionStatus)">编辑</el-link>
                            <el-link @click="handleDelete(row)" v-if="!['1', '2'].includes(row.objectionStatus)">删除</el-link>
                            <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>
                            <el-link  type="primary"  @click="handleDelete(row)" v-if="!['1', '2'].includes(row.objectionStatus)">删除</el-link>
                        </template>
                    </el-table-column>
                </el-table>
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/FormDiaLog.vue
@@ -128,7 +128,7 @@
        <template #footer v-if="!dialogReadonly">
            <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
            <el-button
                class="save-btn"
                class=""
                color="#4C34FF"
                :loading="submitting"
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue
@@ -55,9 +55,9 @@
                    <el-table-column prop="evaluationContent" show-overflow-tooltip label="评价内容" />
                    <el-table-column label="操作" class-name="operation-btns" width="180">
                        <template v-slot="{ row }">
                            <el-link @click="openForm('view', row)">查看</el-link>
                            <el-link @click="openForm('edit', row)">编辑</el-link>
                            <el-link @click="handleDelete(row)">删除</el-link>
                            <el-link  type="primary"  @click="openForm('view', row)">查看</el-link>
                            <el-link  type="primary"  @click="openForm('edit', row)">编辑</el-link>
                            <el-link  type="primary"  @click="handleDelete(row)">删除</el-link>
                        </template>
                    </el-table-column>
                </el-table>
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
@@ -108,13 +108,13 @@
        <template #footer>
            <template v-if="detailDemandStatus === '1' && !requesterProvider">
                <el-button color="#F2F3F5"  @click="rejectTheApplication">拒绝申请</el-button>
                <el-button class="save-btn" color="#4C34FF" @click="approvedByTheReview">审核通过</el-button>
                <el-button class="" color="#4C34FF" @click="approvedByTheReview">审核通过</el-button>
            </template>
            <template v-if="detailDemandStatus === '2'">
                <el-button class="save-btn" color="#4C34FF" @click="downloadAllFiles">全部下载</el-button>
                <el-button class="" color="#4C34FF" @click="downloadAllFiles">全部下载</el-button>
            </template>
            <template v-if="detailDemandStatus === '3'">
                <el-button class="save-btn" color="#4C34FF" @click="visible =false">关闭</el-button>
                <el-button class="" color="#4C34FF" @click="visible =false">关闭</el-button>
            </template>
        </template>
    </el-dialog>
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/FormDiaLog.vue
@@ -194,7 +194,7 @@
            >
                保存
            </el-button>
            <el-button class="save-btn" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleApply">申请</el-button>
            <el-button color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleApply">申请</el-button>
        </template>
    </el-dialog>
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue
@@ -78,10 +78,10 @@
                    <el-table-column prop="demandInfo" show-overflow-tooltip label="需求信息项" />
                    <el-table-column label="操作" class-name="operation-btns" width="180">
                        <template v-slot="{ row }">
                            <el-link @click="openForm('view', row)">查看</el-link>
                            <el-link  type="primary"  @click="openForm('view', row)">查看</el-link>
                            <!-- 只对非审批状态显示编辑和删除按钮 -->
                            <el-link @click="openForm('edit', row)" v-if="!['1', '2', '3'].includes(row.demandStatus)">编辑</el-link>
                            <el-link @click="handleDelete(row)" v-if="!['1', '2', '3'].includes(row.demandStatus)">删除</el-link>
                            <el-link  type="primary"  @click="openForm('edit', row)" v-if="!['1', '2', '3'].includes(row.demandStatus)">编辑</el-link>
                            <el-link  type="primary"  @click="handleDelete(row)" v-if="!['1', '2', '3'].includes(row.demandStatus)">删除</el-link>
                        </template>
                    </el-table-column>
                </el-table>
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue
@@ -16,7 +16,7 @@
            </div>
        </div>
        <template #footer>
            <el-button class="save-btn" color="#4C34FF" @click="handleConfirm">确认</el-button>
            <el-button class="" color="#4C34FF" @click="handleConfirm">确认</el-button>
        </template>
    </el-dialog>
</template>
applications/task-work-order/src/views/orderView/orderManage/clueEvents/DistributeDiaLog.vue
@@ -43,7 +43,7 @@
        </el-form>
        <template #footer>
            <el-button color="#F2F3F5" @click="visible = false">取消</el-button>
            <el-button class="save-btn" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleSubmit">
            <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleSubmit">
                保存
            </el-button>
        </template>
applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
@@ -32,10 +32,12 @@
                    <el-table-column prop="distributeUserName" show-overflow-tooltip label="分发人员" />
                    <el-table-column label="操作" class-name="operation-btns" width="140">
                        <template v-slot="{ row }">
                            <el-link v-if="row.distributeStatus === 0" @click="openDistributeDialog(row)" :disabled="row.distributeStatus === 1">
                            <el-link  type="primary"
                                @click="openDistributeDialog(row)"
                                :disabled="row.distributeStatus === 1 || currentRow.taskStatus !== '50'"
                            >
                                转为事件并分发
                            </el-link>
                            <div class="disabled-text" v-else>转为事件并分发</div>
                        </template>
                    </el-table-column>
                </el-table>
applications/task-work-order/src/views/orderView/orderManage/clueEvents/index.vue
@@ -92,7 +92,7 @@
                    <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(row)">查看线索</el-link>
                            <el-link  type="primary"  @click="viewDiaLogView(row)">查看线索</el-link>
                        </template>
                    </el-table-column>
                </el-table>
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
@@ -57,9 +57,9 @@
                    </el-table-column>
                    <el-table-column label="操作" class-name="operation-btns">
                        <template v-slot="{ row }">
                            <el-link @click="seeOnlineWord(row)">查看</el-link>
                            <el-link @click="openForm(row)">在线编辑</el-link>
                            <el-link @click="handleDelete(row)">删除</el-link>
                            <el-link  type="primary"  @click="seeOnlineWord(row)">查看</el-link>
                            <el-link  type="primary"  @click="openForm(row)">在线编辑</el-link>
                            <el-link  type="primary"  @click="handleDelete(row)">删除</el-link>
                        </template>
                    </el-table-column>
                </el-table>
@@ -117,7 +117,7 @@
            <template #footer>
                <el-button color="#F2F3F5" @click="isShowEditView = false">取消</el-button>
                <el-button
                    class="save-btn"
                    class=""
                    color="#4C34FF"
                    :loading="submitting"
                    :disabled="submitting"
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
@@ -179,7 +179,7 @@
        <template #footer>
            <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
            <el-button
                class="save-btn"
                class=""
                color="#4C34FF"
                v-if="!dialogReadonly"
                :loading="submitting"
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/RefuseOrderDialog1.vue
@@ -42,7 +42,7 @@
        <template #footer>
            <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
            <el-button
                class="save-btn"
                class=""
                color="#4C34FF"
                v-if="!dialogReadonly"
                :loading="submitting"
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -5,6 +5,7 @@
        :title="titleEnum[dialogMode]"
        @closed="visible = false"
        destroy-on-close
        width="auto"
        :close-on-click-modal="false"
    >
        <div class="content" style="display: flex">
@@ -17,7 +18,7 @@
                        :type="index === processList.length - 1 ? 'success' : 'info'"
                        :color="activity.color"
                        :hollow="activity.hollow"
                        :timestamp="activity.flowDesc.split(' ')[1]"
                        :timestamp="activity.flowDesc.split(' ')[1] + activity.flowDesc.split(' ')[2]"
                    >
                        <div class="item-content">
                            <div>{{ activity.flowDesc.split(' ')[0] }}</div>
@@ -65,9 +66,11 @@
                        </el-col>
                    </el-row>
                    <template v-if="['6', '7', '8'].includes(taskStatus)">
                        <div class="detail-title" :style="{ marginTop: pxToRem(10) }">任务成功({{ list.length || 0 }}条)</div>
                        <div class="detail-title" :style="{ marginTop: pxToRem(10) }">
                            任务成果({{ taskResultList.length || 0 }}条)
                        </div>
                        <div class="imgBox">
                            <div v-for="item in list">
                            <div v-for="item in taskResultList">
                                <el-image
                                    v-if="item.resultUrl"
                                    :src="item.resultUrl"
@@ -189,36 +192,37 @@
                    :layer-mode="4"
                    :boundary="false"
                    :zoomToBoundary="false"
                    @ready="() => mapRef.flyBoundary()"
                    @ready="readyMap"
                />
            </div>
        </div>
        <template #footer>
            <template v-if="requester">
                <el-button v-if="['1', '4'].includes(taskStatus)" @click="viewDescription" color="#F2F3F5">
                    {{ gdStatusObj[taskStatus].reason }}
                </el-button>
                <el-button @click="statusChange(3)" v-if="taskStatus === '3'" color="#4C34FF">撤回任务</el-button>
                <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="!dialogReadonly || ['1', '4'].includes(taskStatus)"
                    :loading="submitting"
                    :disabled="submitting"
                    color="#4C34FF"
                    @click="handleSubmit"
                >
                    提交
                </el-button>
                <el-button v-if="['1', '4'].includes(taskStatus)" @click="viewDescription">
                    {{ gdStatusObj[taskStatus].reason }}
                </el-button>
                <el-button @click="statusChange(3)" v-if="taskStatus === '3'">撤回任务</el-button>
                <el-button @click="refusalToAccept" v-if="taskStatus === '6'">拒绝验收</el-button>
                <el-button @click="statusChange(6)" v-if="taskStatus === '6'">验收通过</el-button>
            </template>
            <template v-else>
                <el-button v-if="['7'].includes(taskStatus)" @click="viewDescription">
                <el-button v-if="['7'].includes(taskStatus)" @click="viewDescription" color="#F2F3F5">
                    {{ gdStatusObj[taskStatus].reason }}
                </el-button>
                <el-button v-if="taskStatus === '0'" @click="addDescription">拒绝签收</el-button>
                <el-button v-if="taskStatus === '0'" @click="statusChange(1)">签收</el-button>
                <el-button v-if="taskStatus === '3'" @click="addDescription">驳回</el-button>
                <el-button v-if="taskStatus === '3'" @click="statusChange(4)">同意</el-button>
                <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 === '3'" @click="addDescription" color="#F2F3F5">驳回</el-button>
                <el-button v-if="taskStatus === '3'" @click="statusChange(4)" color="#4C34FF">同意</el-button>
            </template>
        </template>
@@ -234,7 +238,7 @@
<script setup>
import { computed, ref, onMounted } from 'vue'
import { ElMessage } from 'element-plus'
import { fieldRules, getDictLabel } from '@ztzf/utils'
import { fieldRules, flyVisual, getDictLabel } from '@ztzf/utils'
import { gdPatrolTaskRepublish, gdFlyerPageApi, gdPatrolTaskAuditApi } from './inspectionRequestApi'
import { gdWorkOrderFlowListApi, gdWorkOrderPageApi } from '../orderManage/orderManageApi'
import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi'
@@ -244,6 +248,8 @@
import RefuseOrderDialog from '@/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue'
import RefuseOrderDialog1 from '@/views/orderView/orderManage/inspectionRequest/RefuseOrderDialog1.vue'
import { Check } from '@element-plus/icons-vue'
import { queryAirById } from '@/api/zkxt'
import * as Cesium from 'cesium'
// 初始化表单数据
const initForm = () => ({
@@ -385,7 +391,7 @@
const processList = ref([])
// 加载时间线list
function loadList() {
    gdWorkOrderFlowListApi({ workOrderId: formData.value.id,type: '1' }).then(res => {
    gdWorkOrderFlowListApi({ workOrderId: formData.value.id, type: '1' }).then(res => {
        processList.value = res.data.data
    })
}
@@ -405,25 +411,74 @@
    }
}
let list = ref([])
let taskResultList = ref([])
// 获取成果列表
async function getList() {
async function getTaskResultList() {
    if (!formData.value?.id) return
    try {
        const res = await gdTaskResultListApi({ patrolTaskId: formData.value.id })
        list.value = res?.data?.data ?? []
        taskResultList.value = res?.data?.data ?? []
    } finally {
    }
}
// 获取航线详情
function getAirDetails() {
    queryAirById(formData.value.patrolRouteUrl).then(res => {
        const list = res.data.data.airlineWaypoints
        if (!list.length) return mapRef.value?.flyBoundary()
        const result = list.map(item => [Number(item.longitude), Number(item.latitude)]).flat()
        viewer.entities.add({
            polyline: {
                positions: Cesium.Cartesian3.fromDegreesArray(result),
                clampToGround: true,
                width: 3,
                material: Cesium.Color.RED,
            },
        })
        // 渲染起点(蓝色)
        const startPoint = list[0]
        viewer.entities.add({
            position: Cesium.Cartesian3.fromDegrees(Number(startPoint.longitude), Number(startPoint.latitude), startPoint.height || 0),
            point: {
                pixelSize: 12,
                color: Cesium.Color.BLUE,
                outlineColor: Cesium.Color.WHITE,
                outlineWidth: 2,
                heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
            },
        })
        // 渲染终点(红色)
        const endPoint = list[list.length - 1]
        viewer.entities.add({
            position: Cesium.Cartesian3.fromDegrees(Number(endPoint.longitude), Number(endPoint.latitude), endPoint.height || 0),
            point: {
                pixelSize: 12,
                color: Cesium.Color.RED,
                outlineColor: Cesium.Color.WHITE,
                outlineWidth: 2,
                heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
            },
        })
        flyVisual({
            positionsData: list.map(i => [Number(i.longitude), Number(i.latitude), i.height || 0]),
            viewer,
        })
    })
}
// 打开弹框
async function open({ mode = 'view', row } = {}) {
    dialogMode.value = mode
    formData.value = { ...initForm(), ...row }
    console.log(row)
    ;['6', '7', '8'].includes(row.taskStatus) && getList()
    ;['6', '7', '8'].includes(row.taskStatus) && getTaskResultList()
    loadList()
    initMap()
}
const readyMap = () => {
    // mapRef.value?.flyBoundary()
    getAirDetails()
}
// 初始化地图实例
@@ -453,7 +508,6 @@
            width: 100%;
            height: 423px;
        }
    }
    .processBox {
        width: 312px;
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
@@ -98,8 +98,7 @@
                    <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(row)">查看</el-link>
                            <!--                            <el-link @click="openForm('edit', row)">编辑</el-link>-->
                            <el-link  type="primary"  @click="viewDiaLogView(row)">查看</el-link>
                        </template>
                    </el-table-column>
                </el-table>
applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue
@@ -59,7 +59,7 @@
    <!-- </div> -->
     <template #footer>
            <el-button color="#F2F3F5" @click="isShowEditView = false">取消</el-button>
            <el-button class="save-btn" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="submit(ruleFormRef)">
            <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="submit(ruleFormRef)">
                保存
            </el-button>
        </template>
@@ -276,23 +276,23 @@
      }
    }
  }
 .content {
  padding: 20px;
  .view-table {
    width: 100%;
    border-collapse: collapse;
    border: 1px solid #EBEEF5;
    tr {
      &:not(:last-child) {
        border-bottom: 1px solid #EBEEF5;
      }
      td {
        padding: 12px 10px;
        &.label {
          width: 140px;
          text-align: right;
@@ -300,7 +300,7 @@
          // background-color: #F5F7FA;
          border-right: 1px solid #EBEEF5;
        }
        &.value {
          width: 180px;
          // color: #303133;
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -18,7 +18,7 @@
                        :type="index === processList.length - 1 ? 'success' : 'info'"
                        :color="activity.color"
                        :hollow="activity.hollow"
                        :timestamp="activity.flowDesc.split(' ')[1]"
                        :timestamp="activity.flowDesc.split(' ')[1] + activity.flowDesc.split(' ')[2]"
                    >
                        <div class="item-content">
                            <div>{{ activity.flowDesc.split(' ')[0] }}</div>
@@ -195,34 +195,43 @@
        <template #footer>
            <template v-if="requester">
                <template v-if="!suddenlyEdit">
                    <el-button
                        v-if="['11', '21', '23', '24', '25', '31', '60'].includes(gdStatus)"
                        @click="viewDescription"
                        color="#F2F3F5"
                    >
                        {{ gdStatusObj[gdStatus].reason }}
                    </el-button>
                    <el-button @click="addDescription" v-if="['20', '24', '25', '50'].includes(gdStatus)" color="#F2F3F5">
                        {{ gdStatus === '50' ? '结算' : '申请取消' }}
                    </el-button>
                    <el-button @click="requestModification" v-if="['20', '25'].includes(gdStatus)" color="#4C34FF">
                        申请修改
                    </el-button>
                </template>
                <el-button
                    v-if="['11'].includes(gdStatus) || suddenlyEdit || (!dialogReadonly && !formData.id)"
                    :loading="submitting"
                    :disabled="submitting"
                    color="#4C34FF"
                    @click="handleSubmit"
                >
                    {{ gdStatus === '11' || !gdStatus ? '发布' : '提交修改' }}
                </el-button>
                <el-button v-if="['11', '21', '23', '24', '25', '31', '60'].includes(gdStatus)" @click="viewDescription">
                    {{ gdStatusObj[gdStatus].reason }}
                </el-button>
                <el-button @click="addDescription" v-if="['20', '24', '25', '50'].includes(gdStatus)">
                    {{ gdStatus === '50' ? '结算' : '申请取消' }}
                </el-button>
                <el-button @click="requestModification" v-if="['20', '25'].includes(gdStatus)">申请修改</el-button>
            </template>
            <template v-else>
                <el-button v-if="['21', '23'].includes(gdStatus)" @click="viewDescription">
                <el-button v-if="['21', '23'].includes(gdStatus)" @click="viewDescription" color="#F2F3F5">
                    {{ gdStatusObj[gdStatus].reason }}
                </el-button>
                <el-button v-if="gdStatus === '10'" @click="addDescription">拒绝接单</el-button>
                <el-button v-if="gdStatus === '10'" @click="statusChange(1)">接单</el-button>
                <el-button v-if="gdStatus === '22'" @click="statusChange(8)">不同意修改</el-button>
                <el-button v-if="gdStatus === '22'" @click="statusChange(7)">同意修改</el-button>
                <el-button v-if="gdStatus === '21'" @click="addDescription">不同意取消</el-button>
                <el-button v-if="gdStatus === '21'" @click="statusChange(5)">同意取消</el-button>
                <el-button v-if="gdStatus === '30'" @click="addDescription">协商修改</el-button>
                <el-button v-if="gdStatus === '31'" @click="statusChange(10)">同意</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>
                <el-button v-if="gdStatus === '22'" @click="statusChange(7)" color="#4C34FF">同意修改</el-button>
                <el-button v-if="gdStatus === '21'" @click="addDescription" color="#F2F3F5">不同意取消</el-button>
                <el-button v-if="gdStatus === '21'" @click="statusChange(5)" color="#4C34FF">同意取消</el-button>
                <el-button v-if="gdStatus === '30'" @click="addDescription" color="#4C34FF">协商修改</el-button>
                <el-button v-if="gdStatus === '31'" @click="statusChange(10)" color="#4C34FF">同意</el-button>
            </template>
        </template>
@@ -292,13 +301,14 @@
const processList = ref([])
let viewPlane
const hasPatrolTaskList = computed(() => ['30', '40', '50', '60'].includes(String(formData.value.workOrderStatus)))
import droneIcon from '@/assets/images/orderView/orderManage/drone.png'
const gdStatusObj = {
    '10': { reason: '拒绝原因', operationType: '2' },
    '11': { reason: '拒绝原因' },
    '20': { reason: '取消原因', operationType: '3' },
    '21': { reason: '原因', operationType: '6' },
    '22': { reason: '驳回原因' },
    '22': { reason: '驳回原因', operationType: '8' },
    '23': { reason: '取消原因' },
    '24': { reason: '驳回原因', operationType: '3' },
    '25': { reason: '驳回原因', operationType: '3' },
@@ -332,9 +342,11 @@
    })
}
function requestModification() {
// 申请修改按钮
async function requestModification() {
    suddenlyEdit.value = true
    dialogMode.value = 'edit'
    await getDeviceList(true)
    nextTick(() => {
        syncSelection()
        viewPlane && viewer.entities.remove(viewPlane)
@@ -342,6 +354,7 @@
    })
}
// 填写说明弹框回调
function rejectSuccess() {
    visible.value = false
    emit('success')
@@ -373,8 +386,8 @@
}
// 获取推荐设备列表
async function getDeviceList() {
    const all = ['11'].includes(gdStatus.value)
async function getDeviceList(allList) {
    const all = allList || (['11'].includes(gdStatus.value) && requester.value)
    try {
        const str = [...pointList.value, pointList.value[0]].map(item => `${item.longitude} ${item.latitude}`).join(',')
        let geom = `POLYGON((${str}))`
@@ -440,7 +453,7 @@
// 加载时间线list
function loadList() {
    gdWorkOrderFlowListApi({ workOrderId: formData.value.id,type: '0' }).then(res => {
    gdWorkOrderFlowListApi({ workOrderId: formData.value.id, type: '0' }).then(res => {
        processList.value = res.data.data
    })
}
@@ -509,7 +522,7 @@
    })
}
// 同步关联场景
// 回显选中设备
function syncSelection() {
    if (!deviceTableRef.value) return
    deviceTableRef.value.clearSelection()
@@ -528,16 +541,15 @@
    })
}
// 渲染所有设备
function setMapDevice() {
    gdManageDeviceListApi().then(res => {
        renderingDevice(res?.data?.data || [])
    })
}
import droneIcon from '@/assets/images/orderView/orderManage/drone.png'
//  渲染
function renderingDevice(list) {
    // 渲染红点
    list.forEach(item => {
        const position = Cesium.Cartesian3.fromDegrees(item.longitude || 115.0, item.latitude || 27.11)
        viewer.entities.add({
@@ -556,8 +568,8 @@
                outlineColor: Cesium.Color.WHITE,
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
                pixelOffset: new Cesium.Cartesian2(0, -10)
            }
                pixelOffset: new Cesium.Cartesian2(0, -10),
            },
        })
    })
}
applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue
@@ -42,7 +42,7 @@
        <template #footer>
            <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
            <el-button
                class="save-btn"
                class=""
                color="#4C34FF"
                v-if="!dialogReadonly"
                :loading="submitting"
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
@@ -112,9 +112,9 @@
                    <el-table-column prop="createTime" show-overflow-tooltip label="工单创建时间" />
                    <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="handleDelete(row)" v-if="requester">删除</el-link>
                            <el-link  type="primary"  @click="openFormChange(row)">查看</el-link>
                            <!--<el-link  type="primary"  @click="openForm('edit', row)">编辑</el-link>-->
                            <el-link  type="primary"  @click="handleDelete(row)" v-if="requester">删除</el-link>
                        </template>
                    </el-table-column>
                </el-table>
@@ -236,7 +236,7 @@
function openFormChange(row) {
    dialogVisible.value = true
    nextTick(() => {
        const mode = ['11','25'].includes(row.workOrderStatus) && requester.value ? 'edit' : 'view'
        const mode = ['11'].includes(row.workOrderStatus) && requester.value ? 'edit' : 'view'
        dialogRef.value?.open({ mode, row })
    })
}
applications/task-work-order/src/views/orderView/orderManage/orderManage/orderManageApi.js
@@ -53,6 +53,6 @@
    return request({
        url: `/drone-gd/workOrder/gdWorkOrderFlow/list`,
        method: 'get',
        params,
        params:{ descs: 'create_time', ...params },
    })
}
uniapps/work-app/src/store/modules/location.js
@@ -121,7 +121,7 @@
    reportLocation(location) {
      // 这里可以添加位置信息上报到服务器的逻辑
      // 例如:api.uploadLocation(location)
      // console.log('位置上报:', location);
      console.log('位置上报:', location);
    },
    /**