Commit c27602e4 by 朱莹

Merge remote-tracking branch 'origin/master'

parents 2185efef aad455dc
{
"name": "smart_campus",
"lockfileVersion": 2,
"requires": true,
"packages": {}
"lockfileVersion": 1
}
......@@ -42,6 +42,8 @@
"axios": "0.24.0",
"clipboard": "2.0.8",
"core-js": "3.25.2",
"dingtalk-h5-remote-debug": "^0.1.3",
"dingtalk-jsapi": "^3.0.28",
"echarts": "^4.9.0",
"element-ui": "2.15.10",
"exceljs": "^4.3.0",
......
// 社团活动记录
import request from '@/utils/request';
// 查询社团活动记录列表
export function getClubInfo(data) {
return request({
url: '/record/list',
method: 'get',
params: data
})
}
// 查询社团活动记录列表
export function listClubInfo(id) {
return request({
url: '/record/'+ id,
method: 'get',
})
}
// 修改社团活动记录
export function editClubInfo(data) {
return request({
url: '/record',
method: 'put',
data: data
})
}
// 新增社团活动记录
export function addClubInfo(data) {
return request({
url: '/record',
method: 'post',
data: data
})
}
// 删除社团活动记录
export function delClubInfo(id) {
return request({
url: '/record/'+ id,
method: 'delete'
})
}
// 获取全校教师(不分页)
export function getTeachers(data) {
return request({
url: '/school/teacher/getTeachers',
method: 'get',
params: data
})
}
\ No newline at end of file
// 社团成员管理
import request from '@/utils/request';
// 查询社团成员管理
export function getMemberInfo(query) {
return request({
url: '/member/list',
method: 'get',
params: query
})
}
// 查询社团成员管理信息列表
export function listMemberInfo(id) {
return request({
url: '/member/'+ id,
method: 'get',
})
}
// 修改社团成员管理
export function editMemberInfo(data) {
return request({
url: '/member',
method: 'put',
data: data
})
}
// 新增社团成员管理
export function addMemberInfo(data) {
return request({
url: '/member',
method: 'post',
data: data
})
}
// 删除社团成员管理
export function delMemberInfo(id) {
return request({
url: '/member/'+ id,
method: 'delete'
})
}
// 获取全校教师(不分页)
export function getTeachers(data) {
return request({
url: '/school/teacher/getTeachers',
method: 'get',
params: data
})
}
\ No newline at end of file
// 社团报名审核列表
import request from '@/utils/request';
// 查询社团报名审核列表
export function getsigninInfo(query) {
return request({
url: '/signin/list',
method: 'get',
params: query
})
}
// 获取社团报名审核详细信息
export function listsigninInfo(id) {
return request({
url: '/signin/'+ id,
method: 'get',
})
}
// 同意社团申请审批
export function allowsignin(data) {
return request({
url: '/signin/approve',
method: 'post',
data: data
})
}
......@@ -20,7 +20,11 @@
<el-table stripe :data="tableData" border style="width: 98%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="borrowBy" label="申请人" />
<el-table-column align="center" prop="borrowState" label="借用状态" />
<el-table-column align="center" prop="borrowState" label="借用状态">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.borrow_state, row.borrowState) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="schoolTeacherBorrowDetailList" label="借用明细">
<template slot-scope="{ row }">
<div v-for="detail in row.schoolTeacherBorrowDetailList" :key="detail.id">
......@@ -34,10 +38,14 @@
<el-table-column align="center" prop="remark" label="备注" />
<el-table-column align="center" fixed="right" label="操作">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">详情</el-button>
<el-button @click="processItem(scope.row)" type="text" size="small">借用</el-button>
<el-button @click="returnItem(scope.row)" type="text" size="small">归还</el-button>
<el-button v-if="scope.row.borrowState === '0' || scope.row.borrowState === '1'"
@click="handleLook(scope.row)" type="text" size="small">详情</el-button>
<el-button v-if="scope.row.borrowState === '0'" @click="returnItem(scope.row)" type="text"
size="small">归还</el-button>
<el-button v-if="scope.row.borrowState === '2'" @click="processItem(scope.row)" type="text"
size="small">借用</el-button>
</template>
</el-table-column>
</el-table>
......@@ -203,6 +211,7 @@ import {
} from '@/api/smartSchool/InstrumentDrugAdministration/instrumentBorrowManagement/warehouseEquipmentLoan'
export default {
name: 'warehouseEquipmentLoan',
dicts: ['borrow_state'],
data() {
return {
queryForm: {
......
......@@ -21,8 +21,6 @@
</el-col>
</el-row>
<!-- 表格 -->
<el-table :data="tableData" v-loading="loading" row-key="id" :default-expand-all="isExpandAll"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
......@@ -120,8 +118,8 @@ export default {
queryForm: {
pageNum: 1,
pageSize: 10,
instrumentTypeName: "",
id: "",
instrumentTypeName: null,
id: null,
},
selectedRows: [], // 用于存储选择的行数据
//表格数据
......@@ -132,8 +130,8 @@ export default {
title: '',
// 弹窗
form: {
instrumentTypeName: "",
parentId: "",
instrumentTypeName: null,
parentId: null,
orderNum: "",
isConsumables: "",
remark: "",
......@@ -178,6 +176,7 @@ export default {
this.loading = false;
})
},
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
......@@ -193,8 +192,8 @@ export default {
this.queryForm = {
pageNum: 1,
pageSize: 10,
instrumentTypeName: "",
id: "",
instrumentTypeName: null,
id: null,
},
this.getList();
},
......@@ -203,8 +202,8 @@ export default {
handleOption(type, item) {
this.form = {
id: '',
instrumentTypeName: "",
parentId: "",
instrumentTypeName: null,
parentId: null,
orderNum: "",
isConsumables: "",
remark: "",
......@@ -266,7 +265,7 @@ export default {
// 这里需要重置对话框表单
this.form = {
instrumentTypeName: "",
parentId: "",
parentId: null,
orderNum: "",
isConsumables: "",
remark: "",
......
......@@ -59,7 +59,7 @@ export default {
pageNum: 1,
pageSize: 10,
instrumentName: "",
instrumentTypeId: "",
instrumentTypeId: null,
daterange: "",
startTime: "",
endTime: "",
......@@ -99,6 +99,8 @@ export default {
},
/** 转换分类编码数据结构 */
normalizer(node) {
console.log('queryForm.instrumentTypeId', this.queryForm.instrumentTypeId);
console.log('node', node);
if (node.children && !node.children.length) {
delete node.children;
}
......@@ -114,7 +116,7 @@ export default {
pageNum: 1,
pageSize: 10,
instrumentName: "",
instrumentTypeId: "",
instrumentTypeId: null,
startTime: "",
endTime: "",
},
......
......@@ -177,7 +177,7 @@ export default {
pageNum: 1,
pageSize: 10,
instrumentName: "",
instrumentTypeId: "",
instrumentTypeId: null,
},
//表格数据
tableData: [
......@@ -199,7 +199,7 @@ export default {
form: {
instrumentName: "",
instrumentTypeId: "",
instrumentTypeName: "",
instrumentTypeName: null,
instrumentModel: "",
instrumentNum: "",
remark: "",
......@@ -289,7 +289,7 @@ export default {
pageNum: 1,
pageSize: 10,
instrumentName: "",
instrumentTypeId: "",
instrumentTypeId: null,
},
this.getList();
},
......@@ -426,7 +426,7 @@ export default {
this.form = {
id: null,
instrumentName: null,
instrumentTypeId: null,
instrumentTypeId: '',
instrumentTypeName: null,
instrumentModel: null,
instrumentNum: null,
......
package yangtz.cs.liu.dingding.controller;
import cn.hutool.http.HttpUtil;
//import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import yangtz.cs.liu.dingding.utils.AccessTokenUtils;
import yangtz.cs.liu.dingding.vo.DingJiaXiaoVo;
import java.util.ArrayList;
import java.util.List;
/**
* 家校通讯录
*/
@RestController
@RequestMapping("/dd/djtx")
public class DingJiaXiaoController {
@Autowired
private AccessTokenUtils accessTokenUtils;
final String listUrl ="https://oapi.dingtalk.com/topapi/edu/dept/list?access_token=";
final String userUrl ="https://oapi.dingtalk.com/topapi/edu/user/list?access_token=";
public List<String> userTypes = new ArrayList<String>(){
{
this.add("teacher");
this.add("guardian");
this.add("student");
}
};
@GetMapping("/getList")
private List<DingJiaXiaoVo> getList(){
//年级
List<DingJiaXiaoVo> njInfoList = new ArrayList<>();
// 0 获取校园信息
String token = accessTokenUtils.getToken();
JSONObject jsonObjectParme = new JSONObject();
jsonObjectParme.put("page_no",1);
jsonObjectParme.put("page_size",30);
String post = HttpUtil.post(listUrl+token, jsonObjectParme);
JSONObject jsonObject = JSONObject.parseObject(post);
if ((Integer) jsonObject.get("errcode") != 0){
throw new RuntimeException("获取校园列表失败");
}
Integer deptId = null;
JSONObject result = (JSONObject)jsonObject.get("result");
JSONArray detailsArray = JSONArray.of(result.get("details"));
for (int i = 0 ; i < detailsArray.size(); i ++){
JSONObject da = detailsArray.getJSONArray(i).getJSONObject(i);
deptId = (Integer) da.get("dept_id");
}
//1 获取校园学历类型
JSONObject xyParme = new JSONObject();
xyParme.put("page_no",1);
xyParme.put("page_size",30);
xyParme.put("super_id",deptId);
String xyPost = HttpUtil.post(listUrl+token, xyParme);
JSONObject xyObject = JSONObject.parseObject(xyPost);
if ((Integer) xyObject.get("errcode") != 0){
throw new RuntimeException("获取年纪列表失败");
}
JSONObject xyResult = (JSONObject)xyObject.get("result");
JSONArray xyDetailsArray = JSONArray.of(xyResult.get("details"));
for (int i = 0 ; i < xyDetailsArray.size(); i ++){
JSONObject da = xyDetailsArray.getJSONArray(i).getJSONObject(i);
deptId = (Integer) da.get("dept_id");
}
//2.获取校园年级
JSONObject njParme = new JSONObject();
njParme.put("page_no",1);
njParme.put("page_size",30);
njParme.put("super_id",deptId);
String njPost = HttpUtil.post(listUrl+token, njParme);
JSONObject njObject = JSONObject.parseObject(njPost);
if ((Integer) njObject.get("errcode") != 0){
throw new RuntimeException("获取年纪列表失败");
}
JSONObject njResult = (JSONObject)njObject.get("result");
JSONArray njDetailsArray = JSONArray.of(njResult.get("details"));
for (int i = 0 ; i < njDetailsArray.size(); i ++){
for (int q = 0 ; q < njDetailsArray.getJSONArray(i).size(); q++){
JSONObject da = njDetailsArray.getJSONArray(i).getJSONObject(q);
Integer supId = (Integer) da.get("dept_id");
DingJiaXiaoVo dingJiaXiaoVo = new DingJiaXiaoVo();
dingJiaXiaoVo.setGradeId((Integer) da.get("dept_id"));
dingJiaXiaoVo.setGradeName((String) da.get("name"));
//3.查询年纪下的班级
JSONObject bjParme = new JSONObject();
bjParme.put("page_no",1);
bjParme.put("page_size",30);
bjParme.put("super_id",supId);
String bjPost = HttpUtil.post(listUrl+token, bjParme);
JSONObject bjObject = JSONObject.parseObject(bjPost);
if ((Integer) bjObject.get("errcode") != 0){
throw new RuntimeException("获取班级列表失败");
}
JSONObject bjResult = (JSONObject)bjObject.get("result");
JSONArray bjDetailsArray = JSONArray.of(bjResult.get("details"));
//班级
List<DingJiaXiaoVo.ClassInfo> classInfoList = new ArrayList<>();
//查询班级班级
for (int j = 0 ; j < bjDetailsArray.size(); j ++) {
for (int n = 0; n < bjDetailsArray.getJSONArray(j).size(); n++) {
JSONObject classDate = bjDetailsArray.getJSONArray(j).getJSONObject(n);
Integer classId = (Integer) classDate.get("dept_id");
//创建班级
DingJiaXiaoVo.ClassInfo classInfo = new DingJiaXiaoVo().new ClassInfo();
classInfo.setClassId((Integer) classDate.get("dept_id"));
classInfo.setClassName((String) classDate.get("name"));
/**
* 学生信息
*/
List<DingJiaXiaoVo.StudentUserInfo> studentUserInfos = new ArrayList<>();
/**
* 老师信息
*/
List<DingJiaXiaoVo.StudentUserInfo> teacherUserInfos = new ArrayList<>();
/**
* 监护人信息
*/
List<DingJiaXiaoVo.StudentUserInfo> guardianUserInfos = new ArrayList<>();
//分页查询,每次查询数据最大只有30条,分5次查询 一个班判断最大150人
for (String type : userTypes) {
if (type.equals("teacher")) {
//老师
teacherUserInfos = this.addUserList(token, type, classId);
} else if (type.equals("guardian")) {
//监护人
guardianUserInfos = this.addUserList(token, type, classId);
} else if (type.equals("student")) {
//学生
studentUserInfos = this.addUserList(token, type, classId);
}
}
//将人员存入班级中
classInfo.setStudentUserInfos(studentUserInfos);
classInfo.setTeacherUserInfos(teacherUserInfos);
classInfo.setGuardianUserInfos(guardianUserInfos);
classInfoList.add(classInfo);
}
}
dingJiaXiaoVo.setClassInfoList(classInfoList);
njInfoList.add(dingJiaXiaoVo);
}
}
return njInfoList;
}
private List<DingJiaXiaoVo.StudentUserInfo> addUserList(String token,String type,Integer classId){
List<DingJiaXiaoVo.StudentUserInfo> userList = new ArrayList<>();
//分页查询,每次查询数据最大只有30条,分5次查询 一个班判断最大150人
for (int k = 1;k <= 5; k++ ){
//查询班级下边的人员
JSONObject ryParme = new JSONObject();
ryParme.put("page_no",k);
ryParme.put("page_size",30);
ryParme.put("role",type);
ryParme.put("class_id",classId);
String ryPost = HttpUtil.post(userUrl+token, ryParme);
JSONObject ryObject = JSONObject.parseObject(ryPost);
if ((Integer) ryObject.get("errcode") != 0){
throw new RuntimeException("获取班级人员列表失败");
}
JSONObject ryResult = (JSONObject)ryObject.get("result");
JSONArray xyDetailsArray = JSONArray.of(ryResult.get("details"));
for (int o = 0; o < xyDetailsArray.size(); o++){
for (int i = 0 ; i < xyDetailsArray.getJSONArray(o).size(); i++){
JSONObject userInfo = xyDetailsArray.getJSONArray(o).getJSONObject(i);
DingJiaXiaoVo.StudentUserInfo studentUserInfo = new DingJiaXiaoVo().new StudentUserInfo();
studentUserInfo.setUserId(userInfo.get("userid").toString());
studentUserInfo.setClassId((Integer) userInfo.get("class_id"));
studentUserInfo.setRole(userInfo.get("role")==null?null:userInfo.get("role").toString());
studentUserInfo.setUnionid(userInfo.get("unionid")==null?null:userInfo.get("unionid").toString());
studentUserInfo.setName(userInfo.get("name").toString());
studentUserInfo.setIsAdviser(userInfo.getJSONObject("feature").get("is_adviser") ==null ? null:userInfo.getJSONObject("feature").get("is_adviser").toString());
studentUserInfo.setStudentNo(userInfo.get("student_no")==null?null:userInfo.get("student_no").toString());
userList.add(studentUserInfo);
}
}
}
return userList;
}
}
package yangtz.cs.liu.dingding.vo;
import lombok.Data;
import java.util.List;
@Data
public class DingJiaXiaoVo {
/**
* 年纪id
*/
Integer gradeId;
/**
* 年纪名称
*/
String gradeName;
/**
* 班级信息
*/
List<ClassInfo> classInfoList;
/**
* 班级信息
*/
@Data
public class ClassInfo{
/**
* 班级id
*/
Integer classId;
/**
* 年纪名称
*/
String className;
/**
* 学生信息
*/
List<StudentUserInfo> studentUserInfos;
/**
* 老师信息
*/
List<StudentUserInfo> teacherUserInfos;
/**
* 监护人信息
*/
List<StudentUserInfo> guardianUserInfos;
}
/**
* 学生信息
*/
@Data
public class StudentUserInfo{
/**
* 班级id
*/
Integer classId;
/**
* 人员的userId。
*/
String userId;
/**
* 人员姓名。
*/
String name;
/**
* 人员的unionId,无手机号的学生为""。
*/
String unionid;
/**
* 家校人员角色。
* teacher:老师
* guardian:监护人
* student:学生
*/
String role;
/**
* 只在老师角色下意义。
* 1:班主任
* 0:非班主任
*/
String isAdviser;
/**
* 学号,只有在学生角色下才有意义,并且需确认各个班级的设置,如果没有设置,则不会返回此字段。
*/
String studentNo;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment