diff --git a/klp-ui/package.json b/klp-ui/package.json index 4946dbd0..e3a14843 100644 --- a/klp-ui/package.json +++ b/klp-ui/package.json @@ -53,6 +53,7 @@ "js-cookie": "3.0.1", "jsbarcode": "^3.12.1", "jsencrypt": "3.0.0-rc.1", + "konva": "^10.0.2", "mqtt": "^5.13.3", "nprogress": "0.2.0", "print-js": "^1.6.0", @@ -66,6 +67,7 @@ "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", "vue-flv-player": "^1.0.3", + "vue-konva": "^2.1.7", "vue-meta": "2.4.0", "vue-router": "3.4.9", "vuedraggable": "2.24.3", diff --git a/klp-ui/src/api/l2/track.js b/klp-ui/src/api/l2/track.js new file mode 100644 index 00000000..94cf383c --- /dev/null +++ b/klp-ui/src/api/l2/track.js @@ -0,0 +1,95 @@ +import axios from 'axios' + +export default function createFetch(url) { + const l2Request = axios.create({ + baseURL: url, + headers: { + 'Content-Type': 'application/json' + }, + timeout: 10000 + }) + + l2Request.interceptors.response.use(response => { + return response.data + }) + + return { + adjustPosition: (data) => l2Request({ + method: 'put', + url: '/api/track/position', + data + }), + operateMat: (data) => l2Request({ + method: 'put', + url: '/api/track/manual/operate/mat', + data + }), + getBackData: (params) => l2Request({ + method: 'get', + url: '/api/track/return/info', + params + }), + getTrackMatPosition: () => l2Request({ + method: 'get', + url: '/api/track/coil/position', + }) + } +} +/** + * 手动调整钢卷位置 + * data.targetPos 目标位置 必须 + * data.currentPos 当前位置 必须 + */ +export function adjustPosition(data) { + return l2Request({ + method: 'put', + url: '/api/track/position', + data + }) +} + +/** + * 手动操作钢卷 + * { + "porIdx": 0, // 必须 + "trIdx": 0, // 必须 + "planId": "", // 必须 + "entryMatId": "", // 必须 + "planNo": "", // 必须 + "operation": "", // 必须 + "returnMatId": "", // 必须 + "returnWeight": 0, // 必须 + "returnRemark": "", // 必须 + "coilLength": 0 // 必须 + } + */ +export function operateMat(data) { + return l2Request({ + method: 'put', + url: '/api/track/manual/operate/mat', + data + }) +} + +/** + * 获取回退数据 + * params.posIdx 必须 + */ +export function getBackData(params) { + return l2Request({ + method: 'get', + url: '/api/track/return/info', + params + }) +} + +/** + * 获取跟踪带钢位置 + */ +export function getTrackMatPosition() { + return l2Request({ + method: 'get', + url: '/api/track/coil/position', + }) +} + diff --git a/klp-ui/src/components/KLPUI/KLPList/index.vue b/klp-ui/src/components/KLPUI/KLPList/index.vue index 50dcaa09..74a81b5c 100644 --- a/klp-ui/src/components/KLPUI/KLPList/index.vue +++ b/klp-ui/src/components/KLPUI/KLPList/index.vue @@ -1,35 +1,103 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/klp-ui/src/layout/components/Navbar.vue b/klp-ui/src/layout/components/Navbar.vue index 65c9bc08..0c95c3a0 100644 --- a/klp-ui/src/layout/components/Navbar.vue +++ b/klp-ui/src/layout/components/Navbar.vue @@ -159,7 +159,7 @@ export default { height: 100%; font-size: 18px; // 金属风格文字色 - color: #ddd; + color: #111; vertical-align: text-bottom; transition: all 0.2s ease; diff --git a/klp-ui/src/main.js b/klp-ui/src/main.js index 5c8dc618..22397bec 100644 --- a/klp-ui/src/main.js +++ b/klp-ui/src/main.js @@ -1,6 +1,7 @@ import Vue from 'vue' import Cookies from 'js-cookie' +import VueKonva from 'vue-konva'; import Element from 'element-ui' import './assets/styles/element-variables.scss' @@ -67,6 +68,7 @@ Vue.use(vueFlvPlayer) Vue.use(directive) Vue.use(plugins) Vue.use(VueMeta) +Vue.use(VueKonva); DictData.install() /** diff --git a/klp-ui/src/views/finance/components/PayTable.vue b/klp-ui/src/views/finance/components/PayTable.vue new file mode 100644 index 00000000..6c1f7c98 --- /dev/null +++ b/klp-ui/src/views/finance/components/PayTable.vue @@ -0,0 +1,394 @@ + + + diff --git a/klp-ui/src/views/finance/components/ReceiveTable.vue b/klp-ui/src/views/finance/components/ReceiveTable.vue new file mode 100644 index 00000000..f41cdbb3 --- /dev/null +++ b/klp-ui/src/views/finance/components/ReceiveTable.vue @@ -0,0 +1,394 @@ + + + diff --git a/klp-ui/src/views/finance/order/index.vue b/klp-ui/src/views/finance/order/index.vue index a1190991..f2e080da 100644 --- a/klp-ui/src/views/finance/order/index.vue +++ b/klp-ui/src/views/finance/order/index.vue @@ -4,43 +4,40 @@
- + - - - - - + + + + + + + + + + + + + - - + +
@@ -72,44 +69,14 @@ - - - - - - - - - - - - +
+ +
- - - - - - - - - - - - +
+ +
@@ -136,13 +103,18 @@ import { listFinancialDocument } from "@/api/finance/financialDocument"; import OrderDetailList from '@/views/wms/order/panels/detail.vue' import klpList from "@/components/KLPUI/KLPList/index.vue"; // 引入klp-list组件 +import ReceiveTable from '../components/ReceiveTable.vue'; +import PayTable from '../components/PayTable.vue'; export default { name: "Order", components: { OrderDetailList, - klpList // 注册klp-list组件 + klpList, // 注册klp-list组件 + ReceiveTable, + PayTable }, + dicts: ['order_status'], data() { return { activeTab: "orderDetail", @@ -163,7 +135,7 @@ export default { }, methods: { handleQuery() { - this.queryParams.pageNum = 1; + this.queryParams.pageNum = 1; this.getList(); }, getList() { @@ -181,12 +153,12 @@ export default { this.currentOrder = null; return; } - + if (this.rightLoading) { this.$message.warning('请等待当前订单加载完成'); return; } - + this.currentOrder = selectedItem; this.fetchData(selectedItem.orderId); }, @@ -210,7 +182,7 @@ export default { listPayable({ orderId, pageSize: 1000 }), listFinancialDocument({ orderId, pageSize: 1000 }) ]); - + this.currentOrder = { ...this.currentOrder, details: orderDetailRes.rows, diff --git a/klp-ui/src/views/finance/pay/index.vue b/klp-ui/src/views/finance/pay/index.vue index 6b936701..b3d0d50c 100644 --- a/klp-ui/src/views/finance/pay/index.vue +++ b/klp-ui/src/views/finance/pay/index.vue @@ -1,373 +1,16 @@ diff --git a/klp-ui/src/views/finance/receive/index.vue b/klp-ui/src/views/finance/receive/index.vue index 2c10ca72..04697d84 100644 --- a/klp-ui/src/views/finance/receive/index.vue +++ b/klp-ui/src/views/finance/receive/index.vue @@ -1,373 +1,16 @@ diff --git a/klp-ui/src/views/lines/components/knovaStage.vue b/klp-ui/src/views/lines/components/knovaStage.vue new file mode 100644 index 00000000..cd50a7ea --- /dev/null +++ b/klp-ui/src/views/lines/components/knovaStage.vue @@ -0,0 +1,119 @@ + + + diff --git a/klp-ui/src/views/lines/rects.js b/klp-ui/src/views/lines/rects.js new file mode 100644 index 00000000..ecf8b9d5 --- /dev/null +++ b/klp-ui/src/views/lines/rects.js @@ -0,0 +1,356 @@ +export const rects = [ + // 左侧:开卷机 + { + id: 'POR1', + config: { + x: 40, + y: 110, + width: 200, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '1#开卷机[POR1]' } + }, + { + id: 'POR2', + config: { + x: 40, + y: 220, + width: 200, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '2#开卷机[POR2]' } + }, + + // 中上部:焊机、入口活套 + { + id: 'WELDER', + config: { + x: 300, + y: 30, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '焊机[WELDER]' } + }, + { + id: 'ENL1', + config: { + x: 300, + y: 110, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '入口活套1[ENL1]' } + }, + { + id: 'ENL2', + config: { + x: 300, + y: 160, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '入口活套2[ENL2]' } + }, + + // 中下部:清洗段 + { + id: 'CLEAN', + config: { + x: 300, + y: 240, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '清洗段[CLEAN]' } + }, + + // 右侧上:退火炉1-4 + { + id: 'FUR1', + config: { + x: 600, + y: 70, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '退火炉[FUR1]' } + }, + { + id: 'FUR2', + config: { + x: 600, + y: 120, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '退火炉[FUR2]' } + }, + { + id: 'FUR3', + config: { + x: 600, + y: 170, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '退火炉[FUR3]' } + }, + { + id: 'FUR4', + config: { + x: 600, + y: 220, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '退火炉[FUR4]' } + }, + + // 右侧中:光整机 + { + id: 'TM', + config: { + x: 600, + y: 400, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '光整机[TM]' } + }, + + // 右侧下:拉矫机 + { + id: 'TL', + config: { + x: 600, + y: 480, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '拉矫机[TL]' } + }, + + // 中下:后处理 + { + id: 'COAT', + config: { + x: 300, + y: 360, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '后处理[COAT]' } + }, + + // 中下:出口活套 + { + id: 'CXL1', + config: { + x: 300, + y: 440, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '出口活套[CXL1]' } + }, + { + id: 'CXL2', + config: { + x: 300, + y: 490, + width: 220, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '出口活套[CXL2]' } + }, + + // 左下:卷取机、称重位 + { + id: 'TR', + config: { + x: 40, + y: 380, + width: 200, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '卷取机[TR]' } + }, + { + id: 'WEIT', + config: { + x: 40, + y: 460, + width: 200, + height: 50, + fill: '#d3d3d3', + stroke: 'black', + strokeWidth: 1, + cursor: 'pointer' + }, + textConfig: { text: '称重位[WEIT]' } + } +] + +export const lines = [ + // 1#开卷机 → 焊机 + { + id: 'line-por1-welder', + config: { + points: [ + 40 + 200, 110 + 25, + 40 + 200 + 30, 110 + 25, + 40 + 200 + 30, 30 + 25, + 300, 30 + 25 + ], + stroke: '#686868', + strokeWidth: 2, + lineCap: 'round', + lineJoin: 'round' + } + }, + // 2#开卷机 → 焊机 + { + id: 'line-por2-welder', + config: { + points: [ + 40 + 200, 220 + 25, + 40 + 200 + 30, 220 + 25, + 40 + 200 + 30, 30 + 25, + 300, 30 + 25 + ], + stroke: '#686868', + strokeWidth: 2, + lineCap: 'round', + lineJoin: 'round' + } + }, + // 清洗段 → 退火炉1 + { + id: 'line-clean-fur1', + config: { + points: [ + 300 + 220, 240 + 25, + 300 + 220 + 40, 240 + 25, + 300 + 220 + 40, 70 + 25, + 600, 70 + 25 + ], + stroke: '#686868', + strokeWidth: 2, + lineCap: 'round', + lineJoin: 'round' + } + }, + // 退火炉4 → 光整机 + { + id: 'line-fur4-tm', + config: { + points: [ + 600 + 220, 220 + 25, + 600 + 220 + 40, 220 + 25, + 600 + 220 + 40, 400 + 25, + 600 + 220, 400 + 25 + ], + stroke: '#686868', + strokeWidth: 2, + lineCap: 'round', + lineJoin: 'round' + } + }, + // 拉矫机 → 后处理 + { + id: 'line-tl-coat', + config: { + points: [ + 600, 480 + 25, + 600 - 40, 480 + 25, + 600 - 40, 360 + 25, + 600 - 80, 360 + 25 + ], + stroke: '#686868', + strokeWidth: 2, + lineCap: 'round', + lineJoin: 'round' + } + }, + // 出口活套2 → 卷取机 + { + id: 'line-cxl2-tr', + config: { + points: [ + 300, 490 + 25, + 300 - 30, 490 + 25, + 300 - 30, 380 + 25, + 300 - 60, 380 + 25 + ], + stroke: '#686868', + strokeWidth: 2, + lineCap: 'round', + lineJoin: 'round' + } + } +] \ No newline at end of file diff --git a/klp-ui/src/views/lines/zine.vue b/klp-ui/src/views/lines/zine.vue new file mode 100644 index 00000000..3eb3109b --- /dev/null +++ b/klp-ui/src/views/lines/zine.vue @@ -0,0 +1,466 @@ + + + + + diff --git a/klp-ui/src/views/wms/order/panels/detail.vue b/klp-ui/src/views/wms/order/panels/detail.vue index 72dffadf..850dfff6 100644 --- a/klp-ui/src/views/wms/order/panels/detail.vue +++ b/klp-ui/src/views/wms/order/panels/detail.vue @@ -16,20 +16,20 @@ --> - - + + 新增 - + 修改 - + 删除 - + 导出 @@ -64,7 +64,7 @@ - + @@ -78,7 +78,7 @@ @@ -120,7 +120,7 @@ - + diff --git a/klp-ui/src/views/wms/order/panels/orderPage.vue b/klp-ui/src/views/wms/order/panels/orderPage.vue index de0ca9bc..661522ce 100644 --- a/klp-ui/src/views/wms/order/panels/orderPage.vue +++ b/klp-ui/src/views/wms/order/panels/orderPage.vue @@ -9,8 +9,7 @@ class="mb-4"> - + - - - - + @@ -155,7 +155,7 @@ type="text" icon="el-icon-data-analysis" @click="handleBom(scope.row)" - >BOM + >SKU @@ -256,7 +256,7 @@ - + diff --git a/klp-ui/src/views/wms/product/semi.vue b/klp-ui/src/views/wms/product/semi.vue index cf6d61e1..5f1fe54e 100644 --- a/klp-ui/src/views/wms/product/semi.vue +++ b/klp-ui/src/views/wms/product/semi.vue @@ -128,7 +128,7 @@ --> - + @@ -158,7 +158,7 @@ type="text" icon="el-icon-data-analysis" @click="handleBom(scope.row)" - >BOM + >SKU @@ -259,7 +259,7 @@ - + diff --git a/klp-ui/src/views/wms/purchasePlan/list.vue b/klp-ui/src/views/wms/purchasePlan/list.vue index 3d05e894..f2ed0aba 100644 --- a/klp-ui/src/views/wms/purchasePlan/list.vue +++ b/klp-ui/src/views/wms/purchasePlan/list.vue @@ -59,7 +59,7 @@ - + diff --git a/klp-ui/src/views/wms/purchasePlan/panels/CreatePurchasePanel.vue b/klp-ui/src/views/wms/purchasePlan/panels/CreatePurchasePanel.vue index 25ea518b..4c17de6b 100644 --- a/klp-ui/src/views/wms/purchasePlan/panels/CreatePurchasePanel.vue +++ b/klp-ui/src/views/wms/purchasePlan/panels/CreatePurchasePanel.vue @@ -32,7 +32,7 @@ - + diff --git a/klp-ui/src/views/wms/purchasePlan/panels/detail.vue b/klp-ui/src/views/wms/purchasePlan/panels/detail.vue index 6ea26583..cd1e939f 100644 --- a/klp-ui/src/views/wms/purchasePlan/panels/detail.vue +++ b/klp-ui/src/views/wms/purchasePlan/panels/detail.vue @@ -65,7 +65,7 @@ - + diff --git a/klp-ui/src/views/wms/purchasePlan/panels/stockin.vue b/klp-ui/src/views/wms/purchasePlan/panels/stockin.vue index 2acc9710..df2e62f6 100644 --- a/klp-ui/src/views/wms/purchasePlan/panels/stockin.vue +++ b/klp-ui/src/views/wms/purchasePlan/panels/stockin.vue @@ -64,7 +64,7 @@ style="width: 100%" > - + diff --git a/klp-ui/src/views/wms/purchasePlan/panels/transfer.vue b/klp-ui/src/views/wms/purchasePlan/panels/transfer.vue index db11c88d..883e2631 100644 --- a/klp-ui/src/views/wms/purchasePlan/panels/transfer.vue +++ b/klp-ui/src/views/wms/purchasePlan/panels/transfer.vue @@ -26,7 +26,7 @@ - + @@ -70,7 +70,7 @@ - + diff --git a/klp-ui/src/views/wms/rawMaterial/index.vue b/klp-ui/src/views/wms/rawMaterial/index.vue index d0f923d9..f707eacc 100644 --- a/klp-ui/src/views/wms/rawMaterial/index.vue +++ b/klp-ui/src/views/wms/rawMaterial/index.vue @@ -131,7 +131,7 @@ --> - + @@ -140,7 +140,7 @@ - + diff --git a/klp-ui/src/views/wms/stockIo/panels/detail.vue b/klp-ui/src/views/wms/stockIo/panels/detail.vue index 2a62e16e..850a4e12 100644 --- a/klp-ui/src/views/wms/stockIo/panels/detail.vue +++ b/klp-ui/src/views/wms/stockIo/panels/detail.vue @@ -124,7 +124,7 @@ {{ scope.row.itemId }} - + diff --git a/klp-ui/src/views/wms/stockIo/panels/returnCreate.vue b/klp-ui/src/views/wms/stockIo/panels/returnCreate.vue index 9a813268..4cc1fc47 100644 --- a/klp-ui/src/views/wms/stockIo/panels/returnCreate.vue +++ b/klp-ui/src/views/wms/stockIo/panels/returnCreate.vue @@ -39,7 +39,7 @@ {{ scope.row.itemId }} - + diff --git a/klp-ui/src/views/wms/work/schedulePlan/panes/target.vue b/klp-ui/src/views/wms/work/schedulePlan/panes/target.vue index 085883db..2e9a7038 100644 --- a/klp-ui/src/views/wms/work/schedulePlan/panes/target.vue +++ b/klp-ui/src/views/wms/work/schedulePlan/panes/target.vue @@ -15,7 +15,7 @@ - +