From 0a7bf282841eea43da4406f9a9d14e31a72fea75 Mon Sep 17 00:00:00 2001 From: liuying <1427574514@qq.com> Date: 周二, 26 11月 2024 15:32:15 +0800 Subject: [PATCH] 打印模版 --- LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/component/openAllprop.vue | 34 + LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts | 12 LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/index.vue | 7 LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs | 125 +++++ LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/kittingList/component/openAllprop.vue | 31 LA24030_LuLiPackageLine_Web/src/components/printTableCkd.vue | 412 ++++++++++++++++++ LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/shortageList/index.vue | 652 +++++++++++++++-------------- LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/Dto/WmsStockQuanOutput.cs | 37 + 8 files changed, 979 insertions(+), 331 deletions(-) diff --git a/LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts b/LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts index 48c02ec..ebbd087 100644 --- a/LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts +++ b/LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts @@ -4,6 +4,7 @@ DeleteWmsStockQuan = '/api/wmsStockQuan/delete', UpdateWmsStockQuan = '/api/wmsStockQuan/update', PageWmsStockQuan = '/api/wmsStockQuan/page', //888 + ShortagePage = '/api/wmsStockQuan/ShortagePage', PageStockQuanForUse= '/api/wmsStockQuan/getStockQuanPageForUse', ListWmsStockQuan = '/api/wmsStockQuan/list', DetailWmsStockQuan = '/api/wmsStockQuan/detail', @@ -66,6 +67,17 @@ data: params }); + + + // 鍒嗛〉鏌ヨ瀹炴椂搴撳瓨 +export const ShortagePage = (params?: any) => + request({ + url: Api.ShortagePage, + method: 'post', + data: params + }); + + // 鍒嗛〉鏌ヨ鍙敤瀹炴椂搴撳瓨 export const pageStockQuanForUse = (params?: any) => request({ diff --git a/LA24030_LuLiPackageLine_Web/src/components/printTableCkd.vue b/LA24030_LuLiPackageLine_Web/src/components/printTableCkd.vue new file mode 100644 index 0000000..ca6fb4e --- /dev/null +++ b/LA24030_LuLiPackageLine_Web/src/components/printTableCkd.vue @@ -0,0 +1,412 @@ +<!--鎵撳嵃鍐呭 --> +<template> + <div id="printContent" class="printContent"> + <div class="printWp" v-for="(itemW, indexW) in deltailList" :key="indexW"> + <!-- <div class="t1">{{Name[0]}} {{Name[1]}} {{Name[2]}}</div> --> + + <div class="t1">{{ Name }}</div> + + <div class="header_pt"> + <div class="box1"> + + <img class="imgL" src="http://localhost:8888/src/assets/logo-mini.png" alt="" /> + + <!-- <img class="imgL" src="@/assets/logo.png" alt="" /> --> + <div class="t2"> + <p class="text1"> + <!-- MAKINO J CHINA CO.,LTD<br /> --> + 椴佷附鏈ㄤ笟鑲′唤鏈夐檺鍏徃 + </p> + </div> + </div> + <div class="box-t1"> + <div> + 鍗曞彿锛�<span>{{ itemTitle.orderNo }}</span> + </div> + <!-- <div>DO鎬ц川锛歿{ itemTitle.doNature }}<span></span> </div> --> + <div> + <!-- 鍚堝悓鍙凤細{{ itemTitle.customOrderNumber }}<span></span> --> + <div> + <span> {{ DateToday }}</span> + </div> + </div> + <div class="t4"> + <!-- 鏀惰揣鏂癸細 <span>{{ itemTitle.clientName }}</span> --> + </div> + </div> + </div> + + <div class="tableBox"> + <table cellspacing="0" cellpadding="0"> + <tr class="middle_first"> + <td class="middle_tree">缂栧彿</td> + <!-- <td class="middle_one">瀹㈡埛鐗╂枡浠g爜</td> + <td class="middle_one">瀹㈡埛鐗╂枡鍚嶇О</td> --> + <td class="middle_one">鎵规</td> + <td class="middle_two">璁㈠崟鍙�</td> + <td class="middle_four">鍖呰鍙�</td> + <td class="middle_one">缂烘枡鏁�</td> + </tr> + <tr class="middle_first" v-for="(item, index) in itemW" :key="index"> + <td class="middle_tree">{{ item.num }}</td> + <!-- <td class="middle_one"> + <div> + {{ item.customMaterialcode }} + </div> + </td> + <td class="middle_one"> + <div> + {{ item.customMaterialName }} + </div> + </td> --> + <td class="middle_one"> + <div> + {{ item.planNo }} + </div> + </td> + <td class="middle_two"> + <div> + {{ item.orderId }} + </div> + </td> + <td class="middle_four"> + <div> + {{ item.packageCode }} + </div> + </td> + <td class="middle_one"> + <div> + {{ item.shortageCount }} + </div> + </td> + </tr> + </table> + </div> + <!-- <br /> <br /> --> + <!-- <div class="box-t2"> + <div>渚涜揣鏂圭‘璁わ細鐗ч噹姹借溅瑁呭锛堟姹夛級鏈夐檺鍏徃 </div> + <div> 绛炬敹浜猴紙浠f敹浜猴級锛� </div> + </div> --> + <!-- 濮撳悕 鐢佃瘽 鍦板潃 --> + <!-- <div class="box-t2"> + <div>濮撳悕&鐢佃瘽锛�</div> + <div> 鏃ユ湡锛� </div> + </div> --> + <!-- <div class="box-t2 box-t2R"> + <div>鍦板潃锛�</div> + </div> --> + <span class="pageNum">{{ indexW + 1 }}</span> + </div> + </div> +</template> +<script lang="ts" setup> +import { ref, nextTick, computed, defineExpose, defineEmits, markRaw, defineProps } from 'vue'; +import printJS from 'print-js'; +// import { formatUtcToData } from "@/utils/formate"; + +const Name = ref([]); +const DateToday = ref(''); +const itemTitle: any = ref({}); +const deltailList = ref<any[]>([]); +const splitArray = (array: any, size: any) => { + let data = []; + for (let i = 0; i < array.length; i += size) { + data.push(array.slice(i, i + size)); + } + return data; +}; +const printHd = (name: string, itemSubTitle: any, deltailListArr: any) => { + Name.value = name; + // if(itemSubTitle && itemSubTitle.length>0){ + // itemTitle.value = itemSubTitle[0] + // } + itemTitle.value.orderNo = deltailListArr[0].orderNo; + deltailListArr.forEach((item, index) => { + item.num = index + 1; + }); + deltailList.value = splitArray(deltailListArr, 16); + console.log(deltailList.value); + + DateToday.value = '2024-01-01'; + + // DateToday.value = formatUtcToData( + // new Date().toString(), + // "YYYY-MM-DD" + // ); + + // console.log(itemSubTitle) + // console.log(deltailListArr) + nextTick(() => { + printJS({ + printable: 'printContent', // 瑕佹墦鍗扮殑鍏冪礌鐨� ID + type: 'html', // 浣跨敤 HTML 鍐呭 + // header: '鐩爣鏍囬', // 璁剧疆鎵撳嵃鏃剁殑鏍囬锛屽鏋滀笉闇�瑕佸彲浠ュ幓鎺夋琛� + css: ['*'], // 璁惧畾鏍峰紡锛屽鏋滀綘闇�瑕佸紩鍏ュ叿浣撶殑 CSS 鏂囦欢锛屽彲浠ュ湪杩欓噷鏀惧叆鏍峰紡鏂囦欢鐨� URL + style: ` + +.header_pt { + display: flex; + justify-content: space-between; +} + +.tableBox { + border: 1px solid #909399; + height: 780px; + overflow: hidden; +} + +.printWp { + padding: 15px 20px; + height: 1070px; + overflow: hidden; + position: relative; +} + +.imgL { + width: 140px; +} + +.t1 { + text-align: center; + font-size: 30px !important; + font-weight: bold; + border: 1px solid transparent; +} + +.printContent { + position: relative; + z-index: -1; + font-size: 12px; +} + +.printContent .box-t1 { + line-height: 24px; + text-align: right; + position: relative; + width: 200px; +} + +.printContent .box-t1 div { + display: block; +} + +.printContent .t4 { + text-align: right; +} + +.printContent table { + padding: 10px 0; +} + +.printContent table tr, +.printContent table td { + margin: 0; + padding: 0; +} + +.printContent table td { + border: 1px solid transparent; + text-align: center; + padding: 0px; +} + +.printContent table td div { + height: 44px; + display: flex; + align-items: center; + justify-content: space-around; + word-break: break-all; + overflow: hidden; +} + +.printContent .middle_tree { + width: 50px; +} + +.printContent .middle_four { + width: 80px; +} + +.printContent .middle_one { + width: 233px; +} + +.printContent .middle_two { + width: 210px; +} + +.printContent span { + color: gray; +} + +.printContent .box-t2 { + display: flex; + flex-wrap: wrap; + margin: 0 3%; +} + +.printContent .box-t2 div { + width: 50%; + height: 32px; + overflow: hidden; + white-space: nowrap; +} + +.printContent .box-t2R { + display: flex; + flex-wrap: wrap; +} + +.printContent .box-t2R div { + width: 100%; + height: 40px; + overflow: hidden; + white-space: nowrap; +} + +.printContent .pageNum { + position: absolute; + right: 20px; + bottom: 0; +} + + + `, + scanStyles: false, // 鏄惁鎵弿褰撳墠鐨� CSS 鏍峰紡 + }); + }); +}; + +// 鏆撮湶鏂规硶 +defineExpose({ printHd }); +</script> + +<style> + +.header_pt { + display: flex; + justify-content: space-between; +} + +.tableBox { + border: 1px solid #909399; + height: 780px; + overflow: hidden; +} + +.printWp { + padding: 15px 20px; + height: 1070px; + overflow: hidden; + position: relative; +} + +.imgL { + width: 140px; +} + +.t1 { + text-align: center; + font-size: 30px !important; + font-weight: bold; + border: 1px solid transparent; +} + +.printContent { + position: relative; + z-index: -1; + font-size: 12px; +} + +.printContent .box-t1 { + line-height: 24px; + text-align: right; + position: relative; + width: 200px; +} + +.printContent .box-t1 div { + display: block; +} + +.printContent .t4 { + text-align: right; +} + +.printContent table { + padding: 10px 0; +} + +.printContent table tr, +.printContent table td { + margin: 0; + padding: 0; +} + +.printContent table td { + border: 1px solid transparent; + text-align: center; + padding: 0px; +} + +.printContent table td div { + height: 44px; + display: flex; + align-items: center; + justify-content: space-around; + word-break: break-all; + overflow: hidden; +} + +.printContent .middle_tree { + width: 50px; +} + +.printContent .middle_four { + width: 80px; +} + +.printContent .middle_one { + width: 233px; +} + +.printContent .middle_two { + width: 210px; +} + +.printContent span { + color: gray; +} + +.printContent .box-t2 { + display: flex; + flex-wrap: wrap; + margin: 0 3%; +} + +.printContent .box-t2 div { + width: 50%; + height: 32px; + overflow: hidden; + white-space: nowrap; +} + +.printContent .box-t2R { + display: flex; + flex-wrap: wrap; +} + +.printContent .box-t2R div { + width: 100%; + height: 40px; + overflow: hidden; + white-space: nowrap; +} + +.printContent .pageNum { + position: absolute; + right: 20px; + bottom: 0; +} + +</style> diff --git a/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/kittingList/component/openAllprop.vue b/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/kittingList/component/openAllprop.vue index 407a34e..c995954 100644 --- a/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/kittingList/component/openAllprop.vue +++ b/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/kittingList/component/openAllprop.vue @@ -258,11 +258,11 @@ </template> </el-dialog> <!-- 鍗曡鎯� --> - <el-drawer v-model="drawerVisible" :title="`${detailForm.poId}鐗╂枡璇︽儏`" direction="rtl" size="80%" @close="handleDrawerClose"> + <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>璇︽儏</div> </div> </template> @@ -281,7 +281,9 @@ <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" 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> @@ -353,6 +355,9 @@ </template> </el-dialog> + <!-- 鎵撳嵃 --> + <print-table-ckd ref="printTableRef"></print-table-ckd> + <printDialogTestStudent ref="printDialogRefTestStudent" :title="printTestStudentTitle" @reloadTable="handleQueryTestStudent" /> </div> </template> @@ -378,6 +383,7 @@ import { formatDate, formatDate_T_Date, formatDate_T_Time, defaultTimeRange } from '/@/utils/formatTime'; 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'; @@ -538,7 +544,6 @@ // const enumList: any = cache.getCache('enumList'); // console.log(enumList.inEnumOrderType); - //鑾峰彇PO鍗曞垪琛� const getTabelData = () => { //鍒ゆ柇鍒涘缓鏃堕棿鏄惁鏈夐�夋嫨 @@ -619,22 +624,22 @@ // 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.packageCode) { - title.value = `${scope.packageCode}`; + if (scope.orderId) { + title.value = `${scope.orderId}`; } drawerType.value = 'drawerAll'; drawerVisible.value = true; //褰撳墠鍏ュ簱鍗曞彿id detailForm.value.orderId = scope.orderId; //鍏ュ簱鍗� - purchaseNo.value = scope.packageCode; + purchaseNo.value = scope.orderId; debugger; - detailForm.value.packageCode = scope.packageCode; + detailForm.value.orderId = scope.orderId; //鑾峰彇鐗╂枡鍒楄〃 if (detailForm.value.poId == '') { drawerList.value = []; @@ -646,7 +651,7 @@ //------------------鑾峰彇鐗╂枡鍒楄〃鐗╂枡鏄庣粏 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)); @@ -1122,6 +1127,12 @@ }; printDialogRefTestStudent.value.showDialog(new hiprint.PrintTemplate({ template: template }), row, template.panels[0].width); }; +// 鎵撳嵃 +let itemSubTitle = ref<any[]>([]); +const handleHtmlPrint = () => { + var title = IsKitting.value == true ? '榻愬娓呭崟' : '缂哄娓呭崟'; + proxy.$refs['printTableRef'].printHd(title, itemSubTitle.value, drawerList.value); //deltailList +}; // 鏆撮湶鏂规硶 defineExpose({ openDialog, openDrawer }); diff --git a/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/component/openAllprop.vue b/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/component/openAllprop.vue index 5113be7..56e8c87 100644 --- a/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/component/openAllprop.vue +++ b/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/component/openAllprop.vue @@ -258,11 +258,11 @@ </template> </el-dialog> <!-- 鍗曡鎯� --> - <el-drawer v-model="drawerVisible" :title="`${detailForm.poId}鐗╂枡璇︽儏`" direction="rtl" size="80%" @close="handleDrawerClose"> + <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>璇︽儏</div> </div> </template> @@ -273,15 +273,20 @@ <el-form :model="detailForm"> <el-row> <el-col :span="6"> - <el-form-item label="鐗╂枡缂栧彿"> - <el-input v-model="detailForm.materialCode" clearable placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" /> + <el-form-item label="鍖呰鍙�"> + <el-input v-model="detailForm.packageCode" 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> --> + <!-- :disabled="checkRows.length == 0" --> + <el-button type="primary" style="margin-left: 5px" icon="ele-Printer" @click="handleHtmlPrint"> + 鎵撳嵃 + </el-button> - <el-button type="primary" icon="ele-Printer" @click="getPrint">鎵撳嵃</el-button> + </el-form-item> </el-col> </el-row> @@ -354,6 +359,11 @@ </el-dialog> <printDialogTestStudent ref="printDialogRefTestStudent" :title="printTestStudentTitle" @reloadTable="handleQueryTestStudent" /> + + + <!-- 鎵撳嵃 --> + <print-table-ckd ref="printTableRef"></print-table-ckd> + </div> </template> <script lang="ts" setup> @@ -376,13 +386,13 @@ import { pageBaseCustomer } from '/@/api/main/WmsBase/baseCustomer'; import { listWmsOrderPurchaseDetails, pageWmsOrderPurchaseDetails } from '/@/api/main/WmsOrder/wmsOrderPurchaseDetails'; import { formatDate, formatDate_T_Date, formatDate_T_Time, defaultTimeRange } from '/@/utils/formatTime'; +import printTableCkd from '/@/components/printTableCkd.vue'; import commonFunction from '/@/utils/commonFunction'; import { handleSlectDataWmsBusinessType } from '/@/utils/selectData'; // 鎺ㄨ崘璁剧疆鎿嶄綔 width 涓� 200 import { hiprint } from 'vue-plugin-hiprint'; import { SysPrintApi } from '/@/api-services/api'; import { SysPrint } from '/@/api-services/models'; - const moveType = 10; //绉诲姩绫诲瀷 鍏ュ簱 const { proxy }: any = getCurrentInstance(); // 璁块棶瀹炰緥涓婁笅鏂� proxy鍚屾椂鏀寔寮�鍙� 绾夸笂鐜 const getEnumOrderTypeData = ref<any>([]); @@ -620,7 +630,7 @@ // const //鍗曞彿 const purchaseNo = ref(''); - +const IsPack = ref(false); //鎵撳紑鎶藉眽 const openDrawer = async (type: number, scope: any = {}, entozhExcell?: any) => { detailForm.value.Page = 1; //bug:鐐圭紪杈�-鍐嶇偣璇︽儏 @@ -634,6 +644,7 @@ detailForm.value.poId = scope.id; //鍏ュ簱鍗� purchaseNo.value = scope.packageCode; + IsPack.value = scope.isPack; debugger; detailForm.value.poId = scope.id; //鑾峰彇鐗╂枡鍒楄〃 @@ -1129,6 +1140,15 @@ printDialogRefTestStudent.value.showDialog(new hiprint.PrintTemplate({ template: template }), row, template.panels[0].width); }; + + +// 鎵撳嵃 +let itemSubTitle = ref<any[]>([]); +const handleHtmlPrint = () => { + var title = IsPack.value==true?"榻愬寘娓呭崟":"缂哄寘娓呭崟"; + proxy.$refs['printTableRef'].printHd(title, itemSubTitle.value, drawerList.value); //deltailList +}; + // 鏆撮湶鏂规硶 defineExpose({ openDialog, openDrawer }); </script> diff --git a/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/index.vue b/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/index.vue index c248f24..1a4eb77 100644 --- a/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/index.vue +++ b/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/index.vue @@ -100,7 +100,7 @@ <div class="table-container"> <!-- 宸︿晶琛ㄦ牸 --> <div class="left-table"> - <p class="text-xtiny">榻愬鍒楄〃</p> + <p class="text-xtiny">榻愬寘鍒楄〃</p> <el-table :data="tableData" style="width: 100%" v-loading="loading" tooltip-effect="light" ref="tableRef" row-key="id" @sort-change="sortChange" :summary-method="getExportTitle" border=""> <el-table-column type="index" label="搴忓彿" width="55" align="center" /> @@ -128,7 +128,7 @@ <!-- 鍙充晶琛ㄦ牸 --> <div class="right-table"> - <p class="text-xtiny">涓嶉綈濂楀垪琛�</p> + <p class="text-xtiny">缂哄寘鍒楄〃</p> <el-table :data="newTableData" style="width: 100%" @@ -165,6 +165,8 @@ </div> </el-card> + + <editDialogWmsOrderDeliver ref="editDialogRefWmsOrderDeliver" :title="editWmsOrderDeliverTitle" @reloadTable="handleQuery" /> <importExcelDialog ref="importExcelDialogRefWmsOrderDeliver" @@ -187,6 +189,7 @@ import { formatUtcToData, getTypeStatus } from '/@/utils/formate'; import printDialog from '/@/views/system/print/component/hiprint/preview.vue'; import editDialog from '/@/views/main/WmsOrder/wmsOrderPurchase/component/editDialog.vue'; + import { pageWmsOrderPurchase, deleteWmsOrderPurchase, diff --git a/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/shortageList/index.vue b/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/shortageList/index.vue index 87b8cea..dbe86a0 100644 --- a/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/shortageList/index.vue +++ b/LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/shortageList/index.vue @@ -1,34 +1,32 @@ 锘�<template> - <div class="wmsStockQuan-container"> - <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> - <el-form :model="queryParamsWmsStockQuan" ref="queryForm" labelWidth="90"> - <el-row> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> - <el-form-item label="鍏抽敭瀛�"> - <el-input v-model="queryParamsWmsStockQuan.searchKey" clearable="" placeholder="瀹瑰櫒缂栧彿,璺熻釜鐮�,鐗╂枡缂栧彿,鐗╂枡鍚嶇О,渚涘簲鍟嗘壒娆�,鎵规,渚涘簲鍟嗙紪鍙�,ERP鍗曞彿,ERP搴撳瓨鍦�,ERP鍑瘉"/> - - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="瀹瑰櫒缂栧彿"> - <el-input v-model="queryParamsWmsStockQuan.containerCode" clearable="" placeholder="璇疯緭鍏ュ鍣ㄧ紪鍙�"/> - - </el-form-item> - </el-col> - - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="璺熻釜鐮�"> - <el-input v-model="queryParamsWmsStockQuan.snCode" clearable="" placeholder="璇疯緭鍏ヨ窡韪爜"/> - - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="鐗╂枡缂栧彿"> - <el-input v-model="queryParamsWmsStockQuan.materialCode" clearable="" placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/> - - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> + <div class="wmsStockQuan-container"> + <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> + <el-form :model="queryParamsWmsStockQuan" ref="queryForm" labelWidth="90"> + <el-row> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> + <el-form-item label="鍏抽敭瀛�"> + <el-input v-model="queryParamsWmsStockQuan.searchKey" clearable="" placeholder="璁㈠崟鍙�,鎵规,鍖呰鍙�" /> + </el-form-item> + </el-col> + + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> + <el-form-item label="璁㈠崟鍙�"> + <el-input v-model="queryParamsWmsStockQuan.OrderId" clearable="" placeholder="璇疯緭鍏ヨ鍗曞彿" /> + </el-form-item> + </el-col> + + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> + <el-form-item label="鎵规"> + <el-input v-model="queryParamsWmsStockQuan.PlanNo" clearable="" placeholder="璇疯緭鍏ユ壒娆�" /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> + <el-form-item label="鍖呰鍙�"> + <el-input v-model="queryParamsWmsStockQuan.PackageCode" clearable="" placeholder="璇疯緭鍏ュ寘瑁呭彿" /> + </el-form-item> + </el-col> + + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> <el-form-item label="鐗╂枡鍚嶇О"> <el-input v-model="queryParamsWmsStockQuan.materialName" clearable="" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/> @@ -54,94 +52,56 @@ <el-input v-model="queryParamsWmsStockQuan.batch" clearable="" placeholder="璇疯緭鍏ユ壒娆�"/> </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="鏀惰揣鏃堕棿"> - <el-date-picker placeholder="璇烽�夋嫨鏀惰揣鏃堕棿" value-format="YYYY/MM/DD" type="daterange" v-model="queryParamsWmsStockQuan.recordInsertTimeRange" /> - - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="渚涘簲鍟嗙紪鍙�"> - <el-input v-model="queryParamsWmsStockQuan.supplierCode" clearable="" placeholder="璇疯緭鍏ヤ緵搴斿晢缂栧彿"/> - - </el-form-item> - </el-col> - - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="ERP鍗曞彿"> - <el-input v-model="queryParamsWmsStockQuan.erpOrderNo" clearable="" placeholder="璇疯緭鍏RP鍗曞彿"/> - - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="ERP搴撳瓨鍦�"> - <el-input v-model="queryParamsWmsStockQuan.erpCode" clearable="" placeholder="璇疯緭鍏RP搴撳瓨鍦�"/> - - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="璐ㄦ鐘舵��"> - <el-select clearable="" v-model="queryParamsWmsStockQuan.qCStatus" placeholder="璇烽�夋嫨璐ㄦ鐘舵��"> - <el-option v-for="(item,index) in getEnumQCStatusData_Index" :key="index" :value="item.value" :label="`${item.describe}`" /> - - </el-select> - - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="ERP鍑瘉"> - <el-input v-model="queryParamsWmsStockQuan.erpVoucher" clearable="" placeholder="璇疯緭鍏RP鍑瘉"/> - - </el-form-item> - </el-col> - <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsStockQuan"> - <el-form-item label="鎿嶄綔鏃堕棿"> - <el-date-picker placeholder="璇烽�夋嫨鎿嶄綔鏃堕棿" value-format="YYYY/MM/DD" type="daterange" v-model="queryParamsWmsStockQuan.actionTimeRange" /> - - </el-form-item> </el-col> --> - <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb10"> - <el-form-item> - <el-button-group style="display: flex; align-items: center;"> - <el-button type="primary" icon="ele-Search" @click="handleQueryWmsStockQuan" v-auth="'wmsStockQuan:page'" :disabled="disabled_btnWmsStockQuan"> 鏌ヨ </el-button> - <el-button icon="ele-Refresh" @click="resetWmsStockQuan"> 閲嶇疆 </el-button> - <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIWmsStockQuan" v-if="!showAdvanceQueryUIWmsStockQuan" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button> - <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIWmsStockQuan" v-if="showAdvanceQueryUIWmsStockQuan" style="margin-left:5px;"> 闅愯棌 </el-button> - <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWmsStockQuan" v-auth="'wmsStockQuan:add'"> 鏂板 </el-button> - <el-button type="primary" style="margin-left:5px;" icon="ele-Download" @click="handleExportExcelWmsStockQuan" v-auth="'wmsStockQuan:exportExcel'" > 瀵煎嚭 </el-button> - <el-button type="primary" style="margin-left:5px;" icon="ele-Printer" @click="openPrintWmsStockQuan" v-auth="'wmsStockQuan:exportExcel'" :disabled="checkRows.length==0" > 鎵撳嵃 </el-button> + <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb10"> + <el-form-item> + <el-button-group style="display: flex; align-items: center"> + <el-button type="primary" icon="ele-Search" @click="handleQueryWmsStockQuan" v-auth="'wmsStockQuan:page'" :disabled="disabled_btnWmsStockQuan"> 鏌ヨ </el-button> + <el-button icon="ele-Refresh" @click="resetWmsStockQuan"> 閲嶇疆 </el-button> + <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIWmsStockQuan" v-if="!showAdvanceQueryUIWmsStockQuan" style="margin-left: 5px"> 楂樼骇鏌ヨ </el-button> + <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIWmsStockQuan" v-if="showAdvanceQueryUIWmsStockQuan" style="margin-left: 5px"> 闅愯棌 </el-button> + <el-button type="primary" style="margin-left: 5px" icon="ele-Plus" @click="openAddWmsStockQuan" v-auth="'wmsStockQuan:add'"> 鏂板 </el-button> + <el-button type="primary" style="margin-left: 5px" icon="ele-Download" @click="handleExportExcelWmsStockQuan" v-auth="'wmsStockQuan:exportExcel'"> 瀵煎嚭 </el-button> - </el-button-group> - </el-form-item> - - </el-col> - </el-row> - </el-form> - </el-card> - <el-card class="full-table" shadow="hover" style="margin-top: 5px"> - <!-- show-summary :summary-method="getSummaries" --> - <el-table - ref="tableRefWmsStockQuan" + <el-button type="primary" style="margin-left: 5px" icon="ele-Printer" @click="handleHtmlPrint" v-auth="'wmsStockQuan:exportExcel'" :disabled="checkRows.length == 0"> + 鎵撳嵃 + </el-button> +<!-- + <el-button type="primary" style="margin-left: 5px" icon="ele-Printer" v-print="print" plain @click="handleHtmlPrint">鎵撳嵃</el-button> --> + </el-button-group> + </el-form-item> + </el-col> + </el-row> + </el-form> + </el-card> + <el-card class="full-table" shadow="hover" style="margin-top: 5px"> + <!-- show-summary :summary-method="getSummaries" --> + <el-table + ref="tableRefWmsStockQuan" :data="tableDataWmsStockQuan" style="width: 100%" v-loading="loadingWmsStockQuan" tooltip-effect="light" - row-key="id" - @sort-change="sortChangeWmsStockQuan" - @selection-change="handleSelectionChange" - border=""> - <el-table-column align="center" width="60" type="selection" /> - <el-table-column type="index" label="搴忓彿" width="55" align="center"/> - - <el-table-column prop="placeCode" label="搴撲綅缂栫爜" show-overflow-tooltip="" /> + row-key="id" + @sort-change="sortChangeWmsStockQuan" + @selection-change="handleSelectionChange" + border="" + > + <el-table-column align="center" width="60" type="selection" /> + <el-table-column 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="packageCode" label="鍖呰鍙�" show-overflow-tooltip="" /> + <el-table-column prop="totalCount" label="鎬绘暟閲�" show-overflow-tooltip="" /> + <el-table-column prop="hasCount" label="鐜版湁鏁伴噺" show-overflow-tooltip="" /> + <el-table-column prop="shortageCount" 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="" /> @@ -166,10 +126,9 @@ <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> - <el-pagination + <el-table-column prop="updateUserName" label="淇敼浜�" show-overflow-tooltip="" /> --> + </el-table> + <el-pagination v-model:currentPage="tableParamsWmsStockQuan.page" v-model:page-size="tableParamsWmsStockQuan.pageSize" :total="tableParamsWmsStockQuan.total" @@ -179,96 +138,92 @@ @size-change="handleSizeChangeWmsStockQuan" @current-change="handleCurrentChangeWmsStockQuan" layout="total, sizes, prev, pager, next, jumper" - /> - <printDialogWmsStockQuan - ref="printDialogRefWmsStockQuan" - :title="printWmsStockQuanTitle" - @reloadTable="handleQueryWmsStockQuan" /> - <editDialogWmsStockQuan - ref="editDialogRefWmsStockQuan" - :title="editWmsStockQuanTitle" - @reloadTable="handleQueryWmsStockQuan" - /> - </el-card> - </div> + /> + <printDialogWmsStockQuan ref="printDialogRefWmsStockQuan" :title="printWmsStockQuanTitle" @reloadTable="handleQueryWmsStockQuan" /> + <editDialogWmsStockQuan ref="editDialogRefWmsStockQuan" :title="editWmsStockQuanTitle" @reloadTable="handleQueryWmsStockQuan" /> + </el-card> + + <!-- 鎵撳嵃 --> + <print-table-ckd ref="printTableRef"></print-table-ckd> + </div> </template> <script lang="ts" setup="" name="wmsStockQuan"> - import { ref,onMounted } from "vue"; - import { ElMessageBox, ElMessage } from "element-plus"; - import { auth } from '/@/utils/authFunction'; - import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils'; - import { formatDate,formatDate_T_Date,formatDate_T_Time,defaultTimeRange } from '/@/utils/formatTime'; - import { exportPageExcel } from '/@/utils/exportPageExcel' //寮曞叆瀵煎嚭鏂规硶 +import { ref, onMounted, getCurrentInstance, reactive, computed, nextTick } from 'vue'; +import { ElMessageBox, ElMessage } from 'element-plus'; +import { auth } from '/@/utils/authFunction'; +import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils'; +import { formatDate, formatDate_T_Date, formatDate_T_Time, defaultTimeRange } from '/@/utils/formatTime'; +import { exportPageExcel } from '/@/utils/exportPageExcel'; //寮曞叆瀵煎嚭鏂规硶 +import printDialogWmsStockQuan from '/@/views/system/print/component/hiprint/preview.vue'; +import { ShortagePage, deleteWmsStockQuan, importExcelWmsStockQuan, downloadExcelTemplateWmsStockQuan } from '/@/api/main/ReportCenter/wmsStockQuan'; +import { getAPI } from '/@/utils/axios-utils'; +import { SysEnumApi } from '/@/api-services/api'; +import commonFunction from '/@/utils/commonFunction'; +import { addWmsRecordSncodePrint } from '/@/api/main/PrintCenter/wmsRecordSncodePrint'; +import printTableCkd from '/@/components/printTableCkd.vue'; +const { proxy }: any = getCurrentInstance(); // 璁块棶瀹炰緥涓婁笅鏂� proxy鍚屾椂鏀寔寮�鍙� 绾夸笂鐜 +import printJs from 'print-js'; - import printDialogWmsStockQuan from '/@/views/system/print/component/hiprint/preview.vue' - import { pageWmsStockQuan, deleteWmsStockQuan,importExcelWmsStockQuan,downloadExcelTemplateWmsStockQuan } from '/@/api/main/ReportCenter/wmsStockQuan'; - import { getAPI } from '/@/utils/axios-utils'; - import { SysEnumApi } from '/@/api-services/api'; - import commonFunction from '/@/utils/commonFunction'; -import { addWmsRecordSncodePrint } from "/@/api/main/PrintCenter/wmsRecordSncodePrint"; +const getEnumQCStatusData_Index = ref<any>([]); +const getEnumStockStatusData_Index = ref<any>([]); - const getEnumQCStatusData_Index = ref<any>([]); - const getEnumStockStatusData_Index = ref<any>([]); +const { getEnumDesc } = commonFunction(); - const { getEnumDesc } = commonFunction(); - - /***************************************************[瀹炴椂搴撳瓨鎿嶄綔]寮�濮�***************************************************/ - const showAdvanceQueryUIWmsStockQuan = ref(false); - const tableRefWmsStockQuan = ref(null); - const printDialogRefWmsStockQuan = ref(); - const editDialogRefWmsStockQuan = ref(); - const loadingWmsStockQuan = ref(false); - const disabled_btnWmsStockQuan = ref(false); - const tableDataWmsStockQuan = ref<any>([]); - const queryParamsWmsStockQuan = ref<any>({}); - const tableParamsWmsStockQuan = ref({ - page: 1, - pageSize: 10, - total: 0, - }); +/***************************************************[瀹炴椂搴撳瓨鎿嶄綔]寮�濮�***************************************************/ +const showAdvanceQueryUIWmsStockQuan = ref(false); +const tableRefWmsStockQuan = ref(null); +const printDialogRefWmsStockQuan = ref(); +const editDialogRefWmsStockQuan = ref(); +const loadingWmsStockQuan = ref(false); +const disabled_btnWmsStockQuan = ref(false); +const tableDataWmsStockQuan = ref<any>([]); +const queryParamsWmsStockQuan = ref<any>({}); +const tableParamsWmsStockQuan = ref({ + page: 1, + pageSize: 10, + total: 0, +}); - const printWmsStockQuanTitle = ref(""); - const editWmsStockQuanTitle = ref(""); +const printWmsStockQuanTitle = ref(''); +const editWmsStockQuanTitle = ref(''); - // 鏀瑰彉楂樼骇鏌ヨ鐨勬帶浠舵樉绀虹姸鎬� - const changeAdvanceQueryUIWmsStockQuan = () => { - showAdvanceQueryUIWmsStockQuan.value = !showAdvanceQueryUIWmsStockQuan.value; - } +// 鏀瑰彉楂樼骇鏌ヨ鐨勬帶浠舵樉绀虹姸鎬� +const changeAdvanceQueryUIWmsStockQuan = () => { + showAdvanceQueryUIWmsStockQuan.value = !showAdvanceQueryUIWmsStockQuan.value; +}; - // 鏌ヨ瀹炴椂搴撳瓨 - const handleQueryWmsStockQuan = async () => { - loadingWmsStockQuan.value = true; - disabled_btnWmsStockQuan.value = true; - var res = await pageWmsStockQuan(Object.assign(queryParamsWmsStockQuan.value, tableParamsWmsStockQuan.value)); - if(res.data.type=="success"){ - tableDataWmsStockQuan.value = res.data.result?.items ?? []; - tableParamsWmsStockQuan.value.total = res.data.result?.total; - } - loadingWmsStockQuan.value = false; - disabled_btnWmsStockQuan.value = false; - }; +// 8888鏌ヨ瀹炴椂搴撳瓨 +const handleQueryWmsStockQuan = async () => { + loadingWmsStockQuan.value = true; + disabled_btnWmsStockQuan.value = true; + var res = await ShortagePage(Object.assign(queryParamsWmsStockQuan.value, tableParamsWmsStockQuan.value)); + if (res.data.type == 'success') { + tableDataWmsStockQuan.value = res.data.result?.items ?? []; + tableParamsWmsStockQuan.value.total = res.data.result?.total; + } + loadingWmsStockQuan.value = false; + disabled_btnWmsStockQuan.value = false; +}; - // 閲嶇疆瀹炴椂搴撳瓨鏌ヨ - const resetWmsStockQuan = async () => { - queryParamsWmsStockQuan.value = {} - }; +// 閲嶇疆瀹炴椂搴撳瓨鏌ヨ +const resetWmsStockQuan = async () => { + queryParamsWmsStockQuan.value = {}; +}; - // 瀹炴椂搴撳瓨鍒楁帓搴� - const sortChangeWmsStockQuan = async (column: any) => { +// 瀹炴椂搴撳瓨鍒楁帓搴� +const sortChangeWmsStockQuan = async (column: any) => { queryParamsWmsStockQuan.value.field = column.prop; queryParamsWmsStockQuan.value.order = column.order; await handleQueryWmsStockQuan(); - }; +}; - // 鎵撳紑鏂板瀹炴椂搴撳瓨椤甸潰 - const openAddWmsStockQuan = () => { - editWmsStockQuanTitle.value = '娣诲姞瀹炴椂搴撳瓨'; - editDialogRefWmsStockQuan.value.openDialog(1,{}); - }; - - +// 鎵撳紑鏂板瀹炴椂搴撳瓨椤甸潰 +const openAddWmsStockQuan = () => { + editWmsStockQuanTitle.value = '娣诲姞瀹炴椂搴撳瓨'; + editDialogRefWmsStockQuan.value.openDialog(1, {}); +}; //閫変腑鐨勮 const checkRows = ref<{ id: number }[]>([]); @@ -276,11 +231,122 @@ const handleSelectionChange = (val: any) => { checkRows.value = val; }; - // 鎵撳紑鎵撳嵃瀹炴椂搴撳瓨椤甸潰 - const openPrintWmsStockQuan = async (row: any) => { - // printWmsStockQuanTitle.value = '鎵撳嵃瀹炴椂搴撳瓨'; +// 璁剧疆 tool header 鏁版嵁 +const setHeader = computed(() => { + return props.columns.filter((v) => v.isCheck); +}); +// 瀹氫箟鐖剁粍浠朵紶杩囨潵鐨勫�� +const props = defineProps({ + // 鑾峰彇鏁版嵁鐨勬柟娉曪紝鐢辩埗缁勪欢浼犻�� + getData: { + type: Function, + required: true, + }, + // 鍒楀睘鎬э紝鍜宔lementUI鐨凾able-column 灞炴�х浉鍚岋紝闄勫姞灞炴�э細isCheck-鏄惁榛樿鍕鹃�夊睍绀猴紝hideCheck-鏄惁闅愯棌璇ュ垪鐨勫彲鍕鹃�夊拰鎷栨嫿 + columns: { + type: Array<any>, + default: () => [], + }, + // 閰嶇疆椤癸細isBorder-鏄惁鏄剧ず琛ㄦ牸杈规锛宨sSerialNo-鏄惁鏄剧ず琛ㄦ牸搴忓彿锛宻howSelection-鏄惁鏄剧ず琛ㄦ牸鍙閫夛紝isSelection-鏄惁榛樿閫変腑琛ㄦ牸澶氶�夛紝pageSize-姣忛〉鏉℃暟锛宧ideExport-鏄惁闅愯棌瀵煎嚭鎸夐挳锛宔xportFileName-瀵煎嚭琛ㄦ牸鐨勬枃浠跺悕锛岀┖鍊奸粯璁ょ敤搴旂敤鍚嶇О浣滀负鏂囦欢鍚� + config: { + type: Object, + default: () => ({}), + }, + // 绛涢�夊弬鏁� + param: { + type: Object, + default: () => ({}), + }, + // 榛樿鎺掑簭鏂瑰紡锛寋prop:"鎺掑簭瀛楁",order:"ascending or descending"} + defaultSort: { + type: Object, + default: () => ({}), + }, + // 瀵煎嚭鎶ヨ〃鑷畾涔夋暟鎹浆鎹㈡柟娉曪紝涓嶄紶鎸夊瓧娈靛�煎鍑� + exportChangeData: { + type: Function, + }, + // 鎵撳嵃鏍囬 + printName: { + type: String, + default: () => '', + }, +}); +const state = reactive({ + data: [] as Array<EmptyObjectType>, + loading: false, + exportLoading: false, + total: 0, + page: { + page: 1, + pageSize: 10, + field: '', + order: '', + }, + showPagination: true, + selectlist: [] as EmptyObjectType[], + checkListAll: true, + checkListIndeterminate: false, +}); +// 鎵撳嵃 +const openPrintWmsStockQuan = () => { + printJs({ + printable: 'printContent', // 寮曠敤瑕佹墦鍗扮殑鍏冪礌 ID + type: 'html', // 浣跨敤 HTML 鍐呭 + css: ['//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css', '//unpkg.com/element-plus/dist/index.css'], + style: ` + @media print { + .mb15 { margin-bottom: 15px; } + .el-button--small i.iconfont { font-size: 12px !important; margin-right: 5px; } + } + .table-th { word-break: break-all; white-space: pre-wrap; } + .table-center { text-align: center; } + `, + }); + + // // https://printjs.crabbly.com/#documentation + // // 鑷畾涔夋墦鍗� + // let tableTh = ''; + // let tableTrTd = ''; + // let tableTd: any = {}; + // // 琛ㄥご + // setHeader.value.forEach((v: any) => { + // if (v.prop === 'action') { + // return; + // } + // tableTh += `<th class="table-th">${v.label}</th>`; + // }); + // // 琛ㄦ牸鍐呭 + // state.data.forEach((val: any, key: any) => { + // if (!tableTd[key]) tableTd[key] = []; + // setHeader.value.forEach((v: any) => { + // if (v.prop === 'action') { + // return; + // } + // if (v.type === 'text') { + // tableTd[key].push(`<td class="table-th table-center">${val[v.prop]}</td>`); + // } else if (v.type === 'image') { + // tableTd[key].push(`<td class="table-th table-center"><img src="${val[v.prop]}" style="width:${v.width}px;height:${v.height}px;"/></td>`); + // } else { + // tableTd[key].push(`<td class="table-th table-center">${val[v.prop]}</td>`); + // } + // }); + // tableTrTd += `<tr>${tableTd[key].join('')}</tr>`; + // }); + // // 鎵撳嵃 + // printJs({ + // printable: `<div style=display:flex;flex-direction:column;text-align:center><h3>333</h3></div><table border=1 cellspacing=0><tr>${tableTh}${tableTrTd}</table>`, + // type: 'raw-html', + // css: ['//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css', '//unpkg.com/element-plus/dist/index.css'], + // style: `@media print{.mb15{margin-bottom:15px;}.el-button--small i.iconfont{font-size: 12px !important;margin-right: 5px;}}; .table-th{word-break: break-all;white-space: pre-wrap;}.table-center{text-align: center;}`, + // }); +}; + +// 鎵撳紑鎵撳嵃瀹炴椂搴撳瓨椤甸潰 +const openPrintWmsStockQuan2 = async (row: any) => { + // printWmsStockQuanTitle.value = '鎵撳嵃瀹炴椂搴撳瓨'; ElMessageBox.confirm('鏄惁纭鎵撳嵃锛�', '鎻愮ず', { confirmButtonText: '纭', @@ -288,151 +354,116 @@ type: 'warning', }) .then(async () => { + const handleArr: number[] = []; + checkRows.value.forEach((item) => { + // handleArr.push(item.id); + item.PrintSource = 1; //搴撳瓨璺熻釜鐮佹墦鍗� + item.PrintType = 1; + item.PrintSheetNum = 1; + item.PrintNum = 1; + item.PrintStatu = 1; + item.IsAllowPrint = 1; + }); - const handleArr: number[] = []; - checkRows.value.forEach((item) => { - // handleArr.push(item.id); - item.PrintSource = 1 //搴撳瓨璺熻釜鐮佹墦鍗� - item.PrintType = 1 - item.PrintSheetNum = 1 - item.PrintNum = 1 - item.PrintStatu = 1 - item.IsAllowPrint = 1 - - }); + const obj = { id: handleArr }; - - const obj = { id: handleArr }; - - var res = await addWmsRecordSncodePrint(checkRows.value); - if (res.data && res.data.code == 200) { - ElMessage.success("娣诲姞鎴愬姛"); - } - + var res = await addWmsRecordSncodePrint(checkRows.value); + if (res.data && res.data.code == 200) { + ElMessage.success('娣诲姞鎴愬姛'); + } }) .catch(() => { ElMessage.info('宸插彇娑堝垹闄�'); }); +}; - } - - // 鎵撳紑缂栬緫瀹炴椂搴撳瓨椤甸潰 - const openEditWmsStockQuan = (row: any) => { - editWmsStockQuanTitle.value = '缂栬緫瀹炴椂搴撳瓨'; - editDialogRefWmsStockQuan.value.openDialog(2,row); - }; +// 鎵撳紑缂栬緫瀹炴椂搴撳瓨椤甸潰 +const openEditWmsStockQuan = (row: any) => { + editWmsStockQuanTitle.value = '缂栬緫瀹炴椂搴撳瓨'; + editDialogRefWmsStockQuan.value.openDialog(2, row); +}; - // 鍒犻櫎瀹炴椂搴撳瓨 - const delWmsStockQuan = (row: any) => { - ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - }) - .then(async () => { - loadingWmsStockQuan.value = true; - var ret = await deleteWmsStockQuan(row); - if(ret.data.type=="success"){ - ElMessage.success("鍒犻櫎鎴愬姛"); - } - loadingWmsStockQuan.value = false; - handleQueryWmsStockQuan(); - }) - .catch(() => {}); - }; +// 鍒犻櫎瀹炴椂搴撳瓨 +const delWmsStockQuan = (row: any) => { + ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + }) + .then(async () => { + loadingWmsStockQuan.value = true; + var ret = await deleteWmsStockQuan(row); + if (ret.data.type == 'success') { + ElMessage.success('鍒犻櫎鎴愬姛'); + } + loadingWmsStockQuan.value = false; + handleQueryWmsStockQuan(); + }) + .catch(() => {}); +}; - // 鏀瑰彉瀹炴椂搴撳瓨椤甸潰瀹归噺 - const handleSizeChangeWmsStockQuan = (val: number) => { - tableParamsWmsStockQuan.value.pageSize = val; - handleQueryWmsStockQuan(); - }; +// 鏀瑰彉瀹炴椂搴撳瓨椤甸潰瀹归噺 +const handleSizeChangeWmsStockQuan = (val: number) => { + tableParamsWmsStockQuan.value.pageSize = val; + handleQueryWmsStockQuan(); +}; - // 鏀瑰彉瀹炴椂搴撳瓨椤电爜搴忓彿 - const handleCurrentChangeWmsStockQuan = (val: number) => { - tableParamsWmsStockQuan.value.page = val; - handleQueryWmsStockQuan(); - }; +// 鏀瑰彉瀹炴椂搴撳瓨椤电爜搴忓彿 +const handleCurrentChangeWmsStockQuan = (val: number) => { + tableParamsWmsStockQuan.value.page = val; + handleQueryWmsStockQuan(); +}; /***************************************************[瀹炴椂搴撳瓨鎿嶄綔]缁撴潫***************************************************/ /***************************************************[瀹炴椂搴撳瓨瀵煎嚭]寮�濮�***************************************************/ //瀹氫箟褰撳墠椤甸潰鐨勬柟娉曠粍 const functionMapWmsStockQuan = { - getEnumStockStatusData_Index, - getEnumQCStatusData_Index, - formatDate_T_Date, - formatDate_T_Time + getEnumStockStatusData_Index, + getEnumQCStatusData_Index, + formatDate_T_Date, + formatDate_T_Time, }; //鐐瑰嚮瀵煎嚭鎸夐挳 -const handleExportExcelWmsStockQuan = async (formData:Blob) => { - loadingWmsStockQuan.value = true; - disabled_btnWmsStockQuan.value = true; - var new_tableParamsWmsStockQuan=JSON.parse(JSON.stringify(tableParamsWmsStockQuan.value)); - new_tableParamsWmsStockQuan.page = 1; - new_tableParamsWmsStockQuan.pageSize = 100000; - var res = await pageWmsStockQuan(Object.assign(queryParamsWmsStockQuan.value, new_tableParamsWmsStockQuan)); - if(res.data.type=="success"){ - exportExcelWmsStockQuan(res.data.result?.items ?? []); - } - loadingWmsStockQuan.value = false; - disabled_btnWmsStockQuan.value = false; +const handleExportExcelWmsStockQuan = async (formData: Blob) => { + loadingWmsStockQuan.value = true; + disabled_btnWmsStockQuan.value = true; + var new_tableParamsWmsStockQuan = JSON.parse(JSON.stringify(tableParamsWmsStockQuan.value)); + new_tableParamsWmsStockQuan.page = 1; + new_tableParamsWmsStockQuan.pageSize = 100000; + var res = await ShortagePage(Object.assign(queryParamsWmsStockQuan.value, new_tableParamsWmsStockQuan)); + if (res.data.type == 'success') { + exportExcelWmsStockQuan(res.data.result?.items ?? []); + } + loadingWmsStockQuan.value = false; + disabled_btnWmsStockQuan.value = false; }; //瀵煎嚭 -const exportExcelWmsStockQuan = async (exportDataList:Array) => { - exportPageExcel(exportDataList, tableRefWmsStockQuan,"瀹炴椂搴撳瓨",functionMapWmsStockQuan); +const exportExcelWmsStockQuan = async (exportDataList: Array) => { + exportPageExcel(exportDataList, tableRefWmsStockQuan, '瀹炴椂搴撳瓨', functionMapWmsStockQuan); }; /***************************************************[瀹炴椂搴撳瓨瀵煎嚭]缁撴潫***************************************************/ - // 瀹炴椂搴撳瓨椤甸潰鍔犺浇鏃� +// 瀹炴椂搴撳瓨椤甸潰鍔犺浇鏃� - const getEnumLockStatusData_Index = ref<any>([]); - onMounted(async () => { - getEnumStockStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('StockStatusEnum')).data.result ?? []; - getEnumLockStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('LockStatusEnum')).data.result ?? []; - }); +const getEnumLockStatusData_Index = ref<any>([]); +onMounted(async () => { + getEnumStockStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('StockStatusEnum')).data.result ?? []; + getEnumLockStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('LockStatusEnum')).data.result ?? []; +}); - handleQueryWmsStockQuan(); +handleQueryWmsStockQuan(); - - - - - //琛ㄦ牸姹囨�� -const getSummaries = (param: any) => { - const { columns, data } = param; - const sums:any = []; - columns.forEach((column, index) => { - if (index === 0) { - sums[index] = '鍚堣'; - return; - } - //debugger - if (column.property != 'quantity' && column.property != 'scrapQuantity' - && column.property != 'useNumber' - && column.property != 'gridNumber' - ) { - sums[index] = ''; - return ""; - } - const values = data.map(item => Number(item[column.property])); - if (!values.every(value => isNaN(value))) { - sums[index] = Number(values.reduce((prev, curr) => { - const value = Number(curr); - if (!isNaN(value)) { - return prev + curr; - } else { - return prev; - } - }, 0)).toFixed(3); - sums[index] += ''; - } else { - sums[index] = '';//N/A - } - }); - - return sums; -} - - - +// 鎵撳嵃 +let itemSubTitle = ref<any[]>([]); +const handleHtmlPrint = () => { + proxy.$refs['printTableRef'].printHd('缂哄寘娓呭崟', itemSubTitle.value, checkRows.value); //deltailList +}; +// //鎵撳嵃 +// const print = ref({ +// id: 'printContent', +// popTitle: ' ', +// //extraCss: "https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css, https://cdn.bootcdn.net/ajax/libs/hover.css/2.3.1/css/hover-min.css", +// extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>', +// }) </script> <style scoped> :deep(.el-input), @@ -441,4 +472,3 @@ width: 100%; } </style> - diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/Dto/WmsStockQuanOutput.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/Dto/WmsStockQuanOutput.cs index cf828e0..f735634 100644 --- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/Dto/WmsStockQuanOutput.cs +++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/Dto/WmsStockQuanOutput.cs @@ -166,4 +166,41 @@ public string OrderId { get; set; } // 鍗曞彿 public int Count { get; set; } // 瀵瑰簲鐨勬暟閲� public bool IsKitting { get; set; } +} + +/// <summary> +/// 鎵规缂烘枡娓呭崟 +/// </summary> +public class WmsShortageListOutput +{ + /// <summary> + /// 缂撳瓨宀涙暟閲� + /// </summary> + public int HasCount { get; set; } + + /// <summary> + /// mes杩囨潵鐨勬�绘暟閲� + /// </summary> + public int TotalCount { get; set; } + + /// <summary> + /// 缂烘枡鏁伴噺 + /// </summary> + public int ShortageCount { get; set; } + + /// <summary> + /// 鎵规 + /// </summary> + public string PlanNo { get; set; } + + /// <summary> + /// 璁㈠崟鍙� + /// </summary> + public string OrderId { get; set; } + + /// <summary> + /// 鍖呰鍙� + /// </summary> + public string PackageCode { get; set; } + } \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs index f246294..5ff4f56 100644 --- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs +++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs @@ -13,9 +13,13 @@ public class WmsStockQuanService : IDynamicApiController, ITransient { private readonly SqlSugarRepository<WmsStockQuan> _rep; - public WmsStockQuanService(SqlSugarRepository<WmsStockQuan> rep) + private readonly SqlSugarRepository<Mes_BatchOrderUPI_New> _Mes_BatchOrderUPI_New_Rep; + + public WmsStockQuanService(SqlSugarRepository<WmsStockQuan> rep, + SqlSugarRepository<Mes_BatchOrderUPI_New> Mes_BatchOrderUPI_New_Rep) { _rep = rep; + _Mes_BatchOrderUPI_New_Rep = Mes_BatchOrderUPI_New_Rep; } /// <summary> @@ -302,5 +306,124 @@ return groupedResult; // 杩斿洖鍒嗙粍缁撴灉 } + + + + /// <summary> + /// 涓嶅垎椤垫煡璇㈡壒娆$己鏂欐竻鍗� 涓嶉綈鍖� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpGet] + [ApiDescriptionSettings(Name = "ShortageList")] + [Description("WmsStockQuan/ShortageList")] + public async Task<List<WmsShortageListOutput>> ShortageList([FromQuery] KittingListInput input) + { + var list = await _rep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.DetailName), u => u.PlaceCode.Contains(input.DetailName.Trim())) + .Select(x => new WmsShortageListOutput + { + OrderId = x.OrderId, + PlanNo = x.PlanNo, + PackageCode = x.PackageCode + }) + .ToListAsync(); // 纭繚鑾峰彇缁撴灉涓� List + + // 鍒嗙粍骞惰繑鍥炲垎缁勪俊鎭� + var groupedResult = list + .GroupBy(x => x.OrderId) // 鎸� OrderId 鍒嗙粍 + .Select(g => new WmsShortageListOutput + { + OrderId = g.Key, // 鑾峰彇鍒嗙粍鐨勯敭 + PlanNo = g.FirstOrDefault().PlanNo, // 鑾峰彇缁勫唴鐨勭涓�涓� PlanNo + PackageCode = g.FirstOrDefault().PackageCode, // 鑾峰彇缁勫唴鐨勭涓�涓� PackageCode + HasCount = g.Count(), // 缁熻姣忕粍鐨勬暟閲� + TotalCount = 0, // 鍒濆鍖� TotalCount + ShortageCount = 0 // 鍒濆鍖� ShortageCount + }) + .OrderBy(g => g.OrderId) // 鏍规嵁 OrderId 鎺掑簭 + .ToList(); // 杞崲涓� List + + // 寰幆 groupedResult 缁欐瘡涓�鏉″姞涓婃�绘暟閲� CountTotal + foreach (var item in groupedResult) + { + item.TotalCount = await _Mes_BatchOrderUPI_New_Rep.AsQueryable().CountAsync(m => m.PackageCode == item.PackageCode); // 鏍规嵁 PackageCode 缁熻鎬绘潯鏁� + item.ShortageCount = item.TotalCount - item.HasCount > 0 ? item.TotalCount - item.HasCount : 0; + } + + return groupedResult; // 杩斿洖鍒嗙粍缁撴灉 + } + + + + + /// <summary> + /// 鍒嗛〉鏌ヨ鎵规缂烘枡娓呭崟 涓嶉綈鍖� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [ApiDescriptionSettings(Name = "ShortagePage")] + [Description("WmsStockQuan/ShortagePage")] + public async Task<SqlSugarPagedList<WmsShortageListOutput>> ShortagePage(KittingListInput input) + { + // 鑾峰彇鍩虹鏁版嵁 + var list = await _rep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.DetailName), u => u.PlaceCode.Contains(input.DetailName.Trim())) + .Select(x => new WmsShortageListOutput + { + OrderId = x.OrderId, + PlanNo = x.PlanNo, + PackageCode = x.PackageCode + }) + .ToListAsync(); // 纭繚鑾峰彇缁撴灉涓� List + + // 鍒嗙粍骞惰繑鍥炲垎缁勪俊鎭� + var groupedResult = list + .GroupBy(x => x.OrderId) // 鎸� OrderId 鍒嗙粍 + .Select(g => new WmsShortageListOutput + { + OrderId = g.Key, // 鑾峰彇鍒嗙粍鐨勯敭 + PlanNo = g.FirstOrDefault().PlanNo, // 鑾峰彇缁勫唴鐨勭涓�涓� PlanNo + PackageCode = g.FirstOrDefault().PackageCode, // 鑾峰彇缁勫唴鐨勭涓�涓� PackageCode + HasCount = g.Count(), // 缁熻姣忕粍鐨勬暟閲� + TotalCount = 0, // 鍒濆鍖� TotalCount + ShortageCount = 0 // 鍒濆鍖� ShortageCount + }) + .OrderBy(g => g.OrderId) // 鏍规嵁 OrderId 鎺掑簭 + .ToList(); // 杞崲涓� List + + // 寰幆 groupedResult 缁欐瘡涓�鏉″姞涓婃�绘暟閲� TotalCount + foreach (var item in groupedResult) + { + item.TotalCount = await _Mes_BatchOrderUPI_New_Rep.AsQueryable().CountAsync(m => m.PackageCode == item.PackageCode); // 鏍规嵁 PackageCode 缁熻鎬绘潯鏁� + item.ShortageCount = item.TotalCount - item.HasCount > 0 ? item.TotalCount - item.HasCount : 0; + } + + // 鍒嗛〉澶勭悊 + var pagedResult = groupedResult.AsQueryable() // 灏嗗垎缁勭粨鏋滆浆鎹负鍙煡璇㈢殑闆嗗悎 + .OrderBy(g => g.OrderId) // 杩涜鎺掑簭 + .Skip((input.Page - 1) * input.PageSize) // 璺宠繃鍓嶉潰鐨勯〉鏁� + .Take(input.PageSize) // 鍙栧嚭褰撳墠椤电殑鏁版嵁 + .ToList(); // 杞崲涓� List + + var totalCount = groupedResult.Count; // 鑾峰彇鎬绘暟 + var totalPages = (int)Math.Ceiling((double)totalCount / input.PageSize); // 璁$畻鎬婚〉鏁� + + // 鏋勯�犲苟杩斿洖鍒嗛〉缁撴灉 + return new SqlSugarPagedList<WmsShortageListOutput> + { + Page = input.Page, + PageSize = input.PageSize, + Total = totalCount, + TotalPages = totalPages, + Items = pagedResult, + HasPrevPage = input.Page > 1, + HasNextPage = input.Page < totalPages + }; + } + + + } -- Gitblit v1.9.3