diff --git a/package-lock.json b/package-lock.json
index 30b5d4e..14b0c0a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@xterm/addon-fit": "^0.11.0",
"@xterm/xterm": "^6.0.0",
"axios": "^1.6.5",
+ "dhtmlx-gantt": "^9.1.4",
"disable-devtool": "^0.3.9",
"echarts": "^6.0.0",
"jsencrypt": "^3.3.2",
@@ -19,6 +20,7 @@
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"vue": "^3.4.15",
+ "vue-draggable-plus": "^0.6.1",
"vue-router": "^4.2.5"
},
"devDependencies": {
@@ -1201,6 +1203,11 @@
"undici-types": "~6.21.0"
}
},
+ "node_modules/@types/sortablejs": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.9.tgz",
+ "integrity": "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ=="
+ },
"node_modules/@vicons/ionicons5": {
"version": "0.12.0",
"resolved": "https://registry.npmmirror.com/@vicons/ionicons5/-/ionicons5-0.12.0.tgz",
@@ -1555,6 +1562,11 @@
"node": ">=8"
}
},
+ "node_modules/dhtmlx-gantt": {
+ "version": "9.1.4",
+ "resolved": "https://registry.npmjs.org/dhtmlx-gantt/-/dhtmlx-gantt-9.1.4.tgz",
+ "integrity": "sha512-XCNA5QUiuV79Xq1ykNpH9LFNR2IVpDZMqnmBV6dsBeOkHyPMOpkyQ/gqAPCcK2GAvYHoN2nGAMYb2LldCWhMuQ=="
+ },
"node_modules/disable-devtool": {
"version": "0.3.9",
"resolved": "https://registry.npmmirror.com/disable-devtool/-/disable-devtool-0.3.9.tgz",
@@ -2392,6 +2404,22 @@
}
}
},
+ "node_modules/vue-draggable-plus": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/vue-draggable-plus/-/vue-draggable-plus-0.6.1.tgz",
+ "integrity": "sha512-FbtQ/fuoixiOfTZzG3yoPl4JAo9HJXRHmBQZFB9x2NYCh6pq0TomHf7g5MUmpaDYv+LU2n6BPq2YN9sBO+FbIg==",
+ "dependencies": {
+ "@types/sortablejs": "^1.15.8"
+ },
+ "peerDependencies": {
+ "@types/sortablejs": "^1.15.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
"node_modules/vue-router": {
"version": "4.6.4",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.6.4.tgz",
diff --git a/src/router/index.ts b/src/router/index.ts
index 5ceceab..711c57d 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -116,6 +116,19 @@ const routes: RouteRecordRaw[] = [
component: () => import('@/views/org/post/index.vue'),
meta: { title: '岗位管理', icon: 'IdCardOutline' }
},
+ // 项目管理
+ {
+ path: 'biz/orderProject',
+ name: 'OrderProject',
+ component: () => import('@/views/biz/orderProject/index.vue'),
+ meta: { title: '项目管理', icon: 'PersonOutline' }
+ },
+ {
+ path: 'biz/orderProject/gantt',
+ name: 'OrderProjectGantt',
+ component: () => import('@/views/biz/orderProject/components/GanttSchedule.vue'),
+ meta: { title: '甘特图排产', icon: 'CalendarOutline', activeMenu: '/biz/orderProject' }
+ },
//运营管理
{
path: 'biz/product',
diff --git a/src/views/biz/orderProject/components/GanttSchedule.vue b/src/views/biz/orderProject/components/GanttSchedule.vue
index a9bb8be..e476c08 100644
--- a/src/views/biz/orderProject/components/GanttSchedule.vue
+++ b/src/views/biz/orderProject/components/GanttSchedule.vue
@@ -1,57 +1,66 @@
-
+
\ No newline at end of file
diff --git a/src/views/biz/orderProject/index.vue b/src/views/biz/orderProject/index.vue
index 914de76..c8d7bc2 100644
--- a/src/views/biz/orderProject/index.vue
+++ b/src/views/biz/orderProject/index.vue
@@ -214,13 +214,6 @@
关闭
-
-
-
@@ -231,11 +224,13 @@ import { SearchOutline, RefreshOutline, AddOutline, TrashOutline, CreateOutline,
import { orderProjectApi, type OrderProject, type KingdeePrdMo, type KingdeeProcessRoute } from '@/api/orderProject'
import { dictDataApi } from '@/api/org'
import { useUserStore } from '@/stores/user'
-import GanttSchedule from './components/GanttSchedule.vue'
+
+import { useRouter } from 'vue-router'
const message = useMessage()
const dialog = useDialog()
const userStore = useUserStore()
+const router = useRouter()
const hasPermission = (permission: string) => userStore.hasPermission(permission)
// 搜索表单
@@ -264,7 +259,6 @@ const importModalVisible = ref(false)
const kingdeeModalVisible = ref(false)
const kingdeeModalTitle = ref('金蝶生产订单')
const kingdeeLoading = ref(false)
-const ganttModalVisible = ref(false)
/** 主表行:工序仅存 processRoutes,避免 children 触发树形重复行 */
type KingdeeMoTableRow = Omit & { processRoutes: KingdeeProcessRoute[] }
@@ -647,19 +641,10 @@ async function handleSubmit() {
// 甘特图排产
function handleGanttSchedule() {
- ganttModalVisible.value = true
-}
-
-// 接收甘特图拖拽更新的时间
-function handleGanttTimeUpdate(payload: { id: string; type: string; item: any; start: string; end: string }) {
- const { type, item, start, end } = payload
- if (type === 'mo') {
- item.planStartTime = start
- item.planFinishTime = end
- } else if (type === 'route') {
- item.planStartTime = start
- item.planFinishTime = end
- }
+ // 将待排产数据存入 sessionStorage
+ sessionStorage.setItem('gantt_schedule_data', JSON.stringify(kingdeeTableData.value))
+ // 跳转到甘特图排产独立页面
+ router.push('/biz/orderProject/gantt')
}
// 金蝶预生产查询