¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <!-- å详æ
--> |
| | | <el-drawer v-model="drawerVisible" :title="`${detailForm.poId}详æ
`" direction="rtl" size="80%" @close="handleDrawerClose"> |
| | | <template #title> |
| | | <div class="slot_title"> |
| | | <div class="title_orderNo">{{ title }}</div> |
| | | <div>详æ
</div> |
| | | </div> |
| | | </template> |
| | | |
| | | <div class="detailBoxWrap"> |
| | | <!-- 详æ
ç»ä»¶ --> |
| | | <open-details ref="propDetailRef"></open-details> |
| | | <div class="msi-form"> |
| | | <el-form :model="detailForm"> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="é¨ä»¶åç§°"> |
| | | <el-input v-model="detailForm.detailName" clearable placeholder="请è¾å
¥é¨ä»¶åç§°" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-form-item label-width="20px"> |
| | | <el-button type="primary" icon="el-icon-search" @click="getDetail">æ¥è¯¢</el-button> |
| | | <!-- <el-button type="primary" icon="ele-Printer" @click="getPrint">æå°</el-button> --> |
| | | <el-button type="primary" style="margin-left: 5px" icon="ele-Printer" @click="handleHtmlPrint"> æå° </el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <div class="msi-content"> |
| | | <!-- <p style="margin-bottom: 10px">ç©ææç»</p> --> |
| | | <el-table :data="drawerList" border striped :max-height="480"> |
| | | <el-table-column fixed="left" type="index" label="åºå·" width="55" align="center" /> |
| | | |
| | | <el-table-column prop="planNo" label="æ¹æ¬¡" show-overflow-tooltip="" /> |
| | | |
| | | <el-table-column prop="orderId" label="订åå·" show-overflow-tooltip="" /> |
| | | <el-table-column prop="info5" label="ç产åå·" show-overflow-tooltip="" /> |
| | | |
| | | <el-table-column prop="packageCode" label="å
è£
å·" show-overflow-tooltip="" /> |
| | | <el-table-column prop="upi" label="é¨ä»¶æ¡ç " show-overflow-tooltip="" /> |
| | | <el-table-column prop="detailName" label="é¨ä»¶åç§°" show-overflow-tooltip="" /> |
| | | |
| | | <!-- <el-table-column prop="placeCode" label="åºä½ç¼ç " show-overflow-tooltip="" /> |
| | | <el-table-column prop="inTime" label="è¿å
¥æ¶é´" width="80" :formatter="formatDate_T_Date" show-overflow-tooltip="" /> |
| | | <el-table-column prop="upi" label="é¨ä»¶æ¡ç " show-overflow-tooltip="" /> |
| | | <el-table-column prop="detailName" label="é¨ä»¶åç§°" show-overflow-tooltip="" /> |
| | | <el-table-column prop="planNo" label="æ¹æ¬¡" show-overflow-tooltip="" /> |
| | | <el-table-column prop="orderId" label="订åå·" show-overflow-tooltip="" /> |
| | | <el-table-column prop="packageCode" label="å
è£
å·" show-overflow-tooltip="" /> |
| | | <el-table-column prop="length" label="é¿" show-overflow-tooltip="" /> |
| | | <el-table-column prop="width" label="宽" show-overflow-tooltip="" /> |
| | | <el-table-column prop="thk" label="å" show-overflow-tooltip="" /> |
| | | <el-table-column prop="stockStatus" label="åºåç¶æ" show-overflow-tooltip=""> |
| | | <template #default="scope"> |
| | | <el-tag>{{ getEnumDesc(scope.row.stockStatus, getEnumStockStatusData_Index) }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="stockStatusName" label="åºåç¶æåç§°" show-overflow-tooltip="" /> |
| | | <el-table-column prop="operReason" label="æä½åå " show-overflow-tooltip="" /> |
| | | <el-table-column prop="operUser" label="æä½äºº" show-overflow-tooltip="" /> |
| | | <el-table-column prop="operTime" label="æä½æ¶é´" width="80" :formatter="formatDate_T_Date" show-overflow-tooltip="" /> |
| | | <el-table-column prop="lockStatus" label="éå®ç¶æ" show-overflow-tooltip=""> |
| | | <template #default="scope"> |
| | | <el-tag>{{ getEnumDesc(scope.row.lockStatus, getEnumLockStatusData_Index) }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="lockReason" label="éå®åå " show-overflow-tooltip="" /> |
| | | <el-table-column prop="lockUser" label="éå®äºº" show-overflow-tooltip="" /> |
| | | <el-table-column prop="lockTime" label="é宿¶é´" width="80" :formatter="formatDate_T_Date" show-overflow-tooltip="" /> |
| | | <el-table-column prop="remarks" label="夿³¨" show-overflow-tooltip="" /> |
| | | <el-table-column prop="createTime" label="å建æ¶é´" width="130" :formatter="formatDate_T_Time" show-overflow-tooltip="" /> |
| | | <el-table-column prop="updateTime" label="ä¿®æ¹æ¶é´" width="130" :formatter="formatDate_T_Time" show-overflow-tooltip="" /> |
| | | <el-table-column prop="createUserName" label="å建人" show-overflow-tooltip="" /> |
| | | <el-table-column prop="updateUserName" label="ä¿®æ¹äºº" show-overflow-tooltip="" /> --> |
| | | </el-table> |
| | | <Pagination :total="detailCount" v-model:page="detailForm.Page" v-model:limit="detailForm.PageSize" @pagination="getDetail" style="margin-top: 20px; text-align: center"></Pagination> |
| | | |
| | | <div></div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- æå° --> |
| | | <print-table-ckd ref="printTableRef"></print-table-ckd> |
| | | </el-drawer> |
| | | |
| | | </div> |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import Pagination from '/@/components/Pagination/index.vue'; |
| | | import { ElMessage, ElMessageBox } from 'element-plus'; |
| | | import { ref, nextTick, computed, getCurrentInstance, watch, defineExpose, defineProps, onMounted } from 'vue'; |
| | | import { getAPI } from '/@/utils/axios-utils'; |
| | | import { SysEnumApi } from '/@/api-services/api'; |
| | | import printJS from 'print-js'; |
| | | import { addWmsOrderPurchase, updateWmsOrderPurchase, detailWmsOrderPurchase } from '/@/api/main/WmsOrder/wmsOrderPurchase'; |
| | | import OpenDetails from '/@/components/openDetails/openDetails.vue'; |
| | | import { pageBaseCustomer } from '/@/api/main/WmsBase/baseCustomer'; |
| | | import { listWmsOrderPurchaseDetails, pageWmsOrderPurchaseDetails } from '/@/api/main/WmsOrder/wmsOrderPurchaseDetails'; |
| | | import commonFunction from '/@/utils/commonFunction'; |
| | | import { handleSlectDataWmsBusinessType } from '/@/utils/selectData'; |
| | | import printTableCkd from '/@/components/printTableCkd.vue'; |
| | | // æ¨è设置æä½ width 为 200 |
| | | import { hiprint } from 'vue-plugin-hiprint'; |
| | | import { SysPrintApi } from '/@/api-services/api'; |
| | | import { SysPrint } from '/@/api-services/models'; |
| | | import { ShortagePage } from '/@/api/main/ReportCenter/wmsStockQuan'; |
| | | |
| | | const moveType = 10; //ç§»å¨ç±»å å
¥åº |
| | | const { proxy }: any = getCurrentInstance(); // 访é®å®ä¾ä¸ä¸æ proxyåæ¶æ¯æå¼å 线ä¸ç¯å¢ |
| | | const getEnumOrderTypeData = ref<any>([]); |
| | | |
| | | const getEnumDockData = ref<any>([]); |
| | | const getBusinessTypeData_Index = ref<any>([]); //ä¸å¡ç±»å create by liuwq |
| | | const getEnumPoStatusData = ref<any>([]); |
| | | const { getEnumDesc } = commonFunction(); |
| | | const emits = defineEmits(['getTabelData']); |
| | | const getEnumPoDetailStatusData_Index = ref<any>([]); |
| | | const getEnumOrderTypeData_Index = ref<any>([]); |
| | | |
| | | const props = defineProps({ |
| | | titleAuthor: { |
| | | type: Number, |
| | | required: true, |
| | | }, |
| | | hexiao: { |
| | | type: Number, |
| | | default: 1, |
| | | required: true, |
| | | }, |
| | | }); |
| | | //æ§å¶è®¢åç±»å - 䏿èå |
| | | const titleAuthor = computed(() => props.titleAuthor); |
| | | // æ¯å¦æ¾ç¤ºæ ¸éæé® |
| | | const hexiao = computed(() => props.hexiao); |
| | | const loading = ref(false); |
| | | |
| | | const getEnumStockStatusData_Index = ref<any>([]); |
| | | const getEnumLockStatusData_Index = ref<any>([]); |
| | | |
| | | // form表åå±å¼ |
| | | |
| | | const orderType = ref(''); |
| | | const orderDoRuType = ref(); // ç¨äºå¯¼å
¥çåé |
| | | const itemBtn = ref(1); |
| | | // æ§å¶bomç©ææé |
| | | const isShowBomBtn = ref(0); |
| | | |
| | | // ç¦æ¢ä¹åçæ¥æ |
| | | const disabledDate = (time: Date) => { |
| | | return time.getTime() + 3600 * 1000 * 24 < Date.now(); |
| | | }; |
| | | // ä¸ä¼ çªå£ |
| | | const uploadVisible = ref(false); |
| | | |
| | | //------------sapè·åPOå |
| | | const outVisible2 = ref(false); |
| | | const outerForm2 = ref({ |
| | | purchaseNo: '', |
| | | }); |
| | | const getSapOrderPO = (param?: number) => { |
| | | if (param && param == 1) { |
| | | outVisible2.value = true; |
| | | return; |
| | | } |
| | | if (outerForm2.value.purchaseNo == '') { |
| | | ElMessage.warning('请è¾å
¥åå·'); |
| | | return; |
| | | } |
| | | }; |
| | | //å
³éåºåºçªå£çåè° |
| | | const closeOutDialog2 = () => { |
| | | outerForm2.value.purchaseNo = ''; |
| | | }; |
| | | |
| | | //------------sapè·åPOå |
| | | |
| | | // --------------------POåå表----------------------------------- |
| | | //æ¥è¯¢ |
| | | const formModel = ref({ |
| | | WareMaterialCode: '', |
| | | WareMaterialName: '', |
| | | PurchaseNo: '', |
| | | CreatedUserName: '', |
| | | CreatedTimeBegin: '', |
| | | CreatedTimeEnd: '', |
| | | CreateDate: [], |
| | | IssueTimeBegin: '', |
| | | IssueTimeEnd: '', |
| | | IssueDate: [], |
| | | MaterialTypeStaus: '', |
| | | SourceBy: '', |
| | | WriteOffState: '', |
| | | signStatus: '', |
| | | status: '', |
| | | freeOrderType: '', |
| | | IsQueryAll: false, //æ¯å¦æ¾ç¤ºå
¨é¨æ°æ® |
| | | // LoginUserID: LoginUserID, //ç¨æ·id |
| | | OrderMenuType: '', //夿æ¯åªä¸ªèåå
¥åº |
| | | Page: 1, |
| | | PageSize: 10, |
| | | poApprovalStatus: '', |
| | | keyCode: '', |
| | | IsDisable: '', //æ¯å¦ä½åº |
| | | }); |
| | | |
| | | //å
¥åºååè¡¨æ°æ® |
| | | let tableData = ref([]); |
| | | const tableRef = ref(); |
| | | |
| | | //åè¡¨çæ°æ®æ¡æ° |
| | | const totalItems = ref<number>(0); |
| | | |
| | | // //ç¼åæä¸¾ |
| | | // const enumList: any = cache.getCache('enumList'); |
| | | // console.log(enumList.inEnumOrderType); |
| | | |
| | | //è·åPOåå表 |
| | | const getTabelData = () => { |
| | | //夿å建æ¶é´æ¯å¦æéæ© |
| | | if (formModel.value.CreateDate && formModel.value.CreateDate.length > 0) { |
| | | formModel.value.CreatedTimeBegin = formModel.value.CreateDate[0]; |
| | | formModel.value.CreatedTimeEnd = ''; //addDate(formModel.value.CreateDate[1], 1); //æ¥ææ¥è¯¢ ç»ææ¶é´ éè¦å ä¸å¤© |
| | | } else { |
| | | // æ¥åæ¸
空 åæ¥è¯¢bug |
| | | if (formModel.value.CreatedTimeBegin || formModel.value.CreatedTimeEnd) { |
| | | formModel.value.CreatedTimeBegin = ''; |
| | | formModel.value.CreatedTimeEnd = ''; |
| | | } |
| | | } |
| | | //夿ä¸åæ¶é´æ¯å¦æéæ© |
| | | if (formModel.value.IssueDate && formModel.value.IssueDate.length > 0) { |
| | | formModel.value.IssueTimeBegin = formModel.value.IssueDate[0]; |
| | | formModel.value.IssueTimeEnd = formModel.value.IssueDate[1]; |
| | | } else { |
| | | // æ¥åæ¸
空 åæ¥è¯¢bug |
| | | if (formModel.value.IssueTimeBegin || formModel.value.IssueTimeEnd) { |
| | | formModel.value.IssueTimeBegin = ''; |
| | | formModel.value.IssueTimeEnd = ''; |
| | | } |
| | | } |
| | | }; |
| | | getTabelData(); |
| | | |
| | | //éç½®æç´¢ |
| | | const resetForm = () => { |
| | | formModel.value = { |
| | | WareMaterialCode: '', |
| | | WareMaterialName: '', |
| | | PurchaseNo: '', |
| | | CreatedUserName: '', |
| | | CreatedTimeBegin: '', |
| | | CreatedTimeEnd: '', |
| | | CreateDate: [], |
| | | IssueTimeBegin: '', |
| | | IssueTimeEnd: '', |
| | | IssueDate: [], |
| | | MaterialTypeStaus: '', |
| | | SourceBy: '', |
| | | WriteOffState: '', |
| | | signStatus: '', |
| | | status: '', |
| | | freeOrderType: '', |
| | | IsQueryAll: false, //æ¯å¦æ¾ç¤ºå
¨é¨æ°æ® |
| | | // LoginUserID: LoginUserID, //ç¨æ·id |
| | | OrderMenuType: '', //夿æ¯åªä¸ªèåå
¥åº |
| | | Page: 1, |
| | | PageSize: 10, |
| | | poApprovalStatus: '', |
| | | keyCode: '', |
| | | IsDisable: '', //æ¯å¦ä½åº |
| | | }; |
| | | getTabelData(); |
| | | }; |
| | | // -----------------å é¤ãå¯¼åºæä½-------------------------- |
| | | //éä¸çè¡ |
| | | const checkRows = ref<{ id: number }[]>([]); |
| | | // éæ© |
| | | const handleSelectionChange = (val: any) => { |
| | | checkRows.value = val; |
| | | }; |
| | | |
| | | // -------------------è·åPOåä¸ç©æè¯¦æ
----------------------------------- |
| | | //å
¥åºåä¸ç©æè¯¦æ
è¯·æ± |
| | | const detailForm = ref({ |
| | | detailName: '', |
| | | packageCode: '', |
| | | Page: 1, |
| | | PageSize: 10, |
| | | }); |
| | | |
| | | // ç©æè¯¦æ
æ½å± |
| | | const drawerVisible = ref(false); |
| | | const drawerType = ref('drawerAll'); |
| | | // const |
| | | //åå· |
| | | const purchaseNo = ref(''); |
| | | const IsKitting = ref(false); |
| | | //æå¼æ½å± |
| | | const openDrawer = async (type: number, scope: any = {}, entozhExcell?: any) => { |
| | | detailForm.value.Page = 1; //bug:ç¹ç¼è¾-åç¹è¯¦æ
|
| | | detailForm.value.PageSize = 10; //bug:ç¹ç¼è¾-åç¹è¯¦æ
|
| | | if (scope.info5) { |
| | | title.value = `${scope.info5}`; |
| | | } |
| | | drawerType.value = 'drawerAll'; |
| | | drawerVisible.value = true; |
| | | detailForm.value.info5 = scope.info5; |
| | | purchaseNo.value = scope.info5; |
| | | debugger; |
| | | //è·åç©æå表 |
| | | if (detailForm.value.info5 == '') { |
| | | drawerList.value = []; |
| | | detailCount.value = 0; |
| | | return; |
| | | } |
| | | //------------------è·åç©æåè¡¨ç©ææç» |
| | | getDetail(); |
| | | //------------------è·åç©æåè¡¨ç©ææç» |
| | | getEnumStockStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('StockStatusEnum')).data.result ?? []; |
| | | getEnumLockStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('LockStatusEnum')).data.result ?? []; |
| | | |
| | | //----------------ç©ææç» |
| | | // æ ¹æ®ç¶æè½¬ä¸æ ä¿ç3ä½å°æ° |
| | | let scopetrans = JSON.parse(JSON.stringify(scope)); |
| | | // scopetrans.totalquantity = Number(scopetrans.totalquantity).toFixed(3); |
| | | nextTick(() => { |
| | | scopetrans.poStatus = getEnumDesc(scopetrans.poStatus, getEnumPoDetailStatusData_Index.value); |
| | | scopetrans.businessType = getEnumDesc(scopetrans.businessType, getBusinessTypeData_Index.value); |
| | | scopetrans.orderType = getEnumDesc(scopetrans.orderType, getEnumOrderTypeData_Index.value); |
| | | proxy.$refs['propDetailRef'].openADialog(scopetrans, entozhExcell); |
| | | }); |
| | | }; |
| | | |
| | | //å
³éæ½å± |
| | | const handleDrawerClose = () => { |
| | | detailForm.value = { |
| | | detailName: '', |
| | | packageCode: '', |
| | | Page: 1, |
| | | PageSize: 10, |
| | | }; |
| | | deltailList.value = []; |
| | | detailCount.value = 0; |
| | | drawerList.value = []; |
| | | detailCount.value = 0; |
| | | }; |
| | | |
| | | //ç©æè¯¦æ
ç±»å |
| | | interface DetailType { |
| | | id: number; |
| | | } |
| | | |
| | | //å
¥åºå详æ
å表 |
| | | const deltailList = ref<DetailType[]>([]); |
| | | //å¼¹åºå±æ°æ® |
| | | const drawerList = ref<DetailType[]>([]); |
| | | |
| | | //å
¥åºå详æ
åè¡¨æ°æ®æ¡æ° |
| | | const detailCount = ref(0); |
| | | |
| | | //å¼¹åºå±æ é¢ |
| | | let title = ref(''); |
| | | //è·åå
¥åºåä¸ç©æè¯¦æ
|
| | | const getDetail = async (callback?: any) => { |
| | | loading.value = true; |
| | | |
| | | var res = await ShortagePage(Object.assign(detailForm.value)); |
| | | if (callback == 1) { |
| | | //ç¼è¾å
¥å£ |
| | | warehousOrderDetails.value = res.data.result?.items ?? []; |
| | | detailCount.value = res.data.result?.total; |
| | | } else { |
| | | drawerList.value = res.data.result?.items ?? []; |
| | | detailCount.value = res.data.result?.total; |
| | | } |
| | | loading.value = false; |
| | | }; |
| | | // ----------------æ°å¢ãç¼è¾------------------------------- |
| | | //çªå£ç±»å |
| | | const dialogType = ref('add'); |
| | | |
| | | const dialogVisible = ref(false); |
| | | |
| | | //æ·»å ç¼è¾è¡¨åref |
| | | const dialogRef = ref(); |
| | | |
| | | //æ·»å /ç¼è¾åæ° |
| | | let addForm = ref({ |
| | | createdTime: '', |
| | | updatedTime: '', |
| | | createdUserName: '', |
| | | createdUserId: '', |
| | | purchaseNo: '', |
| | | purchaserUserId: 0, |
| | | basicExpressInfoCode: null, |
| | | materialType: '', //5 |
| | | status: 0, |
| | | supplierCode: '', |
| | | supplierName: '', |
| | | remark: '', |
| | | deliveryType: 1, |
| | | EstimatedDate: '', |
| | | purchaseOrderDetails: [] as any[], |
| | | dI_NO: '', |
| | | sJ_NO: '', |
| | | machineToolTypeName: '', |
| | | machineToolNo: '', |
| | | freeOrderType: '', |
| | | }); |
| | | |
| | | //rules |
| | | const formRules = { |
| | | businessType: [{ required: true, message: 'è¯·éæ©ä¸å¡ç±»åï¼', trigger: 'change' }], |
| | | supplierCode: [{ required: true, message: '请è¾å
¥ä¾åºåï¼', trigger: 'blur' }], |
| | | purchaseNo: [{ required: true, message: '请è¾å
¥POåå·ï¼', trigger: 'blur' }], |
| | | orderTypeName: [{ required: true, message: '请è¾å
¥è®¢åç±»ååç§°ï¼', trigger: 'blur' }], |
| | | }; |
| | | //æå¼æ°å¢ãç¼è¾çªå£ |
| | | const openDialog = async (type: number, scope: any = {}) => { |
| | | handleQueryTdp(); |
| | | getEnumOrderTypeData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('OrderTypeEnum')).data.result ?? []; |
| | | getBusinessTypeData_Index.value = await handleSlectDataWmsBusinessType(moveType); //ä¸æè¯»åä¸å¡ç±»åæ¥å£ create by liuwq |
| | | getEnumPoStatusData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('OrderStatusEnum')).data.result ?? []; |
| | | |
| | | getEnumDockData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('DockEnum')).data.result ?? []; |
| | | |
| | | if (type == 1) { |
| | | detailForm.value.PageSize = 10; |
| | | dialogType.value = 'add'; |
| | | } else { |
| | | dialogType.value = 'edit'; |
| | | detailForm.value.PageSize = 1000; |
| | | addForm.value = { ...scope }; |
| | | |
| | | console.log(addForm.value); |
| | | detailForm.value.poId = scope.id; |
| | | //è·åç©æ - åè°å½æ°æ¿æ¢å®æ¶å¨ |
| | | |
| | | //------------------è·åç©æåè¡¨ç©ææç» |
| | | getDetail(1); |
| | | //----------------ç©ææç» |
| | | } |
| | | dialogVisible.value = true; |
| | | load.value = false; |
| | | //æ¸
é¤éä¸é¡¹ |
| | | nextTick(() => { |
| | | if (dialogRef.value) { |
| | | dialogRef.value.clearValidate(); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | //ç©æè¯¦æ
çtable ref |
| | | const detailRef = ref(); |
| | | const setRowKey = (row: any) => { |
| | | return row.id + row.poLineNumber; |
| | | }; |
| | | //å
³éçªå£ |
| | | const closeDialog = () => { |
| | | load.value = false; |
| | | addForm.value = { |
| | | createdTime: '', |
| | | updatedTime: '', |
| | | createdUserName: '', |
| | | createdUserId: '', |
| | | purchaseNo: '', |
| | | purchaserUserId: 0, |
| | | basicExpressInfoCode: null, |
| | | materialType: '', //5 |
| | | status: 0, |
| | | supplierCode: '', |
| | | supplierName: '', |
| | | remark: '', |
| | | deliveryType: 1, |
| | | EstimatedDate: '', |
| | | purchaseOrderDetails: [] as any[], |
| | | dI_NO: '', |
| | | sJ_NO: '', |
| | | machineToolTypeName: '', |
| | | machineToolNo: '', |
| | | freeOrderType: '', |
| | | }; |
| | | warehousOrderDetails.value = []; |
| | | checkedDetails.value = []; |
| | | deltailList.value = []; |
| | | detailCount.value = 0; |
| | | detailRef.value.clearSelection(); |
| | | }; |
| | | |
| | | //æ·»å ç¼è¾çªå£ç©æå表 |
| | | const warehousOrderDetails = ref<any[]>([]); |
| | | |
| | | //ç©æè¯¦æ
å表éä¸çç©æ |
| | | const checkedDetails = ref<any[]>([]); |
| | | |
| | | //ç©æè¯¦æ
å表ä¸å¾éäºä»¶ |
| | | const detailsCheckChange = (val: any) => { |
| | | checkedDetails.value = val; |
| | | }; |
| | | |
| | | //å é¤éä¸çç©æè¯¦æ
|
| | | const delCheckedDetails = () => { |
| | | ElMessageBox.confirm('æ¯å¦ç¡®è®¤å é¤ï¼', 'æç¤º', { |
| | | confirmButtonText: '确认', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning', |
| | | }) |
| | | .then(() => { |
| | | let arr = []; |
| | | if (checkedDetails.value[0].diRelationID) { |
| | | checkedDetails.value.forEach((item) => { |
| | | console.log(item); |
| | | let index = warehousOrderDetails.value.findIndex((detail) => detail.code == item.code && detail.diRelationID == item.diRelationID); |
| | | if (index > -1) { |
| | | warehousOrderDetails.value.splice(index, 1); |
| | | } |
| | | }); |
| | | } else { |
| | | checkedDetails.value.forEach((item) => { |
| | | let index = warehousOrderDetails.value.findIndex((detail) => detail.code == item.code && detail.poLineNumber == item.poLineNumber); |
| | | warehousOrderDetails.value.splice(index, 1); |
| | | }); |
| | | } |
| | | arr = warehousOrderDetails.value; |
| | | warehousOrderDetails.value = []; |
| | | //bug ç¸åç©æ ä¸åBom |
| | | nextTick(() => { |
| | | warehousOrderDetails.value = arr; |
| | | checkedDetails.value = []; |
| | | detailRef.value.clearSelection(); |
| | | }); |
| | | }) |
| | | .catch(() => ElMessage.info('已忶å é¤')); |
| | | }; |
| | | |
| | | const load = ref(false); |
| | | //ç¼è¾ãæ·»å æäº¤ |
| | | const confirm = () => { |
| | | dialogRef.value.validate(async (vali: any) => { |
| | | if (vali) { |
| | | console.log('确认'); |
| | | if (warehousOrderDetails.value.length < 0) { |
| | | ElMessage.warning('è¯·éæ©ç©æ'); |
| | | return; |
| | | } |
| | | let idx = warehousOrderDetails.value.findIndex((v) => v.poLineNumber == '' || v.poLineNumber == undefined); |
| | | if (idx > -1) { |
| | | ElMessage.warning('请è¾å
¥è¡å·'); |
| | | return; |
| | | } |
| | | let isNext = ''; |
| | | warehousOrderDetails.value.forEach((item) => { |
| | | const arr: any = warehousOrderDetails.value.filter((detail) => detail.poLineNumber == item.poLineNumber); |
| | | if (arr.length > 1) { |
| | | isNext = `è¡å·ï¼${arr[0].poLineNumber}ä¸è½ç¸å`; |
| | | return; |
| | | } |
| | | }); |
| | | if (isNext != '') { |
| | | ElMessage.warning(isNext); |
| | | return; |
| | | } |
| | | |
| | | let idx2 = warehousOrderDetails.value.findIndex((v) => v.quantity == '' || v.quantity == undefined || v.quantity <= 0); |
| | | if (idx2 > -1) { |
| | | ElMessage.warning('æ°éä¸åè§èï¼'); |
| | | return; |
| | | } |
| | | addForm.value.purchaseOrderDetails = []; |
| | | warehousOrderDetails.value.forEach((item) => { |
| | | const obj = { |
| | | poId: item.poId || 0, |
| | | materialCode: item.materialCode, |
| | | materialName: item.materialName, |
| | | id: item.id || '', |
| | | quantity: item.quantity, |
| | | barNo: item.barNo, |
| | | remark: addForm.value.remark, |
| | | poLineNumber: item.poLineNumber, |
| | | materialType: item.deliveryType, |
| | | clientCode: item.diCustomCode || '', |
| | | clientChinaName: item.diCustomChinaName || '', |
| | | plannedStartTime: item.plannedStartTime, |
| | | plannedEndTime: item.plannedEndTime, |
| | | projectNo: item.projectNo, |
| | | erpCode: item.erpCode, |
| | | supplierBatch: item.supplierBatch, |
| | | unit: item.unit, |
| | | }; |
| | | addForm.value.purchaseOrderDetails.push(obj); |
| | | }); |
| | | load.value = true; |
| | | //æ·»å |
| | | if (dialogType.value == 'add') { |
| | | load.value = true; |
| | | let res = await addWmsOrderPurchase(addForm.value); |
| | | if (res.data && res.data.code == 200) { |
| | | ElMessage.success('æ·»å æå'); |
| | | dialogVisible.value = false; |
| | | emits('getTabelData'); |
| | | } |
| | | load.value = false; |
| | | } else { |
| | | load.value = true; |
| | | let res = await updateWmsOrderPurchase(addForm.value); |
| | | if (res.data && res.data.code == 200) { |
| | | ElMessage.success('ç¼è¾æå'); |
| | | dialogVisible.value = false; |
| | | emits('getTabelData'); |
| | | } |
| | | load.value = false; |
| | | } |
| | | } else { |
| | | ElMessage.warning('表åéªè¯å¤±è´¥'); |
| | | } |
| | | }); |
| | | }; |
| | | // -----------------æ·»å ç©ææä½------------------------- |
| | | //ç©æåºç¡æ°æ®çªå£ |
| | | const addMaterialVisible = ref(false); |
| | | |
| | | //ç©æåºç¡æ°æ®å表 |
| | | const materialList = ref([]); |
| | | |
| | | //ç©æåºç¡æ°æ®æ¡æ° |
| | | const materialTotal = ref(0); |
| | | |
| | | //ç©æåºç¡æ°æ®form |
| | | const materialForm = ref({ |
| | | MaterialTypeId: '', |
| | | Code: '', |
| | | MaterialCode: '', |
| | | // MaterialType: 1, |
| | | Page: 1, |
| | | PageSize: 10, |
| | | }); |
| | | |
| | | //è·åç©æåºç¡å表 |
| | | const getMaterialList = async () => { |
| | | loading.value = true; |
| | | // var res = await pageWmsMaterial(Object.assign(queryParams.value, tableParams.value)); |
| | | var res = await pageWmsMaterial(Object.assign(materialForm.value)); |
| | | |
| | | materialList.value = res.data.result?.items ?? []; |
| | | //tableParams.value.total = res.data.result?.total; |
| | | materialTotal.value = res.data.result?.total; |
| | | loading.value = false; |
| | | }; |
| | | |
| | | //éç½®ç©æ |
| | | const resetMaterialForm = () => { |
| | | materialForm.value = { |
| | | MaterialTypeId: '', |
| | | Code: '', |
| | | MaterialCode: '', |
| | | Page: 1, |
| | | // MaterialType: 1, |
| | | PageSize: 10, |
| | | }; |
| | | getMaterialList(); |
| | | }; |
| | | |
| | | //éä¸çåºç¡ç©ææ°æ® |
| | | const checkedMaterial = ref<any[]>([]); |
| | | |
| | | //ç©æåºç¡æ°æ®å¾é |
| | | const materialSelectionChange = (val: any) => { |
| | | checkedMaterial.value = val; |
| | | }; |
| | | |
| | | //æå¼æ°å¢ç©æçªå£ |
| | | const addMaterialDialog = () => { |
| | | // if ( addForm.value.freeOrderType && isShowBomBtn.value ) { |
| | | // ElMessage.warning("å
è´¹ä»¶ç±»åæ¯PR2ï¼åªè½æ°å¢DIç»´æ¤çç©æï¼"); |
| | | // return; |
| | | // } |
| | | getMaterialList(); |
| | | addMaterialVisible.value = true; |
| | | }; |
| | | |
| | | //åºç¡ç©ætableçref对象 |
| | | const materialRef = ref(); |
| | | |
| | | //ç¡®è®¤æ·»å ææ |
| | | const confirmAddMaterial = () => { |
| | | //ç©æåè¡¨æ²¡æ°æ®ï¼ç´æ¥æ·»å |
| | | if (warehousOrderDetails.value.length == 0) { |
| | | // èªå¨ç»è¡å·å¤å¼ |
| | | checkedMaterial.value.forEach((item, index) => { |
| | | item.unit = item.poUnit; |
| | | if (!item.poLineNumber) { |
| | | item.poLineNumber = index + 1 + warehousOrderDetails.value.length; |
| | | } |
| | | }); |
| | | |
| | | warehousOrderDetails.value.push(...checkedMaterial.value); |
| | | } else { |
| | | for (let i = 0; i < checkedMaterial.value.length; i++) { |
| | | let idx = warehousOrderDetails.value.findIndex( |
| | | (item: { poLineNumber: any; code: any }) => item.code == checkedMaterial.value[i].code && item.poLineNumber == checkedMaterial.value[i].poLineNumber |
| | | ); |
| | | if (idx > -1) { |
| | | return ElMessage.warning(`ç©æç¼å·${checkedMaterial.value[i].code}ï¼è¡å·ï¼${checkedMaterial.value[i].poLineNumber || ''}å¨ç©æå表ä¸å·²åå¨,请å»é¤å¾é`); |
| | | } |
| | | } |
| | | |
| | | // èªå¨ç»è¡å·å¤å¼ |
| | | checkedMaterial.value.forEach((item, index) => { |
| | | item.unit = item.poUnit; |
| | | if (!item.poLineNumber) { |
| | | item.poLineNumber = index + 1 + warehousOrderDetails.value.length; |
| | | } |
| | | }); |
| | | warehousOrderDetails.value.push(...checkedMaterial.value); |
| | | } |
| | | |
| | | addMaterialVisible.value = false; |
| | | }; |
| | | |
| | | //å
³éæ°å¢ç©æçªå£ |
| | | const closeMaterialDialog = () => { |
| | | materialForm.value = { |
| | | MaterialTypeId: '', |
| | | Code: '', |
| | | Page: 1, |
| | | // MaterialType: 1, |
| | | PageSize: 10, |
| | | }; |
| | | materialList.value = []; |
| | | checkedMaterial.value = []; |
| | | materialRef.value.clearSelection(); |
| | | }; |
| | | |
| | | // 页é¢å è½½æ¶ |
| | | onMounted(async () => {}); |
| | | |
| | | // æå° |
| | | let itemSubTitle = ref<any[]>([]); |
| | | const handleHtmlPrint = () => { |
| | | proxy.$refs['printTableRef'].printHd('缺件æ¸
å', {}, drawerList.value); //deltailList |
| | | |
| | | // proxy.$refs['printTableRef'].printHd('缺件æ¸
å', itemSubTitle.value, drawerList.value); //deltailList |
| | | }; |
| | | |
| | | // æ´é²æ¹æ³ |
| | | defineExpose({ openDialog, openDrawer }); |
| | | </script> |
| | | <style lang="less" scoped> |
| | | .detailBoxWrap { |
| | | margin: 10px; |
| | | } |
| | | |
| | | .msi-form { |
| | | margin-top: 10px; |
| | | } |
| | | .msi-form { |
| | | margin-bottom: 10px; |
| | | } |
| | | .slot_title { |
| | | display: flex; |
| | | align-items: center; |
| | | // margin-left: 20px; |
| | | .title_orderNo { |
| | | font-size: 18px; |
| | | color: #f18201; |
| | | font-weight: bold; |
| | | margin-right: 5px; |
| | | } |
| | | } |
| | | </style> |