From 98bcc6ad603cc7281f3410ed61ebdf29465591b8 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期日, 19 十月 2025 16:29:07 +0800
Subject: [PATCH] Merge branch 'dev-1.2.0.1' of http://120.26.58.240:8888/r/flexJobMiniApp into dev-1.2.0.1
---
apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue | 186 ++++++++++++++++++++++++++++++++++-----------
1 files changed, 139 insertions(+), 47 deletions(-)
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
index 9540a72..45e67c9 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
@@ -1,49 +1,57 @@
<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>
- <nut-form-item label="寮�濮嬫棩鏈�:" class="bole-form-item" prop="startDate">
- <ChooseInputWithDatePicker v-model="form.startDate"></ChooseInputWithDatePicker>
- </nut-form-item>
- <nut-form-item label="缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate">
- <ChooseInputWithDatePicker v-model="form.endDate"></ChooseInputWithDatePicker>
+ <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="certificateNumber">
- <nut-input v-model="form.certificateNumber" placeholder="璇疯緭鍏�"> </nut-input>
+ <template v-if="!form.isForever">
+ <nut-form-item label="寮�濮嬫棩鏈�:" class="bole-form-item" prop="startDate">
+ <ChooseInputWithDatePicker
+ v-model="form.startDate"
+ placeholder="璇烽�夋嫨寮�濮嬫棩鏈�"
+ ></ChooseInputWithDatePicker>
+ </nut-form-item>
+ <nut-form-item label="缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate">
+ <ChooseInputWithDatePicker
+ v-model="form.endDate"
+ placeholder="璇烽�夋嫨缁撴潫鏃ユ湡"
+ ></ChooseInputWithDatePicker>
+ </nut-form-item>
+ </template>
+ <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,31 +62,88 @@
</template>
<script setup lang="ts">
-import { useUser } from '@/hooks';
import { ChooseInputWithPicker, ChooseInputWithDatePicker } from '@12333/components';
-import { TaskStatusText, TaskStatus } from '@/constants';
+import * as userResumeServices from '@12333/services/apiV2/userResume';
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
+import { useQuery, useQueryClient } from '@tanstack/vue-query';
+import Taro from '@tarojs/taro';
+import { useDictionaryDataSelect, useUpdateResume } 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',
});
-const { userDetail } = useUser();
+const router = Taro.useRouter();
+const id = router.params?.id as string;
+const isEdit = computed(() => !!id);
+const { updateUserResumeCredentials } = useUpdateResume();
+
+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 {
+ isLoading,
+ isError,
+ data: detail,
+ refetch,
+} = useQuery({
+ queryKey: ['userResumeServices/getUserResumeCredential', id],
+ queryFn: async () => {
+ return await userResumeServices.getUserResumeCredential(
+ { id: id },
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.GetUserResumeCredentialQueryResult),
+ enabled: computed(() => isEdit.value),
+ onSuccess(data) {
+ form.typeCode = data.typeCode;
+ form.code = data.code;
+ form.startDate = data.startDate ? dayjs(data.startDate).format('YYYY-MM-DD') : '';
+ form.endDate = data.startDate ? dayjs(data.endDate).format('YYYY-MM-DD') : '';
+ 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() {
@@ -90,31 +155,58 @@
});
}
-function confirm() {}
+async function confirm() {
+ try {
+ let params: API.SaveUserResumeCredentialCommand = {
+ typeCode: form.typeCode,
+ code: form.code,
+ isForever: form.isForever,
+ startDate: form.isForever ? '' : dayjs(form.startDate).format('YYYY-MM-DD 00:00:00'),
+ endDate: form.isForever ? '' : 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.value ? '缂栬緫鎴愬姛' : '娣诲姞鎴愬姛', {
+ onClosed() {
+ goBack();
+ updateUserResumeCredentials();
+ },
+ });
+ }
+ } catch (error) {}
+}
</script>
<style lang="scss">
@import '@/styles/common.scss';
-.nut-form .nut-cell.bole-form-item:not(.alignTop),
-page .nut-form .nut-cell.bole-form-item:not(.alignTop) {
- align-items: flex-start !important;
-}
-
-.permanent-certificate {
- --nut-form-item-body-slots-text-align: right;
-}
-
-.certificate-upload {
- .certificate-upload-title {
- font-size: 28px;
- padding: 26px 32px 0;
+.mineCertificateAddOrEdit-page-wrapper {
+ .nut-form .nut-cell.bole-form-item:not(.alignTop),
+ page .nut-form .nut-cell.bole-form-item:not(.alignTop) {
+ align-items: flex-start !important;
}
- .nut-form-item__label {
- padding-right: 0;
- font-size: 24px;
- width: 98%;
+ .permanent-certificate {
+ --nut-form-item-body-slots-text-align: right;
+ }
+
+ .certificate-upload {
+ .certificate-upload-title {
+ font-size: 28px;
+ padding: 26px 32px 0;
+ }
+
+ .nut-form-item__label {
+ padding-right: 0;
+ font-size: 24px;
+ width: 98%;
+ }
}
}
</style>
--
Gitblit v1.9.1