This commit is contained in:
zlwu committed 2025-11-11 15:51:11 +08:00
1 parent 4815b4b3cd
commit 6ca85a1b15
12 files changed
+128 -161

No files matched your search

+21 -16
View File
@@ -202,6 +202,7 @@ import {
updateApplication,
getApplicationDetail,
} from '@/api/workStudy.js';
import { getDict } from '@/common/dict.js';
export default {
name: 'WorkStudyApply',
@@ -231,20 +232,14 @@ export default {
remark: '',
},
// 家庭经济情况选项(与web端保持一致)
familyStatusOptions: [
{ value: '特困', label: '特困' },
{ value: '贫困', label: '贫困' },
{ value: '一般', label: '一般' },
{ value: '良好', label: '良好' },
],
// 家庭经济情况选项(字典:jcbt_family_economy_status)
familyStatusOptions: [],
// 家庭经济情况选择器相关
showFamilyStatusPicker: false,
familyStatusIndex: [0],
// uview-ui 2.x 单列选择器:使用纯字符串数组(二维)最稳定
// 格式:[[字符串1, 字符串2, ...]] - 外层数组表示列,内层数组表示选项
familyStatusColumns: [['特困', '贫困', '一般', '良好']],
// uview-ui 2.x 单列选择器:使用纯字符串数组(二维)
familyStatusColumns: [[]],
// 加载状态
loading: false,
@@ -277,6 +272,17 @@ export default {
},
methods: {
async loadFamilyDict() {
try {
const dictData = await getDict('jcbt_family_economy_status');
this.familyStatusOptions = Array.isArray(dictData) ? dictData : [];
this.familyStatusColumns = [this.familyStatusOptions.map(item => item.label)];
} catch (e) {
const fallback = ['特困', '贫困', '一般', '良好'];
this.familyStatusOptions = fallback.map(v => ({ value: v, label: v }));
this.familyStatusColumns = [fallback];
}
},
// 返回上一页
goBack() {
uni.navigateBack();
@@ -292,13 +298,12 @@ export default {
console.log('e.value:', e.value); // 例如:['贫困']
console.log('e.indexs:', e.indexs); // 例如:[1]
// 单列选择器,取第一列的值
// 单列选择器,取第一列的值,并根据label反查字典的value
if (e && e.value && Array.isArray(e.value) && e.value.length > 0) {
const selectedValue = e.value[0]; // 直接获取字符串,如 "贫困"
console.log('选中的值:', selectedValue);
// 直接赋值
this.formData.familyFinancialStatus = selectedValue;
const match = this.familyStatusOptions.find(opt => opt.label === selectedValue);
// 若找到匹配,用字典value,否则用label兜底
this.formData.familyFinancialStatus = match ? (match.value || match.label) : selectedValue;
// 更新索引用于回显
if (e.indexs && Array.isArray(e.indexs)) {
@@ -324,7 +329,7 @@ export default {
try {
// 并行加载数据
const promises = [this.loadPositionData(), this.loadStudentInfo()];
const promises = [this.loadPositionData(), this.loadStudentInfo(), this.loadFamilyDict()];
await Promise.all(promises);
+33 -16
View File
@@ -297,6 +297,7 @@ import {
getCurrentStudentInfo,
getStudentApplicationStatusList,
} from '@/api/workStudy.js';
import { getDict } from '@/common/dict.js';
export default {
name: 'WorkStudyIndex',
@@ -316,22 +317,9 @@ export default {
scopeText: '',
statusText: '',
// 选择器选项
scopeOptions: [
[
{ label: '全部', value: '' },
{ label: '本学院', value: 'COLLEGE' },
{ label: '全校', value: 'UNIVERSITY' },
],
],
statusOptions: [
[
{ label: '全部', value: '' },
{ label: '已发布', value: 'PUBLISHED' },
{ label: '招录中', value: 'RECRUITING' },
{ label: '已暂停', value: 'SUSPENDED' },
],
],
// 选择器选项(字典)
scopeOptions: [[]],
statusOptions: [[]],
// 查询参数
queryParams: {
@@ -412,6 +400,8 @@ export default {
await this.loadStudentInfo();
// 获取学生申请状态列表
await this.loadStudentApplications();
// 加载筛选字典
await this.loadFilterDicts();
// 加载岗位列表
await this.loadPositionList(true);
} catch (error) {
@@ -422,6 +412,33 @@ export default {
});
}
},
// 加载筛选字典
async loadFilterDicts() {
try {
const [scopeDict, statusDict] = await Promise.all([
getDict('jcbt_position_scope'),
getDict('jcbt_position_status'),
]);
const scope = Array.isArray(scopeDict) ? scopeDict : [];
const status = Array.isArray(statusDict) ? statusDict : [];
// 转换为u-picker二维数组格式
this.scopeOptions = [[{ label: '全部', value: '' }, ...scope]];
this.statusOptions = [[{ label: '全部', value: '' }, ...status]];
} catch (e) {
// 保底:维持现状但不报错
this.scopeOptions = [[
{ label: '全部', value: '' },
{ label: '本学院', value: 'COLLEGE' },
{ label: '全校', value: 'UNIVERSITY' },
]];
this.statusOptions = [[
{ label: '全部', value: '' },
{ label: '已发布', value: 'PUBLISHED' },
{ label: '招录中', value: 'RECRUITING' },
{ label: '已暂停', value: 'SUSPENDED' },
]];
}
},
// 获取学生信息
async loadStudentInfo() {
@@ -177,9 +177,7 @@
placeholder="请选择"
style="width: 100%"
>
<el-option label="产出指标" value="产出指标" />
<el-option label="效益指标" value="效益指标" />
<el-option label="满意度指标" value="满意度指标" />
<el-option v-for="dict in cw_indicator_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</template>
</el-table-column>
@@ -192,19 +190,13 @@
style="width: 100%"
>
<template v-if="scope.row.level1Indicator === '产出指标'">
<el-option label="数量指标" value="数量指标" />
<el-option label="质量指标" value="质量指标" />
<el-option label="时效指标" value="时效指标" />
<el-option label="成本指标" value="成本指标" />
<el-option v-for="dict in cw_output_indicator_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</template>
<template v-else-if="scope.row.level1Indicator === '效益指标'">
<el-option label="经济效益指标" value="经济效益指标" />
<el-option label="社会效益指标" value="社会效益指标" />
<el-option label="生态效益指标" value="生态效益指标" />
<el-option label="可持续性指标" value="可持续性指标" />
<el-option v-for="dict in cw_benefit_indicator_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</template>
<template v-else-if="scope.row.level1Indicator === '满意度指标'">
<el-option label="服务对象满意度指标" value="服务对象满意度指标" />
<el-option v-for="dict in cw_satisfaction_indicator_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</template>
</el-select>
</template>
@@ -294,12 +286,16 @@
</template>
<script setup lang="ts" name="MonitoringDialog">
import { ref, reactive, computed, getCurrentInstance, ComponentInternalInstance } from 'vue'
import { ref, reactive, computed, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'
import { getEvaluation, listPerformanceMonitoring, getPerformanceMonitoring, addPerformanceMonitoring, updatePerformanceMonitoring, delPerformanceMonitoring } from '@/api/cw/performanceEvaluation'
import type { PerformanceMonitoringForm } from '@/api/cw/performanceEvaluation'
const { proxy } = getCurrentInstance() as ComponentInternalInstance
// 字典
const { cw_indicator_type, cw_output_indicator_type, cw_benefit_indicator_type, cw_satisfaction_indicator_type } = toRefs<any>(
proxy?.useDict('cw_indicator_type', 'cw_output_indicator_type', 'cw_benefit_indicator_type', 'cw_satisfaction_indicator_type') || {}
)
// ========== 对话框状态 ==========
const dialogVisible = ref(false)
+5 -8
View File
@@ -19,19 +19,14 @@
<el-col :span="6">
<el-form-item label="自评状态" prop="evaluationStatus">
<el-select v-model="queryParams.evaluationStatus" placeholder="请选择自评状态" clearable style="width: 100%">
<el-option label="草稿" value="draft" />
<el-option label="已提交" value="submitted" />
<el-option label="已审核" value="approved" />
<el-option v-for="dict in cw_evaluation_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="自评等级" prop="selfEvaluationLevel">
<el-select v-model="queryParams.selfEvaluationLevel" placeholder="请选择自评等级" clearable style="width: 100%">
<el-option label="优秀" value="优秀" />
<el-option label="良好" value="良好" />
<el-option label="合格" value="合格" />
<el-option label="不合格" value="不合格" />
<el-option v-for="dict in cw_evaluation_level" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -228,7 +223,9 @@ import MonitoringDialog from './components/MonitoringDialog.vue'
const { proxy } = getCurrentInstance() as ComponentInternalInstance
// 加载字典数据
const { cw_evaluation_status } = toRefs<any>(proxy?.useDict('cw_evaluation_status') || {})
const { cw_evaluation_status, cw_evaluation_level } = toRefs<any>(
proxy?.useDict('cw_evaluation_status', 'cw_evaluation_level') || {}
)
const evaluationList = ref<CwProjectPerformanceSelfEvaluationVO[]>([])
const loading = ref(true)
@@ -24,9 +24,7 @@
<el-col :span="6">
<el-form-item label="自评状态" prop="evaluationStatus">
<el-select v-model="queryParams.evaluationStatus" placeholder="请选择自评状态" clearable style="width: 100%">
<el-option label="草稿" value="draft" />
<el-option label="已提交" value="submitted" />
<el-option label="已审核" value="approved" />
<el-option v-for="dict in cw_evaluation_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -35,18 +33,14 @@
<el-col :span="6">
<el-form-item label="自评等级" prop="selfEvaluationLevel">
<el-select v-model="queryParams.selfEvaluationLevel" placeholder="请选择自评等级" clearable style="width: 100%">
<el-option label="优秀" value="优秀" />
<el-option label="良好" value="良好" />
<el-option label="合格" value="合格" />
<el-option label="不合格" value="不合格" />
<el-option v-for="dict in cw_evaluation_level" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="锁定状态" prop="isLocked">
<el-select v-model="queryParams.isLocked" placeholder="请选择锁定状态" clearable style="width: 100%">
<el-option label="未锁定" :value="0" />
<el-option label="已锁定" :value="1" />
<el-option v-for="dict in cw_lock_status" :key="dict.value" :label="dict.label" :value="Number(dict.value)" />
</el-select>
</el-form-item>
</el-col>
@@ -227,7 +221,9 @@ import TableForm from '../evaluation/table-form.vue'
const { proxy } = getCurrentInstance() as ComponentInternalInstance
// 加载字典数据
const { cw_evaluation_status } = toRefs<any>(proxy?.useDict('cw_evaluation_status') || {})
const { cw_evaluation_status, cw_evaluation_level, cw_lock_status } = toRefs<any>(
proxy?.useDict('cw_evaluation_status', 'cw_evaluation_level', 'cw_lock_status') || {}
)
const evaluationList = ref<CwProjectPerformanceSelfEvaluationVO[]>([])
const loading = ref(true)
@@ -99,21 +99,14 @@
<el-col :span="6">
<el-form-item label="学年" prop="academicYear">
<el-select v-model="queryParams.academicYear" placeholder="请选择学年" clearable style="width: 100%">
<el-option label="2024-2025" value="2024-2025" />
<el-option label="2023-2024" value="2023-2024" />
<el-option label="2022-2023" value="2022-2023" />
<el-option v-for="dict in jcbt_academic_year" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择申请状态" clearable style="width: 100%">
<el-option label="草稿" value="DRAFT" />
<el-option label="已提交" value="SUBMITTED" />
<el-option label="审核中" value="REVIEWING" />
<el-option label="已通过" value="APPROVED" />
<el-option label="已拒绝" value="REJECTED" />
<el-option label="已撤回" value="WITHDRAWN" />
<el-option v-for="dict in jcbt_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -138,8 +131,7 @@
<el-col :span="6">
<el-form-item label="申请资助类型" prop="assistanceTypeIds">
<el-select v-model="queryParams.assistanceTypeIds" placeholder="请选择申请资助类型" clearable style="width: 100%">
<el-option label="浙江省学生资助" value="1" />
<el-option label="杭州第一技师学院学生资助" value="2" />
<el-option v-for="dict in jcbt_assistance_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -295,9 +287,7 @@
<el-col :span="12">
<el-form-item label="学年" prop="academicYear">
<el-select v-model="form.academicYear" placeholder="请选择学年" style="width: 100%">
<el-option label="2024-2025" value="2024-2025" />
<el-option label="2023-2024" value="2023-2024" />
<el-option label="2022-2023" value="2022-2023" />
<el-option v-for="dict in jcbt_academic_year" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -379,8 +369,7 @@
<el-col :span="12">
<el-form-item label="申请资助类型" prop="assistanceTypeIds">
<el-select v-model="form.assistanceTypeIds" placeholder="请选择申请资助类型" style="width: 100%" @change="handleAssistanceTypeChange">
<el-option label="浙江省学生资助" value="1" />
<el-option label="杭州第一技师学院学生资助" value="2" />
<el-option v-for="dict in jcbt_assistance_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -390,9 +379,7 @@
</el-row>
<el-form-item label="家庭经济情况" prop="familyEconomyStatus">
<el-select v-model="form.familyEconomyStatus" placeholder="请选择家庭经济情况" style="width: 100%">
<el-option label="特别困难" value="特别困难" />
<el-option label="困难" value="困难" />
<el-option label="一般困难" value="一般困难" />
<el-option v-for="dict in jcbt_family_economy_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="家庭情况摘要" prop="familyEconomySummary">
@@ -575,6 +562,11 @@ import { ElMessageBox, ElMessage } from 'element-plus';
// 数据定义
const { proxy } = getCurrentInstance();
// 字典:资助类型、家庭经济情况
const { jcbt_assistance_type, jcbt_family_economy_status, jcbt_academic_year, jcbt_status } = toRefs<any>(
proxy?.useDict('jcbt_assistance_type', 'jcbt_family_economy_status', 'jcbt_academic_year', 'jcbt_status') || {}
);
// 表单 ref
const applicationFormRef = ref();
const queryFormRef = ref();
@@ -813,13 +805,8 @@ function handleRecognitionTypeChange(value) {
/** 处理申请资助类型选择变化 */
function handleAssistanceTypeChange(value) {
if (value === '1') {
form.value.assistanceTypeNames = '浙江省学生资助';
} else if (value === '2') {
form.value.assistanceTypeNames = '杭州第一技师学院学生资助';
} else {
form.value.assistanceTypeNames = null;
}
const selected = (jcbt_assistance_type?.value || []).find((item: any) => item.value === value);
form.value.assistanceTypeNames = selected ? selected.label : null;
}
/** 表单重置 */
+7 -15
View File
@@ -578,8 +578,7 @@
<el-col :span="12">
<el-form-item label="性别" prop="gender">
<el-select v-model="applicationForm.gender" placeholder="请选择性别" style="width: 100%">
<el-option label="男" value="0" />
<el-option label="女" value="1" />
<el-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -602,19 +601,7 @@
<el-col :span="12">
<el-form-item label="政治面貌" prop="politicalStatus">
<el-select v-model="applicationForm.politicalStatus" placeholder="请选择政治面貌" style="width: 100%">
<el-option label="中共党员" value="1" />
<el-option label="中共预备党员" value="2" />
<el-option label="共青团员" value="3" />
<el-option label="民革党员" value="4" />
<el-option label="民盟盟员" value="5" />
<el-option label="民建会员" value="6" />
<el-option label="民进会员" value="7" />
<el-option label="农工党党员" value="8" />
<el-option label="致公党党员" value="9" />
<el-option label="九三学社社员" value="10" />
<el-option label="台盟盟员" value="11" />
<el-option label="无党派人士" value="12" />
<el-option label="群众" value="13" />
<el-option v-for="dict in xg_political_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -1416,6 +1403,11 @@ import { cancelProcessApply } from '@/api/workflow/instance';
const { proxy } = getCurrentInstance() as any;
const userStore = useUserStore();
// 字典:性别、政治面貌
const { sys_user_sex, xg_political_status } = toRefs<any>(
proxy?.useDict('sys_user_sex', 'xg_political_status') || {}
);
// 表单引用
const applicationFormRef = ref<any>(null);
const applicationQueryForm = ref<any>(null);
@@ -149,8 +149,7 @@
<el-col :span="6">
<el-form-item label="审批状态" prop="status">
<el-select v-model="recordQueryParams.status" placeholder="请选择审批状态" clearable style="width: 100%">
<el-option label="已通过" value="1" />
<el-option label="已拒绝" value="2" />
<el-option v-for="dict in rs_approval_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -293,7 +292,7 @@
</template>
<script setup lang="ts" name="ItineraryChangeApproval">
import { ref, reactive, toRefs, onMounted } from 'vue';
import { ref, reactive, toRefs, onMounted, getCurrentInstance } from 'vue';
import { ElMessage, ElMessageBox } from 'element-plus';
import { useRouter } from 'vue-router';
import animate from '@/animate';
@@ -311,6 +310,10 @@ import SignaturePad from '@/components/SignaturePad/index.vue';
// ==================== 响应式数据 ====================
const { proxy } = getCurrentInstance() as any;
// 字典:审批状态
const { rs_approval_status } = toRefs<any>(proxy?.useDict('rs_approval_status') || {});
const router = useRouter();
const pendingQueryFormRef = ref();
const recordQueryFormRef = ref();
+7 -20
View File
@@ -123,8 +123,7 @@
<el-col :span="12">
<el-form-item label="性别" prop="gender">
<el-select v-model="applicationForm.gender" placeholder="请选择性别" style="width: 100%">
<el-option label="男" value="0" />
<el-option label="女" value="1" />
<el-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -147,19 +146,7 @@
<el-col :span="12">
<el-form-item label="政治面貌" prop="politicalStatus">
<el-select v-model="applicationForm.politicalStatus" placeholder="请选择政治面貌" style="width: 100%">
<el-option label="中共党员" value="1" />
<el-option label="中共预备党员" value="2" />
<el-option label="共青团员" value="3" />
<el-option label="民革党员" value="4" />
<el-option label="民盟盟员" value="5" />
<el-option label="民建会员" value="6" />
<el-option label="民进会员" value="7" />
<el-option label="农工党党员" value="8" />
<el-option label="致公党党员" value="9" />
<el-option label="九三学社社员" value="10" />
<el-option label="台盟盟员" value="11" />
<el-option label="无党派人士" value="12" />
<el-option label="群众" value="13" />
<el-option v-for="dict in xg_political_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -217,11 +204,7 @@
<el-col :span="12">
<el-form-item label="人员类别" prop="personnelCategory">
<el-select v-model="applicationForm.personnelCategory" placeholder="请选择人员类别" style="width: 100%">
<el-option label="教学人员" value="教学人员" />
<el-option label="管理人员" value="管理人员" />
<el-option label="教辅人员" value="教辅人员" />
<el-option label="工勤人员" value="工勤人员" />
<el-option label="其他人员" value="其他" />
<el-option v-for="dict in rs_personnel_category" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -419,6 +402,10 @@ const { proxy } = getCurrentInstance();
const route = useRoute();
const router = useRouter();
// 字典:性别、政治面貌、人员类别
const { sys_user_sex, xg_political_status, rs_personnel_category } = toRefs<any>(
proxy?.useDict('sys_user_sex', 'xg_political_status', 'rs_personnel_category') || {}
);
// 响应式数据
const loading = ref(false);
const formLoading = ref(false);
+7 -18
View File
@@ -310,7 +310,7 @@
</el-form-item>
<el-form-item label="课程类别" prop="category">
<el-select v-model="courseForm.category" placeholder="请选择课程类别" style="width: 100%">
<el-option v-for="dict in categoryOptions" :key="dict.value" :label="dict.label" :value="dict.value" />
<el-option v-for="dict in rs_training_category" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="开始时间" prop="startTime">
@@ -1090,15 +1090,10 @@ const trainingSubTab = ref('application'); // 默认显示培训申请选项卡
const isInitialized = ref(false);
const isDataLoaded = ref(false);
// 课程类别选项
const categoryOptions = ref([
{ value: 'skill', label: '技能培训' },
{ value: 'management', label: '管理培训' },
{ value: 'tech', label: '技术培训' },
{ value: 'safety', label: '安全培训' },
{ value: 'law', label: '法规培训' },
{ value: 'other', label: '其他培训' }
]);
// 课程类别选项改为字典
const { rs_training_category, rs_training_application_status } = toRefs<any>(
proxy?.useDict('rs_training_category', 'rs_training_application_status') || {}
);
// 课程状态选项(计算型)
const getCourseStatusType = (row: CourseVO): string => {
@@ -1214,14 +1209,8 @@ const applicationQueryParams = reactive({
params: {}
});
// 申请状态选项
const applicationStatusOptions = [
{ value: '0', label: '待审核', type: 'warning' },
{ value: '1', label: '已通过', type: 'success' },
{ value: '2', label: '已拒绝', type: 'danger' },
{ value: '3', label: '已取消', type: 'info' },
{ value: '4', label: '已完成', type: 'success' }
];
// 申请状态选项改为字典
const applicationStatusOptions = rs_training_application_status;
// 教师列表数据
const teacherList = ref<
@@ -18,8 +18,7 @@
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option label="有效" value="valid" />
<el-option label="失效" value="invalid" />
<el-option v-for="dict in xg_holiday_stay_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<!-- <el-form-item label="学号" prop="studentNo">
@@ -802,7 +801,9 @@ import {
} from '@/api/xg/xgss/holidayStay/holidayStay/types-sg';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { xg_holiday_type, xg_stay_reason_type, sys_yesno } = toRefs<any>(proxy?.useDict('xg_holiday_type', 'xg_stay_reason_type', 'sys_yesno'));
const { xg_holiday_type, xg_stay_reason_type, sys_yesno, xg_holiday_stay_status } = toRefs<any>(
proxy?.useDict('xg_holiday_type', 'xg_stay_reason_type', 'sys_yesno', 'xg_holiday_stay_status')
);
// 用户store - 用于获取当前登录用户信息,实现权限控制
const userStore = useUserStore();
@@ -23,12 +23,10 @@
<el-col :span="24">
<div class="form-section-title">新实习信息</div>
</el-col>
<el-col :span="12">
<el-col :span="12">
<el-form-item label="实习状态" prop="internshipStatus">
<el-select v-model="form.internshipStatus" placeholder="请选择实习状态" style="width: 100%">
<el-option label="进行中" value="1" />
<el-option label="已完成" value="2" />
<el-option label="中断" value="3" />
<el-option v-for="dict in zsjy_internship_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -65,11 +63,7 @@
<el-col :span="12">
<el-form-item label="单位规模" prop="companyScale">
<el-select v-model="form.companyScale" placeholder="请选择单位规模" clearable style="width: 100%">
<el-option label="20人以下" value="1" />
<el-option label="20-99人" value="2" />
<el-option label="100-499人" value="3" />
<el-option label="500-999人" value="4" />
<el-option label="1000人以上" value="5" />
<el-option v-for="dict in zsjy_company_scale" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -150,9 +144,7 @@
<el-col :span="12">
<el-form-item label="住宿类型" prop="accommodationType">
<el-select v-model="form.accommodationType" placeholder="请选择住宿类型" clearable style="width: 100%">
<el-option label="公司提供" value="1" />
<el-option label="自行租房" value="2" />
<el-option label="其他" value="3" />
<el-option v-for="dict in zsjy_accommodation_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@@ -195,7 +187,7 @@
</template>
<script setup lang="ts" name="ChangeDialog">
import { ref, watch, reactive } from 'vue';
import { ref, watch, reactive, getCurrentInstance, toRefs } from 'vue';
import { ElMessage } from 'element-plus';
import { changeInternshipInfo, getInternshipInfo } from '@/api/zsjy/internship';
import type { InternshipInfoChangeBO, InternshipInfoVO } from '@/api/zsjy/types';
@@ -215,6 +207,11 @@ const emit = defineEmits(['update:modelValue', 'success']);
const visible = ref(false);
const submitLoading = ref(false);
const formRef = ref<FormInstance>();
// 字典
const { proxy } = getCurrentInstance() as any;
const { zsjy_internship_status, zsjy_company_scale, zsjy_accommodation_type } = toRefs<any>(
proxy?.useDict('zsjy_internship_status', 'zsjy_company_scale', 'zsjy_accommodation_type') || {}
);
// 表单数据
const form = reactive<InternshipInfoChangeBO>({