Commit f2d8147e authored by 刘斌's avatar 刘斌

fix: 增加板块选项,方便各板块自己处理

parent 6ee070be
...@@ -3,6 +3,24 @@ ...@@ -3,6 +3,24 @@
<van-form @submit="onSubmit" required="auto"> <van-form @submit="onSubmit" required="auto">
<div class="section-card"> <div class="section-card">
<div class="section-title">基本信息</div> <div class="section-title">基本信息</div>
<div class="form-item">
<div class="item-label">所属板块 <span style="color: #ee0a24">*</span></div>
<van-field
v-model="form.plate"
readonly
clickable
name="plateId"
class="custom-field"
placeholder="请选择所属板块"
:rules="[{ required: true, message: '请选择所属板块' }]"
:border="false"
@click="showPlatePicker = true"
>
<template #right-icon>
<van-icon name="arrow-down" color="#969799" size="12" />
</template>
</van-field>
</div>
<div class="form-row-2col"> <div class="form-row-2col">
<div class="form-col"> <div class="form-col">
...@@ -610,6 +628,10 @@ ...@@ -610,6 +628,10 @@
</div> </div>
</van-form> </van-form>
<van-popup v-model:show="showPlatePicker" position="bottom">
<van-picker :columns="plateOptions" @confirm="onPlateConfirm" @cancel="showPlatePicker = false" />
</van-popup>
<van-popup v-model:show="showPoliticalPicker" position="bottom"> <van-popup v-model:show="showPoliticalPicker" position="bottom">
<van-picker :columns="politicalOptions" @confirm="onPoliticalConfirm" @cancel="showPoliticalPicker = false" /> <van-picker :columns="politicalOptions" @confirm="onPoliticalConfirm" @cancel="showPoliticalPicker = false" />
...@@ -728,6 +750,8 @@ interface ResumeItemModel { ...@@ -728,6 +750,8 @@ interface ResumeItemModel {
} }
const form = reactive({ const form = reactive({
plateId: 0,
plate: '',
name: '', name: '',
phoneNumber: '', phoneNumber: '',
gender: '0', gender: '0',
...@@ -804,6 +828,9 @@ const idRules = [ ...@@ -804,6 +828,9 @@ const idRules = [
const ageRules = [{ pattern: /^\d{1,3}$/, message: '年龄格式错误' }]; const ageRules = [{ pattern: /^\d{1,3}$/, message: '年龄格式错误' }];
const showPlatePicker = ref(false);
const plateOptions = ref<{ text: string; value: number }[]>([]);
// 性别与婚姻状况改为单选,不再使用选择器弹窗 // 性别与婚姻状况改为单选,不再使用选择器弹窗
const showPoliticalPicker = ref(false); const showPoliticalPicker = ref(false);
const showBirthPicker = ref(false); const showBirthPicker = ref(false);
...@@ -918,6 +945,30 @@ void [ageRules, politicalOptions, relationOptions, birthValues]; ...@@ -918,6 +945,30 @@ void [ageRules, politicalOptions, relationOptions, birthValues];
// 性别与婚姻状况改为单选,不再需要确认回调 // 性别与婚姻状况改为单选,不再需要确认回调
async function fetchPlateList() {
try {
const { data: responseData } = await axios.get('/api/employee/sysDept/queryPlateList');
if (responseData.success && Array.isArray(responseData.data)) {
plateOptions.value = responseData.data.map((item: { id: number; name: string }) => ({
text: item.name,
value: item.id,
}));
}
} catch (error) {
console.error('Failed to fetch plate list', error);
showFailToast('获取板块列表失败');
}
}
function onPlateConfirm(payload: {
selectedOptions: { text: string; value: number }[];
}) {
const opt = payload.selectedOptions[0];
form.plateId = opt.value;
form.plate = opt.text;
showPlatePicker.value = false;
}
function onPoliticalConfirm(payload: { function onPoliticalConfirm(payload: {
selectedOptions: { text: string; value: string }[]; selectedOptions: { text: string; value: string }[];
}) { }) {
...@@ -1084,6 +1135,8 @@ function saveCache() { ...@@ -1084,6 +1135,8 @@ function saveCache() {
? form.photoList.map((x: any) => ({ url: x?.url, name: x?.name })) ? form.photoList.map((x: any) => ({ url: x?.url, name: x?.name }))
: []; : [];
const data = { const data = {
plateId: form.plateId,
plate: form.plate,
name: form.name, name: form.name,
phoneNumber: form.phoneNumber, phoneNumber: form.phoneNumber,
gender: form.gender, gender: form.gender,
...@@ -1177,6 +1230,7 @@ const saveImmediately = () => { ...@@ -1177,6 +1230,7 @@ const saveImmediately = () => {
}; };
onMounted(() => { onMounted(() => {
fetchPlateList();
loadCache(); loadCache();
const onVisibilityChange = () => { const onVisibilityChange = () => {
if (document.visibilityState === 'hidden') saveImmediately(); if (document.visibilityState === 'hidden') saveImmediately();
...@@ -1247,6 +1301,8 @@ async function onSubmit() { ...@@ -1247,6 +1301,8 @@ async function onSubmit() {
} }
} }
const payload = { const payload = {
plateId: form.plateId,
plate: form.plate,
name: form.name, name: form.name,
phoneNumber: form.phoneNumber, phoneNumber: form.phoneNumber,
gender: form.gender, gender: form.gender,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment