tangning 1 рік тому
батько
коміт
8bf61fe1c5
1 змінених файлів з 94 додано та 18 видалено
  1. 94 18
      src/views/product/rtk/AddModal.vue

+ 94 - 18
src/views/product/rtk/AddModal.vue

@@ -60,7 +60,9 @@
           label: '相机sn',
           componentProps: {
             maxLength: 50,
-            onChange: (value) => {handlertkSn(value.target.value);},
+            onChange: (value) => {
+              handlertkSn(value.target.value);
+            },
           },
           colProps: {
             span: 20,
@@ -106,6 +108,28 @@
           componentProps: {
             maxLength: 50,
           },
+          rules: [
+            {
+              required: false,
+              // @ts-ignore
+              validator: (rule, value, ) => {
+                function isSpec(s) {
+                  var pattern = /[~!@#$%^&*<>|']/gi;
+                  return pattern.test(s);
+                }
+                if (value != null && value !== '') {
+                  if (isSpec(value) || value.indexOf(' ') !== -1) {
+                    return Promise.reject('不能包含特殊字符或空格');
+                  } else {
+                    return Promise.resolve();
+                  }
+                } else {
+                  return Promise.resolve();
+                }
+              },
+              trigger: 'change',
+            },
+          ],
           colProps: {
             span: 20,
           },
@@ -118,6 +142,29 @@
           componentProps: {
             maxLength: 50,
           },
+          rules: [
+            {
+              required: false,
+              // @ts-ignore
+              validator: (rule, value) => {
+                console.log('isValidateTxtNonSpec', value);
+                function isSpec(s) {
+                  var pattern = /[~!@#$%^&*<>|']/gi;
+                  return pattern.test(s);
+                }
+                if (value != null && value !== '') {
+                  if (isSpec(value) || value.indexOf(' ') !== -1) {
+                    return Promise.reject('不能包含特殊字符或空格');
+                  } else {
+                    return Promise.resolve();
+                  }
+                } else {
+                  return Promise.resolve();
+                }
+              },
+              trigger: 'change',
+            },
+          ],
           colProps: {
             span: 20,
           },
@@ -221,14 +268,15 @@
           colProps: { span: 20 },
         },
       ];
-      const [registerForm, { validate, resetFields, setFieldsValue, updateSchema, clearValidate }] = useForm({
-        labelWidth: 120,
-        schemas,
-        showActionButtonGroup: false,
-        actionColOptions: {
-          span: 20,
-        },
-      });
+      const [registerForm, { validate, resetFields, setFieldsValue, updateSchema, clearValidate }] =
+        useForm({
+          labelWidth: 120,
+          schemas,
+          showActionButtonGroup: false,
+          actionColOptions: {
+            span: 20,
+          },
+        });
       onMounted(() => {});
       let addListFunc = () => {};
       const [register, { closeModal }] = useModalInner((data) => {
@@ -238,10 +286,10 @@
       function onDataReceive(data) {
         modelRef.value = data;
         fileFlow.title = data.id ? '编辑RTK账号' : '新增RTK账号';
-        handlertkSn(data.cameraSnCode ? true : false )
+        handlertkSn(data.cameraSnCode ? true : false);
         resetFields();
         console.log('data', data);
-        handlertkType(data.rtkType)
+        handlertkType(data.rtkType);
         setFieldsValue(data);
         clearValidate();
       }
@@ -261,11 +309,38 @@
       function handlertkSn(val) {
         console.log('handlertkSn', val);
         let required = !!val;
-        !required && clearValidate()
+        !required && clearValidate();
         updateSchema([
           { field: 'cameraSnCode', required },
           { field: 'rtkType', required },
-          { field: 'rtkSnCode', required },
+          {
+            field: 'rtkSnCode',
+            rules: [
+              {
+                required: required,
+                // @ts-ignore
+                validator: (rule, value, callback) => {
+                  function isSpec(s) {
+                    var pattern = /[~!@#$%^&*<>|']/gi;
+                    return pattern.test(s);
+                  }
+                  if(required && !value){
+                    return Promise.reject('请输入板卡sn号');
+                  }
+                  if (value != null && value !== '') {
+                    if (isSpec(value) || value.indexOf(' ') !== -1) {
+                      return Promise.reject('不能包含特殊字符或空格');
+                    } else {
+                      return Promise.resolve();
+                    }
+                  } else {
+                    return Promise.resolve();
+                  }
+                },
+                trigger: 'change',
+              },
+            ],
+          },
           // { field: 'sgRtkSn', required },
           { field: 'ipAddr', required },
           { field: 'mountPoint', required },
@@ -275,6 +350,7 @@
           { field: 'operator', required },
         ]);
       }
+
       const handleSubmit = async () => {
         function isEmptyString(value) {
           return value === null || value === undefined || value === '';
@@ -282,16 +358,16 @@
         try {
           const params = await validate();
           let keyData = Object.values(params).some((item) => {
-            if( item == params.id ){
-              return false
+            if (item == params.id) {
+              return false;
             } else {
               return !isEmptyString(item);
             }
           });
-          if (!keyData){
-            return createMessage.error('请填写至少一项数据')
+          if (!keyData) {
+            return createMessage.error('请填写至少一项数据');
           }
-          params.rtkSnCode = params.rtkSnCode && params.rtkSnCode.trim()
+          params.rtkSnCode = params.rtkSnCode && params.rtkSnCode.trim();
           console.log('params', Object.values(params), keyData);
           const res = await rtksaveOrEdit(params);
           console.log('res', res);