修改基本制度建设功能

This commit is contained in:
yangjun 2024-12-12 15:04:43 +08:00
parent 516c5b9753
commit 20c2211deb
17 changed files with 507 additions and 148 deletions

View File

@ -60,16 +60,16 @@ public class BlJbzdjs implements Serializable {
@Excel(name = "制度名称", width = 15)
@ApiModelProperty(value = "制度名称")
private java.lang.String zdmc;
/**执行时间*/
@Excel(name = "执行时间", width = 15, format = "yyyy-MM-dd")
/**修订时间*/
@Excel(name = "修订时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "执行时间")
@ApiModelProperty(value = "修订时间")
private java.util.Date zxsj;
/**与教学管理文件汇编不一致说明*/
@Excel(name = "与教学管理文件汇编不一致说明", width = 15, dicCode = "yn")
@Dict(dicCode = "yn")
@ApiModelProperty(value = "与教学管理文件汇编不一致说明")
/**对应的学校上位文件*/
@Excel(name = "对应的学校上位文件", width = 15, dicCode = "yn")
@Dict(dicCode = "zd_swwj")
@ApiModelProperty(value = "对应的学校上位文件")
private java.lang.String sfyz;
/**状态*/
@Excel(name = "状态", width = 15, dicCode = "zd_status")

View File

@ -74,7 +74,7 @@ public class CasClientController {
log.info("-------token----username---"+principal);
//1. 校验用户是否有效
SysUser sysUser = sysUserService.getUserByName(principal);
result = sysUserService.checkUserIsEffective(sysUser);
result = sysUserService.checkUserIsEffective(sysUser, res);
if(!result.isSuccess()) {
return result;
}

View File

@ -543,7 +543,7 @@ public class SysUserController {
SysUser sysUserExcel = listSysUsers.get(i);
if (StringUtils.isBlank(sysUserExcel.getPassword())) {
// 密码默认为 123456
sysUserExcel.setPassword("123456");
sysUserExcel.setPassword("Zjpt123456");
}
// 密码加密加盐
String salt = oConvertUtils.randomGen(8);

View File

@ -257,6 +257,13 @@ public interface ISysUserService extends IService<SysUser> {
*/
Result checkUserIsEffective(SysUser sysUser);
/**
* 统一身份认证专用
* @param sysUser
* @param res
* @return
*/
Result checkUserIsEffective(SysUser sysUser, String res);
/**
* 查询被逻辑删除的用户
* @return List<SysUser>

View File

@ -106,7 +106,7 @@ public class SysThirdAccountServiceImpl extends ServiceImpl<SysThirdAccountMappe
//设置初始密码
String salt = oConvertUtils.randomGen(8);
user.setSalt(salt);
String passwordEncode = PasswordUtil.encrypt(user.getUsername(), "123456", salt);
String passwordEncode = PasswordUtil.encrypt(user.getUsername(), "Zjpt@123456", salt);
user.setPassword(passwordEncode);
user.setRealname(account.getRealname());
user.setAvatar(account.getAvatar());

View File

@ -34,11 +34,13 @@ import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.common.util.*;
import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.modules.base.service.BaseCommonService;
import org.jeecg.modules.cas.util.XmlUtils;
import org.jeecg.modules.message.handle.impl.SystemSendMsgHandle;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.mapper.*;
import org.jeecg.modules.system.model.SysUserSysDepartModel;
import org.jeecg.modules.system.service.ISysRoleIndexService;
import org.jeecg.modules.system.service.ISysRoleService;
import org.jeecg.modules.system.service.ISysThirdAccountService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.system.vo.SysUserDepVo;
@ -48,6 +50,8 @@ import org.jeecg.modules.system.vo.lowapp.AppExportUserVo;
import org.jeecg.modules.system.vo.lowapp.DepartAndUserInfo;
import org.jeecg.modules.system.vo.lowapp.DepartInfo;
import org.jeecg.modules.system.vo.lowapp.UpdateDepartInfo;
import org.jeecg.modules.xxhbuser.entity.Xxhbuser;
import org.jeecg.modules.xxhbuser.service.IXxhbuserService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
@ -128,7 +132,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Autowired
private RedisUtil redisUtil;
@Autowired
private ISysRoleService sysRoleService;
@Autowired
private IXxhbuserService xxhbuserService;
@Override
public Result<IPage<SysUser>> queryPageList(HttpServletRequest req, QueryWrapper<SysUser> queryWrapper, Integer pageSize, Integer pageNo) {
Result<IPage<SysUser>> result = new Result<IPage<SysUser>>();
@ -648,7 +656,77 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
}
}
@Override
public Result<?> checkUserIsEffective(SysUser sysUser, String res){
final String username = XmlUtils.getTextForElement(res, "user");
final String realname = XmlUtils.getTextForElement(res, "cn");
final String containerId = XmlUtils.getTextForElement(res, "containerId");
System.out.println("------------------1--------------------------"+containerId);
String roles = "";
int userIdentity = 1;
//判断是否为教师
if(StringUtils.indexOf(containerId,"ou=jzg") != -1){
System.out.println("------------------2--------------------------"+containerId);
roles = "jwms";//教师角色
userIdentity = 2;//允许进入后台
}else if(StringUtils.indexOf(containerId,"ou=bzks") != -1){
throw new JeecgBootException("学生不可以登录此平台");
}else{
System.out.println("------------------4--------------------------"+containerId);
return checkUserIsEffective(sysUser);
}
QueryWrapper<SysRole> sysRoleQw = new QueryWrapper<>();
System.out.println("------------------7--------------------------"+roles);
sysRoleQw.in("role_code",roles);
sysRoleQw.last("limit 1");
SysRole sysRole = sysRoleService.getOne(sysRoleQw);
if(sysRole != null){
System.out.println("------------------8--------------------------"+roles);
roles = sysRole.getId();
}else{
System.out.println("------------------9--------------------------"+roles);
log.error("创建用户出现错误,未找到["+roles+"]角色,请添加");
throw new JeecgBootException("创建用户出现错误,未找到["+roles+"]角色,请添加");
}
StringUtils.split(containerId,",");
//情况1根据用户信息查询该用户不存在
if (sysUser == null) {
QueryWrapper<Xxhbuser> xxhbuserQueryWrapper = new QueryWrapper<>();
xxhbuserQueryWrapper.eq("gh",username);
xxhbuserQueryWrapper.last("limit 1");
Xxhbuser xxhbuser = xxhbuserService.getOne(xxhbuserQueryWrapper);
System.out.println("------------------10--------------------------user null");
//创建用户
SysUser user = new SysUser();
user.setUsername(username);
user.setRealname(realname);
user.setActivitiSync(1);
String salt = oConvertUtils.randomGen(8);
user.setSalt(salt);
String passwordEncode = PasswordUtil.encrypt(user.getUsername(), "Zjpt@123456", salt);
user.setPassword(passwordEncode);
user.setPhone(username);
user.setUserIdentity(userIdentity);
user.setWorkNo(username);
user.setStatus(1);
user.setDelFlag(0);
if(xxhbuser!=null){
user.setDepartIds(xxhbuser.getDwmc());
}
saveUser(user,roles,"","");
Result result = checkUserIsEffective(user);
result.setCode(999);
return result;
}
return checkUserIsEffective(sysUser);
}
/**
* 校验用户是否有效

View File

@ -0,0 +1,178 @@
package org.jeecg.modules.xxhbuser.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.xxhbuser.entity.Xxhbuser;
import org.jeecg.modules.xxhbuser.service.IXxhbuserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: xxhbuser
* @Author: jeecg-boot
* @Date: 2024-12-12
* @Version: V1.0
*/
@Api(tags="xxhbuser")
@RestController
@RequestMapping("/xxhbuser/xxhbuser")
@Slf4j
public class XxhbuserController extends JeecgController<Xxhbuser, IXxhbuserService> {
@Autowired
private IXxhbuserService xxhbuserService;
/**
* 分页列表查询
*
* @param xxhbuser
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "xxhbuser-分页列表查询")
@ApiOperation(value="xxhbuser-分页列表查询", notes="xxhbuser-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<Xxhbuser>> queryPageList(Xxhbuser xxhbuser,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<Xxhbuser> queryWrapper = QueryGenerator.initQueryWrapper(xxhbuser, req.getParameterMap());
Page<Xxhbuser> page = new Page<Xxhbuser>(pageNo, pageSize);
IPage<Xxhbuser> pageList = xxhbuserService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param xxhbuser
* @return
*/
@AutoLog(value = "xxhbuser-添加")
@ApiOperation(value="xxhbuser-添加", notes="xxhbuser-添加")
@RequiresPermissions("xxhbuser:xxhbuser:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody Xxhbuser xxhbuser) {
xxhbuserService.save(xxhbuser);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param xxhbuser
* @return
*/
@AutoLog(value = "xxhbuser-编辑")
@ApiOperation(value="xxhbuser-编辑", notes="xxhbuser-编辑")
@RequiresPermissions("xxhbuser:xxhbuser:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody Xxhbuser xxhbuser) {
xxhbuserService.updateById(xxhbuser);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "xxhbuser-通过id删除")
@ApiOperation(value="xxhbuser-通过id删除", notes="xxhbuser-通过id删除")
@RequiresPermissions("xxhbuser:xxhbuser:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
xxhbuserService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "xxhbuser-批量删除")
@ApiOperation(value="xxhbuser-批量删除", notes="xxhbuser-批量删除")
@RequiresPermissions("xxhbuser:xxhbuser:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.xxhbuserService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "xxhbuser-通过id查询")
@ApiOperation(value="xxhbuser-通过id查询", notes="xxhbuser-通过id查询")
@GetMapping(value = "/queryById")
public Result<Xxhbuser> queryById(@RequestParam(name="id",required=true) String id) {
Xxhbuser xxhbuser = xxhbuserService.getById(id);
if(xxhbuser==null) {
return Result.error("未找到对应数据");
}
return Result.OK(xxhbuser);
}
/**
* 导出excel
*
* @param request
* @param xxhbuser
*/
@RequiresPermissions("xxhbuser:xxhbuser:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, Xxhbuser xxhbuser) {
return super.exportXls(request, xxhbuser, Xxhbuser.class, "xxhbuser");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("xxhbuser:xxhbuser:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, Xxhbuser.class);
}
}

View File

@ -0,0 +1,83 @@
package org.jeecg.modules.xxhbuser.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: xxhbuser
* @Author: jeecg-boot
* @Date: 2024-12-12
* @Version: V1.0
*/
@Data
@TableName("xxhbuser")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="xxhbuser对象", description="xxhbuser")
public class Xxhbuser implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**工号*/
@Excel(name = "工号", width = 15)
@ApiModelProperty(value = "工号")
private java.lang.String gh;
/**spxldm*/
@Excel(name = "spxldm", width = 15)
@ApiModelProperty(value = "spxldm")
private java.lang.String spxldm;
/**xbm*/
@Excel(name = "xbm", width = 15)
@ApiModelProperty(value = "xbm")
private java.lang.String xbm;
/**姓名*/
@Excel(name = "姓名", width = 15)
@ApiModelProperty(value = "姓名")
private java.lang.String xm;
/**单位号*/
@Excel(name = "单位号", width = 15)
@ApiModelProperty(value = "单位号")
private java.lang.String dwh;
/**单位名称*/
@Excel(name = "单位名称", width = 15)
@ApiModelProperty(value = "单位名称")
private java.lang.String dwmc;
/**csrq*/
@Excel(name = "csrq", width = 15)
@ApiModelProperty(value = "csrq")
private java.lang.String csrq;
/**sfzxm*/
@Excel(name = "sfzxm", width = 15)
@ApiModelProperty(value = "sfzxm")
private java.lang.String sfzxm;
/**zdxms*/
@Excel(name = "zdxms", width = 15)
@ApiModelProperty(value = "zdxms")
private java.lang.String zdxms;
/**zzzt*/
@Excel(name = "zzzt", width = 15)
@ApiModelProperty(value = "zzzt")
private java.lang.String zzzt;
/**时间戳*/
@Excel(name = "时间戳", width = 15)
@ApiModelProperty(value = "时间戳")
private java.lang.String timestamps;
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.xxhbuser.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.xxhbuser.entity.Xxhbuser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: xxhbuser
* @Author: jeecg-boot
* @Date: 2024-12-12
* @Version: V1.0
*/
public interface XxhbuserMapper extends BaseMapper<Xxhbuser> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.xxhbuser.mapper.XxhbuserMapper">
</mapper>

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.xxhbuser.service;
import org.jeecg.modules.xxhbuser.entity.Xxhbuser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: xxhbuser
* @Author: jeecg-boot
* @Date: 2024-12-12
* @Version: V1.0
*/
public interface IXxhbuserService extends IService<Xxhbuser> {
}

View File

@ -0,0 +1,21 @@
package org.jeecg.modules.xxhbuser.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.jeecg.modules.xxhbuser.entity.Xxhbuser;
import org.jeecg.modules.xxhbuser.mapper.XxhbuserMapper;
import org.jeecg.modules.xxhbuser.service.IXxhbuserService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: xxhbuser
* @Author: jeecg-boot
* @Date: 2024-12-12
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class XxhbuserServiceImpl extends ServiceImpl<XxhbuserMapper, Xxhbuser> implements IXxhbuserService {
}

View File

@ -16,7 +16,7 @@ export const columns: BasicColumn[] = [
dataIndex: 'zdmc'
},
{
title: '执行时间',
title: '修订时间',
align: "center",
dataIndex: 'zxsj',
customRender:({text}) =>{
@ -25,7 +25,7 @@ export const columns: BasicColumn[] = [
},
},
{
title: '与教学管理文件汇编不一致说明',
title: '对应的学校上位文件',
align: "center",
dataIndex: 'sfyz_dictText'
},
@ -34,15 +34,15 @@ export const columns: BasicColumn[] = [
align: "center",
dataIndex: 'status_dictText'
},
{
title: '当年度修订情况',
align: "center",
dataIndex: 'years',
customRender:({text,record}) =>{
text = text+"年"+record.yearsType_dictText;
return text;
},
},
// {
// title: '当年度修订情况',
// align: "center",
// dataIndex: 'years',
// customRender:({text,record}) =>{
// text = text+"年"+record.yearsType_dictText;
// return text;
// },
// },
// {
// title: '修订情况',
// align: "center",
@ -64,8 +64,8 @@ export const columns: BasicColumn[] = [
export const superQuerySchema = {
dwmc: {title: '学院',order: 0,view: 'list', type: 'string',dictCode: '',},
zdmc: {title: '制度名称',order: 1,view: 'text', type: 'string',},
zxsj: {title: '执行时间',order: 2,view: 'date', type: 'string',},
sfyz: {title: '与教学管理文件汇编不一致说明',order: 3,view: 'list', type: 'string',dictCode: 'yn',},
zxsj: {title: '修订时间',order: 2,view: 'date', type: 'string',},
sfyz: {title: '对应的学校上位文件',order: 3,view: 'list', type: 'string',dictCode: 'yn',},
status: {title: '状态',order: 4,view: 'list', type: 'string',dictCode: 'zd_status',},
years: {title: '年度',order: 5,view: 'text', type: 'string',},
yearsType: {title: '修订情况',order: 6,view: 'list', type: 'string',dictCode: 'zd_xdqk',},

View File

@ -4,12 +4,12 @@
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="6">
<!-- <a-col :lg="6">
<a-form-item name="dwmc">
<template #label><span title="学院">学院</span></template>
<j-dict-select-tag placeholder="请选择状态" v-model:value="queryParam.dwmc" dictCode="bl_kkdw,kkdw,kkdw" allow-clear />
</a-form-item>
</a-col>
</a-col> -->
<a-col :lg="6">
<a-form-item name="zdmc">
<template #label><span title="制度名称">制度名称</span></template>
@ -18,8 +18,8 @@
</a-col>
<a-col :lg="6">
<a-form-item name="zxsj">
<template #label><span title="执行时间">执行时间</span></template>
<a-date-picker valueFormat="YYYY-MM-DD" placeholder="请选择执行时间" v-model:value="queryParam.zxsj" allow-clear />
<template #label><span title="修订时间">修订时间</span></template>
<a-date-picker valueFormat="YYYY-MM-DD" placeholder="请选择修订时间" v-model:value="queryParam.zxsj" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">
@ -31,15 +31,15 @@
<a-col :lg="6">
<a-form-item name="years">
<template #label><span title="年度">年度</span></template>
<a-date-picker placeholder="请选择执行时间" v-model:value="queryParam.years" value-format="YYYY" picker="year" style="width: 100%" allow-clear />
<a-date-picker placeholder="请选择修订时间" v-model:value="queryParam.years" value-format="YYYY" picker="year" style="width: 100%" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">
<!-- <a-col :lg="6">
<a-form-item name="yearsType">
<template #label><span title="修订情况">修订情况</span></template>
<j-dict-select-tag placeholder="请选择修订情况" v-model:value="queryParam.yearsType" dictCode="zd_xdqk" allow-clear />
</a-form-item>
</a-col>
</a-col> -->
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
<a-col :lg="6">
@ -65,7 +65,7 @@
<template v-if="column.dataIndex==='filePath'">
<!--文件字段回显插槽-->
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button v-else :ghost="true" type="primary" preIcon="ant-design:download-outlined" size="small" @click="downloadFile(text)">下载</a-button>
<a-button v-else :ghost="true" type="primary" preIcon="ant-design:download-outlined" size="small" @click="downloadFile(text)">{{dqnd}}下载</a-button>
<a-button :ghost="true" type="primary" preIcon="ant-design:download-outlined" size="small" @click="handleYulan(text)">预览</a-button>
</template>
<template v-if="column.dataIndex==='ftpPath'">
@ -90,15 +90,17 @@
import BlJbzdjsModal from './components/BlJbzdjsModal.vue'
import { useUserStore } from '/@/store/modules/user';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { getFileAccessHttpUrl } from '@/utils/common/compUtils';
import { encryptByBase64 } from '@/utils/cipher';
import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
import { getFileAccessHttpUrl } from '@/utils/common/compUtils';
import { encryptByBase64 } from '@/utils/cipher';
import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
import dayjs from 'dayjs';
const formRef = ref();
const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const userStore = useUserStore();
const dqnd = dayjs().format('YYYY');
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
@ -136,18 +138,6 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
sm: 20,
});
//
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
searchQuery();
}
/**
* 新增事件
@ -164,12 +154,13 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
registerModal.value.disableSubmit = false;
registerModal.value.edit(record);
}
/**
* 详情
* 只修改状态字段
*/
function handleDetail(record: Recordable) {
registerModal.value.disableSubmit = true;
function handleZtEdit(record: Recordable) {
registerModal.value.disableSubmit = false;
record.ztSfxg = '1';//
registerModal.value.edit(record);
}
@ -180,13 +171,6 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
await deleteOne({ id: record.id }, handleSuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
}
/**
* 成功回调
*/
@ -194,6 +178,9 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
(selectedRowKeys.value = []) && reload();
}
/**
* 预览
*/
function handleYulan(record){
var file = record.filePath;
console.log("🚀 ~ handleChakan ~ record.ktbg:", file)
@ -202,6 +189,9 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
window.open(url,"_blank");
}
/**
* 下载
*/
function handleXiazai(record){
var file = record.filePath;
downloadFile(file);
@ -212,29 +202,43 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
*/
function getTableAction(record) {
return [
{
label: '更新状态',
onClick: handleZtEdit.bind(null, record),
ifShow: () => {
return record.years < dqnd; //
},
},
{
label: '编辑',
onClick: handleEdit.bind(null, record),
},{
ifShow: () => {
return record.years === dqnd; //
},
},
{
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
ifShow: () => {
return record.years === dqnd; //
},
},
{
label: '下载',
onClick: handleXiazai.bind(null, record),
ifShow: () => {
return record.filePath; // : enable
return record.filePath; //
},
},
{
label: '预览',
onClick: handleYulan.bind(null, record),
ifShow: () => {
return record.filePath; // : enable
return record.filePath; //
},
},
];

View File

@ -18,8 +18,8 @@
</a-col>
<a-col :lg="6">
<a-form-item name="zxsj">
<template #label><span title="执行时间">执行时间</span></template>
<a-date-picker valueFormat="YYYY-MM-DD" placeholder="请选择执行时间" v-model:value="queryParam.zxsj" allow-clear />
<template #label><span title="修订时间">修订时间</span></template>
<a-date-picker valueFormat="YYYY-MM-DD" placeholder="请选择修订时间" v-model:value="queryParam.zxsj" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">
@ -31,13 +31,7 @@
<a-col :lg="6">
<a-form-item name="years">
<template #label><span title="年度">年度</span></template>
<a-date-picker placeholder="请选择执行时间" v-model:value="queryParam.years" value-format="YYYY" picker="year" style="width: 100%" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="yearsType">
<template #label><span title="修订情况">修订情况</span></template>
<j-dict-select-tag placeholder="请选择修订情况" v-model:value="queryParam.yearsType" dictCode="zd_xdqk" allow-clear />
<a-date-picker placeholder="请选择修订时间" v-model:value="queryParam.years" value-format="YYYY" picker="year" style="width: 100%" allow-clear />
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@ -118,57 +112,6 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
xs: 24,
sm: 20,
});
//
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
searchQuery();
}
/**
* 新增事件
*/
function handleAdd() {
registerModal.value.disableSubmit = false;
registerModal.value.add();
}
/**
* 编辑事件
*/
function handleEdit(record: Recordable) {
registerModal.value.disableSubmit = false;
registerModal.value.edit(record);
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
}
/**
* 成功回调
@ -177,6 +120,9 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
(selectedRowKeys.value = []) && reload();
}
/**
* 预览文件
*/
function handleYulan(record){
var file = record.filePath;
console.log("🚀 ~ handleChakan ~ record.ktbg:", file)
@ -185,6 +131,9 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
window.open(url,"_blank");
}
/**
* 下载文件
*/
function handleXiazai(record){
var file = record.filePath;
downloadFile(file);
@ -199,14 +148,14 @@ import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
label: '下载',
onClick: handleXiazai.bind(null, record),
ifShow: () => {
return record.filePath; // : enable
return record.filePath; //
},
},
{
label: '预览',
onClick: handleYulan.bind(null, record),
ifShow: () => {
return record.filePath; // : enable
return record.filePath; //
},
},
];

View File

@ -6,38 +6,27 @@
<a-row>
<a-col :span="24">
<a-form-item label="制度名称" v-bind="validateInfos.zdmc" id="BlJbzdjsForm-zdmc" name="zdmc">
<a-input v-model:value="formData.zdmc" placeholder="请输入制度名称" allow-clear ></a-input>
<a-input v-model:value="formData.zdmc" placeholder="请输入制度名称" allow-clear :disabled="ztSfxg"></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="执行时间" v-bind="validateInfos.zxsj" id="BlJbzdjsForm-zxsj" name="zxsj">
<a-date-picker placeholder="请选择执行时间" v-model:value="formData.zxsj" value-format="YYYY-MM-DD" style="width: 100%" allow-clear />
<a-form-item label="修订时间" v-bind="validateInfos.zxsj" id="BlJbzdjsForm-zxsj" name="zxsj">
<a-date-picker placeholder="请选择修订时间" v-model:value="formData.zxsj" value-format="YYYY-MM-DD" style="width: 100%" allow-clear :disabled="ztSfxg"/>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="与教学管理文件汇编不一致说明" v-bind="validateInfos.sfyz" id="BlJbzdjsForm-sfyz" name="sfyz">
<j-dict-select-tag v-model:value="formData.sfyz" dictCode="yn" placeholder="请选择与教学管理文件汇编不一致说明" allow-clear />
<a-form-item label="对应的学校上位文件" v-bind="validateInfos.sfyz" id="BlJbzdjsForm-sfyz" name="sfyz">
<j-dict-select-tag show-search v-model:value="formData.sfyz" dictCode="zd_swwj" placeholder="请选择对应的学校上位文件" allow-clear :disabled="ztSfxg"/>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="状态" v-bind="validateInfos.status" id="BlJbzdjsForm-status" name="status">
<j-dict-select-tag v-model:value="formData.status" dictCode="zd_status" placeholder="请选择状态" allow-clear />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="年度" v-bind="validateInfos.years" id="BlJbzdjsForm-years" name="years">
<!-- <a-input v-model:value="formData.years" placeholder="请输入年度" allow-clear ></a-input> -->
<a-date-picker placeholder="请选择执行时间" v-model:value="formData.years" value-format="YYYY" picker="year" style="width: 100%" allow-clear />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="修订情况" v-bind="validateInfos.yearsType" id="BlJbzdjsForm-yearsType" name="yearsType">
<j-dict-select-tag v-model:value="formData.yearsType" dictCode="zd_xdqk" placeholder="请选择修订情况" allow-clear />
<j-dict-select-tag type="radio" v-model:value="formData.status" dictCode="zd_status" placeholder="请选择状态" allow-clear />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="附件" v-bind="validateInfos.filePath" id="BlJbzdjsForm-filePath" name="filePath">
<j-upload v-model:value="formData.filePath" :bizPath="dqnd" :max-count="1" ></j-upload>
<j-upload v-model:value="formData.filePath" :bizPath="dqnd" :max-count="1" :disabled="ztSfxg"></j-upload>
</a-form-item>
</a-col>
</a-row>
@ -66,6 +55,7 @@
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
const ztSfxg = ref<boolean>(false);
const formData = reactive<Record<string, any>>({
id: '',
zdmc: '',
@ -73,7 +63,6 @@
sfyz: '',
status: '',
years: '',
yearsType: '',
filePath: '',
});
const { createMessage } = useMessage();
@ -84,11 +73,9 @@
//
const validatorRules = reactive({
zdmc: [{ required: true, message: '请输入制度名称!' }],
zxsj: [{ required: true, message: '请选择执行时间!' }],
sfyz: [{ required: true, message: '请选择与教学管理文件汇编不一致说明!' }],
zxsj: [{ required: true, message: '请选择修订时间!' }],
sfyz: [{ required: true, message: '请选择对应的学校上位文件!' }],
status: [{ required: true, message: '请选择状态!' }],
years: [{ required: true, message: '请选择年度!' }],
yearsType: [{ required: true, message: '请选择修订情况!' }],
filePath: [{ required: true, message: '请选择附件!' }],
});
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
@ -110,7 +97,7 @@
* 新增
*/
function add() {
edit({});
edit({status:'1'});
}
/**
@ -125,8 +112,18 @@
tmpData[key] = record[key]
}
})
//
Object.assign(formData, tmpData);
console.log("🚀 ~ nextTick ~ record:", record)
if(record.ztSfxg == '1'){
ztSfxg.value = true;//
}else{
ztSfxg.value = false;//false
}
console.log("🚀 ~ nextTick ~ ztSfxg:", ztSfxg)
});
}
@ -164,6 +161,12 @@
}
}
}
//
var zxsj = model.zxsj;
var nd = zxsj.substring(0,4);
model.years = nd;
await saveOrUpdate(model, isUpdate.value)
.then((res) => {
if (res.success) {

View File

@ -1,5 +1,5 @@
<template>
<j-modal :title="title" :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
<j-modal :title="title" :width="width" style="top:30px;" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
<BlJbzdjsForm ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></BlJbzdjsForm>
</j-modal>
</template>