修改bug

This commit is contained in:
yangjun 2025-03-06 10:05:03 +08:00
parent a381d61b0d
commit 4d4509f407
34 changed files with 3279 additions and 458 deletions

View File

@ -0,0 +1,178 @@
package org.jeecg.modules.demo.blClsfzs.controller;
import java.util.Arrays;
import java.util.HashMap;
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.system.query.QueryRuleEnum;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.demo.blClsfzs.entity.BlClsfzs;
import org.jeecg.modules.demo.blClsfzs.service.IBlClsfzsService;
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: bl_clsfzs
* @Author: jeecg-boot
* @Date: 2025-02-19
* @Version: V1.0
*/
@Api(tags="bl_clsfzs")
@RestController
@RequestMapping("/blClsfzs/blClsfzs")
@Slf4j
public class BlClsfzsController extends JeecgController<BlClsfzs, IBlClsfzsService> {
@Autowired
private IBlClsfzsService blClsfzsService;
/**
* 分页列表查询
*
* @param blClsfzs
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "bl_clsfzs-分页列表查询")
@ApiOperation(value="bl_clsfzs-分页列表查询", notes="bl_clsfzs-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<BlClsfzs>> queryPageList(BlClsfzs blClsfzs,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BlClsfzs> queryWrapper = QueryGenerator.initQueryWrapper(blClsfzs, req.getParameterMap());
Page<BlClsfzs> page = new Page<BlClsfzs>(pageNo, pageSize);
IPage<BlClsfzs> pageList = blClsfzsService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param blClsfzs
* @return
*/
@AutoLog(value = "bl_clsfzs-添加")
@ApiOperation(value="bl_clsfzs-添加", notes="bl_clsfzs-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody BlClsfzs blClsfzs) {
blClsfzsService.save(blClsfzs);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param blClsfzs
* @return
*/
@AutoLog(value = "bl_clsfzs-编辑")
@ApiOperation(value="bl_clsfzs-编辑", notes="bl_clsfzs-编辑")
@RequiresPermissions("blClsfzs:bl_clsfzs:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody BlClsfzs blClsfzs) {
blClsfzsService.updateById(blClsfzs);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "bl_clsfzs-通过id删除")
@ApiOperation(value="bl_clsfzs-通过id删除", notes="bl_clsfzs-通过id删除")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
blClsfzsService.removeById(id);
return Result.OK("操作成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "bl_clsfzs-批量删除")
@ApiOperation(value="bl_clsfzs-批量删除", notes="bl_clsfzs-批量删除")
@RequiresPermissions("blClsfzs:bl_clsfzs:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.blClsfzsService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "bl_clsfzs-通过id查询")
@ApiOperation(value="bl_clsfzs-通过id查询", notes="bl_clsfzs-通过id查询")
@GetMapping(value = "/queryById")
public Result<BlClsfzs> queryById(@RequestParam(name="id",required=true) String id) {
BlClsfzs blClsfzs = blClsfzsService.getById(id);
if(blClsfzs==null) {
return Result.error("未找到对应数据");
}
return Result.OK(blClsfzs);
}
/**
* 导出excel
*
* @param request
* @param blClsfzs
*/
@RequiresPermissions("blClsfzs:bl_clsfzs:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BlClsfzs blClsfzs) {
return super.exportXls(request, blClsfzs, BlClsfzs.class, "bl_clsfzs");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("blClsfzs:bl_clsfzs:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BlClsfzs.class);
}
}

View File

@ -0,0 +1,57 @@
package org.jeecg.modules.demo.blClsfzs.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 org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.util.SpringContextUtils;
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: bl_clsfzs
* @Author: jeecg-boot
* @Date: 2025-02-19
* @Version: V1.0
*/
@Data
@TableName("bl_clsfzs")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="bl_clsfzs对象", description="bl_clsfzs")
public class BlClsfzs implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.Integer id;
/**createBy*/
@ApiModelProperty(value = "createBy")
private java.lang.String createBy;
/**createTime*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "createTime")
private java.util.Date createTime;
/**kcrwdm*/
@Excel(name = "kcrwdm", width = 15)
@ApiModelProperty(value = "kcrwdm")
private java.lang.String kcrwdm;
/**clType*/
@Excel(name = "clType", width = 15)
@ApiModelProperty(value = "clType")
private java.lang.String clType;
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.demo.blClsfzs.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.blClsfzs.entity.BlClsfzs;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: bl_clsfzs
* @Author: jeecg-boot
* @Date: 2025-02-19
* @Version: V1.0
*/
public interface BlClsfzsMapper extends BaseMapper<BlClsfzs> {
}

View File

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

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.demo.blClsfzs.service;
import org.jeecg.modules.demo.blClsfzs.entity.BlClsfzs;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: bl_clsfzs
* @Author: jeecg-boot
* @Date: 2025-02-19
* @Version: V1.0
*/
public interface IBlClsfzsService extends IService<BlClsfzs> {
}

View File

@ -0,0 +1,21 @@
package org.jeecg.modules.demo.blClsfzs.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.jeecg.modules.demo.blClsfzs.entity.BlClsfzs;
import org.jeecg.modules.demo.blClsfzs.mapper.BlClsfzsMapper;
import org.jeecg.modules.demo.blClsfzs.service.IBlClsfzsService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: bl_clsfzs
* @Author: jeecg-boot
* @Date: 2025-02-19
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class BlClsfzsServiceImpl extends ServiceImpl<BlClsfzsMapper, BlClsfzs> implements IBlClsfzsService {
}

View File

@ -143,7 +143,7 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
queryWrapper.like(StringUtils.isNotBlank(xxhbjwxtjxrw.getZhuanye()),"zymc",xxhbjwxtjxrw.getZhuanye());
// 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.apply("IF(b.id is null,'0',b.id) = '0'");
QueryWrapper<ZjXkxx> zjXkxxQueryWrapper = new QueryWrapper<>();
zjXkxxQueryWrapper.eq("user_id",sysUser.getUsername());
List<ZjXkxx> list = zjXkxxService.zjList(zjXkxxQueryWrapper);
@ -173,13 +173,121 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
return Result.OK(pageList);
}
@ApiOperation(value="教务系统教学任务-分页列表查询", notes="教务系统教学任务-分页列表查询")
@GetMapping(value = "/list2")
public Result<IPage<Xxhbjwxtjxrw>> list2(Xxhbjwxtjxrw xxhbjwxtjxrw,
@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();
QueryWrapper<ZjSqxx> zjSqxxQueryWrapper = new QueryWrapper<>();
zjSqxxQueryWrapper.eq("user_id",sysUser.getId());
zjSqxxQueryWrapper.eq("sqfw","0");
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()){
sfjx = "1";
}
if(zjSqxx.getSqEndTime()!=null&&zjSqxx.getSqEndTime().getTime()<=date.getTime()){
sfjx = "1";
}
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(","));
}
if(StringUtils.isNotBlank(zjSqxx.getKcmc())){
queryWrapper.in("kcmc",zjSqxx.getKcmc().split(","));
}
if(StringUtils.isNotBlank(zjSqxx.getKclb())){
queryWrapper.in("kclb",zjSqxx.getKclb().split(","));
}
if(StringUtils.isNotBlank(zjSqxx.getZydl())){
String arr[] = zjSqxx.getZydl().split(",");
String likeArr = "";
int i=0;
for(String ta : arr){
if(i==0){
likeArr = " zymc like concat('%','"+ta+"','%')";
}else{
likeArr = likeArr + " or zymc like concat('%','"+ta+"','%')";
}
}
queryWrapper.apply(likeArr);
// queryWrapper.like("zymc",zjSqxx.getZydl().split(","));
}
}
if(StringUtils.equals("1",sfjx)){
return Result.error("您未在授权期限内,不能进行查询!");
}
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.apply(StringUtils.isNotBlank(xxhbjwxtjxrw.getZhicheng()),"SUBSTRING(TEAXM,LOCATE('[',TEAXM)+1,locate(']',TEAXM)-locate('[',TEAXM)-1) = '"+xxhbjwxtjxrw.getZhicheng()+"'");
if(StringUtils.isNotBlank(xxhbjwxtjxrw.getSfzs()) && StringUtils.equals("0",xxhbjwxtjxrw.getSfzs())){
queryWrapper.apply("IF(b.id is null,'0',b.id) = '0'");//展示
}
if(StringUtils.isNotBlank(xxhbjwxtjxrw.getSfzs()) && StringUtils.equals("1",xxhbjwxtjxrw.getSfzs())){
queryWrapper.apply("IF(b.id is null,'0',b.id) != '0'");//不展示
}
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);
}
@ApiOperation(value="查询专家选课列表", notes="查询专家选课列表")
@GetMapping(value = "/zjList")
public Result<IPage<Xxhbjwxtjxrw>> zjList(Xxhbjwxtjxrw xxhbjwxtjxrw,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<Xxhbjwxtjxrw> queryWrapper = QueryGenerator.initQueryWrapper(xxhbjwxtjxrw, req.getParameterMap());
QueryWrapper<Xxhbjwxtjxrw> queryWrapper = QueryGenerator.initQueryWrapper("a",xxhbjwxtjxrw, req.getParameterMap());
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@ -192,7 +300,7 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
for(ZjXkxx zjXkxx:list){
sb.append(zjXkxx.getKcrwdm()+",");
}
queryWrapper.in("kcrwdm",sb.toString().split(","));
queryWrapper.in("a.kcrwdm",sb.toString().split(","));
}else{
IPage<Xxhbjwxtjxrw> pageList = new Page<>();
return Result.OK(pageList);
@ -201,6 +309,7 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
queryWrapper.eq(StringUtils.isNotBlank(xxhbjwxtjxrw.getZjxnxq()),"concat(xn,xqmc)",xxhbjwxtjxrw.getZjxnxq());
queryWrapper.like(StringUtils.isNotBlank(xxhbjwxtjxrw.getZhuanye()),"zymc",xxhbjwxtjxrw.getZhuanye());
queryWrapper.apply(StringUtils.isNotBlank(xxhbjwxtjxrw.getZhicheng()),"SUBSTRING(TEAXM,LOCATE('[',TEAXM)+1,locate(']',TEAXM)-locate('[',TEAXM)-1) = '"+xxhbjwxtjxrw.getZhicheng()+"'");
queryWrapper.apply("IF(b.id is null,'0',b.id) = '0'");
Page<Xxhbjwxtjxrw> page = new Page<Xxhbjwxtjxrw>(pageNo, pageSize);
IPage<Xxhbjwxtjxrw> pageList = xxhbjwxtjxrwService.page(page, queryWrapper);
return Result.OK(pageList);

View File

@ -98,6 +98,7 @@ public class Xxhbjwxtjxrw implements Serializable {
@TableField(exist = false)
private java.lang.String zhicheng;
@TableField(exist = false)
@Dict(dicCode = "xqxn",dictTable = "v_xqxn",dicText = "short_xqxn")
private java.lang.String zjxnxq;//专家展示学年学期
@TableField(exist = false)
private java.lang.String sfxk;//是否选课 0未选 1已选
@ -108,6 +109,10 @@ public class Xxhbjwxtjxrw implements Serializable {
private java.lang.String blType;//补录类型
@TableField(exist = false)
private java.lang.String sfxybl;//是否需要补录
@TableField(exist = false)
private java.lang.String sfzs;//是否展示 0展示其他不展示
@TableField(exist = false)
private java.lang.String id;//伪主键
}

View File

@ -3,7 +3,8 @@
<mapper namespace="org.jeecg.modules.demo.xxhbjwxtjxrw.mapper.XxhbjwxtjxrwMapper">
<select id="selectList" resultType="org.jeecg.modules.demo.xxhbjwxtjxrw.entity.Xxhbjwxtjxrw">
select *,concat(xn,xqmc) as zjxnxq from xxhbjwxtjxrw
select a.kcrwdm as id,a.XNXQDM,a.KCMC,a.KCRWDM,a.KCLB,a.XF,a.ZXS,a.KKYXMC,a.TEAXM,a.BJXX,a.XN,a.XQMC,a.SJFS,a.KHFSMC,a.IS_UPLOAD_SJ,a.ZYMC,a.JXBRS,a.FILE_SHZTMC,concat(a.xn,a.xqmc) as zjxnxq,IF(b.id is null,'0',b.id) sfzs from xxhbjwxtjxrw a
left join bl_clsfzs b on a.kcrwdm = b.kcrwdm
${ew.customSqlSegment}
</select>

View File

@ -311,6 +311,13 @@ public class XxhbjwxtxsmdController extends JeecgController<Xxhbjwxtxsmd, IXxhbj
list.add(par);
}
}
List<Xxhbjwxtxsmd> zhjxList = xxhbjwxtxsmdService.selectZhjxList(xxhbjwxtxsmd);
for(Xxhbjwxtxsmd par:zhjxList){
list.add(par);
}
return Result.OK(list);
}

View File

@ -149,4 +149,8 @@ public class Xxhbjwxtxsmd implements Serializable {
private String downPath[];
@TableField(exist = false)
private String downName;
@TableField(exist = false)
private String cltype;
@TableField(exist = false)
private String fxcjdm;
}

View File

@ -19,4 +19,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface XxhbjwxtxsmdMapper extends BaseMapper<Xxhbjwxtxsmd> {
IPage<Xxhbjwxtxsmd> getXsmdxxByFjtype(Page<Xxhbjwxtxsmd> page, @Param("xxhbjwxtxsmd") Xxhbjwxtxsmd xxhbjwxtxsmd);
List<Xxhbjwxtxsmd> selectZhjxList(Xxhbjwxtxsmd xxhbjwxtxsmd);
}

View File

@ -23,4 +23,16 @@
and b.student_path is not null
order by b.student_path desc
</select>
<select id="selectZhjxList" parameterType="org.jeecg.modules.demo.xxhbjwxtxsmd.entity.Xxhbjwxtxsmd" resultType="org.jeecg.modules.demo.xxhbjwxtxsmd.entity.Xxhbjwxtxsmd">
SELECT a.id,a.fxcjdm,a.fxcjmc as khfs,a.fxbl as zb,'全量' as cdlx,b.xkxs as cdsl, b.content AS zyyq, b.pfbz ,'1' as cltype
FROM xxhbfxcjb0016 a
LEFT JOIN zy_info b ON b.sfsckhcl = 1 AND a.fxcjdm = b.id
where synfxcjdm is not null
<if test="kcrwdm !=null and kcrwdm != ''">
and a.KCRWDM = #{kcrwdm}
</if>
ORDER BY a.fxcjmc asc
</select>
</mapper>

View File

@ -23,4 +23,6 @@ public interface IXxhbjwxtxsmdService extends IService<Xxhbjwxtxsmd> {
IPage<Xxhbjwxtxsmd> getXsmdxxByFjtype(Page<Xxhbjwxtxsmd> page, Xxhbjwxtxsmd xxhbjwxtxsmd);
Xxhbjwxtxsmd getBatchDown(Xxhbjwxtxsmd xxhbjwxtxsmd, HttpServletResponse response);
List<Xxhbjwxtxsmd> selectZhjxList(Xxhbjwxtxsmd xxhbjwxtxsmd);
}

View File

@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
@ -134,6 +135,11 @@ public class XxhbjwxtxsmdServiceImpl extends ServiceImpl<XxhbjwxtxsmdMapper, Xxh
return par2;
}
@Override
public List<Xxhbjwxtxsmd> selectZhjxList(Xxhbjwxtxsmd xxhbjwxtxsmd) {
return baseMapper.selectZhjxList(xxhbjwxtxsmd);
}
@Transactional(rollbackFor = {Exception.class})
public boolean syncList(Collection<Xxhbjwxtxsmd> entityList, boolean isDelete) {
QueryWrapper dqw = new QueryWrapper();

View File

@ -202,7 +202,7 @@ public class ZjSqxxController extends JeecgController<ZjSqxx, IZjSqxxService> {
if(zjSqxxService.getOne(queryWrapper)!=null){
return Result.error("该用户已存在此授权信息,请查询后修改!");
} else {
zjSqxxService.save(zjSqxx);
zjSqxxService.addNew(zjSqxx);
}
return Result.OK("添加成功!");
}

View File

@ -74,6 +74,7 @@ public class ZjXkxx implements Serializable {
@TableField(exist = false)
@Dict(dicCode = "xqxn",dictTable = "v_xqxn",dicText = "short_xqxn")
private java.lang.String zjxnxq;//专家展示学年学期

View File

@ -11,7 +11,7 @@ VITE_GLOB_APP_SHORT_NAME = 智慧教学服务中心
VITE_GLOB_APP_CAS_BASE_URL=https://authserver.nenu.edu.cn/authserver
# 是否开启单点登录
VITE_GLOB_APP_OPEN_SSO = true
VITE_GLOB_APP_OPEN_SSO = false
# 开启微前端模式
VITE_GLOB_APP_OPEN_QIANKUN=true

View File

@ -0,0 +1,748 @@
<template>
<div class="p-2">
<!-- 未选课页面 -->
<div v-if="sfxk == 0">
<div style="text-align: center">
<img src="../../../assets/images/Course-selection.png" style="margin-top: 100px; 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">
<a-form class="query-criteria">
<!-- <div style="margin-bottom: 20px">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">论文考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">选择论文</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<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"
v-model:current="paginationYxkcProp.current"
:total="paginationYxkcProp.total"
:pagination="paginationYxkcProp"
@change="onPageYxkcChange">
<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">
<a-form-item name="ssyxmc">
<template #label><span title="院系名称">院系名称</span></template>
<a-input placeholder="请输入院系名称" v-model:value="queryParam2.ssyxmc" allow-clear></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="ssxnzymc">
<template #label><span title="校内专业">校内专业</span></template>
<a-input placeholder="请输入校内专业" v-model:value="queryParam2.ssxnzymc" allow-clear></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="xsxh">
<template #label><span title="学生学号">学生学号</span></template>
<a-input placeholder="请输入学生学号" v-model:value="queryParam2.xsxh" allow-clear></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="xsxm">
<template #label><span title="学生姓名">学生姓名</span></template>
<a-input placeholder="请输入学生姓名" v-model:value="queryParam2.xsxm" allow-clear></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="bylwTm">
<template #label><span title="论文题目">论文题目</span></template>
<a-input placeholder="请输入学生姓名" v-model:value="queryParam2.bylwTm" allow-clear></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="bylwCj">
<template #label><span title="论文成绩">论文成绩</span></template>
<a-select placeholder="请选择论文成绩" v-model:value="queryParam2.bylwCjPar">
<a-select-option value="">全部</a-select-option>
<a-select-option value="1">优秀</a-select-option>
<a-select-option value="2">良好</a-select-option>
<a-select-option value="3">中等</a-select-option>
<a-select-option value="4">及格</a-select-option>
<a-select-option value="5">不及格</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="12" style="text-align: right">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery2">查询</a-button>
</a-col>
</a-row>
</a-form>
</div>
<a-table
:columns="columns2"
:data-source="dataList"
v-model:current="paginationProp.current"
:total="paginationProp.total"
: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="handleXUanze(record)" v-if="record.sfxk == '0'">选择</a>
<a disabled v-if="record.sfxk == '1'">已选择</a>
</template>
</template>
</a-table>
</div>
<!-- 查看论文材料 -->
<div v-if="sfxk == 2">
<div class="jeecg-basic-table-form-container">
<a-form class="query-criteria">
<!-- <div style="margin-bottom: 20px">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">论文考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">查看论文材料</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<a-button type="primary" style="margin-left: 10px; margin-bottom: 15px" @click="handleFanhui">查看材料</a-button>
</a-form>
</div>
<div class="jeecg-basic-table-form-container">
<a-form class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol">
<span class="seleciton-line">1</span> <span class="selection-title">基础信息</span>
<a-row>
<a-col :span="8">
<a-form-item label="院系名称">
{{ lwinfo.value.ssyxmc }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="校内专业">
{{ lwinfo.value.ssxnzymc }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="指导教师姓名">
{{ lwinfo.value.zdjsxm }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="学生学号">
{{ lwinfo.value.xsxh }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="学生姓名">
{{ lwinfo.value.xsxm }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="主辅修">
{{ lwinfo.value.zfx }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="论文题目">
{{ lwinfo.value.bylwTm }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="毕业年份">
{{ lwinfo.value.bynf }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="论文类别">
{{ lwinfo.value.bylwLb }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="论文成绩">
{{ lwinfo.value.bylwCj }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="终稿查重相似率">
{{ lwinfo.value.ccjgxsl }}
</a-form-item>
</a-col>
</a-row>
<span class="seleciton-line">1</span> <span class="selection-title">材料信息</span>
<div style="width: 100; text-align: right"><a-button type="primary" @click="batchHandleDown(lwinfo)">下载全部材料</a-button></div>
<a-tabs v-model:activeKey="activeKey" type="card">
<a-tab-pane key="1" tab="开题报告">
<div v-if="lwinfo.value.ktbg">
<div style="width: 100; text-align: right; padding: 10px"
><a-button type="primary" @click="handleDownload(lwinfo.value.ktbg)">下载开题报告</a-button></div
>
<iframe :src="ktbgUrl" width="100%" height="600px"></iframe>
</div>
<div v-else style="height: 300px; line-height: 300px; text-align: center">暂无文件</div>
</a-tab-pane>
<a-tab-pane key="2" tab="开题报告审核意见">
<div v-if="lwinfo.value.ktbgshyj">
<div style="width: 100; text-align: right; padding: 10px"
><a-button type="primary" @click="handleDownload(lwinfo.value.ktbgshyj)">下载开题报告审核意见</a-button></div
>
<iframe :src="ktbgshyjUrl" width="100%" height="600px"></iframe>
</div>
<div v-else style="height: 300px; line-height: 300px; text-align: center">暂无文件</div>
</a-tab-pane>
<!-- <a-tab-pane key="3" tab="中期检查">
<div v-if="lwinfo.value.zqjc">
<div style="width: 100; text-align: right; padding: 10px"
><a-button type="primary" @click="handleDownload(lwinfo.value.zqjc)">下载中期检查</a-button></div
>
<iframe :src="zqjcUrl" width="100%" height="600px"></iframe>
</div>
<div v-else style="height: 300px; line-height: 300px; text-align: center">暂无文件</div>
</a-tab-pane> -->
<a-tab-pane key="4" tab="论文终稿">
<div v-if="lwinfo.value.lwzg">
<div style="width: 100; text-align: right; padding: 10px"
><a-button type="primary" @click="handleDownload(lwinfo.value.lwzg)">下载论文终稿</a-button></div
>
<iframe :src="lwzgUrl" width="100%" height="600px"></iframe>
</div>
<div v-else style="height: 300px; line-height: 300px; text-align: center">暂无文件</div>
</a-tab-pane>
<a-tab-pane key="5" tab="指导记录单">
<div v-if="lwinfo.value.zdjld">
<div style="width: 100; text-align: right; padding: 10px"
><a-button type="primary" @click="handleDownload(lwinfo.value.zdjld)">下载指导记录单</a-button></div
>
<iframe :src="zdjldUrl" width="100%" height="600px"></iframe>
</div>
<div v-else style="height: 300px; line-height: 300px; text-align: center">暂无文件</div>
</a-tab-pane>
<a-tab-pane key="6" tab="检测报告等材料">
<div v-if="lwinfo.value.jcbgdcl">
<!-- <div><a @click="handleDownload(lwinfo.value.jcbgdcl)">下载</a></div> -->
<iframe :src="jcbgUrl" width="100%" height="600px"></iframe>
</div>
<div v-else style="height: 300px; line-height: 300px; text-align: center">暂无文件</div>
</a-tab-pane>
</a-tabs>
</a-form>
</div>
</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
>
<!-- <div style="margin-bottom: 20px">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleXuanke">论文考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">已选论文</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
</a-form>
</div>
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<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 :lg="6">
<a-form-item name="ssyxmc">
<template #label><span title="院系名称">院系名称</span></template>
<j-input placeholder="请输入院系名称" v-model:value="queryParam.ssyxmc" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="ssxnzymc">
<template #label><span title="校内专业">校内专业</span></template>
<j-input placeholder="请输入校内专业" v-model:value="queryParam.ssxnzymc" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="xsxh">
<template #label><span title="学生学号">学生学号</span></template>
<j-input placeholder="请输入学生学号" v-model:value="queryParam.xsxh" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="xsxm">
<template #label><span title="学生姓名">学生姓名</span></template>
<j-input placeholder="请输入学生姓名" v-model:value="queryParam.xsxm" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="bylwTm">
<template #label><span title="论文题目">论文题目</span></template>
<j-input placeholder="请输入学生姓名" v-model:value="queryParam.bylwTm" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="bylwCj">
<template #label><span title="论文成绩">论文成绩</span></template>
<a-select placeholder="请选择论文成绩" v-model:value="queryParam.bylwCjPar">
<a-select-option value="">全部</a-select-option>
<a-select-option value="1">优秀</a-select-option>
<a-select-option value="2">良好</a-select-option>
<a-select-option value="3">中等</a-select-option>
<a-select-option value="4">及格</a-select-option>
<a-select-option value="5">不及格</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="12" style="text-align: right">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</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)" />
</template>
</BasicTable>
</div>
</div>
</template>
<script lang="ts" name="lwKhclXz-lwKhclXz" setup>
import { ref, reactive, onMounted } from 'vue';
import { useListPage } from '/@/hooks/system/useListPage';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { columns, columns2, columns3, superQuerySchema } from './LwKhclXz.data';
import { list, deleteOne, deleteXkxxOne, batchDelete, getImportUrl, getExportUrl } from './LwKhclXz.api';
import { useUserStore } from '/@/store/modules/user';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { downloadFile, downloadFileLoacl } from '/@/utils/common/renderUtils';
import { getFileAccessHttpUrl } from '@/utils/common/compUtils';
import { encryptByBase64 } from '@/utils/cipher';
import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
import dayjs from 'dayjs';
import { defHttp } from '/@/utils/http/axios';
import { useGlobSetting } from '/@/hooks/setting';
const globSetting = useGlobSetting();
const baseApiUrl = globSetting.domainUrl;
const formRef = ref();
const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const userStore = useUserStore();
const queryParam2 = ref<any>({});
const emit = defineEmits(['callback']);
const checkData = ref<any>([]);
const dataList = ref<any>([]);
const sfxk = ref<number>(0);
const lwinfo = reactive<any>({});
const docUrl = ref<string>('');
const activeKey = ref('1');
const ktbgUrl = ref<string>('');
const ktbgshyjUrl = ref<string>('');
const zqjcUrl = ref<string>('');
const lwzgUrl = ref<string>('');
const zdjldUrl = ref<string>('');
const jcbgUrl = ref<string>('');
let onlinePreviewDomain = '';
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
api: list,
columns: columns3,
canResize: false,
useSearchForm: false,
actionColumn: {
width: 120,
fixed: 'right',
},
beforeFetch: async (params) => {
return Object.assign(params, queryParam);
},
},
exportConfig: {
name: '教务系统教学任务',
url: getExportUrl,
params: queryParam,
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }] = tableContext;
//
async function batchHandleDown(record) {
console.log('🙍‍♂️', record);
// ----
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);
downloadFileLoacl(res.downLoadPath);
});
}
//
function handleDownload(record) {
downloadFile(record);
}
//
function handleYulan(record) {
console.log('😶', record);
var file = getFileAccessHttpUrl(record);
window.open('https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file)));
}
//
async function handleChakan(record) {
console.log("record--->",record)
lwinfo.value = record;
console.log("lwinfo--->",lwinfo)
sfxk.value = 2;
const xsxh = record.xsxh;
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)
await defHttp.post({ url: '/sys/common/ycxz2',params:{filename,xsxh} }).then((res) => {});
}
ktbgUrl.value = '';
if (record.ktbg) {
var file = record.ktbg;
file = file.substring(0,file.lastIndexOf(".")) + xsxh + file.substring(file.lastIndexOf("."),file.length);
console.log("🚀 ~ handleChakan ~ record.ktbg:", file)
var file1 = getFileAccessHttpUrl(file.replaceAll(" ",""));
ktbgUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1));
console.log("🚀 ~ handleChakan ~ ktbgUrl.value:", ktbgUrl.value)
} else {
ktbgUrl.value = '';
}
ktbgshyjUrl.value = '';
if (record.ktbgshyj) {
var file = record.ktbgshyj;
file = file.substring(0,file.lastIndexOf(".")) + xsxh + file.substring(file.lastIndexOf("."),file.length);
console.log("🚀 ~ handleChakan ~ record.ktbgshyj:", file)
var file1 = getFileAccessHttpUrl(file.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.replace(" ",""));
// zqjcUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1));
// } else {
// zqjcUrl.value = '';
// }
lwzgUrl.value = '';
if (record.lwzg) {
var file = record.lwzg;
file = file.substring(0,file.lastIndexOf(".")) + xsxh + file.substring(file.lastIndexOf("."),file.length);
console.log("🚀 ~ handleChakan ~ record.lwzg:", file)
var file1 = getFileAccessHttpUrl(file.replaceAll(" ",""));
lwzgUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1));
} else {
lwzgUrl.value = '';
}
zdjldUrl.value = '';
if (record.zdjld) {
var file = record.zdjld;
file = file.substring(0,file.lastIndexOf(".")) + xsxh + file.substring(file.lastIndexOf("."),file.length);
console.log("🚀 ~ handleChakan ~ record.zdjld:", file)
var file1 = getFileAccessHttpUrl(file.replaceAll(" ",""));
zdjldUrl.value = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1));
} else {
zdjldUrl.value = '';
}
if (record.ccjg) {
jcbgUrl.value = record.ccjg;
} else {
jcbgUrl.value = '';
}
}
const getViewFileDomain = () => defHttp.get({ url: '/sys/comment/getFileViewDomain' });
/**
* 初始化domain
*/
async function initViewDomain() {
if (!onlinePreviewDomain) {
onlinePreviewDomain = await getViewFileDomain();
}
if (!onlinePreviewDomain.startsWith('http')) {
onlinePreviewDomain = 'http://' + onlinePreviewDomain;
}
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '查看论文材料',
onClick: handleChakan.bind(null, record),
},
// {
// label: '',
// onClick: handleKhpjcl.bind(null, record),
// },
// {
// label: '',
// onClick: handleXsyscl.bind(null, record),
// },
];
}
//table
const labelCol = reactive({
xs: 24,
sm: 8,
xl: 8,
xxl: 8,
});
const wrapperCol = reactive({
xs: 24,
sm: 14,
});
const paginationProp = ref<any>({
total: 1,
current: 1,
pageSize: 10,
pageNo: 1,
});
const paginationYxkcProp = ref<any>({
total: 1,
current: 1,
pageSize: 10,
pageNo: 1,
});
/**
* 查询
*/
function searchQuery() {
reload();
}
//
function handleXuanke() {
sfxk.value = 1;
searchQuery2();
}
//
function handleXUanze(record) {
record.mainId = record.id;
record.id = null;
console.log('😰record----------', record);
defHttp
.post({
url: '/lwKhclXz/lwKhclXz/add',
params: record,
})
.then((res) => {
console.log('🤛', res);
});
xtsuccess();
}
//
async function handleDel(record) {
await deleteXkxxOne({ id: record.id }, xtsuccess);
}
function xtsuccess() {
//
defHttp.get({ url: '/lwKhclXz/lwKhclXz/list', params: {pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
checkData.value = res.records;
if(res.current>res.pages){
paginationYxkcProp.value.current =res.pages
xtsuccess()
}else{
paginationYxkcProp.value.current = res.current;
}
paginationYxkcProp.value.total = res.total;
});
searchQuery2();
}
/**
* 查询
*/
function searchQuery2() {
queryParam2.value.pageNo = paginationProp.value.current;
defHttp.get({ url: '/lwKhcl/lwKhcl/getXkList', params: { pageNo: paginationProp.value.current,pageSize:paginationProp.value.pageSize, ...queryParam2.value } }).then((res) => {
dataList.value = res.records;
paginationProp.value.total = res.total;
// paginationProp.value.current = res.pageNo;
});
}
//
async function onPageChange(record) {
console.log('👬', record);
paginationProp.value.current = record.current;
paginationProp.value.pageSize = record.pageSize;
await searchQuery2();
}
//
async function onPageYxkcChange(record) {
paginationYxkcProp.value.current = record.current;
paginationYxkcProp.value.pageSize = record.pageSize;
console.log("🚀 ~ onPageYxkcChange ~ paginationYxkcProp.value:", paginationYxkcProp.value)
await init();
}
//
function handleFanhui() {
sfxk.value = 999;
init();
}
function init() {
//
defHttp.get({ url: '/lwKhclXz/lwKhclXz/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
checkData.value = res.records;
paginationYxkcProp.value.total = res.total;
paginationYxkcProp.value.current = res.current;
});
}
function init2() {
//
defHttp.get({ url: '/lwKhclXz/lwKhclXz/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
if (res.records.length == 0) {
sfxk.value = 0;
checkData.value = [];
} else {
sfxk.value = 1;
checkData.value = res.records;
paginationYxkcProp.value.total = res.total;
paginationYxkcProp.value.current = res.current;
searchQuery2();
}
});
}
//
onMounted(() => {
init2();
});
</script>
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust {
min-width: 100px !important;
}
.query-group-split-cust {
width: 30px;
display: inline-block;
text-align: center;
}
.ant-form-item:not(.ant-form-item-with-help) {
margin-bottom: 16px;
height: 32px;
}
:deep(.ant-picker),
:deep(.ant-input-number) {
width: 100%;
}
}
.query-criteria {
padding-top: 22px;
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 {
padding: 10px;
background: #fff;
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;
}
.selection-title {
font-size: 18px;
font-weight: 700;
padding-left: 10px;
}
.seleciton-line {
background: #1890ff;
border-radius: 10px;
color: #1890ff;
}
.mbxtitle {
font-size: 22px;
line-height: 22px;
}
</style>

View File

@ -10,18 +10,36 @@
</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">
<!-- <div style="margin-bottom: 20px">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">论文考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">选择论文</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<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"
</div> -->
<!--引用表格-->
<BasicTable @register="registerTable" class="table-style" :rowSelection="rowSelection">
<template #tableTitle>
<span class="seleciton-line">1</span> <span class="selection-title">已选论文</span>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button >批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<!-- <a-table :columns="columns2" :data-source="checkData"
v-model:current="paginationYxkcProp.current"
:total="paginationYxkcProp.total"
:pagination="paginationYxkcProp"
@ -32,7 +50,7 @@
<a @click="handleDel(record)">移除</a>
</template>
</template>
</a-table>
</a-table> -->
<div class="jeecg-basic-table-form-container" style="margin-top: 10px">
<a-form
@ -120,7 +138,7 @@
<a-breadcrumb-item><span class="mbxtitle">查看论文材料</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<a-button type="primary" style="margin-left: 10px; margin-bottom: 15px" @click="handleFanhui">查看材料</a-button>
<a-button type="primary" style="margin-left: 10px; margin-bottom: 15px" @click="handleFanhui">返回</a-button>
</a-form>
</div>
<div class="jeecg-basic-table-form-container">
@ -244,91 +262,6 @@
</a-form>
</div>
</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
>
<!-- <div style="margin-bottom: 20px">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleXuanke">论文考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">已选论文</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
</a-form>
</div>
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<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 :lg="6">
<a-form-item name="ssyxmc">
<template #label><span title="院系名称">院系名称</span></template>
<j-input placeholder="请输入院系名称" v-model:value="queryParam.ssyxmc" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="ssxnzymc">
<template #label><span title="校内专业">校内专业</span></template>
<j-input placeholder="请输入校内专业" v-model:value="queryParam.ssxnzymc" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="xsxh">
<template #label><span title="学生学号">学生学号</span></template>
<j-input placeholder="请输入学生学号" v-model:value="queryParam.xsxh" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="xsxm">
<template #label><span title="学生姓名">学生姓名</span></template>
<j-input placeholder="请输入学生姓名" v-model:value="queryParam.xsxm" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="bylwTm">
<template #label><span title="论文题目">论文题目</span></template>
<j-input placeholder="请输入学生姓名" v-model:value="queryParam.bylwTm" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="bylwCj">
<template #label><span title="论文成绩">论文成绩</span></template>
<a-select placeholder="请选择论文成绩" v-model:value="queryParam.bylwCjPar">
<a-select-option value="">全部</a-select-option>
<a-select-option value="1">优秀</a-select-option>
<a-select-option value="2">良好</a-select-option>
<a-select-option value="3">中等</a-select-option>
<a-select-option value="4">及格</a-select-option>
<a-select-option value="5">不及格</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="12" style="text-align: right">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</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)" />
</template>
</BasicTable>
</div>
</div>
</template>
@ -393,7 +326,7 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
params: queryParam,
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }] = tableContext;
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] =tableContext;
//
async function batchHandleDown(record) {
console.log('🙍‍♂️', record);
@ -600,19 +533,18 @@ async function handleDel(record) {
await deleteXkxxOne({ id: record.id }, xtsuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, xtsuccess);
}
function xtsuccess() {
//
defHttp.get({ url: '/lwKhclXz/lwKhclXz/list', params: {pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
checkData.value = res.records;
if(res.current>res.pages){
paginationYxkcProp.value.current =res.pages
xtsuccess()
}else{
paginationYxkcProp.value.current = res.current;
}
paginationYxkcProp.value.total = res.total;
});
selectedRowKeys.value=[]
reload();
searchQuery2();
}
/**
@ -644,8 +576,8 @@ async function onPageYxkcChange(record) {
//
function handleFanhui() {
sfxk.value = 999;
init();
sfxk.value = 1;
reload();
}
function init() {

View File

@ -42,7 +42,16 @@
<a-select-option value="待审核">待审核</a-select-option>
<a-select-option value="审核通过">审核通过</a-select-option>
</a-select>
<!-- <j-dict-select-tag placeholder="请选择开课单位名称" v-model:value="queryParam.kkyxmc" :dictCode="`v_kkdw,kkyxmc,kkyxmc`" allow-clear /> -->
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="sfzs">
<template #label><span title="是否展示">是否展示</span></template>
<a-select placeholder="请选择审核状态" v-model:value="queryParam.sfzs">
<a-select-option value="">全部</a-select-option>
<a-select-option value="0">展示</a-select-option>
<a-select-option value="1">不展示</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@ -62,6 +71,13 @@
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
<template v-if="column.dataIndex==='sfzs'">
<!--文件字段回显插槽-->
<span v-if="text=='0'" style="font-size: 12px;font-style: italic;">当前展示</span>
<span v-else style="font-size: 12px;font-style: italic;color:red;">当前不展示</span>
</template>
</template>
</BasicTable>
<!-- 表单区域 -->
<XxhbjwxtjxrwModal ref="registerModal" @success="handleSuccess"></XxhbjwxtjxrwModal>
@ -73,12 +89,13 @@
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './Xxhbjwxtjxrw.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbjwxtjxrw.api';
import { list2, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbjwxtjxrw.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import XxhbjwxtjxrwModal from './components/XxhbjwxtjxrwModal.vue'
import { useUserStore } from '/@/store/modules/user';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JInput from "/@/components/Form/src/jeecg/components/JInput.vue";
import { defHttp } from '/@/utils/http/axios';
const formRef = ref();
const queryParam = reactive<any>({});
@ -89,11 +106,11 @@
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
api: list,
api: list2,
columns,
canResize:false,
useSearchForm: false,
showActionColumn: false,
// showActionColumn: false,
actionColumn: {
width: 120,
fixed: 'right',
@ -172,17 +189,31 @@ function textDown(type,downame){
* 详情
*/
function handleDetail(record: Recordable) {
// registerModal.value.disableSubmit = true;
// registerModal.value.edit(record);
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
emit('callback',record)
// emit('callback',record)
}
function handleAddSfzs(record: Recordable){
var params = {kcrwdm:record.kcrwdm,cl_type:'0'}
defHttp.post({ url: '/blClsfzs/blClsfzs/add', params }, { isTransformResponse: false }).then((res) => {
console.log(res);
reload();
})
}
async function handleDelSfzs(record: Recordable){
await deleteOne({ id: record.sfzs }, handleSuccess);
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess);
await deleteOne({ id: record.id }, reload);
}
/**
@ -204,6 +235,20 @@ function textDown(type,downame){
*/
function getTableAction(record) {
return [
{
label: '不展示',
onClick: handleAddSfzs.bind(null, record),
ifShow: () => {
return record.sfzs==0; //
},
},
{
label: '展示',
onClick: handleDelSfzs.bind(null, record),
ifShow: () => {
return record.sfzs!=0; //
},
},
{
label: '详情',
onClick: handleDetail.bind(null, record),

View File

@ -0,0 +1,261 @@
<template>
<div class="p-2">
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="6" >
<a-form-item name="xn">
<template #label><span 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="学期">学期</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="kcmc">
<template #label><span title="课程名称">课程名称</span></template>
<j-input placeholder="请输入课程名称" v-model:value="queryParam.kcmc" allow-clear ></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kkyxmc">
<template #label><span title="开课单位名称">开课单位名称</span></template>
<j-dict-select-tag placeholder="请选择开课单位名称" v-model:value="queryParam.kkyxmc" :dictCode="`v_kkdw,kkyxmc,kkyxmc`" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="任课教师">任课教师</span></template>
<j-input placeholder="请输入任课教师" v-model:value="queryParam.teaxm" allow-clear ></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="fileShztmc">
<template #label><span title="审核状态">审核状态</span></template>
<a-select placeholder="请选择审核状态" v-model:value="queryParam.fileShztmc">
<a-select-option value="">全部</a-select-option>
<a-select-option value="待审核">待审核</a-select-option>
<a-select-option value="审核通过">审核通过</a-select-option>
</a-select>
<!-- <j-dict-select-tag placeholder="请选择开课单位名称" v-model:value="queryParam.kkyxmc" :dictCode="`v_kkdw,kkyxmc,kkyxmc`" allow-clear /> -->
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
<a-col :lg="6">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls" style="margin-left: 8px"> 导出</a-button>
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable" >
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<!-- 表单区域 -->
<XxhbjwxtjxrwModal ref="registerModal" @success="handleSuccess"></XxhbjwxtjxrwModal>
</div>
</template>
<script lang="ts" name="xxhbjwxtjxrw-xxhbjwxtjxrw" setup>
import { ref, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './Xxhbjwxtjxrw.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbjwxtjxrw.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import XxhbjwxtjxrwModal from './components/XxhbjwxtjxrwModal.vue'
import { useUserStore } from '/@/store/modules/user';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JInput from "/@/components/Form/src/jeecg/components/JInput.vue";
const formRef = ref();
const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const userStore = useUserStore();
const emit = defineEmits(['callback']);
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
api: list,
columns,
canResize:false,
useSearchForm: false,
showActionColumn: false,
actionColumn: {
width: 120,
fixed: 'right',
},
beforeFetch: async (params) => {
return Object.assign(params, queryParam);
},
},
exportConfig: {
name: "教务系统教学任务",
url: getExportUrl,
params: queryParam,
},
importConfig: {
url: getImportUrl,
success: handleSuccess
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] = tableContext;
const labelCol = reactive({
xs:24,
sm:6,
xl:6,
xxl:6
});
const wrapperCol = reactive({
xs: 24,
sm: 18,
});
//
const superQueryConfig = reactive(superQuerySchema);
function textDown(type,downame){
var a = document.createElement("a"); //<a></a>
a.href = "/download/"+type+".docx";
//ahref .
a.download =downame+".docx";
//.xlsxpdf.fpd
a.style.display = "none"; // a
document.body.appendChild(a);
// a
a.click(); //aahref
a.remove();
// a
}
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
searchQuery();
}
/**
* 新增事件
*/
function handleAdd() {
registerModal.value.disableSubmit = false;
registerModal.value.add();
}
/**
* 编辑事件
*/
function handleEdit(record: Recordable) {
registerModal.value.disableSubmit = false;
registerModal.value.edit(record);
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
// registerModal.value.disableSubmit = true;
// registerModal.value.edit(record);
emit('callback',record)
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
];
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 重置
*/
function searchReset() {
formRef.value.resetFields();
selectedRowKeys.value = [];
//
reload();
}
</script>
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust{
min-width: 100px !important;
}
.query-group-split-cust{
width: 30px;
display: inline-block;
text-align: center
}
.ant-form-item:not(.ant-form-item-with-help){
margin-bottom: 16px;
height: 32px;
}
:deep(.ant-picker),:deep(.ant-input-number){
width: 100%;
}
}
</style>

View File

@ -5,13 +5,15 @@ const { createConfirm } = useMessage();
enum Api {
list = '/xxhbjwxtjxrw/xxhbjwxtjxrw/list',
xklist = '/zjXkxx/zjXkxx/list',
list2 = '/xxhbjwxtjxrw/xxhbjwxtjxrw/list2',
listbl = '/xxhbjwxtjxrw/xxhbjwxtjxrw/listbl',
zjList = '/xxhbjwxtjxrw/xxhbjwxtjxrw/zjList',
save='/xxhbjwxtjxrw/xxhbjwxtjxrw/add',
edit='/xxhbjwxtjxrw/xxhbjwxtjxrw/edit',
deleteOne = '/xxhbjwxtjxrw/xxhbjwxtjxrw/delete',
deleteOne = '/blClsfzs/blClsfzs/delete',
deleteXkxxOne = '/zjXkxx/zjXkxx/delete',
deleteBatch = '/xxhbjwxtjxrw/xxhbjwxtjxrw/deleteBatch',
deleteBatch = '/zjXkxx/zjXkxx/deleteBatch',
importExcel = '/xxhbjwxtjxrw/xxhbjwxtjxrw/importExcel',
exportXls = '/xxhbjwxtjxrw/xxhbjwxtjxrw/exportXls',
exportBlkhclXls = '/xxhbjwxtjxrw/xxhbjwxtjxrw/exportBlkhclXls',
@ -34,6 +36,8 @@ export const getImportUrl = Api.importExcel;
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
export const xklist = (params) => defHttp.get({ url: Api.xklist, params });
export const list2 = (params) => defHttp.get({ url: Api.list2, params });
export const zjList = (params) => defHttp.get({ url: Api.zjList, params });
export const listbl = (params) => defHttp.get({ url: Api.listbl, params });

View File

@ -27,28 +27,28 @@ export const columns: BasicColumn[] = [
align: "center",
dataIndex: 'kcmc'
},
{
title: '课程号',
align: "center",
dataIndex: 'kcrwdm'
},
// {
// title: '课程号',
// align: "center",
// dataIndex: 'kcrwdm'
// },
{
title: '课程类别',
align: "center",
dataIndex: 'kclb'
},
{
title: '学分',
align: "center",
dataIndex: 'xf',
width: 80
},
{
title: '学时',
align: "center",
dataIndex: 'zxs',
width: 80
},
// {
// title: '学分',
// align: "center",
// dataIndex: 'xf',
// width: 80
// },
// {
// title: '学时',
// align: "center",
// dataIndex: 'zxs',
// width: 80
// },
{
title: '开课单位',
align: "center",
@ -84,7 +84,14 @@ export const columns: BasicColumn[] = [
{
title: '审核状态',
align: "center",
dataIndex: 'fileShztmc'
dataIndex: 'fileShztmc',
width: 80
},
{
title: '是否展示',
align: "center",
dataIndex: 'sfzs',
width: 80
},
// {
// title: '是否能上传考核分析及试卷样本',
@ -155,7 +162,7 @@ export const columns2: BasicColumn[] = [
{
title: '学年学期',
align: "center",
dataIndex: 'zjxnxq',
dataIndex: 'zjxnxq_dictText',
ellipsis: true,
},
{
@ -258,7 +265,7 @@ export const columns3: BasicColumn[] = [
{
title: '学年学期',
align: "center",
dataIndex: 'zjxnxq'
dataIndex: 'zjxnxq_dictText'
},
{
title: '课程名称',

View File

@ -197,14 +197,18 @@
<KhpjclList ref="khpjclFormModal" @callback="init"></KhpjclList>
</a-tab-pane>
<a-tab-pane key="3" tab="学生原始材料" :forceRender="true">
<div v-show="sfxk2 != 5">
<div v-show="sfxk2 == 0">
<XsysclList ref="xsysclFormModal" @callback="init" @handleXq="handleXsysclxq"></XsysclList>
</div>
<div v-show="sfxk2 == 5">
<XsysclxqList ref="xsysclXqFormModal" @callback="handleXsyscl2"></XsysclxqList>
</div>
<div v-show="sfxk2 == 6">
<div style="text-align: right;margin-right: 20px;"><a-button type="primary" @click="sfxk2 =0">返回</a-button></div>
<Xxhbfxcjmxb0015List ref="Xxhbfxcjmxb0015Modal"></Xxhbfxcjmxb0015List>
</div>
</a-tab-pane>
<a-tab-pane key="4" tab="智慧教学信息" :forceRender="true">
<!-- <a-tab-pane key="4" tab="智慧教学信息" :forceRender="true">
<div v-show="zhjxxx == 1">
<Xxhbfxcjb0016List ref="Xxhbfxcjb0016Modal" @callback="handleZhjxzx" ></Xxhbfxcjb0016List>
</div>
@ -212,7 +216,7 @@
<div style="text-align: right;margin-right: 20px;"><a-button type="primary" @click="zhjxxx =1">返回</a-button></div>
<Xxhbfxcjmxb0015List ref="Xxhbfxcjmxb0015Modal"></Xxhbfxcjmxb0015List>
</div>
</a-tab-pane>
</a-tab-pane> -->
</a-tabs>
</div>
@ -239,7 +243,7 @@
<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,true order by sort asc`" allow-clear />
<j-dict-select-tag placeholder="请选择学年学期" v-model:value="queryParam.zjxnxq" :dictCode="`v_xqxn,short_xqxn,xqxn,true order by sort desc`" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">
@ -452,8 +456,15 @@ function handleXuanke() {
}
function handleXsysclxq(record) {
console.log('👨handleXsysclxq', record);
sfxk2.value = 5;
xsysclXqFormModal.value.init(record);
var cltype = record.cltype;
console.log('cltype--->',cltype);
if(cltype == '1'){
sfxk2.value = 6;
Xxhbfxcjmxb0015Modal.value.init(record);
}else{
sfxk2.value = 5;
xsysclXqFormModal.value.init(record);
}
}
//
function handleFanhui() {

View File

@ -0,0 +1,752 @@
<template>
<div class="p-2">
<div v-if="sfxk == 0">
<div style="text-align: center">
<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" >
<a-form class="query-criteria">
<!-- <div style="margin-bottom: 20px;">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">课程考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">选择课程</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<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"
v-model:current="paginationYxkcProp.current"
:total="paginationYxkcProp.total"
:pagination="paginationYxkcProp"
@change="onPageYxkcChange"
>
<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">
<a-form-item name="zjxnxq">
<template #label><span title="学年学期" class="xn-title">学年学期</span></template>
<j-dict-select-tag placeholder="请选择学年学期" v-model:value="queryParam2.zjxnxq" :dictCode="`v_xqxn,xqxn,xqxn,true order by sort asc`" 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>
<j-dict-select-tag
placeholder="请选择开课单位名称"
v-model:value="queryParam2.kkyxmc"
:dictCode="`v_kkdw,kkyxmc,kkyxmc`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="zhunaye">
<template #label><span title="所属专业" class="xn-title">所属专业</span></template>
<j-dict-select-tag
placeholder="请选择所属专业"
v-model:value="queryParam2.zhuanye"
:dictCode="`v_zhuanye,dept_name,dept_name`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="任课教师" class="xn-title">任课教师</span></template>
<j-input placeholder="请输入任课教师" v-model:value="queryParam2.teaxm" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="zhicheng">
<template #label><span title="职称" class="xn-title">职称</span></template>
<j-dict-select-tag
placeholder="请选择职称"
v-model:value="queryParam2.zhicheng"
:dictCode="`v_zhicheng,zhicheng,zhicheng`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="课程名称" class="xn-title">课程名称</span></template>
<j-input placeholder="请输入课程名称" v-model:value="queryParam2.kcmc" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :span="12" style="text-align: right">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery2">查询</a-button>
</a-col>
</a-row>
</a-form>
</div>
<a-table
:columns="columns2"
:data-source="dataList"
v-model:current="paginationProp.current"
:total="paginationProp.total"
: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="handleXUanze(record)" v-if="record.sfxk == '0'">选择</a>
<a disabled v-if="record.sfxk == '1'">已选择</a>
</template>
</template>
</a-table>
<!-- <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 v-show="sfxk == 2">
<CjdForm ref="cjdFormModal" @callback="init"></CjdForm>
</div> -->
<!-- 考核评价材料 -->
<!-- <div v-show="sfxk == 3">
<XxhbjwxtscwjxxList ref="khpjclFormModal" @callback="init"></XxhbjwxtscwjxxList>
</div> -->
<!-- 学生原始材料 -->
<!-- <div v-show="sfxk == 4">
<XxhbjwxtxsmdList3 ref="xsysclFormModal" @callback="init" @handleXq="handleXsysclxq"></XxhbjwxtxsmdList3>
</div> -->
<!-- 学生原始材料-详情 -->
<!-- <div v-show="sfxk == 5">
<XxhbjwxtxsmdList4 ref="xsysclXqFormModal" @callback="handleXsyscl"></XxhbjwxtxsmdList4>
</div> -->
<!-- 学生列表查看 -->
<div v-show="sfxk == 6">
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" class="query-criteria">
<a-row :gutter="24">
<a-col :span="24" style="margin-bottom: 10px;">
<!-- <div >
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">课程考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">已选课程</a></a-breadcrumb-item>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui" v-if="jxrwInfo.value">{{jxrwInfo?.value?.kcmc}}</a></a-breadcrumb-item>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">学生原始材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">详情</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<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" v-if="jxrwInfo?.value">
<a-col :span="12"><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 }}
</div>
<div v-if="jxrwInfo.value">
<div style="padding-left:16px;font-size:16px; font-weight: 700">概要信息</div>
<a-row style="line-height: 30px">
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">开课单位</span> <span class="header-title">{{ jxrwInfo?.value.kkyxmc }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程类别</span> <span class="header-title">{{ jxrwInfo?.value.kclb }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程名称</span> <span class="header-title">{{ jxrwInfo?.value.kcmc }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程负责人</span> <span class="header-title">{{ jxrwInfo?.value.teaxm }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">选课人数</span> <span class="header-title">{{ jxrwInfo?.value.jxbrs }}</span>
</a-col>
</a-row>
</div>
</a-col>
</a-row>
</a-form>
</div>
<a-tabs v-model:activeKey="activeKey" type="card" @change="onChangeTab" style="background-color: white;">
<a-tab-pane key="1" tab="学生成绩">
<XscjList ref="cjdFormModal" @callback="init"></XscjList>
</a-tab-pane>
<a-tab-pane key="2" tab="考核评价材料" :forceRender="true">
<KhpjclList ref="khpjclFormModal" @callback="init"></KhpjclList>
</a-tab-pane>
<a-tab-pane key="3" tab="学生原始材料" :forceRender="true">
<div v-show="sfxk2 != 5">
<XsysclList ref="xsysclFormModal" @callback="init" @handleXq="handleXsysclxq"></XsysclList>
</div>
<div v-show="sfxk2 == 5">
<XsysclxqList ref="xsysclXqFormModal" @callback="handleXsyscl2"></XsysclxqList>
</div>
</a-tab-pane>
<a-tab-pane key="4" tab="智慧教学信息" :forceRender="true">
<div v-show="zhjxxx == 1">
<Xxhbfxcjb0016List ref="Xxhbfxcjb0016Modal" @callback="handleZhjxzx" ></Xxhbfxcjb0016List>
</div>
<div v-show="zhjxxx == 2">
<div style="text-align: right;margin-right: 20px;"><a-button type="primary" @click="zhjxxx =1">返回</a-button></div>
<Xxhbfxcjmxb0015List ref="Xxhbfxcjmxb0015Modal"></Xxhbfxcjmxb0015List>
</div>
</a-tab-pane>
</a-tabs>
</div>
<!-- 选课后的列表 -->
<div v-if="sfxk == 999">
<div class="jeecg-basic-table-form-container">
<a-form class="query-criteria">
<!-- <div style="margin-bottom: 20px;">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleXuanke">课程考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">已选课程</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<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="formRef3" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-row :gutter="24">
<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,true order by sort asc`" 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>
<j-dict-select-tag
placeholder="请选择开课单位名称"
v-model:value="queryParam.kkyxmc"
:dictCode="`v_kkdw,kkyxmc,kkyxmc`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="zhunaye">
<template #label><span title="所属专业" class="xn-title">所属专业</span></template>
<j-dict-select-tag
placeholder="请选择所属专业"
v-model:value="queryParam.zhuanye"
:dictCode="`v_zhuanye,dept_name,dept_name`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="任课教师" class="xn-title">任课教师</span></template>
<j-input placeholder="请输入任课教师" v-model:value="queryParam.teaxm" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="zhicheng">
<template #label><span title="职称" class="xn-title">职称</span></template>
<j-dict-select-tag
placeholder="请选择职称"
v-model:value="queryParam.zhicheng"
:dictCode="`v_zhicheng,zhicheng,zhicheng`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="课程名称" class="xn-title">课程名称</span></template>
<j-input placeholder="请输入课程名称" v-model:value="queryParam.kcmc" allow-clear></j-input>
</a-form-item>
</a-col>
<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-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)" />
</template>
<template #cjd="{ record }">
<a @click="handleCjd(record)">查看</a>
</template>
<template #khpjcl="{ record }">
<a>查看</a>
</template>
<template #xsyscl="{ record }">
<a>查看</a>
</template>
</BasicTable>
</div>
<!-- 表单区域 -->
<XxhbjwxtjxrwModal ref="registerModal" @success="handleSuccess"></XxhbjwxtjxrwModal class="table-style">
</div>
</template>
<script lang="ts" name="xxhbjwxtjxrw-xxhbjwxtjxrw" setup>
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, 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';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
import CjdForm from './components/CjdForm.vue';
import XxhbjwxtscwjxxList from '/@/views/bl/xxhbjwxtscwjxx/XxhbjwxtscwjxxList.vue';
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';
import Xxhbfxcjb0016List from '/@/views/bl/xxhbfxcj/Xxhbfxcjb0016List.vue';
import Xxhbfxcjmxb0015List from '/@/views/bl/xxhbfxcj/Xxhbfxcjmxb0015List.vue';
const formRef = ref();
const formRef3 = ref();
const cjdFormModal = ref();
const khpjclFormModal = ref();
const xsysclFormModal = ref();
const xsysclXqFormModal = ref();
const queryParam = reactive<any>({});
const queryParam2 = ref<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const Xxhbfxcjb0016Modal = ref();
const Xxhbfxcjmxb0015Modal = ref();
const userStore = useUserStore();
const emit = defineEmits(['callback']);
const sfxk = ref<number>(0);
const sfxk2 = ref<number>(0);
const zhjxxx = ref<number>(1);
const checkData = ref<any>([]);
const dataList = ref<any>([]);
import { Pagination } from 'ant-design-vue';
const jxrwInfo = reactive<any>({});
const APagination = Pagination;
const { createMessage } = useMessage();
const activeKey = ref('1');
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
api: zjList,
columns: columns3,
canResize: false,
useSearchForm: false,
// actionColumn: {
// width: 320,
// fixed: 'right',
// },
beforeFetch: async (params) => {
return Object.assign(params, queryParam);
},
},
exportConfig: {
name: '教务系统教学任务',
url: getExportUrl,
params: queryParam,
},
importConfig: {
url: getImportUrl,
success: handleSuccess,
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] =
tableContext;
const labelCol = reactive({
xs: 24,
sm: 8,
xl: 8,
xxl: 8,
});
const wrapperCol = reactive({
xs: 24,
sm: 16,
});
const paginationProp = ref<any>({
total: 1,
current: 1,
pageSize: 10,
pageNo: 1,
});
const paginationYxkcProp = ref<any>({
total: 1,
current: 1,
pageSize: 10,
pageNo: 1,
});
//
function handleCjd(record) {
sfxk.value = 2;
cjdFormModal.value.init(record);
}
//
function handleKhpjcl(record) {
sfxk.value = 3;
khpjclFormModal.value.init(record);
}
//
function handleXsyscl(record) {
sfxk.value = 4;
xsysclFormModal.value.init(record);
}
//
function handleXsyscl2(record) {
sfxk2.value = 0;
}
//
function handleXuanke() {
sfxk.value = 1;
searchQuery2();
}
function handleXsysclxq(record) {
console.log('👨handleXsysclxq', record);
sfxk2.value = 5;
xsysclXqFormModal.value.init(record);
}
//
function handleFanhui() {
init();
}
//
function handleQueren(record) {
console.log('😺', record);
var aaa = checkData.value.includes(record);
if (aaa) {
createMessage.warn('不能重复选择数据!');
return;
}
console.log('😇aaaa', aaa);
checkData.value.push(record);
}
//
async function handleDel(record) {
await deleteXkxxOne({ id: record.id }, xtsuccess);
}
//
function handleZhjxzx(record){
console.log("🚀 ~ handleZhjxzx ~ record:", record)
zhjxxx.value = 2;
Xxhbfxcjmxb0015Modal.value.init(record);
}
function xtsuccess() {
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
checkData.value = res.records;
if(res.current>res.pages){
paginationYxkcProp.value.current =res.pages
xtsuccess()
}else{
paginationYxkcProp.value.current = res.current;
}
paginationYxkcProp.value.total = res.total;
});
searchQuery2();
}
//
async function onPageChange(record) {
console.log('👬', record);
paginationProp.value.current = record.current;
paginationProp.value.pageSize = record.pageSize;
console.log("🚀 ~ onPageChange ~ paginationProp.value.current:", paginationProp.value)
await searchQuery2();
}
//
async function onPageYxkcChange(record) {
paginationYxkcProp.value.current = record.current;
paginationYxkcProp.value.pageSize = record.pageSize;
await init();
}
//
function textDown(type, downame) {
var a = document.createElement('a'); //<a></a>
a.href = '/download/' + type + '.docx';
//ahref .
a.download = downame + '.docx';
//.xlsxpdf.fpd
a.style.display = 'none'; // a
document.body.appendChild(a);
// a
a.click(); //aahref
a.remove();
// a
}
//
async function handleXUanze(record) {
record.id = null;
console.log('😰record----------', record);
await defHttp
.post({
url: '/zjXkxx/zjXkxx/add',
params: record,
})
.then((res) => {
console.log('🤛', res);
xtsuccess();
});
}
//
function handleSubmit() {
var list = checkData.value;
if (list.length == 0) {
createMessage.warn('请选择数据!');
}
defHttp
.post({
url: '/zjXkxx/zjXkxx/addBatch',
data: list,
})
.then((res) => {
console.log('🤛', res);
init();
});
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
emit('callback', record);
}
/**
* 成功回调
*/
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); //
}else if(tab == 4){
zhjxxx.value = 1;
Xxhbfxcjb0016Modal.value.init(jxrwInfo.value);
}
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '查看',
onClick: handleView.bind(null, record),
},
// {
// label: '',
// onClick: handleCjd.bind(null, record),
// },
// {
// label: '',
// onClick: handleKhpjcl.bind(null, record),
// },
// {
// label: '',
// onClick: handleXsyscl.bind(null, record),
// },
];
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 查询
*/
function searchQuery2() {
queryParam2.value.pageNo = paginationProp.value.current;
console.log("🚀 ~ searchQuery2 ~ paginationProp:", paginationProp)
queryParam2.value.fileShztmc = '审核通过';
console.log("🚀 ~ searchQuery2 ~ queryParam2:", queryParam2)
defHttp.get({ url: '/xxhbjwxtjxrw/xxhbjwxtjxrw/list', params: { pageNo: paginationProp.value.current,pageSize:paginationProp.value.pageSize, ...queryParam2.value } }).then((res) => {
dataList.value = res.records;
paginationProp.value.total = res.total;
// paginationProp.value.current = res.pageNo;
});
}
/**
* 重置
*/
function searchReset() {
formRef3.value.resetFields();
selectedRowKeys.value = [];
//
reload();
}
function init() {
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
sfxk.value = 999;
checkData.value = res.records;
paginationYxkcProp.value.total = res.total;
paginationYxkcProp.value.current = res.current;
});
}
function init2() {
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
if (res.records.length == 0) {
sfxk.value = 0;
checkData.value = [];
} else {
sfxk.value = 1;
checkData.value = res.records;
paginationYxkcProp.value.total = res.total;
paginationYxkcProp.value.current = res.current;
searchQuery2();
}
});
}
//
onMounted(() => {
init2();
});
</script>
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust {
min-width: 100px !important;
}
.query-group-split-cust {
width: 30px;
display: inline-block;
text-align: center;
}
.ant-form-item:not(.ant-form-item-with-help) {
margin-bottom: 16px;
height: 32px;
}
:deep(.ant-picker),
:deep(.ant-input-number) {
width: 100%;
}
}
.query-criteria {
padding-top: 22px;
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 {
padding: 10px;
background: #fff;
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;
}
.selection-title {
font-size: 18px;
font-weight: 700;
padding-left: 10px;
}
.seleciton-line {
background: #1890ff;
border-radius: 10px;
color: #1890ff;
}
.mbxtitle {
font-size: 22px;
line-height: 22px;
}
</style>

View File

@ -0,0 +1,685 @@
<template>
<div class="p-2">
<div v-if="sfxk == 0">
<div style="text-align: center">
<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" >
<a-form class="query-criteria">
<a-button type="primary" style="margin-left: 10px;margin-bottom: 15px; " @click="handleFanhui">查看材料</a-button>
</a-form>
</div> -->
<BasicTable @register="registerTable" :rowSelection="rowSelection" >
<!--插槽:table标题-->
<template #tableTitle>
<span class="seleciton-line">1</span> <span class="selection-title">已选课程</span>
-{{selectedRowKeys}}-
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button >批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)"/>
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</BasicTable>
<!-- <a-table :columns="columns2" :data-source="checkData"
v-model:current="paginationYxkcProp.current"
key="id"
:total="paginationYxkcProp.total"
:pagination="paginationYxkcProp"
:row-selection="rowSelection"
@change="onPageYxkcChange"
@onSelect="handleTable2SelectRowChange"
>
<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="handleView(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">
<a-form-item name="zjxnxq">
<template #label><span title="学年学期" class="xn-title">学年学期</span></template>
<j-dict-select-tag placeholder="请选择学年学期" v-model:value="queryParam2.zjxnxq" :dictCode="`v_xqxn,xqxn,xqxn,true order by sort asc`" 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>
<j-dict-select-tag
placeholder="请选择开课单位名称"
v-model:value="queryParam2.kkyxmc"
:dictCode="`v_kkdw,kkyxmc,kkyxmc`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="zhunaye">
<template #label><span title="所属专业" class="xn-title">所属专业</span></template>
<j-dict-select-tag
placeholder="请选择所属专业"
v-model:value="queryParam2.zhuanye"
:dictCode="`v_zhuanye,dept_name,dept_name`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="任课教师" class="xn-title">任课教师</span></template>
<j-input placeholder="请输入任课教师" v-model:value="queryParam2.teaxm" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="zhicheng">
<template #label><span title="职称" class="xn-title">职称</span></template>
<j-dict-select-tag
placeholder="请选择职称"
v-model:value="queryParam2.zhicheng"
:dictCode="`v_zhicheng,zhicheng,zhicheng`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="课程名称" class="xn-title">课程名称</span></template>
<j-input placeholder="请输入课程名称" v-model:value="queryParam2.kcmc" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :span="12" style="text-align: right">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery2">查询</a-button>
</a-col>
</a-row>
</a-form>
</div>
<a-table
:columns="columns2"
:data-source="dataList"
v-model:current="paginationProp.current"
:total="paginationProp.total"
: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="handleXUanze(record)" v-if="record.sfxk == '0'">选择</a>
<a disabled v-if="record.sfxk == '1'">已选择</a>
</template>
</template>
</a-table>
<!-- <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 v-show="sfxk == 2">
<CjdForm ref="cjdFormModal" @callback="init"></CjdForm>
</div> -->
<!-- 考核评价材料 -->
<!-- <div v-show="sfxk == 3">
<XxhbjwxtscwjxxList ref="khpjclFormModal" @callback="init"></XxhbjwxtscwjxxList>
</div> -->
<!-- 学生原始材料 -->
<!-- <div v-show="sfxk == 4">
<XxhbjwxtxsmdList3 ref="xsysclFormModal" @callback="init" @handleXq="handleXsysclxq"></XxhbjwxtxsmdList3>
</div> -->
<!-- 学生原始材料-详情 -->
<!-- <div v-show="sfxk == 5">
<XxhbjwxtxsmdList4 ref="xsysclXqFormModal" @callback="handleXsyscl"></XxhbjwxtxsmdList4>
</div> -->
<!-- 学生列表查看 -->
<div v-show="sfxk == 6">
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" class="query-criteria">
<a-row :gutter="24">
<a-col :span="24" style="margin-bottom: 10px;">
<!-- <div >
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">课程考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">已选课程</a></a-breadcrumb-item>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui" v-if="jxrwInfo.value">{{jxrwInfo?.value?.kcmc}}</a></a-breadcrumb-item>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">学生原始材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">详情</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<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" v-if="jxrwInfo?.value">
<a-col :span="12"><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 }}
</div>
<div v-if="jxrwInfo.value">
<div style="padding-left:16px;font-size:16px; font-weight: 700">概要信息</div>
<a-row style="line-height: 30px">
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">开课单位</span> <span class="header-title">{{ jxrwInfo?.value.kkyxmc }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程类别</span> <span class="header-title">{{ jxrwInfo?.value.kclb }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程名称</span> <span class="header-title">{{ jxrwInfo?.value.kcmc }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程负责人</span> <span class="header-title">{{ jxrwInfo?.value.teaxm }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">选课人数</span> <span class="header-title">{{ jxrwInfo?.value.jxbrs }}</span>
</a-col>
</a-row>
</div>
</a-col>
</a-row>
</a-form>
</div>
<a-tabs v-model:activeKey="activeKey" type="card" @change="onChangeTab" style="background-color: white;">
<a-tab-pane key="1" tab="学生成绩">
<XscjList ref="cjdFormModal" @callback="init"></XscjList>
</a-tab-pane>
<a-tab-pane key="2" tab="考核评价材料" :forceRender="true">
<KhpjclList ref="khpjclFormModal" @callback="init"></KhpjclList>
</a-tab-pane>
<a-tab-pane key="3" tab="学生原始材料" :forceRender="true">
<div v-show="sfxk2 != 5">
<XsysclList ref="xsysclFormModal" @callback="init" @handleXq="handleXsysclxq"></XsysclList>
</div>
<div v-show="sfxk2 == 5">
<XsysclxqList ref="xsysclXqFormModal" @callback="handleXsyscl2"></XsysclxqList>
</div>
</a-tab-pane>
<a-tab-pane key="4" tab="智慧教学信息" :forceRender="true">
<div v-show="zhjxxx == 1">
<Xxhbfxcjb0016List ref="Xxhbfxcjb0016Modal" @callback="handleZhjxzx" ></Xxhbfxcjb0016List>
</div>
<div v-show="zhjxxx == 2">
<div style="text-align: right;margin-right: 20px;"><a-button type="primary" @click="zhjxxx =1">返回</a-button></div>
<Xxhbfxcjmxb0015List ref="Xxhbfxcjmxb0015Modal"></Xxhbfxcjmxb0015List>
</div>
</a-tab-pane>
</a-tabs>
</div>
<!-- 表单区域 -->
<XxhbjwxtjxrwModal ref="registerModal" @success="handleSuccess"></XxhbjwxtjxrwModal class="table-style">
</div>
</template>
<script lang="ts" name="xxhbjwxtjxrw-xxhbjwxtjxrw" setup>
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, 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';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
import CjdForm from './components/CjdForm.vue';
import XxhbjwxtscwjxxList from '/@/views/bl/xxhbjwxtscwjxx/XxhbjwxtscwjxxList.vue';
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';
import Xxhbfxcjb0016List from '/@/views/bl/xxhbfxcj/Xxhbfxcjb0016List.vue';
import Xxhbfxcjmxb0015List from '/@/views/bl/xxhbfxcj/Xxhbfxcjmxb0015List.vue';
const formRef = ref();
const formRef3 = ref();
const cjdFormModal = ref();
const khpjclFormModal = ref();
const xsysclFormModal = ref();
const xsysclXqFormModal = ref();
const queryParam = reactive<any>({});
const queryParam2 = ref<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const Xxhbfxcjb0016Modal = ref();
const Xxhbfxcjmxb0015Modal = ref();
const userStore = useUserStore();
const emit = defineEmits(['callback']);
const sfxk = ref<number>(0);
const sfxk2 = ref<number>(0);
const zhjxxx = ref<number>(1);
const checkData = ref<any>([]);
const dataList = ref<any>([]);
import { Pagination } from 'ant-design-vue';
const jxrwInfo = reactive<any>({});
const APagination = Pagination;
const { createMessage } = useMessage();
const activeKey = ref('1');
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
api: zjList,
columns: columns3,
canResize: false,
useSearchForm: false,
// actionColumn: {
// width: 320,
// fixed: 'right',
// },
beforeFetch: async (params) => {
return Object.assign(params, queryParam);
},
},
exportConfig: {
name: '教务系统教学任务',
url: getExportUrl,
params: queryParam,
},
importConfig: {
url: getImportUrl,
success: handleSuccess,
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] =tableContext;
const labelCol = reactive({
xs: 24,
sm: 8,
xl: 8,
xxl: 8,
});
const wrapperCol = reactive({
xs: 24,
sm: 16,
});
const paginationProp = ref<any>({
total: 1,
current: 1,
pageSize: 10,
pageNo: 1,
});
const paginationYxkcProp = ref<any>({
total: 1,
current: 1,
pageSize: 10,
pageNo: 1,
});
function handleTable2SelectRowChange(event) {
console.log('--------rowchange----->',event);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
// await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
}
//
function handleCjd(record) {
sfxk.value = 2;
cjdFormModal.value.init(record);
}
//
function handleKhpjcl(record) {
sfxk.value = 3;
khpjclFormModal.value.init(record);
}
//
function handleXsyscl(record) {
sfxk.value = 4;
xsysclFormModal.value.init(record);
}
//
function handleXsyscl2(record) {
sfxk2.value = 0;
}
//
function handleXuanke() {
sfxk.value = 1;
searchQuery2();
}
function handleXsysclxq(record) {
console.log('👨handleXsysclxq', record);
sfxk2.value = 5;
xsysclXqFormModal.value.init(record);
}
//
function handleFanhui() {
init2();
}
//
function handleQueren(record) {
console.log('😺', record);
var aaa = checkData.value.includes(record);
if (aaa) {
createMessage.warn('不能重复选择数据!');
return;
}
console.log('😇aaaa', aaa);
checkData.value.push(record);
}
//
async function handleDel(record) {
await deleteXkxxOne({ id: record.id }, xtsuccess);
}
//
function handleZhjxzx(record){
console.log("🚀 ~ handleZhjxzx ~ record:", record)
zhjxxx.value = 2;
Xxhbfxcjmxb0015Modal.value.init(record);
}
function xtsuccess() {
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
checkData.value = res.records;
if(res.current>res.pages){
paginationYxkcProp.value.current =res.pages
xtsuccess()
}else{
paginationYxkcProp.value.current = res.current;
}
paginationYxkcProp.value.total = res.total;
});
searchQuery2();
}
//
async function onPageChange(record) {
console.log('👬', record);
paginationProp.value.current = record.current;
paginationProp.value.pageSize = record.pageSize;
console.log("🚀 ~ onPageChange ~ paginationProp.value.current:", paginationProp.value)
await searchQuery2();
}
//
async function onPageYxkcChange(record) {
paginationYxkcProp.value.current = record.current;
paginationYxkcProp.value.pageSize = record.pageSize;
await init();
}
//
function textDown(type, downame) {
var a = document.createElement('a'); //<a></a>
a.href = '/download/' + type + '.docx';
//ahref .
a.download = downame + '.docx';
//.xlsxpdf.fpd
a.style.display = 'none'; // a
document.body.appendChild(a);
// a
a.click(); //aahref
a.remove();
// a
}
//
async function handleXUanze(record) {
record.id = null;
console.log('😰record----------', record);
await defHttp
.post({
url: '/zjXkxx/zjXkxx/add',
params: record,
})
.then((res) => {
console.log('🤛', res);
xtsuccess();
});
}
//
function handleSubmit() {
var list = checkData.value;
if (list.length == 0) {
createMessage.warn('请选择数据!');
}
defHttp
.post({
url: '/zjXkxx/zjXkxx/addBatch',
data: list,
})
.then((res) => {
console.log('🤛', res);
init();
});
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
emit('callback', record);
}
/**
* 成功回调
*/
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); //
}else if(tab == 4){
zhjxxx.value = 1;
Xxhbfxcjb0016Modal.value.init(jxrwInfo.value);
}
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '查看',
onClick: handleView.bind(null, record),
},
// {
// label: '',
// onClick: handleCjd.bind(null, record),
// },
// {
// label: '',
// onClick: handleKhpjcl.bind(null, record),
// },
// {
// label: '',
// onClick: handleXsyscl.bind(null, record),
// },
];
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 查询
*/
function searchQuery2() {
queryParam2.value.pageNo = paginationProp.value.current;
console.log("🚀 ~ searchQuery2 ~ paginationProp:", paginationProp)
queryParam2.value.fileShztmc = '审核通过';
console.log("🚀 ~ searchQuery2 ~ queryParam2:", queryParam2)
defHttp.get({ url: '/xxhbjwxtjxrw/xxhbjwxtjxrw/list', params: { pageNo: paginationProp.value.current,pageSize:paginationProp.value.pageSize, ...queryParam2.value } }).then((res) => {
dataList.value = res.records;
paginationProp.value.total = res.total;
// paginationProp.value.current = res.pageNo;
});
}
/**
* 重置
*/
function searchReset() {
formRef3.value.resetFields();
selectedRowKeys.value = [];
//
reload();
}
function init() {
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
sfxk.value = 999;
checkData.value = res.records;
paginationYxkcProp.value.total = res.total;
paginationYxkcProp.value.current = res.current;
});
}
function init2() {
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
if (res.records.length == 0) {
sfxk.value = 0;
checkData.value = [];
} else {
sfxk.value = 1;
checkData.value = res.records;
paginationYxkcProp.value.total = res.total;
paginationYxkcProp.value.current = res.current;
searchQuery2();
}
});
}
//
onMounted(() => {
init2();
});
</script>
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust {
min-width: 100px !important;
}
.query-group-split-cust {
width: 30px;
display: inline-block;
text-align: center;
}
.ant-form-item:not(.ant-form-item-with-help) {
margin-bottom: 16px;
height: 32px;
}
:deep(.ant-picker),
:deep(.ant-input-number) {
width: 100%;
}
}
.query-criteria {
padding-top: 22px;
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 {
padding: 10px;
background: #fff;
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;
}
.selection-title {
font-size: 18px;
font-weight: 700;
padding-left: 10px;
}
.seleciton-line {
background: #1890ff;
border-radius: 10px;
color: #1890ff;
}
.mbxtitle {
font-size: 22px;
line-height: 22px;
}
</style>

View File

@ -10,34 +10,54 @@
<!-- 选课信息 -->
<div v-if="sfxk == 1">
<div class="jeecg-basic-table-form-container" >
<!-- <div class="jeecg-basic-table-form-container" >
<a-form class="query-criteria">
<!-- <div style="margin-bottom: 20px;">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleFanhui">课程考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">选择课程</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<a-button type="primary" style="margin-left: 10px;margin-bottom: 15px; " @click="handleFanhui">查看材料</a-button>
</a-form>
</div>
</div> -->
<BasicTable @register="registerTable" :rowSelection="rowSelection" >
<!--插槽:table标题-->
<template #tableTitle>
<span class="seleciton-line">1</span> <span class="selection-title">已选课程</span>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button >批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)"/>
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</BasicTable>
<a-table :columns="columns2" :data-source="checkData"
<!-- <a-table :columns="columns2" :data-source="checkData"
v-model:current="paginationYxkcProp.current"
key="id"
:total="paginationYxkcProp.total"
:pagination="paginationYxkcProp"
:row-selection="rowSelection"
@change="onPageYxkcChange"
@onSelect="handleTable2SelectRowChange"
>
<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>
<a @click="handleView(record)">查看</a>
</template>
</template>
</a-table>
</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">
@ -45,7 +65,7 @@
<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="queryParam2.zjxnxq" :dictCode="`v_xqxn,xqxn,xqxn,true order by sort asc`" allow-clear />
<j-dict-select-tag placeholder="请选择学年学期" v-model:value="queryParam2.zjxnxq" :dictCode="`v_xqxn,short_xqxn,xqxn,true order by sort desc`" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">
@ -198,14 +218,18 @@
<KhpjclList ref="khpjclFormModal" @callback="init"></KhpjclList>
</a-tab-pane>
<a-tab-pane key="3" tab="学生原始材料" :forceRender="true">
<div v-show="sfxk2 != 5">
<div v-show="sfxk2 == 0">
<XsysclList ref="xsysclFormModal" @callback="init" @handleXq="handleXsysclxq"></XsysclList>
</div>
<div v-show="sfxk2 == 5">
<XsysclxqList ref="xsysclXqFormModal" @callback="handleXsyscl2"></XsysclxqList>
</div>
<div v-show="sfxk2 == 6">
<div style="text-align: right;margin-right: 20px;"><a-button type="primary" @click="sfxk2 =0">返回</a-button></div>
<Xxhbfxcjmxb0015List ref="Xxhbfxcjmxb0015Modal"></Xxhbfxcjmxb0015List>
</div>
</a-tab-pane>
<a-tab-pane key="4" tab="智慧教学信息" :forceRender="true">
<!-- <a-tab-pane key="4" tab="智慧教学信息" :forceRender="true">
<div v-show="zhjxxx == 1">
<Xxhbfxcjb0016List ref="Xxhbfxcjb0016Modal" @callback="handleZhjxzx" ></Xxhbfxcjb0016List>
</div>
@ -213,110 +237,11 @@
<div style="text-align: right;margin-right: 20px;"><a-button type="primary" @click="zhjxxx =1">返回</a-button></div>
<Xxhbfxcjmxb0015List ref="Xxhbfxcjmxb0015Modal"></Xxhbfxcjmxb0015List>
</div>
</a-tab-pane>
</a-tab-pane> -->
</a-tabs>
</div>
<!-- 选课后的列表 -->
<div v-if="sfxk == 999">
<div class="jeecg-basic-table-form-container">
<a-form class="query-criteria">
<!-- <div style="margin-bottom: 20px;">
<a-breadcrumb>
<a-breadcrumb-item><a class="mbxtitle" @click="handleXuanke">课程考核材料</a></a-breadcrumb-item>
<a-breadcrumb-item><span class="mbxtitle">已选课程</span></a-breadcrumb-item>
</a-breadcrumb>
</div> -->
<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="formRef3" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-row :gutter="24">
<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,true order by sort asc`" 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>
<j-dict-select-tag
placeholder="请选择开课单位名称"
v-model:value="queryParam.kkyxmc"
:dictCode="`v_kkdw,kkyxmc,kkyxmc`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="zhunaye">
<template #label><span title="所属专业" class="xn-title">所属专业</span></template>
<j-dict-select-tag
placeholder="请选择所属专业"
v-model:value="queryParam.zhuanye"
:dictCode="`v_zhuanye,dept_name,dept_name`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="任课教师" class="xn-title">任课教师</span></template>
<j-input placeholder="请输入任课教师" v-model:value="queryParam.teaxm" allow-clear></j-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="zhicheng">
<template #label><span title="职称" class="xn-title">职称</span></template>
<j-dict-select-tag
placeholder="请选择职称"
v-model:value="queryParam.zhicheng"
:dictCode="`v_zhicheng,zhicheng,zhicheng`"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="课程名称" class="xn-title">课程名称</span></template>
<j-input placeholder="请输入课程名称" v-model:value="queryParam.kcmc" allow-clear></j-input>
</a-form-item>
</a-col>
<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-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)" />
</template>
<template #cjd="{ record }">
<a @click="handleCjd(record)">查看</a>
</template>
<template #khpjcl="{ record }">
<a>查看</a>
</template>
<template #xsyscl="{ record }">
<a>查看</a>
</template>
</BasicTable>
</div>
<!-- 表单区域 -->
<XxhbjwxtjxrwModal ref="registerModal" @success="handleSuccess"></XxhbjwxtjxrwModal class="table-style">
@ -328,7 +253,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, deleteXkxxOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbjwxtjxrw.api';
import { zjList, list,xklist, 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';
@ -372,13 +297,16 @@ const jxrwInfo = reactive<any>({});
const APagination = Pagination;
const { createMessage } = useMessage();
const activeKey = ref('1');
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
api: zjList,
api: xklist,
columns: columns3,
canResize: false,
useSearchForm: false,
// immediate: false,
// actionColumn: {
// width: 320,
// fixed: 'right',
@ -397,8 +325,7 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
success: handleSuccess,
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] =
tableContext;
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] =tableContext;
const labelCol = reactive({
xs: 24,
sm: 8,
@ -423,7 +350,11 @@ const paginationYxkcProp = ref<any>({
pageNo: 1,
});
function handleTable2SelectRowChange(event) {
console.log('--------rowchange----->',event);
}
//
function handleCjd(record) {
sfxk.value = 2;
@ -449,13 +380,24 @@ function handleXuanke() {
searchQuery2();
}
function handleXsysclxq(record) {
// console.log('👨handleXsysclxq', record);
// sfxk2.value = 5;
// xsysclXqFormModal.value.init(record);
console.log('👨handleXsysclxq', record);
sfxk2.value = 5;
xsysclXqFormModal.value.init(record);
var cltype = record.cltype;
console.log('cltype--->',cltype);
if(cltype == '1'){
sfxk2.value = 6;
Xxhbfxcjmxb0015Modal.value.init(record);
}else{
sfxk2.value = 5;
xsysclXqFormModal.value.init(record);
}
}
//
function handleFanhui() {
init();
init2();
}
//
@ -473,6 +415,14 @@ function handleQueren(record) {
async function handleDel(record) {
await deleteXkxxOne({ id: record.id }, xtsuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, xtsuccess);
}
//
function handleZhjxzx(record){
console.log("🚀 ~ handleZhjxzx ~ record:", record)
@ -481,20 +431,27 @@ console.log("🚀 ~ handleZhjxzx ~ record:", record)
}
function xtsuccess() {
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛', res);
checkData.value = res.records;
if(res.current>res.pages){
paginationYxkcProp.value.current =res.pages
xtsuccess()
}else{
paginationYxkcProp.value.current = res.current;
}
paginationYxkcProp.value.total = res.total;
});
selectedRowKeys.value=[]
reload();
searchQuery2();
}
// function xtsuccess() {
// //
// defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
// console.log('🧛', res);
// checkData.value = res.records;
// if(res.current>res.pages){
// paginationYxkcProp.value.current =res.pages
// xtsuccess()
// }else{
// paginationYxkcProp.value.current = res.current;
// }
// paginationYxkcProp.value.total = res.total;
// });
// searchQuery2();
// }
//
async function onPageChange(record) {
console.log('👬', record);

View File

@ -1,83 +1,58 @@
<template>
<a-spin :spinning="confirmLoading">
<JFormContainer :disabled="disabled">
<template #detail>
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol" name="XxhbjwxtjxrwForm">
<a-row>
<a-col :span="24">
<a-form-item label="xnxqdm" v-bind="validateInfos.xnxqdm" id="XxhbjwxtjxrwForm-xnxqdm" name="xnxqdm">
<a-input v-model:value="formData.xnxqdm" placeholder="请输入xnxqdm" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="kcmc" v-bind="validateInfos.kcmc" id="XxhbjwxtjxrwForm-kcmc" name="kcmc">
<a-input v-model:value="formData.kcmc" placeholder="请输入kcmc" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="kcrwdm" v-bind="validateInfos.kcrwdm" id="XxhbjwxtjxrwForm-kcrwdm" name="kcrwdm">
<a-input v-model:value="formData.kcrwdm" placeholder="请输入kcrwdm" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="kclb" v-bind="validateInfos.kclb" id="XxhbjwxtjxrwForm-kclb" name="kclb">
<a-input v-model:value="formData.kclb" placeholder="请输入kclb" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="xf" v-bind="validateInfos.xf" id="XxhbjwxtjxrwForm-xf" name="xf">
<a-input v-model:value="formData.xf" placeholder="请输入xf" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="zxs" v-bind="validateInfos.zxs" id="XxhbjwxtjxrwForm-zxs" name="zxs">
<a-input v-model:value="formData.zxs" placeholder="请输入zxs" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="kkyxmc" v-bind="validateInfos.kkyxmc" id="XxhbjwxtjxrwForm-kkyxmc" name="kkyxmc">
<a-input v-model:value="formData.kkyxmc" placeholder="请输入kkyxmc" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="teaxm" v-bind="validateInfos.teaxm" id="XxhbjwxtjxrwForm-teaxm" name="teaxm">
<a-input v-model:value="formData.teaxm" placeholder="请输入teaxm" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="bjxx" v-bind="validateInfos.bjxx" id="XxhbjwxtjxrwForm-bjxx" name="bjxx">
<a-input v-model:value="formData.bjxx" placeholder="请输入bjxx" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="xn" v-bind="validateInfos.xn" id="XxhbjwxtjxrwForm-xn" name="xn">
<a-input v-model:value="formData.xn" placeholder="请输入xn" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="xqmc" v-bind="validateInfos.xqmc" id="XxhbjwxtjxrwForm-xqmc" name="xqmc">
<a-input v-model:value="formData.xqmc" placeholder="请输入xqmc" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="sjfs" v-bind="validateInfos.sjfs" id="XxhbjwxtjxrwForm-sjfs" name="sjfs">
<a-input v-model:value="formData.sjfs" placeholder="请输入sjfs" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="khfsmc" v-bind="validateInfos.khfsmc" id="XxhbjwxtjxrwForm-khfsmc" name="khfsmc">
<a-input v-model:value="formData.khfsmc" placeholder="请输入khfsmc" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="isUploadSj" v-bind="validateInfos.isUploadSj" id="XxhbjwxtjxrwForm-isUploadSj" name="isUploadSj">
<a-input v-model:value="formData.isUploadSj" placeholder="请输入isUploadSj" allow-clear ></a-input>
</a-form-item>
</a-col>
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol" class="query-criteria">
<a-row :gutter="24" v-if="jxrwInfo?.value">
<a-col :span="12"><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 }}
</div>
<div v-if="jxrwInfo.value">
<div style="padding-left:16px;font-size:16px; font-weight: 700">概要信息</div>
<a-row style="line-height: 30px">
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">开课单位</span> <span class="header-title">{{ jxrwInfo?.value.kkyxmc }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程类别</span> <span class="header-title">{{ jxrwInfo?.value.kclb }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程名称</span> <span class="header-title">{{ jxrwInfo?.value.kcmc }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">课程负责人</span> <span class="header-title">{{ jxrwInfo?.value.teaxm }}</span>
</a-col>
<a-col :xl="8" :sm="12" :md="8">
<span class="header-title" style="margin-left: 15px">选课人数</span> <span class="header-title">{{ jxrwInfo?.value.jxbrs }}</span>
</a-col>
</a-row>
</div>
</a-col>
</a-row>
</a-form>
</template>
</JFormContainer>
</div>
<a-tabs v-model:activeKey="activeKey" type="card" @change="onChangeTab" style="background-color: white;">
<a-tab-pane key="1" tab="学生成绩">
<XscjList ref="cjdFormModal" @callback="init"></XscjList>
</a-tab-pane>
<a-tab-pane key="2" tab="考核评价材料" :forceRender="true">
<KhpjclList ref="khpjclFormModal" @callback="init"></KhpjclList>
</a-tab-pane>
<a-tab-pane key="3" tab="学生原始材料" :forceRender="true">
<div v-show="sfxk2 == 0">
<XsysclList ref="xsysclFormModal" @callback="init" @handleXq="handleXsysclxq"></XsysclList>
</div>
<div v-show="sfxk2 == 5">
<XsysclxqList ref="xsysclXqFormModal" @callback="handleXsyscl2"></XsysclxqList>
</div>
<div v-show="sfxk2 == 6">
<div style="text-align: right;margin-right: 20px;"><a-button type="primary" @click="sfxk2 =0">返回</a-button></div>
<Xxhbfxcjmxb0015List ref="Xxhbfxcjmxb0015Modal"></Xxhbfxcjmxb0015List>
</div>
</a-tab-pane>
</a-tabs>
</a-spin>
</template>
@ -89,31 +64,45 @@
import { saveOrUpdate } from '../Xxhbjwxtjxrw.api';
import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
const props = defineProps({
formDisabled: { type: Boolean, default: false },
formData: { type: Object, default: () => ({})},
formBpm: { type: Boolean, default: true }
});
import XscjList from '/@/views/bl/xxhbjwxtjxrw/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';
import Xxhbfxcjb0016List from '/@/views/bl/xxhbfxcj/Xxhbfxcjb0016List.vue';
import Xxhbfxcjmxb0015List from '/@/views/bl/xxhbfxcj/Xxhbfxcjmxb0015List.vue';
const cjdFormModal = ref();
const khpjclFormModal = ref();
const xsysclFormModal = ref();
const xsysclXqFormModal = ref();
const Xxhbfxcjb0016Modal = ref();
const Xxhbfxcjmxb0015Modal = ref();
const jxrwInfo = reactive<any>({});
const sfxk = ref<number>(0);
const sfxk2 = ref<number>(0);
const zhjxxx = ref<number>(1);
const checkData = ref<any>([]);
const dataList = ref<any>([]);
const activeKey = ref('1');
const queryParam = reactive<any>({});
const paginationYxkcProp = ref<any>({
total: 1,
current: 1,
pageSize: 10,
pageNo: 1,
});
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
const formData = reactive<Record<string, any>>({
id: '',
xnxqdm: '',
kcmc: '',
kcrwdm: '',
kclb: '',
xf: '',
zxs: '',
kkyxmc: '',
teaxm: '',
bjxx: '',
xn: '',
xqmc: '',
sjfs: '',
khfsmc: '',
isUploadSj: '',
});
const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } });
@ -121,21 +110,55 @@
//
const validatorRules = reactive({
});
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
//
const disabled = computed(()=>{
if(props.formBpm === true){
if(props.formData.disabled === false){
return false;
}else{
return true;
}
//
function handleXsyscl2(record) {
sfxk2.value = 0;
}
function handleXsysclxq(record) {
console.log('👨handleXsysclxq', record);
var cltype = record.cltype;
console.log('cltype--->',cltype);
if(cltype == '1'){
sfxk2.value = 6;
Xxhbfxcjmxb0015Modal.value.init(record);
}else{
sfxk2.value = 5;
xsysclXqFormModal.value.init(record);
}
}
function onChangeTab(tab) {
console.log('🎒', tab);
if (tab == 2) {
khpjclFormModal.value.init(jxrwInfo.value); //
} else if (tab == 3) {
xsysclFormModal.value.init(jxrwInfo.value); //
}else if(tab == 4){
zhjxxx.value = 1;
Xxhbfxcjb0016Modal.value.init(jxrwInfo.value);
}
}
function init() {
//
defHttp.get({ url: '/zjXkxx/zjXkxx/list', params: { pageNo: paginationYxkcProp.value.current,pageSize:paginationYxkcProp.value.pageSize } }).then((res) => {
console.log('🧛11111', res);
if (res.records.length == 0) {
sfxk.value = 0;
checkData.value = [];
} else {
sfxk.value = 999;
checkData.value = res.records;
paginationYxkcProp.value.total = res.total;
paginationYxkcProp.value.current = res.current;
console.log("🚀 ~ defHttp.get ~ paginationYxkcProp.value:", paginationYxkcProp.value)
}
return props.formDisabled;
});
}
/**
* 新增
*/
@ -146,66 +169,19 @@
/**
* 编辑
*/
function edit(record) {
nextTick(() => {
resetFields();
const tmpData = {};
Object.keys(formData).forEach((key) => {
if(record.hasOwnProperty(key)){
tmpData[key] = record[key]
}
})
//
Object.assign(formData, tmpData);
});
function edit(record) {
console.log('edit--->',record);
jxrwInfo.value = record;
cjdFormModal.value.init(jxrwInfo.value); //
sfxk.value = 6;
sfxk2.value = 0;
activeKey.value = '1';
}
/**
* 提交数据
*/
async function submitForm() {
try {
//
await validate();
} catch ({ errorFields }) {
if (errorFields) {
const firstField = errorFields[0];
if (firstField) {
formRef.value.scrollToField(firstField.name, { behavior: 'smooth', block: 'center' });
}
}
return Promise.reject(errorFields);
}
confirmLoading.value = true;
const isUpdate = ref<boolean>(false);
//
let model = formData;
if (model.id) {
isUpdate.value = true;
}
//
for (let data in model) {
//
if (model[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data);
//
if (valueType === 'string') {
model[data] = model[data].join(',');
}
}
}
await saveOrUpdate(model, isUpdate.value)
.then((res) => {
if (res.success) {
createMessage.success(res.message);
emit('ok');
} else {
createMessage.warning(res.message);
}
})
.finally(() => {
confirmLoading.value = false;
});
async function submitForm() {
}

View File

@ -10,7 +10,7 @@
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
const title = ref<string>('');
const width = ref<number>(800);
const width = ref<string>('90%');
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const registerForm = ref();

View File

@ -153,7 +153,7 @@ function handleSuccess() {
* 预览
*/
async function handleYulan(record) {
var file1 = getFileAccessHttpUrl(record.path.replaceAll(" ",""));
var file1 = getFileAccessHttpUrl(record.path);
if(record.path){
await defHttp.post({ url: '/sys/common/ycxz',params:{filename:record.path+","} }).then((res) => {
@ -167,7 +167,7 @@ async function handleYulan(record) {
* 下载
*/
function handleDown(record) {
downloadFile(record.path.replaceAll(" ",""));
downloadFile(record.path);
}
/**
* 操作栏

View File

@ -129,6 +129,8 @@ function handleDetail(record) {
jxrwInfo.value.khfs = record.khfs;
jxrwInfo.value.zb = record.zb;
jxrwInfo.value.sort = record.sort;
jxrwInfo.value.cltype = record.cltype;
jxrwInfo.value.fxcjdm = record.fxcjdm;
console.log('🖕222222222222', jxrwInfo.value);
emit('handleXq', jxrwInfo.value);
}

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_xqxn,xqxn,xqxn,true order by sort asc`"></JSelectMultiple>
<JSelectMultiple v-model:value="formData.xnxq" placeholder="请选择学年学期,如果不选,默认全部" :dictCode="`v_xqxn,short_xqxn,xqxn,true order by sort desc`"></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_xqxn,xqxn,xqxn,true order by sort asc`"></JSelectMultiple>
<JSelectMultiple v-model:value="item.xnxq" placeholder="请选择学年学期,如果不选,默认全部" :dictCode="`v_xqxn,short_xqxn,xqxn,true order by sort desc`"></JSelectMultiple>
</a-form-item>
</a-col>
<a-col :span="24">