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..47270ed 100644 --- a/src/api/admin/dict.ts +++ b/src/api/admin/dict.ts @@ -18,14 +18,13 @@ export function getTypeValue(type: string | number) { }); } + // 批量获取字典类型值 export function getDictsByTypes(types: string[]) { return request({ url: '/admin/dict/item/typeList', method: 'post', - data: { - typeList: types, - }, + data: types }); } diff --git a/src/api/admin/user.ts b/src/api/admin/user.ts index e2f8abf..5133fc3 100644 --- a/src/api/admin/user.ts +++ b/src/api/admin/user.ts @@ -143,3 +143,14 @@ export function validatePhone(rule: any, value: any, callback: any, isEdit: bool } }); } + +/** + * 根据角色代码获取用户列表 + */ +export function getUserListByRole(obj: string) { + return request({ + url: '/admin/user/info/roleuser/' + obj, + method: 'get' + }); +} + diff --git a/src/api/asset/loading.ts b/src/api/asset/loading.ts index ae1e312..39ce001 100644 --- a/src/api/asset/loading.ts +++ b/src/api/asset/loading.ts @@ -1,16 +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 index debb406..79842fd 100644 --- a/src/api/finance/financenormalstu.ts +++ b/src/api/finance/financenormalstu.ts @@ -1,26 +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 data 包含 serialNumber 的对象 + * 获取列表 + * @param query 查询参数 */ -export const updateFs = (data: { serialNumber: string }) => { +export function fetchList(query?: any) { return request({ - url: '/finance/financenormalstu/updateFs', - method: 'post', - data, + 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 data 包含 year 和 stuSource 的对象 + * @param obj 对象数据 */ -export const updateAllFS = (data: { year: string; stuSource: string }) => { +export function updateAllFS(obj: any) { return request({ - url: '/finance/financenormalstu/updateAllFS', - method: 'post', - data, + 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/recruitprestudent.ts b/src/api/recruit/recruitprestudent.ts index b9f8677..4546144 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, }); }; @@ -89,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/api/recruit/recruitschoolcode.ts b/src/api/recruit/recruitschoolcode.ts index 6c53b75..1704cc0 100644 --- a/src/api/recruit/recruitschoolcode.ts +++ b/src/api/recruit/recruitschoolcode.ts @@ -18,7 +18,7 @@ export const fetchList = (query?: any) => { */ export const addObj = (obj: any) => { return request({ - url: '/recruit/recruitschoolcode', + url: '/recruit/recruitschoolcode/add', method: 'post', data: obj, }); @@ -30,8 +30,9 @@ export const addObj = (obj: any) => { */ export const getObj = (id: string | number) => { return request({ - url: `/recruit/recruitschoolcode/${id}`, + url: `/recruit/recruitschoolcode/getById`, method: 'get', + params:{id:id} }); }; @@ -41,8 +42,9 @@ export const getObj = (id: string | number) => { */ export const delObj = (id: string | number) => { return request({ - url: `/recruit/recruitschoolcode/${id}`, - method: 'delete', + url: `/recruit/recruitschoolcode/deleteById`, + method: 'post', + data:{id:id} }); }; @@ -52,8 +54,8 @@ export const delObj = (id: string | number) => { */ export const putObj = (obj: any) => { return request({ - url: '/recruit/recruitschoolcode', - method: 'put', + url: '/recruit/recruitschoolcode/edit', + method: 'post', data: obj, }); }; 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/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, }); }; diff --git a/src/api/recruit/recruitstudentplangroup.ts b/src/api/recruit/recruitstudentplangroup.ts index df62c43..03cf67b 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', @@ -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/api/recruit/recruitstudentschool.ts b/src/api/recruit/recruitstudentschool.ts index 516b980..154970b 100644 --- a/src/api/recruit/recruitstudentschool.ts +++ b/src/api/recruit/recruitstudentschool.ts @@ -54,7 +54,7 @@ export const areaSonList = (query?: any) => { */ export const addObj = (obj: any) => { return request({ - url: '/recruit/recruitstudentschool', + url: '/recruit/recruitstudentschool/add', method: 'post', data: obj, }); @@ -66,8 +66,9 @@ export const addObj = (obj: any) => { */ export const getObj = (id: string | number) => { return request({ - url: `/recruit/recruitstudentschool/${id}`, + url: `/recruit/recruitstudentschool/getById`, method: 'get', + params:{id:id} }); }; @@ -77,8 +78,9 @@ export const getObj = (id: string | number) => { */ export const delObj = (id: string | number) => { return request({ - url: `/recruit/recruitstudentschool/${id}`, - method: 'delete', + url: `/recruit/recruitstudentschool/deleteByid`, + method: 'post', + data:{id:id} }); }; @@ -88,8 +90,8 @@ export const delObj = (id: string | number) => { */ export const putObj = (obj: any) => { return request({ - url: '/recruit/recruitstudentschool', - method: 'put', + url: '/recruit/recruitstudentschool/edit', + method: 'post', data: obj, }); }; diff --git a/src/api/recruit/recruitstudentsignup.ts b/src/api/recruit/recruitstudentsignup.ts index bf1b79f..010ad66 100644 --- a/src/api/recruit/recruitstudentsignup.ts +++ b/src/api/recruit/recruitstudentsignup.ts @@ -162,7 +162,7 @@ export const fetchListStuDorm = (query?: any) => { */ export const addObj = (obj: any) => { return request({ - url: '/recruit/recruitstudentsignup', + url: '/recruit/recruitstudentsignup/add', method: 'post', data: obj, }); @@ -289,8 +289,8 @@ export const delFw = (id: string | number) => { */ export const putObj = (obj: any) => { return request({ - url: '/recruit/recruitstudentsignup', - method: 'put', + url: '/recruit/recruitstudentsignup/edit', + method: 'post', data: obj, }); }; @@ -460,7 +460,7 @@ export const BMPGL = (ak: string) => { return new Promise(function (resolve, reject) { window.init = function () { // eslint-disable-next-line - resolve(BMapGL); + // resolve(BMapGL); }; const script = document.createElement('script'); script.type = 'text/javascript'; diff --git a/src/api/stuwork/dormroom.ts b/src/api/stuwork/dormroom.ts index 164aa91..abdeebd 100644 --- a/src/api/stuwork/dormroom.ts +++ b/src/api/stuwork/dormroom.ts @@ -87,15 +87,36 @@ export const fetchDormRoomTreeList = (dormdataType?: string) => { }); }; -/** - * 根据房间号查询宿舍数据 - * @param data 包含 roomNo 的对象 - */ -export const getDataByRoomNo = (data: { roomNo: string }) => { +//宿舍房间 +export function dormRoomList() { + return request({ + url:'/stuwork/dormroom/list', + method:'get' + }) +} + + +export function dormRoomByRoleList() { + return request({ + url:'/stuwork/dormroom/dormRoomByRoleList', + method:'get' + }) +} + +//根据楼号查宿舍 +export function getDormRoomDataByBuildingNo(query: any) { + return request({ + url:'/stuwork/dormroom/getDormRoomDataByBuildingNo', + method:'get', + params: query + }) +} + +export function getDataByRoomNo(data: any) { return request({ url: '/stuwork/dormroom/getDataByRoomNo', - method: 'get', - params: data - }); -}; + method:'get', + params:data + }) +} diff --git a/src/components/DateRangePicker/index.vue b/src/components/DateRangePicker/index.vue new file mode 100644 index 0000000..7394a56 --- /dev/null +++ b/src/components/DateRangePicker/index.vue @@ -0,0 +1,83 @@ + + + + + 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 index 3c6f2a4..80c4684 100644 --- a/src/config/global.ts +++ b/src/config/global.ts @@ -2,23 +2,52 @@ * 全局常量配置 */ -/** - * 角色代码常量 - */ +/*角色标记*/ export const ROLE_CODE = { - ROLE_RECRUIT: 'ROLE_RECRUIT', - ROLE_RECRUIT_SECOND: 'ROLE_RECRUIT_SECOND' + "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 CURRENT_SCHOOL_TERM = '1'; // 默认值,实际应该从后端获取 +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 CURRENT_SCHOOL_YEAR = ''; // 默认值,实际应该从后端获取 +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/index.vue b/src/views/recruit/backSchoolCheckin/index.vue index e97f078..7462fdf 100644 --- a/src/views/recruit/backSchoolCheckin/index.vue +++ b/src/views/recruit/backSchoolCheckin/index.vue @@ -20,10 +20,10 @@
- + - +
@@ -54,4 +54,13 @@ const handleTabClick = (tab: any) => { diff --git a/src/views/recruit/backSchoolCheckin/staticIndex.vue b/src/views/recruit/backSchoolCheckin/staticIndex.vue index a2fef80..e3ff9cb 100644 --- a/src/views/recruit/backSchoolCheckin/staticIndex.vue +++ b/src/views/recruit/backSchoolCheckin/staticIndex.vue @@ -16,12 +16,12 @@ --> diff --git a/src/views/recruit/newstucheckin/index.vue b/src/views/recruit/newstucheckin/index.vue index c0d6c9c..61914ab 100644 --- a/src/views/recruit/newstucheckin/index.vue +++ b/src/views/recruit/newstucheckin/index.vue @@ -19,32 +19,34 @@
- + 查询 - 重置 - - 导出 - + 重置 + +
+ + 导出 + +
+ - + - - - + + + + @@ -88,7 +93,7 @@ - + @@ -125,12 +130,14 @@ 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 } from '/@/api/recruit/newstucheckin' import { getTypeValue } from '/@/api/admin/dict' import request from '/@/utils/request' const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue')) +const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue')) +const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue')) // 使用 Pinia store const userInfoStore = useUserInfo() @@ -147,7 +154,6 @@ const permissions = computed(() => { // 消息提示 hooks const message = useMessage() -const messageBox = useMessageBox() // 表格引用 const tableRef = ref() @@ -255,7 +261,7 @@ const getCheckInStatusData = async () => { const data = await getTypeValue('check_in_status') checkInStatusData.value = data.data || [] } catch (error) { - console.error('获取报到状态字典失败', error) + // 获取报到状态字典失败 } } diff --git a/src/views/recruit/newstucheckin/statistics.vue b/src/views/recruit/newstucheckin/statistics.vue index af50a42..44de9d0 100644 --- a/src/views/recruit/newstucheckin/statistics.vue +++ b/src/views/recruit/newstucheckin/statistics.vue @@ -101,7 +101,7 @@ import { storeToRefs } from 'pinia' import { useUserInfo } from '/@/stores/userInfo' import { useMessage } from '/@/hooks/message' import { getDataStatistics } from '/@/api/recruit/newstucheckin' -import { list } from '/@/api/recruit/recruitstudentplangroup' +import { getList } from '/@/api/recruit/recruitstudentplangroup' import { getDeptList } from '/@/api/basic/basicclass' import { queryAllClass } from '/@/api/basic/basicclass' import axios from 'axios' @@ -153,7 +153,7 @@ const init = async () => { // 查看所有入学年份 const getGradeData = async () => { try { - const data = await list() + const data = await getList() gradeList.value = data.data || [] } catch (error) { console.error('获取入学年份失败', error) diff --git a/src/views/recruit/newstucheckin/stu-check-in.vue b/src/views/recruit/newstucheckin/stu-check-in.vue index 05e6521..6bf2e40 100644 --- a/src/views/recruit/newstucheckin/stu-check-in.vue +++ b/src/views/recruit/newstucheckin/stu-check-in.vue @@ -94,7 +94,7 @@ import { ref, reactive, watch } from 'vue' import { useMessage } from '/@/hooks/message' import { getDataByRoomNo } from "/@/api/stuwork/dormroom" import { fearchRoomStuNum } from "/@/api/stuwork/dormroomstudent" -import { getDictByType } from "/@/api/contract/contract" +import { getDicts } from "/@/api/admin/dict" import { putObj } from '@/api/recruit/newstucheckin' // Emits @@ -222,7 +222,7 @@ const init = (formData: any, pageData: any) => { remoteMethod(formData.roomNo) fearchRoomStuNums(formData.bedNo) } - getDictByType('check_in_status').then(data => { + getDicts('check_in_status').then(data => { checkInStatusData.value = data.data }) console.log("OKKK") diff --git a/src/views/recruit/recruitImitateAdjustBatch/addMNStu.vue b/src/views/recruit/recruitImitateAdjustBatch/addMNStu.vue index 36b6782..c9b6cce 100644 --- a/src/views/recruit/recruitImitateAdjustBatch/addMNStu.vue +++ b/src/views/recruit/recruitImitateAdjustBatch/addMNStu.vue @@ -4,8 +4,9 @@ :close-on-click-modal="false" v-model="visible" append-to-body + width="600px" > - + - + - + - + - + - + + :key="item.majorCode" + :label="item.majorName+' | '+item.learnYear+'年 | '+item.majorCode" + :value="item.majorCode"> @@ -97,9 +98,9 @@ diff --git a/src/views/recruit/recruitexampeople/index.vue b/src/views/recruit/recruitexampeople/index.vue index 7cd2c1e..17ec062 100644 --- a/src/views/recruit/recruitexampeople/index.vue +++ b/src/views/recruit/recruitexampeople/index.vue @@ -27,7 +27,7 @@
- + 查询 - 重置 + 重置
@@ -71,7 +71,7 @@ - + + + + @@ -188,33 +196,19 @@ diff --git a/src/views/recruit/recruitprestudent/static.vue b/src/views/recruit/recruitprestudent/static.vue index 13a32bd..e7f8749 100644 --- a/src/views/recruit/recruitprestudent/static.vue +++ b/src/views/recruit/recruitprestudent/static.vue @@ -30,7 +30,7 @@ :cell-style="tableStyle.cellStyle" :header-cell-style="tableStyle.headerCellStyle" > - + @@ -45,7 +45,7 @@ import { useUserInfo } from '/@/stores/userInfo' import { BasicTableProps, useTable } from '/@/hooks/table' import { useMessage } from '/@/hooks/message' import { fetchListStatic } from '/@/api/recruit/recruitprestudent' -import { list } from '/@/api/recruit/recruitstudentplangroup' +import { getList } from '/@/api/recruit/recruitstudentplangroup' // @ts-ignore import global from '/@/components/tools/commondict.vue' @@ -98,7 +98,7 @@ const { getDataList, tableStyle, downBlobFile } = useTable(state) // 初始化 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 diff --git a/src/views/recruit/recruitschoolcode/detaiform.vue b/src/views/recruit/recruitschoolcode/detaiform.vue index c555b75..073fff9 100644 --- a/src/views/recruit/recruitschoolcode/detaiform.vue +++ b/src/views/recruit/recruitschoolcode/detaiform.vue @@ -2,11 +2,11 @@ - - + - + import { ref, reactive, nextTick } from 'vue' import { ElNotification } from 'element-plus' -import { addObj, getObj, putObj } from '@/api/recruit/recruitschoolcode' -import { list } from "@/api/recruit/recruitstudentplangroup" +import { addObj, getObj, putObj } from '/@/api/recruit/recruitschoolcode' +import { getList } from '/@/api/recruit/recruitstudentplangroup' // Emits const emit = defineEmits<{ @@ -75,10 +75,10 @@ const dataRule = { // 初始化数据 const initData = () => { - list().then((data: any) => { + getList().then((data: any) => { planList.value = data.data if (!dataForm.id) { - dataForm.groupId = planList.value[0]?.id || "" + dataForm.groupId = planList.value[0]?.id || null } }) } @@ -117,7 +117,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/recruitschoolcode/index.vue b/src/views/recruit/recruitschoolcode/index.vue index 3ba7408..3847e6a 100644 --- a/src/views/recruit/recruitschoolcode/index.vue +++ b/src/views/recruit/recruitschoolcode/index.vue @@ -19,7 +19,7 @@
- + 查询 - 重置 + 重置
新增 - diff --git a/src/views/recruit/recruitstudentschool/detaiform.vue b/src/views/recruit/recruitstudentschool/detaiform.vue index b0a6cfe..133d533 100644 --- a/src/views/recruit/recruitstudentschool/detaiform.vue +++ b/src/views/recruit/recruitstudentschool/detaiform.vue @@ -4,7 +4,6 @@ :close-on-click-modal="false" v-model="visible" width="600px" - destroy-on-close > @@ -20,8 +19,8 @@ - - + + { deptList.value = data.data deptList.value.push({ deptCode: "190", deptName: "招生就业处" }) }) - list().then((data: any) => { + getList().then((data: any) => { planList.value = data.data - if (!dataForm.id) { - dataForm.groupId = planList.value[0]?.id || "" - } }) // 获取所有省 areaList({ type: "0", parentId: 112 }).then((res: any) => { @@ -147,21 +143,42 @@ const dataFormSubmit = () => { // 初始化方法 const init = (id: string | null) => { - dataForm.id = id || "" visible.value = true canSubmit.value = true - initData() + dataForm.id = "" + + // 重置表单数据 nextTick(() => { dataFormRef.value?.resetFields() - if (dataForm.id) { - getObj(dataForm.id).then((response: any) => { + }) + + initData() + + // 获取详情数据 + if (id) { + dataForm.id = id + getObj(id).then((response: any) => { + if (response && response.data) { Object.assign(dataForm, response.data) if (dataForm.area) { dataForm.area = String(dataForm.area) } - }) - } - }) + // 确保 deptCode 正确映射(如果 API 返回的是 xy 字段) + if (response.data.xy && !response.data.deptCode) { + dataForm.deptCode = response.data.xy + } + } + }).catch(() => { + // 错误处理 + }) + } else { + // 新增模式:设置默认招生计划 + getList().then((data: any) => { + if (data.data && data.data.length > 0) { + dataForm.groupId = data.data[0]?.id || "" + } + }) + } } // 暴露方法给父组件 diff --git a/src/views/recruit/recruitstudentschool/index.vue b/src/views/recruit/recruitstudentschool/index.vue index c62c103..7f1517f 100644 --- a/src/views/recruit/recruitstudentschool/index.vue +++ b/src/views/recruit/recruitstudentschool/index.vue @@ -35,7 +35,7 @@ 查询 - 重置 + 重置 @@ -63,9 +63,9 @@ > - + @@ -86,7 +86,7 @@ { provinceList.value = areaData.data || [] // 获取招生计划列表 - const planData = await list() + const planData = await getList() planList.value = planData.data || [] if (planList.value.length > 0) { queryForm.groupId = planList.value[0].id diff --git a/src/views/recruit/recruitstudentsignup/DelayPayTimeDialog.vue b/src/views/recruit/recruitstudentsignup/DelayPayTimeDialog.vue index 515d546..8996974 100644 --- a/src/views/recruit/recruitstudentsignup/DelayPayTimeDialog.vue +++ b/src/views/recruit/recruitstudentsignup/DelayPayTimeDialog.vue @@ -2,8 +2,8 @@ { - list().then((data: any) => { + getList().then((data: any) => { planList.value = data.data if (planList.value.length > 0) { dataForm.groupId = planList.value[0].id diff --git a/src/views/recruit/recruitstudentsignup/areaStaticByOther.vue b/src/views/recruit/recruitstudentsignup/areaStaticByOther.vue index 6b34ac1..e7e25d6 100644 --- a/src/views/recruit/recruitstudentsignup/areaStaticByOther.vue +++ b/src/views/recruit/recruitstudentsignup/areaStaticByOther.vue @@ -42,7 +42,7 @@ - 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 5045e84..885f174 100644 --- a/src/views/recruit/recruitstudentsignup/index.vue +++ b/src/views/recruit/recruitstudentsignup/index.vue @@ -1,10 +1,17 @@ @@ -411,10 +425,10 @@
录取专业: - {{ getMajorLabelWithYears(planMajorList, scope.row.confirmedMajor, { key: 'zydm', value: 'zymc' }) }}
+ {{ getMajorLabelWithYears(planMajorList, scope.row.confirmedMajor, { key: 'majorCode', value: 'majorName' }) }}
- 录取时间:{{ dateFormat(scope.row.auditTime, "yyyy-MM-dd HH:mm:ss") }} + 录取时间:{{ dateFormat(scope.row.auditTime) }}
面试结果:{{ getLabelValue(interviewDicList, scope.row.interview) }} @@ -435,7 +449,7 @@ - {{ getLabelValueByProps(deptList, scope.row.xy, { key: 'deptCode', value: 'deptName' }) }} + {{ getLabelValueByProps(deptList, scope.row.deptCode, { key: 'deptCode', value: 'deptName' }) }}
({{scope.row.auditorName}}) @@ -475,71 +489,69 @@
-
-
- - -
+ + - + - + - + - + - + - + - - - - + + + +
- + + diff --git a/src/views/recruit/recruitstudentsignup/indexClass.vue b/src/views/recruit/recruitstudentsignup/indexClass.vue index 72f9a6e..f6490fa 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 8679736..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 }) // 联系人(教职工) @@ -563,7 +563,7 @@ const dataFormSubmit = (submitType: string) => { // 初始化方法 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/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 @@
- + + + + +
+ 新 增 + +
+
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +