From f227c21ba8e0001ea7cffa70aa66ade08bb72c70 Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期四, 20 十一月 2025 18:29:17 +0800
Subject: [PATCH] 代码提交

---
 项目代码/WIDESEA_WMSClient/src/extension/inbound/Dt_AllocateOrder.js |  411 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 408 insertions(+), 3 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/Dt_AllocateOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/Dt_AllocateOrder.js"
index 24e1d94..061bb6b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/Dt_AllocateOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/Dt_AllocateOrder.js"
@@ -1,11 +1,14 @@
 
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-
+import http from '@/api/http.js'
+import { h,createVNode, render,reactive,ref  } from 'vue';
+import { ElDialog , ElForm, ElFormItem, ElInput, ElButton, ElMessage ,ElSelect ,ElOption } from 'element-plus'; // 寮曞叆ElMessage锛岃В鍐虫彁绀烘棤鍙嶅簲
+import gridBody from './extend/allocateOrderDetail.vue'
 let extension = {
     components: {
       //鏌ヨ鐣岄潰鎵╁睍缁勪欢
       gridHeader: '',
-      gridBody: '',
+      gridBody: gridBody,
       gridFooter: '',
       //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
       modelHeader: '',
@@ -13,12 +16,414 @@
       modelFooter: ''
     },
     tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
-    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    buttons: { view: [
+       {
+        name: '缁勭洏',
+        type: 'primary',
+        value: '缁勭洏',
+        onClick: function () { // 淇1锛氱Щ闄ゆ棤鐢╮ow鍙傛暟锛屽姞鏃ュ織璋冭瘯
+          console.log('缁勭洏鎸夐挳琚偣鍑伙紝寮�濮嬫牎楠�');
+          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.orderNo);
+        }
+      },
+      {
+                name: '鎾ら攢缁勭洏',
+                type: 'primary',
+                value: '鎾ら攢缁勭洏',
+                onClick: function () {
+                    console.log('鎾ら攢缁勭洏鎸夐挳琚偣鍑�');
+                    const mountNode = document.createElement('div');
+                    document.body.appendChild(mountNode);
+
+                    // 鍝嶅簲寮忚〃鍗曟暟鎹細鎵樼洏鍙凤紙蹇呭~锛�
+                    const formData = reactive({
+                        palletCode: '' // 鎵樼洏鍙疯緭鍏ユ
+                    });
+
+                    // 鎻愪氦琛ㄥ崟鐨勭粺涓�閫昏緫
+                    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/CancelPalletGroup', {
+                                palletCode: formData.palletCode.trim()
+                            });
+
+                            const { status, message, data } = response;
+                            if (status) {
+                                ElMessage.success(`鎾ら攢缁勭洏鎴愬姛锛屾墭鐩樺彿锛�${formData.palletCode.trim()}`);
+                                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('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(`鍒嗘壒鍏ュ簱鎴愬姛锛佸叡澶勭悊${inboundOrderNos.length}鏉″崟鎹甡);
+        this.refresh(); // 鍏ュ簱鎴愬姛鍚庡埛鏂板垪琛紙澶嶇敤鍘熸湁閫昏緫锛�
+      } else {
+        console.log('鍒嗘壒鍏ュ簱澶辫触锛屽悗绔彁绀猴細', message);
+        ElMessage.error(message || data?.message || '鍒嗘壒鍏ュ簱澶辫触');
+      }
+    } catch (error) {
+      console.error('鍒嗘壒鍏ュ簱璇锋眰寮傚父锛�', error);
+      ElMessage.error('缃戠粶寮傚父鎴栨帴鍙i敊璇紝璇风◢鍚庨噸璇�');
+    }
+  }
+},
+     {
+  name: '绌烘墭鐩樺叆搴�',
+  type: 'primary',
+  value: '绌烘墭鐩樺叆搴�',
+  
+  onClick: function () {
+    const mountNode = document.createElement('div');
+    document.body.appendChild(mountNode);
+
+    // 鍝嶅簲寮忚〃鍗曟暟鎹細鏂欑鐮侊紙蹇呭~锛屾壂鐮佹灙/鎵嬪姩杈撳叆锛�
+    const formData = reactive({ 
+      boxCode: '',
+      warehouseCode:''
+    });
+
+    const warehouses = ref([]);
+    const isLoadingWarehouses = ref(false);
+
+    const getWarehouseList = async () => {
+      isLoadingWarehouses.value = true;
+      try {
+        const { data, status } = await http.post('/api/LocationInfo/GetLocationTypes'); 
+        if (status && Array.isArray(data)) {
+          // 鏍煎紡鍖栦粨搴撻�夐」锛氶�傞厤ElSelect鐨刲abel-value鏍煎紡
+          warehouses.value = data.map(item => ({
+            label: item.locationTypeDesc,
+            value: item.locationType  
+          }));
+        } else {
+          ElMessage.error('鑾峰彇鍖哄煙鍒楄〃澶辫触');
+          warehouses.value = [];
+        }
+      } catch (err) {
+        ElMessage.error('鍖哄煙鏁版嵁璇锋眰寮傚父锛岃绋嶅悗閲嶈瘯');
+        warehouses.value = [];
+      } finally {
+        isLoadingWarehouses.value = false;
+      }
+    };
+
+    // 鎻愪氦琛ㄥ崟鐨勭粺涓�閫昏緫锛堜緵鍥炶溅瑙﹀彂鍜屾寜閽偣鍑诲叡鐢級
+    const submitForm = async () => {
+      const formRef = vnode.component.refs.batchInForm;
+      try {
+        // 鎵ц琛ㄥ崟鏍¢獙锛堟枡绠辩爜蹇呭~锛�
+        await formRef.validate();
+      } catch (err) {
+        ElMessage.warning('璇疯緭鍏ユ湁鏁堢殑鏂欑鐮�');
+        return;
+      }
+
+      
+      http.post('/api/InboundOrder/EmptyMaterielGroup', {
+        palletCode: formData.boxCode.trim(),
+        warehouseCode:formData.warehouseCode
+      }).then(({ data, status, message }) => {
+        if (status) {
+          ElMessage.success(`鍏ュ簱鎴愬姛锛屾枡绠辩爜锛�${formData.boxCode.trim()}`);
+          this.refresh(); 
+          formData.boxCode = ''; 
+          
+          setTimeout(() => {
+            const inputRef = vnode.component.refs.boxCodeInput;
+            inputRef?.focus();
+          }, 100);
+        } else {
+          ElMessage.error(message || data?.message || '鍏ュ簱澶辫触');
+          selectBoxCodeInput();
+        }
+      }).catch(() => {
+        ElMessage.error('璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯');
+        selectBoxCodeInput();
+      });
+    };
+
+    const selectBoxCodeInput = () => {
+      setTimeout(() => {
+        const inputRef = vnode.component.refs.boxCodeInput;
+        if (inputRef) {
+          const targetInput = inputRef.$el?.querySelector('input') || inputRef;
+          targetInput?.focus(); 
+          targetInput?.select(); 
+        }
+  }, 100);
+}
+    const vnode = createVNode(ElDialog, {
+      title: '绌烘墭鐩樺叆搴�',
+      width: '400px',
+      modelValue: true,
+      appendToBody: true,
+      
+      onOpened: async () => {
+        await getWarehouseList();
+        const inputRef = vnode.component.refs.boxCodeInput;
+        inputRef?.focus();
+      },
+      'onUpdate:modelValue': (isVisible) => {
+        if (!isVisible) {
+          render(null, mountNode);
+          document.body.removeChild(mountNode);
+        }
+      }
+    }, {
+      default: () => h(ElForm, {
+        model: formData,
+        rules: {
+          boxCode: [
+            { required: true, message: '璇疯緭鍏ユ枡绠辩爜', trigger: ['blur', 'enter'] }
+          ],
+          warehouseCode:[
+            { required: true, message: '璇烽�夋嫨鍖哄煙', trigger: ['change', 'blur'] }
+          ]
+        },
+        ref: 'batchInForm'
+      }, [
+        //浠撳簱鏁版嵁
+        h(ElFormItem, { label: '鍖哄煙', prop: 'warehouseCode', required: true }, [
+          h(ElSelect, {
+            modelValue: formData.warehouseCode,
+            'onUpdate:modelValue': (val) => {
+              formData.warehouseCode = val;
+            },
+            placeholder: '璇烽�夋嫨鍏ュ簱鍖哄煙',
+            filterable: true, // 鏀寔鎼滅储浠撳簱
+            loading: isLoadingWarehouses.value, // 鍔犺浇鐘舵��
+            style: { width: '100%' }
+          }, [
+            // 娓叉煋浠撳簱涓嬫媺閫夐」
+            warehouses.value.map(item => h(ElOption, {
+              label: item.label,
+              value: item.value
+            }))
+          ])
+        ]),
+        // 鏂欑鐮佽緭鍏ラ」锛堟敮鎸佽仛鐒︺�佸洖杞︽彁浜わ級
+        h(ElFormItem, { label: '鏂欑鐮�', prop: 'boxCode', required: true }, [
+          h(ElInput, {
+            type: 'text',
+            modelValue: formData.boxCode,
+            'onUpdate:modelValue': (val) => {
+              formData.boxCode = val;
+            },
+            ref: 'boxCodeInput', 
+            placeholder: '鎵爜杈撳叆鎴栨墜鍔ㄨ緭鍏ユ枡绠辩爜',
+            // 鐩戝惉鍥炶溅浜嬩欢锛堟壂鐮佹灙榛樿浼氬彂閫佸洖杞︼級
+            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 
+          }, '纭畾')
+        ])
+      ])
+    });
+
+    vnode.appContext = this.$.appContext;
+    render(vnode, mountNode);
+  }
+}
+    ], box: [], detail: [] }, 
     methods: {
        //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
       onInit() {  
+        this.columns.push({
+        field: '鎿嶄綔',
+        title: '鎿嶄綔',
+        width: 90,
+        fixed: 'right',
+        align: 'center',
+        formatter: (row) => {
+          return (
+            '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">鏌ョ湅鏄庣粏</i>'
+          );
+        },
+        click: (row) => {
+          this.$refs.gridBody.open(row);
+        }
+      });
       },
       onInited() {
+        
         //妗嗘灦鍒濆鍖栭厤缃悗
         //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
         //this.detailOptions.columns.forEach(column=>{ });

--
Gitblit v1.9.3