Browse Source

应用新增、编辑修改

zhongxiaoyu 3 years ago
parent
commit
b05924edab

+ 5 - 3
src/utils/validate.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-12-13 09:43:22
- * @LastEditTime: 2022-03-23 18:20:39
+ * @LastEditTime: 2022-03-28 07:19:22
  * @LastEditors: your name
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: \Foshan4A2.0\src\utils\validate.js
@@ -345,5 +345,7 @@ export function positiveIntegerValidator(rule, value, callback) {
 export const regular = {
   integer: /^[0-9]*$/,
   name: /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/,
-  nameMessage: '只能包含中文、英文、数字和下划线且不能以下划线开头'
-}
+  nameMessage: '只能包含中文、英文、数字和下划线且不能以下划线开头',
+  url: /([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/|[wW]{3}.|[wW][aA][pP].|[fF][tT][pP].|[fF][iI][lL][eE].)[-A-Za-z0-9+&@#\/%?=~_|!:,.;]+[-A-Za-z0-9+&@#\/%=~_|]/,
+  urlMessage: '请输入正确地址'
+}

+ 17 - 5
src/views/authorityManagement/components/authorityAppAdd.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 09:18:04
- * @LastEditTime: 2022-03-26 19:03:31
+ * @LastEditTime: 2022-03-28 07:19:02
  * @LastEditors: your name
  * @Description: 新增/编辑应用
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\addApp.vue
@@ -170,6 +170,7 @@
                     v-model="domain.AppInputType"
                     :disabled="typeFlag"
                     placeholder="参数类型"
+                    @change="value => inputTypeChange(value, index)"
                   >
                     <el-option
                       label="string"
@@ -222,7 +223,10 @@
                 <el-form-item
                   label="参数值"
                   :prop="'domains.' + index + '.InputValue'"
-                  :rules="{ required: true, message: '请输入参数值', trigger: ['change', 'blur'] }"
+                  :rules="[
+                    { required: true, message: '请输入参数值', trigger: ['change', 'blur'] },
+                    { pattern: domain.AppInputType === 'int' ? /^[1-9][0-9]*$/ : /[\S]+/, message: domain.AppInputType === 'int' ? '请输入纯数字' : '请勿输入空格', trigger: ['change', 'blur'] }
+                  ]"
                 >
                   <el-autocomplete
                     ref="inputValue"
@@ -280,7 +284,7 @@
 
 <script>
 import { SaveApp } from '@/api/apiAuthority'
-import { lengthValidator } from '@/utils/validate'
+import { lengthValidator, regular } from '@/utils/validate'
 export default {
   name: 'Addapp',
   data() {
@@ -299,12 +303,15 @@ export default {
           { required: true, message: '请输入应用名称', trigger: 'blur' },
           { validator: lengthValidator, max: 128, message: '长度在 1 到 128 个字符', trigger: ['change', 'blur'] }
         ],
-        url: [{ validator: lengthValidator, max: 512, message: '长度在 1 到 512 个字符', trigger: ['change', 'blur'] }],
         desc: [
           // { required: true, message: "请输入描述", trigger: "blur" },
           { validator: lengthValidator, max: 256, message: '长度在 1 到 256 个字符', trigger: ['change', 'blur'] }
         ],
-        app: [{ validator: lengthValidator, max: 32, message: '长度在 1 到 32 个字符', trigger: ['change', 'blur'] }]
+        app: [{ validator: lengthValidator, max: 32, message: '长度在 1 到 32 个字符', trigger: ['change', 'blur'] }],
+        url: [
+          { pattern: regular.url, message: regular.urlMessage, trigger: ['change', 'blur'] },
+          { validator: lengthValidator, max: 512, message: '长度在 1 到 512 个字符', trigger: ['change', 'blur'] }
+        ]
       },
       dialogImageUrl: '',
       dialogVisible: false,
@@ -437,6 +444,11 @@ export default {
           item.AppInputSite = 'body'
         })
       }
+    },
+    inputTypeChange(value, index) {
+      if (value === 'int') {
+        this.$refs['dynamicValidateForm'].validateField('domains.' + index + '.InputValue')
+      }
     }
   }
 }

+ 22 - 5
src/views/authorityManagement/components/authorityAppEdit.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 09:18:04
- * @LastEditTime: 2022-03-26 19:00:09
+ * @LastEditTime: 2022-03-28 07:19:11
  * @LastEditors: your name
  * @Description: 新增/编辑应用
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\addApp.vue
@@ -180,6 +180,7 @@
                     v-model="domain.AppInputType"
                     :disabled="typeFlag"
                     placeholder="参数类型"
+                    @change="value => inputTypeChange(value, index)"
                   >
                     <el-option
                       label="string"
@@ -232,7 +233,10 @@
                 <el-form-item
                   label="参数值"
                   :prop="'domains.' + index + '.InputValue'"
-                  :rules="{ required: true, message: '请输入参数值', trigger: ['change', 'blur'] }"
+                  :rules="[
+                    { required: true, message: '请输入参数值', trigger: ['change', 'blur'] },
+                    { pattern: domain.AppInputType === 'int' ? /^[1-9][0-9]*$/ : /[\S]+/, message: domain.AppInputType === 'int' ? '请输入纯数字' : '请勿输入空格', trigger: ['change', 'blur'] }
+                  ]"
                 >
                   <el-autocomplete
                     ref="inputValue"
@@ -290,7 +294,7 @@
 
 <script>
 import { GetAppDetails, EditApp, DeleteApp } from '@/api/apiAuthority'
-import { lengthValidator } from '@/utils/validate'
+import { lengthValidator, regular } from '@/utils/validate'
 export default {
   name: 'Addapp',
   data() {
@@ -325,6 +329,10 @@ export default {
             message: '长度在 1 到 32 个字符',
             trigger: ['change', 'blur']
           }
+        ],
+        url: [
+          { pattern: regular.url, message: regular.urlMessage, trigger: ['change', 'blur'] },
+          { validator: lengthValidator, max: 512, message: '长度在 1 到 512 个字符', trigger: ['change', 'blur'] }
         ]
       },
       // radio: 1,
@@ -348,6 +356,7 @@ export default {
           value: 'loginName'
         }
       ],
+      deleteInputs: [],
       typeFlag: false
     }
   },
@@ -447,7 +456,8 @@ export default {
           AppUrl: this.form.url,
           RequestType: this.form.type,
           BodyType: this.form.app,
-          Inputs: this.domains
+          Inputs: this.domains,
+          DeleteInputs: this.deleteInputs
         })
         if (res.code === 0) {
           this.$message.success(res.message)
@@ -479,7 +489,9 @@ export default {
       }
     },
     removeDomain(index) {
-      this.domains.splice(index, 1)
+      const deleteInputs = this.domains.splice(index, 1)
+      const appInputId = deleteInputs[0].AppInputId
+      !this.deleteInputs.includes(appInputId) && this.deleteInputs.push(appInputId)
     },
     addDomain() {
       const { type } = this.form
@@ -519,6 +531,11 @@ export default {
           item.AppInputSite = 'body'
         })
       }
+    },
+    inputTypeChange(value, index) {
+      if (value === 'int') {
+        this.$refs['dynamicValidateForm'].validateField('domains.' + index + '.InputValue')
+      }
     }
   }
 }