wuzhen update 招生就业相关修改

This commit is contained in:
“wuzhen” committed 2026-06-22 14:50:19 +08:00
1 parent 80cdde97a1
commit 6546732bb2
29 files changed
+1389 -287

No files matched your search

+3 -3
View File
@@ -208,7 +208,7 @@
}
},
{
"path": "pages/xgss/dmdl/dmdl",
"path": "pages/xgss/ssdm/ssdm",
"style": {
"navigationBarTitleText": "宿舍点名",
"navigationBarBackgroundColor": "#0051d9",
@@ -216,14 +216,14 @@
}
},
{
"path": "pages/xgss/dmdl/dmdlCheck",
"path": "pages/xgss/ssdm/ssdmCheck",
"style": {
"navigationBarTitleText": "宿舍点名",
"navigationStyle": "custom"
}
},
{
"path": "pages/xgss/dmdl/dmdlDetail",
"path": "pages/xgss/ssdm/ssdmDetail",
"style": {
"navigationBarTitleText": "点名详情",
"navigationBarBackgroundColor": "#0051d9",
+73 -63
View File
@@ -57,7 +57,7 @@
></u-picker>
</u-form-item>
<u-form-item label="出生日期" prop="birthDate">
<u-form-item label="出生日期" prop="birthDate" required>
<u-input
v-model="formData.birthDate"
placeholder="选择出生日期"
@@ -71,15 +71,15 @@
<u-input v-model="formData.phone1" placeholder="请输入联系电话" />
</u-form-item>
<u-form-item label="备用电话" prop="phone2">
<u-form-item label="备用电话" prop="phone2" required>
<u-input v-model="formData.phone2" placeholder="请输入备用电话" />
</u-form-item>
<u-form-item label="民族" prop="nation">
<u-form-item label="民族" prop="nation" required>
<u-input v-model="formData.nation" placeholder="请输入民族" />
</u-form-item>
<u-form-item label="是否住宿" prop="isBoarding">
<u-form-item label="是否住宿" prop="isBoarding" required>
<view
@click="showBoardingPicker"
@tap="showBoardingPicker"
@@ -102,11 +102,11 @@
></u-picker>
</u-form-item>
<u-form-item label="健康状况" prop="healthStatus">
<u-form-item label="健康状况" prop="healthStatus" required>
<u-input v-model="formData.healthStatus" placeholder="请输入健康状况" />
</u-form-item>
<u-form-item label="家庭住址" prop="homeAddress">
<u-form-item label="家庭住址" prop="homeAddress" required>
<u-input
v-model="formData.homeAddress"
type="textarea"
@@ -123,19 +123,19 @@
<text class="title-text">学业信息</text>
</view>
<u-form-item label="毕业中学" prop="middleSchool">
<u-form-item label="毕业中学" prop="middleSchool" required>
<u-input v-model="formData.middleSchool" placeholder="请输入毕业中学全称" />
</u-form-item>
<u-form-item label="准考证号" prop="examNumber">
<u-form-item label="准考证号" prop="examNumber" required>
<u-input v-model="formData.examNumber" placeholder="请输入准考证号" />
</u-form-item>
<u-form-item label="中考地区" prop="examRegion">
<u-form-item label="中考地区" prop="examRegion" required>
<u-input v-model="formData.examRegion" placeholder="请输入中考地区" />
</u-form-item>
<u-form-item label="中考满分" prop="totalScoreFull">
<u-form-item label="中考满分" prop="totalScoreFull" required>
<u-number-box
v-model="formData.totalScoreFull"
:min="0"
@@ -144,7 +144,7 @@
></u-number-box>
</u-form-item>
<u-form-item label="中考成绩" prop="totalScore">
<u-form-item label="中考成绩" prop="totalScore" required>
<u-number-box
v-model="formData.totalScore"
:min="0"
@@ -153,7 +153,7 @@
></u-number-box>
</u-form-item>
<u-form-item label="语文成绩" prop="chineseScore">
<u-form-item label="语文成绩" prop="chineseScore" required>
<u-number-box
v-model="formData.chineseScore"
:min="0"
@@ -162,7 +162,7 @@
></u-number-box>
</u-form-item>
<u-form-item label="数学成绩" prop="mathScore">
<u-form-item label="数学成绩" prop="mathScore" required>
<u-number-box
v-model="formData.mathScore"
:min="0"
@@ -171,7 +171,7 @@
></u-number-box>
</u-form-item>
<u-form-item label="英语成绩" prop="englishScore">
<u-form-item label="英语成绩" prop="englishScore" required>
<u-number-box
v-model="formData.englishScore"
:min="0"
@@ -180,7 +180,7 @@
></u-number-box>
</u-form-item>
<u-form-item label="科学成绩" prop="scienceScore">
<u-form-item label="科学成绩" prop="scienceScore" required>
<u-number-box
v-model="formData.scienceScore"
:min="0"
@@ -189,7 +189,7 @@
></u-number-box>
</u-form-item>
<u-form-item label="社会成绩" prop="socialScore">
<u-form-item label="社会成绩" prop="socialScore" required>
<u-number-box
v-model="formData.socialScore"
:min="0"
@@ -198,7 +198,7 @@
></u-number-box>
</u-form-item>
<u-form-item label="体育成绩" prop="peScore">
<u-form-item label="体育成绩" prop="peScore" required>
<u-number-box
v-model="formData.peScore"
:min="0"
@@ -238,7 +238,7 @@
></u-picker>
</u-form-item>
<u-form-item label="学院代码" prop="collegeId">
<u-form-item label="学院代码" prop="collegeId" required>
<u-input
v-model="formData.collegeId"
placeholder="学院代码将自动填入"
@@ -265,7 +265,7 @@
></u-picker>
</u-form-item>
<u-form-item label="专业代码" prop="majorCode">
<u-form-item label="专业代码" prop="majorCode" required>
<u-input
v-model="formData.majorCode"
placeholder="专业代码将自动填入"
@@ -273,7 +273,7 @@
/>
</u-form-item>
<u-form-item label="校服尺码" prop="uniformSize">
<u-form-item label="校服尺码" prop="uniformSize" required>
<view
@click="showUniformSizePicker"
@tap="showUniformSizePicker"
@@ -444,6 +444,28 @@ import { getDict } from '@/common/dict.js';
import { request } from '@/common/request.js';
import { getCollegeList, getMajorsByCollegeId } from '@/api/enrollment.js';
const idCardPattern = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
const phonePattern = /^1[3-9]\d{9}$/;
const requiredText = (label) => [{ required: true, message: `${label}不能为空`, trigger: ['blur', 'change'] }];
const requiredNumber = (label, min = 0, max) => [
{
validator: (rule, value, callback) => {
if (value === null || value === undefined || value === '') {
callback(new Error(`${label}不能为空`));
} else if (Number(value) < min) {
callback(new Error(`${label}不能小于${min}`));
} else if (max !== undefined && Number(value) > max) {
callback(new Error(`${label}不能大于${max}`));
} else {
callback();
}
},
trigger: ['blur', 'change'],
},
];
export default {
name: 'EnrollmentIndex',
data() {
@@ -535,28 +557,43 @@ export default {
majorPickerColumns: [],
uniformSizePickerColumns: [],
// 表单验证规则
// 表单验证规则(特长爱好、获奖情况除外)
rules: {
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
name: requiredText('姓名'),
idCard: [
{ required: true, message: '身份证号不能为空', trigger: 'blur' },
{
pattern:
/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
message: '身份证号格式不正确',
trigger: 'blur',
},
{ pattern: idCardPattern, message: '身份证号格式不正确', trigger: 'blur' },
],
gender: [{ required: true, message: '性别不能为空', trigger: 'change' }],
gender: requiredText('性别'),
birthDate: requiredText('出生日期'),
phone1: [
{ required: true, message: '联系电话不能为空', trigger: 'blur' },
{ pattern: /^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' },
{ pattern: phonePattern, message: '手机号码格式不正确', trigger: 'blur' },
],
phone2: [
{ pattern: /^$|^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' },
{ required: true, message: '备用电话不能为空', trigger: 'blur' },
{ pattern: phonePattern, message: '手机号码格式不正确', trigger: 'blur' },
],
collegeName: [{ required: true, message: '所属学院不能为空', trigger: 'change' }],
appliedMajor: [{ required: true, message: '报考专业不能为空', trigger: 'change' }],
nation: requiredText('民族'),
isBoarding: requiredText('是否住宿'),
healthStatus: requiredText('健康状况'),
homeAddress: requiredText('家庭住址'),
middleSchool: requiredText('毕业中学'),
examNumber: requiredText('准考证号'),
examRegion: requiredText('中考地区'),
totalScoreFull: requiredNumber('中考满分', 100, 1000),
totalScore: requiredNumber('中考成绩', 0),
chineseScore: requiredNumber('语文成绩', 0),
mathScore: requiredNumber('数学成绩', 0),
englishScore: requiredNumber('英语成绩', 0),
scienceScore: requiredNumber('科学成绩', 0),
socialScore: requiredNumber('社会成绩', 0),
peScore: requiredNumber('体育成绩', 0),
collegeName: requiredText('所属学院'),
collegeId: requiredText('学院代码'),
appliedMajor: requiredText('报考专业'),
majorCode: requiredText('专业代码'),
uniformSize: requiredText('校服尺码'),
},
};
},
@@ -565,21 +602,10 @@ export default {
try {
console.log('🚀 开始页面初始化...');
// 先初始化兜底数据,确保页面能正常显示
this.initDefaultDictData();
this.initDefaultCollegeData();
console.log('✅ 兜底数据初始化完成:', {
genderOptions: this.genderOptions.length,
collegeOptions: this.collegeOptions.length,
majorOptions: this.majorOptions.length,
});
// 并行加载数据,即使部分失败也不影响页面显示
// 并行加载数据
const results = await Promise.allSettled([
this.initDictData(),
this.loadCollegeOptions(),
this.initMajorOptions(),
]);
console.log('📋 异步数据加载结果:', results);
@@ -606,9 +632,7 @@ export default {
console.log('✅ 页面初始化完成,准备就绪');
} catch (error) {
console.error('❌ 页面初始化失败:', error);
// 确保使用兜底数据
this.initDefaultDictData();
this.initDefaultCollegeData();
this.$forceUpdate();
}
},
@@ -798,15 +822,8 @@ export default {
}
} catch (error) {
console.error('学院数据加载失败:', error);
// 设置兜底学院数据
this.collegeOptions = [
{ deptId: 1, deptName: '机械工程学院', deptCategory: 'JX' },
{ deptId: 2, deptName: '电气工程学院', deptCategory: 'DQ' },
{ deptId: 3, deptName: '信息工程学院', deptCategory: 'XX' },
{ deptId: 4, deptName: '经济管理学院', deptCategory: 'JG' },
{ deptId: 5, deptName: '建筑工程学院', deptCategory: 'JZ' },
];
console.log('✅ 已使用默认学院数据(兜底方案)');
this.collegeOptions = [];
uni.showToast({ title: '学院数据加载失败', icon: 'none' });
}
// 更新学院picker的columns数据
@@ -1174,13 +1191,6 @@ export default {
this.majorOptions = [];
}
// 如果API加载失败或无数据,使用兜底专业数据
if (!this.majorOptions || this.majorOptions.length === 0) {
const defaultMajors = this.getDefaultMajorsByCollegeId(collegeId);
this.majorOptions = defaultMajors;
console.log('✅ 已使用默认专业数据(兜底方案):', defaultMajors);
}
// 更新专业picker的columns数据
this.majorPickerColumns = [this.majorOptions.map((item) => item.label)];
console.log('✅ 专业picker columns更新完成:', {
+1 -1
View File
@@ -1220,7 +1220,7 @@ export default {
// 跳转到宿舍点名页面
gotoDormRollCall() {
uni.navigateTo({
url: '/pages/xgss/dmdl/dmdl',
url: '/pages/xgss/ssdm/ssdm',
});
},