2025-08-13 16:35:20 +08:00

168 lines
3.9 KiB
Vue

<template>
<BasicLayout>
<view class="p-15">
<view v-if="education.xl.length > 0">
<template v-for="(item, index) in education.xl" :key="index">
<view class="po-re mb-15">
<BasicForm
v-model="item.value"
:schema="schema"
:formsProps="{ labelWidth: 100 }"
/>
<view
@click="deleteMemberFamily(index as number, item.value)"
class="delete-icon"
>
<BasicIcon type="clear" size="30" />
</view>
</view>
</template>
</view>
<view
class="flex-row items-center justify-center pb-10 pt-5"
style="border: 1px solid #e8e8e8"
@click="addEducation"
>
<uni-icons type="plus" size="16" color="#447ADE"></uni-icons>
<view class="ml-5 cor-447ADE">新增</view>
</view>
</view>
<template #bottom>
<view class="flex-row items-center pb-10 pt-5">
<u-button
text="上一步"
class="ml-15 mr-7"
:plain="true"
@click="navigateBack"
/>
<u-button
text="下一步"
class="mr-15 mr-7"
type="primary"
@click="submit"
/>
</view>
</template>
</BasicLayout>
</template>
<script lang="ts" setup>
import { navigateTo, navigateBack } from "@/utils/uniapp";
import { cloneDeep, map } from "lodash";
import { jtcyFindPageApi } from "@/api/base/jtcyApi";
import { useUserStore } from "@/store/modules/user";
import { useDicStore } from "@/store/modules/dic";
import { showToast, showLoading, hideLoading } from "@/utils/uniapp";
const { findByPid } = useDicStore();
const { getJs, setJs } = useUserStore();
const schema = reactive<FormsSchema[]>([
{
field: "jtcygxId",
label: "与本人关系",
component: "BasicPicker",
componentProps: {
api: findByPid,
param: { pid: 1066646708 },
rangeKey: "dictionaryValue",
savaKey: "dictionaryCode",
},
},
{
field: "xm",
label: "姓名",
component: "BasicInput",
componentProps: {},
},
{
field: "cstime",
label: "出生日期",
component: "BasicDateTimes",
componentProps: {},
},
{
field: "gzdw",
label: "工作单位",
component: "BasicInput",
componentProps: {},
},
{
field: "zw",
label: "职务",
component: "BasicInput",
componentProps: {},
},
{
field: "lxdh",
label: "联系电话",
component: "BasicInput",
componentProps: {},
},
]);
const education = reactive<any>({
xl: [{ value: {} }],
});
function addEducation() {
education.xl.push({ value: {} });
}
function deleteMemberFamily(index: number, item: any) {
const list = cloneDeep(education.xl);
list.splice(index, 1);
education.xl = list;
}
function submit() {
showLoading({ title: "正在加载档案材料信息..." });
setJs({
...getJs,
jtcyList: map(education.xl, (item) => {
return item.value;
}),
});
// navigateTo("/pages/view/hr/teacherProfile/PersonalHonor");
navigateTo("/pages/view/hr/teacherProfile/RecordMaterials");
hideLoading();
}
onMounted(async () => {
if (!getJs.jtcyList || !getJs.jtcyList.length) {
const res = await jtcyFindPageApi({
jsId: getJs.id,
page: 1,
size: 100,
});
getJs.jtcyList = res.rows || [];
}
if (getJs.jtcyList && getJs.jtcyList.length > 0) {
education.xl = map(getJs.jtcyList, (item) => {
return { value: item };
});
// 显示数据加载完成提示
showToast({
title: `已加载 ${getJs.jtcyList.length} 条家庭成员信息`,
icon: "success",
duration: 2000
});
} else {
// 显示无数据提示
showToast({
title: "暂无家庭成员信息,请添加",
icon: "none",
duration: 2000
});
}
})
</script>
<style>
.delete-icon {
position: absolute;
right: -13px;
top: -14px;
z-index: 1;
}
</style>