修改打包报错问题
This commit is contained in:
@@ -20,10 +20,11 @@
|
|||||||
|---------|------|-------|------|---------|
|
|---------|------|-------|------|---------|
|
||||||
| 主要操作 | `primary` | - | 蓝色实心 | 新增、保存、提交 |
|
| 主要操作 | `primary` | - | 蓝色实心 | 新增、保存、提交 |
|
||||||
| 查询 | `primary` | - | 蓝色实心 | 查询 |
|
| 查询 | `primary` | - | 蓝色实心 | 查询 |
|
||||||
| 重置 | `primary` | ✓ | 蓝色边框 | 重置 |
|
| 重置 | - | - | 灰色 | 重置 |
|
||||||
| 导出操作 | `warning` | ✓ | 橙色边框 | 导出、下载 |
|
| 导出操作 | `warning` | ✓ | 橙色边框 | 导出、下载 |
|
||||||
| 导入操作 | `primary` | ✓ | 蓝色边框 | 导入、上传 |
|
| 导入操作 | `primary` | ✓ | 蓝色边框 | 导入、上传 |
|
||||||
| 设置操作 | `primary` | ✓ | 蓝色边框 | 设置、配置 |
|
| 设置操作 | `primary` | ✓ | 蓝色边框 | 设置、配置 |
|
||||||
|
| 同步操作 | `primary` | ✓ | 蓝色边框 | 同步、连接 |
|
||||||
| 状态锁定 | - | - | 灰色 | 状态锁定、解锁 |
|
| 状态锁定 | - | - | 灰色 | 状态锁定、解锁 |
|
||||||
| 危险操作 | `danger` | - | 红色实心 | 删除、清空 |
|
| 危险操作 | `danger` | - | 红色实心 | 删除、清空 |
|
||||||
|
|
||||||
@@ -39,14 +40,15 @@
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 2. Plain按钮(边框样式)
|
### 2. Plain按钮(边框样式)
|
||||||
- **使用场景**:重置、导出、导入、设置等次要操作
|
- **使用场景**:重置、导出、导入、设置、同步等次要操作
|
||||||
- **代码**:`type="primary" plain` 或 `type="warning" plain`
|
- **代码**:`type="primary" plain` 或 `type="warning" plain`
|
||||||
|
|
||||||
```vue
|
```vue
|
||||||
<el-button type="primary" plain icon="Refresh">重置</el-button>
|
<el-button icon="Refresh">重置</el-button>
|
||||||
<el-button type="warning" plain icon="Download">导出</el-button>
|
<el-button type="warning" plain icon="Download">导出</el-button>
|
||||||
<el-button type="primary" plain icon="UploadFilled">导入</el-button>
|
<el-button type="primary" plain icon="UploadFilled">导入</el-button>
|
||||||
<el-button type="primary" plain icon="Setting">设置</el-button>
|
<el-button type="primary" plain icon="Setting">设置</el-button>
|
||||||
|
<el-button type="primary" plain icon="Connection">同步</el-button>
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. 设置按钮
|
### 3. 设置按钮
|
||||||
@@ -57,7 +59,15 @@
|
|||||||
<el-button type="primary" plain icon="Setting">设置</el-button>
|
<el-button type="primary" plain icon="Setting">设置</el-button>
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. 默认按钮(灰色)
|
### 4. 同步按钮
|
||||||
|
- **使用场景**:同步、连接等操作
|
||||||
|
- **代码**:`type="primary" plain`
|
||||||
|
|
||||||
|
```vue
|
||||||
|
<el-button type="primary" plain icon="Connection">同步</el-button>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. 默认按钮(灰色)
|
||||||
- **使用场景**:状态锁定、解锁等中性操作
|
- **使用场景**:状态锁定、解锁等中性操作
|
||||||
- **代码**:不设置 `type` 属性
|
- **代码**:不设置 `type` 属性
|
||||||
|
|
||||||
@@ -65,7 +75,7 @@
|
|||||||
<el-button icon="Lock">状态锁定</el-button>
|
<el-button icon="Lock">状态锁定</el-button>
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5. 表格操作列按钮(link)
|
### 6. 表格操作列按钮(link)
|
||||||
- **使用场景**:表格操作列,使用 `link` 属性
|
- **使用场景**:表格操作列,使用 `link` 属性
|
||||||
- **代码**:`link` 属性,配合 `type` 使用
|
- **代码**:`link` 属性,配合 `type` 使用
|
||||||
- **说明**:表格内的操作按钮统一使用 `link` 样式,节省空间
|
- **说明**:表格内的操作按钮统一使用 `link` 样式,节省空间
|
||||||
@@ -101,15 +111,17 @@
|
|||||||
| 锁定/解锁 | `Lock` |
|
| 锁定/解锁 | `Lock` |
|
||||||
| 用户相关 | `User` |
|
| 用户相关 | `User` |
|
||||||
| 调动/转换 | `Switch` |
|
| 调动/转换 | `Switch` |
|
||||||
|
| 同步/连接 | `Connection` |
|
||||||
|
|
||||||
### 使用示例
|
### 使用示例
|
||||||
|
|
||||||
```vue
|
```vue
|
||||||
<el-button type="primary" icon="FolderAdd">新 增</el-button>
|
<el-button type="primary" icon="FolderAdd">新 增</el-button>
|
||||||
<el-button type="primary" icon="Search">查询</el-button>
|
<el-button type="primary" icon="Search">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh">重置</el-button>
|
<el-button icon="Refresh">重置</el-button>
|
||||||
<el-button type="warning" plain icon="Download">导出</el-button>
|
<el-button type="warning" plain icon="Download">导出</el-button>
|
||||||
<el-button type="primary" plain icon="UploadFilled">导入</el-button>
|
<el-button type="primary" plain icon="UploadFilled">导入</el-button>
|
||||||
|
<el-button type="primary" plain icon="Connection">同步</el-button>
|
||||||
```
|
```
|
||||||
|
|
||||||
## 五、间距
|
## 五、间距
|
||||||
@@ -122,6 +134,7 @@
|
|||||||
<el-button type="primary" plain icon="Refresh" class="ml10">重置</el-button>
|
<el-button type="primary" plain icon="Refresh" class="ml10">重置</el-button>
|
||||||
<el-button type="warning" plain icon="Download" class="ml10">导出</el-button>
|
<el-button type="warning" plain icon="Download" class="ml10">导出</el-button>
|
||||||
<el-button type="primary" plain icon="UploadFilled" class="ml10">导入</el-button>
|
<el-button type="primary" plain icon="UploadFilled" class="ml10">导入</el-button>
|
||||||
|
<el-button type="primary" plain icon="Connection" class="ml10">同步</el-button>
|
||||||
```
|
```
|
||||||
|
|
||||||
## 六、完整示例
|
## 六、完整示例
|
||||||
@@ -149,8 +162,6 @@
|
|||||||
|
|
||||||
<!-- 重置操作 -->
|
<!-- 重置操作 -->
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
|
||||||
plain
|
|
||||||
icon="Refresh"
|
icon="Refresh"
|
||||||
class="ml10"
|
class="ml10"
|
||||||
@click="resetQuery">重置
|
@click="resetQuery">重置
|
||||||
@@ -182,6 +193,15 @@
|
|||||||
class="ml10"
|
class="ml10"
|
||||||
@click="handleSetting">设置
|
@click="handleSetting">设置
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
||||||
|
<!-- 同步操作 -->
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
plain
|
||||||
|
icon="Connection"
|
||||||
|
class="ml10"
|
||||||
|
@click="handleSync">同步
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -18,14 +18,13 @@ export function getTypeValue(type: string | number) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 批量获取字典类型值
|
// 批量获取字典类型值
|
||||||
export function getDictsByTypes(types: string[]) {
|
export function getDictsByTypes(types: string[]) {
|
||||||
return request({
|
return request({
|
||||||
url: '/admin/dict/item/typeList',
|
url: '/admin/dict/item/typeList',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: {
|
data: types
|
||||||
typeList: types,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
import { NextLoading } from '/@/utils/loading';
|
import { NextLoading } from '/@/utils/loading';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 显示加载动画
|
* 显示加载状态
|
||||||
*/
|
*/
|
||||||
export const showLoading = () => {
|
export const showLoading = () => {
|
||||||
NextLoading.start();
|
NextLoading.start();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 隐藏加载动画
|
* 隐藏加载状态
|
||||||
*/
|
*/
|
||||||
export const hideLoading = () => {
|
export const hideLoading = () => {
|
||||||
NextLoading.done();
|
NextLoading.done();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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';
|
import request from '/@/utils/request';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新缴费状态(单个学生)
|
* 获取列表
|
||||||
* @param data 包含 serialNumber 的对象
|
* @param query 查询参数
|
||||||
*/
|
*/
|
||||||
export const updateFs = (data: { serialNumber: string }) => {
|
export function fetchList(query?: any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/finance/financenormalstu/updateFs',
|
url: '/finance/financenormalstu/page',
|
||||||
method: 'post',
|
method: 'get',
|
||||||
data,
|
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({
|
return request({
|
||||||
url: '/finance/financenormalstu/updateAllFS',
|
url: '/finance/financePay/updateFsAll',
|
||||||
method: 'post',
|
method: 'put',
|
||||||
data,
|
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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export const fetchListStatic = (query?: any) => {
|
|||||||
*/
|
*/
|
||||||
export const addObj = (obj: any) => {
|
export const addObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitprestudent',
|
url: '/recruit/recruitprestudent/add',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
@@ -42,7 +42,7 @@ export const addObj = (obj: any) => {
|
|||||||
*/
|
*/
|
||||||
export const addObjStu = (obj: any) => {
|
export const addObjStu = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitprestudent/saveStuData',
|
url: '/recruit/recruitprestudent/add',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
@@ -54,8 +54,9 @@ export const addObjStu = (obj: any) => {
|
|||||||
*/
|
*/
|
||||||
export const getObj = (id: string | number) => {
|
export const getObj = (id: string | number) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/recruit/recruitprestudent/${id}`,
|
url: `/recruit/recruitprestudent/getById`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
params: {id:id}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -65,8 +66,9 @@ export const getObj = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const delObj = (id: string | number) => {
|
export const delObj = (id: string | number) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/recruit/recruitprestudent/${id}`,
|
url: `/recruit/recruitprestudent/deleteById`,
|
||||||
method: 'delete',
|
method: 'post',
|
||||||
|
data:{id:id}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -76,8 +78,8 @@ export const delObj = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const putObj = (obj: any) => {
|
export const putObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitprestudent',
|
url: '/recruit/recruitprestudent/edit',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -89,7 +91,7 @@ export const putObj = (obj: any) => {
|
|||||||
export const sureDJ = (obj: any) => {
|
export const sureDJ = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitprestudent/sureDJ',
|
url: '/recruit/recruitprestudent/sureDJ',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export const fetchList = (query?: any) => {
|
|||||||
*/
|
*/
|
||||||
export const addObj = (obj: any) => {
|
export const addObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitschoolcode',
|
url: '/recruit/recruitschoolcode/add',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
@@ -30,8 +30,9 @@ export const addObj = (obj: any) => {
|
|||||||
*/
|
*/
|
||||||
export const getObj = (id: string | number) => {
|
export const getObj = (id: string | number) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/recruit/recruitschoolcode/${id}`,
|
url: `/recruit/recruitschoolcode/getById`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
params:{id:id}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -41,8 +42,9 @@ export const getObj = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const delObj = (id: string | number) => {
|
export const delObj = (id: string | number) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/recruit/recruitschoolcode/${id}`,
|
url: `/recruit/recruitschoolcode/deleteById`,
|
||||||
method: 'delete',
|
method: 'post',
|
||||||
|
data:{id:id}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -52,8 +54,8 @@ export const delObj = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const putObj = (obj: any) => {
|
export const putObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitschoolcode',
|
url: '/recruit/recruitschoolcode/edit',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export const list = (query?: any) => {
|
|||||||
*/
|
*/
|
||||||
export const addObj = (obj: any) => {
|
export const addObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitstudentplancorrectscoreconfig',
|
url: '/recruit/recruitstudentplancorrectscoreconfig/add',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
@@ -42,8 +42,9 @@ export const addObj = (obj: any) => {
|
|||||||
*/
|
*/
|
||||||
export const getObj = (id: string | number) => {
|
export const getObj = (id: string | number) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/recruit/recruitstudentplancorrectscoreconfig/${id}`,
|
url: `/recruit/recruitstudentplancorrectscoreconfig/getById`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
params:{id:id}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -53,8 +54,9 @@ export const getObj = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const delObj = (id: string | number) => {
|
export const delObj = (id: string | number) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/recruit/recruitstudentplancorrectscoreconfig/${id}`,
|
url: `/recruit/recruitstudentplancorrectscoreconfig/deleteById`,
|
||||||
method: 'delete',
|
method: 'post',
|
||||||
|
data:{id:id}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -64,8 +66,8 @@ export const delObj = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const putObj = (obj: any) => {
|
export const putObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitstudentplancorrectscoreconfig',
|
url: '/recruit/recruitstudentplancorrectscoreconfig/edit',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export const fetchList = (query?: any) => {
|
|||||||
* 列表
|
* 列表
|
||||||
* @param query
|
* @param query
|
||||||
*/
|
*/
|
||||||
export const list = (query?: any) => {
|
export const getList = (query?: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitstudentplangroup/list',
|
url: '/recruit/recruitstudentplangroup/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
@@ -71,3 +71,15 @@ export const putObj = (obj: any) => {
|
|||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
* @param obj
|
||||||
|
*/
|
||||||
|
export const editQuickField = (obj: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/recruit/recruitstudentplangroup/editQuickField',
|
||||||
|
method: 'post',
|
||||||
|
data: obj,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ export const areaSonList = (query?: any) => {
|
|||||||
*/
|
*/
|
||||||
export const addObj = (obj: any) => {
|
export const addObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitstudentschool',
|
url: '/recruit/recruitstudentschool/add',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
@@ -66,8 +66,9 @@ export const addObj = (obj: any) => {
|
|||||||
*/
|
*/
|
||||||
export const getObj = (id: string | number) => {
|
export const getObj = (id: string | number) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/recruit/recruitstudentschool/${id}`,
|
url: `/recruit/recruitstudentschool/getById`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
params:{id:id}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -77,8 +78,9 @@ export const getObj = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const delObj = (id: string | number) => {
|
export const delObj = (id: string | number) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/recruit/recruitstudentschool/${id}`,
|
url: `/recruit/recruitstudentschool/deleteByid`,
|
||||||
method: 'delete',
|
method: 'post',
|
||||||
|
data:{id:id}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -88,8 +90,8 @@ export const delObj = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const putObj = (obj: any) => {
|
export const putObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitstudentschool',
|
url: '/recruit/recruitstudentschool/edit',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ export const fetchListStuDorm = (query?: any) => {
|
|||||||
*/
|
*/
|
||||||
export const addObj = (obj: any) => {
|
export const addObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitstudentsignup',
|
url: '/recruit/recruitstudentsignup/add',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
@@ -289,8 +289,8 @@ export const delFw = (id: string | number) => {
|
|||||||
*/
|
*/
|
||||||
export const putObj = (obj: any) => {
|
export const putObj = (obj: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/recruit/recruitstudentsignup',
|
url: '/recruit/recruitstudentsignup/edit',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
data: obj,
|
data: obj,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -460,7 +460,7 @@ export const BMPGL = (ak: string) => {
|
|||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
window.init = function () {
|
window.init = function () {
|
||||||
// eslint-disable-next-line
|
// eslint-disable-next-line
|
||||||
resolve(BMapGL);
|
// resolve(BMapGL);
|
||||||
};
|
};
|
||||||
const script = document.createElement('script');
|
const script = document.createElement('script');
|
||||||
script.type = 'text/javascript';
|
script.type = 'text/javascript';
|
||||||
|
|||||||
@@ -87,15 +87,36 @@ export const fetchDormRoomTreeList = (dormdataType?: string) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
//宿舍房间
|
||||||
* 根据房间号查询宿舍数据
|
export function dormRoomList() {
|
||||||
* @param data 包含 roomNo 的对象
|
return request({
|
||||||
*/
|
url:'/stuwork/dormroom/list',
|
||||||
export const getDataByRoomNo = (data: { roomNo: string }) => {
|
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({
|
return request({
|
||||||
url: '/stuwork/dormroom/getDataByRoomNo',
|
url: '/stuwork/dormroom/getDataByRoomNo',
|
||||||
method:'get',
|
method:'get',
|
||||||
params:data
|
params:data
|
||||||
});
|
})
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
83
src/components/DateRangePicker/index.vue
Normal file
83
src/components/DateRangePicker/index.vue
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<template>
|
||||||
|
<el-form-item :label="label" :required="required" :style="outerStyle">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="11">
|
||||||
|
<el-form-item :prop="startProp">
|
||||||
|
<slot name="startDatePicker">
|
||||||
|
</slot>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="2" class="time-separator">
|
||||||
|
<slot name="separator">
|
||||||
|
<span>{{ separator }}</span>
|
||||||
|
</slot>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="11">
|
||||||
|
<el-form-item :prop="endProp">
|
||||||
|
<slot name="endDatePicker">
|
||||||
|
</slot>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { computed } from 'vue'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
label: string
|
||||||
|
startProp: string
|
||||||
|
endProp: string
|
||||||
|
startValue: string
|
||||||
|
endValue: string
|
||||||
|
required?: boolean
|
||||||
|
separator?: string
|
||||||
|
startPlaceholder?: string
|
||||||
|
endPlaceholder?: string
|
||||||
|
outerStyle?: string | Record<string, string>
|
||||||
|
}
|
||||||
|
|
||||||
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
|
required: false,
|
||||||
|
separator: '至',
|
||||||
|
outerStyle: () => ({})
|
||||||
|
})
|
||||||
|
|
||||||
|
// 将 outerStyle 字符串或对象转换为样式对象
|
||||||
|
const outerStyle = computed(() => {
|
||||||
|
if (typeof props.outerStyle === 'object' && !Array.isArray(props.outerStyle)) {
|
||||||
|
return props.outerStyle
|
||||||
|
}
|
||||||
|
if (typeof props.outerStyle === 'string' && props.outerStyle) {
|
||||||
|
const style: Record<string, string> = {}
|
||||||
|
props.outerStyle.split(';').forEach((rule) => {
|
||||||
|
const [key, value] = rule.split(':').map(s => s.trim())
|
||||||
|
if (key && value) {
|
||||||
|
// 将 kebab-case 转换为 camelCase
|
||||||
|
const camelKey = key.replace(/-([a-z])/g, (g) => g[1].toUpperCase())
|
||||||
|
style[camelKey] = value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return style
|
||||||
|
}
|
||||||
|
return {}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.time-separator {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
min-height: 32px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: #909399;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -84,19 +84,42 @@ const checkCollapsibleContent = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 否则,通过检查隐藏的检测元素是否有内容来判断
|
// 否则,通过检查隐藏的检测元素是否有内容来判断
|
||||||
// 需要等待 DOM 渲染完成
|
// 需要等待 DOM 渲染完成,可能需要多次尝试以确保数据加载完成
|
||||||
|
let retryCount = 0
|
||||||
|
const maxRetries = 5
|
||||||
|
|
||||||
|
const check = () => {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
setTimeout(() => {
|
||||||
if (detectionWrapperRef.value) {
|
if (detectionWrapperRef.value) {
|
||||||
// 检查检测元素是否有子元素(排除文本节点)
|
// 检查检测元素是否有子元素(排除文本节点)
|
||||||
|
// 检查是否有 el-form-item 元素(因为表单项会被渲染为 el-form-item)
|
||||||
const hasContent = detectionWrapperRef.value.children.length > 0 ||
|
const hasContent = detectionWrapperRef.value.children.length > 0 ||
|
||||||
|
detectionWrapperRef.value.querySelector('.el-form-item') !== null ||
|
||||||
(!!detectionWrapperRef.value.textContent && detectionWrapperRef.value.textContent.trim() !== '')
|
(!!detectionWrapperRef.value.textContent && detectionWrapperRef.value.textContent.trim() !== '')
|
||||||
|
|
||||||
|
if (hasContent || retryCount >= maxRetries) {
|
||||||
hasCollapsibleContent.value = hasContent
|
hasCollapsibleContent.value = hasContent
|
||||||
|
} else {
|
||||||
|
// 如果还没检测到内容且未达到最大重试次数,继续重试
|
||||||
|
retryCount++
|
||||||
|
setTimeout(check, 100)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (retryCount < maxRetries) {
|
||||||
|
retryCount++
|
||||||
|
setTimeout(check, 100)
|
||||||
} else {
|
} else {
|
||||||
hasCollapsibleContent.value = false
|
hasCollapsibleContent.value = false
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}, 50)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check()
|
||||||
|
}
|
||||||
|
|
||||||
// 是否有需要折叠的项
|
// 是否有需要折叠的项
|
||||||
const hasCollapsibleItems = computed(() => {
|
const hasCollapsibleItems = computed(() => {
|
||||||
if (props.showCollapse !== undefined) {
|
if (props.showCollapse !== undefined) {
|
||||||
|
|||||||
@@ -2,23 +2,52 @@
|
|||||||
* 全局常量配置
|
* 全局常量配置
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/*角色标记*/
|
||||||
* 角色代码常量
|
|
||||||
*/
|
|
||||||
export const ROLE_CODE = {
|
export const ROLE_CODE = {
|
||||||
ROLE_RECRUIT: 'ROLE_RECRUIT',
|
"ROLE_ADMIN": "ROLE_ADMIN", //管理员
|
||||||
ROLE_RECRUIT_SECOND: 'ROLE_RECRUIT_SECOND'
|
"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";
|
||||||
|
|||||||
@@ -1,29 +1,54 @@
|
|||||||
import { dict } from '/@/stores/dict';
|
import { dict } from '/@/stores/dict';
|
||||||
import { getDicts } from '/@/api/admin/dict';
|
import { getDictsByTypes } from '/@/api/admin/dict';
|
||||||
import { ref, toRefs } from 'vue';
|
import { ref, toRefs } from 'vue';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取字典数据
|
* 获取字典数据
|
||||||
|
* 支持批量获取,自动使用批量 API 减少请求次数
|
||||||
*/
|
*/
|
||||||
export function useDict(...args: any): any {
|
export function useDict(...args: any): any {
|
||||||
const res = ref({});
|
const res = ref({});
|
||||||
return (() => {
|
return (() => {
|
||||||
|
// 初始化所有字典类型为空数组
|
||||||
args.forEach((dictType: String) => {
|
args.forEach((dictType: String) => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
res.value[dictType] = [];
|
res.value[dictType] = [];
|
||||||
|
});
|
||||||
|
|
||||||
|
// 分离已缓存和未缓存的字典类型
|
||||||
|
const cachedDicts: string[] = [];
|
||||||
|
const uncachedDicts: string[] = [];
|
||||||
|
|
||||||
|
args.forEach((dictType: String) => {
|
||||||
const dicts = dict().getDict(dictType);
|
const dicts = dict().getDict(dictType);
|
||||||
if (dicts) {
|
if (dicts) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
res.value[dictType] = dicts;
|
res.value[dictType] = dicts;
|
||||||
|
cachedDicts.push(dictType as string);
|
||||||
} else {
|
} 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
|
// @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
|
// @ts-ignore
|
||||||
dict().setDict(dictType, res.value[dictType]);
|
dict().setDict(dictType, res.value[dictType]);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return toRefs(res.value);
|
return toRefs(res.value);
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,10 +20,10 @@
|
|||||||
<div class="layout-padding-auto layout-padding-view">
|
<div class="layout-padding-auto layout-padding-view">
|
||||||
<el-tabs v-model="activeName" @tab-click="handleTabClick">
|
<el-tabs v-model="activeName" @tab-click="handleTabClick">
|
||||||
<el-tab-pane label="回校列表" name="tab">
|
<el-tab-pane label="回校列表" name="tab">
|
||||||
<tab-index ref="tabIndexRef" />
|
<TabIndex ref="tabIndexRef" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="回校统计" name="static">
|
<el-tab-pane label="回校统计" name="static">
|
||||||
<static-index ref="staticIndexRef" />
|
<StaticIndex ref="staticIndexRef" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
@@ -54,4 +54,13 @@ const handleTabClick = (tab: any) => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
:deep(.el-tabs) {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.el-tab-pane {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -16,12 +16,12 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="layout-padding">
|
<div class="static-index-container">
|
||||||
<div class="layout-padding-auto layout-padding-view">
|
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<el-form :model="queryForm" inline class="mb-4" ref="searchFormRef">
|
<div class="search-form-wrapper">
|
||||||
|
<el-form :model="queryForm" inline ref="searchFormRef">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划" @change="getTabStaticDataList" style="width: 150px;">
|
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划" @change="getTabStaticDataList">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planList"
|
v-for="item in planList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -32,11 +32,13 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getTabStaticDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getTabStaticDataList">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
|
<div class="table-wrapper">
|
||||||
<el-table
|
<el-table
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
@@ -47,13 +49,14 @@
|
|||||||
:summary-method="getSummaries"
|
:summary-method="getSummaries"
|
||||||
:cell-style="tableStyle.cellStyle"
|
:cell-style="tableStyle.cellStyle"
|
||||||
:header-cell-style="tableStyle.headerCellStyle"
|
:header-cell-style="tableStyle.headerCellStyle"
|
||||||
|
height="100%"
|
||||||
>
|
>
|
||||||
<el-table-column prop="groupId" label="招生计划" align="center" show-overflow-tooltip>
|
<el-table-column prop="groupId" label="招生计划" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getPlanName(scope.row.groupId) }}
|
{{ getPlanName(scope.row.groupId) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="zymc" label="专业名称" align="center" show-overflow-tooltip />
|
<el-table-column prop="majorName" label="专业名称" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="wlx" label="未联系" align="center" show-overflow-tooltip />
|
<el-table-column prop="wlx" label="未联系" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="yjbd" label="已经报到" align="center" show-overflow-tooltip />
|
<el-table-column prop="yjbd" label="已经报到" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="tcbd" label="推迟报到" align="center" show-overflow-tooltip />
|
<el-table-column prop="tcbd" label="推迟报到" align="center" show-overflow-tooltip />
|
||||||
@@ -66,10 +69,8 @@
|
|||||||
|
|
||||||
<script setup lang="ts" name="backSchoolCheckinStaticIndex">
|
<script setup lang="ts" name="backSchoolCheckinStaticIndex">
|
||||||
import { ref, reactive, onMounted } from 'vue'
|
import { ref, reactive, onMounted } from 'vue'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { getTabStaticDataList as getTabStaticDataListApi } from '/@/api/recruit/recruitstudentsignup'
|
import { getTabStaticDataList as getTabStaticDataListApi } from '/@/api/recruit/recruitstudentsignup'
|
||||||
// @ts-ignore
|
|
||||||
import global from '@/components/tools/commondict.vue'
|
|
||||||
import { useTable } from '/@/hooks/table'
|
import { useTable } from '/@/hooks/table'
|
||||||
|
|
||||||
// 表格引用
|
// 表格引用
|
||||||
@@ -131,7 +132,7 @@ const getTabStaticDataList = async () => {
|
|||||||
const response = await getTabStaticDataListApi(queryForm)
|
const response = await getTabStaticDataListApi(queryForm)
|
||||||
tableData.value = response.data || []
|
tableData.value = response.data || []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取统计数据失败', error)
|
// 获取统计数据失败
|
||||||
} finally {
|
} finally {
|
||||||
dataListLoading.value = false
|
dataListLoading.value = false
|
||||||
}
|
}
|
||||||
@@ -150,21 +151,39 @@ const resetQuery = () => {
|
|||||||
// 初始化
|
// 初始化
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
planList.value = data.data || []
|
planList.value = data.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
getTabStaticDataList()
|
getTabStaticDataList()
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化失败', error)
|
// 初始化失败
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.static-index-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-form-wrapper {
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-wrapper {
|
||||||
|
flex: 1;
|
||||||
|
overflow: auto;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ import { storeToRefs } from 'pinia'
|
|||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { getDataStatistics } from '/@/api/recruit/newstucheckin'
|
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 { getDeptList } from '/@/api/basic/basicclass'
|
||||||
import { queryAllClass } from '/@/api/basic/basicclass'
|
import { queryAllClass } from '/@/api/basic/basicclass'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
@@ -153,7 +153,7 @@ const init = async () => {
|
|||||||
// 查看所有入学年份
|
// 查看所有入学年份
|
||||||
const getGradeData = async () => {
|
const getGradeData = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
gradeList.value = data.data || []
|
gradeList.value = data.data || []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取入学年份失败', error)
|
console.error('获取入学年份失败', error)
|
||||||
|
|||||||
@@ -16,12 +16,12 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="layout-padding">
|
<div class="tab-index-container">
|
||||||
<div class="layout-padding-auto layout-padding-view">
|
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<el-form :model="queryForm" inline class="mb-4" ref="searchFormRef">
|
<div class="search-form-wrapper">
|
||||||
|
<el-form :model="queryForm" inline ref="searchFormRef">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划" @change="chanMajor" style="width: 150px;">
|
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划" @change="chanMajor">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planList"
|
v-for="item in planList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -30,8 +30,8 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="学院" prop="xy">
|
<el-form-item label="学院" prop="deptCode">
|
||||||
<el-select v-model="queryForm.xy" filterable clearable placeholder="请选择学院" style="width: 130px;">
|
<el-select v-model="queryForm.deptCode" filterable clearable placeholder="请选择学院">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in deptList"
|
v-for="item in deptList"
|
||||||
:key="item.deptCode"
|
:key="item.deptCode"
|
||||||
@@ -44,9 +44,9 @@
|
|||||||
<el-select v-model="queryForm.confirmedMajor" filterable clearable placeholder="请选择录取专业">
|
<el-select v-model="queryForm.confirmedMajor" filterable clearable placeholder="请选择录取专业">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc + '(' + item.xz + '年制)'"
|
:label="item.majorName + '(' + item.learnYear + '年制)'"
|
||||||
:value="item.zydm"
|
:value="item.majorCode"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
<el-input v-model="queryForm.search" clearable placeholder="唯一号/姓名/身份证号/学校名称" />
|
<el-input v-model="queryForm.search" clearable placeholder="唯一号/姓名/身份证号/学校名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="缴费状态" prop="paystatus">
|
<el-form-item label="缴费状态" prop="paystatus">
|
||||||
<el-select v-model="queryForm.paystatus" filterable clearable placeholder="请选择缴费状态" style="width: 120px;">
|
<el-select v-model="queryForm.paystatus" filterable clearable placeholder="请选择缴费状态">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in paystatusList"
|
v-for="item in paystatusList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="推送状态" prop="pushed">
|
<el-form-item label="推送状态" prop="pushed">
|
||||||
<el-select v-model="queryForm.pushed" filterable clearable placeholder="请选择推送状态" style="width: 120px;">
|
<el-select v-model="queryForm.pushed" filterable clearable placeholder="请选择推送状态">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in pushedList"
|
v-for="item in pushedList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="报到状态" prop="backSchoolState">
|
<el-form-item label="报到状态" prop="backSchoolState">
|
||||||
<el-select v-model="queryForm.backSchoolState" filterable clearable placeholder="请选择报到状态" style="width: 120px;">
|
<el-select v-model="queryForm.backSchoolState" filterable clearable placeholder="请选择报到状态">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in backSchoolStateList"
|
v-for="item in backSchoolStateList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -85,12 +85,13 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="action-buttons-wrapper mb15">
|
||||||
<el-button
|
<el-button
|
||||||
type="warning"
|
type="warning"
|
||||||
plain
|
plain
|
||||||
@@ -101,7 +102,7 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentsignup_allCX"
|
v-if="permissions.recruit_recruitstudentsignup_allCX"
|
||||||
type="success"
|
type="primary"
|
||||||
plain
|
plain
|
||||||
icon="Search"
|
icon="Search"
|
||||||
class="ml10"
|
class="ml10"
|
||||||
@@ -112,12 +113,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
|
<div class="table-wrapper">
|
||||||
<el-table
|
<el-table
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
:data="state.dataList"
|
:data="state.dataList"
|
||||||
v-loading="state.loading"
|
v-loading="state.loading"
|
||||||
border
|
border
|
||||||
stripe
|
stripe
|
||||||
|
height="100%"
|
||||||
:cell-style="tableStyle.cellStyle"
|
:cell-style="tableStyle.cellStyle"
|
||||||
:header-cell-style="tableStyle.headerCellStyle"
|
:header-cell-style="tableStyle.headerCellStyle"
|
||||||
>
|
>
|
||||||
@@ -145,10 +148,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="serialNumber" label="唯一号" align="center" show-overflow-tooltip />
|
<el-table-column prop="serialNumber" label="唯一号" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="xy" label="学院" align="center" show-overflow-tooltip>
|
<el-table-column prop="deptCode" label="学院" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.auditStatus == 20">
|
<span v-if="scope.row.auditStatus == 20">
|
||||||
{{ getDeptName(scope.row.xy) }}
|
{{ getDeptName(scope.row.deptCode) }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -162,7 +165,7 @@
|
|||||||
<el-table-column prop="name" label="姓名" align="center" show-overflow-tooltip />
|
<el-table-column prop="name" label="姓名" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="gender" label="性别" align="center" show-overflow-tooltip>
|
<el-table-column prop="gender" label="性别" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getGender(scope.row.gender) }}
|
<GenderTag :sex="scope.row.gender" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="idNumber" label="身份证号" align="center" show-overflow-tooltip />
|
<el-table-column prop="idNumber" label="身份证号" align="center" show-overflow-tooltip />
|
||||||
@@ -188,11 +191,14 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
|
<div class="pagination-wrapper">
|
||||||
<pagination
|
<pagination
|
||||||
v-bind="state.pagination"
|
v-bind="state.pagination"
|
||||||
@current-change="currentChangeHandle"
|
@current-change="currentChangeHandle"
|
||||||
@size-change="sizeChangeHandle"
|
@size-change="sizeChangeHandle"
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 支付二维码弹窗 -->
|
<!-- 支付二维码弹窗 -->
|
||||||
<el-dialog v-model="dialogFormVisible" title="支付二维码" width="800px" @close="dialogFormVisible = false">
|
<el-dialog v-model="dialogFormVisible" title="支付二维码" width="800px" @close="dialogFormVisible = false">
|
||||||
@@ -227,25 +233,23 @@
|
|||||||
|
|
||||||
<stu-check-in ref="stuCheckInRef" @reload="refreshChange" />
|
<stu-check-in ref="stuCheckInRef" @reload="refreshChange" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="backSchoolCheckinTabIndex">
|
<script setup lang="ts" name="backSchoolCheckinTabIndex">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent, defineExpose } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { backPush, backSchoolStuPage, batchPushAll } from '/@/api/recruit/recruitstudentsignup'
|
import { backPush, backSchoolStuPage, batchPushAll } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
import { listPlanByCondition as planMajor } from '/@/api/recruit/recruitstudentplan'
|
import { listPlanByCondition as planMajor } from '/@/api/recruit/recruitstudentplan'
|
||||||
import { updateFs, updateAllFS } from '/@/api/finance/financenormalstu'
|
import { updateFs, updateAllFS as updateAllFSApi } from '/@/api/finance/financenormalstu'
|
||||||
import { getTypeValue } from '/@/api/admin/dict'
|
import { getDicts } from '/@/api/admin/dict'
|
||||||
// @ts-ignore
|
|
||||||
import global from '@/components/tools/commondict.vue'
|
|
||||||
|
|
||||||
const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue'))
|
const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue'))
|
||||||
|
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
|
||||||
|
|
||||||
// 使用 Pinia store
|
// 使用 Pinia store
|
||||||
const userInfoStore = useUserInfo()
|
const userInfoStore = useUserInfo()
|
||||||
@@ -262,7 +266,6 @@ const permissions = computed(() => {
|
|||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
|
||||||
|
|
||||||
// 表格引用
|
// 表格引用
|
||||||
const tableRef = ref()
|
const tableRef = ref()
|
||||||
@@ -280,7 +283,7 @@ const pushedList = ref([{ label: '未推送', value: '0' }, { label: '已推送'
|
|||||||
// 查询表单
|
// 查询表单
|
||||||
const queryForm = reactive({
|
const queryForm = reactive({
|
||||||
groupId: '',
|
groupId: '',
|
||||||
xy: '',
|
deptCode: '',
|
||||||
confirmedMajor: '',
|
confirmedMajor: '',
|
||||||
search: '',
|
search: '',
|
||||||
paystatus: '',
|
paystatus: '',
|
||||||
@@ -311,8 +314,8 @@ const getDeptName = (deptCode: string) => {
|
|||||||
|
|
||||||
// 获取专业名称
|
// 获取专业名称
|
||||||
const getMajorName = (majorCode: string) => {
|
const getMajorName = (majorCode: string) => {
|
||||||
const item = planMajorList.value.find(item => item.zydm === majorCode)
|
const item = planMajorList.value.find(item => item.majorCode === majorCode)
|
||||||
return item ? item.zymc : ''
|
return item ? item.majorName : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取性别
|
// 获取性别
|
||||||
@@ -393,7 +396,7 @@ const getMajorList = async (groupId: string) => {
|
|||||||
const init = async () => {
|
const init = async () => {
|
||||||
try {
|
try {
|
||||||
// 查询报到状态字典
|
// 查询报到状态字典
|
||||||
const dictData = await getTypeValue('check_in_status')
|
const dictData = await getDicts('check_in_status')
|
||||||
backSchoolStateList.value = dictData.data || []
|
backSchoolStateList.value = dictData.data || []
|
||||||
|
|
||||||
// 查询二级学院信息
|
// 查询二级学院信息
|
||||||
@@ -401,7 +404,7 @@ const init = async () => {
|
|||||||
deptList.value = deptData.data || []
|
deptList.value = deptData.data || []
|
||||||
|
|
||||||
// 获取招生计划列表
|
// 获取招生计划列表
|
||||||
const planData = await list()
|
const planData = await getList()
|
||||||
planList.value = planData.data || []
|
planList.value = planData.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
@@ -437,7 +440,7 @@ const updateAllFS = async () => {
|
|||||||
const plan = planList.value.find(e => e.id === queryForm.groupId)
|
const plan = planList.value.find(e => e.id === queryForm.groupId)
|
||||||
if (!plan) return
|
if (!plan) return
|
||||||
|
|
||||||
const data = await updateAllFS({ year: plan.year, stuSource: '1' })
|
const data = await updateAllFSApi({ year: plan.year, stuSource: '1' })
|
||||||
if (data.data.code == '200') {
|
if (data.data.code == '200') {
|
||||||
message.success('正在更新所有缴费单状态,请稍后查看更新结果')
|
message.success('正在更新所有缴费单状态,请稍后查看更新结果')
|
||||||
}
|
}
|
||||||
@@ -524,7 +527,7 @@ const showPayCode = (row: any) => {
|
|||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
searchFormRef.value?.resetFields()
|
searchFormRef.value?.resetFields()
|
||||||
queryForm.groupId = ''
|
queryForm.groupId = ''
|
||||||
queryForm.xy = ''
|
queryForm.deptCode = ''
|
||||||
queryForm.confirmedMajor = ''
|
queryForm.confirmedMajor = ''
|
||||||
queryForm.search = ''
|
queryForm.search = ''
|
||||||
queryForm.paystatus = ''
|
queryForm.paystatus = ''
|
||||||
@@ -538,10 +541,46 @@ const resetQuery = () => {
|
|||||||
getDataList()
|
getDataList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 暴露方法供父组件调用
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.tab-index-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-form-wrapper {
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.action-buttons-wrapper {
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-wrapper {
|
||||||
|
flex: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-wrapper :deep(.el-table) {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-wrapper {
|
||||||
|
flex-shrink: 0;
|
||||||
|
padding-top: 15px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -19,31 +19,33 @@
|
|||||||
<div class="layout-padding">
|
<div class="layout-padding">
|
||||||
<div class="layout-padding-auto layout-padding-view">
|
<div class="layout-padding-auto layout-padding-view">
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<el-form :model="queryForm" inline class="mb-4">
|
<el-form :model="queryForm" inline>
|
||||||
<el-form-item label="">
|
<el-form-item label="">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryForm.searchTotal"
|
v-model="queryForm.searchTotal"
|
||||||
style="width: 300px"
|
|
||||||
clearable
|
clearable
|
||||||
placeholder="请输入姓名/身份证号/家庭联系人"
|
placeholder="请输入姓名/身份证号/家庭联系人"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 操作按钮 -->
|
||||||
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_newstucheckin_output"
|
v-if="permissions.recruit_newstucheckin_output"
|
||||||
type="warning"
|
type="warning"
|
||||||
plain
|
plain
|
||||||
icon="Download"
|
icon="Download"
|
||||||
class="ml10"
|
|
||||||
@click="handleExportOut"
|
@click="handleExportOut"
|
||||||
:loading="exportLoading"
|
:loading="exportLoading"
|
||||||
>
|
>
|
||||||
导出
|
导出
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</div>
|
||||||
</el-form>
|
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<el-table
|
<el-table
|
||||||
@@ -56,13 +58,16 @@
|
|||||||
:header-cell-style="tableStyle.headerCellStyle"
|
:header-cell-style="tableStyle.headerCellStyle"
|
||||||
>
|
>
|
||||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||||
<el-table-column prop="xy" label="学院" align="center" show-overflow-tooltip />
|
<el-table-column prop="deptCode" label="学院" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="classCode" label="班级" align="center" width="80" show-overflow-tooltip />
|
<el-table-column prop="classCode" label="班级" align="center" width="80" show-overflow-tooltip />
|
||||||
<el-table-column prop="stuNo" label="学号" align="center" show-overflow-tooltip />
|
<el-table-column label="姓名/学号" align="center" width="150" show-overflow-tooltip>
|
||||||
<el-table-column prop="name" label="姓名" align="center" width="80" show-overflow-tooltip />
|
|
||||||
<el-table-column prop="gender" label="性别" align="center" width="60">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.gender === '1' ? '男' : scope.row.gender === '2' ? '女' : '' }}</span>
|
<TeacherNameNo :name="scope.row.name" :no="scope.row.stuNo" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="gender" label="性别" align="center" width="80">
|
||||||
|
<template #default="scope">
|
||||||
|
<GenderTag :sex="scope.row.gender" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="idNumber" label="身份证号" align="center" show-overflow-tooltip />
|
<el-table-column prop="idNumber" label="身份证号" align="center" show-overflow-tooltip />
|
||||||
@@ -88,7 +93,7 @@
|
|||||||
<el-table-column prop="bedNo" label="床位号" align="center" width="80" show-overflow-tooltip />
|
<el-table-column prop="bedNo" label="床位号" align="center" width="80" show-overflow-tooltip />
|
||||||
<el-table-column prop="degreeOfEducation" label="文化程度" align="center" show-overflow-tooltip />
|
<el-table-column prop="degreeOfEducation" label="文化程度" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="residenceDetail" label="居住地址" align="center" show-overflow-tooltip />
|
<el-table-column prop="residenceDetail" label="居住地址" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="parentName" label="家庭联系人" align="center" show-overflow-tooltip />
|
<el-table-column prop="parentName" label="家庭联系人" width="100" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="parentTelOne" label="家长电话1" align="center" show-overflow-tooltip />
|
<el-table-column prop="parentTelOne" label="家长电话1" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="parentTelTwo" label="家长电话2" align="center" show-overflow-tooltip />
|
<el-table-column prop="parentTelTwo" label="家长电话2" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="remarks" label="备注" align="center" show-overflow-tooltip />
|
<el-table-column prop="remarks" label="备注" align="center" show-overflow-tooltip />
|
||||||
@@ -125,12 +130,14 @@ import { ref, reactive, computed, onMounted, defineAsyncComponent } from 'vue'
|
|||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { fetchList } from '/@/api/recruit/newstucheckin'
|
import { fetchList } from '/@/api/recruit/newstucheckin'
|
||||||
import { getTypeValue } from '/@/api/admin/dict'
|
import { getTypeValue } from '/@/api/admin/dict'
|
||||||
import request from '/@/utils/request'
|
import request from '/@/utils/request'
|
||||||
|
|
||||||
const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue'))
|
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
|
// 使用 Pinia store
|
||||||
const userInfoStore = useUserInfo()
|
const userInfoStore = useUserInfo()
|
||||||
@@ -147,7 +154,6 @@ const permissions = computed(() => {
|
|||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
|
||||||
|
|
||||||
// 表格引用
|
// 表格引用
|
||||||
const tableRef = ref()
|
const tableRef = ref()
|
||||||
@@ -255,7 +261,7 @@ const getCheckInStatusData = async () => {
|
|||||||
const data = await getTypeValue('check_in_status')
|
const data = await getTypeValue('check_in_status')
|
||||||
checkInStatusData.value = data.data || []
|
checkInStatusData.value = data.data || []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取报到状态字典失败', error)
|
// 获取报到状态字典失败
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ import { storeToRefs } from 'pinia'
|
|||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { getDataStatistics } from '/@/api/recruit/newstucheckin'
|
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 { getDeptList } from '/@/api/basic/basicclass'
|
||||||
import { queryAllClass } from '/@/api/basic/basicclass'
|
import { queryAllClass } from '/@/api/basic/basicclass'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
@@ -153,7 +153,7 @@ const init = async () => {
|
|||||||
// 查看所有入学年份
|
// 查看所有入学年份
|
||||||
const getGradeData = async () => {
|
const getGradeData = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
gradeList.value = data.data || []
|
gradeList.value = data.data || []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取入学年份失败', error)
|
console.error('获取入学年份失败', error)
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ import { ref, reactive, watch } from 'vue'
|
|||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { getDataByRoomNo } from "/@/api/stuwork/dormroom"
|
import { getDataByRoomNo } from "/@/api/stuwork/dormroom"
|
||||||
import { fearchRoomStuNum } from "/@/api/stuwork/dormroomstudent"
|
import { fearchRoomStuNum } from "/@/api/stuwork/dormroomstudent"
|
||||||
import { getDictByType } from "/@/api/contract/contract"
|
import { getDicts } from "/@/api/admin/dict"
|
||||||
import { putObj } from '@/api/recruit/newstucheckin'
|
import { putObj } from '@/api/recruit/newstucheckin'
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
@@ -222,7 +222,7 @@ const init = (formData: any, pageData: any) => {
|
|||||||
remoteMethod(formData.roomNo)
|
remoteMethod(formData.roomNo)
|
||||||
fearchRoomStuNums(formData.bedNo)
|
fearchRoomStuNums(formData.bedNo)
|
||||||
}
|
}
|
||||||
getDictByType('check_in_status').then(data => {
|
getDicts('check_in_status').then(data => {
|
||||||
checkInStatusData.value = data.data
|
checkInStatusData.value = data.data
|
||||||
})
|
})
|
||||||
console.log("OKKK")
|
console.log("OKKK")
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
v-model="visible"
|
v-model="visible"
|
||||||
append-to-body
|
append-to-body
|
||||||
|
width="600px"
|
||||||
>
|
>
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="140px">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
||||||
|
|
||||||
<el-form-item label="模拟学生" prop="serialNumber">
|
<el-form-item label="模拟学生" prop="serialNumber">
|
||||||
<el-select
|
<el-select
|
||||||
@@ -15,7 +16,7 @@
|
|||||||
remote
|
remote
|
||||||
clearable
|
clearable
|
||||||
reserve-keyword
|
reserve-keyword
|
||||||
:disabled="!!dataForm.id" placeholder="请选择唯一号" size="small" style="width: 100%"
|
:disabled="!!dataForm.id" placeholder="请选择唯一号"
|
||||||
:remote-method="remoteTeacherByQuery"
|
:remote-method="remoteTeacherByQuery"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
@@ -27,7 +28,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="来源" prop="isOut">
|
<el-form-item label="来源" prop="isOut">
|
||||||
<el-select v-model="dataForm.isOut" filterable disabled placeholder="请选择来源" size="small" style="width: 100%" >
|
<el-select v-model="dataForm.isOut" filterable disabled placeholder="请选择来源" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in isOutList"
|
v-for="item in isOutList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -37,48 +38,48 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="拟报专业1" prop="wishMajorOne">
|
<el-form-item label="拟报专业1" prop="wishMajorOne">
|
||||||
<el-select v-model="dataForm.wishMajorOne" filterable placeholder="请选择拟报专业1" size="small" style="width: 100%">
|
<el-select v-model="dataForm.wishMajorOne" filterable placeholder="请选择拟报专业1" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc+' | '+item.xz+'年 | '+item.zydm"
|
:label="item.majorName+' | '+item.learnYear+'年 | '+item.majorCode"
|
||||||
:value="item.zydm"
|
:value="item.majorCode"
|
||||||
:disabled="isDisable(item.zydm)"
|
:disabled="isDisable(item.majorCode)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="拟报专业2" prop="wishMajorTwo">
|
<el-form-item label="拟报专业2" prop="wishMajorTwo">
|
||||||
<el-select v-model="dataForm.wishMajorTwo" filterable placeholder="请选择拟报专业2" size="small" style="width: 100%">
|
<el-select v-model="dataForm.wishMajorTwo" filterable placeholder="请选择拟报专业2" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc+' | '+item.xz+'年 | '+item.zydm"
|
:label="item.majorName+' | '+item.learnYear+'年 | '+item.majorCode"
|
||||||
:value="item.zydm"
|
:value="item.majorCode"
|
||||||
:disabled="isDisable(item.zydm)"
|
:disabled="isDisable(item.majorCode)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="拟报专业3" prop="wishMajorThree">
|
<el-form-item label="拟报专业3" prop="wishMajorThree">
|
||||||
<el-select v-model="dataForm.wishMajorThree" filterable placeholder="请选择拟报专业3" size="small" style="width: 100%">
|
<el-select v-model="dataForm.wishMajorThree" filterable placeholder="请选择拟报专业3" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc+' | '+item.xz+'年 | '+item.zydm"
|
:label="item.majorName+' | '+item.learnYear+'年 | '+item.majorCode"
|
||||||
:value="item.zydm"
|
:value="item.majorCode"
|
||||||
:disabled="isDisable(item.zydm)"
|
:disabled="isDisable(item.majorCode)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="录取专业" prop="confirmedMajor">
|
<el-form-item label="录取专业" prop="confirmedMajor">
|
||||||
<el-select v-model="dataForm.confirmedMajor" filterable placeholder="请选择录取专业" size="small" style="width: 100%">
|
<el-select v-model="dataForm.confirmedMajor" filterable placeholder="请选择录取专业" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorEduList"
|
v-for="item in planMajorEduList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc+' | '+item.xz+'年 | '+item.zydm"
|
:label="item.majorName+' | '+item.learnYear+'年 | '+item.majorCode"
|
||||||
:value="item.zydm">
|
:value="item.majorCode">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -97,9 +98,9 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, nextTick } from 'vue'
|
import { ref, reactive, nextTick } from 'vue'
|
||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { addMNObj, getMNObj, putMNObj } from '@/api/recruit/recruitImitateAdjustBatch'
|
import { addMNObj, getMNObj, putMNObj } from '/@/api/recruit/recruitImitateAdjustBatch'
|
||||||
import { getList } from "@/api/recruit/recruitstudentsignup"
|
import { getList } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { listPlanByCondition as planMajor, listByEdu } from "@/api/recruit/recruitstudentplan"
|
import { listPlanByCondition as planMajor, listByEdu } from '/@/api/recruit/recruitstudentplan'
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
@@ -151,10 +152,10 @@ const dataRule = {
|
|||||||
/**
|
/**
|
||||||
* 判断拟报专业是否已经占用,占用不可选
|
* 判断拟报专业是否已经占用,占用不可选
|
||||||
*/
|
*/
|
||||||
const isDisable = (zydm: string) => {
|
const isDisable = (majorCode: string) => {
|
||||||
if (zydm == dataForm.wishMajorOne
|
if (majorCode == dataForm.wishMajorOne
|
||||||
|| zydm == dataForm.wishMajorTwo
|
|| majorCode == dataForm.wishMajorTwo
|
||||||
|| zydm == dataForm.wishMajorThree
|
|| majorCode == dataForm.wishMajorThree
|
||||||
) {
|
) {
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
@@ -262,7 +263,7 @@ const dataFormSubmit = () => {
|
|||||||
|
|
||||||
// 初始化方法
|
// 初始化方法
|
||||||
const init = (id: string | null, groupId: string, batchNo: string) => {
|
const init = (id: string | null, groupId: string, batchNo: string) => {
|
||||||
dataForm.id = id || ""
|
dataForm.id = id || null
|
||||||
dataForm.batchNo = batchNo
|
dataForm.batchNo = batchNo
|
||||||
dataForm.groupId = groupId
|
dataForm.groupId = groupId
|
||||||
visible.value = true
|
visible.value = true
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
import { ref, reactive, nextTick } from 'vue'
|
import { ref, reactive, nextTick } from 'vue'
|
||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { addObj, getObj, putObj } from '/@/api/recruit/recruitImitateAdjustBatch'
|
import { addObj, getObj, putObj } from '/@/api/recruit/recruitImitateAdjustBatch'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
@@ -68,7 +68,7 @@ const dataRule = {
|
|||||||
|
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const initData = () => {
|
const initData = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (!dataForm.id) {
|
if (!dataForm.id) {
|
||||||
dataForm.groupId = planList.value[0].id
|
dataForm.groupId = planList.value[0].id
|
||||||
@@ -110,7 +110,7 @@ const dataFormSubmit = () => {
|
|||||||
|
|
||||||
// 初始化方法
|
// 初始化方法
|
||||||
const init = (id: string | null) => {
|
const init = (id: string | null) => {
|
||||||
dataForm.id = id || ""
|
dataForm.id = id || null
|
||||||
visible.value = true
|
visible.value = true
|
||||||
canSubmit.value = true
|
canSubmit.value = true
|
||||||
initData()
|
initData()
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitImitateAdjustBatch_add"
|
v-auth="'recruit_recruitImitateAdjustBatch_add'"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="FolderAdd"
|
icon="FolderAdd"
|
||||||
@click="addOrUpdateHandle"
|
@click="addOrUpdateHandle"
|
||||||
@@ -68,10 +68,10 @@
|
|||||||
<el-table-column prop="batchName" label="批次名称" align="center" show-overflow-tooltip />
|
<el-table-column prop="batchName" label="批次名称" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="batchCode" label="批次代码" align="center" show-overflow-tooltip />
|
<el-table-column prop="batchCode" label="批次代码" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="peopleNumber" label="人数" align="center" show-overflow-tooltip />
|
<el-table-column prop="peopleNumber" label="人数" align="center" show-overflow-tooltip />
|
||||||
<el-table-column label="操作" width="300" align="center" fixed="right">
|
<el-table-column label="操作" width="380" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitImitateAdjustBatch_show"
|
v-auth="'recruit_recruitImitateAdjustBatch_show'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="Document"
|
icon="Document"
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
模拟列表
|
模拟列表
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitImitateAdjustBatch_show"
|
v-auth="'recruit_recruitImitateAdjustBatch_show'"
|
||||||
type="warning"
|
type="warning"
|
||||||
link
|
link
|
||||||
icon="Download"
|
icon="Download"
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
导出模拟结果
|
导出模拟结果
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitImitateAdjustBatch_edit"
|
v-auth="'recruit_recruitImitateAdjustBatch_edit'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="EditPen"
|
icon="EditPen"
|
||||||
@@ -98,8 +98,8 @@
|
|||||||
修改
|
修改
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitImitateAdjustBatch_del"
|
v-auth="'recruit_recruitImitateAdjustBatch_del'"
|
||||||
type="danger"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
@click="deleteHandle(scope.row.id)"
|
@click="deleteHandle(scope.row.id)"
|
||||||
@@ -125,30 +125,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitImitateAdjustBatch">
|
<script setup lang="ts" name="recruitImitateAdjustBatch">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { delObj, fetchList } from '/@/api/recruit/recruitImitateAdjustBatch'
|
import { delObj, fetchList } from '/@/api/recruit/recruitImitateAdjustBatch'
|
||||||
|
|
||||||
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
||||||
const MnTable = defineAsyncComponent(() => import('./mnTable.vue'))
|
const MnTable = defineAsyncComponent(() => import('./mnTable.vue'))
|
||||||
|
|
||||||
// 使用 Pinia store
|
|
||||||
const userInfoStore = useUserInfo()
|
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
@@ -159,10 +144,6 @@ const searchFormRef = ref()
|
|||||||
const addOrUpdateRef = ref()
|
const addOrUpdateRef = ref()
|
||||||
const mnTableRef = ref()
|
const mnTableRef = ref()
|
||||||
|
|
||||||
// 弹窗状态
|
|
||||||
const addOrUpdateVisible = ref(false)
|
|
||||||
const mnTableVisible = ref(false)
|
|
||||||
|
|
||||||
// 数据
|
// 数据
|
||||||
const planList = ref<any[]>([])
|
const planList = ref<any[]>([])
|
||||||
|
|
||||||
@@ -194,7 +175,7 @@ const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle, downBlob
|
|||||||
// 初始化
|
// 初始化
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
planList.value = data.data || []
|
planList.value = data.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
|
|||||||
@@ -7,10 +7,9 @@
|
|||||||
>
|
>
|
||||||
<el-form :inline="true">
|
<el-form :inline="true">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button v-if="permissions.recruit_recruitImitateAdjustBatch_add" :icon="Plus" size="small" type="primary" @click="addOrUpdateHandle()">新增</el-button>
|
<el-button v-auth="'recruit_recruitImitateAdjustBatch_add'" icon="FolderAdd" type="primary" @click="addOrUpdateHandle()">新增</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="avue-crud">
|
|
||||||
<el-table
|
<el-table
|
||||||
:data="dataList"
|
:data="dataList"
|
||||||
border
|
border
|
||||||
@@ -35,8 +34,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="性别">
|
label="性别">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.gender==1">男</span>
|
<GenderTag :sex="scope.row.gender" />
|
||||||
<span v-if="scope.row.gender==2">女</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -45,7 +43,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="学历">
|
label="学历">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{global.getLabelValueByPropes(eduList,scope.row.degreeOfEducation,{'key':'value','value':'label'})}}
|
{{ getLabelValueByProps(eduList, scope.row.degreeOfEducation, { key: 'value', value: 'label' }) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -55,7 +53,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="拟报专业1">
|
label="拟报专业1">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{global.getLabelValueByPropes2(planMajorList,scope.row.wishMajorOne,{'key':'zydm','value':'zymc'})}}
|
{{ getLabelValueByProps(planMajorList, scope.row.wishMajorOne, { key: 'majorCode', value: 'majorName' }) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -65,7 +63,7 @@
|
|||||||
width="100px"
|
width="100px"
|
||||||
label="拟报专业2">
|
label="拟报专业2">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{global.getLabelValueByPropes2(planMajorList,scope.row.wishMajorTwo,{'key':'zydm','value':'zymc'})}}
|
{{ getLabelValueByProps(planMajorList, scope.row.wishMajorTwo, { key: 'majorCode', value: 'majorName' }) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
@@ -76,7 +74,7 @@
|
|||||||
width="100px"
|
width="100px"
|
||||||
label="拟报专业3">
|
label="拟报专业3">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{global.getLabelValueByPropes2(planMajorList,scope.row.wishMajorThree,{'key':'zydm','value':'zymc'})}}
|
{{ getLabelValueByProps(planMajorList, scope.row.wishMajorThree, { key: 'majorCode', value: 'majorName' }) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -85,7 +83,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="原录取专业">
|
label="原录取专业">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{global.getLabelValueByPropes2(planMajorList,scope.row.oldConfirmedMajor,{'key':'zydm','value':'zymc'})}}
|
{{ getLabelValueByProps(planMajorList, scope.row.oldConfirmedMajor, { key: 'majorCode', value: 'majorName' }) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -94,7 +92,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="模拟录取专业">
|
label="模拟录取专业">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{global.getLabelValueByPropes2(planMajorList,scope.row.confirmedMajor,{'key':'zydm','value':'zymc'})}}
|
{{ getLabelValueByProps(planMajorList, scope.row.confirmedMajor, { key: 'majorCode', value: 'majorName' }) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -113,49 +111,33 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="操作">
|
label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button v-if="permissions.recruit_recruitImitateAdjustBatch_edit" type="text" size="small" :icon="Edit" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
<el-button v-auth="'recruit_recruitImitateAdjustBatch_edit'" type="text" size="small" :icon="Edit" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
||||||
<el-button v-if="permissions.recruit_recruitImitateAdjustBatch_del" type="text" size="small" :icon="Delete" @click="deleteHandle(scope.row.id)">删除</el-button>
|
<el-button v-auth="'recruit_recruitImitateAdjustBatch_del'" type="text" size="small" :icon="Delete" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
|
||||||
|
|
||||||
<add-m-n-stu v-if="addMnStuVisible" ref="addMnStuRef" @refreshDataList="getDataList"></add-m-n-stu>
|
<add-m-n-stu v-if="addMnStuVisible" ref="addMnStuRef" @refreshDataList="getDataList"></add-m-n-stu>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, computed, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, nextTick, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { Plus, Edit, Delete } from '@element-plus/icons-vue'
|
import { Edit, Delete } from '@element-plus/icons-vue'
|
||||||
import { getMNStuList, delMNObj } from '@/api/recruit/recruitImitateAdjustBatch'
|
import { getMNStuList, delMNObj } from '/@/api/recruit/recruitImitateAdjustBatch'
|
||||||
import { listPlanByCondition as planMajor } from "@/api/recruit/recruitstudentplan"
|
import { listPlanByCondition as planMajor } from '/@/api/recruit/recruitstudentplan'
|
||||||
import { getTypeValue } from "@/api/admin/dict"
|
import { getTypeValue } from '/@/api/admin/dict'
|
||||||
// @ts-ignore
|
import { getLabelValueByProps } from '/@/utils/dictLabel'
|
||||||
import global from '@/components/tools/commondict.vue'
|
|
||||||
|
|
||||||
const AddMNStu = defineAsyncComponent(() => import('./addMNStu.vue'))
|
const AddMNStu = defineAsyncComponent(() => import('./addMNStu.vue'))
|
||||||
|
const GenderTag = defineAsyncComponent(() => import('@/components/GenderTag/index.vue'))
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(e: 'refreshDataList'): void
|
(e: 'refreshDataList'): void
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
// 使用 Pinia store
|
|
||||||
const userInfoStore = useUserInfo()
|
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
@@ -240,7 +222,4 @@ defineExpose({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.avue-crud {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
<div class="dialog-content">
|
<div class="dialog-content">
|
||||||
<!-- 时间选择器和操作按钮 -->
|
<!-- 时间选择器和操作按钮 -->
|
||||||
<el-form :inline="true" :model="queryForm">
|
<el-form :inline="true" :model="queryForm">
|
||||||
<el-form-item label="审核时间范围:" label-width="110px">
|
<el-form-item label="审核时间范围:">
|
||||||
<el-time-picker
|
<el-time-picker
|
||||||
is-range
|
is-range
|
||||||
v-model="form.time1"
|
v-model="form.time1"
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="mb15" v-if="permissions.recruit_recruitexampeople_add">
|
<div class="mb15" v-if="permissions.recruit_recruitexampeople_add">
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="姓名" align="center" prop="teacherName" show-overflow-tooltip>
|
<el-table-column label="姓名" align="center" prop="teacherName" show-overflow-tooltip>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="120" align="center" fixed="right">
|
<el-table-column label="操作" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitexampeople_del"
|
v-if="permissions.recruit_recruitexampeople_del"
|
||||||
@@ -212,7 +212,7 @@ const handleSave = async (data: { teacherNo: string; startTime: string; endTime:
|
|||||||
// 删除
|
// 删除
|
||||||
const handleDel = async (row: any) => {
|
const handleDel = async (row: any) => {
|
||||||
try {
|
try {
|
||||||
await messageBox.confirm(`是否确认删除ID为${row.id}的记录?`)
|
await messageBox.confirm(`是否确认删除工号为${row.teacherNo}的记录?`)
|
||||||
await delObj(row.id)
|
await delObj(row.id)
|
||||||
message.success('删除成功')
|
message.success('删除成功')
|
||||||
getDataList()
|
getDataList()
|
||||||
|
|||||||
@@ -4,8 +4,6 @@
|
|||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
v-model="visible"
|
v-model="visible"
|
||||||
width="600px"
|
width="600px"
|
||||||
destroy-on-close
|
|
||||||
|
|
||||||
>
|
>
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit"
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit"
|
||||||
label-width="120px">
|
label-width="120px">
|
||||||
@@ -20,14 +18,11 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="专业代码" prop="zydm">
|
<el-form-item label="专业代码" prop="majorCode">
|
||||||
<el-input v-model="dataForm.zydm" placeholder="专业代码"></el-input>
|
<el-input v-model="dataForm.majorCode" placeholder="专业代码"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="专业名称" prop="zymc">
|
<el-form-item label="专业名称" prop="majorName">
|
||||||
<el-input v-model="dataForm.zymc" placeholder="专业名称"></el-input>
|
<el-input v-model="dataForm.majorName" placeholder="专业名称"></el-input>
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="专业规范名称" prop="zygfmc">
|
|
||||||
<el-input v-model="dataForm.zygfmc" placeholder="专业规范名称"></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所属学院" prop="deptCode">
|
<el-form-item label="所属学院" prop="deptCode">
|
||||||
<el-select v-model="dataForm.deptCode" filterable placeholder="请选择">
|
<el-select v-model="dataForm.deptCode" filterable placeholder="请选择">
|
||||||
@@ -39,8 +34,8 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="学制" prop="xz">
|
<el-form-item label="学制" prop="learnYear">
|
||||||
<el-select v-model="dataForm.xz" filterable placeholder="请选择学制">
|
<el-select v-model="dataForm.learnYear" filterable placeholder="请选择学制">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in majorYears"
|
v-for="item in majorYears"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -49,8 +44,8 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="层次" prop="cc">
|
<el-form-item label="层次" prop="majorLevel">
|
||||||
<el-select v-model="dataForm.cc" filterable placeholder="请选择层次">
|
<el-select v-model="dataForm.majorLevel" filterable placeholder="请选择层次">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in ccList"
|
v-for="item in ccList"
|
||||||
:key="item.label"
|
:key="item.label"
|
||||||
@@ -74,8 +69,8 @@
|
|||||||
<el-radio v-for="item in yes_no_type" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio v-for="item in yes_no_type" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="正式专业代码" prop="offcialZydm">
|
<el-form-item label="正式专业代码" prop="stuworkMajorCode">
|
||||||
<el-select v-model="dataForm.offcialZydm" filterable placeholder="请选择正式专业代码">
|
<el-select v-model="dataForm.stuworkMajorCode" filterable placeholder="请选择正式专业代码">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in offcialZydmList"
|
v-for="item in offcialZydmList"
|
||||||
:key="item.majorCode"
|
:key="item.majorCode"
|
||||||
@@ -85,25 +80,23 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="市平台代码" prop="cityPlanId">
|
<!-- <el-form-item label="市平台代码" prop="cityPlanId">-->
|
||||||
<el-select v-model="dataForm.cityPlanId" filterable placeholder="请选择市平台代码">
|
<!-- <el-select v-model="dataForm.cityPlanId" filterable placeholder="请选择市平台代码">-->
|
||||||
<el-option
|
<!-- <el-option-->
|
||||||
v-for="item in cityPlanIdList"
|
<!-- v-for="item in cityPlanIdList"-->
|
||||||
:key="item.id"
|
<!-- :key="item.id"-->
|
||||||
:label="item.schoolMajorName+' | '+item.educational"
|
<!-- :label="item.schoolMajorName+' | '+item.educational"-->
|
||||||
:value="item.id"
|
<!-- :value="item.id"-->
|
||||||
:disabled="isCityDisable(item.id)"
|
<!-- :disabled="isCityDisable(item.id)"-->
|
||||||
>
|
<!-- >-->
|
||||||
</el-option>
|
<!-- </el-option>-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
<el-form-item label="排序" prop="sort">
|
<el-form-item label="排序" prop="sort">
|
||||||
<el-input-number :min="0" :max="999" v-model="dataForm.sort" placeholder="排序"
|
<el-input-number :min="0" :max="999" v-model="dataForm.sort" placeholder="排序"></el-input-number>
|
||||||
style="width: 100%"></el-input-number>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remarks">
|
<el-form-item label="备注" prop="remarks">
|
||||||
<el-input type="textarea" :rows="3" placeholder="请输入备注信息" v-model="dataForm.remarks"
|
<el-input type="textarea" :rows="3" placeholder="请输入备注信息" v-model="dataForm.remarks"></el-input>
|
||||||
style="width: 100%;margin-top: 10px"></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
@@ -121,9 +114,9 @@ import { ref, reactive, nextTick } from 'vue'
|
|||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { addObj, getObj, putObj } from '/@/api/recruit/recruitstudentplan'
|
import { addObj, getObj, putObj } from '/@/api/recruit/recruitstudentplan'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { getMajorNameList } from '/@/api/basic/major'
|
import { getMajorNameList } from '/@/api/basic/major'
|
||||||
import { getDicts } from '/@/api/admin/dict'
|
import { getDictsByTypes } from '/@/api/admin/dict'
|
||||||
import { useDict } from '/@/hooks/dict'
|
import { useDict } from '/@/hooks/dict'
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
@@ -150,51 +143,42 @@ const majorYears = ref<any[]>([])
|
|||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
id: "",
|
id: "",
|
||||||
groupId: "",
|
groupId: "",
|
||||||
zydm: "",
|
majorCode: "",
|
||||||
zymc: "",
|
majorName: "",
|
||||||
zygfmc: "",
|
|
||||||
deptCode: "",
|
deptCode: "",
|
||||||
xz: "",
|
learnYear: "",
|
||||||
cc: "",
|
majorLevel: "",
|
||||||
isZd: "0",
|
isZd: "0",
|
||||||
isOrder: "0",
|
isOrder: "0",
|
||||||
remarks: "",
|
remarks: "",
|
||||||
offcialZydm: "",
|
stuworkMajorCode: "",
|
||||||
isUnion: "0",
|
isUnion: "0",
|
||||||
tuitionFee: 0,
|
tuitionFee: 0,
|
||||||
cityPlanId: null as string | null,
|
|
||||||
cityPlanIds: [] as string[],
|
|
||||||
cityPlanName: "",
|
|
||||||
cityPlanYear: "",
|
|
||||||
sort: 0
|
sort: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
const dataRule = {
|
const dataRule = {
|
||||||
zydm: [
|
majorCode: [
|
||||||
{ required: true, message: '专业代码不能为空', trigger: 'blur' },
|
{ required: true, message: '专业代码不能为空', trigger: 'blur' },
|
||||||
{ min: 1, max: 6, message: '专业代码长度不大于6个字符', trigger: 'blur' }
|
{ min: 1, max: 6, message: '专业代码长度不大于6个字符', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
tuitionFee: [
|
tuitionFee: [
|
||||||
{ required: true, message: '学费不能为空', trigger: 'blur' }
|
{ required: true, message: '学费不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
zymc: [
|
majorName: [
|
||||||
{ required: true, message: '专业名称不能为空', trigger: 'blur' },
|
{ required: true, message: '专业名称不能为空', trigger: 'blur' },
|
||||||
{ min: 1, max: 200, message: '专业名称长度不大于200个字符', 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: [
|
groupId: [
|
||||||
{ required: true, message: '招生计划不能为空', trigger: 'blur' }
|
{ required: true, message: '招生计划不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
xz: [
|
learnYear: [
|
||||||
{ required: true, message: '学制不能为空', trigger: 'blur' }
|
{ required: true, message: '学制不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
deptCode: [
|
deptCode: [
|
||||||
{ required: true, message: '学院不能为空', trigger: 'blur' }
|
{ required: true, message: '学院不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
cc: [
|
majorLevel: [
|
||||||
{ required: true, message: '层次不能为空', trigger: 'blur' }
|
{ required: true, message: '层次不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
isOrder: [
|
isOrder: [
|
||||||
@@ -227,21 +211,16 @@ const initData = () => {
|
|||||||
getDeptList().then((data: any) => {
|
getDeptList().then((data: any) => {
|
||||||
deptList.value = data.data
|
deptList.value = data.data
|
||||||
})
|
})
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (!dataForm.id) {
|
|
||||||
dataForm.groupId = planList.value[0]?.id || ""
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
getMajorNameList().then((data: any) => {
|
getMajorNameList().then((data: any) => {
|
||||||
offcialZydmList.value = data.data
|
offcialZydmList.value = data.data
|
||||||
})
|
})
|
||||||
// 获取数据字典
|
// 获取数据字典(一次获取多个)
|
||||||
getDicts('basic_major_years').then((res: any) => {
|
getDictsByTypes(['basic_major_years', 'basic_major_level']).then((res: any) => {
|
||||||
majorYears.value = res.data || []
|
majorYears.value = res.data?.basic_major_years || []
|
||||||
})
|
ccList.value = res.data?.basic_major_level || []
|
||||||
getDicts('basic_major_level').then((res: any) => {
|
|
||||||
ccList.value = res.data || []
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,23 +266,40 @@ const dataFormSubmit = () => {
|
|||||||
|
|
||||||
// 初始化方法
|
// 初始化方法
|
||||||
const init = (id: string | null) => {
|
const init = (id: string | null) => {
|
||||||
dataForm.id = id || ""
|
|
||||||
visible.value = true
|
visible.value = true
|
||||||
canSubmit.value = true
|
canSubmit.value = true
|
||||||
initData()
|
dataForm.id = ""
|
||||||
|
|
||||||
|
// 重置表单数据
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
dataFormRef.value?.resetFields()
|
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)
|
Object.assign(dataForm, response.data)
|
||||||
// 获取市平台对应年份下的招生计划
|
// 获取市平台对应年份下的招生计划
|
||||||
// getCityPlan({ id: dataForm.id }).then((data: any) => {
|
// getCityPlan({ id: dataForm.id }).then((data: any) => {
|
||||||
// cityPlanIdList.value = data.data
|
// cityPlanIdList.value = data.data
|
||||||
// })
|
// })
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
// 错误处理
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
// 新增模式:设置默认招生计划
|
||||||
|
getList().then((data: any) => {
|
||||||
|
if (data.data && data.data.length > 0) {
|
||||||
|
dataForm.groupId = data.data[0]?.id || ""
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 暴露方法给父组件
|
// 暴露方法给父组件
|
||||||
defineExpose({
|
defineExpose({
|
||||||
|
|||||||
@@ -40,14 +40,14 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="专业序号" prop="zydm">
|
<el-form-item label="专业序号" prop="majorCode">
|
||||||
<el-input v-model="queryForm.zydm" placeholder="专业序号" />
|
<el-input v-model="queryForm.majorCode" placeholder="专业序号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="专业名称" prop="zymc">
|
<el-form-item label="专业名称" prop="majorName">
|
||||||
<el-input v-model="queryForm.zymc" placeholder="专业名称" />
|
<el-input v-model="queryForm.majorName" placeholder="专业名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="学制" prop="xz">
|
<el-form-item label="学制" prop="learnYear">
|
||||||
<el-input v-model="queryForm.xz" placeholder="学制" />
|
<el-input v-model="queryForm.learnYear" placeholder="学制" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitplanmajor_add"
|
v-auth="'recruit_recruitplanmajor_add'"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="FolderAdd"
|
icon="FolderAdd"
|
||||||
@click="addOrUpdateHandle"
|
@click="addOrUpdateHandle"
|
||||||
@@ -83,31 +83,21 @@
|
|||||||
{{ getPlanName(scope.row.groupId) }}
|
{{ getPlanName(scope.row.groupId) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="zydm" label="专业序号" align="center" show-overflow-tooltip />
|
<el-table-column prop="majorCode" label="专业序号" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="zymc" label="专业名称" align="center" show-overflow-tooltip />
|
<el-table-column prop="majorName" label="专业名称" align="center" show-overflow-tooltip />
|
||||||
<!-- <el-table-column prop="zygfmc" label="专业规范名称" align="center" show-overflow-tooltip /> -->
|
|
||||||
<el-table-column prop="deptCode" label="学院" align="center" show-overflow-tooltip>
|
<el-table-column prop="deptCode" label="学院" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getDeptName(scope.row.deptCode) }}
|
{{ getDeptName(scope.row.deptCode) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="xz" label="学制" align="center" width="80" show-overflow-tooltip />
|
<el-table-column prop="learnYear" label="学制" align="center" width="80" show-overflow-tooltip />
|
||||||
<el-table-column prop="cc" label="层次" align="center" show-overflow-tooltip />
|
<el-table-column prop="majorLevel" label="层次" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="isOrder" label="订单班" align="center" width="80" show-overflow-tooltip>
|
<el-table-column prop="isOrder" label="订单班|中德班|联院班" align="center" width="180" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getYesNoLabel(scope.row.isOrder) }}
|
{{ getYesNoLabel(scope.row.isOrder) }}|{{ getYesNoLabel(scope.row.isZd) }}|{{ getYesNoLabel(scope.row.isUnion) }}
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="isZd" label="中德班" align="center" width="80" show-overflow-tooltip>
|
|
||||||
<template #default="scope">
|
|
||||||
{{ getYesNoLabel(scope.row.isZd) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="isUnion" label="联院班" align="center" width="80" show-overflow-tooltip>
|
|
||||||
<template #default="scope">
|
|
||||||
{{ getYesNoLabel(scope.row.isUnion) }}
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column prop="sm" label="色盲不可录" align="center" width="120">
|
<el-table-column prop="sm" label="色盲不可录" align="center" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@@ -120,9 +110,9 @@
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="offcialZydm" label="正式专业代码" align="center" show-overflow-tooltip>
|
<el-table-column prop="stuworkMajorCode" label="正式专业代码" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getMajorCodeName(scope.row.offcialZydm) }}
|
{{ getMajorCodeName(scope.row.stuworkMajorCode) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column prop="cityPlanId" label="市平台招生计划" align="center" show-overflow-tooltip>
|
<!-- <el-table-column prop="cityPlanId" label="市平台招生计划" align="center" show-overflow-tooltip>
|
||||||
@@ -134,17 +124,17 @@
|
|||||||
<el-table-column label="操作" width="150" align="center" fixed="right">
|
<el-table-column label="操作" width="150" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitplanmajor_edit"
|
v-auth="'recruit_recruitplanmajor_edit'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="EditPen"
|
icon="EditPen"
|
||||||
@click="addOrUpdateHandle(scope.row.id)"
|
@click="addOrUpdateHandle(scope.row)"
|
||||||
>
|
>
|
||||||
修改
|
修改
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitplanmajor_del"
|
v-auth="'recruit_recruitplanmajor_del'"
|
||||||
type="danger"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
@click="deleteHandle(scope.row.id)"
|
@click="deleteHandle(scope.row.id)"
|
||||||
@@ -169,32 +159,17 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitplanmajor">
|
<script setup lang="ts" name="recruitplanmajor">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { useDict } from '/@/hooks/dict'
|
import { useDict } from '/@/hooks/dict'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { fetchList, putObj, delObj } from '/@/api/recruit/recruitstudentplan'
|
import { fetchList, delObj, editQuickField } from '/@/api/recruit/recruitstudentplan'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
import { getMajorNameList } from '/@/api/basic/major'
|
import { getMajorNameList } from '/@/api/basic/major'
|
||||||
|
|
||||||
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
||||||
|
|
||||||
// 使用 Pinia store
|
|
||||||
const userInfoStore = useUserInfo()
|
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
@@ -216,9 +191,9 @@ const offcialZydmList = ref<any[]>([])
|
|||||||
const queryForm = reactive({
|
const queryForm = reactive({
|
||||||
groupId: '',
|
groupId: '',
|
||||||
deptCode: '',
|
deptCode: '',
|
||||||
zydm: '',
|
majorCode: '',
|
||||||
zymc: '',
|
majorName: '',
|
||||||
xz: ''
|
learnYear: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
// 获取计划名称
|
// 获取计划名称
|
||||||
@@ -271,7 +246,7 @@ const init = async () => {
|
|||||||
deptList.value = deptData.data || []
|
deptList.value = deptData.data || []
|
||||||
|
|
||||||
// 获取招生计划列表
|
// 获取招生计划列表
|
||||||
const planData = await list()
|
const planData = await getList()
|
||||||
planList.value = planData.data || []
|
planList.value = planData.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
@@ -283,14 +258,15 @@ const init = async () => {
|
|||||||
|
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化失败', error)
|
message.error('初始化失败')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改开关
|
// 修改开关
|
||||||
const changeSm = async (row: any) => {
|
const changeSm = async (row: any) => {
|
||||||
try {
|
try {
|
||||||
await putObj(row)
|
let parmas={id:row.id,sm:row.sm}
|
||||||
|
await editQuickField(parmas)
|
||||||
message.success('修改成功')
|
message.success('修改成功')
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.error(error.msg || '修改失败')
|
message.error(error.msg || '修改失败')
|
||||||
@@ -298,9 +274,9 @@ const changeSm = async (row: any) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 新增 / 修改
|
// 新增 / 修改
|
||||||
const addOrUpdateHandle = (id?: string) => {
|
const addOrUpdateHandle = (row?: any) => {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
addOrUpdateRef.value?.init(id || null)
|
addOrUpdateRef.value?.init(row.id || null)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,9 +297,9 @@ const resetQuery = () => {
|
|||||||
searchFormRef.value?.resetFields()
|
searchFormRef.value?.resetFields()
|
||||||
queryForm.groupId = ''
|
queryForm.groupId = ''
|
||||||
queryForm.deptCode = ''
|
queryForm.deptCode = ''
|
||||||
queryForm.zydm = ''
|
queryForm.majorCode = ''
|
||||||
queryForm.zymc = ''
|
queryForm.majorName = ''
|
||||||
queryForm.xz = ''
|
queryForm.learnYear = ''
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,272 +1,231 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog title="招生计划专业调整" append-to-body width="70%" :close-on-click-modal="false" v-model="visible">
|
||||||
title="招生计划专业调整"
|
<el-form :model="dataForm" ref="dataFormRef" class="mb4">
|
||||||
append-to-body
|
|
||||||
width="90%"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
v-model="visible">
|
|
||||||
<el-form :model="dataForm" ref="dataFormRef" label-width="140px">
|
|
||||||
<el-form-item label="招生计划名称" prop="groupName">
|
<el-form-item label="招生计划名称" prop="groupName">
|
||||||
<el-input v-model="dataForm.groupName" placeholder="招生计划名称" disabled></el-input>
|
<el-input v-model="dataForm.groupName" placeholder="招生计划名称" disabled style="width: 200px"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-tabs v-model="activiName" @tab-click="handleChange">
|
<el-tabs v-model="activiName" @tab-click="handleChange">
|
||||||
<el-tab-pane v-for="item in deptList"
|
<el-tab-pane v-for="item in deptList" :key="item.deptCode" :label="item.deptName" :name="item.deptCode">
|
||||||
:key="item.deptCode"
|
<div>
|
||||||
:label="item.deptName"
|
<el-table :data="dataList" border stripe v-loading="dataListLoading">
|
||||||
:name="item.deptCode">
|
<el-table-column prop="majorName" header-align="center" align="center" label="专业">
|
||||||
<div style="margin-top: 20px;">
|
|
||||||
<el-table
|
|
||||||
:data="dataList"
|
|
||||||
border
|
|
||||||
stripe
|
|
||||||
v-loading="dataListLoading">
|
|
||||||
<el-table-column
|
|
||||||
prop="zymc"
|
|
||||||
header-align="center"
|
|
||||||
align="center"
|
|
||||||
label="专业"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.zymc+' || '+scope.row.zydm+' || '+scope.row.xz+' 年制'}}</span>
|
<span>{{ scope.row.majorName + ' || ' + scope.row.majorCode + ' || ' + scope.row.learnYear + ' 年制' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column prop="planStudentNum" header-align="center" align="center" label="计划总数" width="180px">
|
||||||
prop="planStudentNum"
|
|
||||||
header-align="center"
|
|
||||||
align="center"
|
|
||||||
label="计划总数"
|
|
||||||
width="180px"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input-number style="width: 80%" v-model="scope.row.planStudentNum" :min="0" :max="999" @change="updateMajor(scope.row)" width="100px"></el-input-number>
|
<el-input-number
|
||||||
|
style="width: 80%"
|
||||||
|
v-model="scope.row.planStudentNum"
|
||||||
|
:min="0"
|
||||||
|
:max="999"
|
||||||
|
@change="updateMajor(scope.row, 'planStudentNum')"
|
||||||
|
width="100px"
|
||||||
|
></el-input-number>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column prop="scoreLine" header-align="center" align="center" label="录取线" width="180px">
|
||||||
prop="needStudentNum"
|
|
||||||
header-align="center"
|
|
||||||
align="center"
|
|
||||||
label="控制数"
|
|
||||||
width="180px"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input-number style="width: 80%" v-model="scope.row.needStudentNum" :min="0" :max="999"
|
<el-input-number
|
||||||
@change="updateMajor(scope.row)"></el-input-number>
|
style="width: 80%"
|
||||||
|
v-model="scope.row.scoreLine"
|
||||||
|
:min="0"
|
||||||
|
:max="999"
|
||||||
|
@change="updateMajor(scope.row, 'scoreLine')"
|
||||||
|
></el-input-number>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column prop="degreeOfEducation" header-align="center" align="center" label="生源">
|
||||||
<el-table-column
|
<template #default="scope">
|
||||||
prop="needStudentOverNum"
|
<el-select
|
||||||
header-align="center"
|
v-model="scope.row.degreeOfEducation"
|
||||||
align="center"
|
placeholder="请选择生源"
|
||||||
label="预留"
|
multiple
|
||||||
width="180px"
|
style="display: flex;justify-content: center;align-items: center;"
|
||||||
|
@change="updateMajor(scope.row,'degreeOfEducation')"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<el-option v-for="item in degreeOfEducationList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
|
||||||
<el-input-number style="width: 80%" v-model="scope.row.needStudentOverNum" :min="0" :max="999"
|
|
||||||
@change="updateMajor(scope.row)"></el-input-number>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
<el-table-column
|
|
||||||
prop="scoreLine"
|
|
||||||
header-align="center"
|
|
||||||
align="center"
|
|
||||||
label="录取线"
|
|
||||||
width="180px"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
|
||||||
<el-input-number style="width: 80%" v-model="scope.row.scoreLine" :min="0" :max="999"
|
|
||||||
@change="updateMajor(scope.row)"></el-input-number>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column
|
|
||||||
prop="degreeOfEducation"
|
|
||||||
header-align="center"
|
|
||||||
align="center"
|
|
||||||
label="生源">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-select v-model="scope.row.degreeOfEducation" placeholder="请选择生源" style=" width: 100%;text-align:center" multiple
|
|
||||||
@change="updateMajor(scope.row)">
|
|
||||||
<el-option
|
|
||||||
v-for="item in degreeOfEducationList"
|
|
||||||
:key="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive } from 'vue'
|
import { ref, reactive } from 'vue';
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus';
|
||||||
import { listPlanByCondition as list, delObj ,putObj} from '/@/api/recruit/recruitstudentplan'
|
import { listPlanByCondition as list, delObj, putObj, editQuickField } from '/@/api/recruit/recruitstudentplan';
|
||||||
import { fetchSecondTree } from '/@/api/basic/basicdept'
|
import { fetchSecondTree } from '/@/api/basic/basicdept';
|
||||||
import { getDicts } from "/@/api/admin/dict"
|
import { getDicts } from '/@/api/admin/dict';
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage();
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox();
|
||||||
|
|
||||||
// 表单引用
|
// 表单引用
|
||||||
const dataFormRef = ref()
|
const dataFormRef = ref();
|
||||||
|
|
||||||
// 响应式数据
|
// 响应式数据
|
||||||
const visible = ref(false)
|
const visible = ref(false);
|
||||||
const activiName = ref("11")
|
const activiName = ref('11');
|
||||||
const dataList = ref<any[]>([])
|
const dataList = ref<any[]>([]);
|
||||||
const deptList = ref<any[]>([])
|
const deptList = ref<any[]>([]);
|
||||||
const degreeOfEducationList = ref<any[]>([])
|
const degreeOfEducationList = ref<any[]>([]);
|
||||||
const dataListLoading = ref(false)
|
const dataListLoading = ref(false);
|
||||||
|
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
groupId: "",
|
groupId: '',
|
||||||
groupName: "",
|
groupName: '',
|
||||||
deptCode: "11",
|
deptCode: '11',
|
||||||
})
|
});
|
||||||
|
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const initData = () => {
|
const initData = () => {
|
||||||
degreeOfEducationList.value = []
|
degreeOfEducationList.value = [];
|
||||||
// 获取数据字典
|
// 获取数据字典
|
||||||
getDicts("finance_student_source").then((res: any) => {
|
getDicts('finance_student_source')
|
||||||
degreeOfEducationList.value = res.data || []
|
.then((res: any) => {
|
||||||
}).catch((error: any) => {
|
degreeOfEducationList.value = res.data || [];
|
||||||
message.error('获取字典数据失败:' + (error.msg || '未知错误'))
|
|
||||||
degreeOfEducationList.value = []
|
|
||||||
})
|
})
|
||||||
}
|
.catch((error: any) => {
|
||||||
|
message.error('获取字典数据失败:' + (error.msg || '未知错误'));
|
||||||
|
degreeOfEducationList.value = [];
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// 获取部门列表
|
// 获取部门列表
|
||||||
const getDepartment = () => {
|
const getDepartment = () => {
|
||||||
fetchSecondTree().then((res: any) => {
|
fetchSecondTree()
|
||||||
deptList.value = res.data || []
|
.then((res: any) => {
|
||||||
}).catch((error: any) => {
|
deptList.value = res.data || [];
|
||||||
message.error('获取部门列表失败:' + (error.msg || '未知错误'))
|
|
||||||
deptList.value = []
|
|
||||||
})
|
})
|
||||||
}
|
.catch((error: any) => {
|
||||||
|
message.error('获取部门列表失败:' + (error.msg || '未知错误'));
|
||||||
|
deptList.value = [];
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// 更新专业
|
// 更新专业
|
||||||
const updateMajor = (row: any) => {
|
const updateMajor = (row: any, type: any) => {
|
||||||
if (!row || !row.planId) {
|
if (!row || !row.id) {
|
||||||
message.error('缺少必要的参数:planId')
|
message.error('缺少计划主键');
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (row.degreeOfEducation && Array.isArray(row.degreeOfEducation) && row.degreeOfEducation.length != 0) {
|
if (row.degreeOfEducation && Array.isArray(row.degreeOfEducation) && row.degreeOfEducation.length != 0) {
|
||||||
row.degreeOfEducations = row.degreeOfEducation.join(",")
|
row.degreeOfEducations = row.degreeOfEducation.join(',');
|
||||||
} else {
|
} else {
|
||||||
row.degreeOfEducations = ""
|
row.degreeOfEducations = '';
|
||||||
|
}
|
||||||
|
let params = {} as any;
|
||||||
|
params.id = row.id;
|
||||||
|
if (type == 'planStudentNum') {
|
||||||
|
params.planStudentNum=row.planStudentNum
|
||||||
|
}
|
||||||
|
if (type == 'scoreLine') {
|
||||||
|
params.scoreLine=row.scoreLine
|
||||||
|
}
|
||||||
|
if (type == 'degreeOfEducation') {
|
||||||
|
params.degreeOfEducation=row.degreeOfEducations
|
||||||
}
|
}
|
||||||
|
|
||||||
putObj({
|
editQuickField(params)
|
||||||
id: row.planId,
|
.then(() => {
|
||||||
planStudentNum: row.planStudentNum || 0,
|
|
||||||
planStudentBoyNum: row.planStudentBoyNum || 0,
|
|
||||||
planStudentGirlNum: row.planStudentGirlNum || 0,
|
|
||||||
needStudentNum: row.needStudentNum || 0,
|
|
||||||
needStudentOverNum: row.needStudentOverNum || 0,
|
|
||||||
scoreLine: row.scoreLine || 0,
|
|
||||||
scoreMinLine: row.scoreMinLine || 0,
|
|
||||||
degreeOfEducations: row.degreeOfEducations || ""
|
|
||||||
}).then(() => {
|
|
||||||
ElNotification.success({
|
ElNotification.success({
|
||||||
title: '成功',
|
title: '成功',
|
||||||
message: '修改成功'
|
message: '修改成功',
|
||||||
|
});
|
||||||
})
|
})
|
||||||
}).catch((error: any) => {
|
.catch((error: any) => {
|
||||||
message.error('修改失败:' + (error.msg || '未知错误'))
|
message.error('修改失败:' + (error.msg || '未知错误'));
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
// 标签切换
|
// 标签切换
|
||||||
const handleChange = (tab: any) => {
|
const handleChange = (tab: any) => {
|
||||||
dataForm.deptCode = tab.name
|
dataForm.deptCode = tab.paneName;
|
||||||
getDataList()
|
getDataList();
|
||||||
}
|
};
|
||||||
|
|
||||||
// 获取数据列表
|
// 获取数据列表
|
||||||
const getDataList = () => {
|
const getDataList = () => {
|
||||||
if (!dataForm.groupId) {
|
if (!dataForm.groupId) {
|
||||||
dataListLoading.value = false
|
dataListLoading.value = false;
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dataList.value = []
|
dataList.value = [];
|
||||||
dataListLoading.value = true
|
dataListLoading.value = true;
|
||||||
if (dataForm.deptCode == '') {
|
if (dataForm.deptCode == '') {
|
||||||
dataForm.deptCode = "11"
|
dataForm.deptCode = '11';
|
||||||
}
|
}
|
||||||
list({ groupId: dataForm.groupId, deptCode: dataForm.deptCode }).then((response: any) => {
|
list({ groupId: dataForm.groupId, deptCode: dataForm.deptCode })
|
||||||
dataList.value = response.data || []
|
.then((response: any) => {
|
||||||
|
dataList.value = response.data || [];
|
||||||
dataList.value.forEach((e: any) => {
|
dataList.value.forEach((e: any) => {
|
||||||
if (e.degreeOfEducation && typeof e.degreeOfEducation === 'string') {
|
if (e.degreeOfEducation && typeof e.degreeOfEducation === 'string') {
|
||||||
e.degreeOfEducation = e.degreeOfEducation.split(",")
|
e.degreeOfEducation = e.degreeOfEducation.split(',');
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
dataListLoading.value = false;
|
||||||
})
|
})
|
||||||
dataListLoading.value = false
|
.catch((error: any) => {
|
||||||
}).catch((error: any) => {
|
message.error('获取数据失败:' + (error.msg || '未知错误'));
|
||||||
message.error('获取数据失败:' + (error.msg || '未知错误'))
|
dataListLoading.value = false;
|
||||||
dataListLoading.value = false
|
});
|
||||||
})
|
};
|
||||||
}
|
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
const deleteHandle = async (id: string) => {
|
const deleteHandle = async (id: string) => {
|
||||||
try {
|
try {
|
||||||
await messageBox.confirm('是否确认删除本条数据?请谨慎操作')
|
await messageBox.confirm('是否确认删除本条数据?请谨慎操作');
|
||||||
await delObj(id)
|
await delObj(id);
|
||||||
message.success('删除成功')
|
message.success('删除成功');
|
||||||
getDataList()
|
getDataList();
|
||||||
} catch {
|
} catch {
|
||||||
// 用户取消
|
// 用户取消
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
// 初始化方法
|
// 初始化方法
|
||||||
const init = (row: any) => {
|
const init = (row: any) => {
|
||||||
if (!row) {
|
if (!row) {
|
||||||
message.error('初始化参数错误')
|
message.error('初始化参数错误');
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!row.id || !row.groupName) {
|
if (!row.id || !row.groupName) {
|
||||||
message.error('缺少必要的参数:id 或 groupName')
|
message.error('缺少必要的参数:id 或 groupName');
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
visible.value = true
|
visible.value = true;
|
||||||
dataForm.deptCode = "11"
|
dataForm.deptCode = '11';
|
||||||
dataForm.groupName = row.groupName || ''
|
dataForm.groupName = row.groupName || '';
|
||||||
dataForm.groupId = row.id || ''
|
dataForm.groupId = row.id || '';
|
||||||
initData()
|
initData();
|
||||||
getDepartment()
|
getDepartment();
|
||||||
getDataList()
|
getDataList();
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.error('初始化失败:' + (error.message || '未知错误'))
|
message.error('初始化失败:' + (error.message || '未知错误'));
|
||||||
visible.value = false
|
visible.value = false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// 暴露方法给父组件
|
// 暴露方法给父组件
|
||||||
defineExpose({
|
defineExpose({
|
||||||
init,
|
init,
|
||||||
deleteHandle
|
deleteHandle,
|
||||||
})
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -3,11 +3,12 @@
|
|||||||
:title="!dataForm.id ? '新增' : '修改'"
|
:title="!dataForm.id ? '新增' : '修改'"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
v-model="visible"
|
v-model="visible"
|
||||||
width="600px"
|
width="900px"
|
||||||
>
|
>
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
||||||
|
<el-row :gutter="20">
|
||||||
<el-form-item label="招生计划名称" prop="groupId">
|
<el-col :span="24">
|
||||||
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="dataForm.groupId" filterable placeholder="请选择招生计划" :disabled="!!dataForm.id">
|
<el-select v-model="dataForm.groupId" filterable placeholder="请选择招生计划" :disabled="!!dataForm.id">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planListLocal"
|
v-for="item in planListLocal"
|
||||||
@@ -17,32 +18,49 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="姓名" prop="name">
|
<el-form-item label="姓名" prop="name">
|
||||||
<el-input v-model="dataForm.name" placeholder="姓名"></el-input>
|
<el-input v-model="dataForm.name" placeholder="姓名"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="电话" prop="phone">
|
<el-form-item label="电话" prop="phone">
|
||||||
<el-input v-model="dataForm.phone" placeholder="电话"></el-input>
|
<el-input v-model="dataForm.phone" placeholder="电话"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="性别" prop="gender">
|
||||||
|
<el-radio-group v-model="dataForm.gender">
|
||||||
|
<el-radio v-for="item in sexyList" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="身份证" prop="idCard">
|
<el-form-item label="身份证" prop="idCard">
|
||||||
<el-input v-model="dataForm.idCard" placeholder="身份证"></el-input>
|
<el-input v-model="dataForm.idCard" placeholder="身份证"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="性别" prop="gender">
|
</el-col>
|
||||||
<el-select v-model="dataForm.gender">
|
</el-row>
|
||||||
<el-option
|
<el-row :gutter="20">
|
||||||
v-for="item in sexyList"
|
<el-col :span="12">
|
||||||
:key="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="准考证" prop="admission">
|
<el-form-item label="准考证" prop="admission">
|
||||||
<el-input v-model="dataForm.admission" placeholder="准考证"></el-input>
|
<el-input v-model="dataForm.admission" placeholder="准考证"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="中考成绩" prop="achievement">
|
<el-form-item label="中考成绩" prop="achievement">
|
||||||
<el-input-number v-model="dataForm.achievement" :min="0" :max="700" placeholder="中考成绩" ></el-input-number>
|
<el-input-number v-model="dataForm.achievement" :min="0" :max="700" placeholder="中考成绩" ></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="对接人" prop="djUser" v-if="permissions.recruit_recruitprestudent_dj_sure">
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="对接人" prop="djUser" v-auth="'recruit_recruitprestudent_dj_sure'">
|
||||||
<el-select v-model="dataForm.djUser" filterable clearable placeholder="" >
|
<el-select v-model="dataForm.djUser" filterable clearable placeholder="" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in contactNameList"
|
v-for="item in contactNameList"
|
||||||
@@ -52,6 +70,8 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="学校" prop="schoolId">
|
<el-form-item label="学校" prop="schoolId">
|
||||||
<el-select v-model="dataForm.schoolId" filterable placeholder="请选择学校" >
|
<el-select v-model="dataForm.schoolId" filterable placeholder="请选择学校" >
|
||||||
<el-option
|
<el-option
|
||||||
@@ -62,158 +82,189 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业1" prop="planMajorOne">
|
<el-form-item label="拟报专业1" prop="planMajorOne">
|
||||||
<el-select v-model="dataForm.planMajorOne" filterable placeholder="请选择拟报专业1" >
|
<el-select v-model="dataForm.planMajorOne" filterable placeholder="请选择拟报专业1" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业2" prop="planMajorTwo">
|
<el-form-item label="拟报专业2" prop="planMajorTwo">
|
||||||
<el-select v-model="dataForm.planMajorTwo" filterable clearable placeholder="请选择拟报专业2" >
|
<el-select v-model="dataForm.planMajorTwo" filterable clearable placeholder="请选择拟报专业2" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业3" prop="planMajorThree">
|
<el-form-item label="拟报专业3" prop="planMajorThree">
|
||||||
<el-select v-model="dataForm.planMajorThree" filterable clearable placeholder="请选择拟报专业3" >
|
<el-select v-model="dataForm.planMajorThree" filterable clearable placeholder="请选择拟报专业3" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业4" prop="planMajorFour">
|
<el-form-item label="拟报专业4" prop="planMajorFour">
|
||||||
<el-select v-model="dataForm.planMajorFour" filterable clearable placeholder="请选择拟报专业4" >
|
<el-select v-model="dataForm.planMajorFour" filterable clearable placeholder="请选择拟报专业4" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业5" prop="planMajorFive">
|
<el-form-item label="拟报专业5" prop="planMajorFive">
|
||||||
<el-select v-model="dataForm.planMajorFive" filterable clearable placeholder="请选择拟报专业5" >
|
<el-select v-model="dataForm.planMajorFive" filterable clearable placeholder="请选择拟报专业5" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业6" prop="planMajorSix">
|
<el-form-item label="拟报专业6" prop="planMajorSix">
|
||||||
<el-select v-model="dataForm.planMajorSix" filterable clearable placeholder="请选择拟报专业6" >
|
<el-select v-model="dataForm.planMajorSix" filterable clearable placeholder="请选择拟报专业6" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业7" prop="planMajorSeven">
|
<el-form-item label="拟报专业7" prop="planMajorSeven">
|
||||||
<el-select v-model="dataForm.planMajorSeven" filterable clearable placeholder="请选择拟报专业7" >
|
<el-select v-model="dataForm.planMajorSeven" filterable clearable placeholder="请选择拟报专业7" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业8" prop="planMajorEight">
|
<el-form-item label="拟报专业8" prop="planMajorEight">
|
||||||
<el-select v-model="dataForm.planMajorEight" filterable clearable placeholder="请选择拟报专业8" >
|
<el-select v-model="dataForm.planMajorEight" filterable clearable placeholder="请选择拟报专业8" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业9" prop="planMajorNine">
|
<el-form-item label="拟报专业9" prop="planMajorNine">
|
||||||
<el-select v-model="dataForm.planMajorNine" filterable clearable placeholder="请选择拟报专业9" >
|
<el-select v-model="dataForm.planMajorNine" filterable clearable placeholder="请选择拟报专业9" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业10" prop="planMajorTen">
|
<el-form-item label="拟报专业10" prop="planMajorTen">
|
||||||
<el-select v-model="dataForm.planMajorTen" filterable clearable placeholder="请选择拟报专业10" >
|
<el-select v-model="dataForm.planMajorTen" filterable clearable placeholder="请选择拟报专业10" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业11" prop="planMajorEleven">
|
<el-form-item label="拟报专业11" prop="planMajorEleven">
|
||||||
<el-select v-model="dataForm.planMajorEleven" filterable clearable placeholder="请选择拟报专业11" >
|
<el-select v-model="dataForm.planMajorEleven" filterable clearable placeholder="请选择拟报专业11" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item label="拟报专业12" prop="planMajorTwelve">
|
<el-form-item label="拟报专业12" prop="planMajorTwelve">
|
||||||
<el-select v-model="dataForm.planMajorTwelve" filterable clearable placeholder="请选择拟报专业12" >
|
<el-select v-model="dataForm.planMajorTwelve" filterable clearable placeholder="请选择拟报专业12" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
:disabled="isDisable(item.id)"
|
:disabled="isDisable(item.id)"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -226,14 +277,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, computed, nextTick } from 'vue'
|
import { ref, reactive, nextTick } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { getObj, addObjStu, putObj } from '/@/api/recruit/recruitprestudent'
|
import { getObj, addObjStu, putObj } from '/@/api/recruit/recruitprestudent'
|
||||||
import { queryTeacherBaseByNoByAssets } from '/@/api/professional/professionaluser/teacherbase'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
|
||||||
import { getDicts } from '/@/api/admin/dict'
|
import { getDicts } from '/@/api/admin/dict'
|
||||||
|
import { queryAllTeacherByRecruit } from '/@/api/professional/professionaluser/teacherbase'
|
||||||
|
|
||||||
// Props
|
// Props
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
@@ -247,19 +296,6 @@ const emit = defineEmits<{
|
|||||||
(e: 'refreshDataList'): void
|
(e: 'refreshDataList'): void
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
// 使用 Pinia store
|
|
||||||
const userInfoStore = useUserInfo()
|
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 表单引用
|
// 表单引用
|
||||||
const dataFormRef = ref()
|
const dataFormRef = ref()
|
||||||
|
|
||||||
@@ -399,7 +435,12 @@ const init = (id: string | null) => {
|
|||||||
getDicts('sexy').then((res: any) => {
|
getDicts('sexy').then((res: any) => {
|
||||||
sexyList.value = res.data || []
|
sexyList.value = res.data || []
|
||||||
})
|
})
|
||||||
// 这里如果需要教师列表,可以改用新的教师接口;当前项目中常用的是 queryTeacherBaseByNoByAssets
|
// 获取教师列表(对接人)
|
||||||
|
queryAllTeacherByRecruit().then((res: any) => {
|
||||||
|
contactNameList.value = res.data || []
|
||||||
|
}).catch(() => {
|
||||||
|
contactNameList.value = []
|
||||||
|
})
|
||||||
if (dataForm.id) {
|
if (dataForm.id) {
|
||||||
getObj(dataForm.id).then((response: any) => {
|
getObj(dataForm.id).then((response: any) => {
|
||||||
Object.assign(dataForm, response.data)
|
Object.assign(dataForm, response.data)
|
||||||
@@ -408,7 +449,7 @@ const init = (id: string | null) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planListLocal.value = data.data
|
planListLocal.value = data.data
|
||||||
if (planListLocal.value.length > 0) {
|
if (planListLocal.value.length > 0) {
|
||||||
dataForm.groupId = planListLocal.value[0].id
|
dataForm.groupId = planListLocal.value[0].id
|
||||||
@@ -424,7 +465,12 @@ defineExpose({
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
|
.el-form {
|
||||||
|
.el-form-item:last-of-type {
|
||||||
|
margin-bottom: 18px!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
.dialog-footer {
|
.dialog-footer {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.zymc + ' || ' + item.zydm"
|
:label="item.majorName + ' || ' + item.majorCode"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitprestudent_add"
|
v-auth="'recruit_recruitprestudent_add'"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="FolderAdd"
|
icon="FolderAdd"
|
||||||
@click="addOrUpdateHandle(null)"
|
@click="addOrUpdateHandle(null)"
|
||||||
@@ -115,41 +115,17 @@
|
|||||||
:header-cell-style="tableStyle.headerCellStyle"
|
:header-cell-style="tableStyle.headerCellStyle"
|
||||||
>
|
>
|
||||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||||
<el-table-column label="操作" width="200" align="center" fixed="left">
|
|
||||||
|
<el-table-column prop="djName" label="对接人" width="230" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<div v-if="scope.row.djName || scope.row.djTime" class="contact-cell">
|
||||||
v-if="permissions.recruit_recruitprestudent_edit"
|
<div v-if="scope.row.djName" class="contact-name">
|
||||||
type="primary"
|
<el-icon class="contact-icon"><User /></el-icon>
|
||||||
link
|
<span class="contact-text">{{ scope.row.djName }}</span>
|
||||||
icon="EditPen"
|
</div>
|
||||||
@click="addOrUpdateHandle(scope.row.id)"
|
<span v-if="scope.row.djTime" class="time-text">{{ scope.row.djTime }}</span>
|
||||||
>
|
</div>
|
||||||
调整
|
<span v-else class="empty-text">-</span>
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="permissions.recruit_recruitprestudent_dj && scope.row.isDj == '0'"
|
|
||||||
type="success"
|
|
||||||
link
|
|
||||||
icon="CircleCheck"
|
|
||||||
@click="sureDJ(scope.row.id)"
|
|
||||||
>
|
|
||||||
确认对接
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="permissions.recruit_recruitprestudent_del"
|
|
||||||
type="danger"
|
|
||||||
link
|
|
||||||
icon="Delete"
|
|
||||||
@click="deleteHandle(scope.row.id)"
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="djName" label="对接人" width="150" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.row.djName }} <br />
|
|
||||||
<span style="color: #0e90d2">{{ scope.row.djTime }}</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="name" label="学生姓名" width="120" align="center" show-overflow-tooltip />
|
<el-table-column prop="name" label="学生姓名" width="120" align="center" show-overflow-tooltip />
|
||||||
@@ -166,6 +142,38 @@
|
|||||||
{{ getSchoolName(scope.row.schoolId) }}
|
{{ getSchoolName(scope.row.schoolId) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="250" align="center" fixed="right">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
v-auth="'recruit_recruitprestudent_edit'"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
icon="EditPen"
|
||||||
|
@click="addOrUpdateHandle(scope.row.id)"
|
||||||
|
>
|
||||||
|
修改
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-auth="'recruit_recruitprestudent_dj'"
|
||||||
|
v-if="scope.row.isDj == '0'"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
icon="Connection"
|
||||||
|
@click="handllSureDj(scope.row.id)"
|
||||||
|
>
|
||||||
|
确认对接
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-auth="'recruit_recruitprestudent_del'"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
icon="Delete"
|
||||||
|
@click="deleteHandle(scope.row.id)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
@@ -188,33 +196,19 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitprestudent">
|
<script setup lang="ts" name="recruitprestudent">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useDict } from '/@/hooks/dict'
|
import { useDict } from '/@/hooks/dict'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
|
import { User } from '@element-plus/icons-vue'
|
||||||
import { delObj, fetchList, sureDJ } from '/@/api/recruit/recruitprestudent'
|
import { delObj, fetchList, sureDJ } from '/@/api/recruit/recruitprestudent'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { listcz } from '/@/api/recruit/recruitstudentplan'
|
import { listcz } from '/@/api/recruit/recruitstudentplan'
|
||||||
import { list as schoolListApi } from '/@/api/recruit/recruitstudentschool'
|
import { list as schoolListApi } from '/@/api/recruit/recruitstudentschool'
|
||||||
import { getDeptListByLevelTwo } from '/@/api/basic/basicdept'
|
import { getDeptListByLevelTwo } from '/@/api/basic/basicdept'
|
||||||
|
|
||||||
const TableForm = defineAsyncComponent(() => import('./enrolplantemplate-form.vue'))
|
const TableForm = defineAsyncComponent(() => import('./enrolplantemplate-form.vue'))
|
||||||
|
|
||||||
// 使用 Pinia store
|
|
||||||
const userInfoStore = useUserInfo()
|
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
@@ -250,7 +244,7 @@ const queryForm = reactive({
|
|||||||
// 获取专业名称
|
// 获取专业名称
|
||||||
const getMajorName = (majorId: string) => {
|
const getMajorName = (majorId: string) => {
|
||||||
const item = planMajorList.value.find(item => item.id === majorId)
|
const item = planMajorList.value.find(item => item.id === majorId)
|
||||||
return item ? item.zymc : ''
|
return item ? item.majorName : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取学校名称
|
// 获取学校名称
|
||||||
@@ -285,7 +279,7 @@ const init = async () => {
|
|||||||
deptList.value = deptData.data || []
|
deptList.value = deptData.data || []
|
||||||
|
|
||||||
// 获取招生计划列表
|
// 获取招生计划列表
|
||||||
const planData = await list()
|
const planData = await getList()
|
||||||
planList.value = planData.data || []
|
planList.value = planData.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
@@ -298,7 +292,7 @@ const init = async () => {
|
|||||||
|
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化失败', error)
|
message.error('初始化失败')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,7 +312,7 @@ const getMajor = async (groupId: string) => {
|
|||||||
planMajorList.value = data.data || []
|
planMajorList.value = data.data || []
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取专业列表失败', error)
|
message.error('获取专业列表失败')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,7 +324,7 @@ const addOrUpdateHandle = (id?: string | null) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 确认对接
|
// 确认对接
|
||||||
const sureDJ = async (id: string) => {
|
const handllSureDj = async (id: string) => {
|
||||||
try {
|
try {
|
||||||
await messageBox.confirm('是否确认已对接?请谨慎操作')
|
await messageBox.confirm('是否确认已对接?请谨慎操作')
|
||||||
await sureDJ({ id, isDj: '1' })
|
await sureDJ({ id, isDj: '1' })
|
||||||
@@ -391,4 +385,39 @@ onMounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.contact-cell {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
justify-content: center;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
.contact-name {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
.contact-icon {
|
||||||
|
color: #909399;
|
||||||
|
font-size: 14px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-text {
|
||||||
|
font-weight: 500;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.time-text {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--el-color-primary);
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-text {
|
||||||
|
color: #c0c4cc;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
:cell-style="tableStyle.cellStyle"
|
:cell-style="tableStyle.cellStyle"
|
||||||
:header-cell-style="tableStyle.headerCellStyle"
|
:header-cell-style="tableStyle.headerCellStyle"
|
||||||
>
|
>
|
||||||
<el-table-column prop="zymc" header-align="center" align="center" label="专业" />
|
<el-table-column prop="majorName" header-align="center" align="center" label="专业" />
|
||||||
<el-table-column prop="number" header-align="center" align="center" label="人数" />
|
<el-table-column prop="number" header-align="center" align="center" label="人数" />
|
||||||
<el-table-column prop="rate" header-align="center" align="center" label="占比" />
|
<el-table-column prop="rate" header-align="center" align="center" label="占比" />
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -45,7 +45,7 @@ import { useUserInfo } from '/@/stores/userInfo'
|
|||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { fetchListStatic } from '/@/api/recruit/recruitprestudent'
|
import { fetchListStatic } from '/@/api/recruit/recruitprestudent'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import global from '/@/components/tools/commondict.vue'
|
import global from '/@/components/tools/commondict.vue'
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ const { getDataList, tableStyle, downBlobFile } = useTable(state)
|
|||||||
// 初始化
|
// 初始化
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
planList.value = data.data || []
|
planList.value = data.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
<el-dialog
|
<el-dialog
|
||||||
:title="!dataForm.id ? '新增' : '修改'"
|
:title="!dataForm.id ? '新增' : '修改'"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
|
width="600px"
|
||||||
v-model="visible">
|
v-model="visible">
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="140px">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
||||||
|
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="dataForm.groupId" filterable :disabled="!!dataForm.id" placeholder="请选择招生计划" size="small" style="width: 100%">
|
<el-select v-model="dataForm.groupId" filterable :disabled="!dataForm.id ? false : true" placeholder="请选择招生计划">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planList"
|
v-for="item in planList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -35,8 +35,8 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, nextTick } from 'vue'
|
import { ref, reactive, nextTick } from 'vue'
|
||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { addObj, getObj, putObj } from '@/api/recruit/recruitschoolcode'
|
import { addObj, getObj, putObj } from '/@/api/recruit/recruitschoolcode'
|
||||||
import { list } from "@/api/recruit/recruitstudentplangroup"
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
@@ -75,10 +75,10 @@ const dataRule = {
|
|||||||
|
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const initData = () => {
|
const initData = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (!dataForm.id) {
|
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) => {
|
const init = (id: string | null) => {
|
||||||
dataForm.id = id || ""
|
dataForm.id = id || null
|
||||||
visible.value = true
|
visible.value = true
|
||||||
canSubmit.value = true
|
canSubmit.value = true
|
||||||
initData()
|
initData()
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<div class="layout-padding">
|
<div class="layout-padding">
|
||||||
<div class="layout-padding-auto layout-padding-view">
|
<div class="layout-padding-auto layout-padding-view">
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<el-form :model="queryForm" inline class="mb-4" ref="searchFormRef">
|
<el-form :model="queryForm" inline ref="searchFormRef">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划">
|
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -38,22 +38,22 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitschoolcode_add"
|
v-auth="'recruit_recruitschoolcode_add'"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="FolderAdd"
|
icon="FolderAdd"
|
||||||
@click="addOrUpdateHandle"
|
@click="addOrUpdateHandle()"
|
||||||
>
|
>
|
||||||
新增
|
新增
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitschoolcode_add"
|
v-auth="'recruit_recruitschoolcode_add'"
|
||||||
type="primary"
|
type="primary"
|
||||||
plain
|
plain
|
||||||
icon="UploadFilled"
|
icon="UploadFilled"
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
<el-table-column label="操作" width="150" align="center" fixed="right">
|
<el-table-column label="操作" width="150" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitschoolcode_edit"
|
v-auth="'recruit_recruitschoolcode_edit'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="EditPen"
|
icon="EditPen"
|
||||||
@@ -94,8 +94,8 @@
|
|||||||
修改
|
修改
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitschoolcode_del"
|
v-auth="'recruit_recruitschoolcode_del'"
|
||||||
type="danger"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
@click="deleteHandle(scope.row.id)"
|
@click="deleteHandle(scope.row.id)"
|
||||||
@@ -114,10 +114,10 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 弹窗, 新增 / 修改 -->
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
<table-form v-if="addOrUpdateVisible" ref="addOrUpdateRef" @refreshDataList="getDataList" />
|
<table-form ref="addOrUpdateRef" @refreshDataList="getDataList" />
|
||||||
|
|
||||||
<!-- 导入弹窗 -->
|
<!-- 导入弹窗 -->
|
||||||
<el-dialog v-model="dialogViewVisible" title="导入学校代码" append-to-body>
|
<el-dialog v-model="dialogViewVisible" title="导入学校代码" append-to-body width="600px">
|
||||||
<el-form :model="exportForm" inline>
|
<el-form :model="exportForm" inline>
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="exportForm.groupId" filterable clearable placeholder="请选择招生计划">
|
<el-select v-model="exportForm.groupId" filterable clearable placeholder="请选择招生计划">
|
||||||
@@ -163,30 +163,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitschoolcode">
|
<script setup lang="ts" name="recruitschoolcode">
|
||||||
import { ref, reactive, computed, onMounted, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { delObj, fetchList } from '/@/api/recruit/recruitschoolcode'
|
import { delObj, fetchList } from '/@/api/recruit/recruitschoolcode'
|
||||||
import request from '/@/utils/request'
|
import request from '/@/utils/request'
|
||||||
|
|
||||||
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
||||||
|
|
||||||
// 使用 Pinia store
|
|
||||||
const userInfoStore = useUserInfo()
|
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
@@ -198,7 +183,6 @@ const addOrUpdateRef = ref()
|
|||||||
const uploadFormRef = ref()
|
const uploadFormRef = ref()
|
||||||
|
|
||||||
// 弹窗状态
|
// 弹窗状态
|
||||||
const addOrUpdateVisible = ref(false)
|
|
||||||
const dialogViewVisible = ref(false)
|
const dialogViewVisible = ref(false)
|
||||||
const impoerLoadinBtn = ref(false)
|
const impoerLoadinBtn = ref(false)
|
||||||
|
|
||||||
@@ -247,14 +231,14 @@ const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTa
|
|||||||
// 初始化
|
// 初始化
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
planList.value = data.data || []
|
planList.value = data.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
}
|
}
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化失败', error)
|
message.error('初始化失败')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,8 +316,7 @@ const handleExportIn = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 新增 / 修改
|
// 新增 / 修改
|
||||||
const addOrUpdateHandle = (id?: string) => {
|
const addOrUpdateHandle = (id: string | null = null) => {
|
||||||
addOrUpdateVisible.value = true
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
addOrUpdateRef.value?.init(id)
|
addOrUpdateRef.value?.init(id)
|
||||||
})
|
})
|
||||||
@@ -354,9 +337,9 @@ const deleteHandle = async (id: string) => {
|
|||||||
// 重置查询
|
// 重置查询
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
searchFormRef.value?.resetFields()
|
searchFormRef.value?.resetFields()
|
||||||
Object.keys(queryForm).forEach(key => {
|
queryForm.groupId = ''
|
||||||
queryForm[key] = ''
|
queryForm.schoolName = ''
|
||||||
})
|
queryForm.schoolCode = ''
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,8 +40,8 @@
|
|||||||
:header-cell-style="tableStyle.headerCellStyle"
|
:header-cell-style="tableStyle.headerCellStyle"
|
||||||
>
|
>
|
||||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||||
<el-table-column prop="zydm" label="专业代码" align="center" show-overflow-tooltip />
|
<el-table-column prop="majorCode" label="专业代码" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="xy" label="系部" align="center" show-overflow-tooltip />
|
<el-table-column prop="deptCode" label="系部" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="needStudentNum" label="拟招人数(不限男女)和拟招男女生数互斥" align="center" show-overflow-tooltip />
|
<el-table-column prop="needStudentNum" label="拟招人数(不限男女)和拟招男女生数互斥" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="needStudentBoyNum" label="拟招男生数" align="center" show-overflow-tooltip />
|
<el-table-column prop="needStudentBoyNum" label="拟招男生数" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="needStudentGirlNum" label="拟招女生数" align="center" show-overflow-tooltip />
|
<el-table-column prop="needStudentGirlNum" label="拟招女生数" align="center" show-overflow-tooltip />
|
||||||
@@ -102,11 +102,11 @@
|
|||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
label-width="180px"
|
label-width="180px"
|
||||||
>
|
>
|
||||||
<el-form-item label="专业代码" prop="zydm">
|
<el-form-item label="专业代码" prop="majorCode">
|
||||||
<el-input v-model="form.zydm" placeholder="请输入专业代码" clearable />
|
<el-input v-model="form.majorCode" placeholder="请输入专业代码" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="系部" prop="xy">
|
<el-form-item label="系部" prop="deptCode">
|
||||||
<el-input v-model="form.xy" placeholder="请输入系部" clearable />
|
<el-input v-model="form.deptCode" placeholder="请输入系部" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="拟招人数(不限男女)" prop="needStudentNum">
|
<el-form-item label="拟招人数(不限男女)" prop="needStudentNum">
|
||||||
<el-input-number v-model="form.needStudentNum" :min="0" placeholder="请输入拟招人数" style="width: 100%" />
|
<el-input-number v-model="form.needStudentNum" :min="0" placeholder="请输入拟招人数" style="width: 100%" />
|
||||||
@@ -205,8 +205,8 @@ const queryForm = reactive({})
|
|||||||
// 表单数据
|
// 表单数据
|
||||||
const form = reactive({
|
const form = reactive({
|
||||||
id: '',
|
id: '',
|
||||||
zydm: '',
|
majorCode: '',
|
||||||
xy: '',
|
deptCode: '',
|
||||||
needStudentNum: undefined,
|
needStudentNum: undefined,
|
||||||
needStudentBoyNum: undefined,
|
needStudentBoyNum: undefined,
|
||||||
needStudentGirlNum: undefined,
|
needStudentGirlNum: undefined,
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button @click="visible = false">取消</el-button>
|
<el-button @click="visible = false">取消</el-button>
|
||||||
<el-button type="primary" @click="dataFormSubmit" v-if="canSubmit">确定</el-button>
|
<el-button type="primary" @click="dataFormSubmit" :disabled="!canSubmit">确定</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
@@ -46,7 +46,7 @@ import { ref, reactive, nextTick } from 'vue'
|
|||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { addObj, getObj, putObj } from '/@/api/recruit/recruitstudentplancorrectscoreconfig'
|
import { addObj, getObj, putObj } from '/@/api/recruit/recruitstudentplancorrectscoreconfig'
|
||||||
import { areaList } from '/@/api/recruit/recruitstudentschool'
|
import { areaList } from '/@/api/recruit/recruitstudentschool'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
@@ -63,7 +63,7 @@ const regionList = ref<any[]>([])
|
|||||||
const planList = ref<any[]>([])
|
const planList = ref<any[]>([])
|
||||||
|
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
id: "",
|
id: "" as string | null,
|
||||||
groupId: "",
|
groupId: "",
|
||||||
regionId: "",
|
regionId: "",
|
||||||
fullScore: null as number | null,
|
fullScore: null as number | null,
|
||||||
@@ -84,7 +84,7 @@ const dataRule = {
|
|||||||
|
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const initData = () => {
|
const initData = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
})
|
})
|
||||||
areaList({ type: "0", parentId: "11" }).then((data: any) => {
|
areaList({ type: "0", parentId: "11" }).then((data: any) => {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentplancorrectscoreconfig_add"
|
v-auth="'recruit_recruitstudentplancorrectscoreconfig_add'"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="FolderAdd"
|
icon="FolderAdd"
|
||||||
@click="addOrUpdateHandle"
|
@click="addOrUpdateHandle"
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
<el-table-column label="操作" width="150" align="center" fixed="right">
|
<el-table-column label="操作" width="150" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentplancorrectscoreconfig_edit"
|
v-auth="'recruit_recruitstudentplancorrectscoreconfig_edit'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="EditPen"
|
icon="EditPen"
|
||||||
@@ -61,8 +61,8 @@
|
|||||||
修改
|
修改
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentplancorrectscoreconfig_del"
|
v-auth="'recruit_recruitstudentplancorrectscoreconfig_del'"
|
||||||
type="danger"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
@click="deleteHandle(scope.row.id)"
|
@click="deleteHandle(scope.row.id)"
|
||||||
@@ -87,29 +87,14 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitstudentplancorrectscoreconfig">
|
<script setup lang="ts" name="recruitstudentplancorrectscoreconfig">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { fetchList, delObj } from '/@/api/recruit/recruitstudentplancorrectscoreconfig'
|
import { fetchList, delObj } from '/@/api/recruit/recruitstudentplancorrectscoreconfig'
|
||||||
|
|
||||||
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
||||||
|
|
||||||
// 使用 Pinia store
|
|
||||||
const userInfoStore = useUserInfo()
|
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
@@ -119,9 +104,6 @@ const tableRef = ref()
|
|||||||
const searchFormRef = ref()
|
const searchFormRef = ref()
|
||||||
const addOrUpdateRef = ref()
|
const addOrUpdateRef = ref()
|
||||||
|
|
||||||
// 弹窗状态
|
|
||||||
const addOrUpdateVisible = ref(false)
|
|
||||||
|
|
||||||
// 数据
|
// 数据
|
||||||
const planList = ref<any[]>([])
|
const planList = ref<any[]>([])
|
||||||
|
|
||||||
@@ -157,14 +139,14 @@ const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTa
|
|||||||
// 初始化
|
// 初始化
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
planList.value = data.data || []
|
planList.value = data.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
}
|
}
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化失败', error)
|
message.error('初始化失败')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,9 +174,7 @@ const deleteHandle = async (id: string) => {
|
|||||||
// 重置查询
|
// 重置查询
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
searchFormRef.value?.resetFields()
|
searchFormRef.value?.resetFields()
|
||||||
Object.keys(queryForm).forEach(key => {
|
queryForm.groupId = ''
|
||||||
queryForm[key] = ''
|
|
||||||
})
|
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
:title="dataForm.id ? '编辑' : '新增'"
|
:title="dataForm.id ? '修改' : '新增'"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
width="600"
|
width="600px"
|
||||||
v-model="visible">
|
v-model="visible">
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
||||||
<el-form-item label="年份" prop="year">
|
<el-form-item label="年份" prop="year">
|
||||||
@@ -18,79 +18,101 @@
|
|||||||
<el-input v-model="dataForm.groupName" placeholder="招生计划名称"></el-input>
|
<el-input v-model="dataForm.groupName" placeholder="招生计划名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="报名开始时间" prop="startDate">
|
<date-range-picker
|
||||||
|
label="报名时间"
|
||||||
|
start-prop="startDate"
|
||||||
|
end-prop="endDate"
|
||||||
|
v-model:start-value="dataForm.startDate"
|
||||||
|
v-model:end-value="dataForm.endDate"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<template #startDatePicker>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="dataForm.startDate"
|
v-model="dataForm.startDate"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
clearable
|
clearable
|
||||||
:disabled-date="startDateDisabledDate"
|
:disabled-date="startDateDisabledDate"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="请选择报名开始时间"
|
placeholder="请选择开始时间"
|
||||||
|
@change="handleStartDateChange"
|
||||||
></el-date-picker>
|
></el-date-picker>
|
||||||
</el-form-item>
|
</template>
|
||||||
<el-form-item label="报名截止时间" prop="endDate">
|
<template #endDatePicker>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="dataForm.endDate"
|
v-model="dataForm.endDate"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
clearable
|
clearable
|
||||||
:disabled-date="endDateDisabledDate"
|
:disabled-date="endDateDisabledDate"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="请选择报名截止时间"
|
placeholder="请选择结束时间"
|
||||||
|
@change="handleEndDateChange"
|
||||||
></el-date-picker>
|
></el-date-picker>
|
||||||
</el-form-item>
|
</template>
|
||||||
<el-form-item label="维护开始时间" prop="maintenanceStartDate">
|
</date-range-picker>
|
||||||
|
<date-range-picker
|
||||||
|
label="维护时间"
|
||||||
|
start-prop="maintenanceStartDate"
|
||||||
|
end-prop="maintenanceEndDate"
|
||||||
|
v-model:start-value="dataForm.maintenanceStartDate"
|
||||||
|
v-model:end-value="dataForm.maintenanceEndDate"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<template #startDatePicker>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="dataForm.maintenanceStartDate"
|
v-model="dataForm.maintenanceStartDate"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
clearable
|
clearable
|
||||||
:disabled-date="maintenanceStartDateDisabledDate"
|
:disabled-date="maintenanceStartDateDisabledDate"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="请选择维护开始时间"
|
placeholder="请选择开始时间"
|
||||||
|
@change="handleMaintenanceStartDateChange"
|
||||||
></el-date-picker>
|
></el-date-picker>
|
||||||
</el-form-item>
|
</template>
|
||||||
<el-form-item label="维护结束时间" prop="maintenanceEndDate">
|
<template #endDatePicker>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="dataForm.maintenanceEndDate"
|
v-model="dataForm.maintenanceEndDate"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
clearable
|
clearable
|
||||||
:disabled-date="maintenanceEndDateDisabledDate"
|
:disabled-date="maintenanceEndDateDisabledDate"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="请选择维护结束时间"
|
placeholder="请选择结束时间"
|
||||||
|
@change="handleMaintenanceEndDateChange"
|
||||||
></el-date-picker>
|
></el-date-picker>
|
||||||
</el-form-item>
|
</template>
|
||||||
|
</date-range-picker>
|
||||||
|
|
||||||
<el-form-item label="初中生报名" prop="czSignStart">
|
<el-form-item label="初中生报名" prop="czSignStart">
|
||||||
<el-select v-model="dataForm.czSignStart" placeholder="请选择初中生报名">
|
<el-select v-model="dataForm.czSignStart" placeholder="请选择" clearable>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in yesNoList"
|
v-for="item in yes_no_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value"
|
||||||
</el-option>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="高中生报名" prop="gzSignStart">
|
<el-form-item label="高中生报名" prop="gzSignStart">
|
||||||
<el-select v-model="dataForm.gzSignStart" placeholder="请选择高中生报名">
|
<el-select v-model="dataForm.gzSignStart" placeholder="请选择" clearable>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in yesNoList"
|
v-for="item in yes_no_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value"
|
||||||
</el-option>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="技职校报名" prop="jzxSignStart">
|
<el-form-item label="技职校报名" prop="jzxSignStart">
|
||||||
<el-select v-model="dataForm.jzxSignStart" placeholder="请选择技职校报名">
|
<el-select v-model="dataForm.jzxSignStart" placeholder="请选择" clearable>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in yesNoList"
|
v-for="item in yes_no_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value"
|
||||||
</el-option>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -105,19 +127,21 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, nextTick } from 'vue'
|
import { ref, reactive, nextTick, defineAsyncComponent } from 'vue'
|
||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
|
import { addObj, getObj, putObj } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { useDict } from '/@/hooks/dict'
|
import { useDict } from '/@/hooks/dict'
|
||||||
import { addObj, getObj, putObj } from '@/api/recruit/recruitstudentplangroup'
|
|
||||||
|
const DateRangePicker = defineAsyncComponent(() => import('/@/components/DateRangePicker/index.vue'))
|
||||||
|
|
||||||
|
// 使用字典
|
||||||
|
const { yes_no_type } = useDict('yes_no_type')
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(e: 'refreshDataList'): void
|
(e: 'refreshDataList'): void
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
// 字典数据
|
|
||||||
const { yes_no_type: yesNoList } = useDict('yes_no_type')
|
|
||||||
|
|
||||||
// 表单引用
|
// 表单引用
|
||||||
const dataFormRef = ref()
|
const dataFormRef = ref()
|
||||||
|
|
||||||
@@ -163,13 +187,13 @@ const dataRule = {
|
|||||||
{ required: true, message: '代办费不能为空', trigger: 'blur' }
|
{ required: true, message: '代办费不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
czSignStart: [
|
czSignStart: [
|
||||||
{ required: true, message: '初中生不能为空', trigger: 'blur' }
|
{ required: true, message: '初中生报名不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
gzSignStart: [
|
gzSignStart: [
|
||||||
{ required: true, message: '高中生不能为空', trigger: 'blur' }
|
{ required: true, message: '高中生报名不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
jzxSignStart: [
|
jzxSignStart: [
|
||||||
{ required: true, message: '技职校不能为空', trigger: 'blur' }
|
{ required: true, message: '技职校报名不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,6 +226,23 @@ const maintenanceEndDateDisabledDate = (time: Date) => {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 处理日期变化事件
|
||||||
|
const handleStartDateChange = (val: string) => {
|
||||||
|
dataForm.startDate = val
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleEndDateChange = (val: string) => {
|
||||||
|
dataForm.endDate = val
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleMaintenanceStartDateChange = (val: string) => {
|
||||||
|
dataForm.maintenanceStartDate = val
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleMaintenanceEndDateChange = (val: string) => {
|
||||||
|
dataForm.maintenanceEndDate = val
|
||||||
|
}
|
||||||
|
|
||||||
// 表单提交
|
// 表单提交
|
||||||
const dataFormSubmit = () => {
|
const dataFormSubmit = () => {
|
||||||
dataFormRef.value?.validate((valid: boolean) => {
|
dataFormRef.value?.validate((valid: boolean) => {
|
||||||
@@ -274,7 +315,7 @@ defineExpose({
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
.dialog-footer {
|
.dialog-footer {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,3 @@
|
|||||||
<!--
|
|
||||||
- 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.
|
|
||||||
-
|
|
||||||
-->
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="layout-padding">
|
<div class="layout-padding">
|
||||||
@@ -31,23 +15,11 @@
|
|||||||
|
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button v-auth="'recruit_recruitstudentplangroup_add'" type="primary" icon="FolderAdd" @click="addOrUpdateHandle()">
|
||||||
v-if="permissions.recruit_recruitstudentplangroup_add"
|
|
||||||
type="primary"
|
|
||||||
icon="FolderAdd"
|
|
||||||
@click="addOrUpdateHandle"
|
|
||||||
>
|
|
||||||
新 增
|
新 增
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-auth="'recruit_recruitexampeople_add'" type="primary" plain icon="UserFilled" class="ml10" @click="editExam">
|
||||||
v-if="permissions.recruit_recruitexampeople_add"
|
审核人员管理
|
||||||
type="primary"
|
|
||||||
plain
|
|
||||||
icon="UserFilled"
|
|
||||||
class="ml10"
|
|
||||||
@click="editExam"
|
|
||||||
>
|
|
||||||
审核人员
|
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -67,7 +39,9 @@
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="date-cell">
|
<div class="date-cell">
|
||||||
<el-icon class="date-icon"><Calendar /></el-icon>
|
<el-icon class="date-icon"><Calendar /></el-icon>
|
||||||
<span class="date-text">{{ dateFormat(scope.row.startDate, 'YYYY-mm-dd') + ' 至 ' + dateFormat(scope.row.endDate, 'YYYY-mm-dd') }}</span>
|
<span class="date-text">{{
|
||||||
|
dateFormat(scope.row.startDate, 'YYYY-mm-dd') + ' 至 ' + dateFormat(scope.row.endDate, 'YYYY-mm-dd')
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -75,7 +49,9 @@
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="date-cell">
|
<div class="date-cell">
|
||||||
<el-icon class="date-icon"><Calendar /></el-icon>
|
<el-icon class="date-icon"><Calendar /></el-icon>
|
||||||
<span class="date-text">{{ dateFormat(scope.row.maintenanceStartDate, 'YYYY-mm-dd') + ' 至 ' + dateFormat(scope.row.maintenanceEndDate, 'YYYY-mm-dd') }}</span>
|
<span class="date-text">{{
|
||||||
|
dateFormat(scope.row.maintenanceStartDate, 'YYYY-mm-dd') + ' 至 ' + dateFormat(scope.row.maintenanceEndDate, 'YYYY-mm-dd')
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -87,7 +63,7 @@
|
|||||||
inactive-text="否"
|
inactive-text="否"
|
||||||
active-value="1"
|
active-value="1"
|
||||||
inactive-value="0"
|
inactive-value="0"
|
||||||
@change="changeSm(scope.row)"
|
@change="changeSm(scope.row, 'czSignStart')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -99,7 +75,7 @@
|
|||||||
inactive-text="否"
|
inactive-text="否"
|
||||||
active-value="1"
|
active-value="1"
|
||||||
inactive-value="0"
|
inactive-value="0"
|
||||||
@change="changeSm(scope.row)"
|
@change="changeSm(scope.row, 'gzSignStart')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -111,7 +87,7 @@
|
|||||||
inactive-text="否"
|
inactive-text="否"
|
||||||
active-value="1"
|
active-value="1"
|
||||||
inactive-value="0"
|
inactive-value="0"
|
||||||
@change="changeSm(scope.row)"
|
@change="changeSm(scope.row, 'jzxSignStart')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -123,37 +99,25 @@
|
|||||||
inactive-text="否"
|
inactive-text="否"
|
||||||
active-value="1"
|
active-value="1"
|
||||||
inactive-value="0"
|
inactive-value="0"
|
||||||
@change="changeSm(scope.row)"
|
@change="changeSm(scope.row, 'isPreStart')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="240" align="center" fixed="right">
|
<el-table-column label="操作" width="240" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentplangroup_edit"
|
v-auth="'recruit_recruitstudentplangroup_edit'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="EditPen"
|
icon="EditPen"
|
||||||
@click="addOrUpdateHandle(scope.row.id)"
|
@click="addOrUpdateHandle(scope.row.id)"
|
||||||
>
|
>
|
||||||
调整
|
修改
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-auth="'recruit_recruitstudentplangroup_edit'" type="primary" link icon="Switch" @click="majorHandle(scope.row)">
|
||||||
v-if="permissions.recruit_recruitstudentplangroup_edit"
|
|
||||||
type="primary"
|
|
||||||
link
|
|
||||||
icon="Switch"
|
|
||||||
@click="majorHandle(scope.row)"
|
|
||||||
>
|
|
||||||
专业调整
|
专业调整
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-auth="'recruit_recruitstudentplangroup_del'" type="primary" link icon="Delete" @click="deleteHandle(scope.row.id)">
|
||||||
v-if="permissions.recruit_recruitstudentplangroup_del"
|
|
||||||
type="primary"
|
|
||||||
link
|
|
||||||
icon="Delete"
|
|
||||||
@click="deleteHandle(scope.row.id)"
|
|
||||||
>
|
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
@@ -161,14 +125,10 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<pagination
|
<pagination v-bind="state.pagination" @current-change="currentChangeHandle" @size-change="sizeChangeHandle" />
|
||||||
v-bind="state.pagination"
|
|
||||||
@current-change="currentChangeHandle"
|
|
||||||
@size-change="sizeChangeHandle"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- 弹窗, 新增 / 修改 -->
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
<table-form v-if="addOrUpdateVisible" ref="addOrUpdateRef" @refreshDataList="getDataList" />
|
<table-form ref="addOrUpdateRef" @refreshDataList="getDataList" />
|
||||||
<major-group-by-dept-form ref="majorGroupByDeptRef" />
|
<major-group-by-dept-form ref="majorGroupByDeptRef" />
|
||||||
<exam-people-index v-if="exitExamVisible" ref="examPeopleIndexRef" />
|
<exam-people-index v-if="exitExamVisible" ref="examPeopleIndexRef" />
|
||||||
</div>
|
</div>
|
||||||
@@ -181,181 +141,176 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitstudentplangroup">
|
<script setup lang="ts" name="recruitstudentplangroup">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, nextTick, defineAsyncComponent, watch } from 'vue';
|
||||||
import { storeToRefs } from 'pinia'
|
import { BasicTableProps, useTable } from '/@/hooks/table';
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { delObj, fetchList, putObj, editQuickField } from '/@/api/recruit/recruitstudentplangroup';
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { formatDate } from '/@/utils/formatTime';
|
||||||
import { delObj, fetchList, putObj } from '/@/api/recruit/recruitstudentplangroup'
|
import { Calendar } from '@element-plus/icons-vue';
|
||||||
import { formatDate } from '/@/utils/formatTime'
|
|
||||||
import { Calendar } from '@element-plus/icons-vue'
|
|
||||||
// import vueQr from 'vue-qr'
|
// import vueQr from 'vue-qr'
|
||||||
|
|
||||||
const TableForm = defineAsyncComponent(() => import('./enrolplantemplate-form.vue'))
|
const TableForm = defineAsyncComponent(() => import('./enrolplantemplate-form.vue'));
|
||||||
const MajorGroupByDeptForm = defineAsyncComponent(() => import('@/views/recruit/recruitplanmajor/majorGroupByDept.vue'))
|
const MajorGroupByDeptForm = defineAsyncComponent(() => import('@/views/recruit/recruitplanmajor/majorGroupByDept.vue'));
|
||||||
const ExamPeopleIndex = defineAsyncComponent(() => import('@/views/recruit/recruitexampeople/index.vue'))
|
const ExamPeopleIndex = defineAsyncComponent(() => import('@/views/recruit/recruitexampeople/index.vue'));
|
||||||
|
|
||||||
// 使用 Pinia store
|
|
||||||
const userInfoStore = useUserInfo()
|
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage();
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox();
|
||||||
|
|
||||||
// 表格引用
|
// 表格引用
|
||||||
const tableRef = ref()
|
const tableRef = ref();
|
||||||
const searchFormRef = ref()
|
const searchFormRef = ref();
|
||||||
const addOrUpdateRef = ref()
|
const addOrUpdateRef = ref();
|
||||||
const majorGroupByDeptRef = ref()
|
const majorGroupByDeptRef = ref();
|
||||||
const examPeopleIndexRef = ref()
|
const examPeopleIndexRef = ref();
|
||||||
|
|
||||||
// 弹窗状态
|
// 弹窗状态
|
||||||
const addOrUpdateVisible = ref(false)
|
const exitExamVisible = ref(false);
|
||||||
const exitExamVisible = ref(false)
|
const dialogFormVisible = ref(false);
|
||||||
const dialogFormVisible = ref(false)
|
|
||||||
|
|
||||||
// 数据
|
// 数据
|
||||||
const payQrcode = ref('')
|
const payQrcode = ref('');
|
||||||
|
|
||||||
// 查询表单
|
// 查询表单
|
||||||
const queryForm = reactive({
|
const queryForm = reactive({
|
||||||
groupName: ''
|
groupName: '',
|
||||||
})
|
});
|
||||||
|
|
||||||
// 日期格式化
|
// 日期格式化
|
||||||
const dateFormat = (date: string | null | undefined, format: string) => {
|
const dateFormat = (date: string | null | undefined, format: string) => {
|
||||||
if (!date) return '-'
|
if (!date) return '-';
|
||||||
try {
|
try {
|
||||||
return formatDate(new Date(date), format)
|
return formatDate(new Date(date), format);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return date
|
return date;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// 表格状态
|
// 表格状态
|
||||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||||
queryForm: queryForm,
|
queryForm: queryForm,
|
||||||
pageList: async (params: any) => {
|
pageList: async (params: any) => {
|
||||||
const response = await fetchList(params)
|
const response = await fetchList(params);
|
||||||
return {
|
return {
|
||||||
data: {
|
data: {
|
||||||
records: response.data.records,
|
records: response.data.records,
|
||||||
total: response.data.total
|
total: response.data.total,
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
}
|
},
|
||||||
})
|
});
|
||||||
|
|
||||||
// 使用 table hook
|
// 使用 table hook
|
||||||
const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTable(state)
|
const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTable(state);
|
||||||
|
|
||||||
// 初始化(如果需要初始化逻辑可以在这里添加)
|
// 初始化(如果需要初始化逻辑可以在这里添加)
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
// 初始化逻辑
|
// 初始化逻辑
|
||||||
}
|
};
|
||||||
|
|
||||||
// 显示二维码
|
|
||||||
const showQrCode = (row: any) => {
|
|
||||||
payQrcode.value = '123'
|
|
||||||
dialogFormVisible.value = true
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改开关
|
// 修改开关
|
||||||
const changeSm = async (row: any) => {
|
const changeSm = async (row: any, type: any) => {
|
||||||
try {
|
try {
|
||||||
await putObj(row)
|
let params = {} as any;
|
||||||
message.success('修改成功')
|
params.id = row.id;
|
||||||
|
if (type == 'czSignStart') {
|
||||||
|
params['czSignStart'] = row.czSignStart;
|
||||||
|
}
|
||||||
|
if (type == 'gzSignStart') {
|
||||||
|
params['gzSignStart'] = row.gzSignStart;
|
||||||
|
}
|
||||||
|
if (type == 'jzxSignStart') {
|
||||||
|
params['jzxSignStart'] = row.jzxSignStart;
|
||||||
|
}
|
||||||
|
if (type == 'isPreStart') {
|
||||||
|
params['isPreStart'] = row.isPreStart;
|
||||||
|
}
|
||||||
|
await editQuickField(params);
|
||||||
|
message.success('修改成功');
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.error(error.msg || '修改失败')
|
message.error(error.msg || '修改失败');
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// 新增 / 修改
|
// 新增 / 修改
|
||||||
const addOrUpdateHandle = (id?: string) => {
|
const addOrUpdateHandle = (id: string | null = null) => {
|
||||||
addOrUpdateVisible.value = true
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
addOrUpdateRef.value?.init(id)
|
addOrUpdateRef.value?.init(id);
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
// 编辑审核人员
|
// 编辑审核人员
|
||||||
const editExam = () => {
|
const editExam = () => {
|
||||||
exitExamVisible.value = true
|
exitExamVisible.value = true;
|
||||||
// 如果组件已经加载,立即初始化
|
// 如果组件已经加载,立即初始化
|
||||||
if (examPeopleIndexRef.value && typeof examPeopleIndexRef.value.init === 'function') {
|
if (examPeopleIndexRef.value && typeof examPeopleIndexRef.value.init === 'function') {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
try {
|
try {
|
||||||
examPeopleIndexRef.value.init()
|
examPeopleIndexRef.value.init();
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.error('初始化审核人员弹窗失败:' + (error.message || '未知错误'))
|
message.error('初始化审核人员弹窗失败:' + (error.message || '未知错误'));
|
||||||
exitExamVisible.value = false
|
exitExamVisible.value = false;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
// 否则等待 watch 监听器处理
|
// 否则等待 watch 监听器处理
|
||||||
}
|
};
|
||||||
|
|
||||||
// 监听组件引用变化,当组件加载完成后自动初始化
|
// 监听组件引用变化,当组件加载完成后自动初始化
|
||||||
watch(examPeopleIndexRef, (newVal) => {
|
watch(
|
||||||
|
examPeopleIndexRef,
|
||||||
|
(newVal) => {
|
||||||
if (newVal && exitExamVisible.value) {
|
if (newVal && exitExamVisible.value) {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
if (newVal && typeof newVal.init === 'function') {
|
if (newVal && typeof newVal.init === 'function') {
|
||||||
try {
|
try {
|
||||||
newVal.init()
|
newVal.init();
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.error('初始化审核人员弹窗失败:' + (error.message || '未知错误'))
|
message.error('初始化审核人员弹窗失败:' + (error.message || '未知错误'));
|
||||||
exitExamVisible.value = false
|
exitExamVisible.value = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
}, { immediate: true })
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
|
||||||
// 专业调整
|
// 专业调整
|
||||||
const majorHandle = (row: any) => {
|
const majorHandle = (row: any) => {
|
||||||
if (!row || !row.id) {
|
if (!row || !row.id) {
|
||||||
message.warning('请选择有效的招生计划')
|
message.warning('请选择有效的招生计划');
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
majorGroupByDeptRef.value?.init(row)
|
majorGroupByDeptRef.value?.init(row);
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
const deleteHandle = async (id: string) => {
|
const deleteHandle = async (id: string) => {
|
||||||
try {
|
try {
|
||||||
await messageBox.confirm('是否确认删除本条数据?请谨慎操作')
|
await messageBox.confirm('是否确认删除本条数据?请谨慎操作');
|
||||||
await delObj(id)
|
await delObj(id);
|
||||||
message.success('删除成功')
|
message.success('删除成功');
|
||||||
getDataList()
|
getDataList();
|
||||||
} catch {
|
} catch {
|
||||||
// 用户取消
|
// 用户取消
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
// 重置查询
|
// 重置查询
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
searchFormRef.value?.resetFields()
|
searchFormRef.value?.resetFields();
|
||||||
queryForm.groupName = ''
|
queryForm.groupName = '';
|
||||||
getDataList()
|
getDataList();
|
||||||
}
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init();
|
||||||
getDataList()
|
getDataList();
|
||||||
})
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@@ -383,5 +338,4 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 开启报名开关文字颜色 */
|
/* 开启报名开关文字颜色 */
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
v-model="visible"
|
v-model="visible"
|
||||||
width="600px"
|
width="600px"
|
||||||
destroy-on-close
|
|
||||||
>
|
>
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
@@ -20,8 +19,8 @@
|
|||||||
<el-form-item label="学校名称" prop="schoolName">
|
<el-form-item label="学校名称" prop="schoolName">
|
||||||
<el-input v-model="dataForm.schoolName" placeholder="学校名称"></el-input>
|
<el-input v-model="dataForm.schoolName" placeholder="学校名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="对接学院" prop="xy">
|
<el-form-item label="对接学院" prop="deptCode">
|
||||||
<el-select v-model="dataForm.xy" filterable clearable placeholder="请选择对接学院">
|
<el-select v-model="dataForm.deptCode" filterable clearable placeholder="请选择对接学院">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in deptList"
|
v-for="item in deptList"
|
||||||
:key="item.deptCode"
|
:key="item.deptCode"
|
||||||
@@ -56,7 +55,7 @@ import { ref, reactive, nextTick } from 'vue'
|
|||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { addObj, areaList, getObj, putObj } from '/@/api/recruit/recruitstudentschool'
|
import { addObj, areaList, getObj, putObj } from '/@/api/recruit/recruitstudentschool'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
|
|
||||||
// Emits
|
// Emits
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
@@ -77,7 +76,7 @@ const dataForm = reactive({
|
|||||||
id: "",
|
id: "",
|
||||||
groupId: "",
|
groupId: "",
|
||||||
area: "",
|
area: "",
|
||||||
xy: "",
|
deptCode: "",
|
||||||
schoolName: ""
|
schoolName: ""
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -101,11 +100,8 @@ const initData = () => {
|
|||||||
deptList.value = data.data
|
deptList.value = data.data
|
||||||
deptList.value.push({ deptCode: "190", deptName: "招生就业处" })
|
deptList.value.push({ deptCode: "190", deptName: "招生就业处" })
|
||||||
})
|
})
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (!dataForm.id) {
|
|
||||||
dataForm.groupId = planList.value[0]?.id || ""
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
// 获取所有省
|
// 获取所有省
|
||||||
areaList({ type: "0", parentId: 112 }).then((res: any) => {
|
areaList({ type: "0", parentId: 112 }).then((res: any) => {
|
||||||
@@ -147,22 +143,43 @@ const dataFormSubmit = () => {
|
|||||||
|
|
||||||
// 初始化方法
|
// 初始化方法
|
||||||
const init = (id: string | null) => {
|
const init = (id: string | null) => {
|
||||||
dataForm.id = id || ""
|
|
||||||
visible.value = true
|
visible.value = true
|
||||||
canSubmit.value = true
|
canSubmit.value = true
|
||||||
initData()
|
dataForm.id = ""
|
||||||
|
|
||||||
|
// 重置表单数据
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
dataFormRef.value?.resetFields()
|
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)
|
Object.assign(dataForm, response.data)
|
||||||
if (dataForm.area) {
|
if (dataForm.area) {
|
||||||
dataForm.area = String(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 || ""
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 暴露方法给父组件
|
// 暴露方法给父组件
|
||||||
defineExpose({
|
defineExpose({
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button plain icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
@@ -63,9 +63,9 @@
|
|||||||
>
|
>
|
||||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||||
<el-table-column prop="schoolName" label="学校名称" align="center" show-overflow-tooltip />
|
<el-table-column prop="schoolName" label="学校名称" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="xy" label="对接学院" align="center" show-overflow-tooltip>
|
<el-table-column prop="deptCode" label="对接学院" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getDeptName(scope.row.xy) }}
|
{{ getDeptName(scope.row.deptCode) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="area" label="所在区" align="center" show-overflow-tooltip>
|
<el-table-column prop="area" label="所在区" align="center" show-overflow-tooltip>
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentschool_del"
|
v-if="permissions.recruit_recruitstudentschool_del"
|
||||||
type="danger"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
@click="deleteHandle(scope.row.id)"
|
@click="deleteHandle(scope.row.id)"
|
||||||
@@ -117,7 +117,7 @@ import { storeToRefs } from 'pinia'
|
|||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { delObj, fetchList, areaList } from '/@/api/recruit/recruitstudentschool'
|
import { delObj, fetchList, areaList } from '/@/api/recruit/recruitstudentschool'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
|
|
||||||
@@ -204,7 +204,7 @@ const init = async () => {
|
|||||||
provinceList.value = areaData.data || []
|
provinceList.value = areaData.data || []
|
||||||
|
|
||||||
// 获取招生计划列表
|
// 获取招生计划列表
|
||||||
const planData = await list()
|
const planData = await getList()
|
||||||
planList.value = planData.data || []
|
planList.value = planData.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
<el-dialog title="延迟缴费" v-model="visible" width="300px" height="50%" @close="handleClose">
|
<el-dialog title="延迟缴费" v-model="visible" width="300px" height="50%" @close="handleClose">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="delayPayTime"
|
v-model="delayPayTime"
|
||||||
format="yyyy-MM-dd HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
value-format="yyyy-MM-dd HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
filterable
|
filterable
|
||||||
clearable
|
clearable
|
||||||
type="datetime"
|
type="datetime"
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
import { ref, reactive, onMounted } from 'vue'
|
import { ref, reactive, onMounted } from 'vue'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { getAreaStatic } from "@/api/recruit/recruitstudentsignup"
|
import { getAreaStatic } from "@/api/recruit/recruitstudentsignup"
|
||||||
import { list } from "@/api/recruit/recruitstudentplangroup"
|
import { getList } from "@/api/recruit/recruitstudentplangroup"
|
||||||
|
|
||||||
// 响应式数据
|
// 响应式数据
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
@@ -64,7 +64,7 @@ const typeEchartBarRef = ref()
|
|||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
const init = () => {
|
const init = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
dataForm.groupId = planList.value[0].id
|
dataForm.groupId = planList.value[0].id
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted } from 'vue'
|
import { ref, reactive, onMounted } from 'vue'
|
||||||
import { getContantByUserStatic } from "@/api/recruit/recruitstudentsignup"
|
import { getContantByUserStatic } from "@/api/recruit/recruitstudentsignup"
|
||||||
import { list } from "@/api/recruit/recruitstudentplangroup"
|
import { getList } from "@/api/recruit/recruitstudentplangroup"
|
||||||
|
|
||||||
// 响应式数据
|
// 响应式数据
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
@@ -57,7 +57,7 @@ const searchFormRef = ref()
|
|||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
const init = () => {
|
const init = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
dataForm.groupId = planList.value[0].id
|
dataForm.groupId = planList.value[0].id
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
import { ref, reactive, onMounted } from 'vue'
|
import { ref, reactive, onMounted } from 'vue'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { getContantByDeptStatic } from "@/api/recruit/recruitstudentsignup"
|
import { getContantByDeptStatic } from "@/api/recruit/recruitstudentsignup"
|
||||||
import { list } from "@/api/recruit/recruitstudentplangroup"
|
import { getList } from "@/api/recruit/recruitstudentplangroup"
|
||||||
|
|
||||||
// 响应式数据
|
// 响应式数据
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
@@ -59,7 +59,7 @@ const searchFormRef = ref()
|
|||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
const init = () => {
|
const init = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
dataForm.groupId = planList.value[0].id
|
dataForm.groupId = planList.value[0].id
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
import { ref, reactive, onMounted } from 'vue'
|
import { ref, reactive, onMounted } from 'vue'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { getContantByUserStatic } from "@/api/recruit/recruitstudentsignup"
|
import { getContantByUserStatic } from "@/api/recruit/recruitstudentsignup"
|
||||||
import { list } from "@/api/recruit/recruitstudentplangroup"
|
import { getList } from "@/api/recruit/recruitstudentplangroup"
|
||||||
|
|
||||||
// 响应式数据
|
// 响应式数据
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
@@ -63,7 +63,7 @@ const searchFormRef = ref()
|
|||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
const init = () => {
|
const init = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
dataForm.groupId = planList.value[0].id
|
dataForm.groupId = planList.value[0].id
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,8 +4,8 @@
|
|||||||
append-to-body
|
append-to-body
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
v-model="visible"
|
v-model="visible"
|
||||||
width="90%">
|
width="800">
|
||||||
<div style="height: 100%;width:100%">
|
<div>
|
||||||
<el-form :model="form" :rules="rules" ref="formRef" label-width="120px"
|
<el-form :model="form" :rules="rules" ref="formRef" label-width="120px"
|
||||||
class="demo-ruleForm">
|
class="demo-ruleForm">
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ defineExpose({
|
|||||||
#container {
|
#container {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 700px;
|
height: 500px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: "微软雅黑";
|
font-family: "微软雅黑";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mod-config">
|
<div>
|
||||||
<basic-container>
|
|
||||||
<el-form :inline="true" :model="dataForm" @keyup.enter="getDataList" ref="searchFormRef">
|
<el-form :inline="true" :model="dataForm" @keyup.enter="getDataList" ref="searchFormRef">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="dataForm.groupId" filterable clearable placeholder="请选择招生计划" size="small"
|
<el-select v-model="dataForm.groupId" filterable clearable placeholder="请选择招生计划">
|
||||||
style="width: 150px;">
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planList"
|
v-for="item in planList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -16,7 +14,7 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="warning"
|
<el-button type="warning"
|
||||||
icon="Download"
|
icon="Download"
|
||||||
size="small"
|
plain
|
||||||
@click="handleExport">汇总导出</el-button>
|
@click="handleExport">汇总导出</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -28,18 +26,13 @@
|
|||||||
v-loading="dataListLoading">
|
v-loading="dataListLoading">
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="xy"
|
prop="deptCode"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
width="120"
|
width="120"
|
||||||
label="学院">
|
label="学院">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{
|
<span>{{ getLabelValueByProps(deptList, scope.row.deptCode, { key: 'deptCode', value: 'deptName' }) }}</span>
|
||||||
global.getLabelValueByPropes(deptList, scope.row.xy, {
|
|
||||||
'key': 'deptCode',
|
|
||||||
'value': 'deptName'
|
|
||||||
})
|
|
||||||
}}</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -62,19 +55,16 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
</basic-container>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts" name="dormAnalysis">
|
||||||
import { ref, reactive, watch, onMounted } from 'vue'
|
import { ref, reactive, watch, onMounted } from 'vue'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { getDeptList } from "@/api/basic/basicclass"
|
import { getDeptList } from "/@/api/basic/basicclass"
|
||||||
import { dormApplyAnalysis } from "@/api/recruit/recruitstudentsignup"
|
import { dormApplyAnalysis } from "/@/api/recruit/recruitstudentsignup"
|
||||||
import { list } from '@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
// @ts-ignore
|
import { getLabelValueByProps } from '/@/utils/dictLabel'
|
||||||
import global from '@/components/tools/commondict.vue'
|
|
||||||
|
|
||||||
// 响应式数据
|
// 响应式数据
|
||||||
const deptList = ref<any[]>([])
|
const deptList = ref<any[]>([])
|
||||||
@@ -133,7 +123,7 @@ const handleExport = () => {
|
|||||||
|
|
||||||
// 初始化招生计划
|
// 初始化招生计划
|
||||||
const initPlanGroup = () => {
|
const initPlanGroup = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
dataForm.groupId = planList.value[0].id
|
dataForm.groupId = planList.value[0].id
|
||||||
@@ -166,8 +156,5 @@ onMounted(() => {
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
.mod-config {
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ import { ref, reactive, onMounted } from 'vue'
|
|||||||
import { useTable } from '/@/hooks/table'
|
import { useTable } from '/@/hooks/table'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { inSchoolSocreStatic } from '/@/api/recruit/recruitstudentsignup'
|
import { inSchoolSocreStatic } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { getDeptListByLevelTwo } from '/@/api/basic/basicdept'
|
import { getDeptListByLevelTwo } from '/@/api/basic/basicdept'
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
@@ -75,7 +75,7 @@ const init = async () => {
|
|||||||
try {
|
try {
|
||||||
const [deptResponse, planData] = await Promise.all([
|
const [deptResponse, planData] = await Promise.all([
|
||||||
getDeptListByLevelTwo(),
|
getDeptListByLevelTwo(),
|
||||||
list()
|
getList()
|
||||||
])
|
])
|
||||||
|
|
||||||
deptCodes.value = deptResponse.data || []
|
deptCodes.value = deptResponse.data || []
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mod-config">
|
<div class="layout-padding">
|
||||||
<basic-container>
|
<div class="layout-padding-auto layout-padding-view">
|
||||||
<el-form :inline="true" :model="dataForm" @keyup.enter="getDataList()" ref="searchFormRef">
|
<!-- 搜索表单 -->
|
||||||
|
<search-form
|
||||||
|
v-show="showSearch"
|
||||||
|
:model="dataForm"
|
||||||
|
ref="searchFormRef"
|
||||||
|
@keyup-enter="handleFilter"
|
||||||
|
>
|
||||||
|
<template #default="{ visible }">
|
||||||
|
<template v-if="visible">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="dataForm.groupId" filterable clearable placeholder="请选择招生计划" size="small" @change="chanMajor" style="width: 150px;">
|
<el-select v-model="dataForm.groupId" filterable clearable placeholder="请选择招生计划" @change="chanMajor">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planList"
|
v-for="item in planList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -12,8 +20,8 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="学院" prop="xy">
|
<el-form-item label="学院" prop="deptCode">
|
||||||
<el-select v-model="dataForm.xy" filterable clearable placeholder="请选择学院" size="small" style="width: 130px;">
|
<el-select v-model="dataForm.deptCode" filterable clearable placeholder="请选择学院">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in deptList"
|
v-for="item in deptList"
|
||||||
:key="item.deptCode"
|
:key="item.deptCode"
|
||||||
@@ -23,39 +31,63 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="报名时段" prop="startDate">
|
<el-form-item label="报名时段" prop="startDate">
|
||||||
<el-date-picker v-model="dataForm.startDate" format="YYYY-MM-DD" value-format="YYYY-MM-DD" clearable size="small"
|
<el-date-picker
|
||||||
:disabled-date="startDateDisabled" type="date" style="width: 200px;" ></el-date-picker>
|
v-model="dataForm.startDate"
|
||||||
-
|
format="YYYY-MM-DD"
|
||||||
<el-date-picker v-model="dataForm.endDate" format="YYYY-MM-DD" value-format="YYYY-MM-DD" clearable size="small"
|
value-format="YYYY-MM-DD"
|
||||||
:disabled-date="endDateDisabled" type="date" style="width: 200px;" ></el-date-picker>
|
clearable
|
||||||
|
:disabled-date="startDateDisabled"
|
||||||
|
type="date"
|
||||||
|
/>
|
||||||
|
<span style="margin: 0 8px;">-</span>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="dataForm.endDate"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
clearable
|
||||||
|
:disabled-date="endDateDisabled"
|
||||||
|
type="date"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="班级" prop="classNo">
|
||||||
|
<el-select filterable clearable v-model="dataForm.classCode" placeholder="请选择班级">
|
||||||
|
<el-option
|
||||||
|
v-for="item in classList"
|
||||||
|
:key="item.classCode"
|
||||||
|
:label="item.classNo"
|
||||||
|
:value="item.classCode">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<!-- 可折叠的高级筛选条件 -->
|
||||||
|
<template v-if="!visible">
|
||||||
<el-form-item label="录取专业" prop="confirmedMajor">
|
<el-form-item label="录取专业" prop="confirmedMajor">
|
||||||
<el-select v-model="dataForm.confirmedMajor" filterable clearable placeholder="请选择录取专业" size="small" >
|
<el-select v-model="dataForm.confirmedMajor" filterable clearable placeholder="请选择录取专业">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc+'('+item.xz+'年制)'"
|
:label="item.majorName+'('+item.learnYear+'年制)'"
|
||||||
:value="item.zydm">
|
:value="item.majorCode">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="拟报专业" prop="wishMajorOne">
|
<el-form-item label="拟报专业" prop="wishMajorOne">
|
||||||
<el-select v-model="dataForm.wishMajorOne" filterable clearable placeholder="请选择录取专业" size="small" >
|
<el-select v-model="dataForm.wishMajorOne" filterable clearable placeholder="请选择录取专业">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc+'('+item.xz+'年制)'"
|
:label="item.majorName+'('+item.learnYear+'年制)'"
|
||||||
:value="item.zydm">
|
:value="item.majorCode">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="唯一号/姓名/身份证号/学校名称" prop="search">
|
<el-form-item label="唯一号/姓名/身份证号/学校名称" prop="search">
|
||||||
<el-input v-model="dataForm.search" clearable placeholder="唯一号/姓名/身份证号/学校名称" size="small"></el-input>
|
<el-input v-model="dataForm.search" clearable placeholder="唯一号/姓名/身份证号/学校名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="文化程度" prop="degreeOfEducation">
|
<el-form-item label="文化程度" prop="degreeOfEducation">
|
||||||
<el-select v-model="dataForm.degreeOfEducation" filterable clearable placeholder="请选择文化程度" size="small" style="width: 120px;">
|
<el-select v-model="dataForm.degreeOfEducation" filterable clearable placeholder="请选择文化程度">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in eduList"
|
v-for="item in eduList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -65,9 +97,9 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否住宿" prop="isAccommodation">
|
<el-form-item label="是否住宿" prop="isAccommodation">
|
||||||
<el-select v-model="dataForm.isAccommodation" filterable clearable placeholder="请选择是否住宿" size="small" style="width: 120px;" >
|
<el-select v-model="dataForm.isAccommodation" filterable clearable placeholder="请选择是否住宿">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in yesNoList"
|
v-for="item in yes_no_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value">
|
||||||
@@ -75,9 +107,9 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否低保" prop="isMinimumLivingSecurity">
|
<el-form-item label="是否低保" prop="isMinimumLivingSecurity">
|
||||||
<el-select v-model="dataForm.isMinimumLivingSecurity" filterable clearable placeholder="请选择是否低保" size="small" style="width: 120px;" >
|
<el-select v-model="dataForm.isMinimumLivingSecurity" filterable clearable placeholder="请选择是否低保">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in yesNoList"
|
v-for="item in yes_no_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value">
|
||||||
@@ -85,7 +117,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="经办人" prop="auditor">
|
<el-form-item label="经办人" prop="auditor">
|
||||||
<el-select v-model="dataForm.auditor" filterable clearable placeholder="请选择经办人" size="small" style="width: 120px;">
|
<el-select v-model="dataForm.auditor" filterable clearable placeholder="请选择经办人">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in auditorList"
|
v-for="item in auditorList"
|
||||||
:key="item.username"
|
:key="item.username"
|
||||||
@@ -95,7 +127,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="缴费状态" prop="paystatus">
|
<el-form-item label="缴费状态" prop="paystatus">
|
||||||
<el-select v-model="dataForm.paystatus" filterable clearable placeholder="请选择缴费状态" size="small" style="width: 120px;" >
|
<el-select v-model="dataForm.paystatus" filterable clearable placeholder="请选择缴费状态">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in paystatusList"
|
v-for="item in paystatusList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -105,9 +137,9 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="新市民材料已上传" prop="isNewCity">
|
<el-form-item label="新市民材料已上传" prop="isNewCity">
|
||||||
<el-select v-model="dataForm.isNewCity" filterable clearable placeholder="请选择新市民材料已上传" size="small" style="width: 120px;" >
|
<el-select v-model="dataForm.isNewCity" filterable clearable placeholder="请选择新市民材料已上传">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in yesNoList"
|
v-for="item in yes_no_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value">
|
||||||
@@ -115,9 +147,9 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="毕业证已上传" prop="graPic">
|
<el-form-item label="毕业证已上传" prop="graPic">
|
||||||
<el-select v-model="dataForm.graPic" filterable clearable placeholder="请选择毕业证已上传" size="small" style="width: 120px;">
|
<el-select v-model="dataForm.graPic" filterable clearable placeholder="请选择毕业证已上传">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in yesNoList"
|
v-for="item in yes_no_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value">
|
||||||
@@ -125,7 +157,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="推送状态" prop="pushed">
|
<el-form-item label="推送状态" prop="pushed">
|
||||||
<el-select v-model="dataForm.pushed" filterable clearable placeholder="请选择推送状态" size="small" style="width: 120px;" >
|
<el-select v-model="dataForm.pushed" filterable clearable placeholder="请选择推送状态">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in pushedList"
|
v-for="item in pushedList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -136,7 +168,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="来源" prop="isOut">
|
<el-form-item label="来源" prop="isOut">
|
||||||
<el-select v-model="dataForm.isOut" filterable clearable placeholder="请选择来源" size="small" style="width: 120px;" >
|
<el-select v-model="dataForm.isOut" filterable clearable placeholder="请选择来源">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in isOutList"
|
v-for="item in isOutList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -146,7 +178,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否打印" prop="isBackTz">
|
<el-form-item label="是否打印" prop="isBackTz">
|
||||||
<el-select v-model="dataForm.isBackTz" filterable clearable placeholder="请选择是否打印" size="small" style="width: 120px;" >
|
<el-select v-model="dataForm.isBackTz" filterable clearable placeholder="请选择是否打印">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in isBackTzList"
|
v-for="item in isBackTzList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -157,60 +189,72 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="是否同步学工" prop="isTb">
|
<el-form-item label="是否同步学工" prop="isTb">
|
||||||
<el-select v-model="dataForm.isTb" filterable clearable placeholder="请选择是否同步学工" size="small" style="width: 120px;" >
|
<el-select v-model="dataForm.isTb" filterable clearable placeholder="请选择是否同步学工">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in yesNoList"
|
v-for="item in yes_no_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="班级" prop="classNo">
|
</template>
|
||||||
<el-select filterable clearable v-model="dataForm.classCode" size="small" placeholder="请选择班级" >
|
</template>
|
||||||
<el-option
|
|
||||||
v-for="item in classList"
|
<!-- 操作按钮 -->
|
||||||
:key="item.classCode"
|
<template #actions>
|
||||||
:label="item.classNo"
|
|
||||||
:value="item.classCode">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button :icon="Search" type="primary" size="small"
|
<el-button type="primary" @click="handleFilter" icon="Search">查询</el-button>
|
||||||
@click="handleFilter()">查询
|
<el-button @click="resetForm('searchForm')" icon="Refresh" class="ml10">重置</el-button>
|
||||||
</el-button>
|
|
||||||
<el-button :icon="Delete" type="default" plain size="small"
|
|
||||||
@click="resetForm('searchFormRef')">清空
|
|
||||||
</el-button>
|
|
||||||
|
|
||||||
<el-button type="warning"
|
|
||||||
:icon="Download"
|
|
||||||
size="small"
|
|
||||||
@click="handleExport()">分班导出</el-button>
|
|
||||||
<el-button type="danger"
|
|
||||||
v-if="permissions.recruit_banding"
|
|
||||||
size="small"
|
|
||||||
@click="oneClassHandle()">一键分班</el-button>
|
|
||||||
<el-button type="danger"
|
|
||||||
v-if="permissions.recruit_banding"
|
|
||||||
size="small"
|
|
||||||
@click="oneStuNoHandle()">一键分学号</el-button>
|
|
||||||
<el-button type="success"
|
|
||||||
v-if="permissions.recruit_synchronous_stuwork"
|
|
||||||
size="small"
|
|
||||||
@click="tbStuWorkHandle()">同步学工</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</search-form>
|
||||||
|
|
||||||
</el-form>
|
<!-- 操作按钮 -->
|
||||||
|
<el-row>
|
||||||
|
<div class="mb15" style="width: 100%;">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
plain
|
||||||
|
icon="Download"
|
||||||
|
@click="handleExport()">分班导出
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="permissions.recruit_banding"
|
||||||
|
class="ml10"
|
||||||
|
type="danger"
|
||||||
|
plain
|
||||||
|
icon="Promotion"
|
||||||
|
@click="oneClassHandle()">一键分班
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="permissions.recruit_banding"
|
||||||
|
class="ml10"
|
||||||
|
type="danger"
|
||||||
|
plain
|
||||||
|
icon="Promotion"
|
||||||
|
@click="oneStuNoHandle()">一键分学号
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="permissions.recruit_synchronous_stuwork"
|
||||||
|
class="ml10"
|
||||||
|
type="primary"
|
||||||
|
plain
|
||||||
|
icon="Connection"
|
||||||
|
@click="tbStuWorkHandle()">同步学工
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<!-- 表格 -->
|
||||||
<div class="avue-crud">
|
|
||||||
<el-table
|
<el-table
|
||||||
:data="dataList"
|
ref="tableRef"
|
||||||
|
:data="state.dataList"
|
||||||
border
|
border
|
||||||
stripe
|
stripe
|
||||||
v-loading="dataListLoading">
|
v-loading="state.loading"
|
||||||
|
:cell-style="tableStyle.cellStyle"
|
||||||
|
:header-cell-style="tableStyle.headerCellStyle">
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="serialNumber"
|
prop="serialNumber"
|
||||||
@@ -228,15 +272,17 @@
|
|||||||
prop="gender"
|
prop="gender"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
|
width="90"
|
||||||
label="性别">
|
label="性别">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{getGender(scope.row.gender)}}
|
<GenderTag :sex="scope.row.gender" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="idNumber"
|
prop="idNumber"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
|
min-width="180"
|
||||||
label="身份证号">
|
label="身份证号">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -245,17 +291,17 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="录取专业">
|
label="录取专业">
|
||||||
<template #default="scope" >
|
<template #default="scope" >
|
||||||
<span v-if="scope.row.auditStatus==20">{{getLabelValueByPropes2(planMajorList,scope.row.confirmedMajor,{'key':'zydm','value':'zymc'})}}</span>
|
<span v-if="scope.row.auditStatus==20">{{getLabelValueByPropes2(planMajorList,scope.row.confirmedMajor,{'key':'majorCode','value':'majorName'})}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="xy"
|
prop="deptCode"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="学院">
|
label="学院">
|
||||||
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.auditStatus==20">{{getLabelValueByPropes(deptList,scope.row.xy,{'key':'deptCode','value':'deptName'})}}</span>
|
<span v-if="scope.row.auditStatus==20">{{getLabelValueByPropes(deptList,scope.row.deptCode,{'key':'deptCode','value':'deptName'})}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -275,10 +321,11 @@
|
|||||||
prop="isTb"
|
prop="isTb"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
|
width="100"
|
||||||
label="是否同步">
|
label="是否同步">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.isTb=='0'" style="color: red">否</span>
|
<el-tag v-if="scope.row.isTb=='1'" type="success">是</el-tag>
|
||||||
<span v-if="scope.row.isTb=='1'" style="color: green">是</span>
|
<el-tag v-else-if="scope.row.isTb=='0'" type="danger">否</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
@@ -287,25 +334,28 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="操作">
|
label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link size="small" @click="addOrUpdateHandle(scope.row.id,0)" :icon="ZoomIn" plain>查看</el-button>
|
<el-button type="primary" link icon="Document" size="small" @click="addOrUpdateHandle(scope.row.id,0)">
|
||||||
<el-button type="primary" link size="small" @click="changeclass(scope.row)" v-if="permissions.recruit_banding && scope.row.isTb=='0' && scope.row.classNo !=null" :icon="Edit" plain>调整班级</el-button>
|
查看
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="permissions.recruit_banding && scope.row.isTb=='0' && scope.row.classNo !=null"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
size="small"
|
||||||
|
@click="changeclass(scope.row)">
|
||||||
|
<el-icon><Edit /></el-icon>
|
||||||
|
调整班级
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="avue-crud__pagination">
|
<!-- 分页 -->
|
||||||
<el-pagination
|
<pagination
|
||||||
@size-change="sizeChangeHandle"
|
v-bind="state.pagination"
|
||||||
@current-change="currentChangeHandle"
|
@current-change="currentChangeHandle"
|
||||||
:current-page="pageIndex"
|
@size-change="sizeChangeHandle"
|
||||||
:page-sizes="[10, 20, 50, 100]"
|
/>
|
||||||
:page-size="pageSize"
|
|
||||||
:total="totalPage"
|
|
||||||
background
|
|
||||||
layout="total, sizes, prev, pager, next, jumper">
|
|
||||||
</el-pagination>
|
|
||||||
</div>
|
|
||||||
<!-- 弹窗, 新增 / 修改 -->
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
<TableForm v-if="addOrUpdateVisible" ref="addOrUpdateRef" @refreshDataList="getDataList" ></TableForm>
|
<TableForm v-if="addOrUpdateVisible" ref="addOrUpdateRef" @refreshDataList="getDataList" ></TableForm>
|
||||||
|
|
||||||
@@ -321,7 +371,10 @@
|
|||||||
<el-table-column label="家长手机号" prop="parentTelOne" align="center"></el-table-column>
|
<el-table-column label="家长手机号" prop="parentTelOne" align="center"></el-table-column>
|
||||||
<el-table-column label="操作" prop="" align="center">
|
<el-table-column label="操作" prop="" align="center">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-button @click="updateFS()" :icon="Search" type="danger" size="small">立即查询</el-button>
|
<el-button @click="updateFS()" type="danger" size="small">
|
||||||
|
<el-icon><Search /></el-icon>
|
||||||
|
立即查询
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -414,21 +467,21 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
<DormFW v-if="dormFWRefVisible" ref="dormFWRef"></DormFW>
|
<DormFW v-if="dormFWRefVisible" ref="dormFWRef"></DormFW>
|
||||||
<ShowMap v-if="baiduMapVisible" ref="baiduMapRef"></ShowMap>
|
<ShowMap v-if="baiduMapVisible" ref="baiduMapRef"></ShowMap>
|
||||||
</basic-container>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, computed, nextTick, onMounted } from 'vue'
|
import { ref, reactive, computed, nextTick, onMounted, defineAsyncComponent } from 'vue'
|
||||||
import { defineAsyncComponent } from 'vue'
|
import { Search, ZoomIn, Edit } from '@element-plus/icons-vue'
|
||||||
import { Search, Delete, Download, ZoomIn, Edit } from '@element-plus/icons-vue'
|
|
||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { useMessageBox } from '/@/hooks/message'
|
import { useMessageBox } from '/@/hooks/message'
|
||||||
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { list } from '@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import {
|
import {
|
||||||
delObj,
|
delObj,
|
||||||
exportZip,
|
exportZip,
|
||||||
@@ -444,21 +497,23 @@ import {
|
|||||||
oneClass,
|
oneClass,
|
||||||
oneStuNo,
|
oneStuNo,
|
||||||
changeClassInfo, getMajorClass
|
changeClassInfo, getMajorClass
|
||||||
} from '@/api/recruit/recruitstudentsignup'
|
} from '/@/api/recruit/recruitstudentsignup'
|
||||||
import global from '@/components/tools/commondict.vue'
|
import { getLabelValueByProps } from '/@/utils/dictLabel'
|
||||||
import { getClassListByRole, getDeptList, queryAllClassByInfo } from "@/api/basic/basicclass"
|
import { getClassListByRole, getDeptList } from "/@/api/basic/basicclass"
|
||||||
import {listPlanByCondition as planMajor} from "@/api/recruit/recruitstudentplan"
|
import {listPlanByCondition as planMajor} from "/@/api/recruit/recruitstudentplan"
|
||||||
import { getTypeValue } from "@/api/admin/dict"
|
import { getTypeValue } from "/@/api/admin/dict"
|
||||||
import { getUserListByRole } from "@/api/admin/user"
|
import { getUserListByRole } from "/@/api/admin/user"
|
||||||
import { ROLE_CODE } from "@/config/global"
|
import { ROLE_CODE } from "/@/config/global"
|
||||||
import { updateFs } from "@/api/finance/financenormalstu"
|
import { updateFs } from "/@/api/finance/financenormalstu"
|
||||||
import { showLoading, hideLoading } from '@/api/asset/loading'
|
import { showLoading, hideLoading } from '/@/api/asset/loading'
|
||||||
|
import { useDict } from '/@/hooks/dict'
|
||||||
|
|
||||||
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
||||||
const MajorChange = defineAsyncComponent(() => import('./majorChange.vue'))
|
const MajorChange = defineAsyncComponent(() => import('./majorChange.vue'))
|
||||||
const Update = defineAsyncComponent(() => import('./update.vue'))
|
const Update = defineAsyncComponent(() => import('./update.vue'))
|
||||||
const DormFW = defineAsyncComponent(() => import('./dormFW.vue'))
|
const DormFW = defineAsyncComponent(() => import('./dormFW.vue'))
|
||||||
const ShowMap = defineAsyncComponent(() => import('./showMap.vue'))
|
const ShowMap = defineAsyncComponent(() => import('./showMap.vue'))
|
||||||
|
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
|
||||||
|
|
||||||
// 使用 Pinia store
|
// 使用 Pinia store
|
||||||
const userInfoStore = useUserInfo()
|
const userInfoStore = useUserInfo()
|
||||||
@@ -475,20 +530,25 @@ const permissions = computed(() => {
|
|||||||
|
|
||||||
// 使用 hooks
|
// 使用 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
|
||||||
|
|
||||||
// 辅助函数
|
// 辅助函数
|
||||||
const getLabelValueByPropes = (list: any[], key: string, props: { key: string, value: string }) => {
|
const getLabelValueByPropes = (list: any[], key: string, props: { key: string, value: string }) => {
|
||||||
return global.getLabelValueByPropes(list, key, props)
|
return getLabelValueByProps(list, key, props)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getLabelValueByPropes2 = (list: any[], key: string, props: { key: string, value: string }) => {
|
const getLabelValueByPropes2 = (list: any[], key: string, props: { key: string, value: string }) => {
|
||||||
return global.getLabelValueByPropes2(list, key, props)
|
if (!list || !Array.isArray(list)) return ''
|
||||||
|
const item = list.find((it: any) => String(it[props.key]) === String(key))
|
||||||
|
if (!item) return ''
|
||||||
|
const majorName = item[props.value] ?? ''
|
||||||
|
const years = item.learnYear != null ? `${item.learnYear}年制` : ''
|
||||||
|
return years ? `${majorName}(${years})` : majorName
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表单引用
|
// 表单引用
|
||||||
const searchFormRef = ref()
|
const searchFormRef = ref()
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
|
const tableRef = ref()
|
||||||
const addOrUpdateRef = ref()
|
const addOrUpdateRef = ref()
|
||||||
const majorChangeRef = ref()
|
const majorChangeRef = ref()
|
||||||
const updateRef = ref()
|
const updateRef = ref()
|
||||||
@@ -506,7 +566,7 @@ const changeForm = reactive({
|
|||||||
|
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
groupId: '',
|
groupId: '',
|
||||||
xy: "",
|
deptCode: "",
|
||||||
confirmedMajor: "",
|
confirmedMajor: "",
|
||||||
degreeOfEducation: "",
|
degreeOfEducation: "",
|
||||||
isAccommodation: "",
|
isAccommodation: "",
|
||||||
@@ -534,21 +594,39 @@ const delayPayTime = ref("")
|
|||||||
const auditorList = ref<any[]>([])
|
const auditorList = ref<any[]>([])
|
||||||
const isBackTzList = [{ label: "未打印", value: "0" }, { label: "已打印", value: "1" }]
|
const isBackTzList = [{ label: "未打印", value: "0" }, { label: "已打印", value: "1" }]
|
||||||
const paystatusList = [{ label: "已缴费", value: "10" }, { label: "未缴费", value: "0" }, { label: "部分缴费", value: "5" }]
|
const paystatusList = [{ label: "已缴费", value: "10" }, { label: "未缴费", value: "0" }, { label: "部分缴费", value: "5" }]
|
||||||
|
// 搜索表单显示状态
|
||||||
|
const showSearch = ref(true)
|
||||||
|
|
||||||
|
// 列表数据
|
||||||
const planList = ref<any[]>([])
|
const planList = ref<any[]>([])
|
||||||
const eduList = ref<any[]>([])
|
const eduList = ref<any[]>([])
|
||||||
const planMajorList = ref<any[]>([])
|
const planMajorList = ref<any[]>([])
|
||||||
const auditStatusList = [{ label: "未录取", value: "-20" }, { label: "待审核", value: "0" }, { label: "已录取", value: "20" }]
|
|
||||||
const yesNoList = [{ label: "否", value: "0" }, { label: "是", value: "1" }]
|
|
||||||
const pushedList = [{ label: "未推送", value: "0" }, { label: "已推送", value: "1" }]
|
const pushedList = [{ label: "未推送", value: "0" }, { label: "已推送", value: "1" }]
|
||||||
const isOutFwList = [{ label: "待确认", value: "0" }, { label: "范围内", value: "1" }, { label: "范围外", value: "2" }]
|
|
||||||
const isOutList = [{ label: "学校", value: "0" }, { label: "市平台", value: "1" }]
|
const isOutList = [{ label: "学校", value: "0" }, { label: "市平台", value: "1" }]
|
||||||
const deptList = ref<any[]>([])
|
const deptList = ref<any[]>([])
|
||||||
const dataList = ref<any[]>([])
|
|
||||||
const pageIndex = ref(1)
|
|
||||||
const pageSize = ref(10)
|
|
||||||
const totalPage = ref(0)
|
|
||||||
const lqtzsShow = ref(false)
|
const lqtzsShow = ref(false)
|
||||||
const dataListLoading = ref(false)
|
|
||||||
|
// 字典数据
|
||||||
|
const { yes_no_type } = useDict('yes_no_type')
|
||||||
|
|
||||||
|
// 表格状态
|
||||||
|
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||||
|
queryForm: dataForm,
|
||||||
|
pageList: async (params: any) => {
|
||||||
|
params.auditStatus = '20'
|
||||||
|
const response = await classPage(params)
|
||||||
|
return {
|
||||||
|
data: {
|
||||||
|
records: response.data.records || [],
|
||||||
|
total: response.data.total || 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
createdIsNeed: false
|
||||||
|
})
|
||||||
|
|
||||||
|
// 使用 table hook
|
||||||
|
const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTable(state)
|
||||||
const addOrUpdateVisible = ref(false)
|
const addOrUpdateVisible = ref(false)
|
||||||
const changeClassVisible = ref(false)
|
const changeClassVisible = ref(false)
|
||||||
const majorChangeVisible = ref(false)
|
const majorChangeVisible = ref(false)
|
||||||
@@ -765,7 +843,7 @@ const init = () => {
|
|||||||
deptList.value = data.data
|
deptList.value = data.data
|
||||||
})
|
})
|
||||||
getClassData()
|
getClassData()
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
dataForm.groupId = planList.value[0].id
|
dataForm.groupId = planList.value[0].id
|
||||||
@@ -812,35 +890,6 @@ const chanMajor = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleFilter = () => {
|
const handleFilter = () => {
|
||||||
pageIndex.value = 1
|
|
||||||
getDataList()
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取数据列表
|
|
||||||
const getDataList = () => {
|
|
||||||
dataList.value = []
|
|
||||||
dataListLoading.value = true
|
|
||||||
dataForm.auditStatus = '20'
|
|
||||||
classPage(Object.assign({
|
|
||||||
current: pageIndex.value,
|
|
||||||
size: pageSize.value
|
|
||||||
}, dataForm)).then((response: any) => {
|
|
||||||
dataList.value = response.data.records
|
|
||||||
totalPage.value = response.data.total
|
|
||||||
})
|
|
||||||
dataListLoading.value = false
|
|
||||||
}
|
|
||||||
|
|
||||||
// 每页数
|
|
||||||
const sizeChangeHandle = (val: number) => {
|
|
||||||
pageSize.value = val
|
|
||||||
pageIndex.value = 1
|
|
||||||
getDataList()
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当前页
|
|
||||||
const currentChangeHandle = (val: number) => {
|
|
||||||
pageIndex.value = val
|
|
||||||
getDataList()
|
getDataList()
|
||||||
}
|
}
|
||||||
const changeclass = (row: any) => {
|
const changeclass = (row: any) => {
|
||||||
@@ -922,8 +971,8 @@ const deleteHandle = (id: string) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const resetForm = (formName: string) => {
|
const resetForm = (formName: string) => {
|
||||||
if (formName === 'searchFormRef') {
|
if (formName === 'searchForm') {
|
||||||
searchFormRef.value?.resetFields()
|
searchFormRef.value?.formRef?.resetFields()
|
||||||
} else if (formName === 'formRef') {
|
} else if (formName === 'formRef') {
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="学制" prop="xz">
|
<el-form-item label="学制" prop="learnYear">
|
||||||
<el-select v-model="queryForm.xz" filterable placeholder="请选择学制" clearable>
|
<el-select v-model="queryForm.learnYear" filterable placeholder="请选择学制" clearable>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in majorYears"
|
v-for="item in majorYears"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
{{ getDeptType(scope.row.deptCode) }}
|
{{ getDeptType(scope.row.deptCode) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="zymc" header-align="center" align="center" label="所报专业" />
|
<el-table-column prop="majorName" header-align="center" align="center" label="所报专业" />
|
||||||
<el-table-column prop="maxScore" header-align="center" align="center" label="最高分" />
|
<el-table-column prop="maxScore" header-align="center" align="center" label="最高分" />
|
||||||
<el-table-column prop="minScore" header-align="center" align="center" label="最低分" />
|
<el-table-column prop="minScore" header-align="center" align="center" label="最低分" />
|
||||||
<el-table-column prop="avgScore" header-align="center" align="center" label="平均分" />
|
<el-table-column prop="avgScore" header-align="center" align="center" label="平均分" />
|
||||||
@@ -74,7 +74,7 @@ import { useTable } from '/@/hooks/table'
|
|||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { useDict } from '/@/hooks/dict'
|
import { useDict } from '/@/hooks/dict'
|
||||||
import { juniorlneStatic } from '/@/api/recruit/recruitstudentsignup'
|
import { juniorlneStatic } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { getDeptListByLevelTwo } from '/@/api/basic/basicdept'
|
import { getDeptListByLevelTwo } from '/@/api/basic/basicdept'
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
@@ -97,7 +97,7 @@ const exportLoading = ref(false)
|
|||||||
// 查询表单
|
// 查询表单
|
||||||
const queryForm = reactive({
|
const queryForm = reactive({
|
||||||
groupId: '',
|
groupId: '',
|
||||||
xz: '',
|
learnYear: '',
|
||||||
isUnion: ''
|
isUnion: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ const init = async () => {
|
|||||||
const [deptResponse, majorYearsRes, planData] = await Promise.all([
|
const [deptResponse, majorYearsRes, planData] = await Promise.all([
|
||||||
getDeptListByLevelTwo(),
|
getDeptListByLevelTwo(),
|
||||||
getTypeValue('basic_major_years'),
|
getTypeValue('basic_major_years'),
|
||||||
list()
|
getList()
|
||||||
])
|
])
|
||||||
|
|
||||||
deptCodes.value = deptResponse.data || []
|
deptCodes.value = deptResponse.data || []
|
||||||
@@ -154,7 +154,7 @@ const dataExportHandle = async () => {
|
|||||||
|
|
||||||
// 改变行颜色
|
// 改变行颜色
|
||||||
const changeRowColor = ({ row }: { row: any }) => {
|
const changeRowColor = ({ row }: { row: any }) => {
|
||||||
if (row.zymc === '合计') {
|
if (row.majorName === '合计') {
|
||||||
return {
|
return {
|
||||||
color: 'red'
|
color: 'red'
|
||||||
}
|
}
|
||||||
@@ -178,7 +178,7 @@ const resetQuery = () => {
|
|||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
}
|
}
|
||||||
queryForm.xz = ''
|
queryForm.learnYear = ''
|
||||||
queryForm.isUnion = ''
|
queryForm.isUnion = ''
|
||||||
getDataList()
|
getDataList()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,9 @@
|
|||||||
<!--
|
|
||||||
- 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.
|
|
||||||
-
|
|
||||||
-->
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="layout-padding">
|
<div>
|
||||||
<div class="layout-padding-auto layout-padding-view">
|
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<el-form :model="queryForm" inline class="mb-4" ref="searchFormRef">
|
<el-form :model="queryForm" inline ref="searchFormRef">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划" style="width: 150px;">
|
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planList"
|
v-for="item in planList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -30,8 +12,8 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="学院" prop="xy">
|
<el-form-item label="学院" prop="deptCode">
|
||||||
<el-select v-model="queryForm.xy" filterable clearable placeholder="请选择学院" style="width: 130px;">
|
<el-select v-model="queryForm.deptCode" filterable clearable placeholder="请选择学院">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in deptList"
|
v-for="item in deptList"
|
||||||
:key="item.deptCode"
|
:key="item.deptCode"
|
||||||
@@ -44,9 +26,9 @@
|
|||||||
<el-select v-model="queryForm.confirmedMajor" filterable clearable placeholder="请选择录取专业">
|
<el-select v-model="queryForm.confirmedMajor" filterable clearable placeholder="请选择录取专业">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc + '(' + item.xz + '年制)'"
|
:label="item.majorName + '(' + item.learnYear + '年制)'"
|
||||||
:value="item.zydm"
|
:value="item.majorCode"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -54,7 +36,7 @@
|
|||||||
<el-input v-model="queryForm.search" clearable placeholder="唯一号/姓名/身份证号" />
|
<el-input v-model="queryForm.search" clearable placeholder="唯一号/姓名/身份证号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="住宿范围" prop="isOutFw">
|
<el-form-item label="住宿范围" prop="isOutFw">
|
||||||
<el-select v-model="queryForm.isOutFw" filterable clearable placeholder="请选择住宿范围" style="width: 100px;">
|
<el-select v-model="queryForm.isOutFw" filterable clearable placeholder="请选择住宿范围">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in isOutFwList"
|
v-for="item in isOutFwList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -64,7 +46,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否发送短信" prop="isSend">
|
<el-form-item label="是否发送短信" prop="isSend">
|
||||||
<el-select v-model="queryForm.isSend" filterable clearable placeholder="请选择是否发送短信" style="width: 100px;">
|
<el-select v-model="queryForm.isSend" filterable clearable placeholder="请选择是否发送短信">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in isSendList"
|
v-for="item in isSendList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -74,9 +56,9 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="性别" prop="gender">
|
<el-form-item label="性别" prop="gender">
|
||||||
<el-select v-model="queryForm.gender" filterable clearable placeholder="请选择性别" style="width: 120px;">
|
<el-select v-model="queryForm.gender" filterable clearable placeholder="请选择性别">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in genderList"
|
v-for="item in sexy"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
@@ -85,7 +67,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
@@ -93,11 +75,10 @@
|
|||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruitStuDorm"
|
v-if="permissions.recruitStuDorm"
|
||||||
type="primary"
|
|
||||||
icon="Setting"
|
icon="Setting"
|
||||||
@click="setDormFW"
|
@click="setDormFW"
|
||||||
>
|
>
|
||||||
住宿范围
|
设置住宿范围
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruitStuDorm"
|
v-if="permissions.recruitStuDorm"
|
||||||
@@ -145,13 +126,13 @@
|
|||||||
<el-table-column prop="name" label="姓名" width="100" align="center" show-overflow-tooltip />
|
<el-table-column prop="name" label="姓名" width="100" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="gender" label="性别" width="80" align="center" show-overflow-tooltip>
|
<el-table-column prop="gender" label="性别" width="80" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getGender(scope.row.gender) }}
|
{{ getLabelValue(sexy, scope.row.gender) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="idNumber" label="身份证号" width="180" align="center" show-overflow-tooltip />
|
<el-table-column prop="idNumber" label="身份证号" width="180" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="xy" label="学院" width="120" align="center" show-overflow-tooltip>
|
<el-table-column prop="deptCode" label="学院" width="120" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getDeptName(scope.row.xy) }}
|
{{ getDeptName(scope.row.deptCode) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="homeAddressDetail" label="家庭地址" align="center" show-overflow-tooltip />
|
<el-table-column prop="homeAddressDetail" label="家庭地址" align="center" show-overflow-tooltip />
|
||||||
@@ -222,40 +203,8 @@
|
|||||||
@size-change="sizeChangeHandle"
|
@size-change="sizeChangeHandle"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 支付二维码弹窗 -->
|
<DormFW ref="dormFWRef" />
|
||||||
<el-dialog v-model="dialogFormVisible" title="支付二维码" width="800px" @close="dialogFormVisible = false">
|
<ShowMap ref="baiduMapRef" />
|
||||||
<el-table :data="tableData" border>
|
|
||||||
<el-table-column label="唯一号" prop="serialNumber" align="center" />
|
|
||||||
<el-table-column label="姓名" prop="name" align="center" />
|
|
||||||
<el-table-column label="家长手机号" prop="parentTelOne" align="center" />
|
|
||||||
<el-table-column label="操作" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button type="danger" icon="Search" @click="updateFS">立即查询</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<div style="padding-top: 20px;">
|
|
||||||
<div id="payQrcode1" style="display: inline-block;">
|
|
||||||
{{ payQrcode1Msg }}
|
|
||||||
</div>
|
|
||||||
<!-- <vue-qr :text="payQrcode1" :size="200" v-if="showPrise1" style="display: inline-block"></vue-qr> -->
|
|
||||||
|
|
||||||
<div id="payQrcode2" style="display: inline-block">
|
|
||||||
{{ payQrcode2Msg }}
|
|
||||||
</div>
|
|
||||||
<!-- <vue-qr :text="payQrcode2" :size="200" v-if="showPrise2" style="display: inline-block"></vue-qr> -->
|
|
||||||
|
|
||||||
<div id="payQrcode3" style="display: inline-block">
|
|
||||||
{{ payQrcode3Msg }}
|
|
||||||
</div>
|
|
||||||
<!-- <vue-qr :text="payQrcode3" :size="200" v-if="showPrise3" style="display: inline-block"></vue-qr> -->
|
|
||||||
</div>
|
|
||||||
<span style="color: red;padding-top: 20px;">** 此界面为查询学生缴款二维码,如有收不到微信推送,或手机号填错的,可直接在此扫码支付,支付成功后,请手动点击"立即查询"按钮,查询该生的缴费情况;因财政收费系统有一定的滞后性,如点击"立即查询"后任显示未交费,请稍后再继续查询,或重新点击"立即查询"按钮 **</span>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
<dorm-f-w v-if="dormFWRefVisible" ref="dormFWRef" />
|
|
||||||
<show-map v-if="baiduMapVisible" ref="baiduMapRef" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -265,11 +214,12 @@ import { storeToRefs } from 'pinia'
|
|||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { useDict } from '/@/hooks/dict'
|
||||||
import { fetchListStuDorm, yjOut, setFw, delFw, yjSend } from '/@/api/recruit/recruitstudentsignup'
|
import { getLabelValue } from '/@/utils/dictLabel'
|
||||||
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
|
import { fetchListStuDorm, yjOut as yjOutApi, setFw as setFwApi, delFw, yjSend as yjSendApi } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
// @ts-ignore
|
|
||||||
import global from '@/components/tools/commondict.vue'
|
|
||||||
|
|
||||||
const DormFW = defineAsyncComponent(() => import('./dormFW.vue'))
|
const DormFW = defineAsyncComponent(() => import('./dormFW.vue'))
|
||||||
const ShowMap = defineAsyncComponent(() => import('./showMap.vue'))
|
const ShowMap = defineAsyncComponent(() => import('./showMap.vue'))
|
||||||
@@ -291,6 +241,9 @@ const permissions = computed(() => {
|
|||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
|
|
||||||
|
// 字典数据
|
||||||
|
const { sexy } = useDict('sexy')
|
||||||
|
|
||||||
// 表格引用
|
// 表格引用
|
||||||
const tableRef = ref()
|
const tableRef = ref()
|
||||||
const searchFormRef = ref()
|
const searchFormRef = ref()
|
||||||
@@ -301,14 +254,13 @@ const baiduMapRef = ref()
|
|||||||
const planList = ref<any[]>([])
|
const planList = ref<any[]>([])
|
||||||
const planMajorList = ref<any[]>([])
|
const planMajorList = ref<any[]>([])
|
||||||
const deptList = ref<any[]>([])
|
const deptList = ref<any[]>([])
|
||||||
const genderList = ref([{ label: '男', value: '1' }, { label: '女', value: '2' }])
|
|
||||||
const isOutFwList = ref([{ label: '待确认', value: '0' }, { label: '范围内', value: '1' }, { label: '范围外', value: '2' }])
|
const isOutFwList = ref([{ label: '待确认', value: '0' }, { label: '范围内', value: '1' }, { label: '范围外', value: '2' }])
|
||||||
const isSendList = ref([{ label: '未发送', value: 0 }, { label: '已发送', value: 1 }])
|
const isSendList = ref([{ label: '未发送', value: 0 }, { label: '已发送', value: 1 }])
|
||||||
|
|
||||||
// 查询表单
|
// 查询表单
|
||||||
const queryForm = reactive({
|
const queryForm = reactive({
|
||||||
groupId: '',
|
groupId: '',
|
||||||
xy: '',
|
deptCode: '',
|
||||||
confirmedMajor: '',
|
confirmedMajor: '',
|
||||||
search: '',
|
search: '',
|
||||||
isOutFw: '',
|
isOutFw: '',
|
||||||
@@ -316,20 +268,7 @@ const queryForm = reactive({
|
|||||||
gender: ''
|
gender: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
// 弹窗状态
|
// 弹窗状态(DormFW 和 ShowMap 组件内部自己管理显示状态)
|
||||||
const dialogFormVisible = ref(false)
|
|
||||||
const dormFWRefVisible = ref(false)
|
|
||||||
const baiduMapVisible = ref(false)
|
|
||||||
const tableData = ref<any[]>([])
|
|
||||||
const payQrcode1 = ref('')
|
|
||||||
const showPrise1 = ref(false)
|
|
||||||
const payQrcode1Msg = ref('')
|
|
||||||
const payQrcode2 = ref('')
|
|
||||||
const payQrcode2Msg = ref('')
|
|
||||||
const showPrise2 = ref(false)
|
|
||||||
const payQrcode3 = ref('')
|
|
||||||
const payQrcode3Msg = ref('')
|
|
||||||
const showPrise3 = ref(false)
|
|
||||||
|
|
||||||
// 获取学院名称
|
// 获取学院名称
|
||||||
const getDeptName = (deptCode: string) => {
|
const getDeptName = (deptCode: string) => {
|
||||||
@@ -337,17 +276,6 @@ const getDeptName = (deptCode: string) => {
|
|||||||
return item ? item.deptName : ''
|
return item ? item.deptName : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取性别
|
|
||||||
const getGender = (gender: string) => {
|
|
||||||
if (gender == '2') {
|
|
||||||
return '女'
|
|
||||||
}
|
|
||||||
if (gender == '1') {
|
|
||||||
return '男'
|
|
||||||
}
|
|
||||||
return ''
|
|
||||||
}
|
|
||||||
|
|
||||||
// 表格状态
|
// 表格状态
|
||||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||||
queryForm: queryForm,
|
queryForm: queryForm,
|
||||||
@@ -360,7 +288,16 @@ const state: BasicTableProps = reactive<BasicTableProps>({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
createdIsNeed: false
|
createdIsNeed: false,
|
||||||
|
dataList: [],
|
||||||
|
loading: false,
|
||||||
|
pagination: {
|
||||||
|
current: 1,
|
||||||
|
size: 10,
|
||||||
|
total: 0,
|
||||||
|
pageSizes: [1, 10, 20, 50, 100, 200],
|
||||||
|
layout: 'total, sizes, prev, pager, next, jumper'
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// 使用 table hook
|
// 使用 table hook
|
||||||
@@ -374,7 +311,7 @@ const init = async () => {
|
|||||||
deptList.value = deptData.data || []
|
deptList.value = deptData.data || []
|
||||||
|
|
||||||
// 获取招生计划列表
|
// 获取招生计划列表
|
||||||
const planData = await list()
|
const planData = await getList()
|
||||||
planList.value = planData.data || []
|
planList.value = planData.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
@@ -382,7 +319,7 @@ const init = async () => {
|
|||||||
|
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化失败', error)
|
message.error('初始化失败')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -391,7 +328,7 @@ const setFw = async (row: any, type: number) => {
|
|||||||
const title = type == 1 ? '范围内' : '范围外'
|
const title = type == 1 ? '范围内' : '范围外'
|
||||||
try {
|
try {
|
||||||
await messageBox.confirm(`是否确认设置${title}?请谨慎操作`)
|
await messageBox.confirm(`是否确认设置${title}?请谨慎操作`)
|
||||||
await setFw({ id: row.id, isOutFw: type })
|
await setFwApi({ id: row.id, isOutFw: type })
|
||||||
message.success('操作成功')
|
message.success('操作成功')
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch {
|
} catch {
|
||||||
@@ -401,7 +338,6 @@ const setFw = async (row: any, type: number) => {
|
|||||||
|
|
||||||
// 设置住宿范围窗口
|
// 设置住宿范围窗口
|
||||||
const setDormFW = () => {
|
const setDormFW = () => {
|
||||||
dormFWRefVisible.value = true
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
dormFWRef.value?.init()
|
dormFWRef.value?.init()
|
||||||
})
|
})
|
||||||
@@ -416,7 +352,7 @@ const yjOut = async () => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await messageBox.confirm('是否确认一键判断是否超出住宿范围?请谨慎操作')
|
await messageBox.confirm('是否确认一键判断是否超出住宿范围?请谨慎操作')
|
||||||
await yjOut({ groupId: queryForm.groupId })
|
await yjOutApi({ groupId: queryForm.groupId })
|
||||||
message.success('操作成功')
|
message.success('操作成功')
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch {
|
} catch {
|
||||||
@@ -433,7 +369,7 @@ const yjSend = async () => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await messageBox.confirm('是否确认批量发送短信通知?请谨慎操作')
|
await messageBox.confirm('是否确认批量发送短信通知?请谨慎操作')
|
||||||
await yjSend({ groupId: queryForm.groupId })
|
await yjSendApi({ groupId: queryForm.groupId })
|
||||||
message.success('操作成功')
|
message.success('操作成功')
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch {
|
} catch {
|
||||||
@@ -443,7 +379,6 @@ const yjSend = async () => {
|
|||||||
|
|
||||||
// 百度地图
|
// 百度地图
|
||||||
const baiduMap = (row: any) => {
|
const baiduMap = (row: any) => {
|
||||||
baiduMapVisible.value = true
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
baiduMapRef.value?.init(row)
|
baiduMapRef.value?.init(row)
|
||||||
})
|
})
|
||||||
@@ -467,17 +402,12 @@ const handleExport = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 立即查询
|
|
||||||
const updateFS = async () => {
|
|
||||||
// 这个方法需要根据实际API调整
|
|
||||||
message.info('功能待实现')
|
|
||||||
}
|
|
||||||
|
|
||||||
// 重置查询
|
// 重置查询
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
searchFormRef.value?.resetFields()
|
searchFormRef.value?.resetFields()
|
||||||
queryForm.groupId = ''
|
queryForm.groupId = ''
|
||||||
queryForm.xy = ''
|
queryForm.deptCode = ''
|
||||||
queryForm.confirmedMajor = ''
|
queryForm.confirmedMajor = ''
|
||||||
queryForm.search = ''
|
queryForm.search = ''
|
||||||
queryForm.isOutFw = ''
|
queryForm.isOutFw = ''
|
||||||
|
|||||||
@@ -49,9 +49,9 @@
|
|||||||
<el-select v-model="dataForm.confirmedMajor" filterable clearable placeholder="" size="small" style="width: 100%" :disabled="type != 1" @change="changeM(dataForm.confirmedMajor)">
|
<el-select v-model="dataForm.confirmedMajor" filterable clearable placeholder="" size="small" style="width: 100%" :disabled="type != 1" @change="changeM(dataForm.confirmedMajor)">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc"
|
:label="item.majorName"
|
||||||
:value="item.zydm">
|
:value="item.majorCode">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -63,9 +63,9 @@
|
|||||||
<el-select v-model="dataForm.newConfirmedMajor" filterable placeholder="" size="small" style="width: 100%" @change="changeCM(dataForm.newConfirmedMajor)">
|
<el-select v-model="dataForm.newConfirmedMajor" filterable placeholder="" size="small" style="width: 100%" @change="changeCM(dataForm.newConfirmedMajor)">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planMajorList"
|
v-for="item in planMajorList"
|
||||||
:key="item.zydm"
|
:key="item.majorCode"
|
||||||
:label="item.zymc+' || '+item.xyNum"
|
:label="item.majorName+' || '+item.xyNum"
|
||||||
:value="item.zydm">
|
:value="item.majorCode">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -112,7 +112,7 @@ import { ref, reactive, nextTick } from 'vue'
|
|||||||
import { ElNotification } from 'element-plus'
|
import { ElNotification } from 'element-plus'
|
||||||
import { useMessageBox } from '/@/hooks/message'
|
import { useMessageBox } from '/@/hooks/message'
|
||||||
import { getObj, changeMajor } from '@/api/recruit/recruitstudentsignup'
|
import { getObj, changeMajor } from '@/api/recruit/recruitstudentsignup'
|
||||||
import { list } from "@/api/recruit/recruitstudentplangroup"
|
import { getList } from "@/api/recruit/recruitstudentplangroup"
|
||||||
import { listByEdu } from "@/api/recruit/recruitstudentplan"
|
import { listByEdu } from "@/api/recruit/recruitstudentplan"
|
||||||
import { getDictByType } from "@/api/contract/contract"
|
import { getDictByType } from "@/api/contract/contract"
|
||||||
import { list as scoreList } from "@/api/recruit/recruitstudentplancorrectscoreconfig"
|
import { list as scoreList } from "@/api/recruit/recruitstudentplancorrectscoreconfig"
|
||||||
@@ -232,7 +232,7 @@ const dataRule = {
|
|||||||
|
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const initData = () => {
|
const initData = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -242,7 +242,7 @@ const changeCM = (id: string) => {
|
|||||||
if (id) {
|
if (id) {
|
||||||
let flag = false
|
let flag = false
|
||||||
planMajorList.value.forEach((e: any) => {
|
planMajorList.value.forEach((e: any) => {
|
||||||
if (dataForm.newConfirmedMajor == e.zydm && e.isZd == "1" && String(dataForm.degreeOfEducation) == "1") {
|
if (dataForm.newConfirmedMajor == e.majorCode && e.isZd == "1" && String(dataForm.degreeOfEducation) == "1") {
|
||||||
flag = true
|
flag = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -264,7 +264,7 @@ const changeM = (id: string) => {
|
|||||||
// 是初中生并且是中德班
|
// 是初中生并且是中德班
|
||||||
let flag = false
|
let flag = false
|
||||||
planMajorList.value.forEach((e: any) => {
|
planMajorList.value.forEach((e: any) => {
|
||||||
if (dataForm.confirmedMajor == e.zydm && e.isZd == "1" && String(dataForm.degreeOfEducation) == "1") {
|
if (dataForm.confirmedMajor == e.majorCode && e.isZd == "1" && String(dataForm.degreeOfEducation) == "1") {
|
||||||
flag = true
|
flag = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -315,7 +315,7 @@ const dataFormSubmit = async () => {
|
|||||||
|
|
||||||
// 初始化方法
|
// 初始化方法
|
||||||
const init = (id: string | null) => {
|
const init = (id: string | null) => {
|
||||||
dataForm.id = id || ""
|
dataForm.id = id || null
|
||||||
visible.value = true
|
visible.value = true
|
||||||
canSubmit.value = true
|
canSubmit.value = true
|
||||||
initData()
|
initData()
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ import { ref, reactive, onMounted } from 'vue'
|
|||||||
import { useTable } from '/@/hooks/table'
|
import { useTable } from '/@/hooks/table'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { getSchoolStatic } from '/@/api/recruit/recruitstudentsignup'
|
import { getSchoolStatic } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
@@ -72,7 +72,7 @@ const { tableStyle, downBlobFile } = useTable()
|
|||||||
// 初始化
|
// 初始化
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
planList.value = data.data || []
|
planList.value = data.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
|
|||||||
@@ -36,8 +36,8 @@
|
|||||||
{{ global.getLabelValueByPropes(deptList, scope.row.deptCode, { key: 'deptCode', value: 'deptName' }) }}
|
{{ global.getLabelValueByPropes(deptList, scope.row.deptCode, { key: 'deptCode', value: 'deptName' }) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="150" prop="zydm" header-align="center" align="center" label="专业代码" />
|
<el-table-column width="150" prop="majorCode" header-align="center" align="center" label="专业代码" />
|
||||||
<el-table-column prop="zymc" header-align="center" align="center" label="专业名称" />
|
<el-table-column prop="majorName" header-align="center" align="center" label="专业名称" />
|
||||||
<el-table-column width="80" prop="scoreLine" header-align="center" align="center" label="分数线" />
|
<el-table-column width="80" prop="scoreLine" header-align="center" align="center" label="分数线" />
|
||||||
<el-table-column width="80" prop="planNum" header-align="center" align="center" label="计划总数" />
|
<el-table-column width="80" prop="planNum" header-align="center" align="center" label="计划总数" />
|
||||||
<el-table-column width="80" prop="recruitmentNum" header-align="center" align="center" label="拟招人数" />
|
<el-table-column width="80" prop="recruitmentNum" header-align="center" align="center" label="拟招人数" />
|
||||||
@@ -57,8 +57,8 @@ import { ref, reactive, onMounted } from 'vue'
|
|||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { useDict } from '/@/hooks/dict'
|
import { useDict } from '/@/hooks/dict'
|
||||||
import { list } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { fetchListByStatic, listPlanByCondition as planMajor } from '/@/api/recruit/recruitstudentplan'
|
import { listPlanByCondition as planMajor } from '/@/api/recruit/recruitstudentplan'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import global from '/@/components/tools/commondict.vue'
|
import global from '/@/components/tools/commondict.vue'
|
||||||
@@ -88,15 +88,15 @@ const queryForm = reactive({
|
|||||||
// 表格状态
|
// 表格状态
|
||||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||||
queryForm: queryForm,
|
queryForm: queryForm,
|
||||||
pageList: async (params: any) => {
|
// pageList: async (params: any) => {
|
||||||
const response = await fetchListByStatic(params)
|
// const response = await fetchListByStatic(params)
|
||||||
return {
|
// return {
|
||||||
data: {
|
// data: {
|
||||||
records: response.data || [],
|
// records: response.data || [],
|
||||||
total: response.data?.length || 0
|
// total: response.data?.length || 0
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
createdIsNeed: false
|
createdIsNeed: false
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ const init = async () => {
|
|||||||
deptList.value.push({ deptCode: '合计', deptName: '合计' })
|
deptList.value.push({ deptCode: '合计', deptName: '合计' })
|
||||||
|
|
||||||
// 获取招生计划列表
|
// 获取招生计划列表
|
||||||
const planData = await list()
|
const planData = await getList()
|
||||||
planList.value = planData.data || []
|
planList.value = planData.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
@@ -127,7 +127,7 @@ const init = async () => {
|
|||||||
const eduRes = await getTypeValue('education_type')
|
const eduRes = await getTypeValue('education_type')
|
||||||
eduList.value = eduRes.data || []
|
eduList.value = eduRes.data || []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化失败', error)
|
message.error('初始化失败')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +1,20 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mod-config">
|
<div class="layout-padding">
|
||||||
<basic-container>
|
<div class="layout-padding-auto layout-padding-view">
|
||||||
<el-tabs v-model="activeName">
|
<el-tabs v-model="activeName">
|
||||||
<el-tab-pane label="申请列表" name="first">
|
<el-tab-pane label="申请列表" name="first">
|
||||||
<List></List>
|
<List />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="申请汇总" name="second">
|
<el-tab-pane label="申请汇总" name="second">
|
||||||
<DormAnalysis></DormAnalysis>
|
<DormAnalysis />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</basic-container>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts" name="studorm">
|
||||||
import { ref } from 'vue'
|
import { ref, defineAsyncComponent } from 'vue'
|
||||||
import { defineAsyncComponent } from 'vue'
|
|
||||||
|
|
||||||
const List = defineAsyncComponent(() => import('./list.vue'))
|
const List = defineAsyncComponent(() => import('./list.vue'))
|
||||||
const DormAnalysis = defineAsyncComponent(() => import('./dorm_analysis.vue'))
|
const DormAnalysis = defineAsyncComponent(() => import('./dorm_analysis.vue'))
|
||||||
@@ -24,8 +23,15 @@ const DormAnalysis = defineAsyncComponent(() => import('./dorm_analysis.vue'))
|
|||||||
const activeName = ref('first')
|
const activeName = ref('first')
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
.mod-config {
|
:deep(.el-tabs) {
|
||||||
padding: 20px;
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.el-tabs__content {
|
||||||
|
flex: 1;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ import { useUserInfo } from '/@/stores/userInfo'
|
|||||||
import { Session } from '/@/utils/storage'
|
import { Session } from '/@/utils/storage'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { getObj, updateInfo } from '@/api/recruit/recruitstudentsignup'
|
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"
|
import { queryAllTeacher } from "@/api/professional/teacherbase"
|
||||||
|
|
||||||
// 使用 Pinia store
|
// 使用 Pinia store
|
||||||
@@ -529,7 +529,7 @@ const upload6Success = (res: any, file: any) => {
|
|||||||
|
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const initData = () => {
|
const initData = () => {
|
||||||
list().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
planList.value = data.data
|
planList.value = data.data
|
||||||
})
|
})
|
||||||
// 联系人(教职工)
|
// 联系人(教职工)
|
||||||
@@ -563,7 +563,7 @@ const dataFormSubmit = (submitType: string) => {
|
|||||||
|
|
||||||
// 初始化方法
|
// 初始化方法
|
||||||
const init = (id: string | null) => {
|
const init = (id: string | null) => {
|
||||||
dataForm.id = id || ""
|
dataForm.id = id || null
|
||||||
visible.value = true
|
visible.value = true
|
||||||
canSubmit.value = true
|
canSubmit.value = true
|
||||||
initData()
|
initData()
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<div class="layout-padding">
|
<div class="layout-padding">
|
||||||
<div class="layout-padding-auto layout-padding-view">
|
<div class="layout-padding-auto layout-padding-view">
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<el-form :model="queryForm" inline class="mb-4" ref="searchFormRef">
|
<el-form :model="queryForm" inline ref="searchFormRef">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划">
|
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
{{ getTypeLabel(scope.row.type) }}
|
{{ getTypeLabel(scope.row.type) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="name" label="姓名[唯一号]" align="center" show-overflow-tooltip />
|
<el-table-column prop="name" label="姓名[唯一号]" width="140" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="majorChangeInfo" label="专业变更情况" align="center" show-overflow-tooltip />
|
<el-table-column prop="majorChangeInfo" label="专业变更情况" align="center" show-overflow-tooltip />
|
||||||
<el-table-column label="学费变更情况" align="center">
|
<el-table-column label="学费变更情况" align="center">
|
||||||
<el-table-column prop="dbName" label="费用类型" align="center" show-overflow-tooltip />
|
<el-table-column prop="dbName" label="费用类型" align="center" show-overflow-tooltip />
|
||||||
@@ -82,10 +82,9 @@
|
|||||||
<el-table-column prop="createBy" label="异动发起人" align="center" show-overflow-tooltip />
|
<el-table-column prop="createBy" label="异动发起人" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="createDate" label="异动时间" align="center" show-overflow-tooltip />
|
<el-table-column prop="createDate" label="异动时间" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="remarks" label="备注信息" align="center" show-overflow-tooltip />
|
<el-table-column prop="remarks" label="备注信息" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="isMajorChange" label="异动审核" align="center" show-overflow-tooltip>
|
<el-table-column prop="isMajorChange" label="异动审核" width="110" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.isMajorChange == '0'" style="color: green">{{ getMajor(scope.row.isMajorChange) }}</span>
|
<AuditState :state="scope.row.isMajorChange" :options="auditStateOptions" />
|
||||||
<span v-if="scope.row.isMajorChange != '0'" style="color: red">{{ getMajor(scope.row.isMajorChange) }}</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="100" align="center" fixed="right">
|
<el-table-column label="操作" width="100" align="center" fixed="right">
|
||||||
@@ -111,7 +110,7 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 异动审核弹窗 -->
|
<!-- 异动审核弹窗 -->
|
||||||
<el-dialog v-model="majorChangeVisible" title="异动审核">
|
<el-dialog v-model="majorChangeVisible" title="异动审核" width="600px">
|
||||||
<el-form :model="exarmForm" ref="exarmFormRef" label-width="80px" :rules="dataRule">
|
<el-form :model="exarmForm" ref="exarmFormRef" label-width="80px" :rules="dataRule">
|
||||||
<el-form-item label="审核结果" prop="isMajorChange">
|
<el-form-item label="审核结果" prop="isMajorChange">
|
||||||
<el-select v-model="exarmForm.isMajorChange" filterable clearable placeholder="请选择审核结果" style="width: 100%">
|
<el-select v-model="exarmForm.isMajorChange" filterable clearable placeholder="请选择审核结果" style="width: 100%">
|
||||||
@@ -150,9 +149,12 @@ import { ref, reactive, computed, onMounted, defineAsyncComponent } from 'vue'
|
|||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
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 { 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
|
// 使用 Pinia store
|
||||||
const userInfoStore = useUserInfo()
|
const userInfoStore = useUserInfo()
|
||||||
@@ -169,7 +171,6 @@ const permissions = computed(() => {
|
|||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
|
||||||
|
|
||||||
// 表格引用
|
// 表格引用
|
||||||
const tableRef = ref()
|
const tableRef = ref()
|
||||||
@@ -182,8 +183,31 @@ const majorChangeVisible = ref(false)
|
|||||||
// 数据
|
// 数据
|
||||||
const planList = ref<any[]>([])
|
const planList = ref<any[]>([])
|
||||||
const typeList = ref([{ label: '专业变更', value: '1' }, { label: '退学', value: '2' }])
|
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<StateOption[]>([
|
||||||
|
{ 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({
|
const queryForm = reactive({
|
||||||
@@ -214,17 +238,6 @@ const getTypeLabel = (type: string) => {
|
|||||||
return item ? item.label : ''
|
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<BasicTableProps>({
|
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||||
@@ -247,14 +260,14 @@ const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTa
|
|||||||
// 初始化
|
// 初始化
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
try {
|
try {
|
||||||
const data = await list()
|
const data = await getList()
|
||||||
planList.value = data.data || []
|
planList.value = data.data || []
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
}
|
}
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化失败', error)
|
message.error('初始化失败')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,9 +303,9 @@ const update = async () => {
|
|||||||
// 重置查询
|
// 重置查询
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
searchFormRef.value?.resetFields()
|
searchFormRef.value?.resetFields()
|
||||||
Object.keys(queryForm).forEach(key => {
|
queryForm.groupId = ''
|
||||||
queryForm[key] = ''
|
queryForm.search = ''
|
||||||
})
|
queryForm.isMajorChange = ''
|
||||||
if (planList.value.length > 0) {
|
if (planList.value.length > 0) {
|
||||||
queryForm.groupId = planList.value[0].id
|
queryForm.groupId = planList.value[0].id
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,173 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
v-model="visible"
|
||||||
|
:title="dataForm.id ? '编辑' : '新增'"
|
||||||
|
width="600px"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
destroy-on-close
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="dataFormRef"
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRules"
|
||||||
|
label-width="120px"
|
||||||
|
>
|
||||||
|
<el-form-item label="异动ID" prop="turnOverId">
|
||||||
|
<el-input v-model="dataForm.turnOverId" placeholder="请输入异动ID" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="退补类型" prop="type">
|
||||||
|
<el-select v-model="dataForm.type" placeholder="请选择退补类型" clearable>
|
||||||
|
<el-option label="学费" value="1" />
|
||||||
|
<el-option label="代办费" value="2" />
|
||||||
|
<el-option label="捐资费" value="3" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="原费用" prop="oldFee">
|
||||||
|
<el-input-number v-model="dataForm.oldFee" :min="0" :precision="2" placeholder="请输入原费用" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="变更后费用" prop="newFee">
|
||||||
|
<el-input-number v-model="dataForm.newFee" :min="0" :precision="2" placeholder="请输入变更后费用" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="变更费用" prop="fee">
|
||||||
|
<el-input-number v-model="dataForm.fee" :precision="2" placeholder="请输入变更费用" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="补还是退" prop="incOrDec">
|
||||||
|
<el-select v-model="dataForm.incOrDec" placeholder="请选择补还是退" clearable>
|
||||||
|
<el-option label="补" value="1" />
|
||||||
|
<el-option label="退" value="2" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否推送" prop="pushed">
|
||||||
|
<el-select v-model="dataForm.pushed" placeholder="请选择是否推送" clearable>
|
||||||
|
<el-option label="是" value="1" />
|
||||||
|
<el-option label="否" value="0" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="推送失败原因" prop="pushFailReason">
|
||||||
|
<el-input v-model="dataForm.pushFailReason" type="textarea" :rows="3" placeholder="请输入推送失败原因" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="dataFormSubmit" :loading="submitLoading">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
|
import { useMessage } from '/@/hooks/message'
|
||||||
|
import { addObj, putObj } from '/@/api/recruit/recruitstudentsignupturnovermoneychange'
|
||||||
|
|
||||||
|
// 消息提示 hooks
|
||||||
|
const message = useMessage()
|
||||||
|
|
||||||
|
// Emits
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: 'refresh'): void
|
||||||
|
}>()
|
||||||
|
|
||||||
|
// 表单引用
|
||||||
|
const dataFormRef = ref()
|
||||||
|
const submitLoading = ref(false)
|
||||||
|
|
||||||
|
// 弹窗显示状态
|
||||||
|
const visible = ref(false)
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const dataForm = reactive({
|
||||||
|
id: '',
|
||||||
|
turnOverId: '',
|
||||||
|
type: '',
|
||||||
|
oldFee: undefined as number | undefined,
|
||||||
|
newFee: undefined as number | undefined,
|
||||||
|
fee: undefined as number | undefined,
|
||||||
|
incOrDec: '',
|
||||||
|
pushed: '',
|
||||||
|
pushFailReason: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单验证规则
|
||||||
|
const dataRules = {}
|
||||||
|
|
||||||
|
// 初始化
|
||||||
|
const init = (row?: any) => {
|
||||||
|
visible.value = true
|
||||||
|
submitLoading.value = false
|
||||||
|
|
||||||
|
// 重置表单
|
||||||
|
dataForm.id = ''
|
||||||
|
dataForm.turnOverId = ''
|
||||||
|
dataForm.type = ''
|
||||||
|
dataForm.oldFee = undefined
|
||||||
|
dataForm.newFee = undefined
|
||||||
|
dataForm.fee = undefined
|
||||||
|
dataForm.incOrDec = ''
|
||||||
|
dataForm.pushed = ''
|
||||||
|
dataForm.pushFailReason = ''
|
||||||
|
|
||||||
|
// 如果是编辑,填充数据
|
||||||
|
if (row && row.id) {
|
||||||
|
dataForm.id = row.id || ''
|
||||||
|
dataForm.turnOverId = row.turnOverId || ''
|
||||||
|
dataForm.type = row.type || ''
|
||||||
|
dataForm.oldFee = row.oldFee
|
||||||
|
dataForm.newFee = row.newFee
|
||||||
|
dataForm.fee = row.fee
|
||||||
|
dataForm.incOrDec = row.incOrDec || ''
|
||||||
|
dataForm.pushed = row.pushed || ''
|
||||||
|
dataForm.pushFailReason = row.pushFailReason || ''
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清除验证
|
||||||
|
nextTick(() => {
|
||||||
|
dataFormRef.value?.clearValidate()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交表单
|
||||||
|
const dataFormSubmit = async () => {
|
||||||
|
if (!dataFormRef.value) return
|
||||||
|
|
||||||
|
await dataFormRef.value.validate(async (valid: boolean) => {
|
||||||
|
if (valid) {
|
||||||
|
submitLoading.value = true
|
||||||
|
try {
|
||||||
|
if (dataForm.id) {
|
||||||
|
await putObj(dataForm)
|
||||||
|
message.success('修改成功')
|
||||||
|
} else {
|
||||||
|
await addObj(dataForm)
|
||||||
|
message.success('添加成功')
|
||||||
|
}
|
||||||
|
visible.value = false
|
||||||
|
emit('refresh')
|
||||||
|
} catch (error: any) {
|
||||||
|
message.error(error.msg || '操作失败')
|
||||||
|
} finally {
|
||||||
|
submitLoading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 暴露方法给父组件
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.w-full {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-footer {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
@@ -19,15 +19,24 @@
|
|||||||
<div class="layout-padding">
|
<div class="layout-padding">
|
||||||
<div class="layout-padding-auto layout-padding-view">
|
<div class="layout-padding-auto layout-padding-view">
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<el-form :model="queryForm" inline class="mb-4">
|
<!-- <el-form :model="queryForm" inline>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button type="primary" plain icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="permissions.recruit_recruitstudentsignupturnovermoneychange_add">
|
</el-form> -->
|
||||||
<el-button type="primary" icon="FolderAdd" class="ml10" @click="handleAdd">新增</el-button>
|
|
||||||
</el-form-item>
|
<!-- 操作按钮 -->
|
||||||
</el-form>
|
<el-row>
|
||||||
|
<div class="mb15">
|
||||||
|
<el-button
|
||||||
|
v-if="permissions.recruit_recruitstudentsignupturnovermoneychange_add"
|
||||||
|
type="primary"
|
||||||
|
icon="FolderAdd"
|
||||||
|
@click="handleAdd">新 增
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<el-table
|
<el-table
|
||||||
@@ -82,73 +91,21 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 新增/编辑弹窗 -->
|
<!-- 新增/编辑弹窗 -->
|
||||||
<el-dialog
|
<FormDialog ref="formDialogRef" @refresh="getDataList"></FormDialog>
|
||||||
v-model="dialogVisible"
|
|
||||||
:title="form.id ? '编辑' : '新增'"
|
|
||||||
width="600px"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
destroy-on-close
|
|
||||||
>
|
|
||||||
<el-form
|
|
||||||
ref="formRef"
|
|
||||||
:model="form"
|
|
||||||
:rules="formRules"
|
|
||||||
label-width="200px"
|
|
||||||
>
|
|
||||||
<el-form-item label="异动ID" prop="turnOverId">
|
|
||||||
<el-input v-model="form.turnOverId" placeholder="请输入异动ID" clearable />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="退补类型" prop="type">
|
|
||||||
<el-select v-model="form.type" placeholder="请选择退补类型" clearable style="width: 100%">
|
|
||||||
<el-option label="学费" value="1" />
|
|
||||||
<el-option label="代办费" value="2" />
|
|
||||||
<el-option label="捐资费" value="3" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="原费用" prop="oldFee">
|
|
||||||
<el-input-number v-model="form.oldFee" :min="0" :precision="2" placeholder="请输入原费用" style="width: 100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="变更后费用" prop="newFee">
|
|
||||||
<el-input-number v-model="form.newFee" :min="0" :precision="2" placeholder="请输入变更后费用" style="width: 100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="变更费用" prop="fee">
|
|
||||||
<el-input-number v-model="form.fee" :precision="2" placeholder="请输入变更费用" style="width: 100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="补还是退" prop="incOrDec">
|
|
||||||
<el-select v-model="form.incOrDec" placeholder="请选择补还是退" clearable style="width: 100%">
|
|
||||||
<el-option label="补" value="1" />
|
|
||||||
<el-option label="退" value="2" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="是否推送" prop="pushed">
|
|
||||||
<el-select v-model="form.pushed" placeholder="请选择是否推送" clearable style="width: 100%">
|
|
||||||
<el-option label="是" value="1" />
|
|
||||||
<el-option label="否" value="0" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="推送失败原因" prop="pushFailReason">
|
|
||||||
<el-input v-model="form.pushFailReason" type="textarea" :rows="3" placeholder="请输入推送失败原因" clearable />
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
|
|
||||||
<template #footer>
|
|
||||||
<div class="dialog-footer">
|
|
||||||
<el-button @click="dialogVisible = false">取消</el-button>
|
|
||||||
<el-button type="primary" @click="handleSubmit" :loading="submitLoading">确定</el-button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitstudentsignupturnovermoneychange">
|
<script setup lang="ts" name="recruitstudentsignupturnovermoneychange">
|
||||||
import { ref, reactive, computed, onMounted } from 'vue'
|
import { ref, reactive, computed, onMounted, defineAsyncComponent, nextTick } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
import { useUserInfo } from '/@/stores/userInfo'
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { addObj, delObj, fetchList, putObj } from '/@/api/recruit/recruitstudentsignupturnovermoneychange'
|
import { delObj, fetchList } from '/@/api/recruit/recruitstudentsignupturnovermoneychange'
|
||||||
|
|
||||||
|
// 定义组件
|
||||||
|
const FormDialog = defineAsyncComponent(() => import('./form.vue'))
|
||||||
|
|
||||||
// 使用 Pinia store
|
// 使用 Pinia store
|
||||||
const userInfoStore = useUserInfo()
|
const userInfoStore = useUserInfo()
|
||||||
@@ -169,30 +126,10 @@ const messageBox = useMessageBox()
|
|||||||
|
|
||||||
// 表格引用
|
// 表格引用
|
||||||
const tableRef = ref()
|
const tableRef = ref()
|
||||||
const formRef = ref()
|
const formDialogRef = ref()
|
||||||
|
|
||||||
// 弹窗状态
|
|
||||||
const dialogVisible = ref(false)
|
|
||||||
const submitLoading = ref(false)
|
|
||||||
|
|
||||||
// 查询表单
|
// 查询表单
|
||||||
const queryForm = reactive({})
|
const queryForm = reactive<Record<string, any>>({})
|
||||||
|
|
||||||
// 表单数据
|
|
||||||
const form = reactive({
|
|
||||||
id: '',
|
|
||||||
turnOverId: '',
|
|
||||||
type: '',
|
|
||||||
oldFee: undefined,
|
|
||||||
newFee: undefined,
|
|
||||||
fee: undefined,
|
|
||||||
incOrDec: '',
|
|
||||||
pushed: '',
|
|
||||||
pushFailReason: ''
|
|
||||||
})
|
|
||||||
|
|
||||||
// 表单验证规则
|
|
||||||
const formRules = {}
|
|
||||||
|
|
||||||
// 表格状态
|
// 表格状态
|
||||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||||
@@ -221,24 +158,16 @@ const resetQuery = () => {
|
|||||||
|
|
||||||
// 新增
|
// 新增
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
Object.keys(form).forEach(key => {
|
nextTick(() => {
|
||||||
if (key === 'id') {
|
formDialogRef.value?.init()
|
||||||
form[key] = ''
|
|
||||||
} else if (typeof form[key] === 'number') {
|
|
||||||
form[key] = undefined
|
|
||||||
} else {
|
|
||||||
form[key] = ''
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
dialogVisible.value = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
const handleEdit = async (row: any) => {
|
const handleEdit = (row: any) => {
|
||||||
Object.keys(form).forEach(key => {
|
nextTick(() => {
|
||||||
form[key] = row[key]
|
formDialogRef.value?.init(row)
|
||||||
})
|
})
|
||||||
dialogVisible.value = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
@@ -253,32 +182,6 @@ const handleDel = async (row: any) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提交表单
|
|
||||||
const handleSubmit = async () => {
|
|
||||||
if (!formRef.value) return
|
|
||||||
|
|
||||||
await formRef.value.validate(async (valid: boolean) => {
|
|
||||||
if (valid) {
|
|
||||||
submitLoading.value = true
|
|
||||||
try {
|
|
||||||
if (form.id) {
|
|
||||||
await putObj(form)
|
|
||||||
message.success('修改成功')
|
|
||||||
} else {
|
|
||||||
await addObj(form)
|
|
||||||
message.success('添加成功')
|
|
||||||
}
|
|
||||||
dialogVisible.value = false
|
|
||||||
getDataList()
|
|
||||||
} catch (error: any) {
|
|
||||||
message.error(error.msg || '操作失败')
|
|
||||||
} finally {
|
|
||||||
submitLoading.value = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getDataList()
|
getDataList()
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user