From f07efb36894070d4cfcb77ec27ffd017da0bdf54 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 31 Jan 2026 14:34:30 +0800
Subject: [PATCH] Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web
---
applications/drone-command/src/axios.js | 20 +-
applications/drone-command/src/store/modules/user.js | 7
applications/task-work-order/src/store/modules/user.js | 7
applications/drone-command/src/page/index/top/index.vue | 3
applications/drone-command/env/.env.production | 22 +-
applications/drone-command/env/.env.development | 34 ++---
applications/task-work-order/src/axios.js | 20 +-
applications/task-work-order/src/permission.js | 3
applications/task-work-order/src/page/index/top/index.vue | 3
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue | 200 +++++++++++++++++++++++++++++----
applications/drone-command/src/permission.js | 3
11 files changed, 234 insertions(+), 88 deletions(-)
diff --git a/applications/drone-command/env/.env.development b/applications/drone-command/env/.env.development
index 1f6d35a..39b17e8 100644
--- a/applications/drone-command/env/.env.development
+++ b/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'
diff --git a/applications/drone-command/env/.env.production b/applications/drone-command/env/.env.production
index 0e9c292..02a980f 100644
--- a/applications/drone-command/env/.env.production
+++ b/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'
diff --git a/applications/drone-command/src/axios.js b/applications/drone-command/src/axios.js
index e5f687f..2a9d292 100644
--- a/applications/drone-command/src/axios.js
+++ b/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));
});
}
diff --git a/applications/drone-command/src/page/index/top/index.vue b/applications/drone-command/src/page/index/top/index.vue
index 22d4a43..1423d34 100644
--- a/applications/drone-command/src/page/index/top/index.vue
+++ b/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`)
})
})
},
diff --git a/applications/drone-command/src/permission.js b/applications/drone-command/src/permission.js
index a0634b2..5062baa 100644
--- a/applications/drone-command/src/permission.js
+++ b/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`)
}
}
})
diff --git a/applications/drone-command/src/store/modules/user.js b/applications/drone-command/src/store/modules/user.js
index 3f6ba06..af8714f 100644
--- a/applications/drone-command/src/store/modules/user.js
+++ b/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 => {
diff --git a/applications/task-work-order/src/axios.js b/applications/task-work-order/src/axios.js
index eb97e97..1a6e862 100644
--- a/applications/task-work-order/src/axios.js
+++ b/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))
})
}
diff --git a/applications/task-work-order/src/page/index/top/index.vue b/applications/task-work-order/src/page/index/top/index.vue
index 40cb024..89f38f1 100644
--- a/applications/task-work-order/src/page/index/top/index.vue
+++ b/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`)
})
})
},
diff --git a/applications/task-work-order/src/permission.js b/applications/task-work-order/src/permission.js
index 8bbca05..01156ea 100644
--- a/applications/task-work-order/src/permission.js
+++ b/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`)
}
}
})
diff --git a/applications/task-work-order/src/store/modules/user.js b/applications/task-work-order/src/store/modules/user.js
index d24ebf6..ca9f16c 100644
--- a/applications/task-work-order/src/store/modules/user.js
+++ b/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 => {
diff --git a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
index cb97552..a04f341 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
+++ b/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;
}
}
}
--
Gitblit v1.9.3