add
zongzhibin
2024-11-22 ab113ce9156d8ab54b3a4da9da6b3939875a928f
add
已添加8个文件
已修改1个文件
1182 ■■■■■ 文件已修改
LA24030_LuLiPackageLine_Web/src/api/main/WmsOrder/mesPushPackageCode.ts 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/mesPushPackageCode/component/editDialog.vue 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/mesPushPackageCode/index.vue 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Entity/WmsOrder/MesPushPackageCode.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeInput.cs 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeOutput.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/MesPushPackageCodeService.cs 331 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Core/Service/Auth/SysAuthService.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/推送mes包装号导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/api/main/WmsOrder/mesPushPackageCode.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
import request from '/@/utils/request';
enum Api {
  AddMesPushPackageCode = '/api/mesPushPackageCode/add',
  DeleteMesPushPackageCode = '/api/mesPushPackageCode/delete',
  UpdateMesPushPackageCode = '/api/mesPushPackageCode/update',
  PageMesPushPackageCode = '/api/mesPushPackageCode/page',
  ListMesPushPackageCode = '/api/mesPushPackageCode/list',
  DetailMesPushPackageCode = '/api/mesPushPackageCode/detail',
  ImportExcelMesPushPackageCode = '/api/mesPushPackageCode/importExcel',
  DownloadExcelTemplateMesPushPackageCode = '/api/mesPushPackageCode/downloadExcelTemplate',
}
// å¢žåŠ æŽ¨é€mes包装号
export const addMesPushPackageCode = (params?: any) =>
    request({
        url: Api.AddMesPushPackageCode,
        method: 'post',
        data: params
    });
// åˆ é™¤æŽ¨é€mes包装号
export const deleteMesPushPackageCode = (params?: any) =>
    request({
            url: Api.DeleteMesPushPackageCode,
            method: 'post',
            data: params
        });
// ç¼–辑推送mes包装号
export const updateMesPushPackageCode = (params?: any) =>
    request({
            url: Api.UpdateMesPushPackageCode,
            method: 'post',
            data: params
        });
// å¯¼å…¥æŽ¨é€mes包装号
export const importExcelMesPushPackageCode = (params?: any) =>
    request({
        url: Api.ImportExcelMesPushPackageCode,
        method: 'post',
        data: params
    });
// ä¸‹è½½å¯¼å…¥æŽ¨é€mes包装号模板
export const downloadExcelTemplateMesPushPackageCode = (params?: any) =>
    request({
            url: Api.DownloadExcelTemplateMesPushPackageCode,
            method: 'get',
            data: params,
            responseType: 'blob'
        });
// åˆ†é¡µæŸ¥è¯¢æŽ¨é€mes包装号
export const pageMesPushPackageCode = (params?: any) =>
    request({
            url: Api.PageMesPushPackageCode,
            method: 'post',
            data: params
        });
// ä¸åˆ†é¡µæŸ¥è¯¢æŽ¨é€mes包装号
export const listMesPushPackageCode = (params?: any) =>
    request({
            url: Api.ListMesPushPackageCode,
            method: 'get',
            data: params
        });
// è¯¦æƒ…推送mes包装号
export const detailMesPushPackageCode = (id: any) =>
    request({
            url: Api.DetailMesPushPackageCode,
            method: 'get',
            data: { id }
        });
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/mesPushPackageCode/component/editDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,171 @@
<template>
    <div class="mesPushPackageCode-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="pushStatus">
                            <el-input-number v-model="ruleForm.pushStatus" placeholder="请输入推送状态" 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="pushNum">
                            <el-input-number v-model="ruleForm.pushNum" placeholder="请输入推送次数" 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="apiMessage">
                            <el-input v-model="ruleForm.apiMessage" 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="createOrgName">
                            <el-input v-model="ruleForm.createOrgName" placeholder="请输入创建者部门名称" maxlength="64" 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 { addMesPushPackageCode, updateMesPushPackageCode, detailMesPushPackageCode } from "/@/api/main/WmsOrder/mesPushPackageCode";
    //父级传递来的参数
    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',},],
        pushStatus: [{required: true, message: '请输入推送状态!', trigger: 'blur',},],
        pushNum: [{required: true, message: '请输入推送次数!', trigger: 'blur',},],
        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 detailMesPushPackageCode(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 addMesPushPackageCode(values);
                } else {
                    title='编辑';
                    ret = await updateMesPushPackageCode(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 () => {
    });
    //将属性或者函数暴露给父组件
    defineExpose({ openDialog });
</script>
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/mesPushPackageCode/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,289 @@
<template>
  <div class="mesPushPackageCode-container">
    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
      <el-form :model="queryParamsMesPushPackageCode" 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="queryParamsMesPushPackageCode.searchKey" clearable="" placeholder="包装号,接口返回参数,创建人,修改人,创建者部门名称"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMesPushPackageCode">
            <el-form-item label="包装号">
              <el-input v-model="queryParamsMesPushPackageCode.packageCode" clearable="" placeholder="请输入包装号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMesPushPackageCode">
            <el-form-item label="推送状态">
              <el-input-number v-model="queryParamsMesPushPackageCode.pushStatus"  clearable="" placeholder="请输入推送状态"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMesPushPackageCode">
            <el-form-item label="推送次数">
              <el-input-number v-model="queryParamsMesPushPackageCode.pushNum"  clearable="" placeholder="请输入推送次数"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMesPushPackageCode">
            <el-form-item label="接口返回参数">
              <el-input v-model="queryParamsMesPushPackageCode.apiMessage" clearable="" placeholder="请输入接口返回参数"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMesPushPackageCode">
            <el-form-item label="创建者部门名称">
              <el-input v-model="queryParamsMesPushPackageCode.createOrgName" 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="handleQueryMesPushPackageCode" v-auth="'mesPushPackageCode:page'" :disabled="disabled_btnMesPushPackageCode"> æŸ¥è¯¢ </el-button>
                      <el-button icon="ele-Refresh" @click="resetMesPushPackageCode"> é‡ç½® </el-button>
                        <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIMesPushPackageCode" v-if="!showAdvanceQueryUIMesPushPackageCode" style="margin-left:5px;"> é«˜çº§æŸ¥è¯¢ </el-button>
                        <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIMesPushPackageCode" v-if="showAdvanceQueryUIMesPushPackageCode" style="margin-left:5px;"> éšè— </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddMesPushPackageCode" v-auth="'mesPushPackageCode:add'"> æ–°å¢ž </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Upload" @click="openImportExcelMesPushPackageCode"  v-auth="'mesPushPackageCode:importExcel'" > å¯¼å…¥ </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Download" @click="handleExportExcelMesPushPackageCode"  v-auth="'mesPushPackageCode: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="tableRefMesPushPackageCode"
                :data="tableDataMesPushPackageCode"
                style="width: 100%"
                v-loading="loadingMesPushPackageCode"
                tooltip-effect="light"
                                row-key="id"
                @sort-change="sortChangeMesPushPackageCode"
                border="">
        <el-table-column type="index" label="序号" width="55" align="center"/>
        <el-table-column prop="packageCode" label="包装号"  show-overflow-tooltip="" />
        <el-table-column prop="pushStatus" label="推送状态"  show-overflow-tooltip="" />
        <el-table-column prop="pushNum" label="推送次数"  show-overflow-tooltip="" />
        <el-table-column prop="apiMessage" label="接口返回参数"  show-overflow-tooltip="" />
         <el-table-column prop="createTime" label="创建时间" width="130" :formatter="formatDate_T_Time"  show-overflow-tooltip="" />
         <el-table-column prop="updateTime" label="修改时间" width="130" :formatter="formatDate_T_Time"  show-overflow-tooltip="" />
        <el-table-column prop="createUserName" label="创建人"  show-overflow-tooltip="" />
        <el-table-column prop="updateUserName" label="修改人"  show-overflow-tooltip="" />
        <el-table-column prop="createOrgName" label="创建者部门名称"  show-overflow-tooltip="" />
        <el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('mesPushPackageCode:update') || auth('mesPushPackageCode:delete')">
          <template #default="scope">
            <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditMesPushPackageCode(scope.row)" v-auth="'mesPushPackageCode:update'"> ç¼–辑 </el-button>
            <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delMesPushPackageCode(scope.row)" v-auth="'mesPushPackageCode:delete'"> åˆ é™¤ </el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination
                v-model:currentPage="tableParamsMesPushPackageCode.page"
                v-model:page-size="tableParamsMesPushPackageCode.pageSize"
                :total="tableParamsMesPushPackageCode.total"
                :page-sizes="[10, 20, 50, 100, 200, 500]"
                small=""
                background=""
                @size-change="handleSizeChangeMesPushPackageCode"
                @current-change="handleCurrentChangeMesPushPackageCode"
                layout="total, sizes, prev, pager, next, jumper"
    />
      <printDialogMesPushPackageCode
        ref="printDialogRefMesPushPackageCode"
        :title="printMesPushPackageCodeTitle"
        @reloadTable="handleQueryMesPushPackageCode" />
      <editDialogMesPushPackageCode
        ref="editDialogRefMesPushPackageCode"
        :title="editMesPushPackageCodeTitle"
        @reloadTable="handleQueryMesPushPackageCode"
      />
      <importExcelDialog
        ref="importExcelDialogRefMesPushPackageCode"
        :title="importExcelTitleMesPushPackageCode"
        @parentUploadFun="handleImportExcelMesPushPackageCode"
        @parentDownFun="handleDownExcelMesPushPackageCode"
      />
    </el-card>
  </div>
</template>
<script lang="ts" setup="" name="mesPushPackageCode">
  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 printDialogMesPushPackageCode from '/@/views/system/print/component/hiprint/preview.vue'
  import editDialogMesPushPackageCode from '/@/views/main/WmsOrder/mesPushPackageCode/component/editDialog.vue'
  import { pageMesPushPackageCode, deleteMesPushPackageCode,importExcelMesPushPackageCode,downloadExcelTemplateMesPushPackageCode } from '/@/api/main/WmsOrder/mesPushPackageCode';
  /***************************************************[推送mes包装号操作]开始***************************************************/
  const showAdvanceQueryUIMesPushPackageCode = ref(false);
  const tableRefMesPushPackageCode = ref(null);
  const printDialogRefMesPushPackageCode = ref();
  const editDialogRefMesPushPackageCode = ref();
  const loadingMesPushPackageCode = ref(false);
  const disabled_btnMesPushPackageCode = ref(false);
  const tableDataMesPushPackageCode = ref<any>([]);
  const queryParamsMesPushPackageCode = ref<any>({});
  const tableParamsMesPushPackageCode = ref({
    page: 1,
    pageSize: 10,
    total: 0,
  });
  const printMesPushPackageCodeTitle = ref("");
  const editMesPushPackageCodeTitle = ref("");
  // æ”¹å˜é«˜çº§æŸ¥è¯¢çš„æŽ§ä»¶æ˜¾ç¤ºçŠ¶æ€
  const changeAdvanceQueryUIMesPushPackageCode = () => {
    showAdvanceQueryUIMesPushPackageCode.value = !showAdvanceQueryUIMesPushPackageCode.value;
  }
  // æŸ¥è¯¢æŽ¨é€mes包装号
  const handleQueryMesPushPackageCode = async () => {
    loadingMesPushPackageCode.value = true;
    disabled_btnMesPushPackageCode.value = true;
    var res = await pageMesPushPackageCode(Object.assign(queryParamsMesPushPackageCode.value, tableParamsMesPushPackageCode.value));
    if(res.data.type=="success"){
      tableDataMesPushPackageCode.value = res.data.result?.items ?? [];
      tableParamsMesPushPackageCode.value.total = res.data.result?.total;
    }
    loadingMesPushPackageCode.value = false;
    disabled_btnMesPushPackageCode.value = false;
  };
  // é‡ç½®æŽ¨é€mes包装号查询
  const resetMesPushPackageCode = async () => {
    queryParamsMesPushPackageCode.value = {}
  };
  // æŽ¨é€mes包装号列排序
  const sortChangeMesPushPackageCode = async (column: any) => {
    queryParamsMesPushPackageCode.value.field = column.prop;
    queryParamsMesPushPackageCode.value.order = column.order;
    await handleQueryMesPushPackageCode();
  };
  // æ‰“开新增推送mes包装号页面
  const openAddMesPushPackageCode = () => {
    editMesPushPackageCodeTitle.value = '添加推送mes包装号';
    editDialogRefMesPushPackageCode.value.openDialog(1,{});
  };
  // æ‰“开打印推送mes包装号页面
  const openPrintMesPushPackageCode = async (row: any) => {
    printMesPushPackageCodeTitle.value = '打印推送mes包装号';
  }
  // æ‰“开编辑推送mes包装号页面
  const openEditMesPushPackageCode = (row: any) => {
    editMesPushPackageCodeTitle.value = '编辑推送mes包装号';
    editDialogRefMesPushPackageCode.value.openDialog(2,row);
  };
  // åˆ é™¤æŽ¨é€mes包装号
  const delMesPushPackageCode = (row: any) => {
    ElMessageBox.confirm(`确定要删除吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  })
  .then(async () => {
    loadingMesPushPackageCode.value = true;
    var ret = await deleteMesPushPackageCode(row);
    if(ret.data.type=="success"){
        ElMessage.success("删除成功");
    }
    loadingMesPushPackageCode.value = false;
    handleQueryMesPushPackageCode();
  })
  .catch(() => {});
  };
  // æ”¹å˜æŽ¨é€mes包装号页面容量
  const handleSizeChangeMesPushPackageCode = (val: number) => {
    tableParamsMesPushPackageCode.value.pageSize = val;
    handleQueryMesPushPackageCode();
  };
  // æ”¹å˜æŽ¨é€mes包装号页码序号
  const handleCurrentChangeMesPushPackageCode = (val: number) => {
    tableParamsMesPushPackageCode.value.page = val;
    handleQueryMesPushPackageCode();
  };
/***************************************************[推送mes包装号操作]结束***************************************************/
/***************************************************[推送mes包装号导入]开始***************************************************/
const importExcelTitleMesPushPackageCode = ref("");
const importExcelDialogRefMesPushPackageCode = ref();
//打开导入界面
const openImportExcelMesPushPackageCode = () => {
    importExcelTitleMesPushPackageCode.value = '导入推送mes包装号';
    importExcelDialogRefMesPushPackageCode.value.openDialog({});
};
//导入数据
const handleImportExcelMesPushPackageCode = async (formData:Blob) => {
   var result = await importExcelMesPushPackageCode(formData);
   importExcelDialogRefMesPushPackageCode.value.callBackUploadFun(result.data);//回调导入子页面的方法
   if(result.data.type=="success"){
    handleQueryMesPushPackageCode();
   }
};
//下载导入模板
const handleDownExcelMesPushPackageCode = async () => {
   var result = await downloadExcelTemplateMesPushPackageCode();
   importExcelDialogRefMesPushPackageCode.value.callBackDownFun(result);//回调导入子页面的方法
};
/***************************************************[推送mes包装号导入]结束***************************************************/
/***************************************************[推送mes包装号导出]开始***************************************************/
//定义当前页面的方法组
const functionMapMesPushPackageCode = {
      formatDate_T_Date,
      formatDate_T_Time
};
//点击导出按钮
const handleExportExcelMesPushPackageCode = async (formData:Blob) => {
    loadingMesPushPackageCode.value = true;
    disabled_btnMesPushPackageCode.value = true;
    var new_tableParamsMesPushPackageCode=JSON.parse(JSON.stringify(tableParamsMesPushPackageCode.value));
    new_tableParamsMesPushPackageCode.page = 1;
    new_tableParamsMesPushPackageCode.pageSize = 100000;
    var res = await pageMesPushPackageCode(Object.assign(queryParamsMesPushPackageCode.value, new_tableParamsMesPushPackageCode));
    if(res.data.type=="success"){
      exportExcelMesPushPackageCode(res.data.result?.items ?? []);
    }
    loadingMesPushPackageCode.value = false;
    disabled_btnMesPushPackageCode.value = false;
};
//导出
const exportExcelMesPushPackageCode  = async (exportDataList:Array) => {
  exportPageExcel(exportDataList, tableRefMesPushPackageCode,"推送mes包装号",functionMapMesPushPackageCode);
};
/***************************************************[推送mes包装号导出]结束***************************************************/
  // æŽ¨é€mes包装号页面加载时
  onMounted(async () => {
  });
  handleQueryMesPushPackageCode();
</script>
<style scoped>
:deep(.el-input),
:deep(.el-select),
:deep(.el-input-number) {
    width: 100%;
}
</style>
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Entity/WmsOrder/MesPushPackageCode.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
using Admin.NET.Core;
namespace Admin.NET.Application.Entity;
/// <summary>
/// æŽ¨é€mes包装号表
/// </summary>
[SugarTable("mes_PushPackageCode", "推送mes包装号表")]
public class MesPushPackageCode : EntityBase
{
    /// <summary>
    /// åŒ…装号
    /// </summary>
    [Required]
    [SugarColumn(ColumnName = "PackageCode", ColumnDescription = "包装号", Length = 50)]
    public string PackageCode { get; set; }
    /// <summary>
    /// æŽ¨é€çŠ¶æ€
    /// </summary>
    [Required]
    [SugarColumn(ColumnName = "PushStatus", ColumnDescription = "推送状态")]
    public int PushStatus { get; set; }
    /// <summary>
    /// æŽ¨é€æ¬¡æ•°
    /// </summary>
    [Required]
    [SugarColumn(ColumnName = "PushNum", ColumnDescription = "推送次数")]
    public int PushNum { get; set; }
    /// <summary>
    /// æŽ¥å£è¿”回参数
    /// </summary>
    [SugarColumn(ColumnName = "ApiMessage", ColumnDescription = "接口返回参数", Length = 50)]
    public string ApiMessage { get; set; }
    /// <summary>
    /// åˆ›å»ºè€…部门Id
    /// </summary>
    [SugarColumn(ColumnName = "CreateOrgId", ColumnDescription = "创建者部门Id")]
    public long? CreateOrgId { get; set; }
    /// <summary>
    /// åˆ›å»ºè€…部门名称
    /// </summary>
    [SugarColumn(ColumnName = "CreateOrgName", ColumnDescription = "创建者部门名称", Length = 64)]
    public string CreateOrgName { get; set; }
}
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,172 @@
using Admin.NET.Core;
using System.ComponentModel.DataAnnotations;
namespace Admin.NET.Application;
    /// <summary>
    /// æŽ¨é€mes包装号基础输入参数
    /// </summary>
    public class MesPushPackageCodeBaseInput
    {
        /// <summary>
        /// åŒ…装号
        /// </summary>
        public virtual string PackageCode { get; set; }
        /// <summary>
        /// æŽ¨é€çŠ¶æ€
        /// </summary>
        public virtual int PushStatus { get; set; }
        /// <summary>
        /// æŽ¨é€æ¬¡æ•°
        /// </summary>
        public virtual int PushNum { get; set; }
        /// <summary>
        /// æŽ¥å£è¿”回参数
        /// </summary>
        public virtual string ApiMessage { 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>
        /// åˆ›å»ºè€…部门Id
        /// </summary>
        public virtual long? CreateOrgId { get; set; }
        /// <summary>
        /// åˆ›å»ºè€…部门名称
        /// </summary>
        public virtual string CreateOrgName { get; set; }
        /// <summary>
        /// è½¯åˆ é™¤
        /// </summary>
        public virtual bool IsDelete { get; set; }
    }
    /// <summary>
    /// æŽ¨é€mes包装号分页查询输入参数
    /// </summary>
    public class MesPushPackageCodeInput : BasePageInput
    {
        /// <summary>
        /// å…³é”®å­—查询
        /// </summary>
        public string? SearchKey { get; set; }
        /// <summary>
        /// åŒ…装号
        /// </summary>
        public string? PackageCode { get; set; }
        /// <summary>
        /// æŽ¨é€çŠ¶æ€
        /// </summary>
        public int? PushStatus { get; set; }
        /// <summary>
        /// æŽ¨é€æ¬¡æ•°
        /// </summary>
        public int? PushNum { get; set; }
        /// <summary>
        /// æŽ¥å£è¿”回参数
        /// </summary>
        public string? ApiMessage { get; set; }
        /// <summary>
        /// åˆ›å»ºè€…部门名称
        /// </summary>
        public string? CreateOrgName { get; set; }
    }
    /// <summary>
    /// æŽ¨é€mes包装号增加输入参数
    /// </summary>
    public class AddMesPushPackageCodeInput : MesPushPackageCodeBaseInput
    {
        /// <summary>
        /// åŒ…装号
        /// </summary>
        [Required(ErrorMessage = "包装号不能为空")]
        public override string PackageCode { get; set; }
        /// <summary>
        /// æŽ¨é€çŠ¶æ€
        /// </summary>
        [Required(ErrorMessage = "推送状态不能为空")]
        public override int PushStatus { get; set; }
        /// <summary>
        /// æŽ¨é€æ¬¡æ•°
        /// </summary>
        [Required(ErrorMessage = "推送次数不能为空")]
        public override int PushNum { get; set; }
        /// <summary>
        /// è½¯åˆ é™¤
        /// </summary>
        [Required(ErrorMessage = "软删除不能为空")]
        public override bool IsDelete { get; set; }
    }
    /// <summary>
    /// æŽ¨é€mes包装号删除输入参数
    /// </summary>
    public class DeleteMesPushPackageCodeInput : BaseIdInput
    {
    }
    /// <summary>
    /// æŽ¨é€mes包装号更新输入参数
    /// </summary>
    public class UpdateMesPushPackageCodeInput : AddMesPushPackageCodeInput
    {
        /// <summary>
        /// ä¸»é”®Id
        /// </summary>
        [Required(ErrorMessage = "主键Id不能为空")]
        public long Id { get; set; }
    }
    /// <summary>
    /// æŽ¨é€mes包装号主键查询输入参数
    /// </summary>
    public class QueryByIdMesPushPackageCodeInput : DeleteMesPushPackageCodeInput
    {
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeOutput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
namespace Admin.NET.Application;
/// <summary>
/// æŽ¨é€mes包装号输出参数
/// </summary>
public class MesPushPackageCodeOutput
{
    /// <summary>
    /// ä¸»é”®Id
    /// </summary>
    public long? Id { get; set; }
    /// <summary>
    /// åŒ…装号
    /// </summary>
    public string PackageCode { get; set; }
    /// <summary>
    /// æŽ¨é€çŠ¶æ€
    /// </summary>
    public int PushStatus { get; set; }
    /// <summary>
    /// æŽ¨é€æ¬¡æ•°
    /// </summary>
    public int PushNum { get; set; }
    /// <summary>
    /// æŽ¥å£è¿”回参数
    /// </summary>
    public string ApiMessage { 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>
    /// åˆ›å»ºè€…部门Id
    /// </summary>
    public long? CreateOrgId { get; set; }
    /// <summary>
    /// åˆ›å»ºè€…部门名称
    /// </summary>
    public string CreateOrgName { get; set; }
    /// <summary>
    /// è½¯åˆ é™¤
    /// </summary>
    public bool IsDelete { get; set; }
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/MesPushPackageCodeService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,331 @@
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>
/// æŽ¨é€mes包装号服务
/// </summary>
[ApiDescriptionSettings(ApplicationConst.WmsOrderGroupName, Order = 100)]
public class MesPushPackageCodeService : IDynamicApiController, ITransient
{
    private readonly SqlSugarRepository<MesPushPackageCode> _rep;
    public MesPushPackageCodeService(SqlSugarRepository<MesPushPackageCode> rep)
    {
        _rep = rep;
    }
    /// <summary>
    /// åˆ†é¡µæŸ¥è¯¢æŽ¨é€mes包装号
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Page")]
    [Description("MesPushPackageCode/Page")]
    public async Task<SqlSugarPagedList<MesPushPackageCodeOutput>> Page(MesPushPackageCodeInput input)
    {
        var query = CommonPageFilter(input);
        return await query.OrderBuilder(input, "", "Id").ToPagedListAsync(input.Page, input.PageSize);
    }
    /// <summary>
    /// ä¸åˆ†é¡µæŸ¥è¯¢æŽ¨é€mes包装号
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpGet]
    [ApiDescriptionSettings(Name = "List")]
    [Description("MesPushPackageCode/List")]
    public async Task<List<MesPushPackageCodeOutput>> List([FromQuery] MesPushPackageCodeInput input)
    {
        var query = CommonPageFilter(input);
        return await query.OrderBuilder(input, "", "Id").Select<MesPushPackageCodeOutput>().ToListAsync();
    }
    /// <summary>
    /// å¢žåŠ æŽ¨é€mes包装号
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Add")]
    [Description("MesPushPackageCode/Add")]
    public async Task<long> Add(AddMesPushPackageCodeInput input)
    {
        var entity = input.Adapt<MesPushPackageCode>();
        //重复性验证
        await CheckExist(entity);
        await _rep.InsertAsync(entity);
        return entity.Id;
    }
    /// <summary>
    /// åˆ é™¤æŽ¨é€mes包装号
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Delete")]
    [Description("MesPushPackageCode/Delete")]
    public async Task Delete(DeleteMesPushPackageCodeInput 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>
    /// æ›´æ–°æŽ¨é€mes包装号
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Update")]
    [Description("MesPushPackageCode/Update")]
    public async Task Update(UpdateMesPushPackageCodeInput input)
    {
        var entity = input.Adapt<MesPushPackageCode>();
        //重复性验证
        await CheckExist(entity,true);
        await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
    }
    /// <summary>
    /// èŽ·å–æŽ¨é€mes包装号
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpGet]
    [ApiDescriptionSettings(Name = "Detail")]
    [Description("MesPushPackageCode/Detail")]
    public async Task<MesPushPackageCode> Detail([FromQuery] QueryByIdMesPushPackageCodeInput input)
    {
        return await _rep.GetFirstAsync(u => u.Id == input.Id);
    }
    #region å¯¼å…¥
    /// <summary>
    /// Excel模板导入推送mes包装号功能
    /// </summary>
    /// <param name="file">Excel模板文件</param>
    /// <returns>导入的记录数</returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "ImportExcel")]
    [Description("MesPushPackageCode/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<MesPushPackageCode>> CommonImport(DataTable dataTable, int dataStartLine)
    {
        var details = new List<MesPushPackageCode>();
        int index = dataStartLine;//模版列名开始行
        foreach (System.Data.DataRow row in dataTable.Rows)
        {
            index++;
            //导入模版定制化代码(替换模版使用)
                           var addItem = new MesPushPackageCode();
                          #region å®šä¹‰å˜é‡
                           var _PackageCode = "";//包装号
                           var _PushStatus = "";//推送状态
                           var _PushNum = "";//推送次数
                           var _ApiMessage = "";//接口返回参数
                           var _CreateOrgName = "";//创建者部门名称
                          #endregion
                          #region å–值
                           _PackageCode = row["包装号"]?.ToString() ;
                           _PushStatus = row["推送状态"]?.ToString() ;
                           _PushNum = row["推送次数"]?.ToString() ;
                           _ApiMessage = row["接口返回参数"]?.ToString() ;
                           _CreateOrgName = row["创建者部门名称"]?.ToString() ;
                          #endregion
                          #region éªŒè¯
                          if (string.IsNullOrEmpty(_PackageCode))
                          {
                            throw Oops.Oh($"第{index}行[包装号]{_PackageCode}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PackageCode))
                          {
                                addItem.PackageCode = (string)(_PackageCode.Trim());
                           }
                          if (string.IsNullOrEmpty(_PushStatus))
                          {
                            throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PushStatus))
                          {
                              if (!int.TryParse(_PushStatus, out int outPushStatus)&&!string.IsNullOrEmpty(_PushStatus))
                              {
                                 throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}值不正确!");
                              }
                              if (outPushStatus <= 0&&!string.IsNullOrEmpty(_PushStatus))
                              {
                                 throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.PushStatus = outPushStatus;
                              }
                          }
                          if (string.IsNullOrEmpty(_PushNum))
                          {
                            throw Oops.Oh($"第{index}行[推送次数]{_PushNum}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PushNum))
                          {
                              if (!int.TryParse(_PushNum, out int outPushNum)&&!string.IsNullOrEmpty(_PushNum))
                              {
                                 throw Oops.Oh($"第{index}行[推送次数]{_PushNum}值不正确!");
                              }
                              if (outPushNum <= 0&&!string.IsNullOrEmpty(_PushNum))
                              {
                                 throw Oops.Oh($"第{index}行[推送次数]{_PushNum}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.PushNum = outPushNum;
                              }
                          }
                          if(!string.IsNullOrEmpty(_ApiMessage))
                          {
                                addItem.ApiMessage = (string)(_ApiMessage.Trim());
                           }
                          if(!string.IsNullOrEmpty(_CreateOrgName))
                          {
                                addItem.CreateOrgName = (string)(_CreateOrgName.Trim());
                           }
                          #endregion
            details.Add(addItem);
        }
        //验重
        await CheckExisitForImport(details);
        return details;
    }
    /// <summary>
    /// æ ¹æ®ç‰ˆæœ¬ä¸‹è½½æŽ¨é€mes包装号的Excel导入模板
    /// </summary>
    /// <returns>下载的模板文件</returns>
    [HttpGet]
    [ApiDescriptionSettings(Name = "DownloadExcelTemplate")]
    [Description("MesPushPackageCode/DownloadExcelTemplate")]
    public IActionResult DownloadExcelTemplate()
    {
        string _path = TemplateConst.EXCEL_TEMPLATEFILE_导入模版路径 + $"\\推送mes包装号{TemplateConst.EXCEL_TEMPLATEFILE_导入模版名称后缀}.xlsx";
        var fileName = HttpUtility.UrlEncode($"导入模板(推送mes包装号).xlsx", Encoding.GetEncoding("UTF-8"));
        return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
    }
    #endregion
    #region ç§æœ‰æ–¹æ³•
    /// <summary>
    /// å…¬å…±æŸ¥è¯¢æŽ¨é€mes包装号条件
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    private ISugarQueryable<MesPushPackageCodeOutput> CommonPageFilter(MesPushPackageCodeInput input)
    {
        var query = _rep.AsQueryable()
            .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
                u.PackageCode.Contains(input.SearchKey.Trim())
                || u.ApiMessage.Contains(input.SearchKey.Trim())
                || u.CreateUserName.Contains(input.SearchKey.Trim())
                || u.UpdateUserName.Contains(input.SearchKey.Trim())
                || u.CreateOrgName.Contains(input.SearchKey.Trim())
            )
            .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim()))
            .WhereIF(input.PushStatus>0, u => u.PushStatus == input.PushStatus)
            .WhereIF(input.PushNum>0, u => u.PushNum == input.PushNum)
            .WhereIF(!string.IsNullOrWhiteSpace(input.ApiMessage), u => u.ApiMessage.Contains(input.ApiMessage.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.CreateOrgName), u => u.CreateOrgName.Contains(input.CreateOrgName.Trim()))
            .Select<MesPushPackageCodeOutput>();
        return query;
       }
        /// <summary>
        /// é‡å¤æ€§éªŒè¯
        /// </summary>
        /// <param name="input">验证对象</param>
        /// <param name="isEdit">是否是编辑</param>
        /// <returns></returns>
        private async Task CheckExist( MesPushPackageCode input,bool isEdit=false)
        {
            //没有配置组合校验,不需要验重
            //没有配置单独校验,不需要验重
       }
       /// <summary>
        /// æ ¹æ®ç»„合校验和单独校验验证数据是否已存在-导入时验证
        /// </summary>
        /// <param name="inputs"></param>
        /// <returns></returns>
        private async Task CheckExisitForImport(List<MesPushPackageCode> inputs)
        {
            if (inputs?.Count <= 0)
            {
                throw Oops.Oh($"导入数据不能为空");
            }
            //根据组合校验验证表格中中是否已存在相同数据
           //根据单独校验验证表格中中是否已存在相同数据
        }
     #endregion
}
LA24030_LuLiPackageLine_Wms/Admin.NET.Core/Service/Auth/SysAuthService.cs
@@ -69,12 +69,12 @@
            throw Oops.Oh(ErrorCodeEnum.D1027);
        // æ˜¯å¦å¼€å¯éªŒè¯ç 
        if (await _sysConfigService.GetConfigValue<bool>(CommonConst.SysCaptcha))
        {
            // åˆ¤æ–­éªŒè¯ç 
            if (!_captcha.Validate(input.CodeId.ToString(), input.Code))
                throw Oops.Oh(ErrorCodeEnum.D0008);
        }
        //if (await _sysConfigService.GetConfigValue<bool>(CommonConst.SysCaptcha))
        //{
        //    // åˆ¤æ–­éªŒè¯ç 
        //    if (!_captcha.Validate(input.CodeId.ToString(), input.Code))
        //        throw Oops.Oh(ErrorCodeEnum.D0008);
        //}
        // è´¦å·æ˜¯å¦å­˜åœ¨
        var user = await _sysUserRep.AsQueryable().Includes(t => t.SysOrg).ClearFilter().FirstAsync(u => u.Account.Equals(input.Account));
LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/ÍÆËÍmes°ü×°ºÅµ¼ÈëÄ£°å.xlsx
Binary files differ