diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java index 5af818f..a78d1b6 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java @@ -102,7 +102,7 @@ public class CommonUtils { } //替换上传文件名字的特殊字符 fileName = fileName.replace("=","").replace(",","").replace("&","") - .replace("#", "").replace("“", "").replace("”", ""); + .replace("#", "").replace("“", "").replace("”", "").replace("(", "(").replace(")", ")"); //替换上传文件名字中的空格 fileName=fileName.replaceAll("\\s",""); //update-beign-author:taoyan date:20220302 for: /issues/3381 online 在线表单 使用文件组件时,上传文件名中含%,下载异常 diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/controller/KcKetangbiaoController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/controller/KcKetangbiaoController.java index 5ec3911..0530c10 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/controller/KcKetangbiaoController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/controller/KcKetangbiaoController.java @@ -285,4 +285,13 @@ public class KcKetangbiaoController extends JeecgController getTeacherZhicheng(KcKetangbiao kcKetangbiao) { + KcKetangbiao pageList = kcKetangbiaoService.getTeacherZhicheng(kcKetangbiao); + return Result.OK(pageList); + } + } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/mapper/KcKetangbiaoMapper.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/mapper/KcKetangbiaoMapper.java index 0a1f480..3ea313f 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/mapper/KcKetangbiaoMapper.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/mapper/KcKetangbiaoMapper.java @@ -23,4 +23,6 @@ public interface KcKetangbiaoMapper extends BaseMapper { IPage checklist(Page page, KcKetangbiao kcKetangbiao); IPage getYylist(Page page, KcKetangbiao kcKetangbiao); + + KcKetangbiao getTeacherZhicheng(KcKetangbiao kcKetangbiao); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/mapper/xml/KcKetangbiaoMapper.xml b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/mapper/xml/KcKetangbiaoMapper.xml index d221090..59700fa 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/mapper/xml/KcKetangbiaoMapper.xml +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/mapper/xml/KcKetangbiaoMapper.xml @@ -186,4 +186,12 @@ GROUP BY kcmc order by kcmc asc + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/service/IKcKetangbiaoService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/service/IKcKetangbiaoService.java index 6ad0458..0b5406c 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/service/IKcKetangbiaoService.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/service/IKcKetangbiaoService.java @@ -21,4 +21,6 @@ public interface IKcKetangbiaoService extends IService { IPage checklist(Page page, KcKetangbiao kcKetangbiao); IPage getYylist(Page page, KcKetangbiao kcKetangbiao); + + KcKetangbiao getTeacherZhicheng(KcKetangbiao kcKetangbiao); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/service/impl/KcKetangbiaoServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/service/impl/KcKetangbiaoServiceImpl.java index a7155a1..6e1243c 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/service/impl/KcKetangbiaoServiceImpl.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/kcKetangbiao/service/impl/KcKetangbiaoServiceImpl.java @@ -111,4 +111,9 @@ public class KcKetangbiaoServiceImpl extends ServiceImpl getYylist(Page page, KcKetangbiao kcKetangbiao) { return baseMapper.getYylist(page,kcKetangbiao); } + + @Override + public KcKetangbiao getTeacherZhicheng(KcKetangbiao kcKetangbiao) { + return baseMapper.getTeacherZhicheng(kcKetangbiao); + } } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/controller/LwKhclController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/controller/LwKhclController.java index 8a5b815..2ba4066 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/controller/LwKhclController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/controller/LwKhclController.java @@ -403,6 +403,36 @@ public class LwKhclController extends JeecgController { @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + QueryWrapper zjSqxxQueryWrapper = new QueryWrapper<>(); + zjSqxxQueryWrapper.eq("user_id",sysUser.getId()); + zjSqxxQueryWrapper.eq("sqfw","2"); + ZjSqxx zjSqxx = zjSqxxService.getOne(zjSqxxQueryWrapper); + String sfjx = "0"; + String inBynf = ""; + String inSsyxmc = ""; + if(zjSqxx!=null){ + Date date = new Date(); + if(zjSqxx.getSqStartTime()!=null&&zjSqxx.getSqStartTime().getTime()>=date.getTime()){ + sfjx = "1"; + } + if(zjSqxx.getSqEndTime()!=null&&zjSqxx.getSqEndTime().getTime()<=date.getTime()){ + sfjx = "1"; + } + if(StringUtils.isNotBlank(zjSqxx.getXnxq())){ + inBynf = zjSqxx.getXnxq(); + lwKhcl.setInBynf(inBynf); + } + if(StringUtils.isNotBlank(zjSqxx.getKkdw())){ + inSsyxmc = zjSqxx.getKkdw(); + lwKhcl.setInSsyxmc(inSsyxmc); + } + } + if(StringUtils.equals("1",sfjx)){ + return Result.error("您未在授权期限内,不能进行查询!"); + } + + lwKhcl.setCreateBy(sysUser.getUsername()); Page page = new Page(pageNo, pageSize); IPage pageList = lwKhclService.getXkList(page, lwKhcl); diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/entity/LwKhcl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/entity/LwKhcl.java index 35a1e74..a7dba00 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/entity/LwKhcl.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/entity/LwKhcl.java @@ -104,11 +104,16 @@ public class LwKhcl implements Serializable { private String ccjgdown; @ApiModelProperty(value = "知道记录单") private String zdjld; + private String zfx; @TableField(exist = false) private String sfxk; @TableField(exist = false) private String createBy; + @TableField(exist = false) + private String inBynf; + @TableField(exist = false) + private String inSsyxmc; } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/mapper/xml/LwKhclMapper.xml b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/mapper/xml/LwKhclMapper.xml index dc8d514..2a12ae6 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/mapper/xml/LwKhclMapper.xml +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/mapper/xml/LwKhclMapper.xml @@ -133,6 +133,41 @@ select a.*,if(b.id is not null ,1,0) as sfxk from lw_khcl a LEFT JOIN lw_khcl_xz b on a.id = b.main_id and b.create_by = #{lwKhcl.createBy} + + + + and a.ssyxmc like concat('%',#{lwKhcl.ssyxmc},'%') + + + and a.ssxnzymc like concat('%',#{lwKhcl.ssxnzymc},'%') + + + + and a.xsxh like concat('%',#{lwKhcl.xsxh},'%') + + + and a.xsxm like concat('%',#{lwKhcl.xsxm},'%') + + + and a.bylw_tm like concat('%',#{lwKhcl.bylwTm},'%') + + + and a.bylw_cj = #{lwKhcl.bylwCj} + + + + and a.ssyxmc in + + #{item} + + + + and a.bynf in + + #{item} + + + and a.lwzg is not null @@ -151,12 +186,6 @@ and a.ktbg is null - - and a.ssxnzymc like concat('%',#{lwKhcl.ssxnzymc},'%') - - - and a.xsxm like concat('%',#{lwKhcl.xsxm},'%') - diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/service/ILwKhclService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/service/ILwKhclService.java index 482c03a..1fd8590 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/service/ILwKhclService.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/service/ILwKhclService.java @@ -28,4 +28,6 @@ public interface ILwKhclService extends IService { List getXqList(String xsxh, String xsxm, String ssxnzymc, String ktbg, String zqjc, String lwzg, String inBynf, String inSsyxmc, String inBylwLb); IPage getXkList(Page page, LwKhcl lwKhcl); + + void syncList(List impList); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/service/impl/LwKhclServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/service/impl/LwKhclServiceImpl.java index 7dcd2b9..cb02954 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/service/impl/LwKhclServiceImpl.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhcl/service/impl/LwKhclServiceImpl.java @@ -8,10 +8,13 @@ import org.jeecg.modules.demo.lwKhcl.entity.LwKhclCj; import org.jeecg.modules.demo.lwKhcl.entity.LwKhclXq; import org.jeecg.modules.demo.lwKhcl.mapper.LwKhclMapper; import org.jeecg.modules.demo.lwKhcl.service.ILwKhclService; +import org.jeecg.modules.demo.zyHuizong.entity.ZyHuizong; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -59,4 +62,14 @@ public class LwKhclServiceImpl extends ServiceImpl impleme return baseMapper.getXkList(page,lwKhcl); } + @Override + public void syncList(List impList) { + syncList(impList, true); + } + + @Transactional(rollbackFor = {Exception.class}) + public boolean syncList(Collection entityList, boolean isDelete) { + return this.saveBatch(entityList, 1000); + } + } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhclXz/entity/LwKhclXz.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhclXz/entity/LwKhclXz.java index 27aa090..8228d41 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhclXz/entity/LwKhclXz.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhclXz/entity/LwKhclXz.java @@ -132,6 +132,7 @@ public class LwKhclXz implements Serializable { private String createBy; private String updateBy; private Date updateTime; + private String zfx; @TableField(exist = false) private String downLoadPath; diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhclXz/service/impl/LwKhclXzServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhclXz/service/impl/LwKhclXzServiceImpl.java index 0dd9ea0..dc4cb34 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhclXz/service/impl/LwKhclXzServiceImpl.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/lwKhclXz/service/impl/LwKhclXzServiceImpl.java @@ -49,7 +49,7 @@ public class LwKhclXzServiceImpl extends ServiceImpl i @Override public LwKhclXz getLwBatchDown(LwKhclXz lwKhclXz, HttpServletResponse response) { - String downPath[] = new String[6]; + String downPath[] = new String[5]; LwKhclXz lwKhclXzInfo = baseMapper.selectById(lwKhclXz.getId()); // 其余处理略 InputStream inputStream = null; @@ -59,7 +59,7 @@ public class LwKhclXzServiceImpl extends ServiceImpl i String ktbg = lwKhclXzInfo.getKtbg(); String ktbgshyj = lwKhclXzInfo.getKtbgshyj(); - String zqjc = lwKhclXzInfo.getZqjc(); +// String zqjc = lwKhclXzInfo.getZqjc(); String lwzg = lwKhclXzInfo.getLwzg(); String zdjld = lwKhclXzInfo.getZdjld(); String ccjgdown = lwKhclXzInfo.getCcjgdown(); @@ -81,7 +81,7 @@ public class LwKhclXzServiceImpl extends ServiceImpl i Map map = SFTPUtil.download(sftpConfig,imgPath,getDownloadPath(path)); String localFilePath = map.get("fileName"); System.out.println(localFilePath); - downPath[0] =localFilePath.replace("/opt/webapp/",""); + downPath[0] =localFilePath.replace(downloadpath,""); } if(StringUtils.isNotBlank(ktbgshyj)){ String imgPath = ktbgshyj; @@ -92,19 +92,19 @@ public class LwKhclXzServiceImpl extends ServiceImpl i } Map map = SFTPUtil.download(sftpConfig,imgPath,getDownloadPath(path)); String localFilePath = map.get("fileName"); - downPath[1] =localFilePath.replace("/opt/webapp/",""); - } - if(StringUtils.isNotBlank(zqjc)){ - String imgPath = zqjc; - int index = imgPath.lastIndexOf("/"); - String path = "temp"; - if(index != -1){ - path = imgPath.substring(0,index); - } - Map map = SFTPUtil.download(sftpConfig,imgPath,getDownloadPath(path)); - String localFilePath = map.get("fileName"); - downPath[2] =localFilePath.replace("/opt/webapp/",""); + downPath[1] =localFilePath.replace(downloadpath,""); } +// if(StringUtils.isNotBlank(zqjc)){ +// String imgPath = zqjc; +// int index = imgPath.lastIndexOf("/"); +// String path = "temp"; +// if(index != -1){ +// path = imgPath.substring(0,index); +// } +// Map map = SFTPUtil.download(sftpConfig,imgPath,getDownloadPath(path)); +// String localFilePath = map.get("fileName"); +// downPath[2] =localFilePath.replace(downloadpath,""); +// } if(StringUtils.isNotBlank(lwzg)){ String imgPath = lwzg; int index = imgPath.lastIndexOf("/"); @@ -114,7 +114,7 @@ public class LwKhclXzServiceImpl extends ServiceImpl i } Map map = SFTPUtil.download(sftpConfig,imgPath,getDownloadPath(path)); String localFilePath = map.get("fileName"); - downPath[3] =localFilePath.replace("/opt/webapp/",""); + downPath[2] =localFilePath.replace(downloadpath,""); } if(StringUtils.isNotBlank(zdjld)){ String imgPath = zdjld; @@ -125,12 +125,12 @@ public class LwKhclXzServiceImpl extends ServiceImpl i } Map map = SFTPUtil.download(sftpConfig,imgPath,getDownloadPath(path)); String localFilePath = map.get("fileName"); - downPath[4] =localFilePath.replace("/opt/webapp/",""); + downPath[3] =localFilePath.replace(downloadpath,""); } if(StringUtils.isNotBlank(ccjgdown)){ String savePath = downloadpath+"/bylw/"+lwKhclXzInfo.getXsxm()+ DateUtils.getCurrentTimestamp()+ "论文材料.zip"; downloadWangluoFile(ccjgdown,savePath); - downPath[5] =savePath.replace("/opt/webapp/",""); + downPath[4] =savePath.replace(downloadpath,"/"); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/sync/SyncVlwkhcl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/sync/SyncVlwkhcl.java new file mode 100644 index 0000000..fcbb2a6 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/sync/SyncVlwkhcl.java @@ -0,0 +1,81 @@ +package org.jeecg.modules.demo.sync; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.jeecg.modules.demo.lwKhcl.entity.LwKhcl; +import org.jeecg.modules.demo.lwKhcl.service.ILwKhclService; +import org.jeecg.modules.demo.vLwKhcl.entity.VLwKhcl; +import org.jeecg.modules.demo.vLwKhcl.service.IVLwKhclService; +import org.jeecg.modules.demo.zyHuizong.entity.Vkczxzy0001; +import org.jeecg.modules.demo.zyHuizong.entity.ZyHuizong; +import org.jeecg.modules.demo.zyHuizong.service.IZyHuizongService; +import org.jeecg.modules.demo.zyHuizong.service.Vkczxzy0001Service; +import org.jeecg.modules.demo.zyHuizongXiangxi.entity.Vkczxzy0002; +import org.jeecg.modules.demo.zyHuizongXiangxi.entity.ZyHuizongXiangxi; +import org.jeecg.modules.demo.zyHuizongXiangxi.service.IZyHuizongXiangxiService; +import org.jeecg.modules.demo.zyHuizongXiangxi.service.Vkczxzy0002Service; +import org.jeecg.modules.demo.zyInfoScjl.entity.ZyInfoScjl; +import org.jeecg.modules.demo.zyInfoScjl.entity.ZyInfoScjlOld; +import org.jeecg.modules.demo.zyInfoScjl.service.IZyInfoScjlOldService; +import org.jeecg.modules.demo.zyInfoScjl.service.IZyInfoScjlService; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; + +/** + * 同步作业信息 + */ +@Slf4j +public class SyncVlwkhcl extends BaseSync { + + @Autowired + private IVLwKhclService vLwKhclService; + @Autowired + private ILwKhclService lwKhclService; + /** + * 若参数变量名修改 QuartzJobController中也需对应修改 + */ + + @Override + public void execute(JobExecutionContext jobExecutionContext) { + start(); + run(getParamMap()); + end(); + } + + + /** + * 有参定时任务实现 + * @param param + */ + public void run(Map param){ + List explist = vLwKhclService.list(); + List impList = Lists.newArrayList(); + explist.forEach(x -> impList.add(BeanUtil.toBean(x, LwKhcl.class))); + + lwKhclService.remove(new QueryWrapper<>()); + + lwKhclService.syncList(impList); + + } + + /** + * 无参定时任务实现 + */ + public void run(){ + run(null); + } + + + public static void main(String[] args) { + + LocalDate today = LocalDate.now(); // 获取今天的日期 + LocalDate yesterday = today.minusDays(1); // 减去一天,得到昨天的日期 + System.out.println("昨天的日期是: " + yesterday); + } +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/controller/VLwKhclController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/controller/VLwKhclController.java new file mode 100644 index 0000000..671ff19 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/controller/VLwKhclController.java @@ -0,0 +1,178 @@ +package org.jeecg.modules.demo.vLwKhcl.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.demo.vLwKhcl.entity.VLwKhcl; +import org.jeecg.modules.demo.vLwKhcl.service.IVLwKhclService; + +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: 论文材料视图 + * @Author: jeecg-boot + * @Date: 2024-10-11 + * @Version: V1.0 + */ +@Api(tags="论文材料视图") +@RestController +@RequestMapping("/vLwKhcl/vLwKhcl") +@Slf4j +public class VLwKhclController extends JeecgController { + @Autowired + private IVLwKhclService vLwKhclService; + + /** + * 分页列表查询 + * + * @param vLwKhcl + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "论文材料视图-分页列表查询") + @ApiOperation(value="论文材料视图-分页列表查询", notes="论文材料视图-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(VLwKhcl vLwKhcl, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(vLwKhcl, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = vLwKhclService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param vLwKhcl + * @return + */ + @AutoLog(value = "论文材料视图-添加") + @ApiOperation(value="论文材料视图-添加", notes="论文材料视图-添加") + @RequiresPermissions("vLwKhcl:v_lw_khcl:add") + @PostMapping(value = "/add") + public Result add(@RequestBody VLwKhcl vLwKhcl) { + vLwKhclService.save(vLwKhcl); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param vLwKhcl + * @return + */ + @AutoLog(value = "论文材料视图-编辑") + @ApiOperation(value="论文材料视图-编辑", notes="论文材料视图-编辑") + @RequiresPermissions("vLwKhcl:v_lw_khcl:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody VLwKhcl vLwKhcl) { + vLwKhclService.updateById(vLwKhcl); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "论文材料视图-通过id删除") + @ApiOperation(value="论文材料视图-通过id删除", notes="论文材料视图-通过id删除") + @RequiresPermissions("vLwKhcl:v_lw_khcl:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + vLwKhclService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "论文材料视图-批量删除") + @ApiOperation(value="论文材料视图-批量删除", notes="论文材料视图-批量删除") + @RequiresPermissions("vLwKhcl:v_lw_khcl:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.vLwKhclService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "论文材料视图-通过id查询") + @ApiOperation(value="论文材料视图-通过id查询", notes="论文材料视图-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + VLwKhcl vLwKhcl = vLwKhclService.getById(id); + if(vLwKhcl==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(vLwKhcl); + } + + /** + * 导出excel + * + * @param request + * @param vLwKhcl + */ + @RequiresPermissions("vLwKhcl:v_lw_khcl:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, VLwKhcl vLwKhcl) { + return super.exportXls(request, vLwKhcl, VLwKhcl.class, "论文材料视图"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("vLwKhcl:v_lw_khcl:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, VLwKhcl.class); + } + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/entity/VLwKhcl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/entity/VLwKhcl.java new file mode 100644 index 0000000..c171579 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/entity/VLwKhcl.java @@ -0,0 +1,138 @@ +package org.jeecg.modules.demo.vLwKhcl.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: 论文材料视图 + * @Author: jeecg-boot + * @Date: 2024-10-11 + * @Version: V1.0 + */ +@Data +@TableName("v_lw_khcl") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="v_lw_khcl对象", description="论文材料视图") +public class VLwKhcl implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**学生学号*/ + @Excel(name = "学生学号", width = 15) + @ApiModelProperty(value = "学生学号") + private java.lang.String xsxh; + /**学生姓名*/ + @Excel(name = "学生姓名", width = 15) + @ApiModelProperty(value = "学生姓名") + private java.lang.String xsxm; + /**毕业年份*/ + @Excel(name = "毕业年份", width = 15) + @ApiModelProperty(value = "毕业年份") + private java.lang.String bynf; + /**班级*/ + @Excel(name = "班级", width = 15) + @ApiModelProperty(value = "班级") + private java.lang.String bj; + /**毕业论文(设计)题目*/ + @Excel(name = "毕业论文(设计)题目", width = 15) + @ApiModelProperty(value = "毕业论文(设计)题目") + private java.lang.String bylwTm; + /**毕业论文(设计)类别*/ + @Excel(name = "毕业论文(设计)类别", width = 15) + @ApiModelProperty(value = "毕业论文(设计)类别") + private java.lang.String bylwLb; + /**毕业论文(设计)成绩*/ + @Excel(name = "毕业论文(设计)成绩", width = 15) + @ApiModelProperty(value = "毕业论文(设计)成绩") + private java.lang.String bylwCj; + /**指导教师姓名*/ + @Excel(name = "指导教师姓名", width = 15) + @ApiModelProperty(value = "指导教师姓名") + private java.lang.String zdjsxm; + /**指导教师职称*/ + @Excel(name = "指导教师职称", width = 15) + @ApiModelProperty(value = "指导教师职称") + private java.lang.String zdjszc; + /**所属院系名称*/ + @Excel(name = "所属院系名称", width = 15) + @ApiModelProperty(value = "所属院系名称") + private java.lang.String ssyxmc; + /**所属校内专业(大类)名称*/ + @Excel(name = "所属校内专业(大类)名称", width = 15) + @ApiModelProperty(value = "所属校内专业(大类)名称") + private java.lang.String ssxnzymc; + /**是否实现电子化管理*/ + @Excel(name = "是否实现电子化管理", width = 15) + @ApiModelProperty(value = "是否实现电子化管理") + private java.lang.String sfsxdzhgl; + /**关键词*/ + @Excel(name = "关键词", width = 15) + @ApiModelProperty(value = "关键词") + private java.lang.String gjc; + /**查重结果*/ + @Excel(name = "查重结果", width = 15) + @ApiModelProperty(value = "查重结果") + private java.lang.String ccjg; + /**开题报告*/ + @Excel(name = "开题报告", width = 15) + @ApiModelProperty(value = "开题报告") + private java.lang.String ktbg; + /**开题报告审核意见*/ + @Excel(name = "开题报告审核意见", width = 15) + @ApiModelProperty(value = "开题报告审核意见") + private java.lang.String ktbgshyj; + /**中期检查*/ + @Excel(name = "中期检查", width = 15) + @ApiModelProperty(value = "中期检查") + private java.lang.String zqjc; + /**论文终稿*/ + @Excel(name = "论文终稿", width = 15) + @ApiModelProperty(value = "论文终稿") + private java.lang.String lwzg; + /**论文终稿PDF*/ + @Excel(name = "论文终稿PDF", width = 15) + @ApiModelProperty(value = "论文终稿PDF") + private java.lang.String lwzgPdf; + /**指导记录单*/ + @Excel(name = "指导记录单", width = 15) + @ApiModelProperty(value = "指导记录单") + private java.lang.String zdjld; + /**检测报告等材料*/ + @Excel(name = "检测报告等材料", width = 15) + @ApiModelProperty(value = "检测报告等材料") + private java.lang.String jcbgdcl; + /**入库日期*/ + @ApiModelProperty(value = "入库日期") + private java.lang.String createTime; + /**终稿查重相似率*/ + @Excel(name = "终稿查重相似率", width = 15) + @ApiModelProperty(value = "终稿查重相似率") + private java.lang.String ccjgxsl; + /**终稿下载路径*/ + @Excel(name = "终稿下载路径", width = 15) + @ApiModelProperty(value = "终稿下载路径") + private java.lang.String ccjgdown; + /**主辅修*/ + @Excel(name = "主辅修", width = 15) + @ApiModelProperty(value = "主辅修") + private String zfx; +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/mapper/VLwKhclMapper.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/mapper/VLwKhclMapper.java new file mode 100644 index 0000000..1320f74 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/mapper/VLwKhclMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.vLwKhcl.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.vLwKhcl.entity.VLwKhcl; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 论文材料视图 + * @Author: jeecg-boot + * @Date: 2024-10-11 + * @Version: V1.0 + */ +public interface VLwKhclMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/mapper/xml/VLwKhclMapper.xml b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/mapper/xml/VLwKhclMapper.xml new file mode 100644 index 0000000..d93c129 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/mapper/xml/VLwKhclMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/service/IVLwKhclService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/service/IVLwKhclService.java new file mode 100644 index 0000000..69f0963 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/service/IVLwKhclService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.demo.vLwKhcl.service; + +import org.jeecg.modules.demo.vLwKhcl.entity.VLwKhcl; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 论文材料视图 + * @Author: jeecg-boot + * @Date: 2024-10-11 + * @Version: V1.0 + */ +public interface IVLwKhclService extends IService { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/service/impl/VLwKhclServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/service/impl/VLwKhclServiceImpl.java new file mode 100644 index 0000000..510f7f0 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/vLwKhcl/service/impl/VLwKhclServiceImpl.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.demo.vLwKhcl.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.jeecg.modules.demo.vLwKhcl.entity.VLwKhcl; +import org.jeecg.modules.demo.vLwKhcl.mapper.VLwKhclMapper; +import org.jeecg.modules.demo.vLwKhcl.service.IVLwKhclService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 论文材料视图 + * @Author: jeecg-boot + * @Date: 2024-10-11 + * @Version: V1.0 + */ +@Service +@DS("multi-datasource2") +public class VLwKhclServiceImpl extends ServiceImpl implements IVLwKhclService { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/zjSqxx/controller/ZjSqxxController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/zjSqxx/controller/ZjSqxxController.java index f06673a..19211ee 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/zjSqxx/controller/ZjSqxxController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/zjSqxx/controller/ZjSqxxController.java @@ -9,6 +9,8 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; @@ -98,6 +100,9 @@ public class ZjSqxxController extends JeecgController { @ApiOperation(value="专家授权信息-编辑", notes="专家授权信息-编辑") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result edit(@RequestBody ZjSqxx zjSqxx) { + if(StringUtils.isEmpty(zjSqxx.getXnxq())){ + zjSqxx.setXnxq(""); + } zjSqxxService.updateById(zjSqxx); return Result.OK("操作成功!"); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/zjSqxx/entity/ZjSqxx.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/zjSqxx/entity/ZjSqxx.java index 5f77305..ab559ac 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/zjSqxx/entity/ZjSqxx.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/zjSqxx/entity/ZjSqxx.java @@ -73,16 +73,19 @@ public class ZjSqxx implements Serializable { @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "授权开始时间") + @TableField(updateStrategy = FieldStrategy.IGNORED) private java.util.Date sqStartTime; /**授权结束时间*/ @Excel(name = "授权结束时间", width = 15, format = "yyyy-MM-dd") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "授权结束时间") + @TableField(updateStrategy = FieldStrategy.IGNORED) private java.util.Date sqEndTime; /**学年学期/毕业年份*/ @Excel(name = "学年学期/毕业年份", width = 15) @ApiModelProperty(value = "学年学期/毕业年份") + @TableField(updateStrategy = FieldStrategy.IGNORED) private java.lang.String xnxq; /**课程所属专业*/ @Excel(name = "课程所属专业", width = 15) @@ -91,6 +94,7 @@ public class ZjSqxx implements Serializable { /**课程名称*/ @Excel(name = "课程名称", width = 15) @ApiModelProperty(value = "课程名称") + @TableField(updateStrategy = FieldStrategy.IGNORED) private java.lang.String kcmc; /**开课单位*/ @Excel(name = "开课单位", width = 15) diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java index f31d71b..7e36dba 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java @@ -1,7 +1,9 @@ package org.jeecg.modules.system.controller; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.SymbolConstant; @@ -10,6 +12,7 @@ import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.util.CommonUtils; import org.jeecg.common.util.filter.SsrfFileTypeFilter; import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.utils.SFTPUtil; import org.jeecg.modules.utils.SftpConfig; import org.springframework.beans.factory.annotation.Autowired; @@ -238,7 +241,8 @@ public class CommonController { //update-begin---author:liusq ---date:20230912 for:检查下载文件类型-------------- SsrfFileTypeFilter.checkDownloadFileType(imgPath); //update-end---author:liusq ---date:20230912 for:检查下载文件类型-------------- - if(CommonConstant.UPLOAD_TYPE_SFTP.equals(uploadType)) { +// if(CommonConstant.UPLOAD_TYPE_SFTP.equals(uploadType)) { + if(1==1) { try{ // SFTPUtil.writeFileToRes(sftpConfig,imgPath,response); int index = imgPath.lastIndexOf("/"); @@ -479,4 +483,106 @@ public class CommonController { return new AntPathMatcher().extractPathWithinPattern(bestMatchPattern, path); } + + + @RequestMapping(value = "/ycxz", method = {RequestMethod.PUT,RequestMethod.POST}) + public void ycxz(@RequestBody JSONObject jsonObject, HttpServletResponse response) { + String downpath = jsonObject.getString("filename"); + for(String imgPath: downpath.split(",")){ + // 其余处理略 + InputStream inputStream = null; + OutputStream outputStream = null; + try { + imgPath = imgPath.replace("..", "").replace("../",""); + if (imgPath.endsWith(SymbolConstant.COMMA)) { + imgPath = imgPath.substring(0, imgPath.length() - 1); + } + //update-begin---author:liusq ---date:20230912 for:检查下载文件类型-------------- + SsrfFileTypeFilter.checkDownloadFileType(imgPath); + //update-end---author:liusq ---date:20230912 for:检查下载文件类型-------------- +// if(CommonConstant.UPLOAD_TYPE_SFTP.equals(uploadType)) { + if(1==1) { + try{ +// SFTPUtil.writeFileToRes(sftpConfig,imgPath,response); + int index = imgPath.lastIndexOf("/"); + String path = "temp"; + if(index != -1){ + path = imgPath.substring(0,index); + } + //TODO 不确定是否有问题, + Map map = SFTPUtil.download(sftpConfig,imgPath,getDownloadPath(path)); + if(!map.get("code").equals("0")){ + response.setStatus(404); + throw new RuntimeException(map.get("msg")); + } +// String localFilePath = map.get("fileName"); +// File file = new File(localFilePath); +// if(!file.exists()){ +// response.setStatus(404); +// throw new RuntimeException("文件["+imgPath+"]不存在.."); +// } +// // 设置强制下载不打开 +//// response.setContentType("application/force-download"); +// response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1")); +// inputStream = new BufferedInputStream(new FileInputStream(localFilePath)); +// outputStream = response.getOutputStream(); +// byte[] buf = new byte[1024]; +// int len; +// while ((len = inputStream.read(buf)) > 0) { +// outputStream.write(buf, 0, len); +// } +// response.flushBuffer(); + }catch (Exception e){ +// e.printStackTrace(); + }finally { + SFTPUtil.disChannel(); + SFTPUtil.disSession(); + } + }else { + + } +// String filePath = uploadpath + File.separator + imgPath; +// filePath.replaceAll(" ",""); +// File file = new File(filePath); +// if(!file.exists()){ +// response.setStatus(404); +// log.error("文件["+imgPath+"]不存在.."); +// //throw new RuntimeException(); +// } +// // 设置强制下载不打开 +// response.setContentType("application/force-download"); +// response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1")); +// inputStream = new BufferedInputStream(new FileInputStream(filePath)); +// outputStream = response.getOutputStream(); +// byte[] buf = new byte[1024]; +// int len; +// while ((len = inputStream.read(buf)) > 0) { +// outputStream.write(buf, 0, len); +// } +// response.flushBuffer(); + } catch (IOException e) { + log.error("预览文件失败" + e.getMessage()); + response.setStatus(404); + e.printStackTrace(); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + log.error(e.getMessage(), e); + } + } + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + log.error(e.getMessage(), e); + } + } + } + } + + + } + } diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index a8eadc5..4c03df1 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -370,6 +370,17 @@ public class SysUserController { return sysUserService.changePassword(sysUser); } + @RequiresPermissions("system:user:changepwd") + @RequestMapping(value = "/chongzhiPassword", method = RequestMethod.PUT) + public Result chongzhiPassword() { + List list = sysUserService.list(); + for(SysUser sysUser : list){ + sysUser.setPassword("Zjpt123456"); + sysUserService.changePassword(sysUser); + } + return Result.ok("密码重置成功!"); + } + /** * 查询指定用户和部门关联的数据 * diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index b50f882..8455b79 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -171,6 +171,12 @@ spring: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver + + multi-datasource2: + url: jdbc:mysql://localhost:3306/course_information_center_jeecg_db?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver #redis 配置 redis: database: 0 @@ -232,7 +238,7 @@ jeecg: cluster-nodes: 127.0.0.1:9200 check-enabled: false # 在线预览文件服务器地址配置 - file-view-domain: http://fileview.jeecg.com + file-view-domain: https://fileview.jeecg.com # minio文件上传 minio: minio_url: http://minio.jeecg.com diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml index 5186b64..6dd019e 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml @@ -171,6 +171,12 @@ spring: username: root password: ABCabc@123 driver-class-name: com.mysql.cj.jdbc.Driver + + multi-datasource2: + url: jdbc:mysql://210.47.16.225:3306/lwxt2022?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + username: root + password: 0!aPN29E= + driver-class-name: com.mysql.cj.jdbc.Driver #redis 配置 redis: database: 0 @@ -233,7 +239,7 @@ jeecg: cluster-nodes: 127.0.0.1:9200 check-enabled: false # 在线预览文件服务器地址配置 - file-view-domain: http://fileview.jeecg.com + file-view-domain: https://fileview.jeecg.com # minio文件上传 minio: minio_url: http://minio.jeecg.com diff --git a/jeecgboot-vue3/.env.production b/jeecgboot-vue3/.env.production index dbb79db..d93c54d 100644 --- a/jeecgboot-vue3/.env.production +++ b/jeecgboot-vue3/.env.production @@ -16,7 +16,7 @@ VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false VITE_GLOB_API_URL=/jeecg-boot #后台接口全路径地址(必填) -VITE_GLOB_DOMAIN_URL=http://jxdd.nenu.edu.cn/jeecg-boot +VITE_GLOB_DOMAIN_URL=https://jxdd.nenu.edu.cn/jeecg-boot # 接口父路径前缀 VITE_GLOB_API_URL_PREFIX= diff --git a/jeecgboot-vue3/src/components/jeecg/JVxeTable/src/hooks/useWebSocket.ts b/jeecgboot-vue3/src/components/jeecg/JVxeTable/src/hooks/useWebSocket.ts index ba0d355..8b90785 100644 --- a/jeecgboot-vue3/src/components/jeecg/JVxeTable/src/hooks/useWebSocket.ts +++ b/jeecgboot-vue3/src/components/jeecg/JVxeTable/src/hooks/useWebSocket.ts @@ -51,20 +51,20 @@ const vs = { /** 初始化 WebSocket */ initialWebSocket() { - if (this.ws === null) { - const userId = useUserStore().getUserInfo?.id; - const domainURL = useGlobSetting().uploadUrl!; - const domain = domainURL.replace('https://', 'wss://').replace('http://', 'ws://'); - const url = `${domain}/vxeSocket/${userId}/${this.pageId}`; - //update-begin-author:taoyan date:2022-4-24 for: v2.4.6 的 websocket 服务端,存在性能和安全问题。 #3278 - let token = (getToken() || '') as string; - this.ws = new WebSocket(url, [token]); - //update-end-author:taoyan date:2022-4-24 for: v2.4.6 的 websocket 服务端,存在性能和安全问题。 #3278 - this.ws.onopen = this.on.open.bind(this); - this.ws.onerror = this.on.error.bind(this); - this.ws.onmessage = this.on.message.bind(this); - this.ws.onclose = this.on.close.bind(this); - } + // if (this.ws === null) { + // const userId = useUserStore().getUserInfo?.id; + // const domainURL = useGlobSetting().uploadUrl!; + // const domain = domainURL.replace('https://', 'wss://').replace('http://', 'ws://'); + // const url = `${domain}/vxeSocket/${userId}/${this.pageId}`; + // //update-begin-author:taoyan date:2022-4-24 for: v2.4.6 的 websocket 服务端,存在性能和安全问题。 #3278 + // let token = (getToken() || '') as string; + // this.ws = new WebSocket(url, [token]); + // //update-end-author:taoyan date:2022-4-24 for: v2.4.6 的 websocket 服务端,存在性能和安全问题。 #3278 + // this.ws.onopen = this.on.open.bind(this); + // this.ws.onerror = this.on.error.bind(this); + // this.ws.onmessage = this.on.message.bind(this); + // this.ws.onclose = this.on.close.bind(this); + // } }, // 发送消息 diff --git a/jeecgboot-vue3/src/layouts/default/header/components/notify/index.vue b/jeecgboot-vue3/src/layouts/default/header/components/notify/index.vue index e07f609..150311e 100644 --- a/jeecgboot-vue3/src/layouts/default/header/components/notify/index.vue +++ b/jeecgboot-vue3/src/layouts/default/header/components/notify/index.vue @@ -120,14 +120,14 @@ // 初始化 WebSocket function initWebSocket() { - let token = getToken(); - //将登录token生成一个短的标识 - let wsClientId = md5(token); - let userId = unref(userStore.getUserInfo).id + "_" + wsClientId; - // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https - let url = glob.domainUrl?.replace('https://', 'wss://').replace('http://', 'ws://') + '/websocket/' + userId; - connectWebSocket(url); - onWebSocket(onWebSocketMessage); + // let token = getToken(); + // //将登录token生成一个短的标识 + // let wsClientId = md5(token); + // let userId = unref(userStore.getUserInfo).id + "_" + wsClientId; + // // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https + // let url = glob.domainUrl?.replace('https://', 'wss://').replace('http://', 'ws://') + '/websocket/' + userId; + // connectWebSocket(url); + // onWebSocket(onWebSocketMessage); } function onWebSocketMessage(data) { diff --git a/jeecgboot-vue3/src/layouts/default/header/components/user-dropdown/UpdatePassword.vue b/jeecgboot-vue3/src/layouts/default/header/components/user-dropdown/UpdatePassword.vue index b0962a6..cbd9179 100644 --- a/jeecgboot-vue3/src/layouts/default/header/components/user-dropdown/UpdatePassword.vue +++ b/jeecgboot-vue3/src/layouts/default/header/components/user-dropdown/UpdatePassword.vue @@ -43,6 +43,10 @@ required: true, message: t('layout.changePassword.pleaseEnterNewPassword'), }, + { + pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, + message: '密码由8位数字、大小写字母和特殊符号组成!', + }, ], }, { diff --git a/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXz.data.ts b/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXz.data.ts index 456dc1c..94b7250 100644 --- a/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXz.data.ts +++ b/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXz.data.ts @@ -125,12 +125,6 @@ export const columns2: BasicColumn[] = [ dataIndex: 'ssxnzymc', ellipsis: true, }, - { - title: '指导教师姓名', - align: "center", - dataIndex: 'zdjsxm', - ellipsis: true, - }, { title: '学生学号', align: "center", @@ -149,6 +143,12 @@ export const columns2: BasicColumn[] = [ dataIndex: 'bylwTm', ellipsis: true, }, + { + title: '指导教师姓名', + align: "center", + dataIndex: 'zdjsxm', + ellipsis: true, + }, { title: '毕业年份', align: "center", @@ -161,12 +161,12 @@ export const columns2: BasicColumn[] = [ // dataIndex: 'bj', // ellipsis: true, // }, - { - title: '论文类别', - align: "center", - dataIndex: 'bylwLb', - ellipsis: true, - }, + // { + // title: '论文类别', + // align: "center", + // dataIndex: 'bylwLb', + // ellipsis: true, + // }, { title: '论文成绩', align: "center", @@ -194,12 +194,6 @@ export const columns3: BasicColumn[] = [ dataIndex: 'ssxnzymc', ellipsis: true, }, - { - title: '指导教师姓名', - align: "center", - dataIndex: 'zdjsxm', - ellipsis: true, - }, { title: '学生学号', align: "center", @@ -218,6 +212,12 @@ export const columns3: BasicColumn[] = [ dataIndex: 'bylwTm', ellipsis: true, }, + { + title: '指导教师姓名', + align: "center", + dataIndex: 'zdjsxm', + ellipsis: true, + }, { title: '毕业年份', align: "center", @@ -230,12 +230,12 @@ export const columns3: BasicColumn[] = [ // dataIndex: 'bj', // ellipsis: true, // }, - { - title: '论文类别', - align: "center", - dataIndex: 'bylwLb', - ellipsis: true, - }, + // { + // title: '论文类别', + // align: "center", + // dataIndex: 'bylwLb', + // ellipsis: true, + // }, { title: '论文成绩', align: "center", diff --git a/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXzList.vue b/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXzList.vue deleted file mode 100644 index 9bc8070..0000000 --- a/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXzList.vue +++ /dev/null @@ -1,235 +0,0 @@ - - - - - diff --git a/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXzListIndex.vue b/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXzListIndex.vue index dd6347c..c6fef18 100644 --- a/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXzListIndex.vue +++ b/jeecgboot-vue3/src/views/bl/lwKhclXz/LwKhclXzListIndex.vue @@ -12,6 +12,12 @@
+ 查看材料
@@ -34,10 +40,22 @@ class="query-criteria" > + + + + + + - - + + + + + + + + @@ -47,36 +65,24 @@ - - - - 全部 - - - + + + - - - + + + 全部 - - + + + + - - - - - 全部 - - - - - - + 查询 @@ -103,6 +109,12 @@
+ 查看材料
@@ -125,6 +137,11 @@ {{ lwinfo.value.zdjsxm }} + + + {{ lwinfo.value.zdjszc }} + + @@ -136,6 +153,11 @@ {{ lwinfo.value.xsxm }} + + + {{ lwinfo.value.zfx }} + + {{ lwinfo.value.bylwTm }} @@ -166,16 +188,16 @@ 1 材料信息
下载全部材料
- +
-
下载开题报告
暂无文件
- +
下载开题报告审核意见
暂无文件
- + +
下载论文终稿
暂无文件
- +
下载指导记录单
暂无文件
- +
@@ -229,6 +251,12 @@ 返回选择论文 +
@@ -243,10 +271,22 @@ class="query-criteria" > + + + + + + - - + + + + + + + + @@ -256,38 +296,25 @@ - - - - 全部 - - - + + + - - - + + + 全部 - - + + + + - - - - - 全部 - - - - - - + 查询 - @@ -364,69 +391,106 @@ const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDat //批量下载 async function batchHandleDown(record) { console.log('🙍‍♂️', record); - var downName = '学生论文材料' + dayjs().format('YYYYMMDDHHmmss') + ''; + // 毕业论文-学院-专业-学生姓名-学号 + var downName = + '毕业论文-' + + record.value.ssyxmc + + '-' + + (record.value.ssxnzymc ? record.value.ssxnzymc : '') + + '-' + + record.value.xsxm + + '-' + + record.value.xsxh + + ''; var params = { id: record.value.id, downName }; console.log('🕵', params); defHttp.post({ url: '/lwKhclXz/lwKhclXz/getLwBatchDown', params: { id: record.value.id, downName } }).then((res) => { - console.log('---------',res); + console.log('---------', res); downloadFileLoacl(res.downLoadPath); }); } //下载 function handleDownload(record) { + record = record.replaceAll(" ","").replaceAll("(","(").replaceAll(")",")"); downloadFile(record); } //预览 function handleYulan(record) { console.log('😶', record); var file = getFileAccessHttpUrl(record); - window.open('https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); + window.open('https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); } //查看论文材料 -function handleChakan(record) { +async function handleChakan(record) { + console.log("record--->",record) lwinfo.value = record; + console.log("lwinfo--->",lwinfo) sfxk.value = 2; - if (lwinfo.value.ktbg) { - var file1 = getFileAccessHttpUrl(record.ktbg); - ktbgUrl.value = 'https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); + var filename = ""; + + if (record.ktbg) { + filename = filename+record.ktbg+","; + } + if (record.ktbgshyj) { + filename = filename+record.ktbgshyj+","; + } + if (record.lwzg) { + filename = filename+record.lwzg+","; + } + if (record.zdjld) { + filename = filename+record.zdjld+","; + } + + if(filename){ + console.log("filename--->",filename) + defHttp.post({ url: '/sys/common/ycxz',params:{filename} }).then((res) => {}); + } + + if (record.ktbg) { + var file1 = getFileAccessHttpUrl(record.ktbg.replaceAll(" ","").replaceAll("(","(").replaceAll(")",")")); + console.log("file1---->",file1); + console.log("file11111---->",encodeURIComponent(encryptByBase64(file1))); + ktbgUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); } else { ktbgUrl.value = ''; } - if (lwinfo.value.ktbgshyj) { - var file1 = getFileAccessHttpUrl(record.ktbgshyj); - ktbgshyjUrl.value = 'https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); + if (record.ktbgshyj) { + var file1 = getFileAccessHttpUrl(record.ktbgshyj.replaceAll(" ","").replaceAll("(","(").replaceAll(")",")")); + ktbgshyjUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); } else { ktbgshyjUrl.value = ''; } - if (lwinfo.value.zqjc) { - var file1 = getFileAccessHttpUrl(record.zqjc); - zqjcUrl.value = 'https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); - } else { - zqjcUrl.value = ''; - } + // if (lwinfo.value.zqjc) { + // var file1 = getFileAccessHttpUrl(record.zqjc.replace(" ","")); + // zqjcUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); + // } else { + // zqjcUrl.value = ''; + // } - if (lwinfo.value.lwzg) { - var file1 = getFileAccessHttpUrl(record.lwzg); - lwzgUrl.value = 'https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); + if (record.lwzg) { + var file1 = getFileAccessHttpUrl(record.lwzg.replaceAll(" ","").replaceAll("(","(").replaceAll(")",")")); + lwzgUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); } else { lwzgUrl.value = ''; } - if (lwinfo.value.zdjld) { - var file1 = getFileAccessHttpUrl(record.zdjld); - zdjldUrl.value = 'https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); + if (record.zdjld) { + var file1 = getFileAccessHttpUrl(record.zdjld.replaceAll(" ","").replaceAll("(","(").replaceAll(")",")")); + zdjldUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1)); } else { zdjldUrl.value = ''; } - if (lwinfo.value.ccjg) { + if (record.ccjg) { jcbgUrl.value = record.ccjg; } else { jcbgUrl.value = ''; } + + } /** * 操作栏 @@ -489,8 +553,9 @@ function handleXUanze(record) { }) .then((res) => { console.log('🤛', res); + xtsuccess(); }); - xtsuccess(); + } //选课删除 async function handleDel(record) { @@ -612,4 +677,8 @@ onMounted(() => { border-radius: 10px; color: #1890ff; } +.mbxtitle { + font-size: 22px; + line-height: 22px; +} diff --git a/jeecgboot-vue3/src/views/bl/lwKhclXz/Xzlwkhcl.vue b/jeecgboot-vue3/src/views/bl/lwKhclXz/Xzlwkhcl.vue new file mode 100644 index 0000000..9121cd9 --- /dev/null +++ b/jeecgboot-vue3/src/views/bl/lwKhclXz/Xzlwkhcl.vue @@ -0,0 +1,686 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/bl/lwkhcl/components/LwKhclXqList.vue b/jeecgboot-vue3/src/views/bl/lwkhcl/components/LwKhclXqList.vue index 359cb7c..250888b 100644 --- a/jeecgboot-vue3/src/views/bl/lwkhcl/components/LwKhclXqList.vue +++ b/jeecgboot-vue3/src/views/bl/lwkhcl/components/LwKhclXqList.vue @@ -219,7 +219,7 @@ import {encryptByBase64} from "@/utils/cipher"; function handleYulan(record){ var file = getFileAccessHttpUrl(record.fwqPath) ; console.log('🤬', file); - window.open('https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); + window.open('https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); } /** diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/XxhbjwxtjxrwList3.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/XxhbjwxtjxrwList3.vue index 257c0a1..388b1b0 100644 --- a/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/XxhbjwxtjxrwList3.vue +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/XxhbjwxtjxrwList3.vue @@ -12,6 +12,14 @@
+ + + 查看材料
@@ -104,27 +112,104 @@
-->
-
+ -
+ -
+ -
+ + +
+
+ + + + + 返回 + + + +
+
+ + + 1 课程考核材料详情 + +
+ {{ jxrwInfo?.value.xn }}{{ jxrwInfo?.value.xqmc }}学期《{{ jxrwInfo?.value.kcmc }}》 +
+
+
概要信息
+ + + 开课单位{{ jxrwInfo?.value.kkyxmc }} + + + 课程类别{{ jxrwInfo?.value.kclb }} + + + 课程名称{{ jxrwInfo?.value.kcmc }} + + + 课程负责人{{ jxrwInfo?.value.teaxm }} + + + 选课人数{{ jxrwInfo?.value.jxbrs }} + + +
+
+
+
+
+ + + + + + + + +
+ +
+
+ +
+
+
+
+ 返回选课 +
@@ -235,6 +320,11 @@ import XxhbjwxtscwjxxList from '/@/views/bl/xxhbjwxtscwjxx/XxhbjwxtscwjxxList.vu import XxhbjwxtxsmdList3 from '/@/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList3.vue'; import XxhbjwxtxsmdList4 from '/@/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList4.vue'; +import XscjList from './components/XscjList.vue'; +import KhpjclList from '/@/views/bl/xxhbjwxtscwjxx/KhpjclList.vue'; +import XsysclList from '/@/views/bl/xxhbjwxtxsmd/XsysclList.vue'; +import XsysclxqList from '/@/views/bl/xxhbjwxtxsmd/XsysclxqList.vue'; + const formRef = ref(); const formRef3 = ref(); const cjdFormModal = ref(); @@ -248,11 +338,14 @@ const registerModal = ref(); const userStore = useUserStore(); const emit = defineEmits(['callback']); const sfxk = ref(0); +const sfxk2 = ref(0); const checkData = ref([]); const dataList = ref([]); import { Pagination } from 'ant-design-vue'; +const jxrwInfo = reactive({}); const APagination = Pagination; const { createMessage } = useMessage(); +const activeKey = ref('1'); //注册table数据 const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({ tableProps: { @@ -260,10 +353,10 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({ columns: columns3, canResize: false, useSearchForm: false, - actionColumn: { - width: 320, - fixed: 'right', - }, + // actionColumn: { + // width: 320, + // fixed: 'right', + // }, beforeFetch: async (params) => { return Object.assign(params, queryParam); }, @@ -311,6 +404,10 @@ function handleXsyscl(record) { sfxk.value = 4; xsysclFormModal.value.init(record); } +//学生原始材料 +function handleXsyscl2(record) { + sfxk2.value = 0; +} //选课 function handleXuanke() { sfxk.value = 1; @@ -318,7 +415,7 @@ function handleXuanke() { } function handleXsysclxq(record) { console.log('👨‍⚕️handleXsysclxq', record); - sfxk.value = 5; + sfxk2.value = 5; xsysclXqFormModal.value.init(record); } //返回首页 @@ -339,11 +436,11 @@ function handleQueren(record) { checkData.value.push(record); } //选课删除 -async function handleDel(record) { +async function handleDel(record) { await deleteXkxxOne({ id: record.id }, xtsuccess); } -function xtsuccess(){ +function xtsuccess() { //获取是否有选课信息 defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageSize: -1 } }).then((res) => { console.log('🧛', res); @@ -384,7 +481,7 @@ function handleXUanze(record) { .then((res) => { console.log('🤛', res); }); - xtsuccess(); + xtsuccess(); } //选课提交 @@ -417,24 +514,48 @@ function handleDetail(record: Recordable) { function handleSuccess() { (selectedRowKeys.value = []) && reload(); } +/** + * 查看 + */ +function handleView(record) { + jxrwInfo.value = record; + cjdFormModal.value.init(jxrwInfo.value); //成绩单 + // khpjclFormModal.value.init(record); //考核评价材料 + // xsysclFormModal.value.init(record); //学生原始材料 + sfxk.value = 6; + sfxk2.value = 0; + activeKey.value = '1'; +} +function onChangeTab(tab) { + console.log('🎒', tab); + if(tab==2){ + khpjclFormModal.value.init(jxrwInfo.value); //考核评价材料 + }else if(tab==3){ + xsysclFormModal.value.init(jxrwInfo.value); //学生原始材料 + } +} /** * 操作栏 */ function getTableAction(record) { return [ { - label: '学生成绩', - onClick: handleCjd.bind(null, record), - }, - { - label: '考核评价材料', - onClick: handleKhpjcl.bind(null, record), - }, - { - label: '学生原始材料', - onClick: handleXsyscl.bind(null, record), + label: '查看', + onClick: handleView.bind(null, record), }, + // { + // label: '学生成绩', + // onClick: handleCjd.bind(null, record), + // }, + // { + // label: '考核评价材料', + // onClick: handleKhpjcl.bind(null, record), + // }, + // { + // label: '学生原始材料', + // onClick: handleXsyscl.bind(null, record), + // }, ]; } @@ -549,4 +670,8 @@ onMounted(() => { border-radius: 10px; color: #1890ff; } +.mbxtitle { + font-size: 22px; + line-height: 22px; +} diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/XzkckhclList.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/XzkckhclList.vue new file mode 100644 index 0000000..6558db1 --- /dev/null +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/XzkckhclList.vue @@ -0,0 +1,692 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/components/CjdForm.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/components/CjdForm.vue index 7a50812..46655af 100644 --- a/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/components/CjdForm.vue +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/components/CjdForm.vue @@ -4,6 +4,15 @@ + + 返回 @@ -267,4 +276,7 @@ border:1px solid #e4e9f2; box-shadow: 2px 2px 10px 2px #e4e9f2; border-radius:4px; } +.mbxtitle{ + font-size: 22px;line-height: 22px +} diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/components/XscjList.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/components/XscjList.vue new file mode 100644 index 0000000..ebcb1ec --- /dev/null +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtjxrw/components/XscjList.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtscwjxx/KhpjclList.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtscwjxx/KhpjclList.vue new file mode 100644 index 0000000..65d0ff5 --- /dev/null +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtscwjxx/KhpjclList.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtscwjxx/XxhbjwxtscwjxxList.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtscwjxx/XxhbjwxtscwjxxList.vue index 317b404..4ee3383 100644 --- a/jeecgboot-vue3/src/views/bl/xxhbjwxtscwjxx/XxhbjwxtscwjxxList.vue +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtscwjxx/XxhbjwxtscwjxxList.vue @@ -4,7 +4,16 @@ - 返回 + + + 返回 @@ -74,7 +83,7 @@ const queryParam = reactive({}); const toggleSearchStatus = ref(false); const registerModal = ref(); const userStore = useUserStore(); -const jxrwInfo = reactive({}); +const jxrwInfo = reactive({kcmc:''}); import { getFileAccessHttpUrl } from '@/utils/common/compUtils'; import { encryptByBase64 } from '@/utils/cipher'; import { defHttp } from '/@/utils/http/axios'; @@ -198,7 +207,7 @@ function handleYulan(record) { var file = getFileAccessHttpUrl(record.path); console.log('🤬', file); // window.open('https://view.xdocin.com/view?src=' + encodeURIComponent(encryptByBase64(file))); - // window.open('https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); + // window.open('https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); window.open(file, '_blank'); } /** @@ -342,4 +351,7 @@ border-radius:4px; .ant-table-wrapper .ant-table.ant-table-middle{ font-size: 18px; } +.mbxtitle{ + font-size: 22px;line-height: 22px +} diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XsysclList.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XsysclList.vue new file mode 100644 index 0000000..db5a6d0 --- /dev/null +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XsysclList.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XsysclxqList.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XsysclxqList.vue new file mode 100644 index 0000000..674e2dd --- /dev/null +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XsysclxqList.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList3.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList3.vue index ab5939b..d72e8bc 100644 --- a/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList3.vue +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList3.vue @@ -4,6 +4,14 @@ + 返回 @@ -250,4 +258,7 @@ border:1px solid #e4e9f2; box-shadow: 2px 2px 10px 2px #e4e9f2; border-radius:4px; } +.mbxtitle{ + font-size: 22px;line-height: 22px +} diff --git a/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList4.vue b/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList4.vue index 6537583..2ba07bc 100644 --- a/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList4.vue +++ b/jeecgboot-vue3/src/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList4.vue @@ -4,7 +4,16 @@
- + + 返回 @@ -155,7 +164,7 @@ function handleYulan(record) { var file = getFileAccessHttpUrl(record.studentPath); console.log('🤬', file); // window.open('https://view.xdocin.com/view?src=' + encodeURIComponent(encryptByBase64(file))); - // window.open('https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); + // window.open('https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); window.open(file, '_blank'); } /** @@ -303,4 +312,7 @@ border-radius:4px; font-size:16px; color: #666; } +.mbxtitle{ + font-size: 22px;line-height: 22px +} diff --git a/jeecgboot-vue3/src/views/bl/zjSqxx/components/ZjSqxxEditForm.vue b/jeecgboot-vue3/src/views/bl/zjSqxx/components/ZjSqxxEditForm.vue index 87f45a3..c622a72 100644 --- a/jeecgboot-vue3/src/views/bl/zjSqxx/components/ZjSqxxEditForm.vue +++ b/jeecgboot-vue3/src/views/bl/zjSqxx/components/ZjSqxxEditForm.vue @@ -156,11 +156,11 @@ --> - + diff --git a/jeecgboot-vue3/src/views/bl/zjSqxx/components/ZjSqxxForm.vue b/jeecgboot-vue3/src/views/bl/zjSqxx/components/ZjSqxxForm.vue index 0843b45..da2b8d2 100644 --- a/jeecgboot-vue3/src/views/bl/zjSqxx/components/ZjSqxxForm.vue +++ b/jeecgboot-vue3/src/views/bl/zjSqxx/components/ZjSqxxForm.vue @@ -160,11 +160,11 @@ --> - + diff --git a/jeecgboot-vue3/src/views/bl/zyHuizongXiangxi/ZyHuizongXiangxiList.vue b/jeecgboot-vue3/src/views/bl/zyHuizongXiangxi/ZyHuizongXiangxiList.vue index 1d55f43..7ffc3a2 100644 --- a/jeecgboot-vue3/src/views/bl/zyHuizongXiangxi/ZyHuizongXiangxiList.vue +++ b/jeecgboot-vue3/src/views/bl/zyHuizongXiangxi/ZyHuizongXiangxiList.vue @@ -163,7 +163,7 @@ function handleSuccess() { function handleYulan(record){ var file = getFileAccessHttpUrl(record.fwqPath) ; console.log('🤬', file); - window.open('https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); + window.open('https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); } function handleDown(record){ downloadFile(record.filePath) diff --git a/jeecgboot-vue3/src/views/bl/zyHuizongXiangxi/ZyHuizongXiangxiList2.vue b/jeecgboot-vue3/src/views/bl/zyHuizongXiangxi/ZyHuizongXiangxiList2.vue index 8046573..dfb52ed 100644 --- a/jeecgboot-vue3/src/views/bl/zyHuizongXiangxi/ZyHuizongXiangxiList2.vue +++ b/jeecgboot-vue3/src/views/bl/zyHuizongXiangxi/ZyHuizongXiangxiList2.vue @@ -148,7 +148,7 @@ function handleSuccess() { function handleYulan(record){ var file = getFileAccessHttpUrl(record.fwqPath) ; console.log('🤬', file); - window.open('https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); + window.open('https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); } function handleDown(record){ downloadFile(record.filePath) diff --git a/jeecgboot-vue3/src/views/demo/jeecg/JeecgPdfView.vue b/jeecgboot-vue3/src/views/demo/jeecg/JeecgPdfView.vue index 0a009e9..06ee06c 100644 --- a/jeecgboot-vue3/src/views/demo/jeecg/JeecgPdfView.vue +++ b/jeecgboot-vue3/src/views/demo/jeecg/JeecgPdfView.vue @@ -43,6 +43,14 @@ fileName: '实例', filePdfPath: '实例', }, + { + id: '2', + key: '2', + title: '实例22.pdf', + fileCode: 'shili', + fileName: '实例2', + filePdfPath: '实例2', + }, ]; export default defineComponent({ diff --git a/jeecgboot-vue3/src/views/demo/system/password/pwd.data.ts b/jeecgboot-vue3/src/views/demo/system/password/pwd.data.ts index be5f9b1..7be87b9 100644 --- a/jeecgboot-vue3/src/views/demo/system/password/pwd.data.ts +++ b/jeecgboot-vue3/src/views/demo/system/password/pwd.data.ts @@ -19,6 +19,10 @@ export const formSchema: FormSchema[] = [ required: true, message: '请输入新密码', }, + { + pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, + message: '密码由8位数字、大小写字母和特殊符号组成!', + }, ], }, { diff --git a/jeecgboot-vue3/src/views/system/user/index.vue b/jeecgboot-vue3/src/views/system/user/index.vue index 8970f7e..7f0edf1 100644 --- a/jeecgboot-vue3/src/views/system/user/index.vue +++ b/jeecgboot-vue3/src/views/system/user/index.vue @@ -8,6 +8,7 @@ 导出 导入 回收站 + 初始化密码