11
schangxiang@126.com
2024-12-02 aef846861811f23b81efaf22f058a4da6b8d92ec
11
已添加12个文件
已修改1个文件
2159 ■■■■■ 文件已修改
LA24030_LuLiPackageLine_Web/public/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsRecordPackageProcess.ts 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsRecordUpiProcess.ts 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/ReportCenter/wmsRecordPackageProcess/component/editDialog.vue 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/ReportCenter/wmsRecordPackageProcess/index.vue 301 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/ReportCenter/wmsRecordUpiProcess/component/editDialog.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/ReportCenter/wmsRecordUpiProcess/index.vue 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordPackageProcess/Dto/WmsRecordPackageProcessInput.cs 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordPackageProcess/Dto/WmsRecordPackageProcessOutput.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordPackageProcess/WmsRecordPackageProcessService.cs 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordUpiProcess/Dto/WmsRecordUpiProcessInput.cs 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordUpiProcess/Dto/WmsRecordUpiProcessOutput.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordUpiProcess/WmsRecordUpiProcessService.cs 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/public/config.js
@@ -4,6 +4,6 @@
  "VITE_OPEN_CDN": "false",
  "VITE_PUBLIC_PATH": "",
  "VITE_SM_PUBLIC_KEY": "0484C7466D950E120E5ECE5DD85D0C90EAA85081A3A2BD7C57AE6DC822EFCCBD66620C67B0103FC8DD280E36C3B282977B722AAEC3C56518EDCEBAFB72C5A05312",
  //"VITE_API_URL": "http://localhost:5005"
  "VITE_API_URL": "http://172.17.1.111:5005"  //正式地址
  "VITE_API_URL": "http://localhost:5005"
  //"VITE_API_URL": "http://172.17.1.111:5005"  //正式地址
LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsRecordPackageProcess.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
import request from '/@/utils/request';
enum Api {
  AddWmsRecordPackageProcess = '/api/wmsRecordPackageProcess/add',
  DeleteWmsRecordPackageProcess = '/api/wmsRecordPackageProcess/delete',
  UpdateWmsRecordPackageProcess = '/api/wmsRecordPackageProcess/update',
  PageWmsRecordPackageProcess = '/api/wmsRecordPackageProcess/page',
  ListWmsRecordPackageProcess = '/api/wmsRecordPackageProcess/list',
  DetailWmsRecordPackageProcess = '/api/wmsRecordPackageProcess/detail',
  ImportExcelWmsRecordPackageProcess = '/api/wmsRecordPackageProcess/importExcel',
  DownloadExcelTemplateWmsRecordPackageProcess = '/api/wmsRecordPackageProcess/downloadExcelTemplate',
}
// å¢žåŠ åŒ…è¿‡ç¨‹å±¥åŽ†
export const addWmsRecordPackageProcess = (params?: any) =>
    request({
        url: Api.AddWmsRecordPackageProcess,
        method: 'post',
        data: params
    });
// åˆ é™¤åŒ…过程履历
export const deleteWmsRecordPackageProcess = (params?: any) =>
    request({
            url: Api.DeleteWmsRecordPackageProcess,
            method: 'post',
            data: params
        });
// ç¼–辑包过程履历
export const updateWmsRecordPackageProcess = (params?: any) =>
    request({
            url: Api.UpdateWmsRecordPackageProcess,
            method: 'post',
            data: params
        });
// å¯¼å…¥åŒ…过程履历
export const importExcelWmsRecordPackageProcess = (params?: any) =>
    request({
        url: Api.ImportExcelWmsRecordPackageProcess,
        method: 'post',
        data: params
    });
// ä¸‹è½½å¯¼å…¥åŒ…过程履历模板
export const downloadExcelTemplateWmsRecordPackageProcess = (params?: any) =>
    request({
            url: Api.DownloadExcelTemplateWmsRecordPackageProcess,
            method: 'get',
            data: params,
            responseType: 'blob'
        });
// åˆ†é¡µæŸ¥è¯¢åŒ…过程履历
export const pageWmsRecordPackageProcess = (params?: any) =>
    request({
            url: Api.PageWmsRecordPackageProcess,
            method: 'post',
            data: params
        });
// ä¸åˆ†é¡µæŸ¥è¯¢åŒ…过程履历
export const listWmsRecordPackageProcess = (params?: any) =>
    request({
            url: Api.ListWmsRecordPackageProcess,
            method: 'get',
            data: params
        });
// è¯¦æƒ…包过程履历
export const detailWmsRecordPackageProcess = (id: any) =>
    request({
            url: Api.DetailWmsRecordPackageProcess,
            method: 'get',
            data: { id }
        });
LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsRecordUpiProcess.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
import request from '/@/utils/request';
enum Api {
  AddWmsRecordUpiProcess = '/api/wmsRecordUpiProcess/add',
  DeleteWmsRecordUpiProcess = '/api/wmsRecordUpiProcess/delete',
  UpdateWmsRecordUpiProcess = '/api/wmsRecordUpiProcess/update',
  PageWmsRecordUpiProcess = '/api/wmsRecordUpiProcess/page',
  ListWmsRecordUpiProcess = '/api/wmsRecordUpiProcess/list',
  DetailWmsRecordUpiProcess = '/api/wmsRecordUpiProcess/detail',
  ImportExcelWmsRecordUpiProcess = '/api/wmsRecordUpiProcess/importExcel',
  DownloadExcelTemplateWmsRecordUpiProcess = '/api/wmsRecordUpiProcess/downloadExcelTemplate',
}
// å¢žåŠ æ¿ä»¶è¿‡ç¨‹å±¥åŽ†
export const addWmsRecordUpiProcess = (params?: any) =>
    request({
        url: Api.AddWmsRecordUpiProcess,
        method: 'post',
        data: params
    });
// åˆ é™¤æ¿ä»¶è¿‡ç¨‹å±¥åކ
export const deleteWmsRecordUpiProcess = (params?: any) =>
    request({
            url: Api.DeleteWmsRecordUpiProcess,
            method: 'post',
            data: params
        });
// ç¼–辑板件过程履历
export const updateWmsRecordUpiProcess = (params?: any) =>
    request({
            url: Api.UpdateWmsRecordUpiProcess,
            method: 'post',
            data: params
        });
// å¯¼å…¥æ¿ä»¶è¿‡ç¨‹å±¥åކ
export const importExcelWmsRecordUpiProcess = (params?: any) =>
    request({
        url: Api.ImportExcelWmsRecordUpiProcess,
        method: 'post',
        data: params
    });
// ä¸‹è½½å¯¼å…¥æ¿ä»¶è¿‡ç¨‹å±¥åŽ†æ¨¡æ¿
export const downloadExcelTemplateWmsRecordUpiProcess = (params?: any) =>
    request({
            url: Api.DownloadExcelTemplateWmsRecordUpiProcess,
            method: 'get',
            data: params,
            responseType: 'blob'
        });
// åˆ†é¡µæŸ¥è¯¢æ¿ä»¶è¿‡ç¨‹å±¥åކ
export const pageWmsRecordUpiProcess = (params?: any) =>
    request({
            url: Api.PageWmsRecordUpiProcess,
            method: 'post',
            data: params
        });
// ä¸åˆ†é¡µæŸ¥è¯¢æ¿ä»¶è¿‡ç¨‹å±¥åކ
export const listWmsRecordUpiProcess = (params?: any) =>
    request({
            url: Api.ListWmsRecordUpiProcess,
            method: 'get',
            data: params
        });
// è¯¦æƒ…板件过程履历
export const detailWmsRecordUpiProcess = (id: any) =>
    request({
            url: Api.DetailWmsRecordUpiProcess,
            method: 'get',
            data: { id }
        });
LA24030_LuLiPackageLine_Web/src/views/main/ReportCenter/wmsRecordPackageProcess/component/editDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,204 @@
<template>
    <div class="wmsRecordPackageProcess-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="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="info5">
                            <el-input v-model="ruleForm.info5" placeholder="请输入生产单号" maxlength="60" 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="upiStatus">
                            <el-select clearable v-model="ruleForm.upiStatus" placeholder="请选择包状态">
                                <el-option v-for="(item,index) in  getEnumUpiStatusData" :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="upiFlag">
                            <el-select clearable v-model="ruleForm.upiFlag" placeholder="请选择标记">
                                <el-option v-for="(item,index) in  getEnumUpiFlagData" :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="location">
                            <el-input v-model="ruleForm.location" 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="operRemark">
                            <el-input v-model="ruleForm.operRemark" placeholder="请输入备注" maxlength="100" show-word-limit clearable />
                        </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 { addWmsRecordPackageProcess, updateWmsRecordPackageProcess, detailWmsRecordPackageProcess } from "/@/api/main/ReportCenter/wmsRecordPackageProcess";
    import { getAPI } from '/@/utils/axios-utils';
    import { SysEnumApi } from '/@/api-services/api';
    const getEnumUpiStatusData = ref<any>([]);
    const getEnumUpiFlagData = 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>({
        packageCode: [{required: true, message: '请输入包装号!', trigger: 'blur',},],
        planNo: [{required: true, message: '请输入批次号!', trigger: 'blur',},],
        orderId: [{required: true, message: '请输入订单号!', trigger: 'blur',},],
        upiStatus: [{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 detailWmsRecordPackageProcess(rowData.id)).data.result;
        else {
            ruleForm.value = rowData;
        }
        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 addWmsRecordPackageProcess(values);
                } else {
                    title='编辑';
                    ret = await updateWmsRecordPackageProcess(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 () => {
            getEnumUpiStatusData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiStatusEnum')).data.result ?? [];
            getEnumUpiFlagData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiFlagEnum')).data.result ?? [];
    });
    //将属性或者函数暴露给父组件
    defineExpose({ openDialog });
</script>
LA24030_LuLiPackageLine_Web/src/views/main/ReportCenter/wmsRecordPackageProcess/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,301 @@
<template>
  <div class="wmsRecordPackageProcess-container">
    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
      <el-form :model="queryParamsWmsRecordPackageProcess" 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="queryParamsWmsRecordPackageProcess.searchKey" clearable="" placeholder="包装号,生产单号,批次号,订单号,位置,备注,创建人"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordPackageProcess">
            <el-form-item label="包装号">
              <el-input v-model="queryParamsWmsRecordPackageProcess.packageCode" clearable="" placeholder="请输入包装号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordPackageProcess">
            <el-form-item label="生产单号">
              <el-input v-model="queryParamsWmsRecordPackageProcess.info5" clearable="" placeholder="请输入生产单号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordPackageProcess">
            <el-form-item label="批次号">
              <el-input v-model="queryParamsWmsRecordPackageProcess.planNo" clearable="" placeholder="请输入批次号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordPackageProcess">
            <el-form-item label="订单号">
              <el-input v-model="queryParamsWmsRecordPackageProcess.orderId" clearable="" placeholder="请输入订单号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordPackageProcess">
            <el-form-item label="包状态">
              <el-select clearable="" v-model="queryParamsWmsRecordPackageProcess.upiStatus" placeholder="请选择包状态">
                <el-option v-for="(item,index) in getEnumUpiStatusData_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="showAdvanceQueryUIWmsRecordPackageProcess">
            <el-form-item label="标记">
              <el-select clearable="" v-model="queryParamsWmsRecordPackageProcess.upiFlag" placeholder="请选择标记">
                <el-option v-for="(item,index) in getEnumUpiFlagData_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="showAdvanceQueryUIWmsRecordPackageProcess">
            <el-form-item label="位置">
              <el-input v-model="queryParamsWmsRecordPackageProcess.location" clearable="" placeholder="请输入位置"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordPackageProcess">
            <el-form-item label="备注">
              <el-input v-model="queryParamsWmsRecordPackageProcess.operRemark" clearable="" placeholder="请输入备注"/>
            </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="handleQueryWmsRecordPackageProcess" v-auth="'wmsRecordPackageProcess:page'" :disabled="disabled_btnWmsRecordPackageProcess"> æŸ¥è¯¢ </el-button>
                      <el-button icon="ele-Refresh" @click="resetWmsRecordPackageProcess"> é‡ç½® </el-button>
                        <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIWmsRecordPackageProcess" v-if="!showAdvanceQueryUIWmsRecordPackageProcess" style="margin-left:5px;"> é«˜çº§æŸ¥è¯¢ </el-button>
                        <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIWmsRecordPackageProcess" v-if="showAdvanceQueryUIWmsRecordPackageProcess" style="margin-left:5px;"> éšè— </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWmsRecordPackageProcess" v-auth="'wmsRecordPackageProcess:add'"> æ–°å¢ž </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Download" @click="handleExportExcelWmsRecordPackageProcess"  v-auth="'wmsRecordPackageProcess: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="tableRefWmsRecordPackageProcess"
                :data="tableDataWmsRecordPackageProcess"
                style="width: 100%"
                v-loading="loadingWmsRecordPackageProcess"
                tooltip-effect="light"
                                row-key="id"
                @sort-change="sortChangeWmsRecordPackageProcess"
                border="">
        <el-table-column type="index" label="序号" width="55" align="center"/>
        <el-table-column prop="packageCode" label="包装号"  show-overflow-tooltip="" />
        <el-table-column prop="info5" 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="upiStatus" label="包状态"  show-overflow-tooltip="" >
            <template #default="scope">
              <el-tag>{{ getEnumDesc(scope.row.upiStatus, getEnumUpiStatusData_Index)}}</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="upiFlag" label="标记"  show-overflow-tooltip="" >
            <template #default="scope">
              <el-tag>{{ getEnumDesc(scope.row.upiFlag, getEnumUpiFlagData_Index)}}</el-tag>
            </template>
          </el-table-column>
        <el-table-column prop="location" label="位置"  show-overflow-tooltip="" />
        <el-table-column prop="operRemark" label="备注"  show-overflow-tooltip="" />
         <el-table-column prop="createTime" label="创建时间" width="130" :formatter="formatDate_T_Time"  show-overflow-tooltip="" />
        <el-table-column prop="createUserName" label="创建人"  show-overflow-tooltip="" />
        <el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('wmsRecordPackageProcess:update') || auth('wmsRecordPackageProcess:delete')">
          <template #default="scope">
            <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWmsRecordPackageProcess(scope.row)" v-auth="'wmsRecordPackageProcess:update'"> ç¼–辑 </el-button>
            <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWmsRecordPackageProcess(scope.row)" v-auth="'wmsRecordPackageProcess:delete'"> åˆ é™¤ </el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination
                v-model:currentPage="tableParamsWmsRecordPackageProcess.page"
                v-model:page-size="tableParamsWmsRecordPackageProcess.pageSize"
                :total="tableParamsWmsRecordPackageProcess.total"
                :page-sizes="[10, 20, 50, 100, 200, 500]"
                small=""
                background=""
                @size-change="handleSizeChangeWmsRecordPackageProcess"
                @current-change="handleCurrentChangeWmsRecordPackageProcess"
                layout="total, sizes, prev, pager, next, jumper"
    />
      <printDialogWmsRecordPackageProcess
        ref="printDialogRefWmsRecordPackageProcess"
        :title="printWmsRecordPackageProcessTitle"
        @reloadTable="handleQueryWmsRecordPackageProcess" />
      <editDialogWmsRecordPackageProcess
        ref="editDialogRefWmsRecordPackageProcess"
        :title="editWmsRecordPackageProcessTitle"
        @reloadTable="handleQueryWmsRecordPackageProcess"
      />
    </el-card>
  </div>
</template>
<script lang="ts" setup="" name="wmsRecordPackageProcess">
  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 printDialogWmsRecordPackageProcess from '/@/views/system/print/component/hiprint/preview.vue'
  import { pageWmsRecordPackageProcess, deleteWmsRecordPackageProcess,importExcelWmsRecordPackageProcess,downloadExcelTemplateWmsRecordPackageProcess } from '/@/api/main/ReportCenter/wmsRecordPackageProcess';
    import { getAPI } from '/@/utils/axios-utils';
    import { SysEnumApi } from '/@/api-services/api';
  import commonFunction from '/@/utils/commonFunction';
  const getEnumUpiStatusData_Index = ref<any>([]);
  const getEnumUpiFlagData_Index = ref<any>([]);
    const { getEnumDesc } = commonFunction();
  /***************************************************[包过程履历操作]开始***************************************************/
  const showAdvanceQueryUIWmsRecordPackageProcess = ref(false);
  const tableRefWmsRecordPackageProcess = ref(null);
  const printDialogRefWmsRecordPackageProcess = ref();
  const editDialogRefWmsRecordPackageProcess = ref();
  const loadingWmsRecordPackageProcess = ref(false);
  const disabled_btnWmsRecordPackageProcess = ref(false);
  const tableDataWmsRecordPackageProcess = ref<any>([]);
  const queryParamsWmsRecordPackageProcess = ref<any>({});
  const tableParamsWmsRecordPackageProcess = ref({
    page: 1,
    pageSize: 10,
    total: 0,
  });
  const printWmsRecordPackageProcessTitle = ref("");
  const editWmsRecordPackageProcessTitle = ref("");
  // æ”¹å˜é«˜çº§æŸ¥è¯¢çš„æŽ§ä»¶æ˜¾ç¤ºçŠ¶æ€
  const changeAdvanceQueryUIWmsRecordPackageProcess = () => {
    showAdvanceQueryUIWmsRecordPackageProcess.value = !showAdvanceQueryUIWmsRecordPackageProcess.value;
  }
  // æŸ¥è¯¢åŒ…过程履历
  const handleQueryWmsRecordPackageProcess = async () => {
    loadingWmsRecordPackageProcess.value = true;
    disabled_btnWmsRecordPackageProcess.value = true;
    var res = await pageWmsRecordPackageProcess(Object.assign(queryParamsWmsRecordPackageProcess.value, tableParamsWmsRecordPackageProcess.value));
    if(res.data.type=="success"){
      tableDataWmsRecordPackageProcess.value = res.data.result?.items ?? [];
      tableParamsWmsRecordPackageProcess.value.total = res.data.result?.total;
    }
    loadingWmsRecordPackageProcess.value = false;
    disabled_btnWmsRecordPackageProcess.value = false;
  };
  // é‡ç½®åŒ…过程履历查询
  const resetWmsRecordPackageProcess = async () => {
    queryParamsWmsRecordPackageProcess.value = {}
  };
  // åŒ…过程履历列排序
  const sortChangeWmsRecordPackageProcess = async (column: any) => {
    queryParamsWmsRecordPackageProcess.value.field = column.prop;
    queryParamsWmsRecordPackageProcess.value.order = column.order;
    await handleQueryWmsRecordPackageProcess();
  };
  // æ‰“开新增包过程履历页面
  const openAddWmsRecordPackageProcess = () => {
    editWmsRecordPackageProcessTitle.value = '添加包过程履历';
    editDialogRefWmsRecordPackageProcess.value.openDialog(1,{});
  };
  // æ‰“开打印包过程履历页面
  const openPrintWmsRecordPackageProcess = async (row: any) => {
    printWmsRecordPackageProcessTitle.value = '打印包过程履历';
  }
  // æ‰“开编辑包过程履历页面
  const openEditWmsRecordPackageProcess = (row: any) => {
    editWmsRecordPackageProcessTitle.value = '编辑包过程履历';
    editDialogRefWmsRecordPackageProcess.value.openDialog(2,row);
  };
  // åˆ é™¤åŒ…过程履历
  const delWmsRecordPackageProcess = (row: any) => {
    ElMessageBox.confirm(`确定要删除吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  })
  .then(async () => {
    loadingWmsRecordPackageProcess.value = true;
    var ret = await deleteWmsRecordPackageProcess(row);
    if(ret.data.type=="success"){
        ElMessage.success("删除成功");
    }
    loadingWmsRecordPackageProcess.value = false;
    handleQueryWmsRecordPackageProcess();
  })
  .catch(() => {});
  };
  // æ”¹å˜åŒ…过程履历页面容量
  const handleSizeChangeWmsRecordPackageProcess = (val: number) => {
    tableParamsWmsRecordPackageProcess.value.pageSize = val;
    handleQueryWmsRecordPackageProcess();
  };
  // æ”¹å˜åŒ…过程履历页码序号
  const handleCurrentChangeWmsRecordPackageProcess = (val: number) => {
    tableParamsWmsRecordPackageProcess.value.page = val;
    handleQueryWmsRecordPackageProcess();
  };
/***************************************************[包过程履历操作]结束***************************************************/
/***************************************************[包过程履历导出]开始***************************************************/
//定义当前页面的方法组
const functionMapWmsRecordPackageProcess = {
      getEnumUpiStatusData_Index,
      getEnumUpiFlagData_Index,
      formatDate_T_Date,
      formatDate_T_Time
};
//点击导出按钮
const handleExportExcelWmsRecordPackageProcess = async (formData:Blob) => {
    loadingWmsRecordPackageProcess.value = true;
    disabled_btnWmsRecordPackageProcess.value = true;
    var new_tableParamsWmsRecordPackageProcess=JSON.parse(JSON.stringify(tableParamsWmsRecordPackageProcess.value));
    new_tableParamsWmsRecordPackageProcess.page = 1;
    new_tableParamsWmsRecordPackageProcess.pageSize = 100000;
    var res = await pageWmsRecordPackageProcess(Object.assign(queryParamsWmsRecordPackageProcess.value, new_tableParamsWmsRecordPackageProcess));
    if(res.data.type=="success"){
      exportExcelWmsRecordPackageProcess(res.data.result?.items ?? []);
    }
    loadingWmsRecordPackageProcess.value = false;
    disabled_btnWmsRecordPackageProcess.value = false;
};
//导出
const exportExcelWmsRecordPackageProcess  = async (exportDataList:Array) => {
  exportPageExcel(exportDataList, tableRefWmsRecordPackageProcess,"包过程履历",functionMapWmsRecordPackageProcess);
};
/***************************************************[包过程履历导出]结束***************************************************/
  // åŒ…过程履历页面加载时
  onMounted(async () => {
    getEnumUpiStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiStatusEnum')).data.result ?? [];
    getEnumUpiFlagData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiFlagEnum')).data.result ?? [];
  });
  handleQueryWmsRecordPackageProcess();
</script>
<style scoped>
:deep(.el-input),
:deep(.el-select),
:deep(.el-input-number) {
    width: 100%;
}
</style>
LA24030_LuLiPackageLine_Web/src/views/main/ReportCenter/wmsRecordUpiProcess/component/editDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,227 @@
<template>
    <div class="wmsRecordUpiProcess-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="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="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="info5">
                            <el-input v-model="ruleForm.info5" placeholder="请输入生产单号" maxlength="60" 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="upiStatus">
                            <el-select clearable v-model="ruleForm.upiStatus" placeholder="请选择板料状态">
                                <el-option v-for="(item,index) in  getEnumUpiStatusData" :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="upiFlag">
                            <el-select clearable v-model="ruleForm.upiFlag" placeholder="请选择标记">
                                <el-option v-for="(item,index) in  getEnumUpiFlagData" :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="location">
                            <el-input v-model="ruleForm.location" 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="detailName">
                            <el-input v-model="ruleForm.detailName" 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="info18">
                            <el-input v-model="ruleForm.info18" placeholder="请输入材料" maxlength="60" 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="operRemark">
                            <el-input v-model="ruleForm.operRemark" placeholder="请输入备注" maxlength="100" show-word-limit clearable />
                        </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 { addWmsRecordUpiProcess, updateWmsRecordUpiProcess, detailWmsRecordUpiProcess } from "/@/api/main/ReportCenter/wmsRecordUpiProcess";
    import { getAPI } from '/@/utils/axios-utils';
    import { SysEnumApi } from '/@/api-services/api';
    const getEnumUpiStatusData = ref<any>([]);
    const getEnumUpiFlagData = 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>({
        upi: [{required: true, message: '请输入部件条码!', trigger: 'blur',},],
        packageCode: [{required: true, message: '请输入包装号!', trigger: 'blur',},],
        planNo: [{required: true, message: '请输入批次号!', trigger: 'blur',},],
        orderId: [{required: true, message: '请输入订单号!', trigger: 'blur',},],
        upiStatus: [{required: true, message: '请选择板料状态!', trigger: 'change',},],
        detailName: [{required: true, message: '请输入部件名称!', trigger: 'blur',},],
    });
    /*
     * æ‰“开弹窗
     * @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 detailWmsRecordUpiProcess(rowData.id)).data.result;
        else {
            ruleForm.value = rowData;
        }
        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 addWmsRecordUpiProcess(values);
                } else {
                    title='编辑';
                    ret = await updateWmsRecordUpiProcess(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 () => {
            getEnumUpiStatusData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiStatusEnum')).data.result ?? [];
            getEnumUpiFlagData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiFlagEnum')).data.result ?? [];
    });
    //将属性或者函数暴露给父组件
    defineExpose({ openDialog });
</script>
LA24030_LuLiPackageLine_Web/src/views/main/ReportCenter/wmsRecordUpiProcess/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,322 @@
<template>
  <div class="wmsRecordUpiProcess-container">
    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
      <el-form :model="queryParamsWmsRecordUpiProcess" 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="queryParamsWmsRecordUpiProcess.searchKey" clearable="" placeholder="部件条码,包装号,生产单号,批次号,订单号,位置,部件名称,材料,备注,创建人"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="部件条码">
              <el-input v-model="queryParamsWmsRecordUpiProcess.upi" clearable="" placeholder="请输入部件条码"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="包装号">
              <el-input v-model="queryParamsWmsRecordUpiProcess.packageCode" clearable="" placeholder="请输入包装号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="生产单号">
              <el-input v-model="queryParamsWmsRecordUpiProcess.info5" clearable="" placeholder="请输入生产单号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="批次号">
              <el-input v-model="queryParamsWmsRecordUpiProcess.planNo" clearable="" placeholder="请输入批次号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="订单号">
              <el-input v-model="queryParamsWmsRecordUpiProcess.orderId" clearable="" placeholder="请输入订单号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="板料状态">
              <el-select clearable="" v-model="queryParamsWmsRecordUpiProcess.upiStatus" placeholder="请选择板料状态">
                <el-option v-for="(item,index) in getEnumUpiStatusData_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="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="标记">
              <el-select clearable="" v-model="queryParamsWmsRecordUpiProcess.upiFlag" placeholder="请选择标记">
                <el-option v-for="(item,index) in getEnumUpiFlagData_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="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="位置">
              <el-input v-model="queryParamsWmsRecordUpiProcess.location" clearable="" placeholder="请输入位置"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="部件名称">
              <el-input v-model="queryParamsWmsRecordUpiProcess.detailName" clearable="" placeholder="请输入部件名称"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="材料">
              <el-input v-model="queryParamsWmsRecordUpiProcess.info18" clearable="" placeholder="请输入材料"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRecordUpiProcess">
            <el-form-item label="备注">
              <el-input v-model="queryParamsWmsRecordUpiProcess.operRemark" clearable="" placeholder="请输入备注"/>
            </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="handleQueryWmsRecordUpiProcess" v-auth="'wmsRecordUpiProcess:page'" :disabled="disabled_btnWmsRecordUpiProcess"> æŸ¥è¯¢ </el-button>
                      <el-button icon="ele-Refresh" @click="resetWmsRecordUpiProcess"> é‡ç½® </el-button>
                        <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIWmsRecordUpiProcess" v-if="!showAdvanceQueryUIWmsRecordUpiProcess" style="margin-left:5px;"> é«˜çº§æŸ¥è¯¢ </el-button>
                        <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIWmsRecordUpiProcess" v-if="showAdvanceQueryUIWmsRecordUpiProcess" style="margin-left:5px;"> éšè— </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWmsRecordUpiProcess" v-auth="'wmsRecordUpiProcess:add'"> æ–°å¢ž </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Download" @click="handleExportExcelWmsRecordUpiProcess"  v-auth="'wmsRecordUpiProcess: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="tableRefWmsRecordUpiProcess"
                :data="tableDataWmsRecordUpiProcess"
                style="width: 100%"
                v-loading="loadingWmsRecordUpiProcess"
                tooltip-effect="light"
                                row-key="id"
                @sort-change="sortChangeWmsRecordUpiProcess"
                border="">
        <el-table-column type="index" label="序号" width="55" align="center"/>
        <el-table-column prop="upi" label="部件条码"  show-overflow-tooltip="" />
        <el-table-column prop="packageCode" label="包装号"  show-overflow-tooltip="" />
        <el-table-column prop="info5" 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="upiStatus" label="板料状态"  show-overflow-tooltip="" >
            <template #default="scope">
              <el-tag>{{ getEnumDesc(scope.row.upiStatus, getEnumUpiStatusData_Index)}}</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="upiFlag" label="标记"  show-overflow-tooltip="" >
            <template #default="scope">
              <el-tag>{{ getEnumDesc(scope.row.upiFlag, getEnumUpiFlagData_Index)}}</el-tag>
            </template>
          </el-table-column>
        <el-table-column prop="location" label="位置"  show-overflow-tooltip="" />
        <el-table-column prop="detailName" label="部件名称"  show-overflow-tooltip="" />
        <el-table-column prop="info18" label="材料"  show-overflow-tooltip="" />
        <el-table-column prop="operRemark" label="备注"  show-overflow-tooltip="" />
         <el-table-column prop="createTime" label="创建时间" width="130" :formatter="formatDate_T_Time"  show-overflow-tooltip="" />
        <el-table-column prop="createUserName" label="创建人"  show-overflow-tooltip="" />
        <el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('wmsRecordUpiProcess:update') || auth('wmsRecordUpiProcess:delete')">
          <template #default="scope">
            <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWmsRecordUpiProcess(scope.row)" v-auth="'wmsRecordUpiProcess:update'"> ç¼–辑 </el-button>
            <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWmsRecordUpiProcess(scope.row)" v-auth="'wmsRecordUpiProcess:delete'"> åˆ é™¤ </el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination
                v-model:currentPage="tableParamsWmsRecordUpiProcess.page"
                v-model:page-size="tableParamsWmsRecordUpiProcess.pageSize"
                :total="tableParamsWmsRecordUpiProcess.total"
                :page-sizes="[10, 20, 50, 100, 200, 500]"
                small=""
                background=""
                @size-change="handleSizeChangeWmsRecordUpiProcess"
                @current-change="handleCurrentChangeWmsRecordUpiProcess"
                layout="total, sizes, prev, pager, next, jumper"
    />
      <printDialogWmsRecordUpiProcess
        ref="printDialogRefWmsRecordUpiProcess"
        :title="printWmsRecordUpiProcessTitle"
        @reloadTable="handleQueryWmsRecordUpiProcess" />
      <editDialogWmsRecordUpiProcess
        ref="editDialogRefWmsRecordUpiProcess"
        :title="editWmsRecordUpiProcessTitle"
        @reloadTable="handleQueryWmsRecordUpiProcess"
      />
    </el-card>
  </div>
</template>
<script lang="ts" setup="" name="wmsRecordUpiProcess">
  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 printDialogWmsRecordUpiProcess from '/@/views/system/print/component/hiprint/preview.vue'
  import { pageWmsRecordUpiProcess, deleteWmsRecordUpiProcess,importExcelWmsRecordUpiProcess,downloadExcelTemplateWmsRecordUpiProcess } from '/@/api/main/ReportCenter/wmsRecordUpiProcess';
    import { getAPI } from '/@/utils/axios-utils';
    import { SysEnumApi } from '/@/api-services/api';
  import commonFunction from '/@/utils/commonFunction';
  const getEnumUpiStatusData_Index = ref<any>([]);
  const getEnumUpiFlagData_Index = ref<any>([]);
    const { getEnumDesc } = commonFunction();
  /***************************************************[板件过程履历操作]开始***************************************************/
  const showAdvanceQueryUIWmsRecordUpiProcess = ref(false);
  const tableRefWmsRecordUpiProcess = ref(null);
  const printDialogRefWmsRecordUpiProcess = ref();
  const editDialogRefWmsRecordUpiProcess = ref();
  const loadingWmsRecordUpiProcess = ref(false);
  const disabled_btnWmsRecordUpiProcess = ref(false);
  const tableDataWmsRecordUpiProcess = ref<any>([]);
  const queryParamsWmsRecordUpiProcess = ref<any>({});
  const tableParamsWmsRecordUpiProcess = ref({
    page: 1,
    pageSize: 10,
    total: 0,
  });
  const printWmsRecordUpiProcessTitle = ref("");
  const editWmsRecordUpiProcessTitle = ref("");
  // æ”¹å˜é«˜çº§æŸ¥è¯¢çš„æŽ§ä»¶æ˜¾ç¤ºçŠ¶æ€
  const changeAdvanceQueryUIWmsRecordUpiProcess = () => {
    showAdvanceQueryUIWmsRecordUpiProcess.value = !showAdvanceQueryUIWmsRecordUpiProcess.value;
  }
  // æŸ¥è¯¢æ¿ä»¶è¿‡ç¨‹å±¥åކ
  const handleQueryWmsRecordUpiProcess = async () => {
    loadingWmsRecordUpiProcess.value = true;
    disabled_btnWmsRecordUpiProcess.value = true;
    var res = await pageWmsRecordUpiProcess(Object.assign(queryParamsWmsRecordUpiProcess.value, tableParamsWmsRecordUpiProcess.value));
    if(res.data.type=="success"){
      tableDataWmsRecordUpiProcess.value = res.data.result?.items ?? [];
      tableParamsWmsRecordUpiProcess.value.total = res.data.result?.total;
    }
    loadingWmsRecordUpiProcess.value = false;
    disabled_btnWmsRecordUpiProcess.value = false;
  };
  // é‡ç½®æ¿ä»¶è¿‡ç¨‹å±¥åŽ†æŸ¥è¯¢
  const resetWmsRecordUpiProcess = async () => {
    queryParamsWmsRecordUpiProcess.value = {}
  };
  // æ¿ä»¶è¿‡ç¨‹å±¥åŽ†åˆ—æŽ’åº
  const sortChangeWmsRecordUpiProcess = async (column: any) => {
    queryParamsWmsRecordUpiProcess.value.field = column.prop;
    queryParamsWmsRecordUpiProcess.value.order = column.order;
    await handleQueryWmsRecordUpiProcess();
  };
  // æ‰“开新增板件过程履历页面
  const openAddWmsRecordUpiProcess = () => {
    editWmsRecordUpiProcessTitle.value = '添加板件过程履历';
    editDialogRefWmsRecordUpiProcess.value.openDialog(1,{});
  };
  // æ‰“开打印板件过程履历页面
  const openPrintWmsRecordUpiProcess = async (row: any) => {
    printWmsRecordUpiProcessTitle.value = '打印板件过程履历';
  }
  // æ‰“开编辑板件过程履历页面
  const openEditWmsRecordUpiProcess = (row: any) => {
    editWmsRecordUpiProcessTitle.value = '编辑板件过程履历';
    editDialogRefWmsRecordUpiProcess.value.openDialog(2,row);
  };
  // åˆ é™¤æ¿ä»¶è¿‡ç¨‹å±¥åކ
  const delWmsRecordUpiProcess = (row: any) => {
    ElMessageBox.confirm(`确定要删除吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  })
  .then(async () => {
    loadingWmsRecordUpiProcess.value = true;
    var ret = await deleteWmsRecordUpiProcess(row);
    if(ret.data.type=="success"){
        ElMessage.success("删除成功");
    }
    loadingWmsRecordUpiProcess.value = false;
    handleQueryWmsRecordUpiProcess();
  })
  .catch(() => {});
  };
  // æ”¹å˜æ¿ä»¶è¿‡ç¨‹å±¥åŽ†é¡µé¢å®¹é‡
  const handleSizeChangeWmsRecordUpiProcess = (val: number) => {
    tableParamsWmsRecordUpiProcess.value.pageSize = val;
    handleQueryWmsRecordUpiProcess();
  };
  // æ”¹å˜æ¿ä»¶è¿‡ç¨‹å±¥åŽ†é¡µç åºå·
  const handleCurrentChangeWmsRecordUpiProcess = (val: number) => {
    tableParamsWmsRecordUpiProcess.value.page = val;
    handleQueryWmsRecordUpiProcess();
  };
/***************************************************[板件过程履历操作]结束***************************************************/
/***************************************************[板件过程履历导出]开始***************************************************/
//定义当前页面的方法组
const functionMapWmsRecordUpiProcess = {
      getEnumUpiStatusData_Index,
      getEnumUpiFlagData_Index,
      formatDate_T_Date,
      formatDate_T_Time
};
//点击导出按钮
const handleExportExcelWmsRecordUpiProcess = async (formData:Blob) => {
    loadingWmsRecordUpiProcess.value = true;
    disabled_btnWmsRecordUpiProcess.value = true;
    var new_tableParamsWmsRecordUpiProcess=JSON.parse(JSON.stringify(tableParamsWmsRecordUpiProcess.value));
    new_tableParamsWmsRecordUpiProcess.page = 1;
    new_tableParamsWmsRecordUpiProcess.pageSize = 100000;
    var res = await pageWmsRecordUpiProcess(Object.assign(queryParamsWmsRecordUpiProcess.value, new_tableParamsWmsRecordUpiProcess));
    if(res.data.type=="success"){
      exportExcelWmsRecordUpiProcess(res.data.result?.items ?? []);
    }
    loadingWmsRecordUpiProcess.value = false;
    disabled_btnWmsRecordUpiProcess.value = false;
};
//导出
const exportExcelWmsRecordUpiProcess  = async (exportDataList:Array) => {
  exportPageExcel(exportDataList, tableRefWmsRecordUpiProcess,"板件过程履历",functionMapWmsRecordUpiProcess);
};
/***************************************************[板件过程履历导出]结束***************************************************/
  // æ¿ä»¶è¿‡ç¨‹å±¥åŽ†é¡µé¢åŠ è½½æ—¶
  onMounted(async () => {
    getEnumUpiStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiStatusEnum')).data.result ?? [];
    getEnumUpiFlagData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiFlagEnum')).data.result ?? [];
  });
  handleQueryWmsRecordUpiProcess();
</script>
<style scoped>
:deep(.el-input),
:deep(.el-select),
:deep(.el-input-number) {
    width: 100%;
}
</style>
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordPackageProcess/Dto/WmsRecordPackageProcessInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,177 @@
using Admin.NET.Core;
using System.ComponentModel.DataAnnotations;
namespace Admin.NET.Application;
    /// <summary>
    /// åŒ…过程履历基础输入参数
    /// </summary>
    public class WmsRecordPackageProcessBaseInput
    {
        /// <summary>
        /// åŒ…装号
        /// </summary>
        public virtual string PackageCode { get; set; }
        /// <summary>
        /// ç”Ÿäº§å•号
        /// </summary>
        public virtual string Info5 { get; set; }
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        public virtual string PlanNo { get; set; }
        /// <summary>
        /// è®¢å•号
        /// </summary>
        public virtual string OrderId { get; set; }
        /// <summary>
        /// åŒ…状态
        /// </summary>
        public virtual Admin.NET.Application.UpiStatusEnum UpiStatus { get; set; }
        /// <summary>
        /// æ ‡è®°
        /// </summary>
        public virtual Admin.NET.Application.UpiFlagEnum? UpiFlag { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public virtual string Location { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public virtual string OperRemark { get; set; }
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        public virtual DateTime? CreateTime { get; set; }
        /// <summary>
        /// åˆ›å»ºäººId
        /// </summary>
        public virtual long? CreateUserId { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº
        /// </summary>
        public virtual string CreateUserName { get; set; }
    }
    /// <summary>
    /// åŒ…过程履历分页查询输入参数
    /// </summary>
    public class WmsRecordPackageProcessInput : BasePageInput
    {
        /// <summary>
        /// å…³é”®å­—查询
        /// </summary>
        public string? SearchKey { get; set; }
        /// <summary>
        /// åŒ…装号
        /// </summary>
        public string? PackageCode { get; set; }
        /// <summary>
        /// ç”Ÿäº§å•号
        /// </summary>
        public string? Info5 { get; set; }
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        public string? PlanNo { get; set; }
        /// <summary>
        /// è®¢å•号
        /// </summary>
        public string? OrderId { get; set; }
        /// <summary>
        /// åŒ…状态
        /// </summary>
        public Admin.NET.Application.UpiStatusEnum? UpiStatus { get; set; }
        /// <summary>
        /// æ ‡è®°
        /// </summary>
        public Admin.NET.Application.UpiFlagEnum? UpiFlag { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public string? Location { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string? OperRemark { get; set; }
    }
    /// <summary>
    /// åŒ…过程履历增加输入参数
    /// </summary>
    public class AddWmsRecordPackageProcessInput : WmsRecordPackageProcessBaseInput
    {
        /// <summary>
        /// åŒ…装号
        /// </summary>
        [Required(ErrorMessage = "包装号不能为空")]
        public override string PackageCode { 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 Admin.NET.Application.UpiStatusEnum UpiStatus { get; set; }
    }
    /// <summary>
    /// åŒ…过程履历删除输入参数
    /// </summary>
    public class DeleteWmsRecordPackageProcessInput : BaseIdInput
    {
    }
    /// <summary>
    /// åŒ…过程履历更新输入参数
    /// </summary>
    public class UpdateWmsRecordPackageProcessInput : AddWmsRecordPackageProcessInput
    {
        /// <summary>
        /// ä¸»é”®Id
        /// </summary>
        [Required(ErrorMessage = "主键Id不能为空")]
        public long Id { get; set; }
    }
    /// <summary>
    /// åŒ…过程履历主键查询输入参数
    /// </summary>
    public class QueryByIdWmsRecordPackageProcessInput : DeleteWmsRecordPackageProcessInput
    {
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordPackageProcess/Dto/WmsRecordPackageProcessOutput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
namespace Admin.NET.Application;
/// <summary>
/// åŒ…过程履历输出参数
/// </summary>
public class WmsRecordPackageProcessOutput
{
    /// <summary>
    /// ä¸»é”®Id
    /// </summary>
    public long? Id { get; set; }
    /// <summary>
    /// åŒ…装号
    /// </summary>
    public string PackageCode { get; set; }
    /// <summary>
    /// ç”Ÿäº§å•号
    /// </summary>
    public string Info5 { get; set; }
    /// <summary>
    /// æ‰¹æ¬¡å·
    /// </summary>
    public string PlanNo { get; set; }
    /// <summary>
    /// è®¢å•号
    /// </summary>
    public string OrderId { get; set; }
    /// <summary>
    /// åŒ…状态
    /// </summary>
    public Admin.NET.Application.UpiStatusEnum UpiStatus { get; set; }
    /// <summary>
    /// æ ‡è®°
    /// </summary>
    public Admin.NET.Application.UpiFlagEnum? UpiFlag { get; set; }
    /// <summary>
    /// ä½ç½®
    /// </summary>
    public string Location { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public string OperRemark { get; set; }
    /// <summary>
    /// åˆ›å»ºæ—¶é—´
    /// </summary>
    public DateTime? CreateTime { get; set; }
    /// <summary>
    /// åˆ›å»ºäººId
    /// </summary>
    public long? CreateUserId { get; set; }
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public string CreateUserName { get; set; }
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordPackageProcess/WmsRecordPackageProcessService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,194 @@
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.ReportCenterGroupName, Order = 100)]
public class WmsRecordPackageProcessService : IDynamicApiController, ITransient
{
    private readonly SqlSugarRepository<WmsRecordPackageProcess> _rep;
    public WmsRecordPackageProcessService(SqlSugarRepository<WmsRecordPackageProcess> rep)
    {
        _rep = rep;
    }
    /// <summary>
    /// åˆ†é¡µæŸ¥è¯¢åŒ…过程履历
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Page")]
    [Description("WmsRecordPackageProcess/Page")]
    public async Task<SqlSugarPagedList<WmsRecordPackageProcessOutput>> Page(WmsRecordPackageProcessInput 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("WmsRecordPackageProcess/List")]
    public async Task<List<WmsRecordPackageProcessOutput>> List([FromQuery] WmsRecordPackageProcessInput input)
    {
        var query = CommonPageFilter(input);
        return await query.OrderBuilder(input, "", "Id").Select<WmsRecordPackageProcessOutput>().ToListAsync();
    }
    /// <summary>
    /// å¢žåŠ åŒ…è¿‡ç¨‹å±¥åŽ†
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Add")]
    [Description("WmsRecordPackageProcess/Add")]
    public async Task<long> Add(AddWmsRecordPackageProcessInput input)
    {
        var entity = input.Adapt<WmsRecordPackageProcess>();
        //重复性验证
        await CheckExist(entity);
        await _rep.InsertAsync(entity);
        return entity.Id;
    }
    /// <summary>
    /// åˆ é™¤åŒ…过程履历
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Delete")]
    [Description("WmsRecordPackageProcess/Delete")]
    public async Task Delete(DeleteWmsRecordPackageProcessInput 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("WmsRecordPackageProcess/Update")]
    public async Task Update(UpdateWmsRecordPackageProcessInput input)
    {
        var entity = input.Adapt<WmsRecordPackageProcess>();
        //重复性验证
        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("WmsRecordPackageProcess/Detail")]
    public async Task<WmsRecordPackageProcess> Detail([FromQuery] QueryByIdWmsRecordPackageProcessInput input)
    {
        return await _rep.GetFirstAsync(u => u.Id == input.Id);
    }
    #region ç§æœ‰æ–¹æ³•
    /// <summary>
    /// å…¬å…±æŸ¥è¯¢åŒ…过程履历条件
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    private ISugarQueryable<WmsRecordPackageProcessOutput> CommonPageFilter(WmsRecordPackageProcessInput input)
    {
        var query = _rep.AsQueryable()
            .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
                u.PackageCode.Contains(input.SearchKey.Trim())
                || u.Info5.Contains(input.SearchKey.Trim())
                || u.PlanNo.Contains(input.SearchKey.Trim())
                || u.OrderId.Contains(input.SearchKey.Trim())
                || u.Location.Contains(input.SearchKey.Trim())
                || u.OperRemark.Contains(input.SearchKey.Trim())
                || u.CreateUserName.Contains(input.SearchKey.Trim())
            )
            .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.Info5), u => u.Info5.Contains(input.Info5.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(input.UpiStatus.HasValue, u => u.UpiStatus == input.UpiStatus)
            .WhereIF(input.UpiFlag.HasValue, u => u.UpiFlag == input.UpiFlag)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Location), u => u.Location.Contains(input.Location.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.OperRemark), u => u.OperRemark.Contains(input.OperRemark.Trim()))
            .Select<WmsRecordPackageProcessOutput>();
        return query;
       }
        /// <summary>
        /// é‡å¤æ€§éªŒè¯
        /// </summary>
        /// <param name="input">验证对象</param>
        /// <param name="isEdit">是否是编辑</param>
        /// <returns></returns>
        private async Task CheckExist( WmsRecordPackageProcess input,bool isEdit=false)
        {
            //没有配置组合校验,不需要验重
            //没有配置单独校验,不需要验重
       }
       /// <summary>
        /// æ ¹æ®ç»„合校验和单独校验验证数据是否已存在-导入时验证
        /// </summary>
        /// <param name="inputs"></param>
        /// <returns></returns>
        private async Task CheckExisitForImport(List<WmsRecordPackageProcess> inputs)
        {
            if (inputs?.Count <= 0)
            {
                throw Oops.Oh($"导入数据不能为空");
            }
            //根据组合校验验证表格中中是否已存在相同数据
           //根据单独校验验证表格中中是否已存在相同数据
        }
     #endregion
}
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordUpiProcess/Dto/WmsRecordUpiProcessInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,219 @@
using Admin.NET.Core;
using System.ComponentModel.DataAnnotations;
namespace Admin.NET.Application;
    /// <summary>
    /// æ¿ä»¶è¿‡ç¨‹å±¥åŽ†åŸºç¡€è¾“å…¥å‚æ•°
    /// </summary>
    public class WmsRecordUpiProcessBaseInput
    {
        /// <summary>
        /// éƒ¨ä»¶æ¡ç 
        /// </summary>
        public virtual string Upi { get; set; }
        /// <summary>
        /// åŒ…装号
        /// </summary>
        public virtual string PackageCode { get; set; }
        /// <summary>
        /// ç”Ÿäº§å•号
        /// </summary>
        public virtual string Info5 { get; set; }
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        public virtual string PlanNo { get; set; }
        /// <summary>
        /// è®¢å•号
        /// </summary>
        public virtual string OrderId { get; set; }
        /// <summary>
        /// æ¿æ–™çŠ¶æ€
        /// </summary>
        public virtual Admin.NET.Application.UpiStatusEnum UpiStatus { get; set; }
        /// <summary>
        /// æ ‡è®°
        /// </summary>
        public virtual Admin.NET.Application.UpiFlagEnum? UpiFlag { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public virtual string Location { get; set; }
        /// <summary>
        /// éƒ¨ä»¶åç§°
        /// </summary>
        public virtual string DetailName { get; set; }
        /// <summary>
        /// ææ–™
        /// </summary>
        public virtual string Info18 { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public virtual string OperRemark { get; set; }
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        public virtual DateTime? CreateTime { get; set; }
        /// <summary>
        /// åˆ›å»ºäººId
        /// </summary>
        public virtual long? CreateUserId { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº
        /// </summary>
        public virtual string CreateUserName { get; set; }
    }
    /// <summary>
    /// æ¿ä»¶è¿‡ç¨‹å±¥åŽ†åˆ†é¡µæŸ¥è¯¢è¾“å…¥å‚æ•°
    /// </summary>
    public class WmsRecordUpiProcessInput : BasePageInput
    {
        /// <summary>
        /// å…³é”®å­—查询
        /// </summary>
        public string? SearchKey { get; set; }
        /// <summary>
        /// éƒ¨ä»¶æ¡ç 
        /// </summary>
        public string? Upi { get; set; }
        /// <summary>
        /// åŒ…装号
        /// </summary>
        public string? PackageCode { get; set; }
        /// <summary>
        /// ç”Ÿäº§å•号
        /// </summary>
        public string? Info5 { get; set; }
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        public string? PlanNo { get; set; }
        /// <summary>
        /// è®¢å•号
        /// </summary>
        public string? OrderId { get; set; }
        /// <summary>
        /// æ¿æ–™çŠ¶æ€
        /// </summary>
        public Admin.NET.Application.UpiStatusEnum? UpiStatus { get; set; }
        /// <summary>
        /// æ ‡è®°
        /// </summary>
        public Admin.NET.Application.UpiFlagEnum? UpiFlag { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public string? Location { get; set; }
        /// <summary>
        /// éƒ¨ä»¶åç§°
        /// </summary>
        public string? DetailName { get; set; }
        /// <summary>
        /// ææ–™
        /// </summary>
        public string? Info18 { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string? OperRemark { get; set; }
    }
    /// <summary>
    /// æ¿ä»¶è¿‡ç¨‹å±¥åŽ†å¢žåŠ è¾“å…¥å‚æ•°
    /// </summary>
    public class AddWmsRecordUpiProcessInput : WmsRecordUpiProcessBaseInput
    {
        /// <summary>
        /// éƒ¨ä»¶æ¡ç 
        /// </summary>
        [Required(ErrorMessage = "部件条码不能为空")]
        public override string Upi { get; set; }
        /// <summary>
        /// åŒ…装号
        /// </summary>
        [Required(ErrorMessage = "包装号不能为空")]
        public override string PackageCode { 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 Admin.NET.Application.UpiStatusEnum UpiStatus { get; set; }
        /// <summary>
        /// éƒ¨ä»¶åç§°
        /// </summary>
        [Required(ErrorMessage = "部件名称不能为空")]
        public override string DetailName { get; set; }
    }
    /// <summary>
    /// æ¿ä»¶è¿‡ç¨‹å±¥åŽ†åˆ é™¤è¾“å…¥å‚æ•°
    /// </summary>
    public class DeleteWmsRecordUpiProcessInput : BaseIdInput
    {
    }
    /// <summary>
    /// æ¿ä»¶è¿‡ç¨‹å±¥åŽ†æ›´æ–°è¾“å…¥å‚æ•°
    /// </summary>
    public class UpdateWmsRecordUpiProcessInput : AddWmsRecordUpiProcessInput
    {
        /// <summary>
        /// ä¸»é”®Id
        /// </summary>
        [Required(ErrorMessage = "主键Id不能为空")]
        public long Id { get; set; }
    }
    /// <summary>
    /// æ¿ä»¶è¿‡ç¨‹å±¥åŽ†ä¸»é”®æŸ¥è¯¢è¾“å…¥å‚æ•°
    /// </summary>
    public class QueryByIdWmsRecordUpiProcessInput : DeleteWmsRecordUpiProcessInput
    {
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordUpiProcess/Dto/WmsRecordUpiProcessOutput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
namespace Admin.NET.Application;
/// <summary>
/// æ¿ä»¶è¿‡ç¨‹å±¥åŽ†è¾“å‡ºå‚æ•°
/// </summary>
public class WmsRecordUpiProcessOutput
{
    /// <summary>
    /// ä¸»é”®Id
    /// </summary>
    public long? Id { get; set; }
    /// <summary>
    /// éƒ¨ä»¶æ¡ç 
    /// </summary>
    public string Upi { get; set; }
    /// <summary>
    /// åŒ…装号
    /// </summary>
    public string PackageCode { get; set; }
    /// <summary>
    /// ç”Ÿäº§å•号
    /// </summary>
    public string Info5 { get; set; }
    /// <summary>
    /// æ‰¹æ¬¡å·
    /// </summary>
    public string PlanNo { get; set; }
    /// <summary>
    /// è®¢å•号
    /// </summary>
    public string OrderId { get; set; }
    /// <summary>
    /// æ¿æ–™çŠ¶æ€
    /// </summary>
    public Admin.NET.Application.UpiStatusEnum UpiStatus { get; set; }
    /// <summary>
    /// æ ‡è®°
    /// </summary>
    public Admin.NET.Application.UpiFlagEnum? UpiFlag { get; set; }
    /// <summary>
    /// ä½ç½®
    /// </summary>
    public string Location { get; set; }
    /// <summary>
    /// éƒ¨ä»¶åç§°
    /// </summary>
    public string DetailName { get; set; }
    /// <summary>
    /// ææ–™
    /// </summary>
    public string Info18 { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public string OperRemark { get; set; }
    /// <summary>
    /// åˆ›å»ºæ—¶é—´
    /// </summary>
    public DateTime? CreateTime { get; set; }
    /// <summary>
    /// åˆ›å»ºäººId
    /// </summary>
    public long? CreateUserId { get; set; }
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public string CreateUserName { get; set; }
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/ReportCenter/WmsRecordUpiProcess/WmsRecordUpiProcessService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,200 @@
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.ReportCenterGroupName, Order = 100)]
public class WmsRecordUpiProcessService : IDynamicApiController, ITransient
{
    private readonly SqlSugarRepository<WmsRecordUpiProcess> _rep;
    public WmsRecordUpiProcessService(SqlSugarRepository<WmsRecordUpiProcess> rep)
    {
        _rep = rep;
    }
    /// <summary>
    /// åˆ†é¡µæŸ¥è¯¢æ¿ä»¶è¿‡ç¨‹å±¥åކ
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Page")]
    [Description("WmsRecordUpiProcess/Page")]
    public async Task<SqlSugarPagedList<WmsRecordUpiProcessOutput>> Page(WmsRecordUpiProcessInput 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("WmsRecordUpiProcess/List")]
    public async Task<List<WmsRecordUpiProcessOutput>> List([FromQuery] WmsRecordUpiProcessInput input)
    {
        var query = CommonPageFilter(input);
        return await query.OrderBuilder(input, "", "Id").Select<WmsRecordUpiProcessOutput>().ToListAsync();
    }
    /// <summary>
    /// å¢žåŠ æ¿ä»¶è¿‡ç¨‹å±¥åŽ†
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Add")]
    [Description("WmsRecordUpiProcess/Add")]
    public async Task<long> Add(AddWmsRecordUpiProcessInput input)
    {
        var entity = input.Adapt<WmsRecordUpiProcess>();
        //重复性验证
        await CheckExist(entity);
        await _rep.InsertAsync(entity);
        return entity.Id;
    }
    /// <summary>
    /// åˆ é™¤æ¿ä»¶è¿‡ç¨‹å±¥åކ
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Delete")]
    [Description("WmsRecordUpiProcess/Delete")]
    public async Task Delete(DeleteWmsRecordUpiProcessInput 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("WmsRecordUpiProcess/Update")]
    public async Task Update(UpdateWmsRecordUpiProcessInput input)
    {
        var entity = input.Adapt<WmsRecordUpiProcess>();
        //重复性验证
        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("WmsRecordUpiProcess/Detail")]
    public async Task<WmsRecordUpiProcess> Detail([FromQuery] QueryByIdWmsRecordUpiProcessInput input)
    {
        return await _rep.GetFirstAsync(u => u.Id == input.Id);
    }
    #region ç§æœ‰æ–¹æ³•
    /// <summary>
    /// å…¬å…±æŸ¥è¯¢æ¿ä»¶è¿‡ç¨‹å±¥åŽ†æ¡ä»¶
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    private ISugarQueryable<WmsRecordUpiProcessOutput> CommonPageFilter(WmsRecordUpiProcessInput input)
    {
        var query = _rep.AsQueryable()
            .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
                u.Upi.Contains(input.SearchKey.Trim())
                || u.PackageCode.Contains(input.SearchKey.Trim())
                || u.Info5.Contains(input.SearchKey.Trim())
                || u.PlanNo.Contains(input.SearchKey.Trim())
                || u.OrderId.Contains(input.SearchKey.Trim())
                || u.Location.Contains(input.SearchKey.Trim())
                || u.DetailName.Contains(input.SearchKey.Trim())
                || u.Info18.Contains(input.SearchKey.Trim())
                || u.OperRemark.Contains(input.SearchKey.Trim())
                || u.CreateUserName.Contains(input.SearchKey.Trim())
            )
            .WhereIF(!string.IsNullOrWhiteSpace(input.Upi), u => u.Upi.Contains(input.Upi.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.Info5), u => u.Info5.Contains(input.Info5.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(input.UpiStatus.HasValue, u => u.UpiStatus == input.UpiStatus)
            .WhereIF(input.UpiFlag.HasValue, u => u.UpiFlag == input.UpiFlag)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Location), u => u.Location.Contains(input.Location.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.DetailName), u => u.DetailName.Contains(input.DetailName.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.Info18), u => u.Info18.Contains(input.Info18.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.OperRemark), u => u.OperRemark.Contains(input.OperRemark.Trim()))
            .Select<WmsRecordUpiProcessOutput>();
        return query;
       }
        /// <summary>
        /// é‡å¤æ€§éªŒè¯
        /// </summary>
        /// <param name="input">验证对象</param>
        /// <param name="isEdit">是否是编辑</param>
        /// <returns></returns>
        private async Task CheckExist( WmsRecordUpiProcess input,bool isEdit=false)
        {
            //没有配置组合校验,不需要验重
            //没有配置单独校验,不需要验重
       }
       /// <summary>
        /// æ ¹æ®ç»„合校验和单独校验验证数据是否已存在-导入时验证
        /// </summary>
        /// <param name="inputs"></param>
        /// <returns></returns>
        private async Task CheckExisitForImport(List<WmsRecordUpiProcess> inputs)
        {
            if (inputs?.Count <= 0)
            {
                throw Oops.Oh($"导入数据不能为空");
            }
            //根据组合校验验证表格中中是否已存在相同数据
           //根据单独校验验证表格中中是否已存在相同数据
        }
     #endregion
}