diff --git a/src/api/recruit/recruitMajorCategory.ts b/src/api/recruit/recruitMajorCategory.ts new file mode 100644 index 0000000..ec56fb7 --- /dev/null +++ b/src/api/recruit/recruitMajorCategory.ts @@ -0,0 +1,30 @@ +import request from "/@/utils/request" + +// ========== 基础CRUD接口 ========== + +/** + * 分页查询列表数据 + * @param query - 查询参数对象 + * @returns Promise<分页数据> + */ +export function fetchList(query?: Object) { + return request({ + url: '/recruit/recruitMajorCategory/page', + method: 'get', + params: query + }) +} + +/** + * 获取专业类目树结构 + * @param obj - 查询参数对象(包含ID等) + * @returns Promise<数据详情> + */ +export function majorCateTree(obj?: Object) { + return request({ + url: '/recruit/recruitMajorCategory/majorCateTree', + method: 'get', + params: obj + }) +} + diff --git a/src/api/recruit/recruitPolicyFile.ts b/src/api/recruit/recruitPolicyFile.ts new file mode 100644 index 0000000..a27385b --- /dev/null +++ b/src/api/recruit/recruitPolicyFile.ts @@ -0,0 +1,106 @@ +import request from "/@/utils/request" + +// ========== 基础CRUD接口 ========== + +/** + * 分页查询列表数据 + * @param query - 查询参数对象 + * @returns Promise<分页数据> + */ +export function fetchList(query?: Object) { + return request({ + url: '/recruit/recruitPolicyFile/page', + method: 'get', + params: query + }) +} + +/** + * 新增数据 + * @param obj - 要新增的数据对象 + * @returns Promise - 操作结果 + */ +export function addObj(obj?: Object) { + return request({ + url: '/recruit/recruitPolicyFile', + method: 'post', + data: obj + }) +} + +/** + * 获取详情数据 + * @param obj - 查询参数对象(包含ID等) + * @returns Promise<数据详情> + */ +export function getObj(obj?: Object) { + return request({ + url: '/recruit/recruitPolicyFile/details', + method: 'get', + params: obj + }) +} + +/** + * 批量删除数据 + * @param ids - 要删除的ID数组 + * @returns Promise<操作结果> + */ +export function delObjs(ids?: Object) { + return request({ + url: '/recruit/recruitPolicyFile', + method: 'delete', + data: ids + }) +} + +/** + * 更新数据 + * @param obj - 要更新的数据对象 + * @returns Promise<操作结果> + */ +export function putObj(obj?: Object) { + return request({ + url: '/recruit/recruitPolicyFile', + method: 'put', + data: obj + }) +} + +// ========== 工具函数 ========== + +/** + * 验证字段值唯一性 + * @param rule - 验证规则对象 + * @param value - 要验证的值 + * @param callback - 验证回调函数 + * @param isEdit - 是否为编辑模式 + * + * @example + * // 在表单验证规则中使用 + * fieldName: [ + * { + * validator: (rule, value, callback) => { + * validateExist(rule, value, callback, form.id !== ''); + * }, + * trigger: 'blur', + * }, + * ] + */ +export function validateExist(rule: any, value: any, callback: any, isEdit: boolean) { + // 编辑模式下跳过验证 + if (isEdit) { + return callback(); + } + + // 查询是否存在相同值 + getObj({ [rule.field]: value }).then((response) => { + const result = response.data; + if (result !== null && result.length > 0) { + callback(new Error('数据已经存在')); + } else { + callback(); + } + }); +} + diff --git a/src/api/recruit/recruitSchoolHistory.ts b/src/api/recruit/recruitSchoolHistory.ts new file mode 100644 index 0000000..3e1c2a2 --- /dev/null +++ b/src/api/recruit/recruitSchoolHistory.ts @@ -0,0 +1,106 @@ +import request from "/@/utils/request" + +// ========== 基础CRUD接口 ========== + +/** + * 分页查询列表数据 + * @param query - 查询参数对象 + * @returns Promise<分页数据> + */ +export function fetchList(query?: Object) { + return request({ + url: '/recruit/recruitSchoolHistory/page', + method: 'get', + params: query + }) +} + +/** + * 新增数据 + * @param obj - 要新增的数据对象 + * @returns Promise - 操作结果 + */ +export function addObj(obj?: Object) { + return request({ + url: '/recruit/recruitSchoolHistory', + method: 'post', + data: obj + }) +} + +/** + * 获取详情数据 + * @param obj - 查询参数对象(包含ID等) + * @returns Promise<数据详情> + */ +export function getObj(obj?: Object) { + return request({ + url: '/recruit/recruitSchoolHistory/details', + method: 'get', + params: obj + }) +} + +/** + * 批量删除数据 + * @param ids - 要删除的ID数组 + * @returns Promise<操作结果> + */ +export function delObjs(ids?: Object) { + return request({ + url: '/recruit/recruitSchoolHistory', + method: 'delete', + data: ids + }) +} + +/** + * 更新数据 + * @param obj - 要更新的数据对象 + * @returns Promise<操作结果> + */ +export function putObj(obj?: Object) { + return request({ + url: '/recruit/recruitSchoolHistory', + method: 'put', + data: obj + }) +} + +// ========== 工具函数 ========== + +/** + * 验证字段值唯一性 + * @param rule - 验证规则对象 + * @param value - 要验证的值 + * @param callback - 验证回调函数 + * @param isEdit - 是否为编辑模式 + * + * @example + * // 在表单验证规则中使用 + * fieldName: [ + * { + * validator: (rule, value, callback) => { + * validateExist(rule, value, callback, form.id !== ''); + * }, + * trigger: 'blur', + * }, + * ] + */ +export function validateExist(rule: any, value: any, callback: any, isEdit: boolean) { + // 编辑模式下跳过验证 + if (isEdit) { + return callback(); + } + + // 查询是否存在相同值 + getObj({ [rule.field]: value }).then((response) => { + const result = response.data; + if (result !== null && result.length > 0) { + callback(new Error('数据已经存在')); + } else { + callback(); + } + }); +} + diff --git a/src/views/admin/system/menu/form.vue b/src/views/admin/system/menu/form.vue index 2f67714..d5a5f42 100644 --- a/src/views/admin/system/menu/form.vue +++ b/src/views/admin/system/menu/form.vue @@ -176,7 +176,6 @@ const dataRules = reactive({ trigger: 'blur', }], path: [{validator: rule.overLength, trigger: 'blur'}, {required: true, message: '路径不能为空', trigger: 'blur'}], - icon: [{validator: rule.overLength, trigger: 'blur'}, {required: true, message: '图标不能为空', trigger: 'blur'}], permission: [{validator: rule.overLength, trigger: 'blur'}, { required: true, message: '权限代码不能为空', diff --git a/src/views/admin/system/role/change-role.vue b/src/views/admin/system/role/change-role.vue index eb6f195..e4eb5c3 100644 --- a/src/views/admin/system/role/change-role.vue +++ b/src/views/admin/system/role/change-role.vue @@ -2,7 +2,7 @@ -
- - - - - +
+ + + + + - -
- - 名单导出 - - - 批量查询 - - -
+ +
+ 名单导出 + + 批量查询 + + +
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
- -
-
+ +
+ +
+
- - - - - - - - - - -
-
- {{ payQrcode1Msg }} -
- + + + + + + + + + + +
+
+ {{ payQrcode1Msg }} +
+ -
- {{ payQrcode2Msg }} -
- +
+ {{ payQrcode2Msg }} +
+ -
- {{ payQrcode3Msg }} -
- -
- ** 此界面为查询学生缴款二维码,如有收不到微信推送,或手机号填错的,可直接在此扫码支付,支付成功后,请手动点击"立即查询"按钮,查询该生的缴费情况;因财政收费系统有一定的滞后性,如点击"立即查询"后任显示未交费,请稍后再继续查询,或重新点击"立即查询"按钮 ** -
+
+ {{ payQrcode3Msg }} +
+ +
+ ** + 此界面为查询学生缴款二维码,如有收不到微信推送,或手机号填错的,可直接在此扫码支付,支付成功后,请手动点击"立即查询"按钮,查询该生的缴费情况;因财政收费系统有一定的滞后性,如点击"立即查询"后任显示未交费,请稍后再继续查询,或重新点击"立即查询"按钮 + ** +
- -
+ +
diff --git a/src/views/recruit/newstucheckin/index.vue b/src/views/recruit/newstucheckin/index.vue index f559795..2523636 100644 --- a/src/views/recruit/newstucheckin/index.vue +++ b/src/views/recruit/newstucheckin/index.vue @@ -208,7 +208,7 @@ - + @@ -240,7 +253,7 @@ import { ref, reactive, onMounted, defineAsyncComponent } from 'vue' import { useAuth } from '/@/hooks/auth' import { BasicTableProps, useTable } from '/@/hooks/table' -import { useMessage } from '/@/hooks/message' +import {useMessage, useMessageBox} from '/@/hooks/message' import { fetchList } from '/@/api/recruit/newstucheckin' import { getDictsByTypes } from '/@/api/admin/dict' import { useDict } from '/@/hooks/dict' @@ -251,6 +264,7 @@ import { getList } from '/@/api/recruit/recruitstudentplangroup' import DetailPopover from '/@/components/DetailPopover/index.vue' import ClickableTag from '/@/components/ClickableTag/index.vue' import { InfoFilled, CircleCheck, CircleClose, DocumentChecked, Warning, Clock } from '@element-plus/icons-vue' +import {leaveSchool} from "/@/api/recruit/recruitstudentsignup"; const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue')) const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue')) @@ -430,6 +444,19 @@ const init = async () => { } } +const handleLeaveSchool = (row: any, force: any) => { + var str = force? '强制' : ''; + useMessageBox() + .confirm('是否确认'+str+'办理退档操作?请谨慎操作') + .then(() => { + return leaveSchool({ 'id':row.id,'force':force }); + }) + .then(() => { + message.success('操作成功'); + getDataList(); + }); +}; + onMounted(() => { init() }) diff --git a/src/views/recruit/recruitMajorCategory/index.vue b/src/views/recruit/recruitMajorCategory/index.vue new file mode 100644 index 0000000..4ab47bc --- /dev/null +++ b/src/views/recruit/recruitMajorCategory/index.vue @@ -0,0 +1,129 @@ + + + diff --git a/src/views/recruit/recruitPolicyFile/form.vue b/src/views/recruit/recruitPolicyFile/form.vue new file mode 100644 index 0000000..b895578 --- /dev/null +++ b/src/views/recruit/recruitPolicyFile/form.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file diff --git a/src/views/recruit/recruitPolicyFile/index.vue b/src/views/recruit/recruitPolicyFile/index.vue new file mode 100644 index 0000000..cafac30 --- /dev/null +++ b/src/views/recruit/recruitPolicyFile/index.vue @@ -0,0 +1,219 @@ + + + diff --git a/src/views/recruit/recruitSchoolHistory/form.vue b/src/views/recruit/recruitSchoolHistory/form.vue new file mode 100644 index 0000000..9069044 --- /dev/null +++ b/src/views/recruit/recruitSchoolHistory/form.vue @@ -0,0 +1,124 @@ + + + \ No newline at end of file diff --git a/src/views/recruit/recruitSchoolHistory/index.vue b/src/views/recruit/recruitSchoolHistory/index.vue new file mode 100644 index 0000000..a60dbb9 --- /dev/null +++ b/src/views/recruit/recruitSchoolHistory/index.vue @@ -0,0 +1,213 @@ + + + diff --git a/src/views/recruit/recruitplanmajor/detaiform.vue b/src/views/recruit/recruitplanmajor/detaiform.vue index ec1af78..d6fdd2d 100644 --- a/src/views/recruit/recruitplanmajor/detaiform.vue +++ b/src/views/recruit/recruitplanmajor/detaiform.vue @@ -1,253 +1,189 @@ diff --git a/src/views/recruit/recruitplanmajor/majorGroupByDept.vue b/src/views/recruit/recruitplanmajor/majorGroupByDept.vue index 804be5c..362f5c9 100644 --- a/src/views/recruit/recruitplanmajor/majorGroupByDept.vue +++ b/src/views/recruit/recruitplanmajor/majorGroupByDept.vue @@ -1,5 +1,5 @@