LA24030_LuLiPackageLine_Web/src/api/main/WmsTask/wmsRbLineTask.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskInput.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskOutput.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/机器人任务表导入模板.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 |
LA24030_LuLiPackageLine_Web/src/api/main/WmsTask/wmsRbLineTask.ts
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,78 @@ import request from '/@/utils/request'; enum Api { AddWmsRbLineTask = '/api/wmsRbLineTask/add', DeleteWmsRbLineTask = '/api/wmsRbLineTask/delete', UpdateWmsRbLineTask = '/api/wmsRbLineTask/update', PageWmsRbLineTask = '/api/wmsRbLineTask/page', ListWmsRbLineTask = '/api/wmsRbLineTask/list', DetailWmsRbLineTask = '/api/wmsRbLineTask/detail', ImportExcelWmsRbLineTask = '/api/wmsRbLineTask/importExcel', DownloadExcelTemplateWmsRbLineTask = '/api/wmsRbLineTask/downloadExcelTemplate', } // å¢å æºå¨äººä»»å¡è¡¨ export const addWmsRbLineTask = (params?: any) => request({ url: Api.AddWmsRbLineTask, method: 'post', data: params }); // å 餿ºå¨äººä»»å¡è¡¨ export const deleteWmsRbLineTask = (params?: any) => request({ url: Api.DeleteWmsRbLineTask, method: 'post', data: params }); // ç¼è¾æºå¨äººä»»å¡è¡¨ export const updateWmsRbLineTask = (params?: any) => request({ url: Api.UpdateWmsRbLineTask, method: 'post', data: params }); // å¯¼å ¥æºå¨äººä»»å¡è¡¨ export const importExcelWmsRbLineTask = (params?: any) => request({ url: Api.ImportExcelWmsRbLineTask, method: 'post', data: params }); // ä¸è½½å¯¼å ¥æºå¨äººä»»å¡è¡¨æ¨¡æ¿ export const downloadExcelTemplateWmsRbLineTask = (params?: any) => request({ url: Api.DownloadExcelTemplateWmsRbLineTask, method: 'get', data: params, responseType: 'blob' }); // å页æ¥è¯¢æºå¨äººä»»å¡è¡¨ export const pageWmsRbLineTask = (params?: any) => request({ url: Api.PageWmsRbLineTask, method: 'post', data: params }); // ä¸å页æ¥è¯¢æºå¨äººä»»å¡è¡¨ export const listWmsRbLineTask = (params?: any) => request({ url: Api.ListWmsRbLineTask, method: 'get', data: params }); // è¯¦æ æºå¨äººä»»å¡è¡¨ export const detailWmsRbLineTask = (id: any) => request({ url: Api.DetailWmsRbLineTask, method: 'get', data: { id } }); LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,291 @@ <template> <div class="wmsRbLineTask-container"> <el-dialog v-model="isShowDialog" :width="800" draggable="" :close-on-click-modal="false"> <template #header> <div style="color: #fff"> <!--<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>--> <span>{{ props.title }}</span> </div> </template> <el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules" v-loading="loading"> <el-row :gutter="35"> <el-form-item v-show="false"> <el-input v-model="ruleForm.id" /> </el-form-item> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä»»å¡å·" prop="taskNo"> <el-input v-model="ruleForm.taskNo" placeholder="请è¾å ¥ä»»å¡å·" maxlength="50" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä»»å¡åç§°" prop="taskName"> <el-input v-model="ruleForm.taskName" placeholder="请è¾å ¥ä»»å¡åç§°" maxlength="50" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="é¨ä»¶æ¡ç " prop="upi"> <el-input v-model="ruleForm.upi" placeholder="请è¾å ¥é¨ä»¶æ¡ç " maxlength="50" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="é¿" prop="length"> <el-input v-model="ruleForm.length" placeholder="请è¾å ¥é¿" maxlength="53" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="宽" prop="width"> <el-input v-model="ruleForm.width" placeholder="请è¾å ¥å®½" maxlength="53" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="å" prop="thk"> <el-input v-model="ruleForm.thk" placeholder="请è¾å ¥å" maxlength="53" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="æ¹æ¬¡å·" prop="planNo"> <el-input v-model="ruleForm.planNo" placeholder="请è¾å ¥æ¹æ¬¡å·" maxlength="50" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="订åå·" prop="orderId"> <el-input v-model="ruleForm.orderId" placeholder="请è¾å ¥è®¢åå·" maxlength="50" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="å è£ å·" prop="packageCode"> <el-input v-model="ruleForm.packageCode" placeholder="请è¾å ¥å è£ å·" maxlength="50" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="åºä½ç¼ç " prop="placeCode"> <el-input v-model="ruleForm.placeCode" placeholder="请è¾å ¥åºä½ç¼ç " maxlength="50" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä»»å¡ç±»å" prop="rbTaskType"> <el-select clearable v-model="ruleForm.rbTaskType" placeholder="è¯·éæ©ä»»å¡ç±»å"> <el-option v-for="(item,index) in getEnumRbTaskTypeData" :key="index" :value="item.value" :label="`${item.describe}`"></el-option> </el-select> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä»»å¡ç±»ååç§°" prop="rbTaskTypeEnumName"> <el-input v-model="ruleForm.rbTaskTypeEnumName" placeholder="请è¾å ¥ä»»å¡ç±»ååç§°" maxlength="50" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä»»å¡ç¶æ" prop="taskStatus"> <el-select clearable v-model="ruleForm.taskStatus" placeholder="è¯·éæ©ä»»å¡ç¶æ"> <el-option v-for="(item,index) in getEnumTaskStatusData" :key="index" :value="item.value" :label="`${item.describe}`"></el-option> </el-select> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä»»å¡ç¶æåç§°" prop="taskStatusName"> <el-input v-model="ruleForm.taskStatusName" placeholder="请è¾å ¥ä»»å¡ç¶æåç§°" maxlength="255" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä»»å¡æè¿°" prop="taskDescribe"> <el-input v-model="ruleForm.taskDescribe" placeholder="请è¾å ¥ä»»å¡æè¿°" maxlength="255" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="任塿¶æ¯" prop="taskMsg"> <el-input v-model="ruleForm.taskMsg" placeholder="请è¾å ¥ä»»å¡æ¶æ¯" maxlength="255" show-word-limit clearable /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä¸åæ¶é´" prop="issueTime"> <el-date-picker v-model="ruleForm.issueTime" type="date" placeholder="ä¸åæ¶é´" /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="ä»»å¡å®ææ¶é´" prop="finishedTime"> <el-date-picker v-model="ruleForm.finishedTime" type="date" placeholder="ä»»å¡å®ææ¶é´" /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="æ¯å¦æ 记强å¶å®æ" prop="isFlagFinish"> <el-switch v-model="ruleForm.isFlagFinish" active-text="æ¯" inactive-text="å¦" /> </el-form-item> </el-col> </el-row> </el-form> <template #footer> <span class="dialog-footer"> <el-button @click="cancel">å æ¶</el-button> <el-button type="primary" @click="submit" :disabled="disabled_btn">ç¡® å®</el-button> </span> </template> </el-dialog> </div> </template> <style scoped> :deep(.el-select), :deep(.el-input-number) { width: 100%; } </style> <script lang="ts" setup> import { ref,onMounted } from "vue"; import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils'; import { ElMessage } from "element-plus"; import type { FormRules } from "element-plus"; import { addWmsRbLineTask, updateWmsRbLineTask, detailWmsRbLineTask } from "/@/api/main/WmsTask/wmsRbLineTask"; import { getAPI } from '/@/utils/axios-utils'; import { SysEnumApi } from '/@/api-services/api'; const getEnumRbTaskTypeData = ref<any>([]); const getEnumTaskStatusData = ref<any>([]); //ç¶çº§ä¼ 鿥çåæ° var props = defineProps({ title: { type: String, default: "", }, }); //ç¶çº§ä¼ 鿥ç彿°ï¼ç¨äºåè° const emit = defineEmits(["reloadTable"]); const ruleFormRef = ref(); const isShowDialog = ref(false); const loading = ref(false); const disabled_btn = ref(false); const ruleForm = ref<any>({}); //èªè¡æ·»å å ¶ä»è§å const rules = ref<FormRules>({ taskNo: [{required: true, message: '请è¾å ¥ä»»å¡å·ï¼', trigger: 'blur',},], upi: [{required: true, message: '请è¾å ¥é¨ä»¶æ¡ç ï¼', trigger: 'blur',},], length: [{required: true, message: '请è¾å ¥é¿ï¼', trigger: 'blur',},], width: [{required: true, message: '请è¾å ¥å®½ï¼', trigger: 'blur',},], thk: [{required: true, message: '请è¾å ¥åï¼', trigger: 'blur',},], planNo: [{required: true, message: '请è¾å ¥æ¹æ¬¡å·ï¼', trigger: 'blur',},], orderId: [{required: true, message: '请è¾å ¥è®¢åå·ï¼', trigger: 'blur',},], packageCode: [{required: true, message: '请è¾å ¥å è£ å·ï¼', trigger: 'blur',},], placeCode: [{required: true, message: '请è¾å ¥åºä½ç¼ç ï¼', trigger: 'blur',},], taskStatus: [{required: true, message: 'è¯·éæ©ä»»å¡ç¶æï¼', trigger: 'change',},], taskStatusName: [{required: true, message: '请è¾å ¥ä»»å¡ç¶æåç§°ï¼', trigger: 'blur',},], isFlagFinish: [{required: true, message: 'è¯·éæ©æ¯å¦æ 记强å¶å®æï¼', trigger: 'change',},], isDelete: [{required: true, message: 'è¯·éæ©è½¯å é¤ï¼', trigger: 'change',},], }); /* * æå¼å¼¹çª * @param flag æ è®°ï¼1æ°å¢ 2ç¼è¾ 3æ¥çï¼ * @param row è¡æ°æ® */ const openDialog = async (flag: number,row: any) => { // ruleForm.value = JSON.parse(JSON.stringify(row)); // æ¹ç¨detailè·åææ°æ°æ®æ¥ç¼è¾ let rowData = JSON.parse(JSON.stringify(row)); if (rowData.id) ruleForm.value = (await detailWmsRbLineTask(rowData.id)).data.result; else { ruleForm.value = rowData; ruleForm.value.isFlagFinish = false;//å¿ å¡«ï¼èµå¼é»è®¤å¼ } isShowDialog.value = true; }; // å ³éå¼¹çª const closeDialog = () => { emit("reloadTable"); isShowDialog.value = false; }; // åæ¶ const cancel = () => { isShowDialog.value = false; }; // æäº¤ const submit = async () => { disabled_btn.value = true; ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => { if (isValid) { loading.value = true; let values = ruleForm.value; let ret={}; let title='æ°å¢'; if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) { ret = await addWmsRbLineTask(values); } else { title='ç¼è¾'; ret = await updateWmsRbLineTask(values); } loading.value = false; disabled_btn.value = false; if(ret.data.type=="success"){ ElMessage.success(title+'æå'); closeDialog(); } } else { disabled_btn.value = false; ElMessage({ message: `表åæ${Object.keys(fields).length}å¤éªè¯å¤±è´¥ï¼è¯·ä¿®æ¹ååæäº¤`, type: "error", }); } }); }; // 页é¢å è½½æ¶ onMounted(async () => { getEnumRbTaskTypeData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('RbTaskTypeEnum')).data.result ?? []; getEnumTaskStatusData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('TaskStatusEnum')).data.result ?? []; }); //å°å±æ§æè 彿°æ´é²ç»ç¶ç»ä»¶ defineExpose({ openDialog }); </script> LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,424 @@ <template> <div class="wmsRbLineTask-container"> <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> <el-form :model="queryParamsWmsRbLineTask" 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="queryParamsWmsRbLineTask.searchKey" clearable="" placeholder="ä»»å¡å·,ä»»å¡åç§°,é¨ä»¶æ¡ç ,æ¹æ¬¡å·,订åå·,å è£ å·,åºä½ç¼ç ,ä»»å¡ç±»ååç§°,ä»»å¡ç¶æåç§°,ä»»å¡æè¿°,任塿¶æ¯,å建人,ä¿®æ¹äºº"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä»»å¡å·"> <el-input v-model="queryParamsWmsRbLineTask.taskNo" clearable="" placeholder="请è¾å ¥ä»»å¡å·"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä»»å¡åç§°"> <el-input v-model="queryParamsWmsRbLineTask.taskName" clearable="" placeholder="请è¾å ¥ä»»å¡åç§°"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="é¨ä»¶æ¡ç "> <el-input v-model="queryParamsWmsRbLineTask.upi" clearable="" placeholder="请è¾å ¥é¨ä»¶æ¡ç "/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="é¿"> <el-input v-model="queryParamsWmsRbLineTask.length" clearable="" placeholder="请è¾å ¥é¿"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="宽"> <el-input v-model="queryParamsWmsRbLineTask.width" clearable="" placeholder="请è¾å ¥å®½"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="å"> <el-input v-model="queryParamsWmsRbLineTask.thk" clearable="" placeholder="请è¾å ¥å"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="æ¹æ¬¡å·"> <el-input v-model="queryParamsWmsRbLineTask.planNo" clearable="" placeholder="请è¾å ¥æ¹æ¬¡å·"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="订åå·"> <el-input v-model="queryParamsWmsRbLineTask.orderId" clearable="" placeholder="请è¾å ¥è®¢åå·"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="å è£ å·"> <el-input v-model="queryParamsWmsRbLineTask.packageCode" clearable="" placeholder="请è¾å ¥å è£ å·"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="åºä½ç¼ç "> <el-input v-model="queryParamsWmsRbLineTask.placeCode" clearable="" placeholder="请è¾å ¥åºä½ç¼ç "/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä»»å¡ç±»å"> <el-select clearable="" v-model="queryParamsWmsRbLineTask.rbTaskType" placeholder="è¯·éæ©ä»»å¡ç±»å"> <el-option v-for="(item,index) in getEnumRbTaskTypeData_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="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä»»å¡ç±»ååç§°"> <el-input v-model="queryParamsWmsRbLineTask.rbTaskTypeEnumName" clearable="" placeholder="请è¾å ¥ä»»å¡ç±»ååç§°"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä»»å¡ç¶æ"> <el-select clearable="" v-model="queryParamsWmsRbLineTask.taskStatus" placeholder="è¯·éæ©ä»»å¡ç¶æ"> <el-option v-for="(item,index) in getEnumTaskStatusData_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="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä»»å¡ç¶æåç§°"> <el-input v-model="queryParamsWmsRbLineTask.taskStatusName" clearable="" placeholder="请è¾å ¥ä»»å¡ç¶æåç§°"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä»»å¡æè¿°"> <el-input v-model="queryParamsWmsRbLineTask.taskDescribe" clearable="" placeholder="请è¾å ¥ä»»å¡æè¿°"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="任塿¶æ¯"> <el-input v-model="queryParamsWmsRbLineTask.taskMsg" clearable="" placeholder="请è¾å ¥ä»»å¡æ¶æ¯"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä¸åæ¶é´"> <el-date-picker placeholder="è¯·éæ©ä¸åæ¶é´" value-format="YYYY/MM/DD" type="daterange" v-model="queryParamsWmsRbLineTask.issueTimeRange" /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="ä»»å¡å®ææ¶é´"> <el-date-picker placeholder="è¯·éæ©ä»»å¡å®ææ¶é´" value-format="YYYY/MM/DD" type="daterange" v-model="queryParamsWmsRbLineTask.finishedTimeRange" /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask"> <el-form-item label="æ¯å¦æ 记强å¶å®æ"> <el-select clearable="" v-model="queryParamsWmsRbLineTask.isFlagFinish" placeholder="è¯·éæ©æ¯å¦æ 记强å¶å®æ"> <el-option v-for="(item,index) in getEnumIsFlagFinishData_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="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="handleQueryWmsRbLineTask" v-auth="'wmsRbLineTask:page'" :disabled="disabled_btnWmsRbLineTask"> æ¥è¯¢ </el-button> <el-button icon="ele-Refresh" @click="resetWmsRbLineTask"> éç½® </el-button> <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIWmsRbLineTask" v-if="!showAdvanceQueryUIWmsRbLineTask" style="margin-left:5px;"> é«çº§æ¥è¯¢ </el-button> <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIWmsRbLineTask" v-if="showAdvanceQueryUIWmsRbLineTask" style="margin-left:5px;"> éè </el-button> <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWmsRbLineTask" v-auth="'wmsRbLineTask:add'"> æ°å¢ </el-button> <el-button type="primary" style="margin-left:5px;" icon="ele-Upload" @click="openImportExcelWmsRbLineTask" v-auth="'wmsRbLineTask:importExcel'" > å¯¼å ¥ </el-button> <el-button type="primary" style="margin-left:5px;" icon="ele-Download" @click="handleExportExcelWmsRbLineTask" v-auth="'wmsRbLineTask: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"> <el-table ref="tableRefWmsRbLineTask" :data="tableDataWmsRbLineTask" style="width: 100%" v-loading="loadingWmsRbLineTask" tooltip-effect="light" row-key="id" @sort-change="sortChangeWmsRbLineTask" border=""> <el-table-column type="index" label="åºå·" width="55" align="center"/> <el-table-column prop="taskNo" label="ä»»å¡å·" show-overflow-tooltip="" /> <el-table-column prop="taskName" label="ä»»å¡åç§°" show-overflow-tooltip="" /> <el-table-column prop="upi" 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="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="placeCode" label="åºä½ç¼ç " show-overflow-tooltip="" /> <el-table-column prop="rbTaskType" label="ä»»å¡ç±»å" show-overflow-tooltip="" > <template #default="scope"> <el-tag>{{ getEnumDesc(scope.row.rbTaskType, getEnumRbTaskTypeData_Index)}}</el-tag> </template> </el-table-column> <el-table-column prop="rbTaskTypeEnumName" label="ä»»å¡ç±»ååç§°" show-overflow-tooltip="" /> <el-table-column prop="taskStatus" label="ä»»å¡ç¶æ" show-overflow-tooltip="" > <template #default="scope"> <el-tag>{{ getEnumDesc(scope.row.taskStatus, getEnumTaskStatusData_Index)}}</el-tag> </template> </el-table-column> <el-table-column prop="taskStatusName" label="ä»»å¡ç¶æåç§°" show-overflow-tooltip="" /> <el-table-column prop="taskDescribe" label="ä»»å¡æè¿°" show-overflow-tooltip="" /> <el-table-column prop="taskMsg" label="任塿¶æ¯" show-overflow-tooltip="" /> <el-table-column prop="issueTime" label="ä¸åæ¶é´" width="80" :formatter="formatDate_T_Date" show-overflow-tooltip="" /> <el-table-column prop="finishedTime" label="ä»»å¡å®ææ¶é´" width="80" :formatter="formatDate_T_Date" show-overflow-tooltip="" /> <el-table-column prop="isFlagFinish" label="æ¯å¦æ 记强å¶å®æ" show-overflow-tooltip=""> <template #default="scope"> <el-tag v-if="scope.row.isFlagFinish"> æ¯ </el-tag> <el-tag type="danger" v-else> å¦ </el-tag> </template> </el-table-column> <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-column label="æä½" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('wmsRbLineTask:update') || auth('wmsRbLineTask:delete')"> <template #default="scope"> <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWmsRbLineTask(scope.row)" v-auth="'wmsRbLineTask:update'"> ç¼è¾ </el-button> <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWmsRbLineTask(scope.row)" v-auth="'wmsRbLineTask:delete'"> å é¤ </el-button> </template> </el-table-column> </el-table> <el-pagination v-model:currentPage="tableParamsWmsRbLineTask.page" v-model:page-size="tableParamsWmsRbLineTask.pageSize" :total="tableParamsWmsRbLineTask.total" :page-sizes="[10, 20, 50, 100, 200, 500]" small="" background="" @size-change="handleSizeChangeWmsRbLineTask" @current-change="handleCurrentChangeWmsRbLineTask" layout="total, sizes, prev, pager, next, jumper" /> <printDialogWmsRbLineTask ref="printDialogRefWmsRbLineTask" :title="printWmsRbLineTaskTitle" @reloadTable="handleQueryWmsRbLineTask" /> <editDialogWmsRbLineTask ref="editDialogRefWmsRbLineTask" :title="editWmsRbLineTaskTitle" @reloadTable="handleQueryWmsRbLineTask" /> <importExcelDialog ref="importExcelDialogRefWmsRbLineTask" :title="importExcelTitleWmsRbLineTask" @parentUploadFun="handleImportExcelWmsRbLineTask" @parentDownFun="handleDownExcelWmsRbLineTask" /> </el-card> </div> </template> <script lang="ts" setup="" name="wmsRbLineTask"> 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 importExcelDialog from '/@/components/importExcel/index.vue' //å¼å ¥å¯¼å ¥ç»ä»¶ import { exportPageExcel } from '/@/utils/exportPageExcel' //å¼å ¥å¯¼åºæ¹æ³ import printDialogWmsRbLineTask from '/@/views/system/print/component/hiprint/preview.vue' import editDialogWmsRbLineTask from '/@/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue' import { pageWmsRbLineTask, deleteWmsRbLineTask,importExcelWmsRbLineTask,downloadExcelTemplateWmsRbLineTask } from '/@/api/main/WmsTask/wmsRbLineTask'; import { getAPI } from '/@/utils/axios-utils'; import { SysEnumApi } from '/@/api-services/api'; import commonFunction from '/@/utils/commonFunction'; const getEnumRbTaskTypeData_Index = ref<any>([]); const getEnumTaskStatusData_Index = ref<any>([]); const getEnumIsFlagFinishData_Index = ref<any>([]); const { getEnumDesc } = commonFunction(); /***************************************************[æºå¨äººä»»å¡è¡¨æä½]å¼å§***************************************************/ const showAdvanceQueryUIWmsRbLineTask = ref(false); const tableRefWmsRbLineTask = ref(null); const printDialogRefWmsRbLineTask = ref(); const editDialogRefWmsRbLineTask = ref(); const loadingWmsRbLineTask = ref(false); const disabled_btnWmsRbLineTask = ref(false); const tableDataWmsRbLineTask = ref<any>([]); const queryParamsWmsRbLineTask = ref<any>({}); const tableParamsWmsRbLineTask = ref({ page: 1, pageSize: 10, total: 0, }); const printWmsRbLineTaskTitle = ref(""); const editWmsRbLineTaskTitle = ref(""); // æ¹åé«çº§æ¥è¯¢çæ§ä»¶æ¾ç¤ºç¶æ const changeAdvanceQueryUIWmsRbLineTask = () => { showAdvanceQueryUIWmsRbLineTask.value = !showAdvanceQueryUIWmsRbLineTask.value; } // æ¥è¯¢æºå¨äººä»»å¡è¡¨ const handleQueryWmsRbLineTask = async () => { loadingWmsRbLineTask.value = true; disabled_btnWmsRbLineTask.value = true; var res = await pageWmsRbLineTask(Object.assign(queryParamsWmsRbLineTask.value, tableParamsWmsRbLineTask.value)); if(res.data.type=="success"){ tableDataWmsRbLineTask.value = res.data.result?.items ?? []; tableParamsWmsRbLineTask.value.total = res.data.result?.total; } loadingWmsRbLineTask.value = false; disabled_btnWmsRbLineTask.value = false; }; // éç½®æºå¨äººä»»å¡è¡¨æ¥è¯¢ const resetWmsRbLineTask = async () => { queryParamsWmsRbLineTask.value = {} }; // æºå¨äººä»»å¡è¡¨åæåº const sortChangeWmsRbLineTask = async (column: any) => { queryParamsWmsRbLineTask.value.field = column.prop; queryParamsWmsRbLineTask.value.order = column.order; await handleQueryWmsRbLineTask(); }; // æå¼æ°å¢æºå¨äººä»»å¡è¡¨é¡µé¢ const openAddWmsRbLineTask = () => { editWmsRbLineTaskTitle.value = 'æ·»å æºå¨äººä»»å¡è¡¨'; editDialogRefWmsRbLineTask.value.openDialog(1,{}); }; // æå¼æå°æºå¨äººä»»å¡è¡¨é¡µé¢ const openPrintWmsRbLineTask = async (row: any) => { printWmsRbLineTaskTitle.value = 'æå°æºå¨äººä»»å¡è¡¨'; } // æå¼ç¼è¾æºå¨äººä»»å¡è¡¨é¡µé¢ const openEditWmsRbLineTask = (row: any) => { editWmsRbLineTaskTitle.value = 'ç¼è¾æºå¨äººä»»å¡è¡¨'; editDialogRefWmsRbLineTask.value.openDialog(2,row); }; // å 餿ºå¨äººä»»å¡è¡¨ const delWmsRbLineTask = (row: any) => { ElMessageBox.confirm(`ç¡®å®è¦å é¤å?`, "æç¤º", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning", }) .then(async () => { loadingWmsRbLineTask.value = true; var ret = await deleteWmsRbLineTask(row); if(ret.data.type=="success"){ ElMessage.success("å 餿å"); } loadingWmsRbLineTask.value = false; handleQueryWmsRbLineTask(); }) .catch(() => {}); }; // æ¹åæºå¨äººä»»å¡è¡¨é¡µé¢å®¹é const handleSizeChangeWmsRbLineTask = (val: number) => { tableParamsWmsRbLineTask.value.pageSize = val; handleQueryWmsRbLineTask(); }; // æ¹åæºå¨äººä»»å¡è¡¨é¡µç åºå· const handleCurrentChangeWmsRbLineTask = (val: number) => { tableParamsWmsRbLineTask.value.page = val; handleQueryWmsRbLineTask(); }; /***************************************************[æºå¨äººä»»å¡è¡¨æä½]ç»æ***************************************************/ /***************************************************[æºå¨äººä»»å¡è¡¨å¯¼å ¥]å¼å§***************************************************/ const importExcelTitleWmsRbLineTask = ref(""); const importExcelDialogRefWmsRbLineTask = ref(); //æå¼å¯¼å ¥çé¢ const openImportExcelWmsRbLineTask = () => { importExcelTitleWmsRbLineTask.value = 'å¯¼å ¥æºå¨äººä»»å¡è¡¨'; importExcelDialogRefWmsRbLineTask.value.openDialog({}); }; //å¯¼å ¥æ°æ® const handleImportExcelWmsRbLineTask = async (formData:Blob) => { var result = await importExcelWmsRbLineTask(formData); importExcelDialogRefWmsRbLineTask.value.callBackUploadFun(result.data);//åè°å¯¼å ¥å页é¢çæ¹æ³ if(result.data.type=="success"){ handleQueryWmsRbLineTask(); } }; //ä¸è½½å¯¼å ¥æ¨¡æ¿ const handleDownExcelWmsRbLineTask = async () => { var result = await downloadExcelTemplateWmsRbLineTask(); importExcelDialogRefWmsRbLineTask.value.callBackDownFun(result);//åè°å¯¼å ¥å页é¢çæ¹æ³ }; /***************************************************[æºå¨äººä»»å¡è¡¨å¯¼å ¥]ç»æ***************************************************/ /***************************************************[æºå¨äººä»»å¡è¡¨å¯¼åº]å¼å§***************************************************/ //å®ä¹å½å页é¢çæ¹æ³ç» const functionMapWmsRbLineTask = { getEnumRbTaskTypeData_Index, getEnumTaskStatusData_Index, getEnumIsFlagFinishData_Index, formatDate_T_Date, formatDate_T_Time }; //ç¹å»å¯¼åºæé® const handleExportExcelWmsRbLineTask = async (formData:Blob) => { loadingWmsRbLineTask.value = true; disabled_btnWmsRbLineTask.value = true; var new_tableParamsWmsRbLineTask=JSON.parse(JSON.stringify(tableParamsWmsRbLineTask.value)); new_tableParamsWmsRbLineTask.page = 1; new_tableParamsWmsRbLineTask.pageSize = 100000; var res = await pageWmsRbLineTask(Object.assign(queryParamsWmsRbLineTask.value, new_tableParamsWmsRbLineTask)); if(res.data.type=="success"){ exportExcelWmsRbLineTask(res.data.result?.items ?? []); } loadingWmsRbLineTask.value = false; disabled_btnWmsRbLineTask.value = false; }; //å¯¼åº const exportExcelWmsRbLineTask = async (exportDataList:Array) => { exportPageExcel(exportDataList, tableRefWmsRbLineTask,"æºå¨äººä»»å¡è¡¨",functionMapWmsRbLineTask); }; /***************************************************[æºå¨äººä»»å¡è¡¨å¯¼åº]ç»æ***************************************************/ // æºå¨äººä»»å¡è¡¨é¡µé¢å è½½æ¶ onMounted(async () => { getEnumRbTaskTypeData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('RbTaskTypeEnum')).data.result ?? []; getEnumTaskStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('TaskStatusEnum')).data.result ?? []; getEnumIsFlagFinishData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('TrueFalseEnum')).data.result ?? []; }); handleQueryWmsRbLineTask(); </script> <style scoped> :deep(.el-input), :deep(.el-select), :deep(.el-input-number) { width: 100%; } </style> LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskInput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,369 @@ using Admin.NET.Core; using System.ComponentModel.DataAnnotations; namespace Admin.NET.Application; /// <summary> /// æºå¨äººä»»å¡è¡¨åºç¡è¾å ¥åæ° /// </summary> public class WmsRbLineTaskBaseInput { /// <summary> /// ä»»å¡å· /// </summary> public virtual string TaskNo { get; set; } /// <summary> /// ä»»å¡åç§° /// </summary> public virtual string TaskName { get; set; } /// <summary> /// é¨ä»¶æ¡ç /// </summary> public virtual string UPI { get; set; } /// <summary> /// é¿ /// </summary> public virtual float Length { get; set; } /// <summary> /// 宽 /// </summary> public virtual float Width { get; set; } /// <summary> /// å /// </summary> public virtual float Thk { get; set; } /// <summary> /// æ¹æ¬¡å· /// </summary> public virtual string PlanNo { get; set; } /// <summary> /// 订åå· /// </summary> public virtual string OrderId { get; set; } /// <summary> /// å è£ å· /// </summary> public virtual string PackageCode { get; set; } /// <summary> /// åºä½ç¼ç /// </summary> public virtual string PlaceCode { get; set; } /// <summary> /// ä»»å¡ç±»å /// </summary> public virtual Admin.NET.Application.RbTaskTypeEnum? RbTaskType { get; set; } /// <summary> /// ä»»å¡ç±»ååç§° /// </summary> public virtual string RbTaskTypeEnumName { get; set; } /// <summary> /// ä»»å¡ç¶æ /// </summary> public virtual Admin.NET.Application.TaskStatusEnum TaskStatus { get; set; } /// <summary> /// ä»»å¡ç¶æåç§° /// </summary> public virtual string TaskStatusName { get; set; } /// <summary> /// ä»»å¡æè¿° /// </summary> public virtual string TaskDescribe { get; set; } /// <summary> /// 任塿¶æ¯ /// </summary> public virtual string TaskMsg { get; set; } /// <summary> /// ä¸åæ¶é´ /// </summary> public virtual DateTime? IssueTime { get; set; } /// <summary> /// ä»»å¡å®ææ¶é´ /// </summary> public virtual DateTime? FinishedTime { get; set; } /// <summary> /// æ¯å¦æ 记强å¶å®æ /// </summary> public virtual bool IsFlagFinish { get; set; } /// <summary> /// å建æ¶é´ /// </summary> public virtual DateTime? CreateTime { get; set; } /// <summary> /// ä¿®æ¹æ¶é´ /// </summary> public virtual DateTime? UpdateTime { get; set; } /// <summary> /// å建人Id /// </summary> public virtual long? CreateUserId { get; set; } /// <summary> /// å建人 /// </summary> public virtual string CreateUserName { get; set; } /// <summary> /// ä¿®æ¹äººId /// </summary> public virtual long? UpdateUserId { get; set; } /// <summary> /// ä¿®æ¹äºº /// </summary> public virtual string UpdateUserName { get; set; } /// <summary> /// 软å é¤ /// </summary> public virtual bool IsDelete { get; set; } } /// <summary> /// æºå¨äººä»»å¡è¡¨å页æ¥è¯¢è¾å ¥åæ° /// </summary> public class WmsRbLineTaskInput : BasePageInput { /// <summary> /// å ³é®åæ¥è¯¢ /// </summary> public string? SearchKey { get; set; } /// <summary> /// ä»»å¡å· /// </summary> public string? TaskNo { get; set; } /// <summary> /// ä»»å¡åç§° /// </summary> public string? TaskName { get; set; } /// <summary> /// é¨ä»¶æ¡ç /// </summary> public string? UPI { get; set; } /// <summary> /// é¿ /// </summary> public float? Length { get; set; } /// <summary> /// 宽 /// </summary> public float? Width { get; set; } /// <summary> /// å /// </summary> public float? Thk { get; set; } /// <summary> /// æ¹æ¬¡å· /// </summary> public string? PlanNo { get; set; } /// <summary> /// 订åå· /// </summary> public string? OrderId { get; set; } /// <summary> /// å è£ å· /// </summary> public string? PackageCode { get; set; } /// <summary> /// åºä½ç¼ç /// </summary> public string? PlaceCode { get; set; } /// <summary> /// ä»»å¡ç±»å /// </summary> public Admin.NET.Application.RbTaskTypeEnum? RbTaskType { get; set; } /// <summary> /// ä»»å¡ç±»ååç§° /// </summary> public string? RbTaskTypeEnumName { get; set; } /// <summary> /// ä»»å¡ç¶æ /// </summary> public Admin.NET.Application.TaskStatusEnum? TaskStatus { get; set; } /// <summary> /// ä»»å¡ç¶æåç§° /// </summary> public string? TaskStatusName { get; set; } /// <summary> /// ä»»å¡æè¿° /// </summary> public string? TaskDescribe { get; set; } /// <summary> /// 任塿¶æ¯ /// </summary> public string? TaskMsg { get; set; } /// <summary> /// ä¸åæ¶é´ /// </summary> public DateTime? IssueTime { get; set; } /// <summary> /// ä¸åæ¶é´èå´ /// </summary> public List<DateTime?> IssueTimeRange { get; set; } /// <summary> /// ä»»å¡å®ææ¶é´ /// </summary> public DateTime? FinishedTime { get; set; } /// <summary> /// ä»»å¡å®ææ¶é´èå´ /// </summary> public List<DateTime?> FinishedTimeRange { get; set; } /// <summary> /// æ¯å¦æ 记强å¶å®æ /// </summary> public bool? IsFlagFinish { get; set; } } /// <summary> /// æºå¨äººä»»å¡è¡¨å¢å è¾å ¥åæ° /// </summary> public class AddWmsRbLineTaskInput : WmsRbLineTaskBaseInput { /// <summary> /// ä»»å¡å· /// </summary> [Required(ErrorMessage = "ä»»å¡å·ä¸è½ä¸ºç©º")] public override string TaskNo { get; set; } /// <summary> /// é¨ä»¶æ¡ç /// </summary> [Required(ErrorMessage = "é¨ä»¶æ¡ç ä¸è½ä¸ºç©º")] public override string UPI { get; set; } /// <summary> /// é¿ /// </summary> [Required(ErrorMessage = "é¿ä¸è½ä¸ºç©º")] public override float Length { get; set; } /// <summary> /// 宽 /// </summary> [Required(ErrorMessage = "宽ä¸è½ä¸ºç©º")] public override float Width { get; set; } /// <summary> /// å /// </summary> [Required(ErrorMessage = "åä¸è½ä¸ºç©º")] public override float Thk { get; set; } /// <summary> /// æ¹æ¬¡å· /// </summary> [Required(ErrorMessage = "æ¹æ¬¡å·ä¸è½ä¸ºç©º")] public override string PlanNo { get; set; } /// <summary> /// 订åå· /// </summary> [Required(ErrorMessage = "订åå·ä¸è½ä¸ºç©º")] public override string OrderId { get; set; } /// <summary> /// å è£ å· /// </summary> [Required(ErrorMessage = "å è£ å·ä¸è½ä¸ºç©º")] public override string PackageCode { get; set; } /// <summary> /// åºä½ç¼ç /// </summary> [Required(ErrorMessage = "åºä½ç¼ç ä¸è½ä¸ºç©º")] public override string PlaceCode { get; set; } /// <summary> /// ä»»å¡ç¶æ /// </summary> [Required(ErrorMessage = "ä»»å¡ç¶æä¸è½ä¸ºç©º")] public override Admin.NET.Application.TaskStatusEnum TaskStatus { get; set; } /// <summary> /// ä»»å¡ç¶æåç§° /// </summary> [Required(ErrorMessage = "ä»»å¡ç¶æåç§°ä¸è½ä¸ºç©º")] public override string TaskStatusName { get; set; } /// <summary> /// æ¯å¦æ 记强å¶å®æ /// </summary> [Required(ErrorMessage = "æ¯å¦æ 记强å¶å®æä¸è½ä¸ºç©º")] public override bool IsFlagFinish { get; set; } /// <summary> /// 软å é¤ /// </summary> [Required(ErrorMessage = "软å é¤ä¸è½ä¸ºç©º")] public override bool IsDelete { get; set; } } /// <summary> /// æºå¨äººä»»å¡è¡¨å é¤è¾å ¥åæ° /// </summary> public class DeleteWmsRbLineTaskInput : BaseIdInput { } /// <summary> /// æºå¨äººä»»å¡è¡¨æ´æ°è¾å ¥åæ° /// </summary> public class UpdateWmsRbLineTaskInput : AddWmsRbLineTaskInput { /// <summary> /// 主é®Id /// </summary> [Required(ErrorMessage = "主é®Idä¸è½ä¸ºç©º")] public long Id { get; set; } } /// <summary> /// æºå¨äººä»»å¡è¡¨ä¸»é®æ¥è¯¢è¾å ¥åæ° /// </summary> public class QueryByIdWmsRbLineTaskInput : DeleteWmsRbLineTaskInput { } LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskOutput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,145 @@ namespace Admin.NET.Application; /// <summary> /// æºå¨äººä»»å¡è¡¨è¾åºåæ° /// </summary> public class WmsRbLineTaskOutput { /// <summary> /// 主é®Id /// </summary> public long? Id { get; set; } /// <summary> /// ä»»å¡å· /// </summary> public string TaskNo { get; set; } /// <summary> /// ä»»å¡åç§° /// </summary> public string TaskName { get; set; } /// <summary> /// é¨ä»¶æ¡ç /// </summary> public string UPI { get; set; } /// <summary> /// é¿ /// </summary> public float Length { get; set; } /// <summary> /// 宽 /// </summary> public float Width { get; set; } /// <summary> /// å /// </summary> public float Thk { get; set; } /// <summary> /// æ¹æ¬¡å· /// </summary> public string PlanNo { get; set; } /// <summary> /// 订åå· /// </summary> public string OrderId { get; set; } /// <summary> /// å è£ å· /// </summary> public string PackageCode { get; set; } /// <summary> /// åºä½ç¼ç /// </summary> public string PlaceCode { get; set; } /// <summary> /// ä»»å¡ç±»å /// </summary> public Admin.NET.Application.RbTaskTypeEnum? RbTaskType { get; set; } /// <summary> /// ä»»å¡ç±»ååç§° /// </summary> public string RbTaskTypeEnumName { get; set; } /// <summary> /// ä»»å¡ç¶æ /// </summary> public Admin.NET.Application.TaskStatusEnum TaskStatus { get; set; } /// <summary> /// ä»»å¡ç¶æåç§° /// </summary> public string TaskStatusName { get; set; } /// <summary> /// ä»»å¡æè¿° /// </summary> public string TaskDescribe { get; set; } /// <summary> /// 任塿¶æ¯ /// </summary> public string TaskMsg { get; set; } /// <summary> /// ä¸åæ¶é´ /// </summary> public DateTime? IssueTime { get; set; } /// <summary> /// ä»»å¡å®ææ¶é´ /// </summary> public DateTime? FinishedTime { get; set; } /// <summary> /// æ¯å¦æ 记强å¶å®æ /// </summary> public bool IsFlagFinish { get; set; } /// <summary> /// å建æ¶é´ /// </summary> public DateTime? CreateTime { get; set; } /// <summary> /// ä¿®æ¹æ¶é´ /// </summary> public DateTime? UpdateTime { get; set; } /// <summary> /// å建人Id /// </summary> public long? CreateUserId { get; set; } /// <summary> /// å建人 /// </summary> public string CreateUserName { get; set; } /// <summary> /// ä¿®æ¹äººId /// </summary> public long? UpdateUserId { get; set; } /// <summary> /// ä¿®æ¹äºº /// </summary> public string UpdateUserName { get; set; } /// <summary> /// 软å é¤ /// </summary> public bool IsDelete { get; set; } } LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,511 @@ using Admin.NET.Core.Service; using Admin.NET.Application.Entity; using Microsoft.AspNetCore.Http; using System.Data; using System.Web; using System.Text; namespace Admin.NET.Application; /// <summary> /// æºå¨äººä»»å¡è¡¨æå¡ /// </summary> [ApiDescriptionSettings(ApplicationConst.WmsTaskGroupName, Order = 100)] public class WmsRbLineTaskService : IDynamicApiController, ITransient { private readonly SqlSugarRepository<WmsRbLineTask> _rep; public WmsRbLineTaskService(SqlSugarRepository<WmsRbLineTask> rep) { _rep = rep; } /// <summary> /// å页æ¥è¯¢æºå¨äººä»»å¡è¡¨ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Page")] [Description("WmsRbLineTask/Page")] public async Task<SqlSugarPagedList<WmsRbLineTaskOutput>> Page(WmsRbLineTaskInput input) { var query = CommonPageFilter(input); return await query.OrderBuilder(input, "", "Id").ToPagedListAsync(input.Page, input.PageSize); } /// <summary> /// ä¸å页æ¥è¯¢æºå¨äººä»»å¡è¡¨ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet] [ApiDescriptionSettings(Name = "List")] [Description("WmsRbLineTask/List")] public async Task<List<WmsRbLineTaskOutput>> List([FromQuery] WmsRbLineTaskInput input) { var query = CommonPageFilter(input); return await query.OrderBuilder(input, "", "Id").Select<WmsRbLineTaskOutput>().ToListAsync(); } /// <summary> /// å¢å æºå¨äººä»»å¡è¡¨ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Add")] [Description("WmsRbLineTask/Add")] public async Task<long> Add(AddWmsRbLineTaskInput input) { var entity = input.Adapt<WmsRbLineTask>(); //é夿§éªè¯ await CheckExist(entity); await _rep.InsertAsync(entity); return entity.Id; } /// <summary> /// å 餿ºå¨äººä»»å¡è¡¨ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Delete")] [Description("WmsRbLineTask/Delete")] public async Task Delete(DeleteWmsRbLineTaskInput input) { var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); //await _rep.FakeDeleteAsync(entity); //åå é¤ await _rep.DeleteAsync(entity); //çå é¤ } /// <summary> /// æ´æ°æºå¨äººä»»å¡è¡¨ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Update")] [Description("WmsRbLineTask/Update")] public async Task Update(UpdateWmsRbLineTaskInput input) { var entity = input.Adapt<WmsRbLineTask>(); //é夿§éªè¯ await CheckExist(entity, true); await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } /// <summary> /// è·åæºå¨äººä»»å¡è¡¨ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet] [ApiDescriptionSettings(Name = "Detail")] [Description("WmsRbLineTask/Detail")] public async Task<WmsRbLineTask> Detail([FromQuery] QueryByIdWmsRbLineTaskInput input) { return await _rep.GetFirstAsync(u => u.Id == input.Id); } #region å¯¼å ¥ /// <summary> /// Excel模æ¿å¯¼å ¥æºå¨äººä»»å¡è¡¨åè½ /// </summary> /// <param name="file">Excelæ¨¡æ¿æä»¶</param> /// <returns>å¯¼å ¥çè®°å½æ°</returns> [HttpPost] [ApiDescriptionSettings(Name = "ImportExcel")] [Description("WmsRbLineTask/ImportExcel")] public async Task<int> ImportExcelAsync(IFormFile file) { int _HeadStartLine = 2;//第1è¡æ¯è¯´æ,第2è¡æ¯åå int _DataStartLine = 3;//第3è¡å¼å§æ¯æ°æ® DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine); var addList = await CommonImport(importDataTable, _DataStartLine); await _rep.InsertRangeAsync(addList); return addList.Count; } /// <summary> /// DataTable转æ¢å®ä½å¯¹è±¡å表 /// </summary> /// <param name="dataTable"></param> /// <param name="dataStartLine">模çååå¼å§è¡</param> /// <returns></returns> private async Task<List<WmsRbLineTask>> CommonImport(DataTable dataTable, int dataStartLine) { var details = new List<WmsRbLineTask>(); int index = dataStartLine;//模çååå¼å§è¡ foreach (System.Data.DataRow row in dataTable.Rows) { index++; //å¯¼å ¥æ¨¡çå®å¶å代ç ï¼æ¿æ¢æ¨¡ç使ç¨ï¼ var addItem = new WmsRbLineTask(); #region å®ä¹åé var _TaskNo = "";//ä»»å¡å· var _TaskName = "";//ä»»å¡åç§° var _UPI = "";//é¨ä»¶æ¡ç var _Length = "";//é¿ var _Width = "";//宽 var _Thk = "";//å var _PlanNo = "";//æ¹æ¬¡å· var _OrderId = "";//订åå· var _PackageCode = "";//å è£ å· var _PlaceCode = "";//åºä½ç¼ç var _RbTaskType = "";//ä»»å¡ç±»å var _RbTaskTypeEnumName = "";//ä»»å¡ç±»ååç§° var _TaskStatus = "";//ä»»å¡ç¶æ var _TaskStatusName = "";//ä»»å¡ç¶æåç§° var _TaskDescribe = "";//ä»»å¡æè¿° var _TaskMsg = "";//任塿¶æ¯ var _IssueTime = "";//ä¸åæ¶é´ var _FinishedTime = "";//ä»»å¡å®ææ¶é´ var _IsFlagFinish = "";//æ¯å¦æ 记强å¶å®æ #endregion #region åå¼ _TaskNo = row["ä»»å¡å·"]?.ToString(); _TaskName = row["ä»»å¡åç§°"]?.ToString(); _UPI = row["é¨ä»¶æ¡ç "]?.ToString(); _Length = row["é¿"]?.ToString(); _Width = row["宽"]?.ToString(); _Thk = row["å"]?.ToString(); _PlanNo = row["æ¹æ¬¡å·"]?.ToString(); _OrderId = row["订åå·"]?.ToString(); _PackageCode = row["å è£ å·"]?.ToString(); _PlaceCode = row["åºä½ç¼ç "]?.ToString(); _RbTaskType = row["ä»»å¡ç±»å"]?.ToString(); _RbTaskTypeEnumName = row["ä»»å¡ç±»ååç§°"]?.ToString(); _TaskStatus = row["ä»»å¡ç¶æ"]?.ToString(); _TaskStatusName = row["ä»»å¡ç¶æåç§°"]?.ToString(); _TaskDescribe = row["ä»»å¡æè¿°"]?.ToString(); _TaskMsg = row["任塿¶æ¯"]?.ToString(); _IssueTime = row["ä¸åæ¶é´"]?.ToString(); _FinishedTime = row["ä»»å¡å®ææ¶é´"]?.ToString(); _IsFlagFinish = row["æ¯å¦æ 记强å¶å®æ"]?.ToString(); #endregion #region éªè¯ if (string.IsNullOrEmpty(_TaskNo)) { throw Oops.Oh($"第{index}è¡[ä»»å¡å·]{_TaskNo}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_TaskNo)) { addItem.TaskNo = (string)(_TaskNo.Trim()); } if (!string.IsNullOrEmpty(_TaskName)) { addItem.TaskName = (string)(_TaskName.Trim()); } if (string.IsNullOrEmpty(_UPI)) { throw Oops.Oh($"第{index}è¡[é¨ä»¶æ¡ç ]{_UPI}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_UPI)) { addItem.UPI = (string)(_UPI.Trim()); } if (string.IsNullOrEmpty(_Length)) { throw Oops.Oh($"第{index}è¡[é¿]{_Length}ä¸è½ä¸ºç©ºï¼"); } //if(!string.IsNullOrEmpty(_Length)) //{ // addItem.Length = (float)(_Length.Trim()); // } //if (string.IsNullOrEmpty(_Width)) //{ // throw Oops.Oh($"第{index}è¡[宽]{_Width}ä¸è½ä¸ºç©ºï¼"); //} //if(!string.IsNullOrEmpty(_Width)) //{ // addItem.Width = (float)(_Width.Trim()); // } if (string.IsNullOrEmpty(_Thk)) { throw Oops.Oh($"第{index}è¡[å]{_Thk}ä¸è½ä¸ºç©ºï¼"); } //if(!string.IsNullOrEmpty(_Thk)) //{ // addItem.Thk = (float)(_Thk.Trim()); // } if (string.IsNullOrEmpty(_PlanNo)) { throw Oops.Oh($"第{index}è¡[æ¹æ¬¡å·]{_PlanNo}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_PlanNo)) { addItem.PlanNo = (string)(_PlanNo.Trim()); } if (string.IsNullOrEmpty(_OrderId)) { throw Oops.Oh($"第{index}è¡[订åå·]{_OrderId}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_OrderId)) { addItem.OrderId = (string)(_OrderId.Trim()); } if (string.IsNullOrEmpty(_PackageCode)) { throw Oops.Oh($"第{index}è¡[å è£ å·]{_PackageCode}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_PackageCode)) { addItem.PackageCode = (string)(_PackageCode.Trim()); } if (string.IsNullOrEmpty(_PlaceCode)) { throw Oops.Oh($"第{index}è¡[åºä½ç¼ç ]{_PlaceCode}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_PlaceCode)) { addItem.PlaceCode = (string)(_PlaceCode.Trim()); } if (!string.IsNullOrEmpty(_RbTaskType)) { Admin.NET.Application.RbTaskTypeEnum enumRbTaskType = default(Admin.NET.Application.RbTaskTypeEnum); if (!Enum.TryParse<Admin.NET.Application.RbTaskTypeEnum>(_RbTaskType, out enumRbTaskType) && !string.IsNullOrEmpty(_RbTaskType)) { throw Oops.Oh($"第{index}è¡[ä»»å¡ç±»å]{_RbTaskType}å¼ä¸æ£ç¡®ï¼"); } else { addItem.RbTaskType = enumRbTaskType; } } if (!string.IsNullOrEmpty(_RbTaskTypeEnumName)) { addItem.RbTaskTypeEnumName = (string)(_RbTaskTypeEnumName.Trim()); } if (string.IsNullOrEmpty(_TaskStatus)) { throw Oops.Oh($"第{index}è¡[ä»»å¡ç¶æ]{_TaskStatus}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_TaskStatus)) { Admin.NET.Application.TaskStatusEnum enumTaskStatus = default(Admin.NET.Application.TaskStatusEnum); if (!Enum.TryParse<Admin.NET.Application.TaskStatusEnum>(_TaskStatus, out enumTaskStatus) && !string.IsNullOrEmpty(_TaskStatus)) { throw Oops.Oh($"第{index}è¡[ä»»å¡ç¶æ]{_TaskStatus}å¼ä¸æ£ç¡®ï¼"); } else { addItem.TaskStatus = enumTaskStatus; } } if (string.IsNullOrEmpty(_TaskStatusName)) { throw Oops.Oh($"第{index}è¡[ä»»å¡ç¶æåç§°]{_TaskStatusName}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_TaskStatusName)) { addItem.TaskStatusName = (string)(_TaskStatusName.Trim()); } if (!string.IsNullOrEmpty(_TaskDescribe)) { addItem.TaskDescribe = (string)(_TaskDescribe.Trim()); } if (!string.IsNullOrEmpty(_TaskMsg)) { addItem.TaskMsg = (string)(_TaskMsg.Trim()); } if (!string.IsNullOrEmpty(_IssueTime)) { addItem.IssueTime = Convert.ToDateTime(Convert.ToDateTime(_IssueTime.Trim()).ToShortDateString()); } if (!string.IsNullOrEmpty(_FinishedTime)) { addItem.FinishedTime = Convert.ToDateTime(Convert.ToDateTime(_FinishedTime.Trim()).ToShortDateString()); } if (string.IsNullOrEmpty(_IsFlagFinish)) { throw Oops.Oh($"第{index}è¡[æ¯å¦æ 记强å¶å®æ]{_IsFlagFinish}ä¸è½ä¸ºç©ºï¼"); } if (!string.IsNullOrEmpty(_IsFlagFinish)) { if (!_IsFlagFinish.Equals("æ¯") && !_IsFlagFinish.Equals("å¦")) { throw Oops.Oh($"第{index}è¡[æ¯å¦æ 记强å¶å®æ]{_IsFlagFinish}å¼ä¸æ£ç¡®ï¼"); } else { bool outIsFlagFinish = _IsFlagFinish.Equals("æ¯") ? true : false; addItem.IsFlagFinish = outIsFlagFinish; } } #endregion details.Add(addItem); } //éªé await CheckExisitForImport(details); return details; } /// <summary> /// æ ¹æ®çæ¬ä¸è½½æºå¨äººä»»å¡è¡¨çExcelå¯¼å ¥æ¨¡æ¿ /// </summary> /// <returns>ä¸è½½çæ¨¡æ¿æä»¶</returns> [HttpGet] [ApiDescriptionSettings(Name = "DownloadExcelTemplate")] [Description("WmsRbLineTask/DownloadExcelTemplate")] public IActionResult DownloadExcelTemplate() { string _path = TemplateConst.EXCEL_TEMPLATEFILE_å¯¼å ¥æ¨¡çè·¯å¾ + $"\\æºå¨äººä»»å¡è¡¨{TemplateConst.EXCEL_TEMPLATEFILE_å¯¼å ¥æ¨¡çåç§°åç¼}.xlsx"; var fileName = HttpUtility.UrlEncode($"å¯¼å ¥æ¨¡æ¿(æºå¨äººä»»å¡è¡¨).xlsx", Encoding.GetEncoding("UTF-8")); return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; } #endregion #region ç§ææ¹æ³ /// <summary> /// å ¬å ±æ¥è¯¢æºå¨äººä»»å¡è¡¨æ¡ä»¶ /// </summary> /// <param name="input"></param> /// <returns></returns> private ISugarQueryable<WmsRbLineTaskOutput> CommonPageFilter(WmsRbLineTaskInput input) { var query = _rep.AsQueryable() .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u => u.TaskNo.Contains(input.SearchKey.Trim()) || u.TaskName.Contains(input.SearchKey.Trim()) || u.UPI.Contains(input.SearchKey.Trim()) || u.PlanNo.Contains(input.SearchKey.Trim()) || u.OrderId.Contains(input.SearchKey.Trim()) || u.PackageCode.Contains(input.SearchKey.Trim()) || u.PlaceCode.Contains(input.SearchKey.Trim()) || u.RbTaskTypeEnumName.Contains(input.SearchKey.Trim()) || u.TaskStatusName.Contains(input.SearchKey.Trim()) || u.TaskDescribe.Contains(input.SearchKey.Trim()) || u.TaskMsg.Contains(input.SearchKey.Trim()) || u.CreateUserName.Contains(input.SearchKey.Trim()) || u.UpdateUserName.Contains(input.SearchKey.Trim()) ) .WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo), u => u.TaskNo.Contains(input.TaskNo.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.TaskName), u => u.TaskName.Contains(input.TaskName.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.UPI), u => u.UPI.Contains(input.UPI.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.PlanNo), u => u.PlanNo.Contains(input.PlanNo.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.OrderId), u => u.OrderId.Contains(input.OrderId.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.PlaceCode), u => u.PlaceCode.Contains(input.PlaceCode.Trim())) .WhereIF(input.RbTaskType.HasValue, u => u.RbTaskType == input.RbTaskType) .WhereIF(!string.IsNullOrWhiteSpace(input.RbTaskTypeEnumName), u => u.RbTaskTypeEnumName.Contains(input.RbTaskTypeEnumName.Trim())) .WhereIF(input.TaskStatus.HasValue, u => u.TaskStatus == input.TaskStatus) .WhereIF(!string.IsNullOrWhiteSpace(input.TaskStatusName), u => u.TaskStatusName.Contains(input.TaskStatusName.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.TaskDescribe), u => u.TaskDescribe.Contains(input.TaskDescribe.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.TaskMsg), u => u.TaskMsg.Contains(input.TaskMsg.Trim())) .WhereIF(input.IsFlagFinish.HasValue, u => u.IsFlagFinish == input.IsFlagFinish) .Select<WmsRbLineTaskOutput>(); if (input.IssueTimeRange != null && input.IssueTimeRange.Count > 0) { DateTime? start = input.IssueTimeRange[0].Value.AddDays(-1); query = query.WhereIF(start.HasValue, u => u.IssueTime > start); if (input.IssueTimeRange.Count > 1 && input.IssueTimeRange[1].HasValue) { var end = input.IssueTimeRange[1].Value.AddDays(1); query = query.Where(u => u.IssueTime < end); } } if (input.FinishedTimeRange != null && input.FinishedTimeRange.Count > 0) { DateTime? start = input.FinishedTimeRange[0].Value.AddDays(-1); query = query.WhereIF(start.HasValue, u => u.FinishedTime > start); if (input.FinishedTimeRange.Count > 1 && input.FinishedTimeRange[1].HasValue) { var end = input.FinishedTimeRange[1].Value.AddDays(1); query = query.Where(u => u.FinishedTime < end); } } return query; } /// <summary> /// é夿§éªè¯ /// </summary> /// <param name="input">éªè¯å¯¹è±¡</param> /// <param name="isEdit">æ¯å¦æ¯ç¼è¾</param> /// <returns></returns> private async Task CheckExist(WmsRbLineTask input, bool isEdit = false) { //没æé ç½®ç»åæ ¡éªï¼ä¸éè¦éªé //没æé ç½®åç¬æ ¡éªï¼ä¸éè¦éªé } /// <summary> /// æ ¹æ®ç»åæ ¡éªååç¬æ ¡éªéªè¯æ°æ®æ¯å¦å·²åå¨-å¯¼å ¥æ¶éªè¯ /// </summary> /// <param name="inputs"></param> /// <returns></returns> private async Task CheckExisitForImport(List<WmsRbLineTask> inputs) { if (inputs?.Count <= 0) { throw Oops.Oh($"å¯¼å ¥æ°æ®ä¸è½ä¸ºç©º"); } //æ ¹æ®ç»åæ ¡éªéªè¯è¡¨æ ¼ä¸ä¸æ¯å¦å·²åå¨ç¸åæ°æ® //æ ¹æ®åç¬æ ¡éªéªè¯è¡¨æ ¼ä¸ä¸æ¯å¦å·²åå¨ç¸åæ°æ® } #endregion } LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/»úÆ÷ÈËÈÎÎñ±íµ¼ÈëÄ£°å.xlsxBinary files differ