Переглянути джерело

🎨 按要求去除甲方字段必填

快乐的梦鱼 1 тиждень тому
батько
коміт
e7d5301758

+ 20 - 0
src/common/Form.ts

@@ -0,0 +1,20 @@
+interface ErrorField {
+  name: (string | number)[]
+  errors: string[]
+  warnings: string[]
+}
+
+interface ValidateResult {
+  values?: Record<string, unknown>
+  errorFields?: ErrorField[]
+  outOfDate?: boolean
+}
+
+export function getFormErrorFieldsMessage(e: unknown): string[] {
+  if (e && typeof e === 'object' && 'errorFields' in (e as object)) {
+    const result = e as ValidateResult
+    if (!result?.errorFields?.length) return []
+    return result.errorFields.flatMap((field) => field.errors)
+  }
+  return e instanceof Error ? [e.message] : String(e).split('\n')
+}

+ 3 - 2
src/pages/collect/assessment/argeement-sign-review.vue

@@ -109,6 +109,7 @@ import { isInMiniProgram } from '@/composeables/MiniProgramIng.ts';
 import AssessmentContentApi, { AgreementDetail } from '@/api/collect/AssessmentContent';
 import AgreementFormDisplay from './components/AgreementFormDisplay.vue';
 import { useReview } from './composeables/Review.ts';
+import { getFormErrorFieldsMessage } from '@/common/Form.ts';
 
 function formatErr(e: unknown): string {
   if (e instanceof RequestApiError)
@@ -171,8 +172,8 @@ async function submitReview() {
   }
   try {
     await agreementFormRef.value?.validate();
-  } catch {
-    message.warning('请填写完整信息');
+  } catch (e) {
+    message.warning('请填写完整信息: ' + getFormErrorFieldsMessage(e));
     return;
   }
   try {

+ 3 - 7
src/pages/collect/assessment/argeement-sign.vue

@@ -68,12 +68,13 @@ import { useRoute, useRouter } from 'vue-router';
 import { message, Modal } from 'ant-design-vue';
 import { RequestApiError, waitTimeOut } from '@imengyu/imengyu-utils';
 import { useAuthStore } from '@/stores/auth';
-import AssessmentContentApi, { AgreementDetail } from '@/api/collect/AssessmentContent';
 import { useSimpleDataLoader } from '@/composeables/useSimpleDataLoader';
 import { ArrowLeftOutlined } from '@ant-design/icons-vue';
 import { injectAppConfiguration } from '@/api/system/useAppConfiguration';
 import AgreementFormDisplay from './components/AgreementFormDisplay.vue';
+import AssessmentContentApi, { AgreementDetail } from '@/api/collect/AssessmentContent';
 import { isInMiniProgram } from '@/composeables/MiniProgramIng.ts';
+import { getFormErrorFieldsMessage } from '@/common/Form.ts';
 
 function formatErr(e: unknown): string {
   if (e instanceof RequestApiError)
@@ -212,12 +213,7 @@ async function submitForm() {
   try {
     await agreementFormRef.value?.validate();
   } catch (e: unknown) {
-    if (e && typeof e === 'object' && 'errorFields' in (e as object))
-      message.warning('请填写完整信息');
-    else if (e instanceof Error)
-      message.warning(e.message);
-    else
-      message.warning('请填写完整信息');
+    message.warning('请填写完整信息: ' + getFormErrorFieldsMessage(e));
     return;
   }
   const confirmed = await new Promise<boolean>((resolve) => {

+ 6 - 6
src/pages/collect/assessment/components/AgreementFormDisplay.vue

@@ -119,13 +119,13 @@ const signUploadCo = useImageSimpleUploadCo();
 
 const formRules = computed<Rules>(() => {
   const rules: Rules = {
-    partyA: [
+    /* partyA: [
       { required: props.isReviewer, message: '请填写甲方负责人(代表人)姓名' }
-    ],
+    ], */
     partyB: [
       { required: true, message: '请填写乙方(传承人)姓名' }
     ],
-    partyAMobile: [
+    /* partyAMobile: [
       {
         required: props.isReviewer,
         asyncValidator: async (_rule, value) => {
@@ -134,7 +134,7 @@ const formRules = computed<Rules>(() => {
             throw new Error('请输入正确的手机号或座机号');
         },
       },
-    ],
+    ], */
     apprentice: [
       { required: true, message: '请填写本年度带徒人数' },
       { type: 'integer', min: 0, message: '须为不小于 0 的整数' },
@@ -143,7 +143,7 @@ const formRules = computed<Rules>(() => {
       { required: true, message: '请填写本年度宣传活动场次' },
       { type: 'integer', min: 0, message: '须为不小于 0 的整数' },
     ],
-    partyASign: [
+    /* partyASign: [
       {
         required: props.isReviewer,
         asyncValidator: async (_rule, value) => {
@@ -152,7 +152,7 @@ const formRules = computed<Rules>(() => {
             throw new Error('请完成甲方签名');
         },
       },
-    ],
+    ], */
     partyBSign: [
       {
         asyncValidator: async (_rule, value) => {

+ 3 - 12
src/pages/collect/assessment/evaluation-form.vue

@@ -65,6 +65,7 @@ import AssessmentContentApi, {
 import SelfAssessmentFormDisplay from './components/SelfAssessmentFormDisplay.vue';
 import { useSimpleDataLoader } from '@/composeables/useSimpleDataLoader';
 import { injectAppConfiguration } from '@/api/system/useAppConfiguration.ts';
+import { getFormErrorFieldsMessage } from '@/common/Form.ts';
 
 function formatErr(e: unknown): string {
   if (e instanceof RequestApiError)
@@ -156,12 +157,7 @@ async function saveForm() {
     try {
       await blockRef.value?.validate();
     } catch (e: unknown) {
-      if (e && typeof e === 'object' && 'errorFields' in (e as object))
-        message.warning('请填写完整信息');
-      else if (e instanceof Error)
-        message.warning(e.message);
-      else
-        message.warning('请填写完整信息');
+      message.warning('请填写完整信息: ' + getFormErrorFieldsMessage(e));
       submitLoading.value = false;
       return;
     }
@@ -199,12 +195,7 @@ async function submitForm() {
   try {
     await blockRef.value?.validate();
   } catch (e: unknown) {
-    if (e && typeof e === 'object' && 'errorFields' in (e as object))
-      message.warning('请填写完整信息');
-    else if (e instanceof Error)
-      message.warning(e.message);
-    else
-      message.warning('请填写完整信息');
+    message.warning('请填写完整信息: ' + getFormErrorFieldsMessage(e));
     return;
   }
   const confirmed = await new Promise<boolean>((resolve) => {

+ 3 - 2
src/pages/forms/form.vue

@@ -136,6 +136,7 @@ import CommonListBlock from '@/components/content/CommonListBlock.vue';
 import { waitTimeOut } from '@imengyu/imengyu-utils';
 import { useImageSimpleUploadCo } from '@/common/upload/ImageUploadCo';
 import { useWindowOnUnLoadConfirm } from '@/composeables/useWindowOnUnLoadConfirm';
+import { getFormErrorFieldsMessage } from '@/common/Form';
 
 const isMobile = computed(() => {
   return window.innerWidth < 768;
@@ -341,7 +342,7 @@ async function handleSubmitBase(valid: boolean) {
     try {
       await ref.validate();
     } catch (e) {
-      message.warn('请填写完整信息');
+      message.warning('请填写完整信息: ' + getFormErrorFieldsMessage(e));
       loading.value = false;
       if ((e as any).errorFields)
         ref.scrollToField((e as any).errorFields[0].name, { block: 'center' })
@@ -381,7 +382,7 @@ async function handleSubmitExtend() {
   try {
     await ref.validate();
   } catch (e) {
-    message.warn('请填写完整信息');
+    message.warning('请填写完整信息: ' + getFormErrorFieldsMessage(e));
     loading.value = false;
     if ((e as any).errorFields)
       ref.scrollToField((e as any).errorFields[0].name, { block: 'center' })