From d4477875746611db054f1b0f6c9e4a08980d6923 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 17 十二月 2025 11:23:56 +0800
Subject: [PATCH] 新增撤销组盘与分批入库功能,修复路径问题
---
项目代码/WIDESEA_WMSClient/src/extension/inbound/inboundOrder_a.js | 333 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
项目代码/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue | 2
项目代码/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue | 3
项目代码/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js | 2
4 files changed, 337 insertions(+), 3 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
index ee375f5..482a8e0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
@@ -317,7 +317,7 @@
// 鏍规嵁鏉$爜鍒楄〃鑾峰彇璇︾粏鏁版嵁
async fetchUnpalletMaterialDetails() {
try {
- const response = await http.post('/api/InboundOrder/UnPalletGroupBarcode?orderNo=' + this.docNo, {});
+ const response = await http.post('/api/InboundOrder/UnPalletGroupBarcode?orderNo=' + this.orderNo, {});
if (response.status && Array.isArray(response.data)) {
this.unpalletMaterials = response.data;
this.unpalletBarcodes = response.data.map(item => item.barcode || '');
@@ -656,6 +656,7 @@
});
this.orderNo = materialData[0].orderNo;
await this.fetchStockStatistics(materialData[0].orderNo);
+ await this.fetchUnpalletMaterialDetails();
// 娓呯┖鐗╂枡杈撳叆妗嗗苟淇濇寔鑱氱劍
this.barcode = '';
this.scanCode = ''; // 娓呯┖鎵爜缂撳瓨
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
index 108a17e..9b7a790 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
@@ -1,6 +1,6 @@
//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
import gridHeader from './extend/EmptyTrayInbound.vue'
-import gridBody from '../inbound/extend/Pallet.vue'
+import gridBody from './extend/Pallet.vue'
let extension = {
components: {
//鏌ヨ鐣岄潰鎵╁睍缁勪欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder_a.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder_a.js"
new file mode 100644
index 0000000..8dae625
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder_a.js"
@@ -0,0 +1,333 @@
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import gridHeader from './extend/EmptyTrayInbound.vue'
+import gridBody from '../inbound/extend/Pallet.vue'
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: gridHeader,
+ gridBody: gridBody,
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: {
+ view: [
+ // {
+ // name: '缁勭洏',
+ // type: 'primary',
+ // value: '缁勭洏',
+ // onClick: function () { // 淇1锛氱Щ闄ゆ棤鐢╮ow鍙傛暟锛屽姞鏃ュ織璋冭瘯
+ // const selectedRows = this.$refs.table.getSelected();
+ // // 鏍¢獙1锛氭槸鍚﹂�変腑琛�
+ // if (selectedRows.length === 0) {
+ // console.log('鏍¢獙涓嶉�氳繃锛氭湭閫変腑浠讳綍鍗曟嵁');
+ // ElMessage.warning('璇烽�夋嫨涓�鏉″崟鎹�');
+ // return;
+ // }
+ // // 鏍¢獙2锛氭槸鍚﹂�変腑鍗曡
+ // if (selectedRows.length > 1) {
+ // console.log('鏍¢獙涓嶉�氳繃锛氶�変腑澶氳鍗曟嵁');
+ // ElMessage.warning('鍙兘閫夋嫨涓�鏉″崟鎹�');
+ // return;
+ // }
+
+ // const targetRow = selectedRows[0];
+
+ // this.$emit('openPalletDialog', targetRow.inboundOrderNo);
+ // }
+ // },
+ {
+ name: '鎾ら攢缁勭洏',
+ type: 'primary',
+ value: '鎾ら攢缁勭洏',
+ onClick: function () {
+ console.log('鎾ら攢缁勭洏鎸夐挳琚偣鍑�');
+ const mountNode = document.createElement('div');
+ document.body.appendChild(mountNode);
+
+ // 鍝嶅簲寮忚〃鍗曟暟鎹細鎵樼洏鍙凤紙蹇呭~锛�
+ const formData = reactive({
+ palletCode: '', // 鎵樼洏鍙疯緭鍏ユ
+ barcode: ''
+ });
+
+ // 鎻愪氦琛ㄥ崟鐨勭粺涓�閫昏緫
+ const submitForm = async () => {
+ const formRef = vnode.component.refs.cancelPalletForm;
+ try {
+ // 鎵ц琛ㄥ崟鏍¢獙锛堟墭鐩樺彿蹇呭~锛�
+ await formRef.validate();
+ } catch (err) {
+ ElMessage.warning('璇疯緭鍏ユ湁鏁堢殑鎵樼洏鍙�');
+ return;
+ }
+
+ // 鍙戣捣鎾ら攢缁勭洏璇锋眰
+ try {
+ //console.log('鍙戣捣鎾ら攢缁勭洏璇锋眰锛屾墭鐩樺彿锛�', formData.palletCode.trim());
+ const response = await http.post('/api/InboundOrder/UndoPalletGroup?palletCode=' + formData.palletCode.trim() + '&barcode=' + formData.barcode.trim());
+
+
+ const { status, message, data } = response;
+ if (status) {
+ ElMessage.success(response.message);
+ console.log(response.message)
+ this.refresh(); // 鎴愬姛鍚庡埛鏂板垪琛�
+ // 鍏抽棴瀵硅瘽妗�
+ render(null, mountNode);
+ document.body.removeChild(mountNode);
+ } else {
+ console.log('鎾ら攢缁勭洏澶辫触锛屽悗绔彁绀猴細', message);
+ ElMessage.error(message || data?.message || '鎾ら攢缁勭洏澶辫触');
+ selectPalletCodeInput(); // 閫変腑杈撳叆妗嗘柟渚块噸鏂拌緭鍏�
+ }
+ } catch (error) {
+ console.error('鎾ら攢缁勭洏璇锋眰寮傚父锛�', error);
+ ElMessage.error('缃戠粶寮傚父鎴栨帴鍙i敊璇紝璇风◢鍚庨噸璇�');
+ selectPalletCodeInput();
+ }
+ };
+
+ // 閫変腑杈撳叆妗嗘枃鏈紙鏂逛究閲嶆柊杈撳叆锛�
+ const selectPalletCodeInput = () => {
+ setTimeout(() => {
+ const inputRef = vnode.component.refs.palletCodeInput;
+ if (inputRef) {
+ const targetInput = inputRef.$el?.querySelector('input') || inputRef;
+ targetInput?.focus();
+ targetInput?.select();
+ }
+ }, 100);
+ };
+
+ // 鍒涘缓瀵硅瘽妗哣Node
+ const vnode = createVNode(ElDialog, {
+ title: '鎾ら攢缁勭洏',
+ width: '400px',
+ modelValue: true,
+ appendToBody: true,
+ onOpened: () => {
+ // 瀵硅瘽妗嗘墦寮�鍚庤嚜鍔ㄨ仛鐒﹁緭鍏ユ
+ setTimeout(() => {
+ const inputRef = vnode.component.refs.palletCodeInput;
+ inputRef?.focus();
+ }, 100);
+ },
+ 'onUpdate:modelValue': (isVisible) => {
+ if (!isVisible) {
+ render(null, mountNode);
+ document.body.removeChild(mountNode);
+ }
+ }
+ }, {
+ default: () => h(ElForm, {
+ model: formData,
+ rules: {
+ palletCode: [
+ { required: true, message: '璇疯緭鍏ユ墭鐩樺彿', trigger: ['blur', 'enter'] },
+ { min: 1, max: 50, message: '鎵樼洏鍙烽暱搴︿笉鑳借秴杩�50涓瓧绗�', trigger: ['blur', 'input'] }
+ ]
+ },
+ ref: 'cancelPalletForm'
+ }, [
+ // 鎵樼洏鍙疯緭鍏ラ」
+ h(ElFormItem, { label: '鎵樼洏鍙�', prop: 'palletCode', required: true }, [
+ h(ElInput, {
+ type: 'text',
+ modelValue: formData.palletCode,
+ 'onUpdate:modelValue': (val) => {
+ formData.palletCode = val;
+ },
+ ref: 'palletCodeInput',
+ placeholder: '鎵爜杈撳叆鎴栨墜鍔ㄨ緭鍏ユ墭鐩樺彿',
+ maxLength: 50,
+ // 鐩戝惉鍥炶溅浜嬩欢锛堟壂鐮佹灙榛樿浼氬彂閫佸洖杞︼級
+ onKeydown: (e) => {
+ if (e.key === 'Enter') {
+ e.preventDefault();
+ submitForm();
+ }
+ }
+ })
+ ]),
+ h(ElFormItem, { label: '鏉$爜', prop: 'barcode' }, [
+ h(ElInput, {
+ type: 'text',
+ modelValue: formData.barcode,
+ 'onUpdate:modelValue': (val) => {
+ formData.barcode = val;
+ },
+ placeholder: '鍙�夛紝鎵爜杈撳叆鎴栨墜鍔ㄨ緭鍏ユ潯鐮�',
+ maxLength: 50,
+ onKeydown: (e) => {
+ if (e.key === 'Enter') {
+ e.preventDefault();
+ submitForm();
+ }
+ }
+ })
+ ]),
+ // 搴曢儴鎸夐挳鍖�
+ h('div', { style: { textAlign: 'right', marginTop: '16px' } }, [
+ h(ElButton, {
+ type: 'text',
+ onClick: () => {
+ render(null, mountNode);
+ document.body.removeChild(mountNode);
+ ElMessage.info('鍙栨秷鎾ら攢缁勭洏');
+ }
+ }, '鍙栨秷'),
+ h(ElButton, {
+ type: 'primary',
+ onClick: submitForm.bind(this) // 缁戝畾this涓婁笅鏂�
+ }, '纭鎾ら攢')
+ ])
+ ])
+ });
+
+ vnode.appContext = this.$.appContext;
+ render(vnode, mountNode);
+ }
+ },
+ {
+ name: '鍒嗘壒鍏ュ簱',
+ type: 'primary',
+ value: '鍒嗘壒鍏ュ簱',
+ onClick: async function () {
+ console.log('鍒嗘壒鍏ュ簱鎸夐挳琚偣鍑伙紝寮�濮嬫牎楠�');
+ const selectedRows = this.$refs.table.getSelected();
+
+ // 鏍¢獙1锛氭槸鍚﹂�変腑琛岋紙鑷冲皯閫夋嫨涓�鏉★級
+ if (selectedRows.length === 0) {
+ console.log('鏍¢獙涓嶉�氳繃锛氭湭閫変腑浠讳綍鍗曟嵁');
+ ElMessage.warning('璇烽�夋嫨鑷冲皯涓�鏉″崟鎹�');
+ return;
+ }
+
+ // 鏀堕泦鎵�鏈夐�変腑鍗曟嵁鐨勭紪鍙凤紙杩囨护鏃犲崟鎹彿鐨勫紓甯歌锛�
+ const inboundOrderNos = selectedRows
+ .filter(row => row.inboundOrderNo)
+ .map(row => row.inboundOrderNo);
+
+ // 鏍¢獙2锛氭槸鍚︽湁鏈夋晥鍗曟嵁鍙�
+ if (inboundOrderNos.length === 0) {
+ console.log('鏍¢獙涓嶉�氳繃锛氶�変腑鍗曟嵁鏃犳湁鏁堢紪鍙�');
+ ElMessage.warning('閫変腑鐨勫崟鎹腑鏃犳湁鏁堢紪鍙凤紝璇烽噸鏂伴�夋嫨');
+ return;
+ }
+
+ try {
+ console.log('鍙戣捣鍒嗘壒鍏ュ簱璇锋眰锛屽弬鏁帮細', { inboundOrderNos });
+ const response = await http.post('/api/InboundOrder/BatchOrderFeedbackToMes', {
+ orderNos: inboundOrderNos,
+ inout: 1
+ });
+
+ const { status, message, data } = response;
+ if (status) {
+ console.log('鍒嗘壒鍏ュ簱鎴愬姛锛屽悗绔繑鍥烇細', data);
+ ElMessage.success(`鍒嗘壒鍏ュ簱鎴愬姛锛乣);
+ this.refresh(); // 鍏ュ簱鎴愬姛鍚庡埛鏂板垪琛紙澶嶇敤鍘熸湁閫昏緫锛�
+ } else {
+ console.log('鍒嗘壒鍏ュ簱澶辫触锛屽悗绔彁绀猴細', message);
+ ElMessage.error(message || data?.message || '鍒嗘壒鍏ュ簱澶辫触');
+ }
+ } catch (error) {
+ console.error('鍒嗘壒鍏ュ簱璇锋眰寮傚父锛�', error);
+ ElMessage.error('缃戠粶寮傚父鎴栨帴鍙i敊璇紝璇风◢鍚庨噸璇�');
+ }
+ }
+ },
+ ], box: [], detail: []
+ },
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() {
+ var EmptyTrayInboundBtn = this.buttons.find(x => x.value == "EmptyTrayInbound");
+ if (EmptyTrayInboundBtn != null) {
+ EmptyTrayInboundBtn.onClick = () => {
+ this.$refs.gridHeader.open();
+ }
+ }
+ var GroupPalletBtn = this.buttons.find(x => x.value == "GroupPallet");
+ if (GroupPalletBtn != null) {
+ GroupPalletBtn.onClick = () => {
+ this.$refs.gridBody.open();
+ }
+ }
+
+ this.columns.forEach(column => {
+ if (column.field === 'orderStatistics') {
+ column.formatter = (row) => {
+ // 鏍¢獙details鏄惁瀛樺湪涓旀湁鏁版嵁
+ if (row.details && row.details.length > 0) {
+ //鎸塵aterielCode鍒嗙粍缁熻orderQuantity鎬诲拰
+ const materielSumMap = row.details.reduce((acc, item) => {
+ const materielCode = item.materielCode || '鏈煡鐗╂枡';
+ const quantity = Number(item.orderQuantity) || 0;
+ acc[materielCode] = (acc[materielCode] || 0) + quantity;
+ return acc;
+ }, {});
+
+ //姣忎釜鐗╂枡椤圭敓鎴愮嫭绔媎iv锛岃法琛屾樉绀�
+ const displayItems = Object.entries(materielSumMap).map(([code, total]) => {
+ return `<div style="line-height: 1.5; white-space: normal;">${code}锛�${total}涓�</div>`;
+ });
+ const displayContent = displayItems.join('');
+ return `<div style="color: #F56C6C; white-space: normal; word-break: break-all;">${displayContent}</div>`;
+ } else {
+ return '<span style="color: #F56C6C">鏃犲叆搴撴槑缁�</span>';
+ }
+ };
+ }
+ });
+ },
+ onInited() {
+
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ // this.searchFormFields.orderType=[0]
+ let wheres = [{
+ 'name': 'orderType',
+ 'value': '0',
+ 'displayType': 'text'
+ }];
+
+
+ param.wheres.push(...wheres);
+ return true;
+ },
+ searchAfter(result) {
+ return true;
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true;
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
index 90d3829..941480c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
@@ -6,7 +6,7 @@
</view-grid>
</template>
<script>
-import extend from "@/extension/inbound/inboundOrder_copy.js";
+import extend from "@/extension/inbound/inboundOrder.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
setup() {
--
Gitblit v1.9.3