| | |
| | | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | // èªå®ä¹æ©å±ä¸å¡ä»£ç |
| | | import gridBody from "./extend/OrderStockTake.vue"; |
| | | // å¼å
¥ææ¶æå平账弹çªç»ä»¶ |
| | | import gridHeader from "./extend/TakeStockSelect.vue"; |
| | | import { ElMessageBox, ElLoading, ElMessage } from "element-plus"; |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | //æ°å»ºä¿ååformData为对象ï¼å
æ¬æç»è¡¨ï¼å¯ä»¥ç»ç»è¡¨å设置å¼ï¼èªå·±è¾åºçformDataçå¼ |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | //ç¼è¾ä¿ååformData为对象ï¼å
æ¬æç»è¡¨ãå é¤è¡çId |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | //æ¥è¯¢çé¢ç¹å»è¡äºä»¶ |
| | | this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | components: { |
| | | // æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: gridHeader, |
| | | gridBody: gridBody, // åæçç¹å¼¹çªç»ä»¶ |
| | | gridFooter: '', |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', // æ éæå®è¡¨å |
| | | buttons: { view: [], box: [], detail: [] }, // æ©å±æé® |
| | | methods: { |
| | | onInit() { |
| | | // åæçç¹æé®é»è¾ä¿ç |
| | | let OrderStockTakeBtn = this.buttons.find(x => x.value === 'OrderStockTake'); |
| | | if (OrderStockTakeBtn) { |
| | | OrderStockTakeBtn.onClick = function () { |
| | | let rows = this.$refs.table.getSelected(); |
| | | if (rows.length === 0) return this.$error("è¯·éæ©ä¸æ¡çç¹åæ®æ°æ®ï¼"); |
| | | if (rows.length > 1) return this.$error("åªè½éæ©ä¸æ¡çç¹åæ®æ°æ®ï¼"); |
| | | |
| | | const selectedReceiptNo = rows[0].orderNo; |
| | | if (!selectedReceiptNo) return this.$error("éä¸çåæ®ç¼ºå°ææçåæ®å·ï¼"); |
| | | this.$refs.gridBody.open(selectedReceiptNo); |
| | | }; |
| | | } |
| | | |
| | | // çå¬åæå¼¹çªäºä»¶ï¼ä¿çï¼ |
| | | this.$nextTick(() => { |
| | | const stockTakeComp = this.$refs.gridBody; |
| | | if (stockTakeComp) { |
| | | stockTakeComp.$on('refresh', () => { |
| | | this.$refs.table.reload(); |
| | | }); |
| | | stockTakeComp.$on('box-returned', (boxNo) => { |
| | | this.$success(`æç®±ã${boxNo}ãååºæåï¼è¡¨æ ¼å°å·æ°ï¼`); |
| | | this.$refs.table.reload(); |
| | | }); |
| | | } |
| | | |
| | | }); |
| | | |
| | | // ========== æ°å¢æä½åï¼äººå·¥å¹³è´¦ + ææ¶æå平账 ========== |
| | | this.columns.push({ |
| | | field: 'operation', |
| | | title: 'æä½', |
| | | width: 200, |
| | | fixed: 'right', |
| | | align: 'center', |
| | | formatter: (row) => { |
| | | return ` |
| | | <span style="cursor: pointer;color: #2d8cf0;margin-right: 10px;" class="manual-reconciliation"> |
| | | <i class="el-icon-check"></i>人工平账 |
| | | </span> |
| | | <span style="cursor: pointer;color: #1989fa;" class="misc-reconciliation"> |
| | | <i class="el-icon-edit"></i>ææ¶æå平账 |
| | | </span> |
| | | `; |
| | | }, |
| | | click: (row, column, event) => { |
| | | const target = event.target; |
| | | // åºåç¹å»çæ¯äººå·¥å¹³è´¦è¿æ¯ææ¶æå平账 |
| | | if (target.closest('.manual-reconciliation')) { |
| | | this.handleManualReconciliation(row); // 人工平账é»è¾ |
| | | } else if (target.closest('.misc-reconciliation')) { |
| | | this.handleMiscReconciliation(row); // ææ¶æå平账é»è¾ |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | // ========== äººå·¥å¹³è´¦æ ¸å¿é»è¾ ========== |
| | | handleManualReconciliation(row) { |
| | | // å¼¹åºç¡®è®¤æ¡ |
| | | ElMessageBox.confirm( |
| | | 'ç¡®è®¤è¦æ§è¡äººå·¥å¹³è´¦æä½åï¼', |
| | | 'æä½ç¡®è®¤', |
| | | { |
| | | confirmButtonText: '确认', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | } |
| | | ).then(async () => { |
| | | // æ·»å é®ç½©å±é²æ¢éå¤ç¹å» |
| | | const loading = ElLoading.service({ |
| | | lock: true, |
| | | text: 'å¤çä¸ï¼è¯·ç¨å...', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }); |
| | | |
| | | try { |
| | | // è°ç¨äººå·¥å¹³è´¦æ¥å£ |
| | | const response = await this.http.get(`/api/TakeStockOrder/ManualReconciliation?id=${row.id}`); |
| | | if (response.status) { |
| | | ElMessage.success('人工平账æä½æåï¼'); |
| | | this.$refs.table.reload(); // å·æ°è¡¨æ ¼ |
| | | } else { |
| | | ElMessage.error(`æä½å¤±è´¥ï¼${response.message || 'æªç¥é误'}`); |
| | | } |
| | | } catch (error) { |
| | | } finally { |
| | | // å
³éé®ç½©å± |
| | | loading.close(); |
| | | } |
| | | }).catch(() => { |
| | | ElMessage.info('å·²åæ¶äººå·¥å¹³è´¦æä½'); |
| | | }); |
| | | }, |
| | | |
| | | // ========== ææ¶æåå¹³è´¦æ ¸å¿é»è¾ï¼ä¿®æ¹åï¼ ========== |
| | | handleMiscReconciliation(row) { |
| | | // éä¸å½åè¡ |
| | | const table = this.$refs.table.$refs.table; |
| | | if (table) { |
| | | table.clearSelection(); |
| | | table.toggleRowSelection(row, true); |
| | | } |
| | | |
| | | // è°ç¨æ¥å£è·åææ¶æåå¹³è´¦æ°æ® |
| | | const fetchMiscData = async () => { |
| | | const loading = ElLoading.service({ |
| | | lock: true, |
| | | text: 'å è½½æ°æ®ä¸...', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }); |
| | | |
| | | try { |
| | | // è°ç¨æ¥å£ï¼ä¼ érowä¸çremarkåidåæ° |
| | | const response = await this.http.get(`/api/TakeStockOrder/SelectOrder?remark=${row.remark || ''}&id=${row.id}`); |
| | | loading.close(); |
| | | |
| | | if (response.status) { |
| | | if (!Array.isArray(response.data) || response.data.length === 0) { |
| | | ElMessage.warning("æªæ¥è¯¢å°ç¸å
³æ°æ®"); |
| | | // æå¼ç©ºæ°æ®çå¼¹çª |
| | | this.$refs.gridHeader.open(row, []); |
| | | return; |
| | | } |
| | | |
| | | // æåéè¦å±ç¤ºçåæ®µ |
| | | const displayData = response.data.map(item => ({ |
| | | orderId: item.orderId || '', |
| | | materielCode: item.materielCode || '', |
| | | materielName: item.materielName || '', |
| | | batchNo: item.batchNo || '', |
| | | orderQuantity: item.orderQuantity || 0, |
| | | unit: item.unit || '', |
| | | supplyCode: item.supplyCode || '', |
| | | warehouseCode: item.warehouseCode || '' |
| | | })); |
| | | |
| | | // æå¼å¼¹çªå¹¶ä¼ éå¤çåçæ°æ® |
| | | this.$refs.gridHeader.open(row, displayData); |
| | | } else { |
| | | ElMessage.error(`æ¥è¯¢å¤±è´¥ï¼${response.message || 'æªç¥é误'}`); |
| | | } |
| | | } catch (error) { |
| | | loading.close(); |
| | | ElMessage.error(`ç½ç»å¼å¸¸ï¼${error.message || 'æ¥å£è°ç¨å¤±è´¥'}`); |
| | | } |
| | | }; |
| | | |
| | | // æ§è¡æ°æ®æ¥è¯¢å¹¶æå¼å¼¹çª |
| | | fetchMiscData(); |
| | | }, |
| | | |
| | | onInited() { |
| | | // æ¡æ¶åå§åå®æåæ§è¡ |
| | | }, |
| | | searchBefore(param) { |
| | | // æ¥è¯¢åæ¦æª |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | // æ¥è¯¢åæ°æ®å¤ç |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | // åå»è¡éä¸å½åè¡ |
| | | this.$refs.table.$refs.table.toggleRowSelection(row); |
| | | }, |
| | | modelOpenAfter(row) { |
| | | // æ°å»º/ç¼è¾å¼¹çªæå¼åå¤ç |
| | | } |
| | | }; |
| | | export default extension; |
| | | |
| | | } |
| | | }; |
| | | |
| | | export default extension; |