Commit 801bdf89 by 朱莹

Merge remote-tracking branch 'origin/master'

parents 31923c82 604e1338
No preview for this file type
...@@ -85,7 +85,7 @@ spring: ...@@ -85,7 +85,7 @@ spring:
devtools: devtools:
restart: restart:
# 热部署开关 # 热部署开关
enabled: true enabled: false
# redis 配置 # redis 配置
redis: redis:
# 地址 # 地址
...@@ -201,17 +201,36 @@ wx: ...@@ -201,17 +201,36 @@ wx:
# redirect-uri: y32025c600.goho.co:10087 # redirect-uri: y32025c600.goho.co:10087
dd: dd:
# 本地配置
appKey: dingclpf8qoxvinhksyh appKey: dingclpf8qoxvinhksyh
appSecret: CrlRmzkaFMH00cbipSf3g0nc_xpFGCitTAPA_cphUXg1e-DSX1hFcyVpqgos29r9 appSecret: CrlRmzkaFMH00cbipSf3g0nc_xpFGCitTAPA_cphUXg1e-DSX1hFcyVpqgos29r9
# 钉钉接口 获取钉钉access_token 的uri # 钉钉接口 获取钉钉access_token 的uri
access-token-uri: https://oapi.dingtalk.com/gettoken?appkey=${dd.appKey}&appsecret=${dd.appSecret} access-token-uri: https://oapi.dingtalk.com/gettoken?appkey=${dd.appKey}&appsecret=${dd.appSecret}
#企业id #企业id
corpId: dingaa3937ff8b7dd267f2c783f7214b6d69 corpId: dingaa3937ff8b7dd267f2c783f7214b6d69
#应用id #应用id
agentId: 2730043705 agentId: 2730043705
# 测试服务器配置
# appKey: ding5cbf7qhd55zun5jg
# appSecret: -er7LnIslFEJ2n8cJY9MdTCKiRDjoCZwQuA2XvU2Hr7fHw-cp_B2ZAhynVifqlL8
# # 钉钉接口 获取钉钉access_token 的uri
# access-token-uri: https://oapi.dingtalk.com/gettoken?appkey=${dd.appKey}&appsecret=${dd.appSecret}
# #企业id
# corpId: dingaa3937ff8b7dd267f2c783f7214b6d69
# #应用id
# agentId: 2760774127
# 正式配置
# appKey: dingggqchzyvxm9e6e7v
# appSecret: ts5hRNjO_o3QNMfEu4pM2dn71YJzw7yalnuh5LztHuCGWqUNjM2lMB1eNCSOlxNN
# # 钉钉接口 获取钉钉access_token 的uri
# access-token-uri: https://oapi.dingtalk.com/gettoken?appkey=${dd.appKey}&appsecret=${dd.appSecret}
# #企业id
# corpId: dingccea40788226c988f2c783f7214b6d69
# #应用id
# agentId: 2765311628
#重定向地址 #重定向地址
redirect-uri: www.dyzmxx.com redirect-uri: www.dyzmxx.com
......
...@@ -12,7 +12,7 @@ import com.ruoyi.common.core.domain.BaseEntity; ...@@ -12,7 +12,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
/** /**
* 部门表 sys_dept * 部门表 sys_dept
* *
* @author ruoyi * @author ruoyi
*/ */
public class SysDept extends BaseEntity public class SysDept extends BaseEntity
...@@ -32,7 +32,7 @@ public class SysDept extends BaseEntity ...@@ -32,7 +32,7 @@ public class SysDept extends BaseEntity
private String deptName; private String deptName;
/** 显示顺序 */ /** 显示顺序 */
private Integer orderNum; private Long orderNum;
/** 负责人 */ /** 负责人 */
private String leader; private String leader;
...@@ -51,7 +51,7 @@ public class SysDept extends BaseEntity ...@@ -51,7 +51,7 @@ public class SysDept extends BaseEntity
/** 父部门名称 */ /** 父部门名称 */
private String parentName; private String parentName;
/** 子部门 */ /** 子部门 */
private List<SysDept> children = new ArrayList<SysDept>(); private List<SysDept> children = new ArrayList<SysDept>();
...@@ -98,12 +98,12 @@ public class SysDept extends BaseEntity ...@@ -98,12 +98,12 @@ public class SysDept extends BaseEntity
} }
@NotNull(message = "显示顺序不能为空") @NotNull(message = "显示顺序不能为空")
public Integer getOrderNum() public Long getOrderNum()
{ {
return orderNum; return orderNum;
} }
public void setOrderNum(Integer orderNum) public void setOrderNum(Long orderNum)
{ {
this.orderNum = orderNum; this.orderNum = orderNum;
} }
......
...@@ -112,10 +112,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter ...@@ -112,10 +112,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.antMatchers( "/ws/webSocket/**").anonymous() .antMatchers( "/ws/webSocket/**").anonymous()
.antMatchers( "/webSocket/**").anonymous() .antMatchers( "/webSocket/**").anonymous()
.antMatchers("/login", "/register", "/captchaImage").anonymous() .antMatchers("/login", "/register", "/captchaImage").anonymous()
.antMatchers("/wx/user/login").permitAll() .antMatchers("/wx/user/login","/wx/user/getRoleType/**").permitAll()
.antMatchers("/dd/user/login").permitAll() .antMatchers("/dd/user/login").permitAll()
.antMatchers( "/common/**").permitAll() .antMatchers( "/common/**").permitAll()
.antMatchers( "/dd/school/**").permitAll() .antMatchers( "/dd/school/**").permitAll()
//打印下载接口放行
.antMatchers("/school/student/queryOne/**","/school/studentStatus/proofStatus/**").permitAll()
//网页注册登录接口放行 //网页注册登录接口放行
.antMatchers( "/web/artStudent/register","/web/artStudent/login").permitAll() .antMatchers( "/web/artStudent/register","/web/artStudent/login").permitAll()
// 静态资源,可匿名访问 // 静态资源,可匿名访问
...@@ -132,6 +134,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter ...@@ -132,6 +134,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.antMatchers("/wx/user/getToken").permitAll() .antMatchers("/wx/user/getToken").permitAll()
//钉钉免登录接口 //钉钉免登录接口
.antMatchers("/dd/App/user/**").permitAll() .antMatchers("/dd/App/user/**").permitAll()
.antMatchers("/dd/djtx/**").permitAll()
//开发一个接口字典 //开发一个接口字典
.antMatchers("/system/dict/data/type/**").permitAll() .antMatchers("/system/dict/data/type/**").permitAll()
// .antMatchers("/**").permitAll() // .antMatchers("/**").permitAll()
......
...@@ -27,6 +27,7 @@ public interface ISysRoleService ...@@ -27,6 +27,7 @@ public interface ISysRoleService
* @return 角色列表 * @return 角色列表
*/ */
public List<SysRole> selectRolesByUserId(Long userId); public List<SysRole> selectRolesByUserId(Long userId);
public List<SysRole> selectRolesByUserIdDdApp(Long userId);
/** /**
* 根据用户ID查询角色权限 * 根据用户ID查询角色权限
......
...@@ -83,6 +83,25 @@ public class SysRoleServiceImpl implements ISysRoleService ...@@ -83,6 +83,25 @@ public class SysRoleServiceImpl implements ISysRoleService
return roles; return roles;
} }
public List<SysRole> selectRolesByUserIdDdApp(Long userId)
{
List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId);
List<SysRole> roles = roleMapper.selectRoleList(new SysRole());
for (SysRole role : roles)
{
for (SysRole userRole : userRoles)
{
if (role.getRoleId().longValue() == userRole.getRoleId().longValue())
{
role.setFlag(true);
break;
}
}
}
return roles;
}
/** /**
* 根据用户ID查询权限 * 根据用户ID查询权限
* *
......
...@@ -32,6 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -32,6 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="employeeType" column="employee_type" /> <result property="employeeType" column="employee_type" />
<result property="studentId" column="student_id" /> <result property="studentId" column="student_id" />
<result property="sign" column="sign" /> <result property="sign" column="sign" />
<result property="ddUserId" column="dd_user_id" />
<result property="unionId" column="union_id" />
<association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult" /> <association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" /> <collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap> </resultMap>
...@@ -56,7 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -56,7 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectUserVo"> <sql id="selectUserVo">
select u.user_id, u.dept_id, u.user_name, u.login_name,u.user_type, u.user_login_type,u.email, u.avatar, u.phonenumber, u.password, u.salt,u.sex, u.status, u.del_flag, u.login_ip, u.login_date,u.pwd_update_date, u.create_by, u.create_time, u.remark,u.sign,u.employee_type,u.student_id, select u.user_id, u.dept_id, u.user_name, u.login_name,u.user_type,u.union_id,u.dd_user_id, u.user_login_type,u.email, u.avatar, u.phonenumber, u.password, u.salt,u.sex, u.status, u.del_flag, u.login_ip, u.login_date,u.pwd_update_date, u.create_by, u.create_time, u.remark,u.sign,u.employee_type,u.student_id,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u from sys_user u
...@@ -66,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -66,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql> </sql>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult"> <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.login_name, u.user_name,u.user_type, u.user_login_type, u.email, u.avatar, u.phonenumber, u.sex,u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u select u.user_id, u.dept_id, u.login_name, u.user_name,u.union_id,u.dd_user_id,u.user_type, u.user_login_type, u.email, u.avatar, u.phonenumber, u.sex,u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0' and user_login_type = '0' where u.del_flag = '0' and user_login_type = '0'
<if test="userId != null and userId != 0"> <if test="userId != null and userId != 0">
...@@ -96,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -96,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectUserListTypeLogin" parameterType="SysUser" resultMap="SysUserResult"> <select id="selectUserListTypeLogin" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.login_name, u.user_name,u.user_type, u.user_login_type, u.email, u.avatar, u.phonenumber, u.sex,u.salt,u.student_id, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u select u.user_id, u.dept_id, u.login_name, u.union_id,u.dd_user_id,u.user_name,u.user_type, u.user_login_type, u.email, u.avatar, u.phonenumber, u.sex,u.salt,u.student_id, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0' where u.del_flag = '0'
<if test="userLoginType != null and userLoginType != 0"> <if test="userLoginType != null and userLoginType != 0">
...@@ -143,7 +145,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -143,7 +145,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult"> <select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.login_name,u.user_type, u.email, u.phonenumber, u.status, u.create_time select distinct u.user_id, u.dept_id, u.user_name,u.union_id,u.dd_user_id, u.login_name,u.user_type, u.email, u.phonenumber, u.status, u.create_time
from sys_user u from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id left join sys_user_role ur on u.user_id = ur.user_id
...@@ -203,6 +205,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -203,6 +205,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="sign != null and sign != ''">sign,</if> <if test="sign != null and sign != ''">sign,</if>
<if test="studentId != null and studentId != 0">student_id,</if> <if test="studentId != null and studentId != 0">student_id,</if>
<if test="employeeType != null and employeeType != ''">employee_type,</if> <if test="employeeType != null and employeeType != ''">employee_type,</if>
<if test="unionId != null and employeeType != ''">union_id,</if>
<if test="ddUserId != null and employeeType != ''">dd_user_id,</if>
create_time create_time
)values( )values(
<if test="userId != null and userId != ''">#{userId},</if> <if test="userId != null and userId != ''">#{userId},</if>
...@@ -224,6 +228,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -224,6 +228,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="sign != null and sign != ''">#{sign},</if> <if test="sign != null and sign != ''">#{sign},</if>
<if test="studentId != null and studentId != ''">#{studentId},</if> <if test="studentId != null and studentId != ''">#{studentId},</if>
<if test="employeeType != null and employeeType != ''">#{employeeType},</if> <if test="employeeType != null and employeeType != ''">#{employeeType},</if>
<if test="employeeType != null and employeeType != ''">#{employeeType},</if>
<if test="unionId != null and unionId != ''">#{unionId},</if>
<if test="ddUserId != null and ddUserId != ''">#{ddUserId},</if>
sysdate() sysdate()
) )
</insert> </insert>
......
...@@ -7,7 +7,7 @@ git clone https://gitee.com/y_project/RuoYi-Vue ...@@ -7,7 +7,7 @@ git clone https://gitee.com/y_project/RuoYi-Vue
# 进入项目目录 # 进入项目目录
cd ruoyi-ui cd ruoyi-ui
__
# 安装依赖 # 安装依赖
npm install npm install
...@@ -33,4 +33,7 @@ npm run build:prod ...@@ -33,4 +33,7 @@ npm run build:prod
在index页面,打开created中 this.csToken() 在index页面,打开created中 this.csToken()
#生产环境 #生产环境
在index页面,打开created中 this.getCode() 在index页面,打开created中 this.getCode()
Navbar.vue中的退出登录注销。
<!-- <el-dropdown-item divided @click.native="logout">
<span>退出登录</span>
</el-dropdown-item> -->
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
"url": "https://gitee.com/y_project/RuoYi-Vue.git" "url": "https://gitee.com/y_project/RuoYi-Vue.git"
}, },
"dependencies": { "dependencies": {
"@alicloud/dingtalk": "^2.0.49",
"@riophae/vue-treeselect": "0.4.0", "@riophae/vue-treeselect": "0.4.0",
"awe-dnd": "^0.3.4", "awe-dnd": "^0.3.4",
"axios": "0.24.0", "axios": "0.24.0",
......
...@@ -14,9 +14,8 @@ export function getsigninInfo(query) { ...@@ -14,9 +14,8 @@ export function getsigninInfo(query) {
// 获取社团报名审核详细信息 // 获取社团报名审核详细信息
export function listsigninInfo(id) { export function listsigninInfo(id) {
return request({ return request({
url: '/signin/'+ id, url: `/signin/${id}`,
method: 'get', method: 'get',
}) })
} }
......
import request from '@/utils/request'
// 通知列表
export function listTeacherNotice(query) {
return request({
url: '/teacherFiles/notice/list',
method: 'get',
params: query
})
}
// 添加通知
export function addTeacherNotice(data) {
return request({
url: '/teacherFiles/notice',
method: 'post',
data: data
})
}
// 信息发布
export function infoTeacherNotice(id) {
return request({
url: `/teacherFiles/notice/release/${id}`,
method: 'put'
})
}
// 通知下档案查看|数据维护
export function getteacherNotice(query) {
return request({
url: '/teacherFiles/files/list',
method: 'get',
params: query
})
}
//老师查看档案详情
export function getNoticeInfo(query) {
return request({
url: '/teacherFiles/files/list',
method: 'get',
params: query
})
}
//级部查看档案详情
export function getDepInfo(query) {
return request({
url: '/teacherFiles/files/list',
method: 'get',
params: query
})
}
//查看档案详情
export function getFileTnfo(id) {
return request({
url: '/teacherFiles/files/'+id,
method: 'get',
})
}
// 同步档案
export function syncNotice(id) {
return request({
url: '/teacherFiles/files/synchronous/' + id,
method: 'put'
})
}
...@@ -8,7 +8,17 @@ import { isRelogin } from "@/utils/request"; ...@@ -8,7 +8,17 @@ import { isRelogin } from "@/utils/request";
NProgress.configure({ showSpinner: false }); NProgress.configure({ showSpinner: false });
const whiteList = ["/login", "/auth-redirect", "/bind", "/register", "/index"]; const whiteList = [
"/login",
"/auth-redirect",
"/bind",
"/register",
"/index",
"/dd",
"/studentRegistra",
"/printBarcodes",
"/printLesson",
];
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
NProgress.start(); NProgress.start();
......
...@@ -62,6 +62,40 @@ export const constantRoutes = [ ...@@ -62,6 +62,40 @@ export const constantRoutes = [
hidden: true, hidden: true,
}, },
{ {
path: "/studentRegistra",
component: () =>
import(
"@/views/smartSchool/teachAffairAdministration/affairStudentManage/studentRegistra"
),
hidden: true,
},
//设备台账
{
path: "/printBarcodes",
component: () =>
import(
"@/views/smartSchool/schoolProperty/equipmenTledger/printBarcodes"
),
hidden: true,
},
//课程表
{
path: "/printLesson",
component: () =>
import(
"@/views/smartSchool/teachAffairAdministration/lessonManage/printLesson"
),
hidden: true,
},
{
path: "/studentRegistra",
component: () =>
import(
"@/views/smartSchool/teachAffairAdministration/affairStudentManage/studentRegistra"
),
hidden: true,
},
{
path: "/register", path: "/register",
component: () => import("@/views/register"), component: () => import("@/views/register"),
hidden: true, hidden: true,
......
...@@ -130,8 +130,8 @@ ...@@ -130,8 +130,8 @@
<script> <script>
import { listDefinition, delDefinition, suspendOrActiveDefinition, convert2Model } from "@/api/activiti/definition.js" import { listDefinition, delDefinition, suspendOrActiveDefinition, convert2Model } from "@/api/activiti/definition.js"
import { format } from "@/utils/activiti/myUtil.js" import { format } from "@/utils/activiti/myUtil.js"
export default { export default {
name: "Definition", name: "Definition",
data() { data() {
......
...@@ -501,10 +501,7 @@ export default { ...@@ -501,10 +501,7 @@ export default {
} }
}, },
created() { created() {
// 钉钉code码,正式时打开 this.init()
// this.getCode()
// token,测试用
this.csToken()
}, },
mounted() { mounted() {
...@@ -529,59 +526,7 @@ export default { ...@@ -529,59 +526,7 @@ export default {
}, },
methods: { methods: {
// 获取code
getCode() {
dd.getAuthCode({
corpId: 'dingaa3937ff8b7dd267f2c783f7214b6d69',
success: (res) => {
console.log('获取新的免登码成功', res);
const code = res.code
// this.code = code;
// this.authCodeTimestamp = currentTime;
// console.log('this.authCodeTimestamp', this.authCodeTimestamp);
console.log('code', code);
this.getToken(code)
// console.log('loginResponse', loginResponse);
},
fail: (res) => {
console.log('获取免登码失败', res);
},
complete: () => { },
});
},
// 获取token
getToken(code) {
getCode(code).then(res => {
console.log('res', res.token);
if (res.token) {
setToken(res.token)
this.$store.commit('SET_TOKEN', res.token)
// this.$router.push({ path: '/index' });
// 判断当前用户是否已拉取完user_info信息
this.$store.dispatch('GetInfo').then((res) => {
this.$store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
this.init()
})
})
} else {
this.$message.error(res.message)
}
})
},
// 测试token
csToken() {
if (getToken()) {
console.log('getToken', getToken());
this.init()
} else {
this.$router.push({ path: '/login' });
}
},
//从后端获取任务数量 //从后端获取任务数量
taskNum() { taskNum() {
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 弹窗 --> <!-- 弹窗 -->
<el-dialog :title="title" :visible.sync="dialogTableVisible" width="30%" show-close> <el-dialog :title="title" :visible.sync="dialogTableVisible" width="30%" show-close>
<el-form :model="form" ref="form" size="small" :rules="rules" label-width="108px"> <el-form :model="form" ref="form" size="small" :rules="rules" label-width="108px">
...@@ -75,7 +74,6 @@ ...@@ -75,7 +74,6 @@
<el-radio label='1'></el-radio> <el-radio label='1'></el-radio>
<el-radio label='0'></el-radio> <el-radio label='0'></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -87,13 +85,11 @@ ...@@ -87,13 +85,11 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<div slot="footer"> <div slot="footer">
<el-button type="primary" @click="submitparentForm">确定</el-button> <el-button type="primary" @click="submitparentForm">确定</el-button>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
</div> </div>
</el-dialog> </el-dialog>
<!-- 分页 --> <!-- 分页 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" /> @pagination="getList" />
...@@ -123,9 +119,7 @@ export default { ...@@ -123,9 +119,7 @@ export default {
}, },
selectedRows: [], // 用于存储选择的行数据 selectedRows: [], // 用于存储选择的行数据
//表格数据 //表格数据
tableData: [ tableData: [ ],
],
nowType: 0, // 0新增、1编辑、2查看 nowType: 0, // 0新增、1编辑、2查看
title: '', title: '',
// 弹窗 // 弹窗
...@@ -176,7 +170,7 @@ export default { ...@@ -176,7 +170,7 @@ export default {
this.loading = false; this.loading = false;
}) })
}, },
normalizer(node) { normalizer(node) {
if (node.children && !node.children.length) { if (node.children && !node.children.length) {
delete node.children; delete node.children;
...@@ -216,6 +210,7 @@ export default { ...@@ -216,6 +210,7 @@ export default {
Object.keys(this.form).forEach(key => { Object.keys(this.form).forEach(key => {
if (res.data[key]) { if (res.data[key]) {
this.$set(this.form, key, res.data[key]); this.$set(this.form, key, res.data[key]);
} }
}); });
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</el-form-item> </el-form-item>
<el-form-item label="仪器分类"> <el-form-item label="仪器分类">
<treeselect v-model="queryForm.instrumentTypeId" :options="equiList" :normalizer="normalizer" <treeselect v-model="queryForm.instrumentTypeId" :options="equiList" :normalizer="normalizer"
placeholder="选择分类编码" clearable style="width: 192px" /> placeholder="选择分类编码" clearable style="width: 192px" noOptionsText="暂无数据" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<el-col :span="20"> <el-col :span="20">
<el-form-item label="仪器分类" prop="instrumentTypeName"> <el-form-item label="仪器分类" prop="instrumentTypeName">
<treeselect v-model="form.instrumentTypeName" :options="equiList" :normalizer="normalizer" <treeselect v-model="form.instrumentTypeName" :options="equiList" :normalizer="normalizer"
placeholder="选择" clearable style="width: 100%" /> placeholder="选择" clearable style="width: 100%" noOptionsText="暂无数据"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -300,7 +300,7 @@ export default { ...@@ -300,7 +300,7 @@ export default {
id: '', id: '',
instrumentName: "", instrumentName: "",
instrumentTypeId: "", instrumentTypeId: "",
instrumentTypeName: "", instrumentTypeName: null,
instrumentModel: "", instrumentModel: "",
instrumentNum: "", instrumentNum: "",
remark: "", remark: "",
......
...@@ -361,8 +361,6 @@ export default { ...@@ -361,8 +361,6 @@ export default {
} else { } else {
this.postForm.accessoryUrl = ''; this.postForm.accessoryUrl = '';
this.postForm.accessoryName = ''; this.postForm.accessoryName = '';
} }
}, },
......
...@@ -339,7 +339,6 @@ export default { ...@@ -339,7 +339,6 @@ export default {
console.log('response', response); console.log('response', response);
this.loading = false; this.loading = false;
this.getClasslist(); this.getClasslist();
this.dialogTableVisible = true; this.dialogTableVisible = true;
}); });
}, },
......
...@@ -406,18 +406,17 @@ export default { ...@@ -406,18 +406,17 @@ export default {
methods: { methods: {
getList() { getList() {
getApplylist(this.queryForm) getApplylist(this.queryForm).then(response => {
.then(response => { this.tableData = response.rows;
this.tableData = response.rows; this.tableData = response.rows.map(item => {
this.tableData = response.rows.map(item => { item.accessoryList = item.schoolAccessoryList; // 将附件信息赋值给accessoryList属性
item.accessoryList = item.schoolAccessoryList; // 将附件信息赋值给accessoryList属性 return item;
return item; });
}); console.log('response', response);
console.log('response', response); console.log(response.rows.a);
console.log(response.rows.a); this.total = response.total;
this.total = response.total; this.loading = false;
this.loading = false; })
})
.catch(error => { .catch(error => {
this.loading = false; this.loading = false;
console.log(error); console.log(error);
...@@ -519,6 +518,7 @@ export default { ...@@ -519,6 +518,7 @@ export default {
}, },
//上传按钮 //上传按钮
getFileList(data) { getFileList(data) {
console.log('data', data); console.log('data', data);
...@@ -527,6 +527,8 @@ export default { ...@@ -527,6 +527,8 @@ export default {
if (this.fileList.length != 0) { if (this.fileList.length != 0) {
this.postForm.accessoryUrl = data[0].fjlj; this.postForm.accessoryUrl = data[0].fjlj;
this.postForm.accessoryName = data[0].fjmc; this.postForm.accessoryName = data[0].fjmc;
console.log(this.postForm.accessoryName);
console.log(this.postForm.accessoryUrl);
console.log('this.postForm', this.postForm); console.log('this.postForm', this.postForm);
} else { } else {
this.postForm.accessoryUrl = ''; this.postForm.accessoryUrl = '';
...@@ -724,6 +726,4 @@ export default { ...@@ -724,6 +726,4 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped></style>
\ No newline at end of file
</style>
\ No newline at end of file
...@@ -202,21 +202,33 @@ export default { ...@@ -202,21 +202,33 @@ export default {
resetQuery() { resetQuery() {
this.queryForm = { this.queryForm = {
pageNum: 1, pageNum: 1,
pageSize: 10,
curriculaId: "",
studentName: "",
classId: "",
selectedCourse: "",
pageNum: 1,
pageSize: 10 pageSize: 10
}; };
this.resetForm("queryForm"); this.resetForm("queryForm");
this.getList(); this.getList();
}, },
// 重置 // 重置
reset() { reset() {
this.postForm = { this.form = {
curriculaId: '', curriculaId: "",
course: "",
courseName: "",
coursePeopleNumber: "",
classesNumber: "",
peopleNumber: "",
divisionClassesRule: "",
divisionClassesFrequency: '1',
} }
this.resetForm('postForm'); this.resetForm('form');
}, },
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
...@@ -232,45 +244,32 @@ export default { ...@@ -232,45 +244,32 @@ export default {
}, },
// 分班按钮 // 分班按钮
submitForm() { submitForm() {
// 检查是否已经分班
const alreadyDivided = this.selectedCourse.every(course => course.divisionClassesRule !== "");
console.log('this.selectedCourse', this.selectedCourse);
if (alreadyDivided) {
this.$message.warning("已经分班,无法重复操作");
return;
}
this.$confirm('确定要分班吗?', '提示', { this.$confirm('确定要分班吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
// let that = this; const formData = this.selectedCourse.map((course) => {
// for (let i = 0; i < this.selectedCourse.length; i++) { console.log(course);
// that.selectedCourse[i].divisionClassesRule = that.form.divisionClassesRule; return {
// const course = this.selectedCourse[i]; curriculaId: this.queryForm.curriculaId,
// console.log('course.divisionClassesRule:', course.divisionClassesRule); course: course.course,
// console.log('course.classesNumber:', course.classesNumber); classesNumber: course.classesNumber,
// console.log('course.peopleNumber:', course.peopleNumber); peopleNumber: course.peopleNumber,
// if (course.divisionClassesRule === '' || course.classesNumber === '' || course.peopleNumber === '') { coursePeopleNumber: course.peopleNumber,
// this.$message.error("分班规则、班级数量和每班人数不能为空"); divisionClassesRule: this.form.divisionClassesRule,
// return; divisionClassesFrequency: course.divisionClassesFrequency
// } };
// let totalPeopleNumber = course.classesNumber * course.peopleNumber; });
// if (totalPeopleNumber > this.selectedCourse.length) { addDivisionec(formData).then((response) => {
// this.$message.error("班级数量和每班人数相乘不能超过总人数"); console.log(response);
// return; this.$modal.msgSuccess('分班成功');
// }
// }
// console.log('this.selectedCourse', this.selectedCourse);
addDivisionec(this.selectedCourse).then((response) => {
console.log('this.selectedCourse', this.selectedCourse);
this.$modal.msgSuccess("分班成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}).catch(error => { }).catch(error => {
console.error(error);
});
})
}) })
......
...@@ -49,8 +49,8 @@ ...@@ -49,8 +49,8 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="分班规则" prop="divisionClassesRule"> <el-form-item label="分班规则" prop="divisionClassesRule">
<el-radio-group v-model="form.divisionClassesRule"> <el-radio-group v-model="form.divisionClassesRule">
<el-radio label='1'>平行分班</el-radio> <el-radio label="1">平行分班</el-radio>
<el-radio label='2'>分层分班</el-radio> <el-radio label="2">分层分班</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -63,9 +63,9 @@ ...@@ -63,9 +63,9 @@
<el-input v-model="course.peopleNumber" placeholder="每班人数"></el-input> <el-input v-model="course.peopleNumber" placeholder="每班人数"></el-input>
</div> </div>
</el-form-item> </el-form-item>
</div> </div>
</el-form> </el-form>
<div style="text-align: center"> <div style="text-align: center">
<el-button type="primary" @click="submitForm">确 定</el-button> <el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
...@@ -88,15 +88,15 @@ export default { ...@@ -88,15 +88,15 @@ export default {
dicts: ['section_type'], dicts: ['section_type'],
data() { data() {
return { return {
divisionClassesRule: '',
selectedCourse: [], selectedCourse: [],
classList: [], classList: [],
// 查询表单 // 查询表单
queryForm: { queryForm: {
divisionClassesRule: '', curriculaId: "",
curriculaId: '', studentName: "",
studentsName: '', classId: "",
classId: '', selectedCourse: "",
selectedCourse: '',
pageNum: 1, pageNum: 1,
pageSize: 10 pageSize: 10
}, },
...@@ -188,12 +188,12 @@ export default { ...@@ -188,12 +188,12 @@ export default {
coursePeopleNumber: item.peopleNumber, coursePeopleNumber: item.peopleNumber,
classesNumber: '', classesNumber: '',
peopleNumber: '', peopleNumber: '',
divisionClassesRule: '', divisionClassesRule: "",
divisionClassesFrequency: '1' divisionClassesFrequency: '1'
} }
}); });
// console.log('this.selectedCourse', this.selectedCourse); console.log('this.selectedCourse', this.selectedCourse);
} }
}) })
}, },
...@@ -202,7 +202,14 @@ export default { ...@@ -202,7 +202,14 @@ export default {
resetQuery() { resetQuery() {
this.queryForm = { this.queryForm = {
pageNum: 1, pageNum: 1,
pageSize: 10,
curriculaId: "",
studentName: "",
classId: "",
selectedCourse: "",
pageNum: 1,
pageSize: 10 pageSize: 10
}; };
this.resetForm("queryForm"); this.resetForm("queryForm");
this.getList(); this.getList();
...@@ -210,10 +217,17 @@ export default { ...@@ -210,10 +217,17 @@ export default {
// 重置 // 重置
reset() { reset() {
this.postForm = { this.form = {
curriculaId: '', curriculaId: "",
course: "",
courseName: "",
coursePeopleNumber: "",
classesNumber: "",
peopleNumber: "",
divisionClassesRule: "",
divisionClassesFrequency: '1',
} }
this.resetForm('postForm'); this.resetForm('form');
}, },
// 取消按钮 // 取消按钮
...@@ -230,47 +244,33 @@ export default { ...@@ -230,47 +244,33 @@ export default {
}, },
// 分班按钮 // 分班按钮
submitForm() { submitForm() {
// 检查是否已经分班
const alreadyDivided = this.selectedCourse.every(course => course.divisionClassesRule !== "");
console.log('this.selectedCourse', this.selectedCourse);
if (alreadyDivided) {
this.$message.warning("已经分班,无法重复操作");
return;
}
this.$confirm('确定要分班吗?', '提示', { this.$confirm('确定要分班吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
// let that = this; const formData = this.selectedCourse.map((course) => {
// for (let i = 0; i < this.selectedCourse.length; i++) {
// that.selectedCourse[i].divisionClassesRule = that.form.divisionClassesRule; return {
// const course = this.selectedCourse[i]; curriculaId: this.queryForm.curriculaId,
// console.log('course.divisionClassesRule:', course.divisionClassesRule); course: course.course,
// console.log('course.classesNumber:', course.classesNumber); classesNumber: course.classesNumber,
// console.log('course.peopleNumber:', course.peopleNumber); peopleNumber: course.peopleNumber,
// if (course.divisionClassesRule === '' || course.classesNumber === '' || course.peopleNumber === '') { coursePeopleNumber: course.peopleNumber,
// this.$message.error("分班规则、班级数量和每班人数不能为空"); divisionClassesRule: this.form.divisionClassesRule,
// return; divisionClassesFrequency: course.divisionClassesFrequency
// } };
// let totalPeopleNumber = course.classesNumber * course.peopleNumber; });
// console.log('totalPeopleNumber', totalPeopleNumber);
// if (totalPeopleNumber > this.coursePeopleNumber) { addDivision(formData).then((response) => {
// console.log('this.coursePeopleNumber', this.coursePeopleNumber); console.log(response);
// this.$message.error("班级数量和每班人数相乘不能超过总人数"); this.$modal.msgSuccess('分班成功');
// return;
// }
// }
// console.log('this.selectedCourse', this.selectedCourse);
addDivision(this.selectedCourse).then((response) => {
console.log('this.selectedCourse', this.selectedCourse);
this.$modal.msgSuccess("分班成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}).catch(error => { }).catch(error => {
console.error(error);
});
})
}) })
...@@ -285,6 +285,8 @@ export default { ...@@ -285,6 +285,8 @@ export default {
} }
} }
</script> </script>
......
...@@ -72,8 +72,8 @@ ...@@ -72,8 +72,8 @@
<el-col :span="16"> <el-col :span="16">
<el-form-item label="发布时间"> <el-form-item label="发布时间">
<el-date-picker v-model="dateRange" type="daterange" range-separator="至" <el-date-picker v-model="dateRange" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd HH:mm:ss" :style="{ width: '100%' }"> value-format="yyyy-MM-dd" :style="{ width: '100%' }">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
......
...@@ -86,8 +86,6 @@ ...@@ -86,8 +86,6 @@
<el-option v-for="item in tableList" :key="item.id" :value="item.experimentName" <el-option v-for="item in tableList" :key="item.id" :value="item.experimentName"
:label="item.experimentName"></el-option> :label="item.experimentName"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
...@@ -267,7 +265,6 @@ export default { ...@@ -267,7 +265,6 @@ export default {
}, },
methods: { methods: {
//表单查询 //表单查询
getList() { getList() {
getLabplanlist(this.queryForm).then(response => { getLabplanlist(this.queryForm).then(response => {
...@@ -289,10 +286,8 @@ export default { ...@@ -289,10 +286,8 @@ export default {
//选择实验名称自动带出信息 //选择实验名称自动带出信息
getName() { getName() {
const selectedExperiment = this.tableList.find(experiment => experiment.experimentName === this.form.experimentName); const selectedExperiment = this.tableList.find(experiment => experiment.experimentName === this.form.experimentName);
if (selectedExperiment) { if (selectedExperiment) {
this.selectedExperiment = selectedExperiment; // 确保将选中的实验赋值给 selectedExperiment this.selectedExperiment = selectedExperiment; // 确保将选中的实验赋值给 selectedExperiment
// 将实验的字段赋值给表单字段 // 将实验的字段赋值给表单字段
this.form.experimentPlanId = selectedExperiment.chapterContent?.id || ""; this.form.experimentPlanId = selectedExperiment.chapterContent?.id || "";
this.form.chapterContent = selectedExperiment.chapterContent || ""; this.form.chapterContent = selectedExperiment.chapterContent || "";
...@@ -368,17 +363,20 @@ export default { ...@@ -368,17 +363,20 @@ export default {
this.nowType = type; this.nowType = type;
this.getSchholyear(); this.getSchholyear();
if (type != 0) { if (type != 0) {
const id = row.id if (row && row.id) {
getLabplanxq(id).then(response => { const id = row.id;
if (response.code == 200) { getLabplanxq(id).then(response => {
console.log(response); if (response.code == 200) {
Object.keys(this.form).forEach(key => { console.log(response);
if (response.data[key]) { Object.keys(this.form).forEach(key => {
this.$set(this.form, key, response.data[key]); if (response.data[key]) {
} this.$set(this.form, key, response.data[key]);
}) }
} });
}) }
});
}
} }
this.dialogTableVisible = true; this.dialogTableVisible = true;
}, },
...@@ -418,7 +416,7 @@ export default { ...@@ -418,7 +416,7 @@ export default {
declareState: '0', declareState: '0',
}; };
console.log(params);
addLabplan(params).then(response => { addLabplan(params).then(response => {
this.$modal.msgSuccess('保存成功'); this.$modal.msgSuccess('保存成功');
this.dialogTableVisible = false; this.dialogTableVisible = false;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="老师姓名" prop="teacherName"> <el-form-item label="老师姓名" prop="teacherName">
<el-input readonly :value="infoForm.teacherName"/> <el-input readonly :value="infoForm.teacherName" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<el-form-item label="请假类型"> <el-form-item label="请假类型">
<el-select readonly :value="infoForm.type" style="width: 100%" placeholder=""> <el-select readonly :value="infoForm.type" style="width: 100%" placeholder="">
<el-option v-for="dict in dict.type.biz_leave_type" :key="dict.value" :value="dict.value" <el-option v-for="dict in dict.type.biz_leave_type" :key="dict.value" :value="dict.value"
:label="dict.label"></el-option> :label="dict.label"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -32,14 +32,14 @@ ...@@ -32,14 +32,14 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="请假开始时间" prop="startTime"> <el-form-item label="请假开始时间" prop="startTime">
<el-date-picker readonly style="width: 100%" v-model="infoForm.startTime" type="datetime" <el-date-picker readonly style="width: 100%" v-model="infoForm.startTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择开始时间"></el-date-picker> value-format="yyyy/MM/dd HH:mm:ss" placeholder="选择开始时间"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="请假结束时间" prop="endTime"> <el-form-item label="请假结束时间" prop="endTime">
<el-date-picker readonly style="width: 100%" v-model="infoForm.endTime" type="datetime" <el-date-picker readonly style="width: 100%" v-model="infoForm.endTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择结束时间"></el-date-picker> value-format="yyyy/MM/dd HH:mm:ss" placeholder="选择结束时间"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -48,25 +48,25 @@ ...@@ -48,25 +48,25 @@
<el-col :span="7"> <el-col :span="7">
<el-form-item label="请假开始时间" prop="startTime"> <el-form-item label="请假开始时间" prop="startTime">
<el-date-picker readonly v-model="infoForm.startTime" type="date" style="width: 100%" <el-date-picker readonly v-model="infoForm.startTime" type="date" style="width: 100%"
value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker> value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-select :value="infoForm.startSort" style="width: 100%" placeholder="请选择课程节次"> <el-select :value="infoForm.startSort" style="width: 100%" placeholder="请选择课程节次">
<el-option v-for="dict in dict.type.course_arrange" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.course_arrange" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
</el-col> </el-col>
<el-col :offset="2" :span="7"> <el-col :offset="2" :span="7">
<el-form-item label="请假结束时间" prop="endTime"> <el-form-item label="请假结束时间" prop="endTime">
<el-date-picker readonly type="date" v-model="infoForm.endTime" value-format="yyyy-MM-dd" <el-date-picker readonly type="date" v-model="infoForm.endTime" value-format="yyyy-MM-dd"
style="width: 100%" placeholder="选择日期"></el-date-picker> style="width: 100%" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-select :value="infoForm.endSort" style="width: 100%" placeholder="请选择课程节次"> <el-select :value="infoForm.endSort" style="width: 100%" placeholder="请选择课程节次">
<el-option v-for="dict in dict.type.course_arrange" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.course_arrange" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
</el-col> </el-col>
</el-row> </el-row>
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<el-col> <el-col>
<el-form-item label="请假原因"> <el-form-item label="请假原因">
<el-input readonly :value="infoForm.reasonForLeave" type="textarea" placeholder="" <el-input readonly :value="infoForm.reasonForLeave" type="textarea" placeholder=""
:autosize="{ minRows: 3 }"/> :autosize="{ minRows: 3 }" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -82,15 +82,13 @@ ...@@ -82,15 +82,13 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="实际开始时间" prop="realityStartTime"> <el-form-item label="实际开始时间" prop="realityStartTime">
<el-date-picker style="width: 100%" v-model="infoForm.realityStartTime" type="datetime" <el-date-picker style="width: 100%" v-model="infoForm.realityStartTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder="" value-format="yyyy-MM-dd HH:mm:ss" placeholder="" :picker-options="limitStartTime"></el-date-picker>
:picker-options="limitStartTime"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="实际结束时间" prop="realityEndTime"> <el-form-item label="实际结束时间" prop="realityEndTime">
<el-date-picker style="width: 100%" v-model="infoForm.realityEndTime" type="datetime" <el-date-picker style="width: 100%" v-model="infoForm.realityEndTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder="" value-format="yyyy-MM-dd HH:mm:ss" placeholder="" :picker-options="limitEndTime"></el-date-picker>
:picker-options="limitEndTime"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -100,7 +98,7 @@ ...@@ -100,7 +98,7 @@
</el-form> </el-form>
</el-card> </el-card>
<TaskResolve v-if="!$attrs.readOnly" :taskId="this.$attrs.taskId" :instanceId="instanceId" :id="id" <TaskResolve v-if="!$attrs.readOnly" :taskId="this.$attrs.taskId" :instanceId="instanceId" :id="id"
v-on="this.$listeners"></TaskResolve> v-on="this.$listeners"></TaskResolve>
</div> </div>
</template> </template>
...@@ -156,8 +154,8 @@ export default { ...@@ -156,8 +154,8 @@ export default {
limitStartTime, limitStartTime,
infoForm: {}, infoForm: {},
rules: { rules: {
realityStartTime: [{required: true, message: '实际开始时间不能为空', trigger: 'change'}], realityStartTime: [{ required: true, message: '实际开始时间不能为空', trigger: 'change' }],
realityEndTime: [{required: true, message: '实际结束时间不能为空', trigger: 'change'}] realityEndTime: [{ required: true, message: '实际结束时间不能为空', trigger: 'change' }]
} }
} }
}, },
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
:modal="false" :modal="false"
fullscreen fullscreen
:modal-append-to-body="false" :modal-append-to-body="false"
> >
<!-- <template slot="title">--> <!-- <template slot="title">-->
<!-- <div class="custom-dialog__header">--> <!-- <div class="custom-dialog__header">-->
...@@ -15,7 +14,6 @@ ...@@ -15,7 +14,6 @@
<!-- </div>--> <!-- </div>-->
<!-- </div>--> <!-- </div>-->
<!-- </template>--> <!-- </template>-->
<div class="resolve-dialog-bady" > <div class="resolve-dialog-bady" >
<div class="left-menu"> <div class="left-menu">
<el-tabs tab-position="left" v-model="asyncComponent" @tab-click="selectMenu" style="height: 800px"> <el-tabs tab-position="left" v-model="asyncComponent" @tab-click="selectMenu" style="height: 800px">
...@@ -40,8 +38,6 @@ ...@@ -40,8 +38,6 @@
</keep-alive> </keep-alive>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
......
...@@ -170,7 +170,7 @@ ...@@ -170,7 +170,7 @@
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="10"> <el-col :span="10">
<el-form-item label="申请老师"> <el-form-item label="申请老师">
<el-input v-model="postForm.applyName" placeholder="请输入" clearable :disabled="isEdit"/> <el-input v-model="postForm.applyName" placeholder="请输入" clearable :disabled="isEdit" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
...@@ -187,12 +187,13 @@ ...@@ -187,12 +187,13 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="10"> <el-col :span="10">
<el-form-item label="实验名称"> <el-form-item label="实验名称">
<el-input v-model="postForm.experimentName" placeholder="请输入" clearable :disabled="isEdit"/> <el-input v-model="postForm.experimentName" placeholder="请输入" clearable :disabled="isEdit" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
<el-form-item label="学科"> <el-form-item label="学科">
<el-select v-model="postForm.sub" placeholder="请选择" clearable style="width: 100%;" :disabled="isEdit"> <el-select v-model="postForm.sub" placeholder="请选择" clearable style="width: 100%;"
:disabled="isEdit">
<el-option v-for="dict in dict.type.lab_sub" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.lab_sub" :key="dict.value" :label="dict.label"
:value="dict.value" /> :value="dict.value" />
</el-select> </el-select>
...@@ -204,7 +205,8 @@ ...@@ -204,7 +205,8 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="20"> <el-col :span="20">
<el-form-item label="章节内容"> <el-form-item label="章节内容">
<el-input v-model="postForm.chapterContent" placeholder="请输入" clearable :disabled="isEdit"></el-input> <el-input v-model="postForm.chapterContent" placeholder="请输入" clearable
:disabled="isEdit"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -213,12 +215,12 @@ ...@@ -213,12 +215,12 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="10"> <el-col :span="10">
<el-form-item label="级部"> <el-form-item label="级部">
<el-input v-model="postForm.grade" placeholder="请输入" clearable :disabled="isEdit"/> <el-input v-model="postForm.grade" placeholder="请输入" clearable :disabled="isEdit" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
<el-form-item label="学年"> <el-form-item label="学年">
<el-input v-model="postForm.schoolYear" placeholder="请输入" clearable :disabled="isEdit"/> <el-input v-model="postForm.schoolYear" placeholder="请输入" clearable :disabled="isEdit" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="80px">
:model="queryForm"
ref="queryForm"
size="small"
:inline="true"
label-width="80px"
>
<el-form-item prop="name" label="社团名称"> <el-form-item prop="name" label="社团名称">
<el-input v-model="queryForm.name" placeholder="社团名称"></el-input> <el-input v-model="queryForm.name" placeholder="社团名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="teachers" label="指导教师"> <el-form-item prop="teachers" label="指导教师">
<el-input <el-input v-model="queryForm.teachers" placeholder="指导教师"></el-input>
v-model="queryForm.teachers"
placeholder="指导教师"
></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
type="primary" <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd()">新增</el-button>
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd()"
>新增</el-button
>
</el-col> </el-col>
</el-row> </el-row>
<!-- 列表 --> <!-- 列表 -->
<div class="listBlock"> <div class="listBlock">
<div class="itemBlock" v-for="(task, index) in tasks" :key="index"> <div class="itemBlock" v-for="(task, index) in tasks" :key="index">
<div <div style="
style="
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
" ">
>
<div style="width: 50%"> <div style="width: 50%">
<!-- 任务详细信息 --> <!-- 任务详细信息 -->
<div class="task-info"> <div class="task-info">
...@@ -77,49 +52,17 @@ ...@@ -77,49 +52,17 @@
<!-- 按钮 --> <!-- 按钮 -->
<div class="task-buttons"> <div class="task-buttons">
<el-button <el-button style="margin-left: 10px" size="mini" type="danger" round @click="handleDelete(task)">删除
style="margin-left: 10px"
size="mini"
type="danger"
round
@click="handleDelete(task)"
>删除
</el-button> </el-button>
<el-button <el-button type="success" size="small" round
type="success" @click="clubRegistrationReview(task.id, task.teachers)">社团报名审核</el-button>
size="small" <el-button type="info" size="small" round @click="clubActivityRecord(task.id)">社团活动记录</el-button>
round <el-button type="warning" size="small" round @click="memberManagement(task.id)">成员管理
@click="clubRegistrationReview(task.id, task.teachers)"
>社团报名审核</el-button
>
<el-button
type="info"
size="small"
round
@click="clubActivityRecord(task.id)"
>社团活动记录</el-button
>
<el-button
type="warning"
size="small"
round
@click="memberManagement(task.id)"
>成员管理
</el-button> </el-button>
<el-button <el-button class="purpleBtn" size="small" round type="primary"
class="purpleBtn" @click="communityStyle(task.id, task.teachers)">社团风采
size="small"
round
type="primary"
@click="communityStyle(task.id, task.teachers)"
>社团风采
</el-button> </el-button>
<el-button <el-button type="primary" size="small" round @click="basicInformation(task.id, task.teachers)">基础信息管理
type="primary"
size="small"
round
@click="basicInformation(task.id, task.teachers)"
>基础信息管理
</el-button> </el-button>
</div> </div>
</div> </div>
...@@ -129,45 +72,22 @@ ...@@ -129,45 +72,22 @@
<el-form ref="form" :model="form" :rules="rules" label-width="110px"> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<div> <div>
<el-form-item label="社团名称" prop="name"> <el-form-item label="社团名称" prop="name">
<el-input <el-input v-model="form.name" placeholder="请输入社团名称"></el-input>
v-model="form.name"
placeholder="请输入社团名称"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="指导教师" prop="teachers"> <el-form-item label="指导教师" prop="teachers">
<el-select <el-select style="width: 100%" multiple v-model="form.teachers" filterable placeholder="请选择指导教师"
style="width: 100%" @change="changeTeacher">
multiple <el-option v-for="item in teacherInfo" :key="item.teacherCode" :label="item.teacherName"
v-model="form.teachers" :value="item.teacherCode">
filterable
placeholder="请选择指导教师"
@change="changeTeacher"
>
<el-option
v-for="item in teacherInfo"
:key="item.teacherCode"
:label="item.teacherName"
:value="item.teacherCode"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="社团宗旨" prop="aim"> <el-form-item label="社团宗旨" prop="aim">
<el-input <el-input type="textarea" :rows="4" v-model="form.aim" placeholder="请输入社团宗旨"></el-input>
type="textarea"
:rows="4"
v-model="form.aim"
placeholder="请输入社团宗旨"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="社团简介" prop="intro"> <el-form-item label="社团简介" prop="intro">
<el-input <el-input type="textarea" :rows="4" v-model="form.intro" placeholder="请输入社团简介"></el-input>
type="textarea"
:rows="4"
v-model="form.intro"
placeholder="请输入社团简介"
></el-input>
</el-form-item> </el-form-item>
</div> </div>
</el-form> </el-form>
...@@ -368,7 +288,7 @@ export default { ...@@ -368,7 +288,7 @@ export default {
this.$message.success("修改成功"); this.$message.success("修改成功");
this.open = false; this.open = false;
}) })
.catch((err) => {}); .catch((err) => { });
} else { } else {
// 新增 // 新增
const params = { const params = {
...@@ -385,7 +305,7 @@ export default { ...@@ -385,7 +305,7 @@ export default {
this.$message.success("新增成功"); this.$message.success("新增成功");
this.open = false; this.open = false;
}) })
.catch((err) => {}); .catch((err) => { });
} }
} }
}); });
...@@ -403,7 +323,7 @@ export default { ...@@ -403,7 +323,7 @@ export default {
this.getList(); this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}) })
.catch(() => {}); .catch(() => { });
}, },
// 重置表单 // 重置表单
reset() { reset() {
...@@ -466,7 +386,7 @@ export default { ...@@ -466,7 +386,7 @@ export default {
text-align: left; text-align: left;
} }
.task-level > span { .task-level>span {
margin-right: 25px; margin-right: 25px;
} }
...@@ -490,13 +410,13 @@ export default { ...@@ -490,13 +410,13 @@ export default {
padding-left: 60%; padding-left: 60%;
} }
.task-count > .count { .task-count>.count {
font-weight: bold; font-weight: bold;
color: #307def; color: #307def;
font-size: 45px; font-size: 45px;
} }
.task-count > .sun { .task-count>.sun {
color: rgba(16, 16, 16, 1); color: rgba(16, 16, 16, 1);
font-size: 18px; font-size: 18px;
text-align: center; text-align: center;
......
...@@ -67,7 +67,13 @@ ...@@ -67,7 +67,13 @@
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="附件" align="center" prop="file"> <el-table-column label="附件" align="center" prop="file">
<template slot-scope="scope"> <template slot-scope="scope">
<el-image style="width: 100px; height: 100px" :src="scope.row.file"> <el-image
v-for="(item, index) in scope.row.file.split(',')"
:key="index"
style="width: 100px; height: 100px"
:src="item"
:preview-src-list="[item]"
>
</el-image> </el-image>
</template> </template>
</el-table-column> </el-table-column>
...@@ -214,16 +220,24 @@ ...@@ -214,16 +220,24 @@
" "
> >
<el-upload <el-upload
multiple
v-loading="uploadLoading" v-loading="uploadLoading"
class="avatar-uploader" class="avatar-uploader"
action="#" :action="uploadFileUrl"
accept="image/*" accept="image/*"
:show-file-list="false" :show-file-list="false"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :before-upload="beforeAvatarUpload"
:http-request="uploadImage"
> >
<img v-if="form.file" :src="form.file" class="avatar" /> <img v-if="form.file" :src="form.file" class="avatar" />
<div v-if="form.file">
<img
v-for="(item, index) in form.file"
:key="index"
:src="item"
class="avatar"
/>
</div>
<i v-else class="el-icon-plus avatar-uploader-icon"></i> <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
...@@ -257,6 +271,10 @@ export default { ...@@ -257,6 +271,10 @@ export default {
components: { picAvatar }, components: { picAvatar },
data() { data() {
return { return {
//图片上传列表
uploadList: [],
uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
pev: process.env.VUE_APP_BASE_API, pev: process.env.VUE_APP_BASE_API,
// 输入框字数限制 // 输入框字数限制
TEXT_SIZE, TEXT_SIZE,
...@@ -334,17 +352,6 @@ export default { ...@@ -334,17 +352,6 @@ export default {
}, },
], ],
}, },
//设置table列隐藏与显示
columns: [
{ key: 0, label: `园区照片`, visible: true },
{ key: 1, label: `相片名称`, visible: true },
// {key: 2, label: `相片路径`, visible: true},
{ key: 2, label: `排序`, visible: true },
{ key: 3, label: `备注`, visible: true },
{ key: 4, label: `创建者`, visible: true },
{ key: 5, label: `创建时间`, visible: true },
{ key: 6, label: `操作`, visible: true },
],
// 作为临时图片展示 // 作为临时图片展示
tempImage: "", tempImage: "",
// 导出选项 // 导出选项
...@@ -439,7 +446,8 @@ export default { ...@@ -439,7 +446,8 @@ export default {
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.check = false; this.uploadList = [];
this.reset(); this.reset();
this.open = true; this.open = true;
this.title = "新增社团活动记录"; this.title = "新增社团活动记录";
...@@ -448,8 +456,14 @@ export default { ...@@ -448,8 +456,14 @@ export default {
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
const ids = row.id || this.ids; const ids = row.id || this.ids;
this.uploadList = [];
this.form.file = [];
listClubInfo(ids).then((response) => { listClubInfo(ids).then((response) => {
this.form = response.data; this.form = response.data;
this.form.file = response.data.file.split(",");
console.log("this.form.file", this.form.file);
this.imageUrl = this.pev + this.form.picUrl; this.imageUrl = this.pev + this.form.picUrl;
console.log(this.imageUrl, "this.imageUrl"); console.log(this.imageUrl, "this.imageUrl");
this.open = true; this.open = true;
...@@ -460,10 +474,16 @@ export default { ...@@ -460,10 +474,16 @@ export default {
handleCheck(row) { handleCheck(row) {
this.check = true; this.check = true;
this.open = true; this.open = true;
this.uploadList = [];
this.form.file = [];
const ids = row.id || this.ids; const ids = row.id || this.ids;
listClubInfo(ids).then((response) => { listClubInfo(ids).then((response) => {
this.form = response.data; this.form = response.data;
this.form.file = response.data.file; // this.form.file = response.data.file;
console.log("this.form.file", this.form.file);
this.form.file = response.data.file.split(",");
// console.log(this.form.file); // console.log(this.form.file);
this.open = true; this.open = true;
}); });
...@@ -471,9 +491,21 @@ export default { ...@@ -471,9 +491,21 @@ export default {
}, },
// 上传成功回调 // 上传成功回调
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
this.imageUrl = res.data.url; // this.imageUrl = res.data.url;
console.log(file); // console.log(file);
this.commonUpload(file); // this.commonUpload(file);
console.log("Success res", res);
console.log("Success file", file);
if (res.code == 200) {
this.uploadList.push(this.pev + res.fileName);
this.form.file = this.uploadList;
console.log("this.uploadList", this.uploadList);
console.log("this.form.file", this.form.file);
}
// this.imageUrl = res.data.url;
// console.log(file);
// this.commonUpload(file);
}, },
// 上传前格式和图片大小限制 // 上传前格式和图片大小限制
beforeAvatarUpload(file) { beforeAvatarUpload(file) {
...@@ -524,7 +556,8 @@ export default { ...@@ -524,7 +556,8 @@ export default {
const params = { const params = {
id: this.form.id, id: this.form.id,
theme: this.form.theme, theme: this.form.theme,
file: this.form.file, // file: this.form.file,
file: this.uploadList.toString(),
}; };
console.log(params, "params"); console.log(params, "params");
editClubInfo(params) editClubInfo(params)
...@@ -543,7 +576,9 @@ export default { ...@@ -543,7 +576,9 @@ export default {
endTime: this.form.endTime, endTime: this.form.endTime,
fzr: this.form.fzr, fzr: this.form.fzr,
orgName: this.form.orgName, orgName: this.form.orgName,
file: this.form.file, // file: this.form.file,
file: this.uploadList.toString(),
remark: this.form.remark, remark: this.form.remark,
}; };
console.log(params, "params"); console.log(params, "params");
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
>不同意</el-button >不同意</el-button
> >
</div> </div>
<el-button @click="handleDelete(scope.row)" type="text" size="small" <el-button @click="handQuery(scope.row)" type="text" size="small"
>查看</el-button >查看</el-button
> >
</template> </template>
...@@ -221,14 +221,18 @@ export default { ...@@ -221,14 +221,18 @@ export default {
this.resetForm("form"); this.resetForm("form");
}, },
// 查看 // 查看
handleDelete(row) { handQuery(row) {
console.log(row, "查看row");
this.reset(); this.reset();
const ids = row.id || this.ids; const ids = row.id;
this.title = "社团报名审核";
this.dialogTableVisible = true;
// this.form = row;
listsigninInfo(ids).then((response) => { listsigninInfo(ids).then((response) => {
// console.log("response", response); console.log(ids, "id");
this.form = response.data; if (response.data && response.data.name) {
this.dialogTableVisible = true; this.form = response.data;
this.title = "社团报名审核"; }
}); });
}, },
// 同意 // 同意
......
...@@ -502,8 +502,11 @@ export default { ...@@ -502,8 +502,11 @@ export default {
} }
} }
}); });
}) })();
}, },
// 反馈结果按钮 // 反馈结果按钮
submitFormfk() { submitFormfk() {
this.$refs.formfk.validate((valid) => { this.$refs.formfk.validate((valid) => {
......
...@@ -144,12 +144,18 @@ export default { ...@@ -144,12 +144,18 @@ export default {
}; };
this.fetchStudioUseData(); // 重新发一次请求 this.fetchStudioUseData(); // 重新发一次请求
}, },
// changeStudio(value) {
// console.log('value', value);
// console.log('this.queryParams.startTime', this.queryParams.startTime);
// this.queryParams.studioId = value;
// this.fetchStudioUseData();
// },
changeStudio(value) { changeStudio(value) {
console.log('value', value); this.selectedTimeSlots = []; // 在切换录播室时清空已选时间段
console.log('this.queryParams.startTime', this.queryParams.startTime);
this.queryParams.studioId = value; this.queryParams.studioId = value;
this.fetchStudioUseData(); this.fetchStudioUseData();
}, },
changeDate() { changeDate() {
this.endTime = moment(this.queryParams.startTime).add(9, 'days') this.endTime = moment(this.queryParams.startTime).add(9, 'days')
// this.fetchData(); // this.fetchData();
...@@ -224,7 +230,7 @@ export default { ...@@ -224,7 +230,7 @@ export default {
if (selectObj != undefined) { if (selectObj != undefined) {
this.remark = true this.remark = true
this.selectedTimeSlots = this.selectedTimeSlots.filter(item => item.index != index) this.selectedTimeSlots = this.selectedTimeSlots.filter(item => item.index != index)
this.selectedTimeSlots.length == 0 ? this.remark = false : this.selectedTimeSlots this.selectedTimeSlots.length === 0 ? this.remark = false : this.selectedTimeSlots
} else { } else {
this.selectedTimeSlots.push({ day, index }) this.selectedTimeSlots.push({ day, index })
} }
......
...@@ -31,10 +31,10 @@ ...@@ -31,10 +31,10 @@
<!-- >新增--> <!-- >新增-->
<!-- </el-button>--> <!-- </el-button>-->
<!--</el-col>--> <!--</el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="danger" plain size="mini" icon="el-icon-delete" :disabled="!isMultiple" @click="handleDelete">删除 <el-button type="danger" plain size="mini" icon="el-icon-delete" :disabled="!isMultiple" @click="handleDelete">删除
</el-button> </el-button>
</el-col> </el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="info" plain size="mini" icon="el-icon-close" @click="handleClose">关闭 <el-button type="info" plain size="mini" icon="el-icon-close" @click="handleClose">关闭
</el-button> </el-button>
...@@ -138,7 +138,7 @@ export default { ...@@ -138,7 +138,7 @@ export default {
this.getList(); this.getList();
}, },
//根据组id查询组成员 //根据组id查询组成员
getList() { getList() {
this.loading = true; this.loading = true;
this.notificationId = this.$route.query.id; this.notificationId = this.$route.query.id;
console.log('this..notificationId', this.notificationId); console.log('this..notificationId', this.notificationId);
...@@ -188,7 +188,7 @@ export default { ...@@ -188,7 +188,7 @@ export default {
/** 关闭 */ /** 关闭 */
handleClose() { handleClose() {
this.$tab.closeOpenPage({ this.$tab.closeOpenPage({
path: '/schoolManage/schoolInfoPush' path: '/schoolManage/schoolNotice/school'
}); });
}, },
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
<el-tab-pane label="停用" :name="State.STOP"></el-tab-pane> <el-tab-pane label="停用" :name="State.STOP"></el-tab-pane>
</el-tabs> </el-tabs>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="标题" prop="title"> <el-form-item label="标题" prop="title">
<el-input size="small" v-model="queryParams.title" placeholder="请输入标题" clearable <el-input size="small" v-model="queryParams.title" placeholder="请输入标题" clearable
...@@ -364,7 +363,7 @@ export default { ...@@ -364,7 +363,7 @@ export default {
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
const groupId = this.form.groupId const groupId = this.form.groupId
this.form.group = groupId == '' ? '' : this.roleList.find(item => item.id == groupId).name this.form.groupName = groupId == '' ? '' : this.roleList.find(item => item.id == groupId).name
console.log(this.form.borrowBy); console.log(this.form.borrowBy);
this.throttle(() => { this.throttle(() => {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
......
...@@ -78,8 +78,6 @@ ...@@ -78,8 +78,6 @@
</el-table> </el-table>
<pagination v-show="totalcy > 0" :total="total" :page.sync="queryParam.pageNum" :limit.sync="queryParam.pageSize" <pagination v-show="totalcy > 0" :total="total" :page.sync="queryParam.pageNum" :limit.sync="queryParam.pageSize"
@pagination="getListcy" /> @pagination="getListcy" />
</el-row> </el-row>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSelectUser">确 定</el-button> <el-button type="primary" @click="handleSelectUser">确 定</el-button>
...@@ -167,7 +165,7 @@ export default { ...@@ -167,7 +165,7 @@ export default {
this.notificationId = this.$route.query.id; this.notificationId = this.$route.query.id;
console.log('this..notificationId', this.notificationId); console.log('this..notificationId', this.notificationId);
getUser(this.notificationId).then(response => { getUser(this.notificationId).then(response => {
this.userList = response.rows; this.userList = response.data;
console.log('this.userList', this.userList); console.log('this.userList', this.userList);
this.loading = false; this.loading = false;
}); });
...@@ -244,7 +242,7 @@ export default { ...@@ -244,7 +242,7 @@ export default {
// 返回按钮 // 返回按钮
handleClose() { handleClose() {
const obj = { path: "/system/role" }; const obj = { path: "/schoolManage/schoolNotice/personnelGrouping" };
this.$tab.closeOpenPage(obj); this.$tab.closeOpenPage(obj);
}, },
......
...@@ -316,6 +316,7 @@ import Treeselect from "@riophae/vue-treeselect"; ...@@ -316,6 +316,7 @@ import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import QRCode from "qrcodejs2"; // 生成二维码插件 import QRCode from "qrcodejs2"; // 生成二维码插件
import printJS from "print-js"; // 打印插件 import printJS from "print-js"; // 打印插件
import * as dd from 'dingtalk-jsapi';
export default { export default {
...@@ -621,58 +622,57 @@ export default { ...@@ -621,58 +622,57 @@ export default {
}, `设备台账_${Date.now()}.xlsx`) }, `设备台账_${Date.now()}.xlsx`)
}, },
//生成批量打印条码 //点击批量打印跳转
printBarcodes() { printBarcodes() {
this.printDialog = true const baseUrl = window.location.origin +'/printBarcodes';
this.printList = this.chooseList console.log(baseUrl, 'baseUrl');
this.$nextTick(() => { this.printList = this.chooseList;
this.chooseList.map((item, index) => { console.log(11, this.printList);
const dom = document.getElementById(`qrcode${index}`).lastElementChild // const url = `${baseUrl}/printBarcodes`;
if (dom == null) { console.log(baseUrl, 'baseUrl');
new QRCode(`qrcode${index}`, { const ids = this.electItem.join(',');
width: 150, console.log(ids, 'ids');
height: 150, const encodes = this.chooseList.map(item => item.encode).join(',');
text: item.encode, console.log(encodes, 'encodes');
}); const printListParam = encodeURIComponent(JSON.stringify(this.printList));
} dd.biz.util.openLink({
}) url: `${baseUrl}?ids=${ids}&encodes=${encodes}&printList=${printListParam}`,
onSuccess: () => {
console.log('跳转成功,准备打印');
// 打印条码
// this.printCode();
},
onFail: (error) => {
console.error('跳转失败', error);
}
});
},
this.printList.map((item, index) => {
const domPrint = document.getElementById(`print${index}`).lastElementChild
if (domPrint == null) {
new QRCode(`print${index}`, {
width: 60,
height: 60,
text: item.encode,
});
}
})
})
},
//打印条码 //打印条码
printCode() { // printCode() {
printJS({ // printJS({
printable: 'printBlock', // 标签元素id // printable: 'printBlock', // 标签元素id
type: 'html', // type: 'html',
targetStyles: ['*'], // targetStyles: ['*'],
font_size: '10px', // font_size: '10px',
style: ` // style: `
@media print{ // @media print{
@page{ // @page{
size:auto; // size:auto;
margin:4mm 0mm 0mm 0mm // margin:4mm 0mm 0mm 0mm
} // }
@page :first { // @page :first {
margin-top:2mm // margin-top:2mm
} // }
#printBlock{ // #printBlock{
display:block!important // display:block!important
} // }
}` // }`
}) // })
}, // },
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
......
<template>
<div>
<!-- 打印二维码 弹框部分 -->
<el-dialog title="打印条码预览" :visible.sync="printDialog" width="30%">
<div class="qrCodeList">
<div v-for="(item, index) in chooseList" :key="index">
<div class="titlShow">东营市二中</div>
<div class="flexBlock qrCode">
<div class="qrCodeLeft">
<div :id="'qrcode' + index"></div>
<div>{{ item.encode }}</div>
</div>
<div class="qrCodeRight">
<div>{{ item.equipmentName }}{{ item.model }}</div>
<div>地点:{{ item.place }}</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="printCode">打 印</el-button>
</div>
</el-dialog>
<!-- 打印二维码 弹框部分 -->
<!-- 隐藏二维码页面样式 -->
<div id="printBlock">
<div v-for="(item, index) in printList" :key="index" class="printBody">
<div class="titlePrint">东营市二中</div>
<div class="flexBlock printQrCode">
<div class="printLeft">
<div :id="'print' + index" class="printImg"></div>
<div>{{ item.encode }}</div>
</div>
<div class="printRight">
<div>{{ item.equipmentName }}{{ item.model }}</div>
<div>地点:{{ item.place }}</div>
</div>
</div>
<div style="page-break-after:always"></div>
</div>
</div>
<!-- 隐藏二维码页面样式 -->
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import QRCode from "qrcodejs2"; // 生成二维码插件
import printJS from "print-js"; // 打印插件
export default {
name: "index",
data() {
return {
loading: true, // 遮罩层
total: 0, // 总条数
deviceData: [], // 设备台账表格数据
title: "", // 弹出层标题
dialogVisible: false, // 添加或修改
queryParams: { // 查询参数
pageNum: 1,
pageSize: 10,
equipmentName: '',
classificationCode: undefined,
equipmentState: '',
affiliationType: '',
},
classificationOptions: [], // 分类编码树状结构
formModel: {},
nowOptionType: '', // 0 入库 1 编辑 2 查看
electItem: [], // 选中的数据
isDisabledBtn: true,
chooseList: [], //用户选择的table数据
printDialog: false, // 打印二维码预览
printList: [],
userList: [] //使用人列表
};
},
created() {
const ids = this.$route.query.ids;
const encodes = this.$route.query.encodes;
const printList = JSON.parse(decodeURIComponent(this.$route.query.printList));
this.printBarcodes(ids, encodes, printList);
},
methods: {
//生成批量打印条码
printBarcodes(ids, encodes, printList) {
this.printDialog = true;
console.log(ids, encodes);
this.printList = [...printList];
this.chooseList = [...this.printList];
console.log(this.chooseList, '122');
this.$nextTick(() => {
this.printList.map((item, index) => {
const domPrint = document.getElementById(`print${index}`).lastElementChild;
if (domPrint == null) {
new QRCode(`print${index}`, {
width: 60,
height: 60,
text: item.encode,
});
}
});
this.chooseList.map((item, index) => {
const dom = document.getElementById(`qrcode${index}`).lastElementChild;
if (dom == null) {
new QRCode(`qrcode${index}`, {
width: 150,
height: 150,
text: item.encode,
});
}
});
});
},
//打印条码
printCode() {
printJS({
printable: printBlock,
type: 'html',
targetStyles: ['*'],
font_size: '10px',
style: `
@media print{
@page{
size:auto;
margin:4mm 0mm 0mm 0mm
}
@page :first{
margin-top:2mm
}
#printBlock{
display:block!important
}
#tabnav, #pagenum {
display: none !important;
}
}`
});
}
},
}
</script>
<style scoped>
::v-deep .el-form-item,
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item--small .el-form-item__content {
width: 75%;
}
.qrCodeList {
max-height: 500px;
overflow-y: scroll;
}
.qrCode {
width: 300px;
font-size: 14px;
line-height: 30px;
align-items: flex-start;
margin: 0 auto 20px auto;
}
.qrCodeLeft {
text-align: center;
}
.qrCodeRight {
padding: 20px 0 20px 15px;
}
.titlShow {
font-weight: bold;
text-align: center;
padding-bottom: 10px;
font-size: 16px;
}
#printBlock {
display: none;
margin: 0px !important;
}
.printLeft {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
.printBody {
width: 250px;
}
.printQrCode {
font-size: 6px;
line-height: 20px;
align-items: center;
padding: 8px;
}
.printRight {
width: 60%;
padding: 0 5px;
}
.titlePrint {
font-size: 8px;
font-weight: bold;
text-align: center;
}
.printImg {
display: block;
}
</style>
...@@ -100,8 +100,8 @@ ...@@ -100,8 +100,8 @@
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="借用期限(天)" prop="deadline"> <el-form-item label="借用期限(天)" prop="deadline">
<el-input v-model="lendReturnForm.deadline" placeholder="请输入借用期限" <el-input v-model="lendReturnForm.deadline" placeholder="请输入借用期限" :disabled="nowType == 2 ? true : false"
:disabled="nowType == 2 ? true : false"></el-input> type="number"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
......
...@@ -473,7 +473,7 @@ export default { ...@@ -473,7 +473,7 @@ export default {
classValue: [{required: true, message: '班级不能为空', trigger: 'change'}], classValue: [{required: true, message: '班级不能为空', trigger: 'change'}],
teacherName: [{required: true, message: '班主任姓名不能为空', trigger: 'change'}], teacherName: [{required: true, message: '班主任姓名不能为空', trigger: 'change'}],
teacherTel: [{required: true, message: '班主任手机号不能为空', trigger: 'change'}], teacherTel: [{required: true, message: '班主任手机号不能为空', trigger: 'change'}],
houseName: [{required: true, message: '所在教学楼不能为空', trigger: 'change'}], // houseName: [{required: true, message: '所在教学楼不能为空', trigger: 'change'}],
classNum1: [{required: true, message: '高一班级数量不能为空', trigger: 'blur'}], classNum1: [{required: true, message: '高一班级数量不能为空', trigger: 'blur'}],
classNum2: [{required: true, message: '高二班级数量不能为空', trigger: 'blur'}], classNum2: [{required: true, message: '高二班级数量不能为空', trigger: 'blur'}],
classNum3: [{required: true, message: '高三班级数量不能为空', trigger: 'blur'}], classNum3: [{required: true, message: '高三班级数量不能为空', trigger: 'blur'}],
......
...@@ -619,7 +619,8 @@ import { uploadImage as commonUpload } from '@/api/common' ...@@ -619,7 +619,8 @@ import { uploadImage as commonUpload } from '@/api/common'
import { ExportType, Gender, Nations, Area } from '@/enums/common' import { ExportType, Gender, Nations, Area } from '@/enums/common'
import { getYearList } from '@/utils/utilLibrary/getYearList' import { getYearList } from '@/utils/utilLibrary/getYearList'
import { getNewYear } from "@/api/smartSchool/teachAffairAdministration/affairClassView"; import { getNewYear } from "@/api/smartSchool/teachAffairAdministration/affairClassView";
import * as dd from 'dingtalk-jsapi';
import { im_1_0 } from '@alicloud/dingtalk'
export default { export default {
name: 'AffairStudentManage', name: 'AffairStudentManage',
components: { ClassSelect, PicAvatar }, components: { ClassSelect, PicAvatar },
...@@ -921,17 +922,41 @@ export default { ...@@ -921,17 +922,41 @@ export default {
}) })
}, },
// 学籍证明 // 学籍证明
// studentProve(row) {
// this.$router.push({
// path: '/teachAffairAdministration/studentProve',
// query: {
// id: row.id,
// name: row.studentName,
// idCard: row.idCard,
// schoolNo: row.schoolNo
// }
// })
// },
studentProve(row) { studentProve(row) {
this.$router.push({ console.log('准备跳转');
path: '/teachAffairAdministration/studentProve', const baseUrl = window.location.origin; // 获取当前页面的协议、主机作为前缀URL
query: { // const baseUrl = window.location.protocol + '//' + window.location.host; // 获取当前页面的协议、主机作为前缀URL
id: row.id, console.log('im_1_0', baseUrl);
name: row.studentName, // const url = `http://localhost:1024/studentRegistra?id=${row.id}&name=${row.studentName}&idCard=${row.idCard}&schoolNo=${row.schoolNo}`;
idCard: row.idCard, const newURL = `${baseUrl}/studentRegistra?id=${encodeURIComponent(row.id)}&name=${encodeURIComponent(row.studentName)}&idCard=${encodeURIComponent(row.idCard)}&schoolNo=${encodeURIComponent(row.schoolNo)}`;
schoolNo: row.schoolNo dd.biz.util.openLink({
url: newURL,
// url: url,
onSuccess: () => {
console.log(newURL, 'newURL');
console.log('跳转成功,准备打印');
},
onFail: (err) => {
console.log('跳转失败', err);
} }
}) });
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function () { submitForm: function () {
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {
......
<template>
<div class="app-container">
<div style="width: 100%; display: flex; justify-content: center; flex-wrap: nowrap;">
<!-- <el-button type="primary" plain size="mini" @click="closeCurrentTab">关闭
</el-button> -->
<el-button type="primary" plain size="mini" @click="downloadProve">下载
</el-button>
<el-button type="primary" plain size="mini" @click="printTable">打印
</el-button>
</div>
<el-card :style="{ width: '850px', height: clientHeight, margin: '0 auto' }">
<div id="postFormContainer">
<br /><br />
<div style="display: block; font-weight: 600; font-size: 35px; text-align: center">学籍证明</div>
<br />
<span style="display: block; font-size: 25px; text-indent:50px; line-height: 40px">
{{ studentInfo.studentName }}同学,身份证号{{ studentInfo.idCard }} ,性别{{
studentInfo.sex
}}{{ studentInfo.birthday }}生,
省学籍辅号{{ studentInfo.schoolNo }},全国学籍号{{
studentInfo.nationalNumber
}},系东营市第二中学{{ studentInfo.enrollmentYear }}{{ studentInfo.classValue }}班学生,特此证明。
</span>
<br /><br /><br />
<div style="width: 100%; display:flex; justify-content: center; font-size:20px;">
<div>
<el-image style="width: 160px; height: 200px" :src="url"></el-image>
<br />
<div style="text-align: center">山东学籍管理</div>
</div>
</div>
<br /><br /><br />
<div style="position: relative; background: #1ab394">
<div style="position: absolute; right: 30px; font-size: 20px ">
<span>东营市第二中学</span>
<br /><br />
<span> {{ time }}</span>
</div>
</div>
</div>
</el-card>
</div>
</template>
<script>
import printJS from "print-js";
import { closeCurrentTab } from "@/utils/utilLibrary/routerBatch/routerBatch.js";
import { getStudent } from '@/api/smartSchool/teachAffairAdministration/affairStudentManage'
export default {
name: 'StudentProve',
data() {
return {
clientHeight: document.body.scrollHeight + 'px',
baseUrl: process.env.VUE_APP_BASE_API,
studentInfo: {},
url: '',
time: " ",
}
},
components: {},
methods: {
closeCurrentTab,
getImage() {
const studentId = this.$route.query.id;
getStudent(studentId).then((res) => {
this.studentInfo = res.data
if (res.data.sex == 0) {
this.studentInfo.sex = "男"
} else {
this.studentInfo.sex = "女"
}
if (res.data.birthday.charAt(5) == 0) {
if (res.data.birthday.charAt(8) == 0) {
this.studentInfo.birthday = res.data.birthday.slice(0, 4) + "年" + res.data.birthday.slice(6, 7) + "月" + res.data.birthday.slice(9, 10) + "日"
} else {
this.studentInfo.birthday = res.data.birthday.slice(0, 4) + "年" + res.data.birthday.slice(6, 7) + "月" + res.data.birthday.slice(8, 10) + "日"
}
} else {
if (res.data.birthday.charAt(8) == 0) {
this.studentInfo.birthday = res.data.birthday.slice(0, 4) + "年" + res.data.birthday.slice(5, 7) + "月" + res.data.birthday.slice(9, 10) + "日"
} else {
this.studentInfo.birthday = res.data.birthday.slice(0, 4) + "年" + res.data.birthday.slice(5, 7) + "月" + res.data.birthday.slice(8, 10) + "日"
}
}
this.url = this.baseUrl + this.studentInfo.avatar
console.log(this.url, 107)
});
},
// 打印
printTable() {
// 重置表单
printJS({
printable: 'postFormContainer',
targetStyles: ['*'],
type: "html",
})
},
/**
* 获取当前时间
*/
currentTime() {
var date = new Date();
var year = date.getFullYear(); //月份从0~11,所以加一
let month = date.getMonth();
console.log("month", month);
var dateArr = [
date.getMonth() + 1,
date.getDate(),
];
var strDate =
year + "年" + dateArr[0] + "月" + dateArr[1] + "日"
console.log("strDate", strDate);
return strDate
},
downloadProve() {
this.download(`/school/studentStatus/proofStatus/${this.$route.query.id}`, {}, `${this.studentInfo.studentName}.docx`)
},
},
created() {
this.getImage()
this.time = this.currentTime()
},
activated() {
this.getImage()
this.time = this.currentTime()
}
}
</script>
<style scoped></style>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="70px"> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="70px">
<el-form-item label="学年" prop="classYear"> <el-form-item label="学年" prop="classYear">
<el-date-picker v-model="queryForm.classYear" type="year" @change="getList" format="yyyy" value-format="yyyy" <el-date-picker v-model="queryForm.classYear" type="year" @change="getList" format="yyyy" value-format="yyyy"
placeholder="选择年度"></el-date-picker> placeholder="选择年度" :clearable="false"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
...@@ -155,7 +155,7 @@ export default { ...@@ -155,7 +155,7 @@ export default {
newYear() { newYear() {
getNewYear().then((res) => { getNewYear().then((res) => {
//数值类型转换成字符串 //数值类型转换成字符串
this.queryForm.classYear = res.schoolYear + '' ; this.queryForm.classYear = res.schoolYear + '';
console.log('this.queryForm.classYear', typeof this.queryForm.classYear); console.log('this.queryForm.classYear', typeof this.queryForm.classYear);
this.getList(); this.getList();
}); });
...@@ -172,7 +172,7 @@ export default { ...@@ -172,7 +172,7 @@ export default {
this.total = response.total; this.total = response.total;
}) })
.catch(error => { .catch(error => {
}); });
}, },
......
...@@ -247,7 +247,7 @@ export default { ...@@ -247,7 +247,7 @@ export default {
// 关闭页面 // 关闭页面
closePage() { closePage() {
this.$tab.closeOpenPage({ this.$tab.closeOpenPage({
path: '/teacherManage/teacherInforManage' path: '/schoolManage/teacherManage/teacherInforManage'
}) })
}, },
}, },
......
<template> <template>
<div class="app-container"> <div class="app-container">
<span>老师信息</span> <span>老师信息</span>
<hr/> <hr />
<br/> <br />
<el-form :model="techerInfoForm" ref="reftecherInfoForm" size="small" :inline="true" label-width="100px"> <el-form :model="techerInfoForm" ref="reftecherInfoForm" size="small" :inline="true" label-width="100px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="教师名称" clearable prop="teacherName"> <el-form-item label="教师名称" clearable prop="teacherName">
<el-input v-model="techerInfoForm.teacherName" disabled clearable @keyup.enter.native="handleQuery"/> <el-input v-model="techerInfoForm.teacherName" disabled clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="性别" prop="sex"> <el-form-item label="性别" prop="sex">
<el-select disabled v-model="techerInfoForm.sex" style="width: 100%" placeholder="请选择性别"> <el-select disabled v-model="techerInfoForm.sex" style="width: 100%" placeholder="请选择性别">
<el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -22,19 +22,19 @@ ...@@ -22,19 +22,19 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="教师电话" clearable prop="teacherTel"> <el-form-item label="教师电话" clearable prop="teacherTel">
<el-input disabled v-model="techerInfoForm.teacherTel" clearable @keyup.enter.native="handleQuery"/> <el-input disabled v-model="techerInfoForm.teacherTel" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="工作编号" clearable prop="teacherCode"> <el-form-item label="工作编号" clearable prop="teacherCode">
<el-input disabled v-model="techerInfoForm.teacherCode" clearable @keyup.enter.native="handleQuery"/> <el-input disabled v-model="techerInfoForm.teacherCode" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<span>履历信息</span> <span>履历信息</span>
<hr/> <hr />
<br/> <br />
<el-row> <el-row>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="resumeAdd">增加</el-button> <el-button type="primary" icon="el-icon-plus" size="mini" @click="resumeAdd">增加</el-button>
<el-button type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="resumeEdit">修改</el-button> <el-button type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="resumeEdit">修改</el-button>
...@@ -42,38 +42,35 @@ ...@@ -42,38 +42,35 @@
</el-button> </el-button>
<el-button type="info" size="mini" plain icon="el-icon-close" @click="closePage">关闭</el-button> <el-button type="info" size="mini" plain icon="el-icon-close" @click="closePage">关闭</el-button>
</el-row> </el-row>
<br/> <br />
<el-table stripe v-loading="loading" style="width: 100%" :data="resumeList" <el-table stripe v-loading="loading" style="width: 100%" :data="resumeList" @selection-change="handleSelectionChange">
@selection-change="handleSelectionChange"> <el-table-column type="selection" align="center" width="55" />
<el-table-column type="selection" align="center" width="55"/> <el-table-column label="序号" type="index" align="center" width="55" />
<el-table-column label="序号" type="index" align="center" width="55"/> <el-table-column label="学校/工作单位" width="width" align="center" prop="learnSchool" />
<el-table-column label="学校/工作单位" width="width" align="center" prop="learnSchool"/> <el-table-column label="履历开始时间" width="width" align="center" prop="learnStart"></el-table-column>
<el-table-column label="履历开始时间" :formatter="dateFormat" width="width" align="center" <el-table-column label="履历结束时间" width="width" align="center" prop="learnEnd"></el-table-column>
prop="learnStart"></el-table-column> <el-table-column label="备注" width="width" align="center" prop="remark" />
<el-table-column label="履历结束时间" :formatter="dateFormat" width="width" align="center"
prop="learnEnd"></el-table-column>
<el-table-column label="备注" width="width" align="center" prop="remark"/>
</el-table> </el-table>
<ExPagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" <ExPagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList"/> @pagination="getList" />
<!-- 履历编辑修改,新增弹窗--> <!-- 履历编辑修改,新增弹窗-->
<el-dialog :title="title" :visible.sync="openTeacherResume" width="800px"> <el-dialog :title="title" :visible.sync="openTeacherResume" width="800px">
<el-form :model="resumeForm" :rules="resumeRules" ref="refresumeForm" size="small" <el-form :model="resumeForm" :rules="resumeRules" ref="refresumeForm" size="small" style="width: 90%; margin: auto"
style="width: 90%; margin: auto" label-width="110px"> label-width="110px">
<el-form-item label="学校/工作单位" prop="learnSchool"> <el-form-item label="学校/工作单位" prop="learnSchool">
<el-input v-model="resumeForm.learnSchool" clearable style="width: 100%"/> <el-input v-model="resumeForm.learnSchool" clearable style="width: 100%" />
</el-form-item> </el-form-item>
<el-form-item label="履历开始时间" prop="learnStart"> <el-form-item label="履历开始时间" prop="learnStart">
<el-date-picker v-model="resumeForm.learnStart" type="date" style="width: 100%" <el-date-picker v-model="resumeForm.learnStart" type="date" style="width: 100%" placeholder="履历开始时间"
placeholder="履历开始时间"></el-date-picker> value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="履历结束时间" clearable prop="learnEnd"> <el-form-item label="履历结束时间" clearable prop="learnEnd">
<el-date-picker v-model="resumeForm.learnEnd" type="date" style="width: 100%" <el-date-picker v-model="resumeForm.learnEnd" type="date" style="width: 100%" placeholder="履历结束时间"
placeholder="履历结束时间"></el-date-picker> value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="备注" clearable prop="remark"> <el-form-item label="备注" clearable prop="remark">
<el-input type="textarea" :rows="3" style="width: 100%" v-model="resumeForm.remark" clearable/> <el-input type="textarea" :rows="3" style="width: 100%" v-model="resumeForm.remark" clearable />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div style="width: 300px; margin: auto"> <div style="width: 300px; margin: auto">
...@@ -87,8 +84,8 @@ ...@@ -87,8 +84,8 @@
</template> </template>
<script> <script>
import {getInform} from '@/api/smartSchool/teacherManage/teacherInformation' import { getInform } from '@/api/smartSchool/teacherManage/teacherInformation'
import {listResume, getOneResume, addResume, editResume, deleteResume} from '@/api/smartSchool/teacherManage/resume' import { listResume, getOneResume, addResume, editResume, deleteResume } from '@/api/smartSchool/teacherManage/resume'
// import message from "@/views/home/message/message"; // import message from "@/views/home/message/message";
export default { export default {
...@@ -126,9 +123,9 @@ export default { ...@@ -126,9 +123,9 @@ export default {
resumeForm: {}, resumeForm: {},
// 履历校验规则 // 履历校验规则
resumeRules: { resumeRules: {
learnSchool: [{required: true, message: '学校/工作单位不能为空', trigger: 'blur'}], learnSchool: [{ required: true, message: '学校/工作单位不能为空', trigger: 'blur' }],
learnStart: [{required: true, message: '履历开始时间不能为空', trigger: 'blur'}], learnStart: [{ required: true, message: '履历开始时间不能为空', trigger: 'blur' }],
learnEnd: [{required: true, message: '履历结束时间不能为空', trigger: 'blur'}] learnEnd: [{ required: true, message: '履历结束时间不能为空', trigger: 'blur' }]
} }
} }
}, },
...@@ -280,7 +277,7 @@ export default { ...@@ -280,7 +277,7 @@ export default {
// 关闭页面 // 关闭页面
closePage() { closePage() {
this.$tab.closeOpenPage({ this.$tab.closeOpenPage({
path: '/teacherManage/teacherInforManage' path: '/schoolManage/teacherManage/teacherInforManage'
}) })
} }
}, },
......
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
<!-- </el-col>--> <!-- </el-col>-->
<el-col :span="8" :offset="2"> <el-col :span="8" :offset="2">
<el-form-item label="登录账号" prop="phonenumber"> <el-form-item label="登录账号" prop="phonenumber">
<el-input v-model="form.phonenumber" disabled/> <el-input v-model="form.phonenumber" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" :offset="2"> <el-col :span="8" :offset="2">
<el-form-item label="用户名称" prop="userName"> <el-form-item label="用户名称" prop="userName">
<el-input v-model="form.userName" disabled/> <el-input v-model="form.userName" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -23,24 +23,24 @@ ...@@ -23,24 +23,24 @@
<h4 class="form-header h4">角色信息</h4> <h4 class="form-header h4">角色信息</h4>
<el-table v-loading="loading" :row-key="getRowKey" @row-click="clickRow" ref="table" <el-table v-loading="loading" :row-key="getRowKey" @row-click="clickRow" ref="table"
@selection-change="handleSelectionChange" :data="roles.slice((pageNum-1)*pageSize,pageNum*pageSize)"> @selection-change="handleSelectionChange" :data="roles.slice((pageNum - 1) * pageSize, pageNum * pageSize)">
<el-table-column type="selection" :reserve-selection="true" width="85"></el-table-column> <el-table-column type="selection" :reserve-selection="true" width="85"></el-table-column>
<el-table-column label="序号" type="index" align="center"> <el-table-column label="序号" type="index" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (pageNum - 1) * pageSize + scope.$index + 1 }}</span> <span>{{ (pageNum - 1) * pageSize + scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="角色编号" align="center" prop="roleId"/> <el-table-column label="角色编号" align="center" prop="roleId" />
<el-table-column label="角色名称" align="center" prop="roleName"/> <el-table-column label="角色名称" align="center" prop="roleName" />
<el-table-column label="权限字符" align="center" prop="roleKey"/> <el-table-column label="权限字符" align="center" prop="roleKey" />
<!-- <el-table-column label="创建时间" align="center" prop="createTime" width="180">--> <!-- <el-table-column label="创建时间" align="center" prop="createTime" width="180">-->
<!-- <template slot-scope="scope">--> <!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.createTime) }}</span>--> <!-- <span>{{ parseTime(scope.row.createTime) }}</span>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="pageNum" :limit.sync="pageSize"/> <pagination v-show="total > 0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" />
<el-form label-width="100px"> <el-form label-width="100px">
<el-form-item style="text-align: center;margin-left:-120px;margin-top:30px;"> <el-form-item style="text-align: center;margin-left:-120px;margin-top:30px;">
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
</template> </template>
<script> <script>
import {getAuthRole, updateAuthRole} from "@/api/system/user"; import { getAuthRole, updateAuthRole } from "@/api/system/user";
export default { export default {
name: "AuthRole", name: "AuthRole",
...@@ -109,14 +109,14 @@ export default { ...@@ -109,14 +109,14 @@ export default {
submitForm() { submitForm() {
const userId = this.form.userId; const userId = this.form.userId;
const roleIds = this.roleIds.join(","); const roleIds = this.roleIds.join(",");
updateAuthRole({userId: userId, roleIds: roleIds}).then((response) => { updateAuthRole({ userId: userId, roleIds: roleIds }).then((response) => {
this.$modal.msgSuccess("授权成功"); this.$modal.msgSuccess("授权成功");
this.close(); this.close();
}); });
}, },
/** 关闭按钮 */ /** 关闭按钮 */
close() { close() {
const obj = {path: "/teacherManage/teacherInforManage"}; const obj = { path: "/schoolManage/teacherManage/teacherInforManage" };
this.$tab.closeOpenPage(obj); this.$tab.closeOpenPage(obj);
}, },
}, },
......
<template> <template>
<div> <div>
<button @click="csToken">获取钉钉授权码</button> <!-- <button @click="csToken">获取钉钉授权码</button> -->
</div> </div>
</template> </template>
...@@ -21,9 +21,9 @@ export default { ...@@ -21,9 +21,9 @@ export default {
}, },
created() { created() {
// 钉钉code码,正式时打开 // 钉钉code码,正式时打开
// this.getCode() this.getCode()
// token,测试用 // token,测试用
this.csToken() // this.csToken()
}, },
methods: { methods: {
// 获取code // 获取code
...@@ -53,7 +53,7 @@ export default { ...@@ -53,7 +53,7 @@ export default {
if (res.token) { if (res.token) {
setToken(res.token) setToken(res.token)
this.$store.commit('SET_TOKEN', res.token) this.$store.commit('SET_TOKEN', res.token)
// this.$router.push({ path: '/index' }); this.$router.push({ path: '/index' });
// 判断当前用户是否已拉取完user_info信息 // 判断当前用户是否已拉取完user_info信息
this.$store.dispatch('GetInfo').then((res) => { this.$store.dispatch('GetInfo').then((res) => {
this.$store.dispatch('GenerateRoutes').then(accessRoutes => { this.$store.dispatch('GenerateRoutes').then(accessRoutes => {
......
...@@ -35,7 +35,7 @@ module.exports = { ...@@ -35,7 +35,7 @@ module.exports = {
host: "", host: "",
port: 1024, port: 1024,
hot: true, hot: true,
open: true, open: "chrome",
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
......
...@@ -84,8 +84,7 @@ public class SchoolNotificationGroupController extends BaseController { ...@@ -84,8 +84,7 @@ public class SchoolNotificationGroupController extends BaseController {
* 根据分组id查询人员信息 * 根据分组id查询人员信息
*/ */
@GetMapping("/getUserList/{notificationId}") @GetMapping("/getUserList/{notificationId}")
public TableDataInfo selectOne(@PathVariable("notificationId") Long notificationId) { public AjaxResult selectOne(@PathVariable("notificationId") Long notificationId) {
startPage();
LambdaQueryWrapper<SchoolNotificationUser> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolNotificationUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(SchoolNotificationUser::getNotificationId, notificationId); lqw.eq(SchoolNotificationUser::getNotificationId, notificationId);
List<SchoolNotificationUser> list = this.schoolNotificationUserService.list(lqw); List<SchoolNotificationUser> list = this.schoolNotificationUserService.list(lqw);
...@@ -94,7 +93,7 @@ public class SchoolNotificationGroupController extends BaseController { ...@@ -94,7 +93,7 @@ public class SchoolNotificationGroupController extends BaseController {
SysUser sysUser = sysUserService.selectUserById(data.getUserId()); SysUser sysUser = sysUserService.selectUserById(data.getUserId());
userList.add(sysUser); userList.add(sysUser);
}); });
return getDataTable(userList); return AjaxResult.success(userList);
} }
/** /**
...@@ -129,6 +128,10 @@ public class SchoolNotificationGroupController extends BaseController { ...@@ -129,6 +128,10 @@ public class SchoolNotificationGroupController extends BaseController {
SchoolNotificationUser date = new SchoolNotificationUser(); SchoolNotificationUser date = new SchoolNotificationUser();
date.setNotificationId(schoolNotificationUser.getNotificationId()); date.setNotificationId(schoolNotificationUser.getNotificationId());
date.setUserId(id); date.setUserId(id);
SchoolNotificationUser oneNotificationUser = schoolNotificationUserService.getOneNotificationUser(date);
if (null != oneNotificationUser){
throw new RuntimeException("当前用户存在分组中");
}
boolean save = this.schoolNotificationUserService.save(date); boolean save = this.schoolNotificationUserService.save(date);
} }
return AjaxResult.success(); return AjaxResult.success();
......
...@@ -31,6 +31,12 @@ public class SchoolMessagePush extends OurBaseEntity { ...@@ -31,6 +31,12 @@ public class SchoolMessagePush extends OurBaseEntity {
*/ */
private Long groupId; private Long groupId;
/**
* 接收人分组名称
*/
private String groupName;
/** 消息类型 */ /** 消息类型 */
@Excel(name = "消息类型",readConverterExp = "1=通知,2=公告") @Excel(name = "消息类型",readConverterExp = "1=通知,2=公告")
private String messageType; private String messageType;
......
...@@ -16,7 +16,9 @@ import com.ruoyi.common.annotation.Excel; ...@@ -16,7 +16,9 @@ import com.ruoyi.common.annotation.Excel;
public class SchoolOrganizationSignin extends OurBaseEntity public class SchoolOrganizationSignin extends OurBaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** id */
@Excel(name = "id")
private Long id;
/** 姓名 */ /** 姓名 */
@Excel(name = "姓名") @Excel(name = "姓名")
private String name; private String name;
......
...@@ -100,4 +100,5 @@ public class SchoolClass extends OurBaseEntity { ...@@ -100,4 +100,5 @@ public class SchoolClass extends OurBaseEntity {
"7=物理+地理+化学,8=物理+地理+生物,9=物理+化学+生物,10=物理+历史+地理,11=化学+政治+地理,12=化学+政治+历史" + "7=物理+地理+化学,8=物理+地理+生物,9=物理+化学+生物,10=物理+历史+地理,11=化学+政治+地理,12=化学+政治+历史" +
"13=化学+政治+生物,14=化学+历史+地理,15=化学+历史+生物,16=化学+地理+生物,17=生物+政治+地理,18=生物+历史+地理,19=生物+政治+历史,20=政治+历史+地理",width = 25) "13=化学+政治+生物,14=化学+历史+地理,15=化学+历史+生物,16=化学+地理+生物,17=生物+政治+地理,18=生物+历史+地理,19=生物+政治+历史,20=政治+历史+地理",width = 25)
private String chooseCourse; private String chooseCourse;
private String ddClassId;
} }
...@@ -36,4 +36,7 @@ public class SchoolGrade extends OurBaseEntity { ...@@ -36,4 +36,7 @@ public class SchoolGrade extends OurBaseEntity {
/** 级部名称 */ /** 级部名称 */
@Excel(name = "级部名称") @Excel(name = "级部名称")
private String gradeName; private String gradeName;
private String ddClassId;
} }
...@@ -147,6 +147,8 @@ public class SchoolStudent extends OurBaseEntity { ...@@ -147,6 +147,8 @@ public class SchoolStudent extends OurBaseEntity {
private String support; private String support;
//独生子女(0否 1是) //独生子女(0否 1是)
private String onlyChild; private String onlyChild;
//钉钉userId
private String ddUserId;
/* /*
* 校园一卡通 * 校园一卡通
......
...@@ -43,6 +43,9 @@ public interface SchoolClassMapper extends BaseMapper<SchoolClass> { ...@@ -43,6 +43,9 @@ public interface SchoolClassMapper extends BaseMapper<SchoolClass> {
* @return * @return
*/ */
List<SchoolClassVo> getUserClassByTeacher(Long teacherId); List<SchoolClassVo> getUserClassByTeacher(Long teacherId);
List<SchoolClassVo> selectSchoolClassSchoolYear(String schoolYear);
List<SchoolClassVo> getTeacherClass(@Param("teacherId") Long teacherId, List<SchoolClassVo> getTeacherClass(@Param("teacherId") Long teacherId,
@Param("schoolYear") int schoolYear); @Param("schoolYear") int schoolYear);
...@@ -63,4 +66,6 @@ public interface SchoolClassMapper extends BaseMapper<SchoolClass> { ...@@ -63,4 +66,6 @@ public interface SchoolClassMapper extends BaseMapper<SchoolClass> {
* 获取本级部下的班级 * 获取本级部下的班级
* */ * */
List<Long> getClassesIdByGradeId(Long gradeId); List<Long> getClassesIdByGradeId(Long gradeId);
public Long selectDdClassId(String ddClssId);
} }
...@@ -31,4 +31,8 @@ public interface SchoolGradeMapper extends BaseMapper<SchoolGrade> { ...@@ -31,4 +31,8 @@ public interface SchoolGradeMapper extends BaseMapper<SchoolGrade> {
public List<String> getYearList(); public List<String> getYearList();
List<SchoolGrade> selectNowSchoolGrade(); List<SchoolGrade> selectNowSchoolGrade();
public Long selectDdClassId(String ddClssId);
String selectUpToYear();
} }
...@@ -42,6 +42,8 @@ public interface SchoolStudentMapper extends BaseMapper<SchoolStudent> { ...@@ -42,6 +42,8 @@ public interface SchoolStudentMapper extends BaseMapper<SchoolStudent> {
*/ */
List<SchoolStudent> getMemberByTeacher(Long teacherId); List<SchoolStudent> getMemberByTeacher(Long teacherId);
Long getDdUserId(String foUserId);
/** /**
* 家长查看班级其他同学 * 家长查看班级其他同学
* @param studentId * @param studentId
......
...@@ -10,18 +10,22 @@ import yangtz.cs.liu.wechat.vo.userInfo.UserInfoVo; ...@@ -10,18 +10,22 @@ import yangtz.cs.liu.wechat.vo.userInfo.UserInfoVo;
import java.util.List; import java.util.List;
import java.util.Map;
@Mapper @Mapper
public interface SchoolStudentParentMapper extends BaseMapper<SchoolStudentParent> { public interface SchoolStudentParentMapper extends BaseMapper<SchoolStudentParent> {
List<SchoolStudentParent> queryList(SchoolStudentParent schoolStudentParent); List<SchoolStudentParent> queryList(SchoolStudentParent schoolStudentParent);
List<Map<String,Object>> getRoleTypeByPhoneNumber(String phonenumber);
/** /**
* 微信公众号登录查询(电话) * 微信公众号登录查询(电话)
* @param parentTelephone * @param parentTelephone
* @return * @return
*/ */
SchoolStudentParent selectUserByParentTel(@Param("parentTelephone") String parentTelephone, @Param("studentIdCard") String studentIdCard); SchoolStudentParent selectUserByParentTel(@Param("parentTelephone") String parentTelephone);
/** /**
* 公众号,获取用户信息 * 公众号,获取用户信息
......
...@@ -151,6 +151,12 @@ public class SchoolClassImpl extends ServiceImpl<SchoolClassMapper, SchoolClass> ...@@ -151,6 +151,12 @@ public class SchoolClassImpl extends ServiceImpl<SchoolClassMapper, SchoolClass>
return schoolClassMapper.getTeacherClass(teacherId,schoolYear); return schoolClassMapper.getTeacherClass(teacherId,schoolYear);
} }
@Override
public List<SchoolClassVo> selectSchoolClassSchoolYear(String schoolYear) {
return schoolClassMapper.selectSchoolClassSchoolYear(schoolYear);
}
@Override @Override
public void checkImport(List<SchoolClassDrVo> list) { public void checkImport(List<SchoolClassDrVo> list) {
//是否为空 //是否为空
...@@ -2427,4 +2433,8 @@ public class SchoolClassImpl extends ServiceImpl<SchoolClassMapper, SchoolClass> ...@@ -2427,4 +2433,8 @@ public class SchoolClassImpl extends ServiceImpl<SchoolClassMapper, SchoolClass>
} }
@Override
public Long selectDdClassId(String ddId) {
return schoolClassMapper.selectDdClassId(ddId);
}
} }
...@@ -8,15 +8,19 @@ import com.ruoyi.common.utils.DateUtils; ...@@ -8,15 +8,19 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.SysUserMapper;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import yangtz.cs.liu.campus.domain.schoolEquipment.SchoolCirculation; import yangtz.cs.liu.campus.domain.schoolEquipment.SchoolCirculation;
import yangtz.cs.liu.campus.domain.schoolEquipment.SchoolEquipmentLedger;
import yangtz.cs.liu.campus.mapper.schoolEquipment.CirculationMapper; import yangtz.cs.liu.campus.mapper.schoolEquipment.CirculationMapper;
import yangtz.cs.liu.campus.mapper.schoolEquipment.EquipmentLedgerMapper;
import yangtz.cs.liu.campus.service.schoolEquipment.ICirculationService; import yangtz.cs.liu.campus.service.schoolEquipment.ICirculationService;
import yangtz.cs.liu.campus.vo.schoolEquipment.SchoolCirculationVo; import yangtz.cs.liu.campus.vo.schoolEquipment.SchoolCirculationVo;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import yangtz.cs.liu.campus.vo.schoolEquipment.SchoolReceiveQuery; import yangtz.cs.liu.campus.vo.schoolEquipment.SchoolReceiveQuery;
...@@ -28,6 +32,8 @@ public class CirculationServiceImpl extends ServiceImpl<CirculationMapper, Schoo ...@@ -28,6 +32,8 @@ public class CirculationServiceImpl extends ServiceImpl<CirculationMapper, Schoo
private CirculationMapper circulationMapper; private CirculationMapper circulationMapper;
@Autowired @Autowired
private SysUserMapper sysUserMapper; private SysUserMapper sysUserMapper;
@Autowired
private EquipmentLedgerMapper equipmentLedgerMapper;
@Override @Override
public List<SchoolCirculationVo> getReturningEquipmentByadminId(SchoolReceiveQuery schoolReceiveQuery) { public List<SchoolCirculationVo> getReturningEquipmentByadminId(SchoolReceiveQuery schoolReceiveQuery) {
...@@ -100,6 +106,15 @@ public class CirculationServiceImpl extends ServiceImpl<CirculationMapper, Schoo ...@@ -100,6 +106,15 @@ public class CirculationServiceImpl extends ServiceImpl<CirculationMapper, Schoo
String userName = sysUserMapper.selectUserById(schoolCirculation.getReceivedById()).getUserName(); String userName = sysUserMapper.selectUserById(schoolCirculation.getReceivedById()).getUserName();
schoolCirculation.setReceivedBy(userName); schoolCirculation.setReceivedBy(userName);
} }
if (StringUtils.isNotNull(schoolCirculation.getReturnTime())){
if (schoolCirculation.getReturnTime().before(DateUtils.getNowDate()) || schoolCirculation.getReturnTime().equals(DateUtils.getNowDate())){
schoolCirculation.setReturnState("1");
SchoolEquipmentLedger schoolEquipmentLedger = new SchoolEquipmentLedger();
schoolEquipmentLedger.setId(schoolCirculation.getEquipmentId());
schoolEquipmentLedger.setIsLend("0");
equipmentLedgerMapper.updateById(schoolEquipmentLedger);
}
}
schoolCirculation.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName()); schoolCirculation.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName());
schoolCirculation.setCreateTime(DateUtils.getNowDate()); schoolCirculation.setCreateTime(DateUtils.getNowDate());
return circulationMapper.insert(schoolCirculation); return circulationMapper.insert(schoolCirculation);
...@@ -121,6 +136,15 @@ public class CirculationServiceImpl extends ServiceImpl<CirculationMapper, Schoo ...@@ -121,6 +136,15 @@ public class CirculationServiceImpl extends ServiceImpl<CirculationMapper, Schoo
String userName = sysUserMapper.selectUserById(schoolCirculation.getReceivedById()).getUserName(); String userName = sysUserMapper.selectUserById(schoolCirculation.getReceivedById()).getUserName();
schoolCirculation.setReceivedBy(userName); schoolCirculation.setReceivedBy(userName);
} }
if (StringUtils.isNotNull(schoolCirculation.getReturnTime())){
if (schoolCirculation.getReturnTime().before(DateUtils.getNowDate()) || schoolCirculation.getReturnTime().equals(DateUtils.getNowDate())){
schoolCirculation.setReturnState("1");
SchoolEquipmentLedger schoolEquipmentLedger = new SchoolEquipmentLedger();
schoolEquipmentLedger.setId(schoolCirculation.getEquipmentId());
schoolEquipmentLedger.setIsLend("0");
equipmentLedgerMapper.updateById(schoolEquipmentLedger);
}
}
schoolCirculation.setUpdateBy(SecurityUtils.getLoginUser().getUser().getUserName()); schoolCirculation.setUpdateBy(SecurityUtils.getLoginUser().getUser().getUserName());
schoolCirculation.setUpdateTime(DateUtils.getNowDate()); schoolCirculation.setUpdateTime(DateUtils.getNowDate());
return circulationMapper.updateById(schoolCirculation); return circulationMapper.updateById(schoolCirculation);
......
...@@ -20,6 +20,7 @@ import yangtz.cs.liu.campus.mapper.schoolLab.SchoolTeacherExperimentApplyMapper; ...@@ -20,6 +20,7 @@ import yangtz.cs.liu.campus.mapper.schoolLab.SchoolTeacherExperimentApplyMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherExperimentApply; import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherExperimentApply;
import yangtz.cs.liu.campus.mapper.schoolLab.SchoollTeacherExperimentApplyLabsMapper; import yangtz.cs.liu.campus.mapper.schoolLab.SchoollTeacherExperimentApplyLabsMapper;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolTeacherExperimentApplyService; import yangtz.cs.liu.campus.service.schoolLab.ISchoolTeacherExperimentApplyService;
import yangtz.cs.liu.campus.service.schoolLab.ISchoollTeacherExperimentApplyLabsService;
import yangtz.cs.liu.campus.vo.schoolLab.SchoolTeacherExperimentApplyVo; import yangtz.cs.liu.campus.vo.schoolLab.SchoolTeacherExperimentApplyVo;
/** /**
...@@ -33,7 +34,8 @@ public class SchoolTeacherExperimentApplyServiceImpl extends ServiceImpl<SchoolT ...@@ -33,7 +34,8 @@ public class SchoolTeacherExperimentApplyServiceImpl extends ServiceImpl<SchoolT
{ {
@Autowired @Autowired
private SchoolTeacherExperimentApplyMapper schoolTeacherExperimentApplyMapper; private SchoolTeacherExperimentApplyMapper schoolTeacherExperimentApplyMapper;
@Autowired
private ISchoollTeacherExperimentApplyLabsService schoollTeacherExperimentApplyLabsService;
/** /**
* 查询教师个人实验申请 * 查询教师个人实验申请
* *
...@@ -43,7 +45,12 @@ public class SchoolTeacherExperimentApplyServiceImpl extends ServiceImpl<SchoolT ...@@ -43,7 +45,12 @@ public class SchoolTeacherExperimentApplyServiceImpl extends ServiceImpl<SchoolT
@Override @Override
public SchoolTeacherExperimentApplyVo selectSchoolTeacherExperimentApplyById(Long id) public SchoolTeacherExperimentApplyVo selectSchoolTeacherExperimentApplyById(Long id)
{ {
return schoolTeacherExperimentApplyMapper.selectSchoolTeacherExperimentApplyById(id); SchoolTeacherExperimentApplyVo schoolTeacherExperimentApplyVo = schoolTeacherExperimentApplyMapper.selectSchoolTeacherExperimentApplyById(id);
LambdaQueryWrapper<SchoolTeacherExperimentApplyLabs> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SchoolTeacherExperimentApplyLabs::getTeacherExperimentApplyId,schoolTeacherExperimentApplyVo.getId());
List<SchoolTeacherExperimentApplyLabs> schoolTeacherExperimentApplyLabs = schoollTeacherExperimentApplyLabsService.list(wrapper);
schoolTeacherExperimentApplyVo.setSchoolTeacherExperimentApplyLabsList(schoolTeacherExperimentApplyLabs);
return schoolTeacherExperimentApplyVo;
} }
/** /**
...@@ -55,7 +62,14 @@ public class SchoolTeacherExperimentApplyServiceImpl extends ServiceImpl<SchoolT ...@@ -55,7 +62,14 @@ public class SchoolTeacherExperimentApplyServiceImpl extends ServiceImpl<SchoolT
@Override @Override
public List<SchoolTeacherExperimentApplyVo> selectSchoolTeacherExperimentApplyList(SchoolTeacherExperimentApplyVo schoolTeacherExperimentApplyVo) public List<SchoolTeacherExperimentApplyVo> selectSchoolTeacherExperimentApplyList(SchoolTeacherExperimentApplyVo schoolTeacherExperimentApplyVo)
{ {
return schoolTeacherExperimentApplyMapper.selectSchoolTeacherExperimentApplyList(schoolTeacherExperimentApplyVo); List<SchoolTeacherExperimentApplyVo> schoolTeacherExperimentApplyVos = schoolTeacherExperimentApplyMapper.selectSchoolTeacherExperimentApplyList(schoolTeacherExperimentApplyVo);
for ( SchoolTeacherExperimentApplyVo date : schoolTeacherExperimentApplyVos){
LambdaQueryWrapper<SchoolTeacherExperimentApplyLabs> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SchoolTeacherExperimentApplyLabs::getTeacherExperimentApplyId,date.getId());
List<SchoolTeacherExperimentApplyLabs> schoolTeacherExperimentApplyLabs = schoollTeacherExperimentApplyLabsService.list(wrapper);
date.setSchoolTeacherExperimentApplyLabsList(schoolTeacherExperimentApplyLabs);
}
return schoolTeacherExperimentApplyVos;
} }
@Override @Override
......
...@@ -238,4 +238,14 @@ public class ISchoolGradeImpl extends ServiceImpl<SchoolGradeMapper, SchoolGrade ...@@ -238,4 +238,14 @@ public class ISchoolGradeImpl extends ServiceImpl<SchoolGradeMapper, SchoolGrade
public int isNewSchoolYear() { public int isNewSchoolYear() {
return schoolGradeMapper.isNewSchoolYear(); return schoolGradeMapper.isNewSchoolYear();
} }
@Override
public Long selectDdClassId(String ddId) {
return schoolGradeMapper.selectDdClassId(ddId);
}
@Override
public String selectUpToYear() {
return schoolGradeMapper.selectUpToYear();
}
} }
...@@ -26,6 +26,7 @@ import yangtz.cs.liu.wechat.vo.userInfo.UserInfoVo; ...@@ -26,6 +26,7 @@ import yangtz.cs.liu.wechat.vo.userInfo.UserInfoVo;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull; import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull;
import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNull; import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNull;
...@@ -67,6 +68,14 @@ public class SchoolStudentParentServiceImpl extends ServiceImpl<SchoolStudentPar ...@@ -67,6 +68,14 @@ public class SchoolStudentParentServiceImpl extends ServiceImpl<SchoolStudentPar
return schoolStudentParentMapper.selectList(lqw); return schoolStudentParentMapper.selectList(lqw);
} }
public List<Map<String,Object>> getRoleTypeByPhoneNumber(String phonenumber){
return schoolStudentParentMapper.getRoleTypeByPhoneNumber(phonenumber);
}
/** /**
* 公众号,获取用户信息 * 公众号,获取用户信息
* *
......
...@@ -419,6 +419,10 @@ public class SchoolStudentServiceImpl extends ServiceImpl<SchoolStudentMapper, S ...@@ -419,6 +419,10 @@ public class SchoolStudentServiceImpl extends ServiceImpl<SchoolStudentMapper, S
return schoolStudentMapper.getMemberByTeacher(teacherId); return schoolStudentMapper.getMemberByTeacher(teacherId);
} }
public Long getDdUserId(String foUserId ){
return schoolStudentMapper.getDdUserId(foUserId);
}
/** /**
* 家长查看班级其他同学 * 家长查看班级其他同学
* *
......
...@@ -39,6 +39,9 @@ public interface ISchoolClassService extends IService<SchoolClass> { ...@@ -39,6 +39,9 @@ public interface ISchoolClassService extends IService<SchoolClass> {
List<SchoolClassVo> getTeacherClass(Long teacherId); List<SchoolClassVo> getTeacherClass(Long teacherId);
List<SchoolClassVo> selectSchoolClassSchoolYear(String schoolYear);
// /** // /**
// * 校验 // * 校验
// * @param list // * @param list
...@@ -88,4 +91,8 @@ public interface ISchoolClassService extends IService<SchoolClass> { ...@@ -88,4 +91,8 @@ public interface ISchoolClassService extends IService<SchoolClass> {
/**批量新增班级*/ /**批量新增班级*/
int batchAdd(ClassBatchVo vo); int batchAdd(ClassBatchVo vo);
Long selectDdClassId(String ddId);
} }
...@@ -25,5 +25,7 @@ public interface ISchoolGradeService extends IService<SchoolGrade> { ...@@ -25,5 +25,7 @@ public interface ISchoolGradeService extends IService<SchoolGrade> {
//获取最新学年 //获取最新学年
int isNewSchoolYear(); int isNewSchoolYear();
Long selectDdClassId(String ddId);
String selectUpToYear();
} }
...@@ -57,6 +57,13 @@ public interface ISchoolStudentService extends IService<SchoolStudent> { ...@@ -57,6 +57,13 @@ public interface ISchoolStudentService extends IService<SchoolStudent> {
* @param teacherId * @param teacherId
* @return * @return
*/ */
Long getDdUserId(String foUserId);
/**
* 根据dduserId查找id
* @param teacherId
* @return
*/
List<SchoolStudent> getMemberByTeacher(Long teacherId); List<SchoolStudent> getMemberByTeacher(Long teacherId);
/** /**
......
...@@ -301,4 +301,5 @@ public class SchoolStudentVO { ...@@ -301,4 +301,5 @@ public class SchoolStudentVO {
//教务-学生管理-学籍表-所在年级 //教务-学生管理-学籍表-所在年级
private String currentGrade; private String currentGrade;
private String ddUserId;
} }
...@@ -5,10 +5,17 @@ package yangtz.cs.liu.dingding.config; ...@@ -5,10 +5,17 @@ package yangtz.cs.liu.dingding.config;
*/ */
public class Constant { public class Constant {
//测试 事件回调配置
public static final String AES_TOKEN="jGt2S7Kqh475czbgxtr7j1cQsXHWYia"; public static final String AES_TOKEN="jGt2S7Kqh475czbgxtr7j1cQsXHWYia";
public static final String AES_KEY="hz6q2qTgLGD5SHWLvVddOm9HfvrKgKBcDCCf145egyi"; public static final String AES_KEY="hz6q2qTgLGD5SHWLvVddOm9HfvrKgKBcDCCf145egyi";
public static final String OWNER_KEY = "dingclpf8qoxvinhksyh"; public static final String OWNER_KEY = "dingclpf8qoxvinhksyh";
//正式 事件回调配置
// public static final String AES_TOKEN="awLoV2xJlrg6xUK3wQIF88HhVuSVS7Tmpb5MKFI1j7DaLKcn";
//
// public static final String AES_KEY="xGO08pQerwFgBOcabx2eUxLUrAOwa5Q2FJtdylY7ksf";
//
// public static final String OWNER_KEY = "dingggqchzyvxm9e6e7v";
} }
...@@ -78,7 +78,6 @@ public class DdAppLoginController { ...@@ -78,7 +78,6 @@ public class DdAppLoginController {
OapiUserGetuserinfoResponse response; OapiUserGetuserinfoResponse response;
try { try {
response = client.execute(request, access_token); response = client.execute(request, access_token);
System.out.println("-------------"+request);
} catch (ApiException e) { } catch (ApiException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
......
...@@ -6,8 +6,10 @@ import com.dingtalk.api.DefaultDingTalkClient; ...@@ -6,8 +6,10 @@ import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiUserGetuserinfoRequest; import com.dingtalk.api.request.OapiUserGetuserinfoRequest;
import com.dingtalk.api.request.OapiV2UserGetRequest; import com.dingtalk.api.request.OapiV2UserGetRequest;
import com.dingtalk.api.request.OapiV2UserGetuserinfoRequest;
import com.dingtalk.api.response.OapiUserGetuserinfoResponse; import com.dingtalk.api.response.OapiUserGetuserinfoResponse;
import com.dingtalk.api.response.OapiV2UserGetResponse; import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.dingtalk.api.response.OapiV2UserGetuserinfoResponse;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SchoolTeacher; import com.ruoyi.common.core.domain.entity.SchoolTeacher;
...@@ -55,40 +57,40 @@ public class DdLoginController { ...@@ -55,40 +57,40 @@ public class DdLoginController {
@RequestMapping(value = "/login", method = RequestMethod.GET) @RequestMapping(value = "/login", method = RequestMethod.GET)
public AjaxResult login (@RequestParam("code") String code) { public AjaxResult login (@RequestParam("code") String code) {
AjaxResult ajaxResult = new AjaxResult(); AjaxResult ajaxResult = new AjaxResult();
// // 获取access_token,注意正式代码要有异常流处理 // 获取access_token,注意正式代码要有异常流处理
// String access_token= accessTokenUtils.getToken(); String access_token= accessTokenUtils.getToken();
// // 获取用户信息 // 获取用户信息
// DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getuserinfo"); DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getuserinfo");
// OapiUserGetuserinfoRequest request = new OapiUserGetuserinfoRequest(); OapiUserGetuserinfoRequest request = new OapiUserGetuserinfoRequest();
// request.setCode(code); request.setCode(code);
// request.setHttpMethod("GET"); request.setHttpMethod("GET");
// OapiUserGetuserinfoResponse response; OapiUserGetuserinfoResponse response;
// try { try {
// response = client.execute(request, access_token); response = client.execute(request, access_token);
// } catch (ApiException e) { } catch (ApiException e) {
// // TODO Auto-generated catch block // TODO Auto-generated catch block
// e.printStackTrace(); e.printStackTrace();
// return null; return null;
// } }
// // 查询得到当前用户的userId // 查询得到当前用户的userId
// // 获得到userId之后应用应该处理应用自身的登录会话管理(session),避免后续的业务交互(前端到应用服务端)每次都要重新获取用户身份,提升用户体验 // 获得到userId之后应用应该处理应用自身的登录会话管理(session),避免后续的业务交互(前端到应用服务端)每次都要重新获取用户身份,提升用户体验
// String userId = response.getUserid(); String userId = response.getUserid();
// if (StringUtils.isEmpty(userId)){ if (StringUtils.isEmpty(userId)){
// throw new ServiceException("免登码已失效,请重新获取"); throw new ServiceException("免登码已失效,请重新获取");
// } }
// //获取用户详细信息 //获取用户详细信息
// Map<String, Object> userInfo = getUserInfo(userId, access_token); Map<String, Object> userInfo = getUserInfo(userId, access_token);
// String phone = (String) userInfo.get("phone"); String phone = (String) userInfo.get("phone");
// String unionId = (String) userInfo.get("unionId"); String unionId = (String) userInfo.get("unionId");
SchoolTeacher schoolTeacher = schoolTeacherService.selectTeacherByPhone("15888888888"); SchoolTeacher schoolTeacher = schoolTeacherService.selectTeacherByPhone(phone);
if (StringUtils.isNull(schoolTeacher)){ if (StringUtils.isNull(schoolTeacher)){
throw new ServiceException("未查询到该用户信息"); throw new ServiceException("未查询到该用户信息");
} }
Long userId = schoolTeacher.getId(); Long userId1 = schoolTeacher.getId();
SysUser sysUser = sysUserService.selectUserById(userId); SysUser sysUser = sysUserService.selectUserById(userId1);
//更新钉钉用户iid和unionId //更新钉钉用户iid和unionId
// sysUser.setUnionId(unionId); sysUser.setUnionId(unionId);
// schoolTeacherService.updateDdUserId(sysUser, userId); schoolTeacherService.updateDdUserId(sysUser, userId);
String token = loginService.loginNew(sysUser); String token = loginService.loginNew(sysUser);
ajaxResult.put(Constants.TOKEN, token); ajaxResult.put(Constants.TOKEN, token);
return ajaxResult; return ajaxResult;
......
package yangtz.cs.liu.dingding.controller;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/dd/school/dept")
public class DdSchoolDeptController {
@GetMapping("/getDeptList")
public TableDataInfo getDeptList(){
return null;
}
}
package yangtz.cs.liu.dingding.controller.dingDept;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import yangtz.cs.liu.dingding.service.impl.dingDept.DdDeptServcieImpl;
@RestController
@RequestMapping("/dd/school/dept")
public class DdDeptController extends BaseController {
@Autowired
private DdDeptServcieImpl ddDeptServcie;
/**
* 获取钉钉全部部门列表
*/
@GetMapping("/getDeptList")
public TableDataInfo getDeptList(){
return getDataTable(ddDeptServcie.getDeptList());
}
/**
* 下拉钉钉部门列表到系统
*/
@PostMapping("/addDdDept")
public AjaxResult addDdDept(){
return toAjax(ddDeptServcie.addDdDept());
}
/**
* 同步钉钉部门列表
*/
@GetMapping("/syncDdDept")
public AjaxResult syncDdDept(){
return AjaxResult.success(ddDeptServcie.syncDdDept());
}
}
...@@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSON; ...@@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import yangtz.cs.liu.dingding.config.Constant; import yangtz.cs.liu.dingding.config.Constant;
import yangtz.cs.liu.dingding.utils.AccessTokenUtils; import yangtz.cs.liu.dingding.service.impl.dingDept.DdDeptServcieImpl;
import yangtz.cs.liu.dingding.service.impl.dingUser.DdUserServiceImpl;
import yangtz.cs.liu.dingding.utils.DingCallbackCrypto; import yangtz.cs.liu.dingding.utils.DingCallbackCrypto;
import java.util.Map; import java.util.Map;
...@@ -20,6 +22,11 @@ public class DingEventController { ...@@ -20,6 +22,11 @@ public class DingEventController {
private static Logger log = LoggerFactory.getLogger(DingEventController.class); private static Logger log = LoggerFactory.getLogger(DingEventController.class);
@Autowired
private DdDeptServcieImpl ddDeptServcie;
@Autowired
private DdUserServiceImpl ddUserService;
@PostMapping("/callBack") @PostMapping("/callBack")
public Map<String, String> callBack( public Map<String, String> callBack(
@RequestParam(value = "msg_signature", required = false) String msg_signature, @RequestParam(value = "msg_signature", required = false) String msg_signature,
...@@ -47,12 +54,26 @@ public class DingEventController { ...@@ -47,12 +54,26 @@ public class DingEventController {
// 测试回调url的正确性 // 测试回调url的正确性
log.info("测试回调url的正确性"); log.info("测试回调url的正确性");
} else if ("user_add_org".equals(eventType)) { } else if ("user_add_org".equals(eventType)) {
// 处理通讯录用户增加事件 // 处理通讯录用户增加
log.info("发生了:" + eventType + "事件"); ddUserService.addUser(eventJson);
} else if ("user_modify_org".equals(eventType)) {
// 处理通讯录用户修改
ddUserService.updateUser(eventJson);
} else if ("user_leave_org".equals(eventType)) {
// 处理通讯录用户离职
ddUserService.leaveUser(eventJson);
} else if ("org_dept_create".equals(eventType)){
// 处理通讯录企业部门创建
ddDeptServcie.ddDeptCreate(eventJson);
} else if ("org_dept_modify".equals(eventType)){
// 处理通讯录企业部门修改
ddDeptServcie.ddDeptUpdate(eventJson);
} else if ("org_dept_remove".equals(eventType)){
// 处理通讯录企业部门删除
ddDeptServcie.ddDeptDelete(eventJson);
} else if ("bpms_instance_change".equals(eventType)){ } else if ("bpms_instance_change".equals(eventType)){
// 处理审批实例事件 // 处理审批实例事件
processInstance(eventJson); log.info("发生了:" + eventType + "事件");
} else if ("bpms_task_change".equals(eventType)){ } else if ("bpms_task_change".equals(eventType)){
// 处理审批任务事件 // 处理审批任务事件
eventJson.get(""); eventJson.get("");
...@@ -70,16 +91,4 @@ public class DingEventController { ...@@ -70,16 +91,4 @@ public class DingEventController {
} }
return null; return null;
} }
/**
* 处理审批实例事件
*/
public void processInstance(JSONObject eventJson){
//获取审批类型
String type = eventJson.getString("type");
//判断审批实例是否正常结束
if ("finish".equals(type)){
}
}
} }
...@@ -4,10 +4,8 @@ import com.ruoyi.common.core.controller.BaseController; ...@@ -4,10 +4,8 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping; import yangtz.cs.liu.dingding.service.impl.dingUser.DdUserServiceImpl;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import yangtz.cs.liu.dingding.utils.DingUserUtils; import yangtz.cs.liu.dingding.utils.DingUserUtils;
/** /**
...@@ -18,42 +16,38 @@ import yangtz.cs.liu.dingding.utils.DingUserUtils; ...@@ -18,42 +16,38 @@ import yangtz.cs.liu.dingding.utils.DingUserUtils;
public class DingUserController extends BaseController { public class DingUserController extends BaseController {
@Autowired @Autowired
private DingUserUtils dingUserUtils; private DdUserServiceImpl ddUserService;
/** /**
* 获取部门用户基础信息 * 获取钉钉所有用户id
*/ */
@GetMapping("/getUserByDeptId") @GetMapping("/getDdUserListAll")
public TableDataInfo getUserByDeptId(@RequestParam("deptId") Long deptId, public TableDataInfo getDdUserListAll(){
@RequestParam("cursor") Long cursor, return getDataTable(ddUserService.getDdUserListAll());
@RequestParam("size") Long size,
@RequestParam("orderField") String orderField,
@RequestParam("containAccessLimit") String containAccessLimit,
@RequestParam("language") String language)
{
return getDataTable(dingUserUtils.getUserByDeptId(deptId, cursor, size, orderField, containAccessLimit, language));
} }
/** /**
* 获取部门用户完整信息 * 下拉钉钉用户到系统
*/ */
@GetMapping("/getUserInfoByDeptId") @PostMapping("/addDdUser")
public TableDataInfo getUserInfoByDeptId(@RequestParam("deptId") Long deptId, public AjaxResult addDdUser(){
@RequestParam("cursor") Long cursor, return toAjax(ddUserService.addDdUser());
@RequestParam("size") Long size,
@RequestParam("orderField") String orderField,
@RequestParam("containAccessLimit") String containAccessLimit,
@RequestParam("language") String language)
{
return getDataTable(dingUserUtils.getUserInfoByDeptId(deptId, cursor, size, orderField, containAccessLimit, language));
} }
/** /**
* 获取用户详情 * 用户表数据同步到教师表
* @return
*/ */
@GetMapping("/getUser") @PostMapping("/addDdTeacher")
public AjaxResult getUser(@RequestParam("userId") String userId){ public AjaxResult addDdTeacher(){
return AjaxResult.success(dingUserUtils.getUser(userId)); return toAjax(ddUserService.addDdTeacher());
} }
/**
* 同步钉钉用户列表
*/
@GetMapping("/syncDdUser")
public AjaxResult syncDdUser(){
return AjaxResult.success(ddUserService.syncDdUser());
}
} }
package yangtz.cs.liu.dingding.domain.dingDept;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.List;
public class SysDdDept extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 部门ID */
private Long deptId;
/** 父部门ID */
private Long parentId;
/** 祖级列表 */
private String ancestors;
/** 部门名称 */
private String deptName;
/** 显示顺序 */
private Long orderNum;
/** 负责人 */
private String leader;
/** 联系电话 */
private String phone;
/** 邮箱 */
private String email;
/** 部门状态:0正常,1停用 */
private String status;
/** 钉钉部门id */
private Long ddDeptId;
/** 钉钉父部门id */
private Long ddParentId;
/** 删除标志(0代表存在 2代表删除) */
private String delFlag;
/** 父部门名称 */
private String parentName;
/** 子部门 */
private List<SysDdDept> children = new ArrayList<SysDdDept>();
public Long getDdDeptId() {
return ddDeptId;
}
public void setDdDeptId(Long ddDeptId) {
this.ddDeptId = ddDeptId;
}
public Long getDdParentId() {
return ddParentId;
}
public void setDdParentId(Long ddParentId) {
this.ddParentId = ddParentId;
}
public Long getDeptId()
{
return deptId;
}
public void setDeptId(Long deptId)
{
this.deptId = deptId;
}
public Long getParentId()
{
return parentId;
}
public void setParentId(Long parentId)
{
this.parentId = parentId;
}
public String getAncestors()
{
return ancestors;
}
public void setAncestors(String ancestors)
{
this.ancestors = ancestors;
}
@NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
public String getDeptName()
{
return deptName;
}
public void setDeptName(String deptName)
{
this.deptName = deptName;
}
@NotNull(message = "显示顺序不能为空")
public Long getOrderNum() {
return orderNum;
}
public void setOrderNum(Long orderNum) {
this.orderNum = orderNum;
}
public String getLeader()
{
return leader;
}
public void setLeader(String leader)
{
this.leader = leader;
}
@Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
public String getPhone()
{
return phone;
}
public void setPhone(String phone)
{
this.phone = phone;
}
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
public String getDelFlag()
{
return delFlag;
}
public void setDelFlag(String delFlag)
{
this.delFlag = delFlag;
}
public String getParentName()
{
return parentName;
}
public void setParentName(String parentName)
{
this.parentName = parentName;
}
public List<SysDdDept> getChildren() {
return children;
}
public void setChildren(List<SysDdDept> children) {
this.children = children;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("deptId", getDeptId())
.append("parentId", getParentId())
.append("ancestors", getAncestors())
.append("deptName", getDeptName())
.append("orderNum", getOrderNum())
.append("leader", getLeader())
.append("phone", getPhone())
.append("email", getEmail())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}
package yangtz.cs.liu.dingding.domain.dingGrade;
import com.core.domain.OurBaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class SchoolGradeMentorCopy extends OurBaseEntity {
/** 老师主键 */
@NotNull(message = "级部教师不能为空")
private Long teacherId;
/** 年级级部主键 */
private Long gradeId;
/** 教师任职开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startTime;
/** 教师任职结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
/** 类型(1年级部,2学科组长) */
private String type;
/** 职务 */
private String teacherPost;
/** 学科组(1物理学科组,2化学学科组,3生物学科组) */
private String subGroup;
}
package yangtz.cs.liu.dingding.domain.dingUser;
import lombok.Data;
@Data
public class SysDdUserDept {
private Long userId;
private Long deptId;
}
package yangtz.cs.liu.dingding.domain.schoolTeacher;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
@Data
public class SysDdTeacher extends BaseEntity
{
private static final long serialVersionUID = 1L;
private Long id;
/**
* 照片路径
*/
@Excel(name = "照片", cellType = Excel.ColumnType.IMAGE, height = 55, type = Excel.Type.EXPORT)
private String picUrl;
/**
* 老师名称
*/
@Excel(name = "老师名称")
@NotBlank(message = "老师名字不能为空")
private String teacherName;
/**
* 性别
*/
@Excel(name = "性别", readConverterExp = "0=男,1=女")
@NotBlank(message = "性别不能为空")
private String sex;
/**
* 民族
*/
@Excel(name = "民族")
private String nation;
/**
* 工作编号
*/
@Excel(name = "工作编号")
private String teacherCode;
/*
* 系统表 用户id
* */
@TableField(exist = false)
private Long userId;
/**
* 生日
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "生日", width = 25, dateFormat = "yyyy-MM-dd")
private Date birthday;
/**
* 学历
*/
@Excel(name = "学历", readConverterExp = "0=高中,1=专科,2=本科,3=研究生,4=硕士,5=博士",combo = {"高中","专科","本科","研究生","硕士","博士"})
private String education;
/**
* 老师电话
*/
@Excel(name = "老师电话")
@NotBlank(message = "老师电话不能为空")
private String teacherTel;
/**
* 身份证号
*/
@Excel(name = "身份证号", width = 30)
@NotBlank(message = "身份证号不能为空")
private String idCard;
/**
* 家庭住址
*/
@Excel(name = "家庭住址", width = 35)
private String homeAddress;
/*
* 微信openid
* */
private String openId;
/*
* 钉钉用户unionId
* */
private String unionId;
/*
* 钉钉用户id
* */
private String ddUserId;
//设备工号
private String deviceNum;
/**部门id**/
@TableField(exist = false)
private Long deptId;
/**部门名称**/
@TableField(exist = false)
private String deptName;
/** 密码 */
@TableField(exist = false)
private String password;
/** 帐号状态(0正常 1停用) */
//@Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
@TableField(exist = false)
private String status;
/**签名路径*/
@TableField(exist = false)
private String sign;
/**头像**/
@TableField(exist = false)
private String avatar;
/*职工类型**/
@TableField(exist = false)
private String employeeType;
@TableField(exist = false)
private String email;
/** 父部门ID */
@TableField(exist = false)
private Long parentId;
/** 父部门名称 */
@TableField(exist = false)
private String parentName;
}
package yangtz.cs.liu.dingding.mapper.dingDept;
import yangtz.cs.liu.dingding.domain.dingDept.SysDdDept;
import java.util.List;
import java.util.Map;
public interface DdDeptMapper {
/**
* 查询系统部门列表
* @param sysDdDept
* @return
*/
List<SysDdDept> selectDdDeptList(SysDdDept sysDdDept);
/**
* 根据钉钉部门id查询系统部门信息
*/
SysDdDept selectDeptByDdDeptId(Long ddDeptId);
/**
* 根据部门id查询系统部门信息
*/
SysDdDept selectDeptByDeptId(Long deptId);
/**
* 查询级部信息
*/
List<Map<String,Object>> selectGradeList();
/**
* 新增钉钉部门
* @return
*/
int insertDdDept(SysDdDept sysDdDept);
/**
* 更新钉钉部门
* @param sysDdDept
* @return
*/
int updateDdDeptByDdDeptId(SysDdDept sysDdDept);
/**
* 删除部门
* @param deptId
* @return
*/
int deleteDdDeptById(Long deptId);
/**
* 根据钉钉部门id删除部门
* @param ddDeptId
* @return
*/
int deleteDdDeptByDdDeptId(Long ddDeptId);
}
package yangtz.cs.liu.dingding.mapper.dingUser;
import org.apache.ibatis.annotations.Param;
import yangtz.cs.liu.dingding.domain.dingGrade.SchoolGradeMentorCopy;
import yangtz.cs.liu.dingding.domain.dingUser.SysDdUser;
import yangtz.cs.liu.dingding.domain.dingUser.SysDdUserDept;
import java.util.List;
public interface DdUserMapper {
/**
* 批量新增钉钉用户
*/
int batchInsertDdUser(@Param("list") List<SysDdUser> list);
/**
* 新增用户
*/
int insertDdUser(SysDdUser sysDdUser);
/**
* 更新用户
*/
int updateDdUser(SysDdUser sysDdUser);
/**
* 查询全部用户
*/
List<SysDdUser> selectDdUserList(SysDdUser sysDdUser);
/**
* 新增用户部门关系
*/
int insertDdUserDept(SysDdUserDept sysDdUserDept);
/**
* 删除用户
*/
int deleteDdUser(Long userId);
/**
* 删除用户和部门关系
*/
int deleteDdUserDept(Long userId);
/**
* 删除教师
*/
int deleteDdTeacher(Long userId);
/**
* 根据用户id查询用户部门id列表
*/
List<Long> selectDeptIdByUserId(Long userId);
/**
* 根据钉钉用户id查询用户信息
* @param ddUserId
* @return
*/
SysDdUser selectDdUserByDdUserId(String ddUserId);
/**
* 新增级部成员
* @param schoolGradeMentorCopy
* @return
*/
int insertGradeMentor(SchoolGradeMentorCopy schoolGradeMentorCopy);
/**
* 删除级部成员
* @param userId
* @return
*/
int deleteGradeMentor(Long userId);
}
package yangtz.cs.liu.dingding.mapper.schoolTeacher;
import org.apache.ibatis.annotations.Param;
import yangtz.cs.liu.dingding.domain.schoolTeacher.SysDdTeacher;
import java.util.List;
public interface DdTeacherMapper {
/**
* 批量新增教师
*/
int batchInsertTeacher(@Param("list") List<SysDdTeacher> list);
/**
* 新增教师
*/
int addTeacherList(SysDdTeacher sysDdTeacher);
/**
* 更新教师信息
*/
int updateDdTeacher(SysDdTeacher sysDdTeacher);
}
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