添加功能

This commit is contained in:
yangjun 2024-09-23 13:29:50 +08:00
parent ca5fc1a8a7
commit dd11fb83b4
32 changed files with 671 additions and 175 deletions

View File

@ -45,12 +45,14 @@ public class CommonUtils {
* 中文正则
*/
private static Pattern ZHONGWEN_PATTERN = Pattern.compile("[\u4e00-\u9fa5]");
// private static Pattern ZHONGWEN_PATTERN = Pattern.compile("[-]");
/**
* 文件名 正则字符串
* 文件名支持的字符串字母数字中文.-_() 除此之外的字符将被删除
*/
private static String FILE_NAME_REGEX = "[^A-Za-z\\.\\(\\)\\-\\_0-9\\u4e00-\\u9fa5]";
private static String FILE_NAME_REGEX = "[^A-Za-z\\.\\(\\)\\-\\_0-9\\u4e00-\\u9fa5\\\\】]";
// private static String FILE_NAME_REGEX = "[^A-Za-z\\.\\(\\)\\-\\_0-9]";
public static String uploadOnlineImage(byte[] data,String basePath,String bizPath,String uploadType){
String dbPath = null;

View File

@ -12,7 +12,7 @@ public class StrAttackFilter {
public static String filter(String str) throws PatternSyntaxException {
// 清除掉所有特殊字符
String regEx = "[`_《》~!@#$%^&*()+=|{}':;',\\[\\].<>?~@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
String regEx = "[`_《》~!@#$%^&*()+=|{}':;',\\[\\].<>?~@#¥%……&*()——+|{}‘;:”“’。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
@ -20,7 +20,7 @@ public class StrAttackFilter {
public static String filter2(String str) {
// 清除掉所有特殊字符
String regEx = "[`《》~!@#$%^&*()+=|{}':;',\\[\\]<>?~@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
String regEx = "[`《》~!@#$%^&*()+=|{}':;',\\[\\]<>?~@#¥%……&*()——+|{}‘;:”“’。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();

View File

@ -122,6 +122,46 @@ public class KcKetangbiaoController extends JeecgController<KcKetangbiao, IKcKet
IPage<KcKetangbiao> pageList = kcKetangbiaoService.getKclblist(page, kcKetangbiao);
return Result.OK(pageList);
}
@ApiOperation(value="课堂表-分页列表查询", notes="课堂表-分页列表查询")
@GetMapping(value = "/getYylist")
public Result<IPage<KcKetangbiao>> getYylist(KcKetangbiao kcKetangbiao,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
Page<KcKetangbiao> page = new Page<KcKetangbiao>(pageNo, pageSize);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
QueryWrapper<ZjSqxx> zjSqxxQueryWrapper = new QueryWrapper<>();
zjSqxxQueryWrapper.eq("user_id",sysUser.getId());
zjSqxxQueryWrapper.eq("sqfw","1");
zjSqxxQueryWrapper.eq("sqzt","0");
ZjSqxx zjSqxx = zjSqxxService.getOne(zjSqxxQueryWrapper);
String sfjx = "0";
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())){
kcKetangbiao.setXnxq(zjSqxx.getXnxq());
}
if(StringUtils.isNotBlank(zjSqxx.getKkdw())){
kcKetangbiao.setInKkdw(zjSqxx.getKkdw());
}
if(StringUtils.isNotBlank(zjSqxx.getKcmc())){
kcKetangbiao.setInKcmc(zjSqxx.getKcmc());
}
}
if(StringUtils.equals("1",sfjx)){
return Result.error("您未在授权期限内,不能进行查询!");
}
IPage<KcKetangbiao> pageList = kcKetangbiaoService.getYylist(page, kcKetangbiao);
return Result.OK(pageList);
}
/**
* 添加

View File

@ -21,4 +21,6 @@ public interface KcKetangbiaoMapper extends BaseMapper<KcKetangbiao> {
IPage<KcKetangbiao> getKclblist(Page<KcKetangbiao> page, KcKetangbiao kcKetangbiao);
IPage<KcKetangbiao> checklist(Page<KcKetangbiao> page, KcKetangbiao kcKetangbiao);
IPage<KcKetangbiao> getYylist(Page<KcKetangbiao> page, KcKetangbiao kcKetangbiao);
}

View File

@ -89,7 +89,94 @@
</where>
order by ktb.hh asc,kkdw.id asc,IF(tkxx.kcmc is null,'0','1') asc
</select>
<select id="getYylist" parameterType="org.jeecg.modules.demo.kcKetangbiao.entity.KcKetangbiao" resultType="org.jeecg.modules.demo.kcKetangbiao.entity.KcKetangbiao">
select ktb.*,if(yy.id is null,0,1) as sfyy,yy.isdeleted, case when js.jsbh is NULL then 0 else 1 end sfyzhjs,
if(jc.hhks is null,'00:00:00',concat(substr(jc.hhks,1,2),':',substr(jc.hhks,3,4),':00')) as xjkssj,
if(jc.hhjs is null,'00:00:00',concat(substr(jc.hhjs,1,2),':',substr(jc.hhjs,3,4),':00')) as jssj,
kcb.szkc,IF(tkxx.kcmc is null,'0','1') as sftkb,tkxx.tksy
from kc_ketangbiao ktb
left join kc_yuyue yy on ktb.kcmc = yy.kcmc and ktb.skjs = yy.skjs and ktb.rwbh = yy.rwbh and ktb.xnxq and yy.xqxn
LEFT JOIN (SELECT DISTINCT jsbh, jsmc from kc_zhihuijiaoshi where sfyx=0) js on ktb.jsbh = js.jsbh
left join xxhbjsjbxx jsjbxx on jsjbxx.jsmc = ktb.skdd
left join xxhbjxljbxx jxljbxx on jsjbxx.jxlh = jxljbxx.jzwh
left join kc_jieci jc on ktb.hh = jc.jieci
left join kc_kechengbiao kcb on kcb.kcmc = ktb.kcmc and kcb.kcxz = ktb.kcxz and kcb.skjs = ktb.skjs and kcb.skdd=ktb.skdd and kcb.kkdw = ktb.kkdw and kcb.kcbh = ktb.kcbh and kcb.id = ktb.kechengbiaoid
left join (select distinct tkxx.xm,tkxx.kcmc,concat(substring(tkxx.skrq,1,4),'-',substring(tkxx.skrq,5,2),'-',substring(tkxx.skrq,7,2)) as skrq,tkxx.skjs,tkxx.tksy from xxhbtkxx tkxx where tkxx.tklx != '3' and tkxx.skrq is not null) tkxx
on ktb.kcmc =tkxx.kcmc and ktb.skrq = tkxx.skrq and ktb.skdd=tkxx.skjs and ktb.skjs = tkxx.xm
left join kc_kkdw kkdw on ktb.kkdw = kkdw.kkdw
<where>
and ktb.is_delete = 0
and yy.userid = #{kcKetangbiao.userid}
<if test="kcKetangbiao.ywmc!=null and kcKetangbiao.ywmc!=''">
and (ktb.skjs like concat('%',#{kcKetangbiao.ywmc},'%') or ktb.kcmc like concat('%',#{kcKetangbiao.ywmc},'%') )
</if>
<if test="kcKetangbiao.skxs!=null and kcKetangbiao.skxs!=''">
and ktb.skxs = #{kcKetangbiao.skxs}
</if>
<if test="kcKetangbiao.ywskxs!=null and kcKetangbiao.ywskxs!=''">
and ktb.skxs != #{kcKetangbiao.ywskxs}
</if>
<if test="kcKetangbiao.skrq!=null and kcKetangbiao.skrq!=''">
and ktb.skrq = #{kcKetangbiao.skrq}
</if>
<if test="kcKetangbiao.hh!=null and kcKetangbiao.hh!=''">
and ktb.hh in
<foreach item="item" index="index" collection="kcKetangbiao.hh.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="kcKetangbiao.inKkdw!=null and kcKetangbiao.inKkdw!=''">
and ktb.kkdw in
<foreach item="item" index="index" collection="kcKetangbiao.inKkdw.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="kcKetangbiao.inKcmc!=null and kcKetangbiao.inKcmc!=''">
and ktb.kcmc in
<foreach item="item" index="index" collection="kcKetangbiao.inKcmc.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="kcKetangbiao.kkdw!=null and kcKetangbiao.kkdw!=''">
and ktb.kkdw = #{kcKetangbiao.kkdw}
</if>
<if test="kcKetangbiao.zbpx!=null and kcKetangbiao.zbpx!=''">
and ktb.zbpx = #{kcKetangbiao.zbpx}
</if>
<if test="kcKetangbiao.ywskxs!=null and kcKetangbiao.ywskxs!=''">
and ktb.skxs != #{kcKetangbiao.ywskxs}
</if>
<if test="kcKetangbiao.kcxz!=null and kcKetangbiao.kcxz!=''">
and ktb.kcxz = #{kcKetangbiao.kcxz}
</if>
<if test="kcKetangbiao.skdd!=null and kcKetangbiao.skdd!=''">
and ktb.skdd like concat('%',#{kcKetangbiao.skdd},'%')
</if>
<if test="kcKetangbiao.kkdw!=null and kcKetangbiao.kkdw!=''">
and ktb.kkdw = #{kcKetangbiao.kkdw}
</if>
<if test="kcKetangbiao.sfyzhjs!=null and kcKetangbiao.sfyzhjs!=''">
and js.jsbh is not NULL
</if>
<if test='kcKetangbiao.zhjs!=null and kcKetangbiao.zhjs!="" and kcKetangbiao.zhjs=="1"'>
and js.jsbh is not NULL
</if>
<if test='kcKetangbiao.zhjs!=null and kcKetangbiao.zhjs!="" and kcKetangbiao.zhjs=="0"'>
and js.jsbh is NULL
</if>
<if test="kcKetangbiao.jzwh!=null and kcKetangbiao.jzwh!=''">
and jxljbxx.jzwh = #{kcKetangbiao.jzwh}
</if>
<if test="kcKetangbiao.sftkb!=null and kcKetangbiao.sftkb!=''">
and IF(tkxx.kcmc is null,'0','1') = 0
</if>
<if test="kcKetangbiao.bmdId !=null and kcKetangbiao.bmdId !=''">
and (ktb.kcmc,ktb.skjs,ktb.skdd,ktb.hh,ktb.skrq) in (select kcmc,skjs,skdd,hh,skrq from kc_tingke_bmd_kcxx where bmd_id in (${kcKetangbiao.bmdId}))
</if>
</where>
order by ktb.hh asc,kkdw.id asc,IF(tkxx.kcmc is null,'0','1') asc
</select>
<select id="checklist" parameterType="org.jeecg.modules.demo.kcKetangbiao.entity.KcKetangbiao" resultType="org.jeecg.modules.demo.kcKetangbiao.entity.KcKetangbiao">
select kcmc as id,kcmc from kc_ketangbiao a , kc_sys_config b where a.xnxq = b.flag1

View File

@ -19,4 +19,6 @@ public interface IKcKetangbiaoService extends IService<KcKetangbiao> {
KcKetangbiao queryAllDataById(String id);
IPage<KcKetangbiao> checklist(Page<KcKetangbiao> page, KcKetangbiao kcKetangbiao);
IPage<KcKetangbiao> getYylist(Page<KcKetangbiao> page, KcKetangbiao kcKetangbiao);
}

View File

@ -106,4 +106,9 @@ public class KcKetangbiaoServiceImpl extends ServiceImpl<KcKetangbiaoMapper, KcK
public IPage<KcKetangbiao> checklist(Page<KcKetangbiao> page, KcKetangbiao kcKetangbiao) {
return baseMapper.checklist(page,kcKetangbiao);
}
@Override
public IPage<KcKetangbiao> getYylist(Page<KcKetangbiao> page, KcKetangbiao kcKetangbiao) {
return baseMapper.getYylist(page,kcKetangbiao);
}
}

View File

@ -3,20 +3,16 @@ package org.jeecg.modules.demo.xxhbjwxtjxrw.controller;
import java.util.Arrays;
import java.util.Date;
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 java.util.concurrent.atomic.AtomicReference;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.demo.xxhbjwxtjxrw.entity.Xxhbjwxtjxrw;
import org.jeecg.modules.demo.xxhbjwxtjxrw.service.IXxhbjwxtjxrwService;
@ -29,18 +25,10 @@ import org.jeecg.modules.demo.zjSqxx.entity.ZjSqxx;
import org.jeecg.modules.demo.zjSqxx.service.IZjSqxxService;
import org.jeecg.modules.demo.zjXkxx.entity.ZjXkxx;
import org.jeecg.modules.demo.zjXkxx.service.IZjXkxxService;
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;
@ -64,6 +52,9 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
private IZjSqxxService zjSqxxService;
@Autowired
private IZjXkxxService zjXkxxService;
@Autowired
private CommonAPI commonApi;
/**
* 分页列表查询
*
@ -80,6 +71,10 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<Xxhbjwxtjxrw> queryWrapper = QueryGenerator.initQueryWrapper(xxhbjwxtjxrw, req.getParameterMap());
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@ -89,6 +84,7 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
zjSqxxQueryWrapper.eq("sqzt","0");
ZjSqxx zjSqxx = zjSqxxService.getOne(zjSqxxQueryWrapper);
String sfjx = "0";
String xnxq = "0";
if(zjSqxx!=null){
Date date = new Date();
if(zjSqxx.getSqStartTime()!=null&&zjSqxx.getSqStartTime().getTime()>=date.getTime()){
@ -97,9 +93,11 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
if(zjSqxx.getSqEndTime()!=null&&zjSqxx.getSqEndTime().getTime()<=date.getTime()){
sfjx = "1";
}
// if(StringUtils.isNotBlank(zjSqxx.getXnxq())){
// queryWrapper.in("xn",zjSqxx.getXnxq().split(","));
// }
if(StringUtils.isNotBlank(zjSqxx.getXnxq())){
xnxq = "1";
queryWrapper.in("concat(xn,xqmc)",zjSqxx.getXnxq().split(","));
// queryWrapper.apply(StringUtils.isNotBlank(xxhbjwxtjxrw.getZjxnxq()),"concat(xn,xqmc) in (",zjSqxx.getxn());
}
if(StringUtils.isNotBlank(zjSqxx.getKkdw())){
queryWrapper.in("kkyxmc",zjSqxx.getKkdw().split(","));
}
@ -114,12 +112,47 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
return Result.error("您未在授权期限内,不能进行查询!");
}
queryWrapper.eq(StringUtils.isNotBlank(xxhbjwxtjxrw.getZjxnxq()),"concat(xn,xqmc)",xxhbjwxtjxrw.getZjxnxq());
if(StringUtils.isNotBlank(xxhbjwxtjxrw.getZjxnxq())){
queryWrapper.eq(StringUtils.isNotBlank(xxhbjwxtjxrw.getZjxnxq()),"concat(xn,xqmc)",xxhbjwxtjxrw.getZjxnxq());
}else if(StringUtils.equals(xnxq,"0")){
String dqxq = commonApi.translateDict("dqxq","1");
queryWrapper.eq("concat(xn,xqmc)",dqxq);
}
queryWrapper.like(StringUtils.isNotBlank(xxhbjwxtjxrw.getZhuanye()),"zymc",xxhbjwxtjxrw.getZhuanye());
queryWrapper.like(StringUtils.isNotBlank(xxhbjwxtjxrw.getZhicheng()),"teaxm",xxhbjwxtjxrw.getZhicheng());
// queryWrapper.like(StringUtils.isNotBlank(xxhbjwxtjxrw.getZhicheng()),"teaxm",xxhbjwxtjxrw.getZhicheng());
queryWrapper.apply(StringUtils.isNotBlank(xxhbjwxtjxrw.getZhicheng()),"SUBSTRING(TEAXM,LOCATE('[',TEAXM)+1,locate(']',TEAXM)-locate('[',TEAXM)-1) = '"+xxhbjwxtjxrw.getZhicheng()+"'");
QueryWrapper<ZjXkxx> zjXkxxQueryWrapper = new QueryWrapper<>();
zjXkxxQueryWrapper.eq("user_id",sysUser.getUsername());
List<ZjXkxx> list = zjXkxxService.zjList(zjXkxxQueryWrapper);
// if(list!=null&&list.size()>0){
// StringBuffer sb = new StringBuffer();
// for(ZjXkxx zjXkxx:list){
// sb.append(zjXkxx.getKcrwdm()+",");
// }
// queryWrapper.notIn("kcrwdm",sb.toString().split(","));
// }
Page<Xxhbjwxtjxrw> page = new Page<Xxhbjwxtjxrw>(pageNo, pageSize);
IPage<Xxhbjwxtjxrw> pageList = xxhbjwxtjxrwService.page(page, queryWrapper);
pageList.getRecords().forEach(item->{
AtomicReference<String> sfxk = new AtomicReference<>("0");
list.forEach(zjXkxx -> {
if(StringUtils.equals(zjXkxx.getKcrwdm(),item.getKcrwdm())){
sfxk.set("1");
}
});
item.setSfxk(sfxk.toString());
});
return Result.OK(pageList);
}

View File

@ -102,4 +102,6 @@ public class Xxhbjwxtjxrw implements Serializable {
private java.lang.String zhicheng;
@TableField(exist = false)
private java.lang.String zjxnxq;//专家展示学年学期
@TableField(exist = false)
private java.lang.String sfxk;//是否选课 0未选 1已选
}

View File

@ -97,19 +97,22 @@ public class XxhbjwxtscwjxxController extends JeecgController<Xxhbjwxtscwjxx, IX
QueryWrapper<Xxhbjwxtscwjxx> queryWrapper = QueryGenerator.initQueryWrapper(xxhbjwxtscwjxx, req.getParameterMap());
Page<Xxhbjwxtscwjxx> page = new Page<Xxhbjwxtscwjxx>(pageNo, pageSize);
IPage<Xxhbjwxtscwjxx> pageList = xxhbjwxtscwjxxService.page(page, queryWrapper);
pageList.getRecords().forEach(item->{
item.setId(item.getPath());
});
//
// List<Xxhbjwxtscwjxx> list = pageList.getRecords();
// if(list.size()>0){
// List<Xxhbjwxtscwjxx> list2 = new ArrayList<>();
// String sorts[] = ("课程考核合理性审核记录单,课程目标达成情况评价报告,课程考核质量评价单,期未考试-试题(或内容及要求),期末考试-评分标准,历次过程性考核-内容及要求(或试题),历次过程性考核-评分标准").split(",");
// for (String par : sorts){
// list2.add(list.stream().filter(item->item.getFjtype().equals(par)).findFirst().orElse(null));
// }
// pageList.setRecords(list2);
// }
List<Xxhbjwxtscwjxx> list = pageList.getRecords();
if(list.size()>0){
List<Xxhbjwxtscwjxx> list2 = new ArrayList<>();
String sorts[] = ("课程考核合理性审核记录单,课程目标达成情况评价报告,课程考核质量评价单,期未考试-试题(或内容及要求),期末考试-评分标准,历次过程性考核-内容及要求(或试题),历次过程性考核-评分标准").split(",");
for (String par : sorts){
list2.add(list.stream().filter(item->item.getFjtype().equals(par)).findFirst().orElse(null));
}
pageList.setRecords(list2);
pageList.getRecords().forEach(item->{
item.setId(item.getPath());
});
}
return Result.OK(pageList);
}

View File

@ -214,6 +214,7 @@ public class XxhbjwxtxsmdController extends JeecgController<Xxhbjwxtxsmd, IXxhbj
}else{
par.setCdlx("抽样");
}
par.setCdsl(list1.size()+"");
par.setSort("1");
list.add(par);
}
@ -236,6 +237,7 @@ public class XxhbjwxtxsmdController extends JeecgController<Xxhbjwxtxsmd, IXxhbj
}else{
par.setCdlx("抽样");
}
par.setCdsl(list1.size()+"");
par.setSort("2");
list.add(par);
}
@ -258,6 +260,7 @@ public class XxhbjwxtxsmdController extends JeecgController<Xxhbjwxtxsmd, IXxhbj
}else{
par.setCdlx("抽样");
}
par.setCdsl(list1.size()+"");
par.setSort("3");
list.add(par);
}
@ -280,6 +283,7 @@ public class XxhbjwxtxsmdController extends JeecgController<Xxhbjwxtxsmd, IXxhbj
}else{
par.setCdlx("抽样");
}
par.setCdsl(list1.size()+"");
par.setSort("4");
list.add(par);
}
@ -302,6 +306,7 @@ public class XxhbjwxtxsmdController extends JeecgController<Xxhbjwxtxsmd, IXxhbj
}else{
par.setCdlx("抽样");
}
par.setCdsl(list1.size()+"");
par.setSort("5");
list.add(par);
}

View File

@ -136,6 +136,8 @@ public class Xxhbjwxtxsmd implements Serializable {
@TableField(exist = false)
private String zb;
@TableField(exist = false)
private String cdsl;
@TableField(exist = false)
private String sort;
@TableField(exist = false)
private String fsshow;

View File

@ -92,6 +92,8 @@ public class ZjXkxxController extends JeecgController<ZjXkxx, IZjXkxxService> {
@ApiOperation(value="专家选课信息-添加", notes="专家选课信息-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ZjXkxx zjXkxx) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
zjXkxx.setUserId(sysUser.getUsername());
zjXkxxService.save(zjXkxx);
return Result.OK("添加成功!");
}

View File

@ -2,10 +2,10 @@
VITE_PORT = 3100
# 网站标题
VITE_GLOB_APP_TITLE = 东北师范大学专家审核评估平台
VITE_GLOB_APP_TITLE = 教学督导平台
# 简称,此变量只能是字符/下划线
VITE_GLOB_APP_SHORT_NAME = 专家审核评估
VITE_GLOB_APP_SHORT_NAME = 智慧教学服务中心
# 单点登录服务端地址
VITE_GLOB_APP_CAS_BASE_URL=https://authserver.nenu.edu.cn/authserver

View File

@ -6,10 +6,10 @@ VITE_PUBLIC_PATH = /
# 跨域代理,您可以配置多个 ,请注意,没有换行符
VITE_PROXY = [["/jeecgboot","http://192.168.2.13:8080/jeecg-boot"],["/upload","http://192.168.2.13:3300/upload"]]
VITE_PROXY = [["/jeecgboot","http://localhost:8080/jeecg-boot"],["/upload","http://localhost:3300/upload"]]
#后台接口全路径地址(必填)
VITE_GLOB_DOMAIN_URL=http://192.168.2.13:8080/jeecg-boot
VITE_GLOB_DOMAIN_URL=http://localhost:8080/jeecg-boot
#后台接口父地址(必填)
VITE_GLOB_API_URL=/jeecgboot

View File

@ -22,6 +22,12 @@
</template>
<rkb></rkb>
</a-tab-pane>
<a-tab-pane key="wdyy">
<template #tab>
<div style="font-weight: 600;font-size: 16px;">我的预约</div>
</template>
<wdyy></wdyy>
</a-tab-pane>
</a-tabs>
</a-card>
</template>
@ -30,6 +36,7 @@
import zzsk from './zzsk.vue';
import xyjk from './xyjk.vue';
import rkb from './rkb.vue';
import wdyy from './wdyy.vue';
import { defHttp } from '/@/utils/http/axios';
import { ref, onMounted } from 'vue';

View File

@ -128,8 +128,6 @@ function isNow(item) {
const dqsj = dayjs(new Date());
const threeMin = new Date(kssj).getTime() - 30 * 60 * 1000;
const threeMinAbc = dayjs(threeMin);
console.log('kssj--->', threeMinAbc.unix() < dqsj.unix());
console.log('kssj--->', dqsj.unix() < jssj.unix());
if (threeMinAbc.unix() < dqsj.unix() && dqsj.unix() < jssj.unix()) {
console.log('false');
return false;

View File

@ -164,8 +164,7 @@ const querySuibi = (params) => defHttp.get({ url: Api.querySuibi, params });
const getKtangInfo = (params) => defHttp.get({ url: Api.getKtangInfo, params });
const changeAvyLiveByJsbhsApi = (params) => defHttp.get({ url: Api.changeAvyLiveByJsbhsApi, params, timeout: 9000000 });
onMounted(() => {
});
onMounted(() => {});
/**
* 子页加载完成后回调
@ -192,6 +191,8 @@ function changeLive(item: any) {
let url = item.pullUrl;
let mainVideo = document.querySelector<any>('#mainVideo');
mainVideo?.player?.src([{ type: 'application/x-mpegURL', src: url }]);
console.log('🧔', mainVideo);
mainVideoCardBoxTitle.value = item.jsmc + ' ' + item.xm;
curentPlayerVideo.value = item;
}
@ -274,7 +275,6 @@ function calcPlayStatus(item) {
}
}
function handleZqrs(record) {
console.log(`🚀 ~ handleZqrs ~ record:`, record);
console.log(`🚀 ~ handleZqrs ~ zqrsList:`, record.zqrsList);
@ -322,7 +322,6 @@ function edit(record) {
} else {
isError.value = true;
}
}
defineExpose({

View File

@ -74,4 +74,9 @@
display: none !important;
}
</style>
<style lang="less" scoped></style>
<style lang="less" scoped>
.ant-modal .ant-modal-body {
padding: 0;
height: 640px !important;
}
</style>

View File

@ -0,0 +1,229 @@
<template>
<a-row style="margin-top:20px;">
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
<a-form-item label="" style="padding: 10px;">
<a-date-picker :showTime="false" valueFormat="YYYY-MM-DD" :placeholder="'请选择结束时间'" style="width:100%;" v-model:value="queryParam.ywTime"></a-date-picker>
</a-form-item>
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
<a-form-item label="" style="padding: 10px;">
<JDictSelectTag placeholder="课程性质" v-model:value="queryParam.kcxz" dictCode="kcxz" />
</a-form-item>
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
<a-form-item label="" style="padding: 10px;">
<a-select placeholder="请选择教学楼" v-model:value="queryParam.jzwh">
<a-select-option :value="undefined">全部</a-select-option>
<a-select-option :value="`0106`">逸夫教学楼</a-select-option>
<a-select-option :value="`0295`">净月综合教学楼</a-select-option>
<a-select-option :value="`0108`">惟真楼</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 5 }">
<a-form-item label="" style="padding: 10px;">
<a-input placeholder="请输入课程或教师名称" v-model:value="queryParam.ywmc" ></a-input>
</a-form-item>
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 5 }">
<a-form-item label="" style="padding: 10px;">
<a-button type="primary" @click="loadData(1)">查询</a-button>
</a-form-item>
</a-col>
</a-row>
<a-row class="rowGutter" :gutter="[16, 16]">
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 6 }" v-for="(item, index) in listData" :key="index" style="margin-bottom: 0;">
<itemPage :data="item" @to-live-page="toLivePage" @funpingjia="funpingjia" @ok="handleSuccess"></itemPage>
</a-col>
<a-col :span="25" style="line-height: 50px;">
<div v-show="1 == pageNo && current > 0 && total > 4">
<div style="text-align: center;"><a @click="funMore">更多...</a></div>
</div>
<div v-show="current==0">
<div style="text-align: center;"><a @click="funMore">暂无课堂</a></div>
</div>
<div v-show="1 < pageNo && pageNo < current">
<div style="text-align: center;"><a @click="funMore">更多...</a></div>
<div style="text-align: right;margin-top: -51px;"><a @click="funShouqi">收起</a></div>
</div>
<!-- <div v-show="current == pageNo">
<div style="text-align: center;"><a @click="funShouqi">收起</a></div>
</div> -->
</a-col>
</a-row>
<viewPageModal ref="viewPageModalPage"></viewPageModal>
</template>
<script lang="ts" setup>
import { ref,watch,reactive,defineExpose,onMounted, createVNode,h } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
import { addTingKeLog, getUserId } from '/@/views/site/utils/index';
import itemPage from './itemPage.vue';
import { useRouter } from 'vue-router'
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { Modal } from 'ant-design-vue';
import { CloseOutlined } from '@ant-design/icons-vue';
import viewPageModal from '/@/views/bl/kcKetangbiao/video/videojs/viewPageModal.vue'
import {getSysConfig } from '/@/views/site/utils/index';
//
import { useUserStore } from '/@/store/modules/user';
const userStore = useUserStore();
const route = useRouter();
const viewPageModalPage = ref();
const pageNo = ref<number>(1);
const current = ref<number>(0);
const total = ref<number>(0);
const emit = defineEmits(['setTotal']);
const { createMessage } = useMessage();
const confirmLoading = ref<boolean>(false);
let listData = ref<any>([]);
let listType = ref<any>(String);
const list = (params) => defHttp.get({ url: '/kcKetangbiao/kcKetangbiao/getYylist', params });
const jclist = (queryParam) => defHttp.get({ url: '/kcJieci/kcJieci/getIndexJcList', params:queryParam });
const listTkjlApi = (params) => defHttp.get({ url: '/kcTingke/kcTingke/findTingKeZuJiBytingketimeAndUserId', params });
const queryParam = ref<any>({});
//
onMounted(() => {
jclist(queryParam.value).then(res=>{
var list = res
queryParam.value.ywTime = list[0].kssj
// queryParam.value.jieci = list[1].jieci
loadData(1)
})
});
function handleSuccess(){
loadData(1)
}
//
function loadData(num?) {
if(num == 1){
pageNo.value = 1
listData.value = [];
}
queryParam.value.pageSize = '4'
queryParam.value.pageNo = pageNo
queryParam.value.sfyzhjs = '1'
// queryParam.value.hh = queryParam.value.jieci+","+queryParam.value.jieci.split("").join(',')
if(queryParam.value.jieci){
queryParam.value.hh = queryParam.value.jieci+","+queryParam.value.jieci.split("、").join(',')
}
queryParam.value.skrq = queryParam.value.ywTime
queryParam.value.userid = getUserId()
queryParam.value.skxs = 1
queryParam.value.type = 1
queryParam.value.sftkb = 1
queryParam.value.sfyy = 1
console.log(`🚀 ~ file: index.vue:112 ~ rkbLoadData ~ newRow:`, queryParam)
if(queryParam.value.hh!=","){
list(queryParam.value).then(res => {
// console.log(`🚀 ~ file: index.vue:104 ~ list ~ res:`, res)
listData.value.push(...res.records)
current.value = res.pages
total.value = res.total
console.log(`🚀 ---------------------------------------------🚀`);
console.log(`🚀 ~ file: rkb.vue:132 ~ list ~ total:`, total.value);
console.log(`🚀 ---------------------------------------------🚀`);
// listData.value = res.records;
// console.log(`🚀 ~ file: kclbList.vue:113 ~ list ~ listData.value:`, listData.value)
})
}
}
function funpingjia(record){
var item = {ketangbiaoid:record.id}
let userid = getUserId();
listTkjlApi({ userid: userid, ketangbiaoid:item.ketangbiaoid}).then(res => {
var list = res
console.log(`🚀 ~ file: list.vue:106 ~ listTkjlApi ~ list:`, list)
if(list.length>0){
var score = list[0].score
if(score){
Modal.error({
icon: createVNode({}),
content: h('div', {style:'height:200px;text-align:center;'}, [
h('icon', {style:'font-size:80px;font-weight:600;color:red;'}, createVNode(CloseOutlined)),
h('p',{style:'font-size:22px;font-weight:600;color:black;'}, '已经对此课程进行评价,不可重复评价!'),
]),
okText: 'OK',
width:'500px',
});
}else{
}
}else{
}
});
}
/**
* 公开课收起
*/
function funShouqi(){
listData.value = []
pageNo.value = 1
loadData()
}
/**
* 加载更多公开课
*/
function funMore(){
console.log(`🚀 ~ file: index.vue:83 ~ funMore ~ current>pageNo:`, current,pageNo)
if(current.value > pageNo.value){
pageNo.value ++;
loadData()
}else{
createMessage.error("没有更多数据了!");
}
}
/**
* 听课按钮
* @param item
*/
function toLivePage(item){
viewPageModalPage.value.disableSubmit = true
viewPageModalPage.value.edit(item);
// //
// addTingKeLog(getUserId(),item.id);
// let routeData = route.resolve({ path:'/video/index',query:{ id: item.jsbh, ktId: item.id } });
// window.open(routeData.href, '_blank');
};
enum Api {
list = '/kcYuyue/kcYuyue/list',
save='/kcYuyue/kcYuyue/add',
edit='/kcYuyue/kcYuyue/edit',
deleteOne = '/kcYuyue/kcYuyue/delete',
deleteBatch = '/kcYuyue/kcYuyue/deleteBatch',
importExcel = '/kcYuyue/kcYuyue/importExcel',
exportXls = '/kcYuyue/kcYuyue/exportXls',
}
defineExpose({
loadData
});
//
const saveOrUpdate = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
console.log(`🚀 ~ file: kclbList.vue:107 ~ saveOrUpdate ~ url:`, url)
return defHttp.post({ url: url, params }, { isTransformResponse: false });
}
</script>
<style lang="less" scoped>
</style>

View File

@ -9,6 +9,7 @@ enum Api {
save='/xxhbjwxtjxrw/xxhbjwxtjxrw/add',
edit='/xxhbjwxtjxrw/xxhbjwxtjxrw/edit',
deleteOne = '/xxhbjwxtjxrw/xxhbjwxtjxrw/delete',
deleteXkxxOne = '/zjXkxx/zjXkxx/delete',
deleteBatch = '/xxhbjwxtjxrw/xxhbjwxtjxrw/deleteBatch',
importExcel = '/xxhbjwxtjxrw/xxhbjwxtjxrw/importExcel',
exportXls = '/xxhbjwxtjxrw/xxhbjwxtjxrw/exportXls',
@ -43,6 +44,12 @@ export const deleteOne = (params,handleSuccess) => {
});
}
export const deleteXkxxOne = (params,handleSuccess) => {
return defHttp.delete({url: Api.deleteXkxxOne, params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
/**
*
* @param params

View File

@ -38,12 +38,12 @@ export const columns: BasicColumn[] = [
width: 80
},
{
title: '开课单位名称',
title: '开课单位',
align: "center",
dataIndex: 'kkyxmc'
},
{
title: '所属校内专业(大类)名称',
title: '所属校内专业(大类)',
align: "center",
dataIndex: 'zymc',
width: 220
@ -137,13 +137,13 @@ export const columns2: BasicColumn[] = [
// ellipsis: true,
// },
{
title: '开课单位名称',
title: '开课单位',
align: "center",
dataIndex: 'kkyxmc',
ellipsis: true,
},
{
title: '所属校内专业(大类)名称',
title: '所属校内专业(大类)',
align: "center",
dataIndex: 'zymc',
width: 220,
@ -217,7 +217,7 @@ export const columns3: BasicColumn[] = [
dataIndex: 'kclb'
},
{
title: '所属校内专业(大类)名称',
title: '所属校内专业(大类)',
align: "center",
dataIndex: 'zymc',
width: 220
@ -274,7 +274,7 @@ export const columns3: BasicColumn[] = [
// width: 80
// },
// {
// title: '开课单位名称',
// title: '开课单位',
// align: "center",
// dataIndex: 'kkyxmc'
// },

View File

@ -2,14 +2,31 @@
<div class="p-2">
<div v-if="sfxk == 0">
<div style="text-align: center">
<img src="../../../assets/images/Course-selection.png" style="margin-top:200px; width:600px" />
<img src="../../../assets/images/Course-selection.png" style="margin-top:130px; width:600px" />
<div style="color:#606266; font-weight: 700; font-size: 20px; margin-top:20px">您还没有选课请先选择课程</div>
<a-button type="primary" style="margin-left: 10px; margin-top: 10px" @click="handleXuanke">选课</a-button>
</div>
</div>
<!-- 选课信息 -->
<div v-if="sfxk == 1">
<div class="jeecg-basic-table-form-container">
<div class="jeecg-basic-table-form-container" >
<a-form class="query-criteria">
<a-button type="primary" style="margin-left: 10px;margin-bottom: 15px; " @click="handleFanhui">查看材料</a-button>
</a-form>
</div>
<a-table :columns="columns2" :data-source="checkData" :pagination="false">
<template #title><span class="seleciton-line">1</span> <span class="selection-title">已选课程</span></template>
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'action'">
<a @click="handleDel(record)">移除</a>
</template>
</template>
</a-table>
<div class="jeecg-basic-table-form-container" style="margin-top:10px;">
<a-form ref="formRef" @keyup.enter.native="searchQuery2" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-row :gutter="24">
<a-col :lg="6">
@ -18,12 +35,6 @@
<j-dict-select-tag placeholder="请选择学年学期" v-model:value="queryParam2.zjxnxq" :dictCode="`v_xqxn,xqxn,xqxn`" allow-clear />
</a-form-item>
</a-col>
<!-- <a-col :lg="6">
<a-form-item name="xqmc">
<template #label><span title="学期" class="xn-title">学期</span></template>
<j-dict-select-tag placeholder="请选择学期" v-model:value="queryParam2.xqmc" dictCode="cjxq" allow-clear />
</a-form-item>
</a-col> -->
<a-col :lg="6">
<a-form-item name="kkyxmc">
<template #label><span title="开课单位名称" class="xn-title">开课单位名称</span></template>
@ -77,24 +88,20 @@
:pagination="paginationProp"
@change="onPageChange"
>
<template #title><span class="seleciton-line">1</span> <span class="selection-title">可选课程</span></template>
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'action'">
<a @click="handleQueren(record)">确认</a>
<a @click="handleXUanze(record)" v-if="record.sfxk == '0'">选择</a>
<a disabled v-if="record.sfxk == '1'">已选择</a>
</template>
</template>
</a-table>
<a-table :columns="columns2" :data-source="checkData" :pagination="false">
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'action'">
<a @click="handleDel(record)">删除</a>
</template>
</template>
</a-table>
<div style="text-align: right">
<!-- <div style="text-align: right">
<a-button type="primary" style="margin-left: 10px; margin-top: 10px" @click="handleSubmit">确认</a-button>
<a-button type="primary" style="margin-left: 10px; margin-top: 10px" @click="handleFanhui">返回</a-button>
</div>
</div> -->
</div>
<!-- 成绩单 -->
<div v-show="sfxk == 2">
@ -114,42 +121,23 @@
</div>
<!-- 选课后的列表 -->
<div v-if="sfxk == 999">
<div class="jeecg-basic-table-form-container">
<a-form class="query-criteria">
<a-button type="primary" preIcon="ant-design:copy-outlined" @click="handleXuanke" style="margin-left: 8px;margin-bottom: 15px;"> 返回选课</a-button>
</a-form>
</div>
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-form ref="formRef3" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-row :gutter="24">
<!-- <a-col :span="24" style="text-align: right;margin-bottom: 20px;">
模板下载
<a-popover placement="topRight" type="primary">
<template #content>
<a-button type="primary" style="margin-left: 10px;margin-top: 10px" @click="textDown('a1','课堂教学评价表')">课堂教学评价表</a-button>
<a-button type="primary" style="margin-left: 10px;margin-top: 10px" @click="textDown('a2','试卷评价表')">试卷评价表</a-button>
<a-button type="primary" style="margin-left: 10px;margin-top: 10px" @click="textDown('a3','本科毕业论文(设计)评价表')">本科毕业论文设计评价表</a-button>
</template>
<template #title>
<span>专家用评价表</span>
</template>
<a-button>专家用评价表</a-button>
</a-popover>
</a-col> -->
<a-col :lg="6">
<a-form-item name="zjxnxq">
<template #label><span title="学年学期" class="xn-title">学年学期</span></template>
<j-dict-select-tag placeholder="请选择学年学期" v-model:value="queryParam.zjxnxq" :dictCode="`v_xqxn,xqxn,xqxn`" allow-clear />
</a-form-item>
</a-col>
<!-- <a-col :lg="6">
<a-form-item name="xn">
<template #label><span title="学年" class="xn-title">学年</span></template>
<j-dict-select-tag placeholder="请选择学年" v-model:value="queryParam.xn" :dictCode="`v_xn,xn,xn`" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="xqmc">
<template #label><span title="学期" class="xn-title">学期</span></template>
<j-dict-select-tag placeholder="请选择学期" v-model:value="queryParam.xqmc" dictCode="cjxq" allow-clear />
</a-form-item>
</a-col> -->
<a-col :lg="6">
<a-form-item name="kkyxmc">
<template #label><span title="开课单位名称" class="xn-title">开课单位名称</span></template>
@ -189,7 +177,6 @@
/>
</a-form-item>
</a-col>
<!-- <a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="课程名称">课程名称</span></template>
@ -199,14 +186,16 @@
<a-col :span="18" style="text-align: right">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset" style="margin-left: 8px">重置</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls" style="margin-left: 8px"> 导出</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="handleXuanke" style="margin-left: 8px"> 选课</a-button>
<!-- <a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls" style="margin-left: 8px"> 导出</a-button> -->
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable" class="table-style">
<template #tableTitle>
<span class="seleciton-line">1</span> <span class="selection-title">已选课程</span>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
@ -233,7 +222,7 @@ import { ref, reactive, onMounted, computed } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, columns2, columns3, superQuerySchema } from './Xxhbjwxtjxrw.data';
import { zjList, list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbjwxtjxrw.api';
import { zjList, list, deleteXkxxOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbjwxtjxrw.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import XxhbjwxtjxrwModal from './components/XxhbjwxtjxrwModal.vue';
import { useUserStore } from '/@/store/modules/user';
@ -247,6 +236,7 @@ import XxhbjwxtxsmdList3 from '/@/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList3.vue';
import XxhbjwxtxsmdList4 from '/@/views/bl/xxhbjwxtxsmd/XxhbjwxtxsmdList4.vue';
const formRef = ref();
const formRef3 = ref();
const cjdFormModal = ref();
const khpjclFormModal = ref();
const xsysclFormModal = ref();
@ -292,13 +282,13 @@ const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDat
tableContext;
const labelCol = reactive({
xs: 24,
sm: 6,
xl: 6,
xxl: 6,
sm: 8,
xl: 8,
xxl: 8,
});
const wrapperCol = reactive({
xs: 24,
sm: 18,
sm: 16,
});
const paginationProp = ref<any>({
total: 1,
@ -335,9 +325,7 @@ function handleXsysclxq(record) {
function handleFanhui() {
init();
}
function init2(){
}
function init2() {}
//
function handleQueren(record) {
@ -351,8 +339,17 @@ function handleQueren(record) {
checkData.value.push(record);
}
//
function handleDel(record) {
checkData.value = checkData.value.filter((item) => item.kcrwdm !== record.kcrwdm);
async function handleDel(record) {
await deleteXkxxOne({ id: record.id }, xtsuccess);
}
function xtsuccess(){
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageSize: -1 } }).then((res) => {
console.log('🧛', res);
checkData.value = res.records;
});
searchQuery2();
}
//
async function onPageChange(record) {
@ -375,6 +372,21 @@ function textDown(type, downame) {
// a
}
//
function handleXUanze(record) {
record.id = null;
console.log('😰record----------', record);
defHttp
.post({
url: '/zjXkxx/zjXkxx/add',
params: record,
})
.then((res) => {
console.log('🤛', res);
});
xtsuccess();
}
//
function handleSubmit() {
var list = checkData.value;
@ -449,7 +461,7 @@ function searchQuery2() {
* 重置
*/
function searchReset() {
formRef.value.resetFields();
formRef3.value.resetFields();
selectedRowKeys.value = [];
//
reload();
@ -501,29 +513,40 @@ onMounted(() => {
width: 100%;
}
}
.query-criteria{
.query-criteria {
padding-top: 22px;
border:1px solid #eaeef6;
border-radius:4px;
}
.query-criteria:hover{
border:1px solid #c5d8ff;
border: 1px solid #eaeef6;
border-radius: 4px;
}
.query-criteria:hover {
border: 1px solid #c5d8ff;
box-shadow: 2px 2px 10px 2px #e8ecf4;
border-radius:4px;
}
.table-style{
border-radius: 4px;
}
.table-style {
padding: 10px;
background: #fff;
border:1px solid #eaeef6;
border-radius:4px;
}
.table-style:hover{
border:1px solid #e8ecf4;
border: 1px solid #eaeef6;
border-radius: 4px;
}
.table-style:hover {
border: 1px solid #e8ecf4;
box-shadow: 2px 2px 10px 2px #e8ecf4;
border-radius:4px;
}
.xn-title{
font-size:16px;
font-weight:700;
}
border-radius: 4px;
}
.xn-title {
font-size: 16px;
font-weight: 700;
}
.selection-title {
font-size: 18px;
font-weight: 700;
padding-left: 10px;
}
.seleciton-line {
background: #1890ff;
border-radius: 10px;
color: #1890ff;
}
</style>

View File

@ -1,13 +1,22 @@
<template>
<div class="p-2">
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef2" class="query-criteria">
<a-row :gutter="24">
<a-col :span="24">
<a-button type="primary" @click="handleFanhui" style="margin-top: 7px;">返回</a-button>
</a-col>
</a-row>
</a-form>
</div>
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-row :gutter="24">
<a-col :span="12"><span class="seleciton-line">1</span><span class="selection-title">成绩单</span> </a-col>
<a-col :span="12" style="text-align: right">
<!-- <a-col :span="12" style="text-align: right">
<a-button type="primary" @click="handleFanhui">返回</a-button>
</a-col>
</a-col> -->
<a-col :gutter="24">
<div style="text-align: center; font-size:24px; font-weight: 700; line-height: 50px" v-if="jxrwInfo.value">
{{ jxrwInfo?.value.xn }}{{ jxrwInfo?.value.xqmc }}学期{{ jxrwInfo?.value.kcmc }}

View File

@ -1,5 +1,14 @@
<template>
<div class="p-2">
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :span="12">
<a-button type="primary" @click="handleFanhui">返回</a-button>
</a-col>
</a-row>
</a-form>
</div>
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">

View File

@ -1,13 +1,19 @@
<template>
<div class="p-2">
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" class="query-criteria">
<a-row :gutter="24">
<a-col :span="24">
<a-button type="primary" style="margin-left: 8px;margin-top: 10px;" @click="handleFanhui">返回</a-button>
</a-col>
</a-row>
</a-form>
</div>
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-row :gutter="24">
<a-col :span="12"><span class="seleciton-line">1</span> <span class="selection-title">考核评价材料</span> </a-col>
<a-col :span="12" style="text-align: right">
<a-button type="primary" style="margin-left: 8px" @click="handleFanhui">返回</a-button>
</a-col>
<a-col :span="24"><span class="seleciton-line">1</span> <span class="selection-title">考核评价材料</span> </a-col>
<a-col :gutter="24">
<div style="text-align: center; font-size: 24px; font-weight: 700; line-height: 50px" v-if="jxrwInfo.value">
{{ jxrwInfo?.value.xn }}{{ jxrwInfo?.value.xqmc }}学期{{ jxrwInfo?.value.kcmc }}
@ -332,4 +338,7 @@ border:1px solid #e4e9f2;
box-shadow: 2px 2px 10px 2px #e4e9f2;
border-radius:4px;
}
.ant-table-wrapper .ant-table.ant-table-middle{
font-size: 18px;
}
</style>

View File

@ -450,31 +450,14 @@ export const columns2: BasicColumn[] = [
//列表数据
export const columns4: BasicColumn[] = [
{
title: '考核方式',
title: '成绩类型',
align: "center",
dataIndex: 'khfs',
// customRender:({text}) =>{
// text = !text ? "" : (text.length > 0 ? text.substr(0,text.indexOf("[")) : "");
// return text;
// },
},
{
title: '占比',
align: "center",
dataIndex: 'zb',
// customRender:({text}) =>{
// if(text.indexOf("[") > -1){
// try{
// var a = text.indexOf("[")+1;
// var b = text.indexOf("]");
// var c = parseInt(b)-parseInt(a);
// text = !text ? "" : (text.length > 0 ? text.substr(a,c) : "");
// }catch(e){
// }
// }
// return text;
// }
},
{
title: '学生原始材料',
@ -484,13 +467,17 @@ export const columns4: BasicColumn[] = [
{
title: '存档类型',
dataIndex: 'cdlx',
width: 140,
// slots: { customRender: 'cdlxaction' },
align: "center",
},
{
title: '存档数量',
align: "center",
dataIndex: 'cdsl',
},
{
title: '详情',
dataIndex: 'xq',
width: 100,
align: "center",
slots: { customRender: 'xqaction' },
},
],

View File

@ -1,13 +1,19 @@
<template>
<div class="p-2">
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" class="query-criteria">
<a-row :gutter="24">
<a-col :span="12" style="margin-top: 10px;">
<a-button type="primary" @click="handleFanhui">返回</a-button>
</a-col>
</a-row>
</a-form>
</div>
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-row :gutter="24">
<a-col :span="12"><span class="seleciton-line">1</span><span class="selection-title">学生原始材料</span> </a-col>
<a-col :span="12" style="text-align: right">
<a-button type="primary" @click="handleFanhui">返回</a-button>
</a-col>
<a-col :gutter="24">
<div style="text-align: center; font-size:24px; font-weight: 700; line-height: 50px" v-if="jxrwInfo.value">
{{ jxrwInfo?.value.xn }}{{ jxrwInfo?.value.xqmc }}学期{{ jxrwInfo?.value.kcmc }}
@ -45,8 +51,7 @@
<template v-if="column.key === 'cdlx'">
<a-popover placement="topRight" class="">
<template #content>
<p
>为进一步加强教学督导交流研讨和教学反思改进学校要求对课程的学生原始考核材料进行全量或抽样电子存档<br />全量指对班级所有学生的原始材料全部存档抽样是指按学生成绩的优秀良好一般各抽取至少2份原始材料进行电子存档</p
<p >全量指对班级所有学生的原始材料全部存档<br />抽样指按学生成绩的优秀良好一般各抽取至少2份原始材料存档</p
>
</template>
<template #title>

View File

@ -38,26 +38,26 @@ export const columns: BasicColumn[] = [
return text;
},
},
{
title: '开课单位',
align: "center",
dataIndex: 'kkdw'
},
{
title: '学年学期/毕业年份',
align: "center",
dataIndex: 'xnxq'
},
{
title: '课程所属专业',
align: "center",
dataIndex: 'zydl'
},
// {
// title: '课程所属专业',
// align: "center",
// dataIndex: 'zydl'
// },
{
title: '课程名称',
align: "center",
dataIndex: 'kcmc'
},
{
title: '开课单位',
align: "center",
dataIndex: 'kkdw'
},
{
title: '授权状态',
align: "center",

View File

@ -43,7 +43,7 @@
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<!-- 表单区域 -->
@ -192,6 +192,14 @@
label: '撤回',
onClick: handleChehui.bind(null, record),
},
{
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
}
];
}else if(record.sqzt=='1'){
return [
@ -203,6 +211,14 @@
label: '撤回',
onClick: handleChehui.bind(null, record),
},
{
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
}
];
}else if(record.sqzt=='2'){
@ -215,6 +231,14 @@
label: '发布',
onClick: handleFabu.bind(null, record),
},
{
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
}
];
}

View File

@ -43,7 +43,7 @@
</a-col>
<a-col :span="24">
<a-form-item label="学年学期" id="ZjSqxxForm-xnxq" name="xnxq">
<JSelectMultiple v-model:value="formData.xnxq" placeholder="请选择学年学期,如果不选,默认全部" :dictCode="`v_xnxqdm,xnxqdm,xnxqdm`"></JSelectMultiple>
<JSelectMultiple v-model:value="formData.xnxq" placeholder="请选择学年学期,如果不选,默认全部" :dictCode="`v_xqxn,xqxn,xqxn`"></JSelectMultiple>
</a-form-item>
</a-col>
<a-col :span="24">

View File

@ -47,7 +47,7 @@
</a-col>
<a-col :span="24">
<a-form-item label="学年学期" id="ZjSqxxForm-xnxq" name="xnxq">
<JSelectMultiple v-model:value="item.xnxq" placeholder="请选择学年学期,如果不选,默认全部" :dictCode="`v_xnxqdm,xnxqdm,xnxqdm`"></JSelectMultiple>
<JSelectMultiple v-model:value="item.xnxq" placeholder="请选择学年学期,如果不选,默认全部" :dictCode="`v_xqxn,xqxn,xqxn`"></JSelectMultiple>
</a-form-item>
</a-col>
<a-col :span="24">