From 8bdd7985d305453e2013f04088139a2560af4813 Mon Sep 17 00:00:00 2001 From: zhoutianchi <1305666981@qq.com> Date: Thu, 15 Jan 2026 11:23:00 +0800 Subject: [PATCH 01/17] 1 --- src/api/recruit/recruitstudentplan.ts | 12 +++ .../recruit/backSchoolCheckin/staticIndex.vue | 2 +- .../recruit/backSchoolCheckin/tabIndex.vue | 10 +- .../recruitImitateAdjustBatch/addMNStu.vue | 40 +++---- .../recruitImitateAdjustBatch/detaiform.vue | 2 +- .../recruitImitateAdjustBatch/mnTable.vue | 10 +- .../recruit/recruitplanmajor/detaiform.vue | 81 +++++++------- src/views/recruit/recruitplanmajor/index.vue | 46 ++++---- .../recruitplanmajor/majorGroupByDept.vue | 4 +- .../enrolplantemplate-form.vue | 26 ++--- src/views/recruit/recruitprestudent/index.vue | 4 +- .../recruit/recruitprestudent/static.vue | 2 +- .../recruit/recruitschoolcode/detaiform.vue | 4 +- .../recruit/recruitstudentplan/index.vue | 8 +- .../detaiform.vue | 2 +- .../recruitstudentschool/detaiform.vue | 4 +- .../recruitstudentsignup/detaiform.vue | 100 +++++++++--------- .../recruit/recruitstudentsignup/index.vue | 14 +-- .../recruitstudentsignup/indexClass.vue | 14 +-- .../recruitstudentsignup/juniorlneStatic.vue | 12 +-- .../recruit/recruitstudentsignup/list.vue | 6 +- .../recruitstudentsignup/majorChange.vue | 18 ++-- .../recruit/recruitstudentsignup/static.vue | 4 +- .../recruit/recruitstudentsignup/update.vue | 2 +- 24 files changed, 215 insertions(+), 212 deletions(-) diff --git a/src/api/recruit/recruitstudentplan.ts b/src/api/recruit/recruitstudentplan.ts index effd89c..57591b2 100644 --- a/src/api/recruit/recruitstudentplan.ts +++ b/src/api/recruit/recruitstudentplan.ts @@ -60,6 +60,18 @@ export const putObj = (obj: any) => { }); }; +/** + * 单字段快速更新 + * @param obj + */ +export const editQuickField = (obj: any) => { + return request({ + url: '/recruit/recruitstudentplan/editQuickField', + method: 'post', + data: obj, + }); +}; + /** diff --git a/src/views/recruit/backSchoolCheckin/staticIndex.vue b/src/views/recruit/backSchoolCheckin/staticIndex.vue index eec4ee0..322a95d 100644 --- a/src/views/recruit/backSchoolCheckin/staticIndex.vue +++ b/src/views/recruit/backSchoolCheckin/staticIndex.vue @@ -53,7 +53,7 @@ {{ getPlanName(scope.row.groupId) }} - + diff --git a/src/views/recruit/backSchoolCheckin/tabIndex.vue b/src/views/recruit/backSchoolCheckin/tabIndex.vue index 76416d8..feb22b7 100644 --- a/src/views/recruit/backSchoolCheckin/tabIndex.vue +++ b/src/views/recruit/backSchoolCheckin/tabIndex.vue @@ -44,9 +44,9 @@ @@ -311,8 +311,8 @@ const getDeptName = (deptCode: string) => { // 获取专业名称 const getMajorName = (majorCode: string) => { - const item = planMajorList.value.find(item => item.zydm === majorCode) - return item ? item.zymc : '' + const item = planMajorList.value.find(item => item.majorCode === majorCode) + return item ? item.majorName : '' } // 获取性别 diff --git a/src/views/recruit/recruitImitateAdjustBatch/addMNStu.vue b/src/views/recruit/recruitImitateAdjustBatch/addMNStu.vue index 36b6782..7e998ff 100644 --- a/src/views/recruit/recruitImitateAdjustBatch/addMNStu.vue +++ b/src/views/recruit/recruitImitateAdjustBatch/addMNStu.vue @@ -40,10 +40,10 @@ @@ -52,10 +52,10 @@ @@ -64,10 +64,10 @@ @@ -76,9 +76,9 @@ + :key="item.majorCode" + :label="item.majorName+' | '+item.learnYear+'年 | '+item.majorCode" + :value="item.majorCode"> @@ -151,10 +151,10 @@ const dataRule = { /** * 判断拟报专业是否已经占用,占用不可选 */ -const isDisable = (zydm: string) => { - if (zydm == dataForm.wishMajorOne - || zydm == dataForm.wishMajorTwo - || zydm == dataForm.wishMajorThree +const isDisable = (majorCode: string) => { + if (majorCode == dataForm.wishMajorOne + || majorCode == dataForm.wishMajorTwo + || majorCode == dataForm.wishMajorThree ) { return true } else { @@ -262,7 +262,7 @@ const dataFormSubmit = () => { // 初始化方法 const init = (id: string | null, groupId: string, batchNo: string) => { - dataForm.id = id || "" + dataForm.id = id || null dataForm.batchNo = batchNo dataForm.groupId = groupId visible.value = true diff --git a/src/views/recruit/recruitImitateAdjustBatch/detaiform.vue b/src/views/recruit/recruitImitateAdjustBatch/detaiform.vue index 7873c81..6c054f5 100644 --- a/src/views/recruit/recruitImitateAdjustBatch/detaiform.vue +++ b/src/views/recruit/recruitImitateAdjustBatch/detaiform.vue @@ -110,7 +110,7 @@ const dataFormSubmit = () => { // 初始化方法 const init = (id: string | null) => { - dataForm.id = id || "" + dataForm.id = id || null visible.value = true canSubmit.value = true initData() diff --git a/src/views/recruit/recruitImitateAdjustBatch/mnTable.vue b/src/views/recruit/recruitImitateAdjustBatch/mnTable.vue index a9d6db0..fbd55b2 100644 --- a/src/views/recruit/recruitImitateAdjustBatch/mnTable.vue +++ b/src/views/recruit/recruitImitateAdjustBatch/mnTable.vue @@ -55,7 +55,7 @@ align="center" label="拟报专业1"> @@ -76,7 +76,7 @@ width="100px" label="拟报专业3"> - - + + - - - - - + + + + + - - + + - - + + {{ item.label }} - - + + - - - - - - + + + + + + + + + + + + @@ -150,51 +150,42 @@ const majorYears = ref([]) const dataForm = reactive({ id: "", groupId: "", - zydm: "", - zymc: "", - zygfmc: "", + majorCode: "", + majorName: "", deptCode: "", - xz: "", - cc: "", + learnYear: "", + majorLevel: "", isZd: "0", isOrder: "0", remarks: "", - offcialZydm: "", + stuworkMajorCode: "", isUnion: "0", tuitionFee: 0, - cityPlanId: null as string | null, - cityPlanIds: [] as string[], - cityPlanName: "", - cityPlanYear: "", sort: 0 }) const dataRule = { - zydm: [ + majorCode: [ { required: true, message: '专业代码不能为空', trigger: 'blur' }, { min: 1, max: 6, message: '专业代码长度不大于6个字符', trigger: 'blur' } ], tuitionFee: [ { required: true, message: '学费不能为空', trigger: 'blur' } ], - zymc: [ + majorName: [ { required: true, message: '专业名称不能为空', trigger: 'blur' }, { min: 1, max: 200, message: '专业名称长度不大于200个字符', trigger: 'blur' } ], - zygfmc: [ - { required: true, message: '专业规范名称不能为空', trigger: 'blur' }, - { min: 1, max: 200, message: '专业规范名称长度不大于200个字符', trigger: 'blur' } - ], groupId: [ { required: true, message: '招生计划不能为空', trigger: 'blur' } ], - xz: [ + learnYear: [ { required: true, message: '学制不能为空', trigger: 'blur' } ], deptCode: [ { required: true, message: '学院不能为空', trigger: 'blur' } ], - cc: [ + majorLevel: [ { required: true, message: '层次不能为空', trigger: 'blur' } ], isOrder: [ @@ -230,7 +221,7 @@ const initData = () => { list().then((data: any) => { planList.value = data.data if (!dataForm.id) { - dataForm.groupId = planList.value[0]?.id || "" + dataForm.groupId = planList.value[0]?.id || null } }) getMajorNameList().then((data: any) => { @@ -287,7 +278,7 @@ const dataFormSubmit = () => { // 初始化方法 const init = (id: string | null) => { - dataForm.id = id || "" + dataForm.id = id || null visible.value = true canSubmit.value = true initData() diff --git a/src/views/recruit/recruitplanmajor/index.vue b/src/views/recruit/recruitplanmajor/index.vue index 624fe39..ed9c1c7 100644 --- a/src/views/recruit/recruitplanmajor/index.vue +++ b/src/views/recruit/recruitplanmajor/index.vue @@ -40,14 +40,14 @@ /> - - + + - - + + - - + + 查询 @@ -83,16 +83,16 @@ {{ getPlanName(scope.row.groupId) }} - - + + - - + + - + + + + + + - - - - - - - - - 图片同步 + + +
+ 新 增 - + 招生名单打包导出 + + 名单导出 + + 图片同步 + +
+
- - - -
+ + :cell-style="tableStyle?.cellStyle" + :header-cell-style="tableStyle?.headerCellStyle"> 退学 + @click="handleUpdate(scope.row.id,scope.row.groupId,scope.row.feeAgency)">退学 @@ -335,7 +347,7 @@ 重新推送 + type="text" icon="el-icon-check" size="small" plain @click="handleRePush(scope.row)">重新推送 信息表 推送市局 + icon="el-icon-upload" size="small" plain @click="handlePushCity(scope.row.id)">推送市局 @@ -414,7 +426,7 @@ {{ getMajorLabelWithYears(planMajorList, scope.row.confirmedMajor, { key: 'zydm', value: 'zymc' }) }}
- 录取时间:{{ dateFormat(scope.row.auditTime, "yyyy-MM-dd HH:mm:ss") }} + 录取时间:{{ dateFormat(scope.row.auditTime) }}
面试结果:{{ getLabelValue(interviewDicList, scope.row.interview) }} @@ -475,20 +487,13 @@ -
-
- + - -
+ @size-change="sizeChangeHandle" + /> @@ -509,37 +514,48 @@ - + - + + From a36ba163321a54154f22cdadab71be97d683d92f Mon Sep 17 00:00:00 2001 From: zhoutianchi <1305666981@qq.com> Date: Thu, 15 Jan 2026 11:54:21 +0800 Subject: [PATCH 03/17] 1 --- src/api/recruit/recruitstudentplangroup.ts | 12 + .../recruit/recruitstudentplangroup/index.vue | 581 +++++++++--------- 2 files changed, 299 insertions(+), 294 deletions(-) diff --git a/src/api/recruit/recruitstudentplangroup.ts b/src/api/recruit/recruitstudentplangroup.ts index df62c43..d0f98e1 100644 --- a/src/api/recruit/recruitstudentplangroup.ts +++ b/src/api/recruit/recruitstudentplangroup.ts @@ -71,3 +71,15 @@ export const putObj = (obj: any) => { data: obj, }); }; + +/** + * 更新 + * @param obj + */ +export const editQuickField = (obj: any) => { + return request({ + url: '/recruit/recruitstudentplangroup/editQuickField', + method: 'post', + data: obj, + }); +}; diff --git a/src/views/recruit/recruitstudentplangroup/index.vue b/src/views/recruit/recruitstudentplangroup/index.vue index 9a1a75a..42afa14 100644 --- a/src/views/recruit/recruitstudentplangroup/index.vue +++ b/src/views/recruit/recruitstudentplangroup/index.vue @@ -16,372 +16,365 @@ --> From a7321e53d728177f2e9a4c5615757bd93dad98ac Mon Sep 17 00:00:00 2001 From: zhoutianchi <1305666981@qq.com> Date: Thu, 15 Jan 2026 13:08:16 +0800 Subject: [PATCH 04/17] 1 --- .../recruitplanmajor/majorGroupByDept.vue | 445 +++++++++--------- 1 file changed, 215 insertions(+), 230 deletions(-) diff --git a/src/views/recruit/recruitplanmajor/majorGroupByDept.vue b/src/views/recruit/recruitplanmajor/majorGroupByDept.vue index a55afb9..77e5103 100644 --- a/src/views/recruit/recruitplanmajor/majorGroupByDept.vue +++ b/src/views/recruit/recruitplanmajor/majorGroupByDept.vue @@ -1,272 +1,257 @@ - + From dce1f82e923ff40bf45e3d8c34159c7d7d395394 Mon Sep 17 00:00:00 2001 From: zhoutianchi <1305666981@qq.com> Date: Thu, 15 Jan 2026 14:57:15 +0800 Subject: [PATCH 05/17] 1 --- src/views/recruit/recruitplanmajor/index.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/recruit/recruitplanmajor/index.vue b/src/views/recruit/recruitplanmajor/index.vue index ed9c1c7..e7f3411 100644 --- a/src/views/recruit/recruitplanmajor/index.vue +++ b/src/views/recruit/recruitplanmajor/index.vue @@ -290,7 +290,8 @@ const init = async () => { // 修改开关 const changeSm = async (row: any) => { try { - await editQuickField(row) + let parmas={id:row.id,sm:row.sm} + await editQuickField(parmas) message.success('修改成功') } catch (error: any) { message.error(error.msg || '修改失败') From 99ee983e084edacf409b03aab0ec0b3d891550b7 Mon Sep 17 00:00:00 2001 From: zhoutianchi <1305666981@qq.com> Date: Thu, 15 Jan 2026 18:38:38 +0800 Subject: [PATCH 06/17] 1 --- src/api/recruit/recruitprestudent.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/api/recruit/recruitprestudent.ts b/src/api/recruit/recruitprestudent.ts index b9f8677..20c9694 100644 --- a/src/api/recruit/recruitprestudent.ts +++ b/src/api/recruit/recruitprestudent.ts @@ -30,7 +30,7 @@ export const fetchListStatic = (query?: any) => { */ export const addObj = (obj: any) => { return request({ - url: '/recruit/recruitprestudent', + url: '/recruit/recruitprestudent/add', method: 'post', data: obj, }); @@ -42,7 +42,7 @@ export const addObj = (obj: any) => { */ export const addObjStu = (obj: any) => { return request({ - url: '/recruit/recruitprestudent/saveStuData', + url: '/recruit/recruitprestudent/add', method: 'post', data: obj, }); @@ -54,8 +54,9 @@ export const addObjStu = (obj: any) => { */ export const getObj = (id: string | number) => { return request({ - url: `/recruit/recruitprestudent/${id}`, + url: `/recruit/recruitprestudent/getById`, method: 'get', + params: {id:id} }); }; @@ -65,8 +66,9 @@ export const getObj = (id: string | number) => { */ export const delObj = (id: string | number) => { return request({ - url: `/recruit/recruitprestudent/${id}`, - method: 'delete', + url: `/recruit/recruitprestudent/deleteById`, + method: 'post', + data:{id:id} }); }; @@ -76,8 +78,8 @@ export const delObj = (id: string | number) => { */ export const putObj = (obj: any) => { return request({ - url: '/recruit/recruitprestudent', - method: 'put', + url: '/recruit/recruitprestudent/edit', + method: 'post', data: obj, }); }; From 7193922637aeda7499cb068b5d322add1340e2f5 Mon Sep 17 00:00:00 2001 From: zhoutianchi <1305666981@qq.com> Date: Thu, 15 Jan 2026 18:46:24 +0800 Subject: [PATCH 07/17] 1 --- src/api/recruit/recruitprestudent.ts | 2 +- src/views/recruit/recruitprestudent/index.vue | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/api/recruit/recruitprestudent.ts b/src/api/recruit/recruitprestudent.ts index 20c9694..4546144 100644 --- a/src/api/recruit/recruitprestudent.ts +++ b/src/api/recruit/recruitprestudent.ts @@ -91,7 +91,7 @@ export const putObj = (obj: any) => { export const sureDJ = (obj: any) => { return request({ url: '/recruit/recruitprestudent/sureDJ', - method: 'put', + method: 'post', data: obj, }); }; diff --git a/src/views/recruit/recruitprestudent/index.vue b/src/views/recruit/recruitprestudent/index.vue index c674430..a0c860b 100644 --- a/src/views/recruit/recruitprestudent/index.vue +++ b/src/views/recruit/recruitprestudent/index.vue @@ -131,7 +131,7 @@ type="success" link icon="CircleCheck" - @click="sureDJ(scope.row.id)" + @click="handllSureDj(scope.row.id)" > 确认对接
@@ -330,7 +330,7 @@ const addOrUpdateHandle = (id?: string | null) => { } // 确认对接 -const sureDJ = async (id: string) => { +const handllSureDj = async (id: string) => { try { await messageBox.confirm('是否确认已对接?请谨慎操作') await sureDJ({ id, isDj: '1' }) From f539466327350427f07db4f0bdf1dbf3c3304ab8 Mon Sep 17 00:00:00 2001 From: zhoutianchi <1305666981@qq.com> Date: Thu, 15 Jan 2026 18:48:25 +0800 Subject: [PATCH 08/17] 1 --- .../recruitstudentplancorrectscoreconfig.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/api/recruit/recruitstudentplancorrectscoreconfig.ts b/src/api/recruit/recruitstudentplancorrectscoreconfig.ts index f3cb553..26aa1bc 100644 --- a/src/api/recruit/recruitstudentplancorrectscoreconfig.ts +++ b/src/api/recruit/recruitstudentplancorrectscoreconfig.ts @@ -30,7 +30,7 @@ export const list = (query?: any) => { */ export const addObj = (obj: any) => { return request({ - url: '/recruit/recruitstudentplancorrectscoreconfig', + url: '/recruit/recruitstudentplancorrectscoreconfig/add', method: 'post', data: obj, }); @@ -42,8 +42,9 @@ export const addObj = (obj: any) => { */ export const getObj = (id: string | number) => { return request({ - url: `/recruit/recruitstudentplancorrectscoreconfig/${id}`, + url: `/recruit/recruitstudentplancorrectscoreconfig/getById`, method: 'get', + params:{id:id} }); }; @@ -53,8 +54,9 @@ export const getObj = (id: string | number) => { */ export const delObj = (id: string | number) => { return request({ - url: `/recruit/recruitstudentplancorrectscoreconfig/${id}`, - method: 'delete', + url: `/recruit/recruitstudentplancorrectscoreconfig/deleteById`, + method: 'post', + data:{id:id} }); }; @@ -64,8 +66,8 @@ export const delObj = (id: string | number) => { */ export const putObj = (obj: any) => { return request({ - url: '/recruit/recruitstudentplancorrectscoreconfig', - method: 'put', + url: '/recruit/recruitstudentplancorrectscoreconfig/edit', + method: 'post', data: obj, }); }; From 3cab9fab59baa4a973b8b268f67d76bb9b06d52f Mon Sep 17 00:00:00 2001 From: guochunsi <1595020186@qq.com> Date: Thu, 15 Jan 2026 19:06:50 +0800 Subject: [PATCH 09/17] =?UTF-8?q?=E6=99=AE=E9=80=9A=E6=8B=9B=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/按钮样式规范.md | 38 +- src/api/admin/dict.ts | 4 +- src/api/asset/loading.ts | 15 + src/api/finance/financenormalstu.ts | 208 ++++ src/api/recruit/recruitstudentplangroup.ts | 2 +- src/components/SearchForm/index.vue | 25 +- src/config/global.ts | 53 ++ src/hooks/dict.ts | 33 +- .../recruit/backSchoolCheckin/staticIndex.vue | 6 +- .../recruit/backSchoolCheckin/statistics.vue | 4 +- .../recruit/backSchoolCheckin/tabIndex.vue | 4 +- .../recruit/newstucheckin/statistics.vue | 4 +- .../recruitImitateAdjustBatch/detaiform.vue | 4 +- .../recruitImitateAdjustBatch/index.vue | 4 +- .../recruit/recruitplanmajor/detaiform.vue | 4 +- src/views/recruit/recruitplanmajor/index.vue | 4 +- .../enrolplantemplate-form.vue | 4 +- src/views/recruit/recruitprestudent/index.vue | 4 +- .../recruit/recruitprestudent/static.vue | 4 +- .../recruit/recruitschoolcode/detaiform.vue | 4 +- src/views/recruit/recruitschoolcode/index.vue | 8 +- .../detaiform.vue | 4 +- .../index.vue | 4 +- .../recruitstudentschool/detaiform.vue | 4 +- .../recruit/recruitstudentschool/index.vue | 6 +- .../DelayPayTimeDialog.vue | 4 +- .../recruitstudentsignup/areaStaticByCZ.vue | 4 +- .../areaStaticByOther.vue | 4 +- .../contanctByDeptStatic.vue | 4 +- .../contanctByUserStatic.vue | 4 +- .../recruitstudentsignup/detaiform.vue | 895 +++++++++++------- .../recruit/recruitstudentsignup/dormFW.vue | 6 +- .../recruitstudentsignup/dorm_analysis.vue | 37 +- .../inSchoolSocreStatic.vue | 4 +- .../recruit/recruitstudentsignup/index.vue | 245 ++--- .../recruitstudentsignup/indexClass.vue | 347 ++++--- .../recruitstudentsignup/juniorlneStatic.vue | 4 +- .../recruit/recruitstudentsignup/list.vue | 143 +-- .../recruitstudentsignup/majorChange.vue | 4 +- .../recruitstudentsignup/schoolStatic.vue | 4 +- .../recruit/recruitstudentsignup/static.vue | 4 +- .../recruit/recruitstudentsignup/studorm.vue | 28 +- .../recruit/recruitstudentsignup/update.vue | 4 +- .../recruitstudentsignupturnover/index.vue | 69 +- .../form.vue | 173 ++++ .../index.vue | 153 +-- 46 files changed, 1561 insertions(+), 1033 deletions(-) create mode 100644 src/api/asset/loading.ts create mode 100644 src/api/finance/financenormalstu.ts create mode 100644 src/config/global.ts create mode 100644 src/views/recruit/recruitstudentsignupturnovermoneychange/form.vue diff --git a/docs/按钮样式规范.md b/docs/按钮样式规范.md index 882fb0f..00790d4 100644 --- a/docs/按钮样式规范.md +++ b/docs/按钮样式规范.md @@ -20,10 +20,11 @@ |---------|------|-------|------|---------| | 主要操作 | `primary` | - | 蓝色实心 | 新增、保存、提交 | | 查询 | `primary` | - | 蓝色实心 | 查询 | -| 重置 | `primary` | ✓ | 蓝色边框 | 重置 | +| 重置 | - | - | 灰色 | 重置 | | 导出操作 | `warning` | ✓ | 橙色边框 | 导出、下载 | | 导入操作 | `primary` | ✓ | 蓝色边框 | 导入、上传 | | 设置操作 | `primary` | ✓ | 蓝色边框 | 设置、配置 | +| 同步操作 | `primary` | ✓ | 蓝色边框 | 同步、连接 | | 状态锁定 | - | - | 灰色 | 状态锁定、解锁 | | 危险操作 | `danger` | - | 红色实心 | 删除、清空 | @@ -39,14 +40,15 @@ ``` ### 2. Plain按钮(边框样式) -- **使用场景**:重置、导出、导入、设置等次要操作 +- **使用场景**:重置、导出、导入、设置、同步等次要操作 - **代码**:`type="primary" plain` 或 `type="warning" plain` ```vue -重置 +重置 导出 导入 设置 +同步 ``` ### 3. 设置按钮 @@ -57,7 +59,15 @@ 设置 ``` -### 4. 默认按钮(灰色) +### 4. 同步按钮 +- **使用场景**:同步、连接等操作 +- **代码**:`type="primary" plain` + +```vue +同步 +``` + +### 5. 默认按钮(灰色) - **使用场景**:状态锁定、解锁等中性操作 - **代码**:不设置 `type` 属性 @@ -65,7 +75,7 @@ 状态锁定 ``` -### 5. 表格操作列按钮(link) +### 6. 表格操作列按钮(link) - **使用场景**:表格操作列,使用 `link` 属性 - **代码**:`link` 属性,配合 `type` 使用 - **说明**:表格内的操作按钮统一使用 `link` 样式,节省空间 @@ -100,16 +110,18 @@ | 设置/配置 | `Setting` | | 锁定/解锁 | `Lock` | | 用户相关 | `User` | -| 调动/转换 | `Switch`| +| 调动/转换 | `Switch` | +| 同步/连接 | `Connection` | ### 使用示例 ```vue 新 增 查询 -重置 +重置 导出 导入 +同步 ``` ## 五、间距 @@ -122,6 +134,7 @@ 重置 导出 导入 +同步 ``` ## 六、完整示例 @@ -149,8 +162,6 @@ 重置 @@ -182,6 +193,15 @@ class="ml10" @click="handleSetting">设置 + + + 同步 + ``` diff --git a/src/api/admin/dict.ts b/src/api/admin/dict.ts index 045cfd7..c168b85 100644 --- a/src/api/admin/dict.ts +++ b/src/api/admin/dict.ts @@ -23,9 +23,7 @@ export function getDictsByTypes(types: string[]) { return request({ url: '/admin/dict/item/typeList', method: 'post', - data: { - typeList: types, - }, + data: types }); } diff --git a/src/api/asset/loading.ts b/src/api/asset/loading.ts new file mode 100644 index 0000000..39ce001 --- /dev/null +++ b/src/api/asset/loading.ts @@ -0,0 +1,15 @@ +import { NextLoading } from '/@/utils/loading'; + +/** + * 显示加载状态 + */ +export const showLoading = () => { + NextLoading.start(); +}; + +/** + * 隐藏加载状态 + */ +export const hideLoading = () => { + NextLoading.done(); +}; diff --git a/src/api/finance/financenormalstu.ts b/src/api/finance/financenormalstu.ts new file mode 100644 index 0000000..79842fd --- /dev/null +++ b/src/api/finance/financenormalstu.ts @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2018-2025, cyweb All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + */ + +import request from '/@/utils/request'; + +/** + * 获取列表 + * @param query 查询参数 + */ +export function fetchList(query?: any) { + return request({ + url: '/finance/financenormalstu/page', + method: 'get', + params: query + }); +} + +/** + * 新增 + * @param obj 对象数据 + */ +export function addObj(obj: any) { + return request({ + url: '/finance/financenormalstu', + method: 'post', + data: obj + }); +} + +/** + * 获取详情 + * @param id ID + */ +export function getObj(id: string | number) { + return request({ + url: '/finance/financenormalstu/' + id, + method: 'get' + }); +} + +/** + * 删除 + * @param id ID + */ +export function delObj(id: string | number) { + return request({ + url: '/finance/financenormalstu/' + id, + method: 'delete' + }); +} + +/** + * 更新 + * @param obj 对象数据 + */ +export function putObj(obj: any) { + return request({ + url: '/finance/financenormalstu', + method: 'put', + data: obj + }); +} + +/** + * 班级提交 + * @param obj 对象数据 + */ +export function classSubmit(obj: any) { + return request({ + url: '/finance/financenormalstu/classSubmit', + method: 'put', + data: obj + }); +} + +/** + * 自动学费 + * @param obj 对象数据 + */ +export function autoXF(obj: any) { + return request({ + url: '/finance/financenormalstu/autoXF', + method: 'put', + data: obj + }); +} + +/** + * 获取学生信息 + * @param obj 对象数据 + */ +export function getStuInfo(obj: any) { + return request({ + url: '/finance/financenormalstu/getStuInfo', + method: 'post', + data: obj + }); +} + +/** + * 班级缴费 + * @param obj 对象数据 + */ +export function fsClass(obj: any) { + return request({ + url: '/finance/financenormalstu/fsClass', + method: 'put', + data: obj + }); +} + +/** + * 学生缴费 + * @param obj 对象数据 + */ +export function stuFs(obj: any) { + return request({ + url: '/finance/financenormalstu/stuFs', + method: 'put', + data: obj + }); +} + +/** + * 学生缴费2 + * @param obj 对象数据 + */ +export function stuFs2(obj: any) { + return request({ + url: '/finance/financePay/stuFs', + method: 'put', + data: obj + }); +} + +/** + * 更新缴费状态 + * @param obj 对象数据,包含 serialNumber + */ +export function updateFs(obj: any) { + return request({ + url: '/finance/financePay/updateFs', + method: 'put', + data: obj + }); +} + +/** + * 批量更新缴费状态 + * @param obj 对象数据 + */ +export function updateAllFS(obj: any) { + return request({ + url: '/finance/financePay/updateFsAll', + method: 'put', + data: obj + }); +} + +/** + * 更新普通缴费状态 + * @param obj 对象数据 + */ +export function updateNoramlFs(obj: any) { + return request({ + url: '/finance/financenormalstu/updateNoramlFs', + method: 'put', + data: obj + }); +} + +/** + * 导出信息 + * @param query 查询参数 + */ +export function exportInfo(query?: any) { + return request({ + url: '/finance/financenormalstu/exportInfo', + method: 'get', + params: query + }); +} + +/** + * 更新班级学费 + * @param obj 对象数据 + */ +export function updateClassXF(obj: any) { + return request({ + url: '/finance/financenormalstu/updateClassXF', + method: 'put', + data: obj + }); +} diff --git a/src/api/recruit/recruitstudentplangroup.ts b/src/api/recruit/recruitstudentplangroup.ts index df62c43..6caee76 100644 --- a/src/api/recruit/recruitstudentplangroup.ts +++ b/src/api/recruit/recruitstudentplangroup.ts @@ -16,7 +16,7 @@ export const fetchList = (query?: any) => { * 列表 * @param query */ -export const list = (query?: any) => { +export const getList = (query?: any) => { return request({ url: '/recruit/recruitstudentplangroup/list', method: 'get', diff --git a/src/components/SearchForm/index.vue b/src/components/SearchForm/index.vue index 95c23a1..17b2d18 100644 --- a/src/components/SearchForm/index.vue +++ b/src/components/SearchForm/index.vue @@ -84,17 +84,40 @@ const checkCollapsibleContent = () => { } // 否则,通过检查隐藏的检测元素是否有内容来判断 - // 需要等待 DOM 渲染完成 + // 需要等待 DOM 渲染完成,可能需要多次尝试以确保数据加载完成 + let retryCount = 0 + const maxRetries = 5 + + const check = () => { nextTick(() => { + setTimeout(() => { if (detectionWrapperRef.value) { // 检查检测元素是否有子元素(排除文本节点) + // 检查是否有 el-form-item 元素(因为表单项会被渲染为 el-form-item) const hasContent = detectionWrapperRef.value.children.length > 0 || + detectionWrapperRef.value.querySelector('.el-form-item') !== null || (!!detectionWrapperRef.value.textContent && detectionWrapperRef.value.textContent.trim() !== '') + + if (hasContent || retryCount >= maxRetries) { hasCollapsibleContent.value = hasContent + } else { + // 如果还没检测到内容且未达到最大重试次数,继续重试 + retryCount++ + setTimeout(check, 100) + } + } else { + if (retryCount < maxRetries) { + retryCount++ + setTimeout(check, 100) } else { hasCollapsibleContent.value = false } + } + }, 50) }) + } + + check() } // 是否有需要折叠的项 diff --git a/src/config/global.ts b/src/config/global.ts new file mode 100644 index 0000000..80c4684 --- /dev/null +++ b/src/config/global.ts @@ -0,0 +1,53 @@ +/** + * 全局常量配置 + */ + +/*角色标记*/ +export const ROLE_CODE = { + "ROLE_ADMIN": "ROLE_ADMIN", //管理员 + "ROLE_SUPPORT_MEMBER": "ROLE_SUPPORT_MEMBER", //后勤维修组人员 + "ROLE_SUPPORT_LEADER": "ROLE_SUPPORT_LEADER", + "ROLE_TRAIN_AUDITOR": "ROLE_TRAIN_AUDITOR", + "ROLE_RECRUIT_SECOND": "ROLE_RECRUIT_SECOND", + "ROLE_RECRUIT": "ROLE_RECRUIT", + "ROLE_TRAIN_MONEY_ARRIVED": "ROLE_TRAIN_MONEY_ARRIVED", //培训处项目申报审批人 +}; + +/** + * 流程类型 + */ +export const PROC_DEF_KEY = { + "TRAIN_PROJECT_MONEY_ARRIVED": "train_project_money_arrived", + "TRAIN_PROJECT_APPROVAL": "train_project_approval", + "ASSETS_TRANSFER": "assetsTransfer", + "ASSET_INVALID": "asset_invalid", + "process": "process", + "processWander": "processWander", +}; + +/*当前学年*/ +export const CURRENT_SCHOOL_YEAR = "2021-2022"; + +/*当前学期*/ +export const CURRENT_SCHOOL_TERM = "2"; + +/** + * 流程状态 + * 0: 等待部门审核 + * 10: 等待部门审批 + * 20: 审批通过 + * -10: 经办人修改 + * -20: 撤销申请 + */ +export const BXSTATUS = { + '0': '待审核', + '10': '待审批', + '20': '通过', + '-10': '驳回修改', + '-20': '撤销' +}; + +/** + * 前端URL + */ +export const FRONT_URL = "https://zhxy.czjsy.com"; diff --git a/src/hooks/dict.ts b/src/hooks/dict.ts index a7f4c9a..779d148 100644 --- a/src/hooks/dict.ts +++ b/src/hooks/dict.ts @@ -1,29 +1,54 @@ import { dict } from '/@/stores/dict'; -import { getDicts } from '/@/api/admin/dict'; +import { getDictsByTypes } from '/@/api/admin/dict'; import { ref, toRefs } from 'vue'; /** * 获取字典数据 + * 支持批量获取,自动使用批量 API 减少请求次数 */ export function useDict(...args: any): any { const res = ref({}); return (() => { + // 初始化所有字典类型为空数组 args.forEach((dictType: String) => { // @ts-ignore res.value[dictType] = []; + }); + + // 分离已缓存和未缓存的字典类型 + const cachedDicts: string[] = []; + const uncachedDicts: string[] = []; + + args.forEach((dictType: String) => { const dicts = dict().getDict(dictType); if (dicts) { // @ts-ignore res.value[dictType] = dicts; + cachedDicts.push(dictType as string); } else { - getDicts(dictType).then((resp) => { + uncachedDicts.push(dictType as string); + } + }); + + // 如果有未缓存的字典,使用批量 API 获取 + if (uncachedDicts.length > 0) { + getDictsByTypes(uncachedDicts).then((resp) => { + uncachedDicts.forEach((dictType: string) => { // @ts-ignore - res.value[dictType] = resp.data.map((p: any) => ({ label: p.label, value: p.value, elTagType: p.listClass, elTagClass: p.cssClass })); + const dictData = resp.data[dictType] || []; + // @ts-ignore + res.value[dictType] = dictData.map((p: any) => ({ + label: p.label, + value: p.value, + elTagType: p.listClass, + elTagClass: p.cssClass + })); // @ts-ignore dict().setDict(dictType, res.value[dictType]); }); + }); } - }); + return toRefs(res.value); })(); } diff --git a/src/views/recruit/backSchoolCheckin/staticIndex.vue b/src/views/recruit/backSchoolCheckin/staticIndex.vue index 322a95d..866c12d 100644 --- a/src/views/recruit/backSchoolCheckin/staticIndex.vue +++ b/src/views/recruit/backSchoolCheckin/staticIndex.vue @@ -66,10 +66,8 @@ - diff --git a/src/views/recruit/recruitstudentsignup/inSchoolSocreStatic.vue b/src/views/recruit/recruitstudentsignup/inSchoolSocreStatic.vue index 9d7b6c1..b9ad54b 100644 --- a/src/views/recruit/recruitstudentsignup/inSchoolSocreStatic.vue +++ b/src/views/recruit/recruitstudentsignup/inSchoolSocreStatic.vue @@ -48,7 +48,7 @@ import { ref, reactive, onMounted } from 'vue' import { useTable } from '/@/hooks/table' import { useMessage } from '/@/hooks/message' import { inSchoolSocreStatic } from '/@/api/recruit/recruitstudentsignup' -import { list } from '/@/api/recruit/recruitstudentplangroup' +import { getList } from '/@/api/recruit/recruitstudentplangroup' import { getDeptListByLevelTwo } from '/@/api/basic/basicdept' // 消息提示 hooks @@ -75,7 +75,7 @@ const init = async () => { try { const [deptResponse, planData] = await Promise.all([ getDeptListByLevelTwo(), - list() + getList() ]) deptCodes.value = deptResponse.data || [] diff --git a/src/views/recruit/recruitstudentsignup/index.vue b/src/views/recruit/recruitstudentsignup/index.vue index 4a13d77..627ea74 100644 --- a/src/views/recruit/recruitstudentsignup/index.vue +++ b/src/views/recruit/recruitstudentsignup/index.vue @@ -33,8 +33,8 @@ - - + + + @@ -269,32 +271,25 @@
新 增 - - 招生名单打包导出 + @click="downZip()">招生名单打包导出 名单导出 + @click="handleExport()">名单导出 图片同步
@@ -303,11 +298,11 @@ + :cell-style="tableStyle.cellStyle" + :header-cell-style="tableStyle.headerCellStyle"> - + - + - + - + - + - + - - - - + + + + @@ -523,8 +518,9 @@ import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent, wat import { storeToRefs } from 'pinia' import { useUserInfo } from '/@/stores/userInfo' import { useMessage, useMessageBox } from '/@/hooks/message' +import { BasicTableProps, useTable } from '/@/hooks/table' import axios from 'axios' -import { list } from '/@/api/recruit/recruitstudentplangroup' +import { getList } from '/@/api/recruit/recruitstudentplangroup' import { delObj, exportZip, @@ -539,21 +535,14 @@ import { pushCity as pushCityApi } from '/@/api/recruit/recruitstudentsignup' import { getLabelValue, getLabelValueByProps, getMajorLabelWithYears } from '/@/utils/dictLabel' -import {getDeptList} from "/@/api/basic/basicclass"; -import {listPlanByCondition as planMajor} from "/@/api/recruit/recruitstudentplan"; -import {getTypeValue, getDictsByTypes} from "/@/api/admin/dict"; -import {getUserListByRole} from "/@/api/admin/user"; -import {queryTeacherBaseByNo} from "/@/api/professional/professionaluser/teacherbase"; - -// ROLE_CODE 常量定义 -const ROLE_CODE = { - ROLE_RECRUIT_SECOND: 'ROLE_RECRUIT_SECOND', - ROLE_RECRUIT: 'ROLE_RECRUIT' -} - -// Loading 函数(如果模块不存在,使用空函数) -const showLoading = () => {} -const hideLoading = () => {} +import { getDeptList } from "/@/api/basic/basicclass"; +import { listPlanByCondition as planMajor } from "/@/api/recruit/recruitstudentplan"; +import { getDictsByTypes } from "/@/api/admin/dict"; +import { getUserListByRole } from "/@/api/admin/user"; +import { queryTeacherBaseByNo } from "/@/api/professional/professionaluser/teacherbase"; +import { useDict } from '/@/hooks/dict' +import { ROLE_CODE } from '/@/config/global' +import { showLoading, hideLoading } from '/@/api/asset/loading' // 定义组件 const TableForm = defineAsyncComponent(() => import('./detaiform.vue')) @@ -628,32 +617,25 @@ const dataForm = reactive({ isBackTz: '' }) -// 数据列表 -const dataList = ref([]) -const pageIndex = ref(1) -const pageSize = ref(10) -const totalPage = ref(0) -const dataListLoading = ref(false) - -// 分页对象(用于 pagination 组件) -const pagination = computed(() => ({ - current: pageIndex.value, - size: pageSize.value, - total: totalPage.value -})) - -// 表格样式(可选) -const tableStyle = ref({ - cellStyle: {}, - headerCellStyle: {} +// 表格状态 +const state: BasicTableProps = reactive({ + queryForm: dataForm, + pageList: async (params: any) => { + const response = await fetchList(params) + return { + data: { + records: response.data.records || [], + total: response.data.total || 0 + } + } + }, + createdIsNeed: false }) -// 弹窗状态 -const addOrUpdateVisible = ref(false) -const majorChangeVisible = ref(false) -const updateVisible = ref(false) -const dormFWRefVisible = ref(false) -const baiduMapVisible = ref(false) +// 使用 table hook +const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTable(state) + +// 弹窗状态(已移除,组件内部通过 v-model="visible" 控制) // 列表数据 const auditorList = ref([]) @@ -666,10 +648,12 @@ const interviewDicList = ref([]) const zlshList = ref([]) const paystatusList = ref([]) +// 字典数据 +const { yes_no_type } = useDict('yes_no_type') + // 静态数据 const isBackTzList = [{ label: '未发放', value: '0' }, { label: '已发放', value: '1' }] const auditStatusList = [{ label: '未录取', value: '-20' }, { label: '待审核', value: '0' }, { label: '已录取', value: '20' }] -const yesNoList = [{ label: '否', value: '0' }, { label: '是', value: '1' }] const cityExamTypeList = [{ label: '待审核', value: '0' }, { label: '通过', value: '1' }, { label: '驳回', value: '2' }] const pushedList = [{ label: '未推送', value: '0' }, { label: '已推送', value: '1' }] const isOutFwList = [{ label: '待确认', value: '0' }, { label: '范围内', value: '1' }, { label: '范围外', value: '2' }] @@ -705,9 +689,9 @@ const remoteTeacherByQuery = (query: string) => { teacherList.value = response.data || [] }).catch(() => { teacherList.value = [] - }) + }) }, 200) - } + } } // 发送图片 @@ -780,18 +764,18 @@ const downZip = () => { // 百度地图 const baiduMap = (row: any) => { - baiduMapVisible.value = true + // 组件内部通过 v-model="visible" 控制显示 nextTick(() => { baiduMapRef.value?.init(row) - }) + }) } // 设置宿舍 const setDormFW = () => { - dormFWRefVisible.value = true + // 组件内部通过 v-model="visible" 控制显示 nextTick(() => { dormFWRef.value?.init() - }) + }) } // 一键判断是否超出住宿范围 @@ -805,7 +789,7 @@ const handleYjOut = () => { }).then(() => { message.success('操作成功') getDataList() - }) + }) } // 导出审核 @@ -871,13 +855,6 @@ const unique = (arr: any[]) => { return arr.filter((item) => !rese.has(item.username) && rese.set(item.username, 1)) } -// 性别 -const getGender = (gender: string) => { - if (gender == '2') return '女' - if (gender == '1') return '男' - return '' -} - // 切换专业 const chanMajor = () => { planMajorList.value = [] @@ -890,62 +867,32 @@ const chanMajor = () => { // 查询 const handleFilter = () => { - pageIndex.value = 1 getDataList() } // 获取数据列表 -const getDataList = () => { - dataList.value = [] - dataListLoading.value = true - fetchList({ - current: pageIndex.value, - size: pageSize.value, - ...dataForm - }).then(response => { - dataList.value = response.data.records - totalPage.value = response.data.total - dataListLoading.value = false - }).catch(() => { - dataListLoading.value = false - }) -} - - // 每页数 -const sizeChangeHandle = (val: number) => { - pageSize.value = val - pageIndex.value = 1 - getDataList() -} - - // 当前页 -const currentChangeHandle = (val: number) => { - pageIndex.value = val - getDataList() -} // 新增 / 修改 const addOrUpdateHandle = (id?: string, type?: number) => { - addOrUpdateVisible.value = true nextTick(() => { - addOrUpdateRef.value?.init(id, type) - }) + // 新增时默认 type=1(可编辑),查看时 type=0(只读),审核时 type=1(可编辑) + const finalType = type !== undefined ? type : (id ? 0 : 1) + addOrUpdateRef.value?.init(id || null, finalType) + }) } // 编辑 const edit = (id: string) => { - updateVisible.value = true nextTick(() => { updateRef.value?.init(id) - }) + }) } // 专业调整 const majorChange = (id: string) => { - majorChangeVisible.value = true nextTick(() => { majorChangeRef.value?.init(id) - }) + }) } // 退学 @@ -955,17 +902,17 @@ const handleUpdate = (id: string, groupId: string, feeAgency: string) => { }).then(() => { message.success('操作成功') getDataList() - }) + }) } -// 删除 + // 删除 const deleteHandle = (id: string) => { messageBox.confirm('是否确认删除本条数据?请谨慎操作').then(() => { return delObj(id) }).then(() => { message.success('删除成功') getDataList() - }) + }) } // 重置表单 @@ -977,10 +924,7 @@ const resetForm = (formName: string) => { // 缴费状态 const getStatus = (type: string) => { - if (type == '0') return '未缴费' - if (type == '5') return '部分缴费' - if (type == '10') return '已缴费' - return '' + return getLabelValue(paystatusList.value, type) } // 推送状态 @@ -1018,7 +962,7 @@ const handlePushCity = (id: string) => { }).then(() => { message.success('推送成功') getDataList() - }) + }) } // 重新推送 @@ -1028,7 +972,7 @@ const handleRePush = (row: any) => { }).then(() => { message.success('推送成功') getDataList() - }) + }) } // 延迟缴费 @@ -1047,7 +991,9 @@ const showPayCode = (row: any) => { // 面试 const interviewForm = (row: any) => { - interviewFormRef.value?.init(row) + nextTick(() => { + interviewFormRef.value?.init(row) + }) } // 初始化 @@ -1058,7 +1004,7 @@ const init = async () => { }) // 获取招生计划列表 - list().then(data => { + getList().then(data => { planList.value = data.data if (planList.value.length > 0) { dataForm.groupId = planList.value[0].id @@ -1067,13 +1013,10 @@ const init = async () => { } }) - // 获取文化程度字典 - getTypeValue('finance_student_source').then(res => { - eduList.value = res.data - }) - - // 批量获取字典数据:面试结果、资料审核状态、缴费状态 - getDictsByTypes(['interview_dic', 'recruit_zlsh', 'recruit_pay_status']).then((res) => { + + // 批量获取字典数据:文化程度、面试结果、资料审核状态、缴费状态 + getDictsByTypes(['finance_student_source','interview_dic', 'recruit_zlsh', 'recruit_pay_status']).then((res) => { + eduList.value = res.data.finance_student_source || [] interviewDicList.value = res.data.interview_dic || [] zlshList.value = res.data.recruit_zlsh || [] paystatusList.value = res.data.recruit_pay_status || [] diff --git a/src/views/recruit/recruitstudentsignup/indexClass.vue b/src/views/recruit/recruitstudentsignup/indexClass.vue index d05fabd..d2bb716 100644 --- a/src/views/recruit/recruitstudentsignup/indexClass.vue +++ b/src/views/recruit/recruitstudentsignup/indexClass.vue @@ -1,9 +1,17 @@ - diff --git a/src/views/recruit/recruitstudentsignup/update.vue b/src/views/recruit/recruitstudentsignup/update.vue index 697f716..cadf814 100644 --- a/src/views/recruit/recruitstudentsignup/update.vue +++ b/src/views/recruit/recruitstudentsignup/update.vue @@ -193,7 +193,7 @@ import { useUserInfo } from '/@/stores/userInfo' import { Session } from '/@/utils/storage' import axios from 'axios' import { getObj, updateInfo } from '@/api/recruit/recruitstudentsignup' -import { list } from "@/api/recruit/recruitstudentplangroup" +import { getList } from "@/api/recruit/recruitstudentplangroup" import { queryAllTeacher } from "@/api/professional/teacherbase" // 使用 Pinia store @@ -529,7 +529,7 @@ const upload6Success = (res: any, file: any) => { // 初始化数据 const initData = () => { - list().then((data: any) => { + getList().then((data: any) => { planList.value = data.data }) // 联系人(教职工) diff --git a/src/views/recruit/recruitstudentsignupturnover/index.vue b/src/views/recruit/recruitstudentsignupturnover/index.vue index 9e60390..6d0feb9 100644 --- a/src/views/recruit/recruitstudentsignupturnover/index.vue +++ b/src/views/recruit/recruitstudentsignupturnover/index.vue @@ -19,7 +19,7 @@
- + 查询 - 重置 + 重置 @@ -65,7 +65,7 @@ {{ getTypeLabel(scope.row.type) }} - + @@ -82,10 +82,9 @@ - + @@ -111,7 +110,7 @@ /> - + @@ -150,9 +149,12 @@ import { ref, reactive, computed, onMounted, defineAsyncComponent } from 'vue' import { storeToRefs } from 'pinia' import { useUserInfo } from '/@/stores/userInfo' import { BasicTableProps, useTable } from '/@/hooks/table' -import { useMessage, useMessageBox } from '/@/hooks/message' +import { useMessage } from '/@/hooks/message' import { fetchList, putObj } from '/@/api/recruit/recruitstudentsignupturnover' -import { list } from '/@/api/recruit/recruitstudentplangroup' +import { getList } from '/@/api/recruit/recruitstudentplangroup' +import type { StateOption } from '/@/components/AuditState/index.vue' + +const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue')) // 使用 Pinia store const userInfoStore = useUserInfo() @@ -169,7 +171,6 @@ const permissions = computed(() => { // 消息提示 hooks const message = useMessage() -const messageBox = useMessageBox() // 表格引用 const tableRef = ref() @@ -182,8 +183,31 @@ const majorChangeVisible = ref(false) // 数据 const planList = ref([]) const typeList = ref([{ label: '专业变更', value: '1' }, { label: '退学', value: '2' }]) -const isMajorChangeList = ref([{ label: '通过', value: '3' }, { label: '驳回', value: '2' }]) -const majorChangeList = ref([{ label: '通过', value: '3' }, { label: '驳回', value: '2' }, { label: '待审核', value: '1' }]) + +// 审核状态选项配置(用于 AuditState 组件和检索条件) +const auditStateOptions = ref([ + { value: '1', label: '待审核', type: 'warning', icon: 'fa-regular fa-clock', effect: 'light' }, + { value: '2', label: '驳回', type: 'danger', icon: 'fa-solid fa-circle-xmark', effect: 'dark' }, + { value: '3', label: '通过', type: 'success', icon: 'fa-solid fa-circle-check', effect: 'dark' } +]) + +// 从 auditStateOptions 派生检索条件列表(只包含 label 和 value) +const majorChangeList = computed(() => { + return auditStateOptions.value.map(item => ({ + label: item.label, + value: item.value + })) +}) + +// 审核弹窗中的选项(只包含通过和驳回) +const isMajorChangeList = computed(() => { + return auditStateOptions.value + .filter(item => item.value === '2' || item.value === '3') + .map(item => ({ + label: item.label, + value: item.value + })) +}) // 查询表单 const queryForm = reactive({ @@ -214,17 +238,6 @@ const getTypeLabel = (type: string) => { return item ? item.label : '' } -// 获取审核状态 -const getMajor = (type: string) => { - if (type == '1') { - return '待审核' - } else if (type == '2') { - return '驳回' - } else if (type == '3') { - return '已通过' - } - return '' -} // 表格状态 const state: BasicTableProps = reactive({ @@ -247,14 +260,14 @@ const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTa // 初始化 const init = async () => { try { - const data = await list() + const data = await getList() planList.value = data.data || [] if (planList.value.length > 0) { queryForm.groupId = planList.value[0].id } getDataList() } catch (error) { - console.error('初始化失败', error) + message.error('初始化失败') } } @@ -290,9 +303,9 @@ const update = async () => { // 重置查询 const resetQuery = () => { searchFormRef.value?.resetFields() - Object.keys(queryForm).forEach(key => { - queryForm[key] = '' - }) + queryForm.groupId = '' + queryForm.search = '' + queryForm.isMajorChange = '' if (planList.value.length > 0) { queryForm.groupId = planList.value[0].id } diff --git a/src/views/recruit/recruitstudentsignupturnovermoneychange/form.vue b/src/views/recruit/recruitstudentsignupturnovermoneychange/form.vue new file mode 100644 index 0000000..488bcef --- /dev/null +++ b/src/views/recruit/recruitstudentsignupturnovermoneychange/form.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/src/views/recruit/recruitstudentsignupturnovermoneychange/index.vue b/src/views/recruit/recruitstudentsignupturnovermoneychange/index.vue index c36f238..3617453 100644 --- a/src/views/recruit/recruitstudentsignupturnovermoneychange/index.vue +++ b/src/views/recruit/recruitstudentsignupturnovermoneychange/index.vue @@ -19,15 +19,24 @@
- + + + + +
+ 新 增 + +
+
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
diff --git a/src/views/recruit/backSchoolCheckin/staticIndex.vue b/src/views/recruit/backSchoolCheckin/staticIndex.vue index 866c12d..e3ff9cb 100644 --- a/src/views/recruit/backSchoolCheckin/staticIndex.vue +++ b/src/views/recruit/backSchoolCheckin/staticIndex.vue @@ -16,12 +16,12 @@ -->