From 10089fbb4958ff4780c33bf2e51ec6f04024e2b6 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期一, 11 八月 2025 15:55:23 +0800 Subject: [PATCH] feat: 接口对接 --- apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue | 108 +++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 83 insertions(+), 25 deletions(-) diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue index 123fc38..46c8966 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue @@ -1,22 +1,22 @@ <template> <ContentScrollView :paddingH="false"> <nut-form :model-value="form" ref="formRef" :rules="rules"> - <nut-form-item label="璇佷功绫诲瀷:" class="bole-form-item" prop="type"> + <nut-form-item label="璇佷功绫诲瀷:" class="bole-form-item" prop="typeCode"> <ChooseInputWithPicker - v-model="form.type" + v-model="form.typeCode" placeholder="璇烽�夋嫨璇佷功绫诲瀷" - :value-enum="TaskStatusText" + :value-enum="certificateTypeList" /> </nut-form-item> - <nut-form-item label="璇佷功缂栧彿:" class="bole-form-item" prop="certificateNumber"> - <nut-input v-model="form.certificateNumber" type="number" placeholder="璇疯緭鍏�"> </nut-input> + <nut-form-item label="璇佷功缂栧彿:" class="bole-form-item" prop="code"> + <nut-input v-model="form.code" type="number" placeholder="璇疯緭鍏�"> </nut-input> </nut-form-item> <nut-form-item label="姘镐箙璇佷功:" class="bole-form-item permanent-certificate" - prop="isPermanentCertificate" + prop="isForever" > - <nut-switch v-model="form.isPermanentCertificate" /> + <nut-switch v-model="form.isForever" /> </nut-form-item> <nut-form-item label="寮�濮嬫棩鏈�:" class="bole-form-item" prop="startDate"> <ChooseInputWithDatePicker v-model="form.startDate"></ChooseInputWithDatePicker> @@ -24,26 +24,26 @@ <nut-form-item label="缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate"> <ChooseInputWithDatePicker v-model="form.endDate"></ChooseInputWithDatePicker> </nut-form-item> - <nut-form-item label="鍙戣瘉鍗曚綅:" class="bole-form-item" prop="certificateNumber"> - <nut-input v-model="form.certificateNumber" placeholder="璇疯緭鍏�"> </nut-input> + <nut-form-item label="鍙戣瘉鍗曚綅:" class="bole-form-item" prop="issueUnit"> + <nut-input v-model="form.issueUnit" placeholder="璇疯緭鍏�"> </nut-input> </nut-form-item> <div class="certificate-upload"> <div class="certificate-upload-title">涓婁紶璇佷功</div> <nut-form-item label="璇佷功姝i潰鐓х墖锛堣纭繚璇佷功鍙枫�佸ご鍍忕収鐗囩瓑娓呮櫚鍙锛�" class="bole-form-item" - prop="photo" + prop="img" label-position="top" > - <Uploader v-model:file-list="form.photo" :maximum="1" class="bole-uploader"> </Uploader> + <Uploader v-model:file-list="form.img" :maximum="1" class="bole-uploader"> </Uploader> </nut-form-item> <nut-form-item label="璇佷功鍙嶉潰鐓х墖锛堟垨鍏朵粬鏈夊唴瀹归〉锛�" class="bole-form-item" - prop="photo" + prop="backImg" label-position="top" > - <Uploader v-model:file-list="form.photo" :maximum="1" class="bole-uploader"> </Uploader> + <Uploader v-model:file-list="form.backImg" :maximum="1" class="bole-uploader"> </Uploader> </nut-form-item> </div> </nut-form> @@ -54,13 +54,16 @@ </template> <script setup lang="ts"> -import { useUser } from '@/hooks'; import { ChooseInputWithPicker, ChooseInputWithDatePicker } from '@12333/components'; import * as userResumeServices from '@12333/services/apiV2/userResume'; -import { TaskStatusText, TaskStatus } from '@/constants'; import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; -import { useQuery } from '@tanstack/vue-query'; +import { useQuery, useQueryClient } from '@tanstack/vue-query'; import Taro from '@tarojs/taro'; +import { useDictionaryDataSelect } from '@12333/hooks'; +import { CategoryCode } from '@12333/constants'; +import { convertApi2FormUrlOnlyOne, Message, setOSSLink, FormValidator } from '@12333/utils'; +import dayjs from 'dayjs'; +import { goBack } from '@/utils'; defineOptions({ name: 'InnerPage', @@ -69,14 +72,21 @@ const router = Taro.useRouter(); const id = router.params?.id as string; const isEdit = computed(() => !!id); +const queryClient = useQueryClient(); + +const { dictionaryDataList: certificateTypeList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.CertificateType, +}); const form = reactive({ - type: TaskStatus.All, - certificateNumber: '', + typeCode: '', + code: '', startDate: '', endDate: '', - isPermanentCertificate: false, - photo: [], + issueUnit: '', + isForever: false, + img: [], + backImg: [], }); const { @@ -95,14 +105,37 @@ ); }, placeholderData: () => ({} as API.GetUserResumeCredentialQueryResult), - enabled: isEdit.value, + enabled: computed(() => isEdit.value), + onSuccess(data) { + form.typeCode = data.typeCode; + form.code = data.code; + form.startDate = dayjs(data.startDate).format('YYYY-MM-DD 00:00:00'); + form.endDate = dayjs(data.endDate).format('YYYY-MM-DD 23:59:59'); + form.issueUnit = data.issueUnit; + form.isForever = data.isForever; + form.img = convertApi2FormUrlOnlyOne(setOSSLink(data.img)); + form.backImg = convertApi2FormUrlOnlyOne(setOSSLink(data.backImg)); + }, }); const rules = reactive<FormRules>({ - type: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }], + typeCode: [{ required: true, message: '璇烽�夋嫨璇佷功绫诲瀷' }], startDate: [{ required: true, message: '璇烽�夋嫨寮�濮嬫棩鏈�' }], - endDate: [{ required: true, message: '璇烽�夋嫨缁撴潫鏃ユ湡' }], - photo: [{ required: true, message: '璇蜂笂浼犺瘉涔︽闈㈢収' }], + endDate: [ + { + required: true, + message: '璇烽�夋嫨缁撴潫鏃ユ湡', + validator(value) { + if (!value) return Promise.reject('璇烽�夋嫨缁撴潫鏃ユ湡'); + if (value <= form.startDate) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�'); + return Promise.resolve(true); + }, + }, + ], + img: [{ required: true, message: '璇蜂笂浼犺瘉涔︽闈㈢収', validator: FormValidator.validatorArray }], + backImg: [ + { required: true, message: '璇蜂笂浼犺瘉涔﹀弽闈㈢収', validator: FormValidator.validatorArray }, + ], }); const formRef = ref<any>(null); function handleConfirm() { @@ -114,7 +147,32 @@ }); } -function confirm() {} +async function confirm() { + try { + let params: API.SaveUserResumeCredentialCommand = { + typeCode: form.typeCode, + code: form.code, + isForever: form.isForever, + startDate: dayjs(form.startDate).format('YYYY-MM-DD 00:00:00'), + endDate: dayjs(form.endDate).format('YYYY-MM-DD 23:59:59'), + issueUnit: form.issueUnit, + img: form.img[0]?.path, + backImg: form.backImg[0]?.path, + }; + if (isEdit.value) { + params.id = id; + } + let res = await userResumeServices.saveUserResumeCredential(params); + if (res) { + Message.success(isEdit ? '缂栬緫鎴愬姛' : '娣诲姞鎴愬姛', { + onClosed() { + goBack(); + queryClient.invalidateQueries(['userResumeServices/getUserResumeCredentials']); + }, + }); + } + } catch (error) {} +} </script> <style lang="scss"> -- Gitblit v1.9.1