调整登录学生家长关联

This commit is contained in:
ywyonui 2025-06-22 00:18:14 +08:00
parent 9278dcc610
commit 122392cd45
3 changed files with 113 additions and 57 deletions

View File

@ -52,8 +52,8 @@ onLoad(async (data: any) => {
}) })
.catch((err) => {}); .catch((err) => {});
} else { } else {
uni.switchTab({ uni.reLaunch({
url: "/pages/base/message/index", url: "/pages/system/login/login",
}); });
} }
}); });

View File

@ -52,17 +52,29 @@
<u--form label-width="auto"> <u--form label-width="auto">
<u-form-item <u-form-item
label="姓名" label="姓名"
:prop="`students[${index}].xcxm`" :prop="`students[${index}].xsxm`"
required required
borderBottom borderBottom
> >
<u--input <u--input
v-model="student.xcxm" v-model="student.xsxm"
placeholder="请输入子女姓名" placeholder="请输入学生姓名"
border="none" border="none"
inputAlign="right" inputAlign="right"
></u--input> ></u--input>
</u-form-item> </u-form-item>
<u-form-item
label="与学生关系"
:prop="`students[${index}].jzxsgxId`"
required
borderBottom
>
<view @click="openDicPicker(student)" class="flex-row flex-1 justify-end">
<view v-if="!student.jzxsgxId" style="color: rgb(192, 196, 204);">请选择与学生关系</view>
<view v-else>{{ student.jzxsgxmc }}</view>
</view>
</u-form-item>
<u-form-item <u-form-item
label="身份证号" label="身份证号"
:prop="`students[${index}].xssfzh`" :prop="`students[${index}].xssfzh`"
@ -71,7 +83,7 @@
> >
<u--input <u--input
v-model="student.xssfzh" v-model="student.xssfzh"
placeholder="请输入子女身份证号" placeholder="请输入学生身份证号"
border="none" border="none"
inputAlign="right" inputAlign="right"
></u--input> ></u--input>
@ -85,6 +97,9 @@
</view> </view>
<BasicForm @register="register"></BasicForm> <BasicForm @register="register"></BasicForm>
<BasicPicker ref="dicPickerRef" :range="dicOptions" title="请选择与学生关系"
range-key="dictionaryCode" v-model="dicVal" @ok="dicChanged" />
</view> </view>
<template #bottom> <template #bottom>
@ -110,64 +125,92 @@ import { useUserStore } from "@/store/modules/user";
import { useDataStore } from "@/store/modules/data"; import { useDataStore } from "@/store/modules/data";
import {imagUrl} from "@/utils"; import {imagUrl} from "@/utils";
const [register, { getValue }] = useForm({ const dicOptions = ref<any>([[[]]]);
const dicPickerRef = ref();
const dicVal = ref<number[]>([]);
let formSchema: FormsSchema[] = [
{ title: "监护人信息" },
// {
// field: "jzxsgxId",
// label: "",
// component: "BasicPicker",
// componentProps: {
// rangeKey: "dictionaryValue",
// savaKey: "dictionaryCode",
// options: []
// },
// },
{
field: "jzxm",
label: "家长姓名",
component: "BasicInput",
required: true,
componentProps: {},
},
{
field: "jzsj",
label: "家长手机号",
component: "BasicInput",
required: true,
componentProps: {},
},
{
field: "gzdw",
label: "家长工作单位",
component: "BasicInput",
componentProps: {},
},
{
field: "zw",
label: "职务",
component: "BasicInput",
componentProps: {},
},
{
field: "jtzz",
label: "家庭地址",
component: "BasicInput",
componentProps: {},
},
];
const [register, { getValue, setSchema }] = useForm({
formsProps: { labelWidth: 100 }, formsProps: { labelWidth: 100 },
schema: [ schema: formSchema,
{ title: "监护人信息" },
{
field: "jzxsgxId",
label: "与学生关系",
component: "BasicPicker",
componentProps: {
api: dicApi,
param: { pid: 1622287061 },
rangeKey: "dictionaryValue",
savaKey: "dictionaryCode",
},
},
{
field: "jzxm",
label: "家长姓名",
component: "BasicInput",
required: true,
componentProps: {},
},
{
field: "jzsj",
label: "家长手机号",
component: "BasicInput",
required: true,
componentProps: {},
},
{
field: "gzdw",
label: "家长工作单位",
component: "BasicInput",
componentProps: {},
},
{
field: "zw",
label: "职务",
component: "BasicInput",
componentProps: {},
},
{
field: "jtzz",
label: "家庭地址",
component: "BasicInput",
componentProps: {},
},
],
}); });
const students = ref([ const students = ref([
{ {
xcxm: "", xsxm: "",
xssfzh: "", xssfzh: "",
xstx: "", xstx: "",
jzxsgxId: "",
jzxsgxmc: ""
}, },
]); ]);
const curXs = ref(students.value[0]);
const openDicPicker = (xs: any) => {
curXs.value = xs;
dicVal.value = [0];
for (let i = 0; i < dicOptions.value[0].length; i++) {
if (xs.jzxsgxId == dicOptions.value[0][i].dictionaryValue) {
dicVal.value = [i];
break;
}
}
dicPickerRef.value.open();
};
const dicChanged = (dicArr: any) => {
console.log(dicArr);
const dic = dicOptions.value[0][dicArr[0]];
curXs.value.jzxsgxId = dic.dictionaryValue;
curXs.value.jzxsgxmc = dic.dictionaryCode;
}
async function afterRead(event: any, index: number) { async function afterRead(event: any, index: number) {
if (!event.tempFilePaths || event.tempFilePaths.length === 0) { if (!event.tempFilePaths || event.tempFilePaths.length === 0) {
showToast({ title: "图片选择失败", icon: "none" }); showToast({ title: "图片选择失败", icon: "none" });
@ -176,7 +219,8 @@ async function afterRead(event: any, index: number) {
const tempFilePath = event.tempFilePaths[0]; const tempFilePath = event.tempFilePaths[0];
showLoading({ title: "上传中" }); showLoading({ title: "上传中" });
try { try {
const { result } = await attachmentUpload(tempFilePath); const res = await attachmentUpload(tempFilePath);
const result = res.result;
if (result && result.length > 0 && result[0].filePath) { if (result && result.length > 0 && result[0].filePath) {
students.value[index].xstx = result[0].filePath; students.value[index].xstx = result[0].filePath;
console.log(`Student ${index} avatar uploaded:`, result[0].filePath); console.log(`Student ${index} avatar uploaded:`, result[0].filePath);
@ -199,9 +243,11 @@ function handleAvatarClose(index: number) {
function addMoreChildren() { function addMoreChildren() {
students.value.push({ students.value.push({
xcxm: "", xsxm: "",
xssfzh: "", xssfzh: "",
xstx: "", xstx: "",
jzxsgxId: "",
jzxsgxmc: ""
}); });
} }
@ -237,7 +283,7 @@ async function submit() {
showToast({ title: "请上传子女照片", icon: "none" }); showToast({ title: "请上传子女照片", icon: "none" });
return; return;
} }
if (!student.xcxm) { if (!student.xsxm) {
showToast({ title: "请输入子女姓名", icon: "none" }); showToast({ title: "请输入子女姓名", icon: "none" });
return; return;
} }
@ -266,6 +312,15 @@ async function submit() {
console.log(error); console.log(error);
} }
} }
onMounted(async () => {
const resDic = await dicApi({ pid: 1622287061 });
dicOptions.value = [resDic.result];
formSchema[1].componentProps.options = resDic.result;
setSchema(formSchema);
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -106,6 +106,7 @@ export const useUserStore = defineStore({
logout() { logout() {
this.setToken('') this.setToken('')
this.setUser('') this.setUser('')
this.setCurXs({})
this.setAuth([]) this.setAuth([])
}, },
}, },