applications/drone-command/env/.env.development
@@ -1,41 +1,31 @@ ### # @Author : yuan # @Date : 2026-01-07 14:58:30 # @LastEditors : yuan # @LastEditTime : 2026-01-30 09:29:25 # @FilePath : \applications\drone-command\env\.env.development # @Description : # Copyright 2026 OBKoro1, All Rights Reserved. # 2026-01-07 14:58:30 ### NODE_ENV = 'development' NODE_ENV='development' #开发环境配置 VITE_APP_ENV = 'development' VITE_APP_ENV='development' #开发环境代理地址(推荐本地新建文件 .env.development.local 来进行覆盖) # VITE_APP_URL = https://wrj.shuixiongit.com/api VITE_APP_URL= http://192.168.1.168 # VITE_APP_URL=https://wrj.shuixiongit.com/api VITE_APP_URL=http://192.168.1.168 #新大屏地址 VITE_APP_DASHBOARD_URL = 'https://wrj.shuixiongit.com/command-center-dashboard/' VITE_APP_DASHBOARD_URL='https://wrj.shuixiongit.com/command-center-dashboard/' # 域名 VITE_APP_AREA_NAME = https://wrj.shuixiongit.com VITE_APP_AREA_NAME=https://wrj.shuixiongit.com # ws地址 VITE_APP_WS_API_URL = wss://wrj.shuixiongit.com/drone-wss/api/v1/ws VITE_APP_WS_API_URL=wss://wrj.shuixiongit.com/drone-wss/api/v1/ws # 航线文件地址 VITE_APP_AIRLINE_URL = https://wrj.shuixiongit.com/minio/cloud-bucket VITE_APP_AIRLINE_URL=https://wrj.shuixiongit.com/minio/cloud-bucket # 地形存放 VITE_APP_TERRAIN_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_c_uas/ VITE_APP_TERRAIN_URL=https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_c_uas/ # 行政区划存放地址 VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region VITE_APP_REGION_URL=https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region # 算法仓库图片地址 VITE_APP_PICTURE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket VITE_APP_PICTURE_URL=https://wrj.shuixiongit.com/aiskyminio/cloud-bucket # 设备ip地址 VITE_APP_DEVICE_IP = '139.196.74.78:1883' VITE_APP_DEVICE_IP='139.196.74.78:1883' applications/drone-command/env/.env.production
@@ -1,32 +1,32 @@ NODE_ENV = 'production' NODE_ENV='production' #生产环境配置 VITE_APP_ENV = 'production' VITE_APP_ENV='production' # 服务地址 VITE_APP_URL = https://aisky.org.cn/api VITE_APP_URL=https://aisky.org.cn/api # 域名 VITE_APP_AREA_NAME = https://aisky.org.cn VITE_APP_AREA_NAME=https://aisky.org.cn #新大屏地址 VITE_APP_DASHBOARD_URL = 'https://aisky.org.cn/command-center-dashboard/' VITE_APP_DASHBOARD_URL='https://aisky.org.cn/command-center-dashboard/' # ws地址 VITE_APP_WS_API_URL = wss://aisky.org.cn/drone-wss/api/v1/ws VITE_APP_WS_API_URL=wss://aisky.org.cn/drone-wss/api/v1/ws # 航线文件地址 VITE_APP_AIRLINE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket VITE_APP_AIRLINE_URL=https://wrj.shuixiongit.com/aiskyminio/cloud-bucket # 图片存放地址 VITE_APP_TERRAIN_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_terrain/ VITE_APP_TERRAIN_URL=https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_terrain/ # 算法仓库图片地址 VITE_APP_PICTURE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket VITE_APP_PICTURE_URL=https://wrj.shuixiongit.com/aiskyminio/cloud-bucket # 行政区划存放地址 VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region VITE_APP_REGION_URL=https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region # 设备ip地址 VITE_APP_DEVICE_IP = '101.132.85.201:1883' VITE_APP_DEVICE_IP='101.132.85.201:1883' applications/drone-command/src/axios.js
@@ -151,16 +151,16 @@ removeRefreshToken(); const env = import.meta.env.VITE_APP_ENV; // 重定向到登录页 // store.dispatch('FedLogOut').then(() => router.push({ // path: '/login' // })); env === 'development' ? store.dispatch('FedLogOut').then(() => router.push({ path: '/login', }) ) : store.dispatch('FedLogOut').then(() => window.location.replace(`${adminUrl}#/login`)); store.dispatch('FedLogOut').then(() => router.push({ path: '/login' })); // env === 'development' // ? store.dispatch('FedLogOut').then(() => // router.push({ // path: '/login', // }) // ) // : store.dispatch('FedLogOut').then(() => window.location.replace(`${adminUrl}#/login`)); return Promise.reject(new Error(message)); }); } applications/drone-command/src/page/index/top/index.vue
@@ -95,7 +95,8 @@ this.$store.dispatch('LogOut').then(() => { const env = import.meta.env.VITE_APP_ENV const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL env === 'development' ? this.$router.push({ path: '/login' }) : window.location.replace(`${adminUrl}#/login`) this.$router.push({ path: '/login' }) // env === 'development' ? this.$router.push({ path: '/login' }) : window.location.replace(`${adminUrl}#/login`) }) }) }, applications/drone-command/src/permission.js
@@ -121,7 +121,8 @@ if (meta.isAuth === false) { next() } else { env === 'development' ? next('/login') : window.location.replace(`${adminUrl}#/login`) next('/login') // env === 'development' ? next('/login') : window.location.replace(`${adminUrl}#/login`) } } }) applications/drone-command/src/store/modules/user.js
@@ -274,9 +274,10 @@ dispatch('LogOut').then(()=>{ const env = import.meta.env.VITE_APP_ENV const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL env === 'development' ? window.location.href = "/drone-command/login" : window.location.replace(`${adminUrl}#/login`) window.location.href = "/drone-command/login" // env === 'development' // ? window.location.href = "/drone-command/login" // : window.location.replace(`${adminUrl}#/login`) }) } return new Promise(resolve => { applications/task-work-order/src/axios.js
@@ -153,16 +153,16 @@ removeRefreshToken() const env = import.meta.env.VITE_APP_ENV // 重定向到登录页 // store.dispatch('FedLogOut').then(() => router.push({ // path: '/login' // })); env === 'development' ? store.dispatch('FedLogOut').then(() => router.push({ path: '/login', }) ) : store.dispatch('FedLogOut').then(() => window.location.replace(`${adminUrl}#/login`)) store.dispatch('FedLogOut').then(() => router.push({ path: '/login' })); // env === 'development' // ? store.dispatch('FedLogOut').then(() => // router.push({ // path: '/login', // }) // ) // : store.dispatch('FedLogOut').then(() => window.location.replace(`${adminUrl}#/login`)) return Promise.reject(new Error(message)) }) } applications/task-work-order/src/page/index/top/index.vue
@@ -89,7 +89,8 @@ this.$store.dispatch('LogOut').then(() => { const env = import.meta.env.VITE_APP_ENV const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL env === 'development' ? this.$router.push({ path: '/login' }):window.location.replace(`${adminUrl}#/login`) this.$router.push({ path: '/login' }) // env === 'development' ? this.$router.push({ path: '/login' }):window.location.replace(`${adminUrl}#/login`) }) }) }, applications/task-work-order/src/permission.js
@@ -120,7 +120,8 @@ if (meta.isAuth === false) { next() } else { env === 'development' ? next('/login') : window.location.replace(`${adminUrl}#/login`) next('/login') // env === 'development' ? next('/login') : window.location.replace(`${adminUrl}#/login`) } } }) applications/task-work-order/src/store/modules/user.js
@@ -262,9 +262,10 @@ dispatch('LogOut').then(() => { const env = import.meta.env.VITE_APP_ENV const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL env === 'development' ? (window.location.href = '/task-work-order/login') : window.location.replace(`${adminUrl}#/login`) (window.location.href = '/task-work-order/login') // env === 'development' // ? (window.location.href = '/task-work-order/login') // : window.location.replace(`${adminUrl}#/login`) }) } return new Promise(resolve => { applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -10,22 +10,42 @@ > <div class="content" style="display: flex"> <div class="processBox" v-if="dialogMode !== 'add' && processList.length"> <el-timeline class="gd-timeline"> <el-timeline-item v-for="(activity, index) in processList" :key="index" :icon="Check" :type="index === processList.length - 1 ? 'success' : 'info'" :color="activity.color" :hollow="activity.hollow" :timestamp="activity.createTime" > <div class="item-content"> <div>{{ activity.operator }}</div> <div class="flowName">{{ activity.flowName }}</div> <div class="timeline-wrapper"> <div v-for="(stage, stageIndex) in processList" :key="stageIndex" class="stage-group"> <!-- 大节点 Stage Node --> <div class="stage-node"> <div class="stage-icon" :class="{ reached: stage.reached }"> <el-icon v-if="stage.reached"><Check /></el-icon> <span v-else class="stage-index">{{ stageIndex + 1 }}</span> </div> <span class="stage-name">{{ stage.stageName }}</span> </div> </el-timeline-item> </el-timeline> <!-- 小节点 Child Nodes --> <div class="child-list" v-if="stage.child && stage.child.length"> <template v-for="(child, childIndex) in stage.child.filter(c => c.reached)"> <div v-if="child.reached" :key="childIndex" class="child-node"> <div class="child-left"> <span class="child-status">{{ child.statusName }}</span> </div> <div class="child-dot"></div> <div class="child-right"> <span class="child-operator">{{ child.operator || '-' }}</span> <span class="child-time">{{ child.createTime || '-' }}</span> </div> </div> </template> </div> <!-- 连接线 --> <div class="connector-line" v-if="stageIndex < processList.length - 1" :class="{ reached: stage.reached }" ></div> </div> </div> </div> <div class="leftBox"> <div v-if="dialogReadonly"> @@ -334,13 +354,13 @@ const gdStatusObj = { '10': { reason: '拒单原因', operationType: '2', title: '拒绝接单' }, '11': { reason: '拒单原因' }, '20': { reason: '原因', operationType: '3',title:'申请取消' }, '20': { reason: '原因', operationType: '3', title: '申请取消' }, '21': { reason: '取消原因' }, '23': { reason: '取消原因' }, '30': { reason: '修改原因', operationType: '9',title:'协商修改' }, '30': { reason: '修改原因', operationType: '9', title: '协商修改' }, '31': { reason: '修改原因' }, '40': { reason: '' }, '50': { reason: '情况说明', operationType: '11',title:'结算' }, '50': { reason: '情况说明', operationType: '11', title: '结算' }, '60': { reason: '情况说明' }, } @@ -394,7 +414,7 @@ row: formData.value, type: gdStatusObj[gdStatus.value].operationType, formLabel: gdStatusObj[gdStatus.value].reason, title: gdStatusObj[gdStatus.value]?.title || '新增' title: gdStatusObj[gdStatus.value]?.title || '新增', }) }) } @@ -687,18 +707,148 @@ } .processBox { padding: 24px 0; padding: 24px 16px; width: 312px; border: 1px solid #e4e4e4; border-radius: 8px; overflow: auto; background: #fff; .item-content { .timeline-wrapper { padding-left: 100px; position: relative; .flowName { width: 80px; } .stage-group { position: relative; } // 大节点 - Stage Node .stage-node { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; .stage-icon { width: 28px; height: 28px; border-radius: 50%; background: #e0e0e0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 14px; font-weight: 600; flex-shrink: 0; position: relative; z-index: 2; &.reached { background: #1a1a2e; } .el-icon { font-size: 16px; } .stage-index { font-size: 12px; } } .stage-name { width: 70px; text-align: right; position: absolute; left: -120px; top: 0px; left: -80px; font-family: Roboto, Roboto; font-weight: bold; font-size: 16px; color: rgba(0,0,0,0.85); } } // 小节点 - Child Nodes .child-list { position: relative; left: -52px; } .child-node { display: flex; align-items: flex-start; position: relative; &:last-child::before { bottom: 50%; } .child-left { width: 100px; flex-shrink: 0; text-align: right; padding-right: 20px; font-family: Source Han Sans CN, Source Han Sans CN; font-weight: 400; font-size: 14px; color: rgba(0,0,0,0.85); .child-status { white-space: nowrap; } } .child-dot { width: 12px; height: 12px; border-radius: 50%; background: #1a1a2e; flex-shrink: 0; position: relative; z-index: 2; margin-top: 4px; } .child-right { flex: 1; padding-left: 12px; display: flex; flex-direction: column; gap: 2px; .child-operator { font-family: Source Han Sans CN, Source Han Sans CN; font-weight: 400; font-size: 14px; color: rgba(0,0,0,0.85); } .child-time { white-space: nowrap; font-family: Source Han Sans CN, Source Han Sans CN; font-weight: 400; font-size: 14px; color: rgba(0,0,0,0.45); } } } // 连接线 .connector-line { position: absolute; left: 13px; width: 2px; height: 100%; background: #e0e0e0; top: 28px; z-index: 1; &.reached { background: #1a1a2e; } } }