|
|
@@ -46,6 +46,15 @@
|
|
|
<a-form-item label="甲方电话" name="partyAMobile">
|
|
|
<a-input v-model:value="currentAgreement.partyAMobile" :placeholder="isReviewer ? '请填写联系电话' : '待审核人员填写'" :disabled="!isReviewer" />
|
|
|
</a-form-item>
|
|
|
+ <a-form-item label="保护单位签名" name="unitSign">
|
|
|
+ <Sign
|
|
|
+ v-if="isReviewer || currentAgreement.unitSign" :model-value="currentAgreement.unitSign ?? ''"
|
|
|
+ :disabled="!isReviewer"
|
|
|
+ :uploadCo="signUploadCo"
|
|
|
+ @update:model-value="(v) => { currentAgreement.unitSign = v; validate() }"
|
|
|
+ />
|
|
|
+ <span v-else>待审核人员签名</span>
|
|
|
+ </a-form-item>
|
|
|
|
|
|
<a-divider />
|
|
|
|
|
|
@@ -96,8 +105,12 @@ import type { Rules } from 'async-validator';
|
|
|
const props = withDefaults(defineProps<{
|
|
|
currentAgreement: AgreementDetail;
|
|
|
isReviewer?: boolean;
|
|
|
+ isProtectUnit?: boolean;
|
|
|
+ isEndLevel?: boolean;
|
|
|
}>(), {
|
|
|
isReviewer: false,
|
|
|
+ isProtectUnit: false,
|
|
|
+ isEndLevel: false,
|
|
|
});
|
|
|
|
|
|
const agreementYear = computed(() => props.currentAgreement?.year ?? 2027);
|
|
|
@@ -119,22 +132,42 @@ const signUploadCo = useImageSimpleUploadCo();
|
|
|
|
|
|
const formRules = computed<Rules>(() => {
|
|
|
const rules: Rules = {
|
|
|
- /* partyA: [
|
|
|
- { required: props.isReviewer, message: '请填写甲方负责人(代表人)姓名' }
|
|
|
- ], */
|
|
|
- partyB: [
|
|
|
- { required: true, message: '请填写乙方(传承人)姓名' }
|
|
|
+ partyA: [
|
|
|
+ { required: props.isReviewer && props.isEndLevel, message: '请填写甲方负责人(代表人)姓名' }
|
|
|
],
|
|
|
- /* partyAMobile: [
|
|
|
+ partyAMobile: [
|
|
|
{
|
|
|
- required: props.isReviewer,
|
|
|
+ required: props.isReviewer && props.isEndLevel,
|
|
|
asyncValidator: async (_rule, value) => {
|
|
|
const s = value != null ? String(value).trim() : '';
|
|
|
if (props.isReviewer && !CN_PHONE_RE.test(s))
|
|
|
throw new Error('请输入正确的手机号或座机号');
|
|
|
},
|
|
|
},
|
|
|
- ], */
|
|
|
+ ],
|
|
|
+ partyASign: [
|
|
|
+ {
|
|
|
+ required: props.isReviewer && props.isEndLevel,
|
|
|
+ asyncValidator: async (_rule, value) => {
|
|
|
+ const s = typeof value === 'string' ? value.trim() : '';
|
|
|
+ if (!s && props.isReviewer)
|
|
|
+ throw new Error('请完成甲方签名');
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ unitSign: [
|
|
|
+ {
|
|
|
+ required: props.isReviewer && props.isProtectUnit,
|
|
|
+ asyncValidator: async (_rule, value) => {
|
|
|
+ const s = typeof value === 'string' ? value.trim() : '';
|
|
|
+ if (!s && props.isReviewer)
|
|
|
+ throw new Error('请完成保护单位签名');
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ partyB: [
|
|
|
+ { required: true, message: '请填写乙方(传承人)姓名' }
|
|
|
+ ],
|
|
|
apprentice: [
|
|
|
{ required: true, message: '请填写本年度带徒人数' },
|
|
|
{ type: 'integer', min: 0, message: '须为不小于 0 的整数' },
|
|
|
@@ -143,16 +176,6 @@ const formRules = computed<Rules>(() => {
|
|
|
{ required: true, message: '请填写本年度宣传活动场次' },
|
|
|
{ type: 'integer', min: 0, message: '须为不小于 0 的整数' },
|
|
|
],
|
|
|
- /* partyASign: [
|
|
|
- {
|
|
|
- required: props.isReviewer,
|
|
|
- asyncValidator: async (_rule, value) => {
|
|
|
- const s = typeof value === 'string' ? value.trim() : '';
|
|
|
- if (!s && props.isReviewer)
|
|
|
- throw new Error('请完成甲方签名');
|
|
|
- },
|
|
|
- },
|
|
|
- ], */
|
|
|
partyBSign: [
|
|
|
{
|
|
|
asyncValidator: async (_rule, value) => {
|