| | |
| | | import { ElDialog, ElForm, ElFormItem, ElInput, ElButton, ElMessage, ElSelect, ElOption } from 'element-plus'; |
| | | |
| | | import gridBody from './extend/outOrderDetail.vue' |
| | | import gridHeader from './extend/NoStockOut.vue' |
| | | import gridFooter from './extend/EmptyTrayOutbound.vue' |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridHeader: gridHeader, |
| | | gridBody: gridBody, |
| | | gridFooter: '', |
| | | gridFooter: gridFooter, |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { |
| | | view: [ |
| | | |
| | | |
| | | /* { |
| | | name: 'åºåº', |
| | | type: 'primary', |
| | |
| | | }); |
| | | } |
| | | }, */ |
| | | { |
| | | name: '空æçåºåº', |
| | | type: 'primary', |
| | | value: '空æçåºåº', |
| | | onClick: function () { |
| | | // { |
| | | // name: '空æçåºåº', |
| | | // type: 'primary', |
| | | // value: '空æçåºåº', |
| | | // onClick: function () { |
| | | |
| | | |
| | | const platformOptions = Array.from({ length: 1 }, (_, i) => { |
| | | const num = 1; |
| | | return { label: `ç«å°${num}`, value: `1-2` }; |
| | | }); |
| | | // const platformOptions = Array.from({ length: 1 }, (_, i) => { |
| | | // const num = 1; |
| | | // return { label: `ç«å°${num}`, value: `1-2` }; |
| | | // }); |
| | | |
| | | const quantityOptions = Array.from({ length: 6 }, (_, i) => ({ |
| | | label: (i + 1).toString(), |
| | | value: i + 1 |
| | | })); |
| | | // const quantityOptions = Array.from({ length: 6 }, (_, i) => ({ |
| | | // label: (i + 1).toString(), |
| | | // value: i + 1 |
| | | // })); |
| | | |
| | | const warehouseOptions = ref([]); |
| | | const isLoadingWarehouses = ref(false); |
| | | // const warehouseOptions = 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çlabel-valueæ ¼å¼ |
| | | warehouseOptions.value = data.map(item => ({ |
| | | label: item.locationTypeDesc, |
| | | value: item.locationType |
| | | })); |
| | | } else { |
| | | ElMessage.error('è·ååºåå表失败'); |
| | | warehouseOptions.value = []; |
| | | } |
| | | } catch (err) { |
| | | ElMessage.error('åºåæ°æ®è¯·æ±å¼å¸¸ï¼è¯·ç¨åéè¯'); |
| | | warehouseOptions.value = []; |
| | | } finally { |
| | | isLoadingWarehouses.value = false; |
| | | } |
| | | }; |
| | | // const getWarehouseList = async () => { |
| | | // isLoadingWarehouses.value = true; |
| | | // try { |
| | | // const { data, status } = await http.post('/api/LocationInfo/GetLocationTypes'); |
| | | // if (status && Array.isArray(data)) { |
| | | // // æ ¼å¼åä»åºé项ï¼éé
ElSelectçlabel-valueæ ¼å¼ |
| | | // warehouseOptions.value = data.map(item => ({ |
| | | // label: item.locationTypeDesc, |
| | | // value: item.locationType |
| | | // })); |
| | | // } else { |
| | | // ElMessage.error('è·ååºåå表失败'); |
| | | // warehouseOptions.value = []; |
| | | // } |
| | | // } catch (err) { |
| | | // ElMessage.error('åºåæ°æ®è¯·æ±å¼å¸¸ï¼è¯·ç¨åéè¯'); |
| | | // warehouseOptions.value = []; |
| | | // } finally { |
| | | // isLoadingWarehouses.value = false; |
| | | // } |
| | | // }; |
| | | |
| | | const mountNode = document.createElement('div'); |
| | | document.body.appendChild(mountNode); |
| | | // const mountNode = document.createElement('div'); |
| | | // document.body.appendChild(mountNode); |
| | | |
| | | |
| | | const formData = reactive({ |
| | | warehouseCode: '', |
| | | palletCode: '', |
| | | selectedPlatform: platformOptions[0].value, |
| | | quantity: 1 |
| | | }); |
| | | // const formData = reactive({ |
| | | // warehouseCode: '', |
| | | // palletCode: '', |
| | | // selectedPlatform: platformOptions[0].value, |
| | | // quantity: 1 |
| | | // }); |
| | | |
| | | const vnode = createVNode(ElDialog, { |
| | | title: '空æçåºåº', |
| | | width: '500px', |
| | | 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); |
| | | } |
| | | }, |
| | | style: { |
| | | padding: '20px 0', |
| | | borderRadius: '8px' |
| | | } |
| | | }, { |
| | | default: () => h(ElForm, { |
| | | model: formData, |
| | | rules: { |
| | | warehouseCode: [ |
| | | { required: true, message: 'è¯·éæ©åºå', trigger: ['change', 'blur'] } |
| | | ], |
| | | palletCode: [ |
| | | { type: 'string', message: 'æç®±å·å¿
须为å符串', trigger: 'blur' } |
| | | ], |
| | | selectedPlatform: [ |
| | | { required: true, message: 'è¯·éæ©åºåºç«å°', trigger: 'change' } |
| | | ], |
| | | quantity: [ |
| | | { required: true, message: 'è¯·éæ©ç©ºç®±æ°é', trigger: 'change' } |
| | | ] |
| | | }, |
| | | ref: 'batchOutForm', |
| | | labelWidth: '100px', |
| | | style: { |
| | | padding: '0 30px', |
| | | } |
| | | }, |
| | | [ |
| | | // h(ElFormItem, { |
| | | // label: 'ä»åºåºå', |
| | | // prop: 'warehouseCode', |
| | | // style: { |
| | | // marginBottom: '24px' |
| | | // } |
| | | // }, [ |
| | | // h(ElSelect, { |
| | | // placeholder: 'è¯·éæ©ä»åºåºå', |
| | | // modelValue: formData.warehouseCode, |
| | | // 'onUpdate:modelValue': (val) => { |
| | | // formData.warehouseCode = val; |
| | | // }, |
| | | // style: { |
| | | // width: '100%', |
| | | // height: '40px', |
| | | // borderRadius: '4px', |
| | | // borderColor: '#dcdfe6' |
| | | // } |
| | | // }, warehouseOptions.value.map(platform => |
| | | // h(ElOption, { label: platform.label, value: platform.value }) |
| | | // )) |
| | | // ]), |
| | | h(ElFormItem, { |
| | | label: 'åºåºç«å°', |
| | | prop: 'selectedPlatform', |
| | | style: { |
| | | marginBottom: '24px' |
| | | } |
| | | }, [ |
| | | h(ElSelect, { |
| | | placeholder: 'è¯·éæ©åºåºç«å°', |
| | | modelValue: formData.selectedPlatform, |
| | | 'onUpdate:modelValue': (val) => { |
| | | formData.selectedPlatform = val; |
| | | }, |
| | | style: { |
| | | width: '100%', |
| | | height: '40px', |
| | | borderRadius: '4px', |
| | | borderColor: '#dcdfe6' |
| | | } |
| | | }, platformOptions.map(platform => |
| | | h(ElOption, { label: platform.label, value: platform.value }) |
| | | )) |
| | | ]), |
| | | // h(ElFormItem,{ |
| | | // label:'åºåºæ°é', |
| | | // prop:'quantity', |
| | | // style:{ |
| | | // marginBottom:'24px' |
| | | // } |
| | | // },[h(ElSelect,{ |
| | | // placeholder:'è¯·éæ©ç©ºç®±æ°é', |
| | | // modelValue:formData.quantity, |
| | | // 'onUpdate:modelValue':(val)=>{ |
| | | // formData.quantity=val; |
| | | // }, |
| | | // style:{ |
| | | // width:'100%', |
| | | // height:'40px', |
| | | // borderRadius:'4px', |
| | | // borderColor:'#dcdfe6' |
| | | // }, |
| | | // filterable:false |
| | | // }, |
| | | // quantityOptions.map(option=> |
| | | // h(ElOption,{ |
| | | // label:option.label, |
| | | // value:option.value |
| | | // }) |
| | | // ) |
| | | // )]), |
| | | h(ElFormItem, { |
| | | label: 'æç®±å·', |
| | | prop: 'palletCode', |
| | | style: { |
| | | marginBottom: '16px' |
| | | } |
| | | }, [ |
| | | h(ElInput, { |
| | | type: 'text', |
| | | placeholder: 'å¯éè¾å
¥æç®±å·ï¼ä¸å¡«åèªå¨åé
空æç®±', |
| | | modelValue: formData.palletCode, |
| | | 'onUpdate:modelValue': (val) => { |
| | | formData.palletCode = val; |
| | | }, |
| | | style: { |
| | | width: '100%', |
| | | height: '40px', |
| | | borderRadius: '4px', |
| | | borderColor: '#dcdfe6' |
| | | }, |
| | | attrs: { |
| | | placeholderStyle: 'color: #909399;' |
| | | } |
| | | }) |
| | | ]), |
| | | // const vnode = createVNode(ElDialog, { |
| | | // title: '空æçåºåº', |
| | | // width: '500px', |
| | | // 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); |
| | | // } |
| | | // }, |
| | | // style: { |
| | | // padding: '20px 0', |
| | | // borderRadius: '8px' |
| | | // } |
| | | // }, { |
| | | // default: () => h(ElForm, { |
| | | // model: formData, |
| | | // rules: { |
| | | // warehouseCode: [ |
| | | // { required: true, message: 'è¯·éæ©åºå', trigger: ['change', 'blur'] } |
| | | // ], |
| | | // palletCode: [ |
| | | // { type: 'string', message: 'æç®±å·å¿
须为å符串', trigger: 'blur' } |
| | | // ], |
| | | // selectedPlatform: [ |
| | | // { required: true, message: 'è¯·éæ©åºåºç«å°', trigger: 'change' } |
| | | // ], |
| | | // quantity: [ |
| | | // { required: true, message: 'è¯·éæ©ç©ºç®±æ°é', trigger: 'change' } |
| | | // ] |
| | | // }, |
| | | // ref: 'batchOutForm', |
| | | // labelWidth: '100px', |
| | | // style: { |
| | | // padding: '0 30px', |
| | | // } |
| | | // }, |
| | | // [ |
| | | // // h(ElFormItem, { |
| | | // // label: 'ä»åºåºå', |
| | | // // prop: 'warehouseCode', |
| | | // // style: { |
| | | // // marginBottom: '24px' |
| | | // // } |
| | | // // }, [ |
| | | // // h(ElSelect, { |
| | | // // placeholder: 'è¯·éæ©ä»åºåºå', |
| | | // // modelValue: formData.warehouseCode, |
| | | // // 'onUpdate:modelValue': (val) => { |
| | | // // formData.warehouseCode = val; |
| | | // // }, |
| | | // // style: { |
| | | // // width: '100%', |
| | | // // height: '40px', |
| | | // // borderRadius: '4px', |
| | | // // borderColor: '#dcdfe6' |
| | | // // } |
| | | // // }, warehouseOptions.value.map(platform => |
| | | // // h(ElOption, { label: platform.label, value: platform.value }) |
| | | // // )) |
| | | // // ]), |
| | | // h(ElFormItem, { |
| | | // label: 'åºåºç«å°', |
| | | // prop: 'selectedPlatform', |
| | | // style: { |
| | | // marginBottom: '24px' |
| | | // } |
| | | // }, [ |
| | | // h(ElSelect, { |
| | | // placeholder: 'è¯·éæ©åºåºç«å°', |
| | | // modelValue: formData.selectedPlatform, |
| | | // 'onUpdate:modelValue': (val) => { |
| | | // formData.selectedPlatform = val; |
| | | // }, |
| | | // style: { |
| | | // width: '100%', |
| | | // height: '40px', |
| | | // borderRadius: '4px', |
| | | // borderColor: '#dcdfe6' |
| | | // } |
| | | // }, platformOptions.map(platform => |
| | | // h(ElOption, { label: platform.label, value: platform.value }) |
| | | // )) |
| | | // ]), |
| | | // // h(ElFormItem,{ |
| | | // // label:'åºåºæ°é', |
| | | // // prop:'quantity', |
| | | // // style:{ |
| | | // // marginBottom:'24px' |
| | | // // } |
| | | // // },[h(ElSelect,{ |
| | | // // placeholder:'è¯·éæ©ç©ºç®±æ°é', |
| | | // // modelValue:formData.quantity, |
| | | // // 'onUpdate:modelValue':(val)=>{ |
| | | // // formData.quantity=val; |
| | | // // }, |
| | | // // style:{ |
| | | // // width:'100%', |
| | | // // height:'40px', |
| | | // // borderRadius:'4px', |
| | | // // borderColor:'#dcdfe6' |
| | | // // }, |
| | | // // filterable:false |
| | | // // }, |
| | | // // quantityOptions.map(option=> |
| | | // // h(ElOption,{ |
| | | // // label:option.label, |
| | | // // value:option.value |
| | | // // }) |
| | | // // ) |
| | | // // )]), |
| | | // h(ElFormItem, { |
| | | // label: 'æç®±å·', |
| | | // prop: 'palletCode', |
| | | // style: { |
| | | // marginBottom: '16px' |
| | | // } |
| | | // }, [ |
| | | // h(ElInput, { |
| | | // type: 'text', |
| | | // placeholder: 'å¯éè¾å
¥æç®±å·ï¼ä¸å¡«åèªå¨åé
空æç®±', |
| | | // modelValue: formData.palletCode, |
| | | // 'onUpdate:modelValue': (val) => { |
| | | // formData.palletCode = val; |
| | | // }, |
| | | // style: { |
| | | // width: '100%', |
| | | // height: '40px', |
| | | // borderRadius: '4px', |
| | | // borderColor: '#dcdfe6' |
| | | // }, |
| | | // attrs: { |
| | | // placeholderStyle: 'color: #909399;' |
| | | // } |
| | | // }) |
| | | // ]), |
| | | |
| | | h('div', { |
| | | style: { |
| | | textAlign: 'right', |
| | | marginTop: '8px', |
| | | paddingRight: '4px' |
| | | } |
| | | }, [ |
| | | h(ElButton, { |
| | | type: 'text', |
| | | onClick: () => { |
| | | render(null, mountNode); |
| | | document.body.removeChild(mountNode); |
| | | ElMessage.info('åæ¶åºåºæä½'); |
| | | }, |
| | | style: { |
| | | marginRight: '8px', |
| | | color: '#606266' |
| | | } |
| | | }, 'åæ¶'), |
| | | h(ElButton, { |
| | | type: 'primary', |
| | | onClick: async () => { |
| | | const formRef = vnode.component.refs.batchOutForm; |
| | | try { |
| | | await formRef.validate(); |
| | | } catch (err) { |
| | | return; |
| | | } |
| | | // h('div', { |
| | | // style: { |
| | | // textAlign: 'right', |
| | | // marginTop: '8px', |
| | | // paddingRight: '4px' |
| | | // } |
| | | // }, [ |
| | | // h(ElButton, { |
| | | // type: 'text', |
| | | // onClick: () => { |
| | | // render(null, mountNode); |
| | | // document.body.removeChild(mountNode); |
| | | // ElMessage.info('åæ¶åºåºæä½'); |
| | | // }, |
| | | // style: { |
| | | // marginRight: '8px', |
| | | // color: '#606266' |
| | | // } |
| | | // }, 'åæ¶'), |
| | | // h(ElButton, { |
| | | // type: 'primary', |
| | | // onClick: async () => { |
| | | // const formRef = vnode.component.refs.batchOutForm; |
| | | // try { |
| | | // await formRef.validate(); |
| | | // } catch (err) { |
| | | // return; |
| | | // } |
| | | |
| | | http.post('/api/Task/PalletOutboundTask?palletCode=' + formData.palletCode + '&endStation=' + formData.selectedPlatform, { |
| | | // http.post('/api/Task/PalletOutboundTask?palletCode=' + formData.palletCode + '&endStation=' + formData.selectedPlatform, { |
| | | |
| | | }).then(({ data, status, message }) => { |
| | | if (status) { |
| | | // }).then(({ data, status, message }) => { |
| | | // if (status) { |
| | | |
| | | ElMessage.success(`åºåºæå`); |
| | | this.refresh(); |
| | | render(null, mountNode); |
| | | document.body.removeChild(mountNode); |
| | | } else { |
| | | ElMessage.error(message || data?.message || 'åºåºå¤±è´¥'); |
| | | } |
| | | }).catch(() => { |
| | | ElMessage.error('请æ±å¤±è´¥ï¼è¯·ç¨åéè¯'); |
| | | }); |
| | | }, |
| | | style: { |
| | | borderRadius: '4px', |
| | | padding: '8px 20px' |
| | | } |
| | | }, 'ç¡®å®') |
| | | ]) |
| | | ]) |
| | | }); |
| | | // ElMessage.success(`åºåºæå`); |
| | | // this.refresh(); |
| | | // render(null, mountNode); |
| | | // document.body.removeChild(mountNode); |
| | | // } else { |
| | | // ElMessage.error(message || data?.message || 'åºåºå¤±è´¥'); |
| | | // } |
| | | // }).catch(() => { |
| | | // ElMessage.error('请æ±å¤±è´¥ï¼è¯·ç¨åéè¯'); |
| | | // }); |
| | | // }, |
| | | // style: { |
| | | // borderRadius: '4px', |
| | | // padding: '8px 20px' |
| | | // } |
| | | // }, 'ç¡®å®') |
| | | // ]) |
| | | // ]) |
| | | // }); |
| | | |
| | | vnode.appContext = this.$.appContext; |
| | | render(vnode, mountNode); |
| | | } |
| | | } |
| | | // vnode.appContext = this.$.appContext; |
| | | // render(vnode, mountNode); |
| | | // } |
| | | // } |
| | | ], box: [], detail: [] |
| | | }, //æ©å±çæé® |
| | | methods: { |
| | |
| | | this.$refs.gridBody.open(row); |
| | | } |
| | | }); |
| | | let BatchOrderFeedbackToMesBtn = this.buttons.find(x => x.value == 'BatchOrderFeedbackToMes'); |
| | | if (BatchOrderFeedbackToMesBtn) { |
| | | const _this = this; |
| | | BatchOrderFeedbackToMesBtn.onClick = function () { |
| | | let selectedRows = _this.$refs.table.getSelected(); |
| | | |
| | | // æ ¡éªæ¯å¦æé䏿°æ® |
| | | if (!selectedRows || selectedRows.length === 0) { |
| | | return _this.$Message.warning('请å
éæ©éè¦å¤ççåæ®'); |
| | | } |
| | | const requestParams = { |
| | | orderNos: selectedRows.map(row => row.orderNo), |
| | | inout: 2 |
| | | }; |
| | | _this.http |
| | | .post("api/InboundOrder/BatchOrderFeedbackToMes", requestParams, "æ°æ®å¤çä¸...") |
| | | .then((x) => { |
| | | if (x.status) { |
| | | _this.$Message.success('åæ¹åºåºåè°å®æ'); |
| | | _this.refresh(); |
| | | } else { |
| | | return _this.$Message.error( 'åæ¹åºåºåè°å¤±è´¥'); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | // å¢å å¼å¸¸æè·ï¼å¤çç½ç»é误çæ
åµ |
| | | //_this.$Message.error('请æ±å¤±è´¥ï¼' + (error.message || 'æªç¥é误')); |
| | | }); |
| | | }; |
| | | } |
| | | let TaskHandCompletedBtn = this.buttons.find(x => x.value == 'NoStockOut'); |
| | | if (TaskHandCompletedBtn) { |
| | | TaskHandCompletedBtn.onClick = function () { |
| | | this.$refs.gridHeader.open(); |
| | | } |
| | | } |
| | | |
| | | var EmptyTrayOutboundBtn = this.buttons.find(x => x.value == "EmptyTrayOutbound"); |
| | | if (EmptyTrayOutboundBtn != null) { |
| | | EmptyTrayOutboundBtn.onClick = () => { |
| | | this.$refs.gridFooter.open(); |
| | | } |
| | | } |
| | | |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | |
| | | let wheres = [{ |
| | | 'name': 'orderType', |
| | | 'value': '0', |
| | | 'displayType': 'text'}]; |
| | | |
| | | |
| | | param.wheres.push(...wheres); |
| | | return true; |
| | | |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | |
| | | this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | if (this.currentAction === 'Add') { // 夿å½åæ¯æ°å»ºæä½ |
| | | const currentUser = this.$store.state.userInfo?.userTrueName || 'system'; |
| | | this.editFormFields.operator = currentUser; |
| | | } |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |