zongzhibin
2024-11-27 5e610f4c9d9870b393720bc5fcc856e97bc2ea4b
LA24030_LuLiPackageLine_Web/src/views/main/PrintCenter/wmsRecordPrint/component/editDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,298 @@
<template>
   <div class="wmsRecordPrint-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="printType">
                     <el-select clearable v-model="ruleForm.printType" placeholder="请选择打印类型">
                        <el-option v-for="(item,index) in  getEnumPrintTypeData" :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="printSource">
                     <el-select clearable v-model="ruleForm.printSource" placeholder="请选择打印来源">
                        <el-option v-for="(item,index) in  getEnumPrintSourceData" :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="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="info4">
                     <el-input v-model="ruleForm.info4" 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="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="info6">
                     <el-input v-model="ruleForm.info6" 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="info7">
                     <el-input v-model="ruleForm.info7" 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="info8">
                     <el-input v-model="ruleForm.info8" 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="info10">
                     <el-input v-model="ruleForm.info10" 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="自提or发货" prop="info11">
                     <el-input v-model="ruleForm.info11" placeholder="请输入自提or发货" 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="info12">
                     <el-input v-model="ruleForm.info12" 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="info13">
                     <el-input v-model="ruleForm.info13" 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="info14">
                     <el-input v-model="ruleForm.info14" 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="info15">
                     <el-input-number v-model="ruleForm.info15" 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="info16">
                     <el-input v-model="ruleForm.info16" 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="printSheetNum">
                     <el-input-number v-model="ruleForm.printSheetNum" 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="printNum">
                     <el-input-number v-model="ruleForm.printNum" 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="printStatus">
                     <el-select clearable v-model="ruleForm.printStatus" placeholder="请选择打印状态">
                        <el-option v-for="(item,index) in  getEnumPrintStatusData" :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="isAllowPrint">
                     <el-switch v-model="ruleForm.isAllowPrint" active-text="是" inactive-text="否" />
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="备注" prop="remarks">
                     <el-input v-model="ruleForm.remarks" placeholder="请输入备注" maxlength="255" 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 { addWmsRecordPrint, updateWmsRecordPrint, detailWmsRecordPrint } from "/@/api/main/PrintCenter/wmsRecordPrint";
   import { getAPI } from '/@/utils/axios-utils';
   import { SysEnumApi } from '/@/api-services/api';
   const getEnumPrintTypeData = ref<any>([]);
   const getEnumPrintSourceData = ref<any>([]);
   const getEnumPrintStatusData = 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>({
      printType: [{required: true, message: '请选择打印类型!', trigger: 'change',},],
      printSource: [{required: true, message: '请选择打印来源!', trigger: 'change',},],
      packageCode: [{required: true, message: '请输入包装号!', trigger: 'blur',},],
      printSheetNum: [{required: true, message: '请输入打印张数!', trigger: 'blur',},],
      printNum: [{required: true, message: '请输入打印次数!', trigger: 'blur',},],
      printStatus: [{required: true, message: '请选择打印状态!', trigger: 'change',},],
      isAllowPrint: [{required: true, message: '请选择是否允许打印!', trigger: 'change',},],
      isDelete: [{required: true, message: '请选择软删除!', trigger: 'change',},],
   });
   /*
    * æ‰“开弹窗
    * @param flag æ ‡è®°ï¼ˆ1新增 2编辑 3查看)
    * @param row  è¡Œæ•°æ®
    */
   const openDialog = async (flag: number,row: any) => {
      // ruleForm.value = JSON.parse(JSON.stringify(row));
      // æ”¹ç”¨detail获取最新数据来编辑
      let rowData = JSON.parse(JSON.stringify(row));
      if (rowData.id)
         ruleForm.value = (await detailWmsRecordPrint(rowData.id)).data.result;
      else {
          ruleForm.value = rowData;
         ruleForm.value.isAllowPrint = false;//必填,赋值默认值
      }
      isShowDialog.value = true;
   };
   // å…³é—­å¼¹çª—
   const closeDialog = () => {
      emit("reloadTable");
      isShowDialog.value = false;
   };
   // å–消
   const cancel = () => {
      isShowDialog.value = false;
   };
   // æäº¤
   const submit = async () => {
       disabled_btn.value = true;
      ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
         if (isValid) {
             loading.value = true;
            let values = ruleForm.value;
            let ret={};
            let title='新增';
            if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
               ret = await addWmsRecordPrint(values);
            } else {
               title='编辑';
               ret = await updateWmsRecordPrint(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 () => {
         getEnumPrintTypeData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('PrintTypeEnum')).data.result ?? [];
         getEnumPrintSourceData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('PrintSourceEnum')).data.result ?? [];
         getEnumPrintStatusData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('PrintStatuEnum')).data.result ?? [];
   });
   //将属性或者函数暴露给父组件
   defineExpose({ openDialog });
</script>