Prechádzať zdrojové kódy

feat(data-fill): 增加插入编号表单的验证功能

duy 2 mesiacov pred
rodič
commit
e244bd3a00

+ 7 - 4
src/views/data-fill/collapse-form/index.vue

@@ -660,7 +660,7 @@
     <hc-new-dialog
         v-model="pushCodeShow"
         :loading="pushCodeLoading"
-        widths="50%"
+        widths="55%"
         save-text="保存"
         title="插入编号"
        
@@ -2243,11 +2243,14 @@ const cancelPushCode = () => {
 }
 const submitPushCode = async ()=>{
     pushCodeLoading.value = true
-     await pushCodeRef.value?.saveBatchCode()
+    const data = await pushCodeRef.value?.saveBatchCode()
      pushCodeLoading.value = false
 
-       renewData()
-    cancelPushCode()
+        if (data) {
+            renewData()
+            cancelPushCode()
+        }
+     
     
 }
 const pushCodeRef = ref(null)

+ 143 - 29
src/views/data-fill/collapse-form/push-code.vue

@@ -7,19 +7,19 @@
             </el-radio-group>
         </div>
         <div v-if="formCode.type === 1" class="mt-2 bg-[#EFF5FF] py-[20px]">
-            <el-form :model="formCode" :inline="true" class="flex items-center justify-center">
-                <div class="w-120px">
-                    <el-form-item label="">
+            <el-form ref="formCodeRef" :model="formCode" :inline="true" class="flex items-center justify-center" :rules="formCodeRules">
+                <div class="w-150px">
+                    <el-form-item label=" " prop="startNumber1">
                         <el-input v-model="formCode.startNumber1" placeholder="数值(起)" clearable />
                     </el-form-item>
                 </div>
-                <div class="w-120px">
-                    <el-form-item label="">
+                <div class="w-150px">
+                    <el-form-item label=" " prop="endNumber1">
                         <el-input v-model="formCode.endNumber1" placeholder="数值(始)" clearable />
                     </el-form-item>
                 </div>
                 <div class="ml-1">
-                    <el-form-item label="">
+                    <el-form-item label=" " prop="increType1">
                         <el-select
                             v-model="formCode.increType1"
                             placeholder="递增分类"
@@ -33,7 +33,7 @@
                     </el-form-item>
                 </div>
                 <div class="ml-1">
-                    <el-form-item label="">
+                    <el-form-item label=" " prop="cycleType1">
                         <el-select
                             v-model="formCode.cycleType1"
                             placeholder="循环分类"
@@ -46,8 +46,8 @@
                     </el-form-item>
                 </div>
           
-                <div class="ml-1 w-120px">
-                    <el-form-item label="">
+                <div class="ml-1 w-150px">
+                    <el-form-item label=" " prop="cycleTypeGroup1">
                         <el-input v-model="formCode.cycleTypeGroup1" placeholder="循环组数" clearable />
                     </el-form-item>
                 </div>
@@ -60,20 +60,20 @@
         </div>
         <div v-if="formCode.type === 2" class="mt-2 flex justify-center bg-[#EFF5FF] py-[20px]">
             <div>
-                <el-form :model="formCode" :inline="true">
+                <el-form ref="formCodeRef1" :model="formCode" :inline="true" :rules="formCodeRules">
                     <div class="flex items-center">
-                        <div class="w-125px">
-                            <el-form-item label="">
+                        <div class="w-150px">
+                            <el-form-item label=" " prop="startNumber1">
                                 <el-input v-model="formCode.startNumber1" placeholder="数值1(起)" clearable />
                             </el-form-item>
                         </div>
-                        <div class="w-125px">
-                            <el-form-item label="">
+                        <div class="w-150px">
+                            <el-form-item label=" " prop="endNumber1">
                                 <el-input v-model="formCode.endNumber1" placeholder="数值1(始)" clearable />
                             </el-form-item>
                         </div>
                         <div class="ml-1">
-                            <el-form-item label="">
+                            <el-form-item label=" " prop="increType1">
                                 <el-select
                                     v-model="formCode.increType1"
                                     placeholder="递增分类"
@@ -87,7 +87,7 @@
                             </el-form-item>
                         </div>
                         <div class="ml-1">
-                            <el-form-item label="">
+                            <el-form-item label=" " prop="cycleType1">
                                 <el-select
                                     v-model="formCode.cycleType1"
                                     placeholder="循环分类"
@@ -100,15 +100,15 @@
                             </el-form-item>
                         </div>
   
-                        <div class="ml-1 w-120px">
-                            <el-form-item label="">
+                        <div class="ml-1 w-150px">
+                            <el-form-item label=" " prop="cycleTypeGroup1">
                                 <el-input v-model="formCode.cycleTypeGroup1" placeholder="循环组数" clearable />
                             </el-form-item>
                         </div>
                     </div>
                     <div class="mt-4 flex items-start">
                         <div class="mr-4 w-125px">
-                            <el-form-item label="">
+                            <el-form-item label=" " prop="separator">
                                 <el-select
                                     v-model="formCode.separator"
                                     placeholder="选择符号"
@@ -125,18 +125,18 @@
                         </div>
                     </div>
                     <div class="mt-4 flex items-center">
-                        <div class="w-125px">
-                            <el-form-item label="">
+                        <div class="w-150px">
+                            <el-form-item label=" " prop="startNumber2">
                                 <el-input v-model="formCode.startNumber2" placeholder="数值2(起)" clearable />
                             </el-form-item>
                         </div>
-                        <div class="w-125px">
-                            <el-form-item label="">
+                        <div class="w-150px">
+                            <el-form-item label=" " prop="endNumber2">
                                 <el-input v-model="formCode.endNumber2" placeholder="数值2(始)" clearable />
                             </el-form-item>
                         </div>
                         <div class="ml-1">
-                            <el-form-item label="">
+                            <el-form-item label=" " prop="increType2">
                                 <el-select
                                     v-model="formCode.increType2"
                                     placeholder="递增分类"
@@ -150,7 +150,7 @@
                             </el-form-item>
                         </div>
                         <div class="ml-1">
-                            <el-form-item label="">
+                            <el-form-item label=" " prop="cycleType2">
                                 <el-select
                                     v-model="formCode.cycleType2"
                                     placeholder="循环分类"
@@ -163,8 +163,8 @@
                             </el-form-item>
                         </div>
   
-                        <div class="ml-1 w-120px">
-                            <el-form-item label="">
+                        <div class="ml-1 w-150px">
+                            <el-form-item label=" " prop="cycleTypeGroup2">
                                 <el-input v-model="formCode.cycleTypeGroup2" placeholder="循环组数" clearable />
                             </el-form-item>
                         </div>
@@ -183,6 +183,7 @@ import { onMounted, ref, watch } from 'vue'
 import wbsApi from '~api/data-fill/wbs'
 
 import { getDictionaryData } from '~uti/tools'
+import { formValidate } from 'js-fast-way'
 
 const props = defineProps({
     projectId: [String, Number],
@@ -224,6 +225,111 @@ const formCode = ref({
 type:1,
   
 })
+
+const formCodeRules = {
+  startNumber1: [
+    {
+      required: true,
+      trigger: 'blur',
+      message: '请输入数值(起)',
+    },
+    {
+      pattern: /^[1-9]\d*$/,
+      trigger: 'blur',
+      message: '只能输入正整数',
+    },
+  ],
+  endNumber1: [
+    {
+      required: true,
+      trigger: 'blur',
+      message: '请输入数值(始)',
+    },
+    {
+      pattern: /^[1-9]\d*$/,
+      trigger: 'blur',
+      message: '只能输入正整数',
+    },
+  ],
+    increType1: {
+        required: true,
+        trigger: 'change',
+        message: '请选择递增分类',
+    },
+    cycleType1: {
+        required: true,
+        trigger: 'change',
+        message: '请选择循环分类',
+    },
+    cycleTypeGroup1: [
+    {
+      required: true,
+      trigger: 'blur',
+      message: '请输入循环组数',
+    },
+    {
+      pattern: /^[1-9]\d*$/,
+      trigger: 'blur',
+      message: '只能输入正整数',
+    },
+  ],
+    startNumber2: [
+    {
+      required: true,
+      trigger: 'blur',
+      message: '请输入数值(起)',
+    },
+    {
+      pattern: /^[1-9]\d*$/,
+      trigger: 'blur',
+      message: '只能输入正整数',
+    },
+  ],
+    endNumber2: [
+    {
+      required: true,
+      trigger: 'blur',
+      message: '请输入数值(始)',
+    },
+    {
+      pattern: /^[1-9]\d*$/,
+      trigger: 'blur',
+      message: '只能输入正整数',
+    },
+  ],
+    increType2: {
+        required: true,
+        trigger: 'change',
+        message: '请选择递增分类',
+    },
+    cycleType2: {
+        required: true,
+        trigger: 'change',
+        message: '请选择循环分类',
+    },
+    cycleTypeGroup2: [
+    {
+      required: true,
+      trigger: 'blur',
+      message: '请输入循环组数',
+    },
+    {
+      pattern: /^[1-9]\d*$/,
+      trigger: 'blur',
+      message: '只能输入正整数',
+    },
+  ],
+    separator: {
+        required: true,
+        trigger: 'change',
+        message: '请选择选择符号',
+    },
+
+
+  
+}
+const formCodeRef = ref(null)
+const formCodeRef1 = ref(null)
 const separatorOptions = ref([])
 const getSeparatorOptions = async () => {
   separatorOptions.value = await getDictionaryData('separator', true )
@@ -231,7 +337,7 @@ const getSeparatorOptions = async () => {
 //渲染完成
 onMounted(() => {
   getSeparatorOptions()
-  console.log(key.value, 'key.value')
+ 
   
 })
 
@@ -239,6 +345,14 @@ onMounted(() => {
 
 
 const saveBatchCode = async ()=>{
+
+    const validate = formCode.value.type === 1
+        ? await formValidate(formCodeRef.value, formCodeRules)
+        : await formValidate(formCodeRef1.value, formCodeRules)
+     if (!validate) {
+        return false
+     }
+
     const { error, code, data, msg } = await wbsApi.batchAddNumbers({
         ...formCode.value,
         classify: classify.value,
@@ -248,7 +362,7 @@ const saveBatchCode = async ()=>{
     })
     if (!error && code === 200) {
         window?.$message?.success('操作成功')
-        return data
+       return true
     } 
 }