Quellcode durchsuchen

🎨 优化表单判断

快乐的梦鱼 vor 1 Woche
Ursprung
Commit
905595e976

+ 1 - 1
src/pages/collect/assessment/argeement-sign.vue

@@ -51,7 +51,7 @@
 
               <a-space direction="vertical" class="w-full mt-4" size="middle">
                 <a-button type="primary" block :loading="submitLoading" @click="saveAgreement">保存传承协议</a-button>
-                <a-button v-if="!authStore.isAdmin && currentAgreement?.progress === 0" type="primary" block :loading="submitLoading" @click="submitForm">提交审核</a-button>
+                <a-button v-if="true || !authStore.isAdmin && currentAgreement?.progress === 0" type="primary" block :loading="submitLoading" @click="submitForm">提交审核</a-button>
                 <a-button block :loading="submitLoading" @click="downloadAgreement">下载协议 PDF</a-button>
               </a-space>
             </div>

+ 17 - 22
src/pages/collect/assessment/components/AgreementFormDisplay.vue

@@ -38,6 +38,7 @@
           <Sign 
             v-if="isReviewer || currentAgreement.partyASign" :model-value="currentAgreement.partyASign ?? ''" 
             :disabled="!isReviewer"
+            :uploadCo="signUploadCo"
             @update:model-value="(v) => { currentAgreement.partyASign = v; validate() }" 
           />
           <span v-else>待审核人员签名</span>
@@ -50,9 +51,10 @@
 
         <a-typography-paragraph strong>乙方:{{ currentAgreement.partyB }}(签名)</a-typography-paragraph>
         <a-form-item label="乙方签名" name="partyBSign">
-          <Sign 
+          <Sign
             :model-value="currentAgreement.partyBSign ?? ''" 
             :readonly="isReviewer" 
+            :uploadCo="signUploadCo"
             @update:model-value="(v) => { currentAgreement.partyBSign = v;  validate() }" 
           />
         </a-form-item>
@@ -87,8 +89,9 @@ import AgreementBodyMunicipal from './AgreementBodyMunicipal.vue';
 import AgreementBody from './AgreementBody.vue';
 import { Sign } from '@imengyu/vue-dynamic-form-rich';
 import { computed, ref } from 'vue';
-import type { Rules } from 'async-validator';
 import type { FormInstance } from 'ant-design-vue';
+import { useImageSimpleUploadCo } from '@/common/upload/ImageUploadCo.ts';
+import type { Rules } from 'async-validator';
 
 const props = withDefaults(defineProps<{
   currentAgreement: AgreementDetail;
@@ -112,6 +115,8 @@ const formRef = ref<FormInstance | null>(null);
 const CN_PHONE = /^1[3-9]\d{9}$/;
 const CN_PHONE_RE = /^(1\d{10}|0\d{2,3}-\d{7,8})$/;
 
+const signUploadCo = useImageSimpleUploadCo();
+
 const formRules = computed<Rules>(() => {
   const rules: Rules = {
     partyA: [
@@ -123,12 +128,10 @@ const formRules = computed<Rules>(() => {
     partyAMobile: [
       {
         required: props.isReviewer,
-        validator(_rule, value, callback) {
+        asyncValidator: async (_rule, value) => {
           const s = value != null ? String(value).trim() : '';
           if (props.isReviewer && !CN_PHONE_RE.test(s))
-            callback(new Error('请输入正确的手机号或座机号'));
-          else
-            callback();
+            throw new Error('请输入正确的手机号或座机号');
         },
       },
     ],
@@ -143,23 +146,19 @@ const formRules = computed<Rules>(() => {
     partyASign: [
       {
         required: props.isReviewer,
-        validator(_rule, value, callback) {
+        asyncValidator: async (_rule, value) => {
           const s = typeof value === 'string' ? value.trim() : '';
           if (!s && props.isReviewer)
-            callback(new Error('请完成甲方签名'));
-          else
-            callback();
+            throw new Error('请完成甲方签名');
         },
       },
     ],
     partyBSign: [
       {
-        validator(_rule, value, callback) {
+        asyncValidator: async (_rule, value) => {
           const s = typeof value === 'string' ? value.trim() : '';
           if (!s)
-            callback(new Error('请完成乙方签名'));
-          else
-            callback();
+            throw new Error('请完成乙方签名');
         },
       },
     ],
@@ -171,24 +170,20 @@ const formRules = computed<Rules>(() => {
     mobile: [
       { required: true, message: '请填写乙方联系电话' },
       {
-        validator(_rule, value, callback) {
+        asyncValidator : async (_rule, value) => {
           const s = value != null ? String(value).trim() : '';
           if (!props.isReviewer && !CN_PHONE_RE.test(s))
-            callback(new Error('请输入正确的手机号或座机号'));
-          else
-            callback();
+            throw new Error('请输入正确的手机号或座机号');
         },
       },
     ],
     contactMobile: [
       {
         required: false,
-        validator(_rule, value, callback) {
+        asyncValidator: async (_rule, value) => {
           const s = value != null ? String(value).trim() : '';
           if (s && !CN_PHONE.test(s))
-            callback(new Error('请输入正确的手机号'));
-          else
-            callback();
+            throw new Error('请输入正确的手机号');
         },
       },
     ],