diff --git a/package.json b/package.json index bbf93b2..4158236 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,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", diff --git a/src/api/orderProject.ts b/src/api/orderProject.ts new file mode 100644 index 0000000..1db6bc2 --- /dev/null +++ b/src/api/orderProject.ts @@ -0,0 +1,142 @@ +import { request } from '@/utils/request' + +// 项目表 类型定义 +export interface OrderProject { + id?: number + + name?: string + + code?: string + + mainCode?: string + + mainName?: string + + quantity?: string + + source?: number + + prodType?: number + + sourceId?: string + + bomVersion?: string + + specModel?: string + + unit?: string + + customerName?: string + + version?: string + + salesDept?: string + + parentId?: number + + deliveryTime?: string + + status?: number + + planFinishTime?: string + + createTime?: string + + createBy?: string + + changeTime?: string + + changeBy?: string + +} + +/** 金蝶生产订单(树父节点) */ +export interface KingdeePrdMo { + productionOrderNo: string + billNo: string + workShopName: string + materialCode: string + quantity: number | null + specModel: string | null + unit: string | null + materialName: string | null + routingNo: string | null + planStartTime: string | null + planFinishTime: string | null + pickMtrlStatus: string | null + children: KingdeeProcessRoute[] +} + +/** 金蝶工艺路线工序(树子节点) */ +export interface KingdeeProcessRoute { + operNumber: number | null + workCenterName: string | null + departmentName: string | null + processProperty: string | null + operDescription: string | null + activityUnit: string | null + optCtrlCodeName: string | null + activityQty: number | null + planStartTime: string | null + planFinishTime: string | null +} + +// 项目表 API +export const orderProjectApi = { + // 分页查询 + page(params: { page: number; pageSize: number; id?: number; name?: string; status?: number }) { + return request({ url: '/biz/orderProject/page', method: 'get', params }) + }, + + // 获取详情 + detail(id: string) { + return request({ url: `/biz/orderProject/${id}`, method: 'get' }) + }, + + // 新增 + create(data: OrderProject) { + return request({ url: '/biz/orderProject', method: 'post', data }) + }, + + // 修改 + update(data: OrderProject) { + return request({ url: '/biz/orderProject', method: 'put', data }) + }, + + // 删除 + delete(ids: string[]) { + return request({ url: `/biz/orderProject/${ids.join(',')}`, method: 'delete' }) + }, + + // 导出 + export(params?: { ids?: string[]; id?: number; name?: string; status?: number }) { + const p: Record = {} + if (params?.ids?.length) p.ids = params.ids.join(',') + if (params?.id !== undefined && params?.id !== null) p.id = params.id + if (params?.name !== undefined && params?.name !== null) p.name = params.name + if (params?.status !== undefined && params?.status !== null) p.status = params.status + return request({ url: `/biz/orderProject/export`, method: 'get', params: p, responseType: 'blob' }) + }, + + // 导入 + importData(file: File) { + const formData = new FormData() + formData.append('file', file) + return request<{ success: number; fail: number; errors: string[] }>({ + url: `/biz/orderProject/import`, + method: 'post', + data: formData, + headers: { 'Content-Type': 'multipart/form-data' } + }) + }, + + // 下载导入模板 + downloadTemplate() { + return request({ url: `/biz/orderProject/template`, method: 'get', responseType: 'blob' }) + }, + + // 查询金蝶生产订单 + getKingdeeOrder(id: number) { + return request({ url: `/biz/orderProject/kingdee/order/${id}`, method: 'get' }) + }, +} diff --git a/src/views/biz/orderProject/components/GanttSchedule.vue b/src/views/biz/orderProject/components/GanttSchedule.vue new file mode 100644 index 0000000..a9bb8be --- /dev/null +++ b/src/views/biz/orderProject/components/GanttSchedule.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file diff --git a/src/views/biz/orderProject/index.vue b/src/views/biz/orderProject/index.vue new file mode 100644 index 0000000..914de76 --- /dev/null +++ b/src/views/biz/orderProject/index.vue @@ -0,0 +1,872 @@ + + + + + diff --git a/vite.config.ts b/vite.config.ts index ea60498..c74694c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -16,11 +16,12 @@ export default defineConfig({ emptyOutDir: true }, server: { - host: "192.168.5.231", + // host: "192.168.5.231", + host: true, port: 3000, proxy: { '/api': { - target:'http://192.168.6.107:8080', //'http://192.168.5.230:8888', + target:'http://localhost:8888', //'http://192.168.5.230:8888', //target:'http://192.168.5.230:8888', changeOrigin: true },