修改bug

This commit is contained in:
yangjun 2025-02-17 08:44:09 +08:00
parent 6600a9253f
commit 22f6e70878
58 changed files with 4486 additions and 1 deletions

View File

@ -0,0 +1,189 @@
package org.jeecg.modules.demo.wjxwjxx.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxx;
import org.jeecg.modules.demo.wjxwjxx.service.IWjxDjxxService;
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: wjx_djxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Api(tags="wjx_djxx")
@RestController
@RequestMapping("/wjxwjxx/wjxDjxx")
@Slf4j
public class WjxDjxxController extends JeecgController<WjxDjxx, IWjxDjxxService> {
@Autowired
private IWjxDjxxService wjxDjxxService;
/**
* 分页列表查询
*
* @param wjxDjxx
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "wjx_djxx-分页列表查询")
@ApiOperation(value="wjx_djxx-分页列表查询", notes="wjx_djxx-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<WjxDjxx>> queryPageList(WjxDjxx wjxDjxx,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<WjxDjxx> queryWrapper = QueryGenerator.initQueryWrapper(wjxDjxx, req.getParameterMap());
Page<WjxDjxx> page = new Page<WjxDjxx>(pageNo, pageSize);
IPage<WjxDjxx> pageList = wjxDjxxService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param wjxDjxx
* @return
*/
@AutoLog(value = "wjx_djxx-添加")
@ApiOperation(value="wjx_djxx-添加", notes="wjx_djxx-添加")
@RequiresPermissions("wjxwjxx:wjx_djxx:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody WjxDjxx wjxDjxx) {
wjxDjxxService.save(wjxDjxx);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param wjxDjxx
* @return
*/
@AutoLog(value = "wjx_djxx-编辑")
@ApiOperation(value="wjx_djxx-编辑", notes="wjx_djxx-编辑")
@RequiresPermissions("wjxwjxx:wjx_djxx:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody WjxDjxx wjxDjxx) {
wjxDjxxService.updateById(wjxDjxx);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "wjx_djxx-通过id删除")
@ApiOperation(value="wjx_djxx-通过id删除", notes="wjx_djxx-通过id删除")
@RequiresPermissions("wjxwjxx:wjx_djxx:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
wjxDjxxService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "wjx_djxx-批量删除")
@ApiOperation(value="wjx_djxx-批量删除", notes="wjx_djxx-批量删除")
@RequiresPermissions("wjxwjxx:wjx_djxx:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.wjxDjxxService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "wjx_djxx-通过id查询")
@ApiOperation(value="wjx_djxx-通过id查询", notes="wjx_djxx-通过id查询")
@GetMapping(value = "/queryById")
public Result<WjxDjxx> queryById(@RequestParam(name="id",required=true) String id) {
WjxDjxx wjxDjxx = wjxDjxxService.getById(id);
if(wjxDjxx==null) {
return Result.error("未找到对应数据");
}
return Result.OK(wjxDjxx);
}
/**
* 导出excel
*
* @param request
* @param wjxDjxx
*/
@RequiresPermissions("wjxwjxx:wjx_djxx:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, WjxDjxx wjxDjxx) {
return super.exportXls(request, wjxDjxx, WjxDjxx.class, "wjx_djxx");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("wjxwjxx:wjx_djxx:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, WjxDjxx.class);
}
/**
* 查询答卷结果
* @param id
* @return
*/
@GetMapping(value = "/queryByMainId")
public Result<WjxDjxx> queryByMainId(@RequestParam(name="id",required=true) String id) {
WjxDjxx wjxDjxx = wjxDjxxService.queryByMainId(id);
return Result.OK(wjxDjxx);
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,141 @@
package org.jeecg.modules.demo.wjxwjxx.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
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: wjx_djxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@TableName("wjx_djxx")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="wjx_djxx对象", description="wjx_djxx")
public class WjxDjxx implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
@ApiModelProperty(value = "创建人")
private String createBy;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人")
private String updateBy;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "vid")
private String vid;
@ApiModelProperty(value = "名称")
@TableField(exist = false)
private String title;
@Excel(name = "序号", width = 15)
@TableField(exist = false)
private String xuhao;
@Excel(name = "学号", width = 15)
@ApiModelProperty(value = "学号")
private String userId;
@Excel(name = "学生", width = 15)
@ApiModelProperty(value = "学生")
private String userName;
@Excel(name = "得分", width = 15)
@ApiModelProperty(value = "得分")
private double score;
@Excel(name = "总分", width = 15)
@ApiModelProperty(value = "总分")
private double totalScore;
@Excel(name = "答卷时间", width = 15,format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "答卷时间")
private Date openTime;
@Excel(name = "交卷时间", width = 15,format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "交卷时间")
private Date commitTime;
@Excel(name = "答卷用时", width = 15)
@TableField(exist = false)
@ApiModelProperty(value = "答卷用时")
private String answerSfm;
private String sfxysdpy;//是否需要手动批阅
@Dict(dicCode = "sfsckhcl")
private String sfsckhcl;//是否上传考核材料0否 1是
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
private Date sfsckhclTime;//上传考核材料时间
@ApiModelProperty(value = "学期学年")
@TableField(exist = false)
private String xqxn;
@ApiModelProperty(value = "提交内容")
private String submitData;
@ApiModelProperty(value = "答卷编号")
private String jid;
@ApiModelProperty(value = "问卷作答用时")
private int answerSeconds;
@ApiModelProperty(value = "问卷类型")
@TableField(exist = false)
private String atype;
@ApiModelProperty(value = "问卷描述")
@TableField(exist = false)
private java.lang.String content;
@TableField(exist = false)
private List<WjxDjxxTmxx> wjxDjxxTmxxList;
@ApiModelProperty(value = "任务编号")
@TableField(exist = false)
private String rwbh;
@ApiModelProperty(value = "课程名称")
@TableField(exist = false)
private String kcmc;
@ApiModelProperty(value = "开始时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField(exist = false)
private Date startTime;
@ApiModelProperty(value = "结束时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField(exist = false)
private Date endTime;
@ApiModelProperty(value = "是否完成")
@TableField(exist = false)
private String isFinished;
@ApiModelProperty(value = "作弊次数(单次考试作弊行为发生总次数)")
private int zbcs;
}

View File

@ -0,0 +1,88 @@
package org.jeecg.modules.demo.wjxwjxx.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
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: wjx_djxx_tmxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@TableName("wjx_djxx_tmxx")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="wjx_djxx_tmxx对象", description="wjx_djxx_tmxx")
public class WjxDjxxTmxx implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private String id;
@ApiModelProperty(value = "创建人")
private String createBy;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人")
private String updateBy;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "题目编号")
private Integer wjIndex;
@ApiModelProperty(value = "题目标题")
private String wjTitle;
@ApiModelProperty(value = "题目选项")
private Integer itemIndex;
@ApiModelProperty(value = "题目文本答案")
private String answerText;
@ApiModelProperty(value = "选项分值")
private Double itemScore;
@ApiModelProperty(value = "vid")
private String vid;
@ApiModelProperty(value = "答卷编号")
private String jid;
@ApiModelProperty(value = "答卷人ID")
private String userId;
private String picPath;
private String fwqPath;
@ApiModelProperty(value = "题目类型")
@TableField(exist = false)
private String wjType;
@ApiModelProperty(value = "问题分值")
@TableField(exist = false)
private Double wjScore;
@ApiModelProperty(value = "选中选项")
@TableField(exist = false)
private String itemSelected;
@TableField(exist = false)
private List<WjxWjxxTmxx> wjxWjxxTmxxList;
@TableField(exist = false)
private String tktda;
@TableField(exist = false)
private String djid;
@TableField(exist = false)
private String djtmid;
@TableField(exist = false)
private String wjSubtype;
}

View File

@ -0,0 +1,157 @@
package org.jeecg.modules.demo.wjxwjxx.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: wjx_wjxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@TableName("wjx_wjxx")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="wjx_wjxx对象", description="wjx_wjxx")
public class WjxWjxx implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**修改人*/
@ApiModelProperty(value = "修改人")
private java.lang.String updateBy;
/**修改时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "修改时间")
private java.util.Date updateTime;
/**创建账号*/
@Excel(name = "创建账号", width = 15)
@ApiModelProperty(value = "创建账号")
private java.lang.String creater;
/**问卷类型*/
@Excel(name = "问卷类型", width = 15)
@ApiModelProperty(value = "问卷类型")
private java.lang.String atype;
/**问卷名称*/
@Excel(name = "问卷名称", width = 15)
@ApiModelProperty(value = "问卷名称")
private java.lang.String title;
/**问卷描述*/
@Excel(name = "问卷描述", width = 15)
@ApiModelProperty(value = "问卷描述")
private java.lang.String content;
/**是否发布问卷*/
@Excel(name = "是否发布问卷", width = 15)
@ApiModelProperty(value = "是否发布问卷")
private java.lang.String qpublish;
/**是否图片压缩*/
@Excel(name = "是否图片压缩", width = 15)
@ApiModelProperty(value = "是否图片压缩")
private java.lang.String compressImg;
/**题目列表*/
@Excel(name = "题目列表", width = 15)
@ApiModelProperty(value = "题目列表")
private java.lang.String questions;
/**问卷编号(提交问卷、查询问卷会用到)*/
@Excel(name = "问卷编号(提交问卷、查询问卷会用到)", width = 15)
@ApiModelProperty(value = "问卷编号(提交问卷、查询问卷会用到)")
private java.lang.String vid;
/**学期学年*/
@Excel(name = "学期学年", width = 15)
@ApiModelProperty(value = "学期学年")
private java.lang.String xqxn;
/**任务编号*/
@Excel(name = "任务编号", width = 15)
@ApiModelProperty(value = "任务编号")
private java.lang.String rwbh;
/**课程名称*/
@Excel(name = "课程名称", width = 15)
@ApiModelProperty(value = "课程名称")
private java.lang.String kcmc;
/**选课人数*/
@Excel(name = "选课人数", width = 15)
@ApiModelProperty(value = "选课人数")
private java.lang.String xkrs;
/**问卷开始时间*/
@Excel(name = "问卷开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "问卷开始时间")
private java.util.Date startTime;
/**问卷结束时间*/
@Excel(name = "问卷结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "问卷结束时间")
private java.util.Date endTime;
/**作业开始时间*/
@Excel(name = "作业开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "作业开始时间")
private java.util.Date zyStartTime;
/**作业结束时间*/
@Excel(name = "作业结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "作业结束时间")
private java.util.Date zyEndTime;
/**排序*/
@Excel(name = "排序", width = 15)
@ApiModelProperty(value = "排序")
private java.lang.String sort;
/**占比*/
@Excel(name = "占比", width = 15)
@ApiModelProperty(value = "占比")
private java.lang.String score;
/**考察内容*/
@Excel(name = "考察内容", width = 15)
@ApiModelProperty(value = "考察内容")
private java.lang.String kcnr;
/**是否上传考核材料*/
@Excel(name = "是否上传考核材料", width = 15)
@ApiModelProperty(value = "是否上传考核材料")
private java.lang.String sfsckhcl;
/**考核材料上传时间*/
@Excel(name = "考核材料上传时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "考核材料上传时间")
private java.util.Date sfsckhclTime;
/**防作弊模式Y N*/
@Excel(name = "防作弊模式Y N", width = 15)
@ApiModelProperty(value = "防作弊模式Y N")
private java.lang.String fzbms;
/**作答时限(答题时间限制)*/
@Excel(name = "作答时限(答题时间限制)", width = 15)
@ApiModelProperty(value = "作答时限(答题时间限制)")
private java.lang.Integer zdsx;
}

View File

@ -0,0 +1,119 @@
package org.jeecg.modules.demo.wjxwjxx.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: wjx_wjxx_tmlb
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@TableName("wjx_wjxx_tmlb")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="wjx_wjxx_tmlb对象", description="wjx_wjxx_tmlb")
public class WjxWjxxTmlb implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**修改人*/
@ApiModelProperty(value = "修改人")
private java.lang.String updateBy;
/**修改时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "修改时间")
private java.util.Date updateTime;
/**问卷id*/
@Excel(name = "问卷id", width = 15)
@ApiModelProperty(value = "问卷id")
private java.lang.String mainId;
/**题目编号*/
@Excel(name = "题目编号", width = 15)
@ApiModelProperty(value = "题目编号")
private java.lang.Integer wjIndex;
/**题目类型*/
@Excel(name = "题目类型", width = 15)
@ApiModelProperty(value = "题目类型")
private java.lang.Integer wjType;
/**题目细分类*/
@Excel(name = "题目细分类", width = 15)
@ApiModelProperty(value = "题目细分类")
private java.lang.Integer wjSubtype;
/**问题标题*/
@Excel(name = "问题标题", width = 15)
@ApiModelProperty(value = "问题标题")
private java.lang.String wjTitle;
/**是否必填*/
@Excel(name = "是否必填", width = 15)
@ApiModelProperty(value = "是否必填")
private java.lang.String isRequir;
/**是否是考试*/
@Excel(name = "是否是考试", width = 15)
@ApiModelProperty(value = "是否是考试")
private java.lang.String wjCeshi;
/**问题分值*/
@Excel(name = "问题分值", width = 15)
@ApiModelProperty(value = "问题分值")
private java.lang.Double wjScore;
/**题目解析*/
@Excel(name = "题目解析", width = 15)
@ApiModelProperty(value = "题目解析")
private java.lang.String wjParsing;
/**正确答案-针对单选填空wj_type=5情况*/
@Excel(name = "正确答案-针对单选填空wj_type=5情况", width = 15)
@ApiModelProperty(value = "正确答案-针对单选填空wj_type=5情况")
private java.lang.String wjAnswer;
/**填写提示*/
@Excel(name = "填写提示", width = 15)
@ApiModelProperty(value = "填写提示")
private java.lang.String prompt;
/**私有类型0私有1共有*/
@Excel(name = "私有类型0私有1共有", width = 15)
@ApiModelProperty(value = "私有类型0私有1共有")
private java.lang.String wjSytype;
/**型6作业1问卷*/
@Excel(name = "6作业1问卷", width = 15)
@ApiModelProperty(value = "6作业1问卷")
private java.lang.String wjLeixing;
/**是否切换 0系统 1自定义*/
@Excel(name = "是否切换 0系统 1自定义", width = 15)
@ApiModelProperty(value = "是否切换 0系统 1自定义")
private java.lang.String wjSfqh;
/**图片*/
@Excel(name = "图片", width = 15)
@ApiModelProperty(value = "图片")
private java.lang.String picPath;
/**是否添加题库 0不添加 1添加*/
@Excel(name = "是否添加题库 0不添加 1添加", width = 15)
@ApiModelProperty(value = "是否添加题库 0不添加 1添加")
private java.lang.String sftjtk;
}

View File

@ -0,0 +1,83 @@
package org.jeecg.modules.demo.wjxwjxx.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: wjx_wjxx_tmxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@TableName("wjx_wjxx_tmxx")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="wjx_wjxx_tmxx对象", description="wjx_wjxx_tmxx")
public class WjxWjxxTmxx implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**修改人*/
@ApiModelProperty(value = "修改人")
private java.lang.String updateBy;
/**修改时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "修改时间")
private java.util.Date updateTime;
/**问题编号*/
@Excel(name = "问题编号", width = 15)
@ApiModelProperty(value = "问题编号")
private java.lang.Integer wjIndex;
/**选项编号*/
@Excel(name = "选项编号", width = 15)
@ApiModelProperty(value = "选项编号")
private java.lang.Integer itemIndex;
/**选项标题*/
@Excel(name = "选项标题", width = 15)
@ApiModelProperty(value = "选项标题")
private java.lang.String itemTitle;
/**选项文字描述*/
@Excel(name = "选项文字描述", width = 15)
@ApiModelProperty(value = "选项文字描述")
private java.lang.String itemImageText;
/**正确答案*/
@Excel(name = "正确答案", width = 15)
@ApiModelProperty(value = "正确答案")
private java.lang.String itemSelected;
/**选项分值*/
@Excel(name = "选项分值", width = 15)
@ApiModelProperty(value = "选项分值")
private java.lang.Double itemScore;
/**主表id*/
@Excel(name = "主表id", width = 15)
@ApiModelProperty(value = "主表id")
private java.lang.String mainId;
}

View File

@ -0,0 +1,21 @@
package org.jeecg.modules.demo.wjxwjxx.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxx;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxxTmxx;
/**
* @Description: wjx_djxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface WjxDjxxMapper extends BaseMapper<WjxDjxx> {
WjxDjxx findDjxx(@Param("id")String id);
List<WjxDjxxTmxx> findDjtmxx(@Param("vid")String vid,@Param("jid")String jid);
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.demo.wjxwjxx.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxxTmxx;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: wjx_djxx_tmxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface WjxDjxxTmxxMapper extends BaseMapper<WjxDjxxTmxx> {
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.demo.wjxwjxx.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxx;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: wjx_wjxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface WjxWjxxMapper extends BaseMapper<WjxWjxx> {
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.demo.wjxwjxx.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmlb;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: wjx_wjxx_tmlb
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface WjxWjxxTmlbMapper extends BaseMapper<WjxWjxxTmlb> {
}

View File

@ -0,0 +1,18 @@
package org.jeecg.modules.demo.wjxwjxx.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmxx;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: wjx_wjxx_tmxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface WjxWjxxTmxxMapper extends BaseMapper<WjxWjxxTmxx> {
List<WjxWjxxTmxx> selectByMainId(@Param("mainId")String id);
}

View File

@ -0,0 +1,33 @@
<?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.wjxwjxx.mapper.WjxDjxxMapper">
<select id="findDjxx" parameterType="String" resultType="org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxx">
select b.atype,b.title,a.vid,a.user_id,a.open_time,a.commit_time,a.jid,a.score,a.total_score,a.answer_seconds,a.user_id,a.user_name
from wjx_djxx a
inner join wjx_wjxx b on a.vid = b.vid
where a.flag = '1'
and a.id = #{id}
</select>
<select id="findDjtmxx" parameterType="String" resultType="org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxxTmxx">
select x.id,x.wj_index,x.wj_type,x.wj_title,x.wj_score,y.item_selected,y.item_score,y.answer_text,y.pic_path,x.wj_subtype
from (
select c.id,c.wj_index,c.wj_type,c.wj_title,c.wj_score,c.wj_subtype
from wjx_djxx a
inner join wjx_wjxx b on a.vid = b.vid
inner join wjx_wjxx_tmlb c on c.main_id = b.id
where a.flag = '1'
and a.vid = #{vid}
and a.jid = #{jid}
) x
inner join (
select wj_index,item_score,answer_text,GROUP_CONCAT(item_index) as item_selected,pic_path
from wjx_djxx_tmxx
where vid = #{vid}
and jid = #{jid}
group by wj_index,item_score,answer_text,pic_path
) y on x.wj_index = y.wj_index
order by x.wj_index
</select>
</mapper>

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.wjxwjxx.mapper.WjxDjxxTmxxMapper">
</mapper>

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.wjxwjxx.mapper.WjxWjxxMapper">
</mapper>

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.wjxwjxx.mapper.WjxWjxxTmlbMapper">
</mapper>

View File

@ -0,0 +1,10 @@
<?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.wjxwjxx.mapper.WjxWjxxTmxxMapper">
<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmxx">
SELECT *
FROM wjx_wjxx_tmxx
WHERE
main_id = #{mainId} order by wj_index asc </select>
</mapper>

View File

@ -0,0 +1,15 @@
package org.jeecg.modules.demo.wjxwjxx.service;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxx;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: wjx_djxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IWjxDjxxService extends IService<WjxDjxx> {
WjxDjxx queryByMainId(String id);
}

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.demo.wjxwjxx.service;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxxTmxx;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: wjx_djxx_tmxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IWjxDjxxTmxxService extends IService<WjxDjxxTmxx> {
}

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.demo.wjxwjxx.service;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxx;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: wjx_wjxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IWjxWjxxService extends IService<WjxWjxx> {
}

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.demo.wjxwjxx.service;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmlb;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: wjx_wjxx_tmlb
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IWjxWjxxTmlbService extends IService<WjxWjxxTmlb> {
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.demo.wjxwjxx.service;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmxx;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: wjx_wjxx_tmxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IWjxWjxxTmxxService extends IService<WjxWjxxTmxx> {
List<WjxWjxxTmxx> selectByMainId(String id);
}

View File

@ -0,0 +1,70 @@
package org.jeecg.modules.demo.wjxwjxx.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxx;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxxTmxx;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmlb;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmxx;
import org.jeecg.modules.demo.wjxwjxx.mapper.WjxDjxxMapper;
import org.jeecg.modules.demo.wjxwjxx.mapper.WjxWjxxTmxxMapper;
import org.jeecg.modules.demo.wjxwjxx.service.IWjxDjxxService;
import org.jeecg.modules.demo.wjxwjxx.service.IWjxWjxxTmlbService;
import org.jeecg.modules.demo.wjxwjxx.service.IWjxWjxxTmxxService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @Description: wjx_djxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class WjxDjxxServiceImpl extends ServiceImpl<WjxDjxxMapper, WjxDjxx> implements IWjxDjxxService {
@Autowired
private IWjxWjxxTmxxService wjxWjxxTmxxMapper;
@Autowired
private IWjxWjxxTmlbService wjxWjxxTmlbMapper;
@Override
public WjxDjxx queryByMainId(String id) {
WjxDjxx djxx = baseMapper.findDjxx(id);
if (djxx != null) {
djxx.setAnswerSfm(convertSecondsToHMS(djxx.getAnswerSeconds()));
List<WjxDjxxTmxx> list = baseMapper.findDjtmxx(djxx.getVid(), djxx.getJid());
for (WjxDjxxTmxx wjxDjxxTmxx : list) {
List<WjxWjxxTmxx> list2 = wjxWjxxTmxxMapper.selectByMainId(wjxDjxxTmxx.getId());
wjxDjxxTmxx.setWjxWjxxTmxxList(list2);
//获取填空题答案
WjxWjxxTmlb tmlb = wjxWjxxTmlbMapper.getById(wjxDjxxTmxx.getId());
wjxDjxxTmxx.setTktda(tmlb.getWjAnswer());
}
djxx.setWjxDjxxTmxxList(list);
}
return djxx;
}
/**
* 秒数转时分秒
*
* @param seconds
* @return
*/
String convertSecondsToHMS(long seconds) {
long hours = TimeUnit.SECONDS.toHours(seconds);
long remainingSeconds = seconds - TimeUnit.HOURS.toSeconds(hours);
long minutes = TimeUnit.SECONDS.toMinutes(remainingSeconds);
remainingSeconds = remainingSeconds - TimeUnit.MINUTES.toSeconds(minutes);
return String.format("%02d:%02d:%02d", hours, minutes, remainingSeconds);
}
}

View File

@ -0,0 +1,21 @@
package org.jeecg.modules.demo.wjxwjxx.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxDjxxTmxx;
import org.jeecg.modules.demo.wjxwjxx.mapper.WjxDjxxTmxxMapper;
import org.jeecg.modules.demo.wjxwjxx.service.IWjxDjxxTmxxService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: wjx_djxx_tmxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class WjxDjxxTmxxServiceImpl extends ServiceImpl<WjxDjxxTmxxMapper, WjxDjxxTmxx> implements IWjxDjxxTmxxService {
}

View File

@ -0,0 +1,21 @@
package org.jeecg.modules.demo.wjxwjxx.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxx;
import org.jeecg.modules.demo.wjxwjxx.mapper.WjxWjxxMapper;
import org.jeecg.modules.demo.wjxwjxx.service.IWjxWjxxService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: wjx_wjxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class WjxWjxxServiceImpl extends ServiceImpl<WjxWjxxMapper, WjxWjxx> implements IWjxWjxxService {
}

View File

@ -0,0 +1,21 @@
package org.jeecg.modules.demo.wjxwjxx.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmlb;
import org.jeecg.modules.demo.wjxwjxx.mapper.WjxWjxxTmlbMapper;
import org.jeecg.modules.demo.wjxwjxx.service.IWjxWjxxTmlbService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: wjx_wjxx_tmlb
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class WjxWjxxTmlbServiceImpl extends ServiceImpl<WjxWjxxTmlbMapper, WjxWjxxTmlb> implements IWjxWjxxTmlbService {
}

View File

@ -0,0 +1,28 @@
package org.jeecg.modules.demo.wjxwjxx.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.jeecg.modules.demo.wjxwjxx.entity.WjxWjxxTmxx;
import org.jeecg.modules.demo.wjxwjxx.mapper.WjxWjxxTmxxMapper;
import org.jeecg.modules.demo.wjxwjxx.service.IWjxWjxxTmxxService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.Collections;
import java.util.List;
/**
* @Description: wjx_wjxx_tmxx
* @Author: jeecg-boot
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class WjxWjxxTmxxServiceImpl extends ServiceImpl<WjxWjxxTmxxMapper, WjxWjxxTmxx> implements IWjxWjxxTmxxService {
@Override
public List<WjxWjxxTmxx> selectByMainId(String id) {
return baseMapper.selectByMainId(id);
}
}

View File

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

View File

@ -0,0 +1,102 @@
package org.jeecg.modules.demo.xxhbfxcjb0016.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 成绩系统-分项成绩
* @Author: jeecg-boot
* @Date: 2025-01-22
* @Version: V1.0
*/
@Data
@TableName("xxhbfxcjb0016")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="xxhbfxcjb0016对象", description="成绩系统-分项成绩")
public class Xxhbfxcjb0016 implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**createBy*/
@ApiModelProperty(value = "createBy")
private java.lang.String createBy;
/**createTime*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "createTime")
private java.util.Date createTime;
/**updateBy*/
@ApiModelProperty(value = "updateBy")
private java.lang.String updateBy;
/**updateTime*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "updateTime")
private java.util.Date updateTime;
/**分项成绩代码*/
@Excel(name = "分项成绩代码", width = 15)
@ApiModelProperty(value = "分项成绩代码")
private java.lang.String fxcjdm;
/**分项成绩名称*/
@Excel(name = "分项成绩名称", width = 15)
@ApiModelProperty(value = "分项成绩名称")
private java.lang.String fxcjmc;
/**课程任务代码*/
@Excel(name = "课程任务代码", width = 15)
@ApiModelProperty(value = "课程任务代码")
private java.lang.String kcrwdm;
/**课程编号*/
@Excel(name = "课程编号", width = 15)
@ApiModelProperty(value = "课程编号")
private java.lang.String kcbh;
/**课程名称*/
@Excel(name = "课程名称", width = 15)
@ApiModelProperty(value = "课程名称")
private java.lang.String kcmc;
/**成绩类型代码*/
@Excel(name = "成绩类型代码", width = 15)
@ApiModelProperty(value = "成绩类型代码")
private java.lang.String cjlxdm;
/**分项比例*/
@Excel(name = "分项比例", width = 15)
@ApiModelProperty(value = "分项比例")
private java.lang.String fxbl;
/**教师工号*/
@Excel(name = "教师工号", width = 15)
@ApiModelProperty(value = "教师工号")
private java.lang.String teabh;
/**教师姓名*/
@Excel(name = "教师姓名", width = 15)
@ApiModelProperty(value = "教师姓名")
private java.lang.String teaxm;
/**代码名称*/
@Excel(name = "代码名称", width = 15)
@ApiModelProperty(value = "代码名称")
private java.lang.String dmmc;
/**无用*/
@Excel(name = "无用", width = 15)
@ApiModelProperty(value = "无用")
private java.lang.String synfxcjdm;
@TableField(exist = false)
private String zyyq;//作业要求
@TableField(exist = false)
private String pfbz;//评分标准
}

View File

@ -0,0 +1,22 @@
package org.jeecg.modules.demo.xxhbfxcjb0016.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.xxhbfxcjb0016.entity.Xxhbfxcjb0016;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 成绩系统-分项成绩
* @Author: jeecg-boot
* @Date: 2025-01-22
* @Version: V1.0
*/
public interface Xxhbfxcjb0016Mapper extends BaseMapper<Xxhbfxcjb0016> {
IPage<Xxhbfxcjb0016> selectNewPage(Page<Xxhbfxcjb0016> page, @Param(Constants.WRAPPER) QueryWrapper<Xxhbfxcjb0016> queryWrapper);
}

View File

@ -0,0 +1,10 @@
<?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.xxhbfxcjb0016.mapper.Xxhbfxcjb0016Mapper">
<select id="selectNewPage" resultType="org.jeecg.modules.demo.xxhbfxcjb0016.entity.Xxhbfxcjb0016">
select a.*,b.content as zyyq,b.pfbz from xxhbfxcjb0016 a
LEFT JOIN zy_info b on b.sfsckhcl = 1 and a.fxcjdm = b.id
${ew.customSqlSegment}
</select>
</mapper>

View File

@ -0,0 +1,18 @@
package org.jeecg.modules.demo.xxhbfxcjb0016.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.demo.xxhbfxcjb0016.entity.Xxhbfxcjb0016;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 成绩系统-分项成绩
* @Author: jeecg-boot
* @Date: 2025-01-22
* @Version: V1.0
*/
public interface IXxhbfxcjb0016Service extends IService<Xxhbfxcjb0016> {
IPage<Xxhbfxcjb0016> selectPage(Page<Xxhbfxcjb0016> page, QueryWrapper<Xxhbfxcjb0016> queryWrapper);
}

View File

@ -0,0 +1,28 @@
package org.jeecg.modules.demo.xxhbfxcjb0016.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.demo.xxhbfxcjb0016.entity.Xxhbfxcjb0016;
import org.jeecg.modules.demo.xxhbfxcjb0016.mapper.Xxhbfxcjb0016Mapper;
import org.jeecg.modules.demo.xxhbfxcjb0016.service.IXxhbfxcjb0016Service;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 成绩系统-分项成绩
* @Author: jeecg-boot
* @Date: 2025-01-22
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class Xxhbfxcjb0016ServiceImpl extends ServiceImpl<Xxhbfxcjb0016Mapper, Xxhbfxcjb0016> implements IXxhbfxcjb0016Service {
@Override
public IPage<Xxhbfxcjb0016> selectPage(Page<Xxhbfxcjb0016> page, QueryWrapper<Xxhbfxcjb0016> queryWrapper) {
return baseMapper.selectNewPage(page, queryWrapper);
}
}

View File

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

View File

@ -0,0 +1,87 @@
package org.jeecg.modules.demo.xxhbfxcjmxb0015.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 成绩系统-分项成绩明细
* @Author: jeecg-boot
* @Date: 2025-01-22
* @Version: V1.0
*/
@Data
@TableName("xxhbfxcjmxb0015")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="xxhbfxcjmxb0015对象", description="成绩系统-分项成绩明细")
public class Xxhbfxcjmxb0015 implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**createBy*/
@ApiModelProperty(value = "createBy")
private java.lang.String createBy;
/**createTime*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "createTime")
private java.util.Date createTime;
/**updateBy*/
@ApiModelProperty(value = "updateBy")
private java.lang.String updateBy;
/**updateTime*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "updateTime")
private java.util.Date updateTime;
/**记录*/
@Excel(name = "记录", width = 15)
@ApiModelProperty(value = "记录")
private java.lang.String kid;
/**分项成绩代码*/
@Excel(name = "分项成绩代码", width = 15)
@ApiModelProperty(value = "分项成绩代码")
private java.lang.String fxcjdm;
/**课程任务代码*/
@Excel(name = "课程任务代码", width = 15)
@ApiModelProperty(value = "课程任务代码")
private java.lang.String kcrwdm;
/**学生编号*/
@Excel(name = "学生编号", width = 15)
@ApiModelProperty(value = "学生编号")
private java.lang.String xsbh;
/**学生姓名*/
@Excel(name = "学生姓名", width = 15)
@ApiModelProperty(value = "学生姓名")
private java.lang.String xsxm;
/**分项成绩*/
@Excel(name = "分项成绩", width = 15)
@ApiModelProperty(value = "分项成绩")
private java.lang.String fxcj;
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
private java.lang.String bz;
/**附件*/
@Excel(name = "附件", width = 15)
@ApiModelProperty(value = "附件")
private java.lang.String path;
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.demo.xxhbfxcjmxb0015.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.xxhbfxcjmxb0015.entity.Xxhbfxcjmxb0015;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 成绩系统-分项成绩明细
* @Author: jeecg-boot
* @Date: 2025-01-22
* @Version: V1.0
*/
public interface Xxhbfxcjmxb0015Mapper extends BaseMapper<Xxhbfxcjmxb0015> {
}

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.xxhbfxcjmxb0015.mapper.Xxhbfxcjmxb0015Mapper">
</mapper>

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.demo.xxhbfxcjmxb0015.service;
import org.jeecg.modules.demo.xxhbfxcjmxb0015.entity.Xxhbfxcjmxb0015;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 成绩系统-分项成绩明细
* @Author: jeecg-boot
* @Date: 2025-01-22
* @Version: V1.0
*/
public interface IXxhbfxcjmxb0015Service extends IService<Xxhbfxcjmxb0015> {
}

View File

@ -0,0 +1,21 @@
package org.jeecg.modules.demo.xxhbfxcjmxb0015.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.jeecg.modules.demo.xxhbfxcjmxb0015.entity.Xxhbfxcjmxb0015;
import org.jeecg.modules.demo.xxhbfxcjmxb0015.mapper.Xxhbfxcjmxb0015Mapper;
import org.jeecg.modules.demo.xxhbfxcjmxb0015.service.IXxhbfxcjmxb0015Service;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 成绩系统-分项成绩明细
* @Author: jeecg-boot
* @Date: 2025-01-22
* @Version: V1.0
*/
@Service
@DS("multi-datasource1")
public class Xxhbfxcjmxb0015ServiceImpl extends ServiceImpl<Xxhbfxcjmxb0015Mapper, Xxhbfxcjmxb0015> implements IXxhbfxcjmxb0015Service {
}

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,72 @@
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from "/@/hooks/web/useMessage";
const { createConfirm } = useMessage();
enum Api {
list = '/xxhbfxcjb0016/xxhbfxcjb0016/list',
save='/xxhbfxcjb0016/xxhbfxcjb0016/add',
edit='/xxhbfxcjb0016/xxhbfxcjb0016/edit',
deleteOne = '/xxhbfxcjb0016/xxhbfxcjb0016/delete',
deleteBatch = '/xxhbfxcjb0016/xxhbfxcjb0016/deleteBatch',
importExcel = '/xxhbfxcjb0016/xxhbfxcjb0016/importExcel',
exportXls = '/xxhbfxcjb0016/xxhbfxcjb0016/exportXls',
}
/**
* api
* @param params
*/
export const getExportUrl = Api.exportXls;
/**
* api
*/
export const getImportUrl = Api.importExcel;
/**
*
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
/**
*
* @param params
* @param handleSuccess
*/
export const deleteOne = (params,handleSuccess) => {
return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
/**
*
* @param params
* @param handleSuccess
*/
export const batchDelete = (params, handleSuccess) => {
createConfirm({
iconType: 'warning',
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
});
}
/**
*
* @param params
* @param isUpdate
*/
export const saveOrUpdate = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
return defHttp.post({ url: url, params }, { isTransformResponse: false });
}

View File

@ -0,0 +1,63 @@
import {BasicColumn} from '/@/components/Table';
import {FormSchema} from '/@/components/Table';
import { rules} from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
import { getWeekMonthQuarterYear } from '/@/utils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '分项成绩名称',
align: "center",
dataIndex: 'fxcjmc'
},
{
title: '评分标准',
align: "center",
dataIndex: 'pfbz'
},
{
title: '作业要求',
align: "center",
dataIndex: 'zyyq'
},
// {
// title: '课程名称',
// align: "center",
// dataIndex: 'kcmc'
// },
// {
// title: '分项比例',
// align: "center",
// dataIndex: 'fxbl'
// },
// {
// title: '教师工号',
// align: "center",
// dataIndex: 'teabh'
// },
// {
// title: '教师姓名',
// align: "center",
// dataIndex: 'teaxm'
// },
{
title: '类型',
align: "center",
dataIndex: 'dmmc'
},
];
// 高级查询数据
export const superQuerySchema = {
fxcjdm: {title: '分项成绩代码',order: 0,view: 'text', type: 'string',},
fxcjmc: {title: '分项成绩名称',order: 1,view: 'text', type: 'string',},
kcrwdm: {title: '课程任务代码',order: 2,view: 'text', type: 'string',},
kcbh: {title: '课程编号',order: 3,view: 'text', type: 'string',},
kcmc: {title: '课程名称',order: 4,view: 'text', type: 'string',},
cjlxdm: {title: '成绩类型代码',order: 5,view: 'text', type: 'string',},
fxbl: {title: '分项比例',order: 6,view: 'text', type: 'string',},
teabh: {title: '教师工号',order: 7,view: 'text', type: 'string',},
teaxm: {title: '教师姓名',order: 8,view: 'text', type: 'string',},
dmmc: {title: '代码名称',order: 9,view: 'text', type: 'string',},
synfxcjdm: {title: '无用',order: 10,view: 'text', type: 'string',},
};

View File

@ -0,0 +1,279 @@
<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="fxcjmc">
<template #label><span title="分项成绩名称">分项成绩</span></template>
<a-input placeholder="请输入分项成绩名称" v-model:value="queryParam.fxcjmc" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="课程名称">课程名称</span></template>
<a-input placeholder="请输入课程名称" v-model:value="queryParam.kcmc" allow-clear ></a-input>
</a-form-item>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :lg="6">
<a-form-item name="teabh">
<template #label><span title="教师工号">教师工号</span></template>
<a-input placeholder="请输入教师工号" v-model:value="queryParam.teabh" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="teaxm">
<template #label><span title="教师姓名">教师姓名</span></template>
<a-input placeholder="请输入教师姓名" v-model:value="queryParam.teaxm" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="dmmc">
<template #label><span title="代码名称">代码名称</span></template>
<a-input placeholder="请输入代码名称" v-model:value="queryParam.dmmc" allow-clear ></a-input>
</a-form-item>
</a-col>
</template>
<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:reload-outlined" @click="searchReset" style="margin-left: 8px">重置</a-button>
<a @click="toggleSearchStatus = !toggleSearchStatus" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<Icon :icon="toggleSearchStatus ? 'ant-design:up-outlined' : 'ant-design:down-outlined'" />
</a>
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<!--插槽:table标题-->
<template #tableTitle>
<a-button type="primary" v-auth="'xxhbfxcjb0016:xxhbfxcjb0016:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-button type="primary" v-auth="'xxhbfxcjb0016:xxhbfxcjb0016:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<j-upload-button type="primary" v-auth="'xxhbfxcjb0016:xxhbfxcjb0016:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
<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 v-auth="'xxhbfxcjb0016:xxhbfxcjb0016:deleteBatch'">批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</BasicTable>
<!-- 表单区域 -->
<Xxhbfxcjb0016Modal ref="registerModal" @success="handleSuccess"></Xxhbfxcjb0016Modal>
</div>
</template>
<script lang="ts" name="xxhbfxcjb0016-xxhbfxcjb0016" setup>
import { ref, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './Xxhbfxcjb0016.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbfxcjb0016.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import Xxhbfxcjb0016Modal from './components/Xxhbfxcjb0016Modal.vue'
import { useUserStore } from '/@/store/modules/user';
const formRef = ref();
const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const userStore = useUserStore();
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
title: '成绩系统-分项成绩',
api: list,
columns,
canResize:false,
useSearchForm: 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:4,
xl:6,
xxl:4
});
const wrapperCol = reactive({
xs: 24,
sm: 20,
});
//
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
searchQuery();
}
/**
* 新增事件
*/
function handleAdd() {
registerModal.value.disableSubmit = false;
registerModal.value.add();
}
/**
* 编辑事件
*/
function handleEdit(record: Recordable) {
registerModal.value.disableSubmit = false;
registerModal.value.edit(record);
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '编辑',
onClick: handleEdit.bind(null, record),
auth: 'xxhbfxcjb0016:xxhbfxcjb0016:edit'
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record) {
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
}, {
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
auth: 'xxhbfxcjb0016:xxhbfxcjb0016:delete'
}
]
}
/**
* 查询
*/
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

@ -0,0 +1,293 @@
<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="fxcjmc">
<template #label><span title="分项成绩名称">分项成绩</span></template>
<a-input placeholder="请输入分项成绩名称" v-model:value="queryParam.fxcjmc" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="kcmc">
<template #label><span title="课程名称">课程名称</span></template>
<a-input placeholder="请输入课程名称" v-model:value="queryParam.kcmc" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="teabh">
<template #label><span title="教师工号">教师工号</span></template>
<a-input placeholder="请输入教师工号" v-model:value="queryParam.teabh" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="teaxm">
<template #label><span title="教师姓名">教师姓名</span></template>
<a-input placeholder="请输入教师姓名" v-model:value="queryParam.teaxm" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="dmmc">
<template #label><span title="代码名称">代码名称</span></template>
<a-input placeholder="请输入代码名称" v-model:value="queryParam.dmmc" allow-clear ></a-input>
</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-col>
</span>
</a-col>
</a-row>
</a-form>
</div> -->
<!--引用表格-->
<BasicTable @register="registerTable" >
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
<template v-if="column.dataIndex==='pfbz'">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无信息</span>
<a-popover title="评分标准" v-else>
<template #content>
<div v-html="text"></div>
</template>
<span style="color: #1890ff;cursor: pointer">详情</span>
</a-popover>
</template>
<template v-else-if="column.dataIndex==='zyyq'">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无信息</span>
<a-popover title="作业要求" v-else>
<template #content>
<div v-html="text"></div>
</template>
<span style="color: #1890ff;cursor: pointer">详情</span>
</a-popover>
</template>
</template>
</BasicTable>
<!-- 表单区域 -->
<Xxhbfxcjb0016Modal ref="registerModal" @success="handleSuccess"></Xxhbfxcjb0016Modal>
</div>
</template>
<script lang="ts" name="xxhbfxcjb0016-xxhbfxcjb0016" setup>
import { ref, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './Xxhbfxcjb0016.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbfxcjb0016.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import Xxhbfxcjb0016Modal from './components/Xxhbfxcjb0016Modal.vue'
import { useUserStore } from '/@/store/modules/user';
const emit = defineEmits(['callback']);
const formRef = ref();
const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const userStore = useUserStore();
const jxrwInfo = reactive<any>({});
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
title: '分项成绩',
api: list,
columns,
canResize:false,
useSearchForm: false,
immediate: false,
actionColumn: {
width: 120,
},
beforeFetch: async (params) => {
params.column = '',params.order = '';
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:4,
xl:6,
xxl:4
});
const wrapperCol = reactive({
xs: 24,
sm: 20,
});
//
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
searchQuery();
}
function replaceFun(value){
var ch = 'img src="../';
value = value.replace(new RegExp(ch,'g'),'img src="https://smartedu-443.webvpn.nenu.edu.cn/')
return value;
}
/**
* 新增事件
*/
function handleAdd() {
registerModal.value.disableSubmit = false;
registerModal.value.add();
}
/**
* 编辑事件
*/
function handleEdit(record: Recordable) {
registerModal.value.disableSubmit = false;
registerModal.value.edit(record);
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
function handleCjmx(record: Recordable){
console.log("🚀 ~ handleCjmx ~ record:", record)
emit('callback',record);
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '详情',
onClick: handleCjmx.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record) {
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
}, {
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
auth: 'xxhbfxcjb0016:xxhbfxcjb0016:delete'
}
]
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 重置
*/
function searchReset() {
formRef.value.resetFields();
selectedRowKeys.value = [];
//
reload();
}
function init(record) {
console.log('🧞', record);
queryParam.kcrwdm = record.kcrwdm;
queryParam.synfxcjdm = "! null";
jxrwInfo.value = record;
reload();
}
defineExpose({
init,
});
</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

@ -0,0 +1,72 @@
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from "/@/hooks/web/useMessage";
const { createConfirm } = useMessage();
enum Api {
list = '/xxhbfxcjmxb0015/xxhbfxcjmxb0015/list',
save='/xxhbfxcjmxb0015/xxhbfxcjmxb0015/add',
edit='/xxhbfxcjmxb0015/xxhbfxcjmxb0015/edit',
deleteOne = '/xxhbfxcjmxb0015/xxhbfxcjmxb0015/delete',
deleteBatch = '/xxhbfxcjmxb0015/xxhbfxcjmxb0015/deleteBatch',
importExcel = '/xxhbfxcjmxb0015/xxhbfxcjmxb0015/importExcel',
exportXls = '/xxhbfxcjmxb0015/xxhbfxcjmxb0015/exportXls',
}
/**
* api
* @param params
*/
export const getExportUrl = Api.exportXls;
/**
* api
*/
export const getImportUrl = Api.importExcel;
/**
*
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
/**
*
* @param params
* @param handleSuccess
*/
export const deleteOne = (params,handleSuccess) => {
return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
/**
*
* @param params
* @param handleSuccess
*/
export const batchDelete = (params, handleSuccess) => {
createConfirm({
iconType: 'warning',
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
});
}
/**
*
* @param params
* @param isUpdate
*/
export const saveOrUpdate = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
return defHttp.post({ url: url, params }, { isTransformResponse: false });
}

View File

@ -0,0 +1,36 @@
import {BasicColumn} from '/@/components/Table';
import {FormSchema} from '/@/components/Table';
import { rules} from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
import { getWeekMonthQuarterYear } from '/@/utils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '学生编号',
align: "center",
dataIndex: 'xsbh'
},
{
title: '学生姓名',
align: "center",
dataIndex: 'xsxm'
},
{
title: '分项成绩',
align: "center",
dataIndex: 'fxcj'
},
{
title: '附件',
align: "center",
dataIndex: 'path'
},
];
// 高级查询数据
export const superQuerySchema = {
xsbh: {title: '学生编号',order: 0,view: 'text', type: 'string',},
xsxm: {title: '学生姓名',order: 1,view: 'text', type: 'string',},
fxcj: {title: '分项成绩',order: 2,view: 'text', type: 'string',},
path: {title: '附件',order: 3,view: 'textarea', type: 'string',},
};

View File

@ -0,0 +1,158 @@
<template>
<div class="p-2">
<!--引用表格-->
<BasicTable @register="registerTable" >
<!--插槽:table标题-->
<template v-slot:bodyCell="{ column, record, index, text }">
<template v-if="column.dataIndex==='path'">
<span v-if="text" style="color: #1890ff;cursor: pointer" @click="handleXiangxi(record)">详情</span>
<span v-else >
<span v-if="!getLeixing()" style="font-size: 12px;font-style: italic;">无信息</span>
<span v-if="getLeixing()" style="color: #1890ff;cursor: pointer" @click="handleCyxx(record)">详情</span>
</span>
</template>
</template>
</BasicTable>
<!-- 表单区域 -->
<Xxhbfxcjmxb0015Modal ref="registerModal" @success="handleSuccess"></Xxhbfxcjmxb0015Modal>
<WjxWjxxTmlbDjjgModal ref="WjxWjxxTmlbDjjgModalPage"></WjxWjxxTmlbDjjgModal>
</div>
</template>
<script lang="ts" name="xxhbfxcjmxb0015-xxhbfxcjmxb0015" setup>
import { ref, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './Xxhbfxcjmxb0015.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbfxcjmxb0015.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import Xxhbfxcjmxb0015Modal from './components/Xxhbfxcjmxb0015Modal.vue'
import { useUserStore } from '/@/store/modules/user';
import { getFileAccessHttpUrl } from '@/utils/common/compUtils';
import { encryptByBase64 } from '@/utils/cipher';
import WjxWjxxTmlbDjjgModal from './components/WjxWjxxTmlbDjjgModal.vue'
const formRef = ref();
const queryParam = reactive<any>({});
const zhjxInfo = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const WjxWjxxTmlbDjjgModalPage = ref();
const userStore = useUserStore();
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
api: list,
columns,
canResize:false,
useSearchForm: false,
immediate: false,
showTableSetting: 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:4,
xl:6,
xxl:4
});
const wrapperCol = reactive({
xs: 24,
sm: 20,
});
//
function handleXiangxi(record){
console.log("🚀 ~ handleXiangxi ~ text:", record)
var file1 = getFileAccessHttpUrl(record.path);
var url = 'https://jxdd.nenu.edu.cn/onlinePreview/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file1));
window.open(url,"_blank");
}
//
function handleCyxx(record){
console.log("🚀 ~ handleCyxx ~ record:", record)
WjxWjxxTmlbDjjgModalPage.value.disableSubmit = true;
WjxWjxxTmlbDjjgModalPage.value.edit(record.kid, false);
}
//
function getLeixing(){
var fxcjmc = zhjxInfo.value.fxcjmc;
if(fxcjmc.indexOf('课程测验')>-1){
return true;
}else{
return false;
}
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
//
function init(record) {
console.log("🚀 ~ init ~ record:", record)
queryParam.fxcjdm = record.fxcjdm;
zhjxInfo.value = record;
console.log("🚀 ~ init ~ zhjxInfo:", zhjxInfo)
reload();
}
defineExpose({
init,
});
</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

@ -0,0 +1,329 @@
<template>
<a-spin :spinning="confirmLoading">
<a-row style="height: calc(80vh)">
<a-col :span="24" style="overflow-y: scroll; height: calc(80vh)">
<div style="text-align: center; width: 100%; font-weight: bold; font-size: 20px; padding: 20px">{{ djxxData.title }}</div>
<div style="text-align: right; font-size: 16px; padding-right: 20px">
<span class="answer-title">答卷人</span><span class="answer-info">{{ djxxData.userName }} </span>
<!-- <span v-if="djxxData.atype == 6" class="answer-title">总分:</span><span class="answer-info">{{ djxxData.totalScore }} </span> -->
<span v-if="djxxData.atype == 6" class="answer-title">得分:</span><span class="answer-info">{{ djxxData.score }} </span>
<span class="answer-title">用时</span><span class="answer-info">{{ djxxData.answerSfm }} </span>
</div>
<!-- 题干信息 -->
<div style="width: 100%" v-for="(item, index) in tiganData" :key="index">
<!-- 单选题 -->
<div style="width: 92%; margin: 0 auto" v-if="item.wjType == 3 && (item.wjSubtype==null || item.wjSubtype == '')">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px; padding: 20px">单选题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html:value="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word"></span>
<div v-if="item.picPath">
<j-upload
v-model:value="item.picPath"
fileType="image"
disabled
:maxCount="item.picPath.split(',').length"
:buttonVisible="false"
></j-upload>
</div>
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px"
>题目分值<span class="answer-word"> {{ item.wjScore }}</span> </div
>
<div style="margin-left: 40px"
>所得分值<span class="answer-word"> {{ item.itemScore }}</span> </div
>
</template>
<a-radio-group v-model:value="item.itemSelected" style="width: 100%" size="default" disabled>
<div style="width: 100%" v-for="(tmxx, index) in item.wjxWjxxTmxxList">
<a-radio :value="tmxx.itemIndex + ``" style="width: 100%; margin-bottom: 5px">
<span v-html:value="tmxx.itemTitle" style="width: 80%; font-size: 16px; color: #000"></span>
<span v-if="tmxx.itemSelected == 'true'" style="color: #9e9e9e; margin-left: 30px; font-size: 12px">(此选项是正确答案)</span>
</a-radio>
</div>
</a-radio-group>
</a-card>
</div>
<!-- 判断题 -->
<div style="width: 92%; margin: 0 auto" v-else-if="(item.wjType == 3 || item.wjType == '3') && (item.wjSubtype==305 || item.wjSubtype=='305')">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px; padding: 20px">判断题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html:value="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word"></span>
<div v-if="item.picPath">
<j-upload
v-model:value="item.picPath"
fileType="image"
disabled
:maxCount="item.picPath.split(',').length"
:buttonVisible="false"
></j-upload>
</div>
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px"
>题目分值<span class="answer-word"> {{ item.wjScore }}</span> </div
>
<div style="margin-left: 40px"
>所得分值<span class="answer-word"> {{ item.itemScore }}</span> </div
>
</template>
<a-radio-group v-model:value="item.itemSelected" style="width: 100%" size="default" disabled>
<div style="width: 100%" v-for="(tmxx, index) in item.wjxWjxxTmxxList">
<a-radio :value="tmxx.itemIndex + ``" style="width: 100%; margin-bottom: 5px">
<span v-html:value="tmxx.itemTitle" style="width: 80%; font-size: 16px; color: #000"></span>
<span v-if="tmxx.itemSelected == 'true'" style="color: #9e9e9e; margin-left: 30px; font-size: 12px">(此选项是正确答案)</span>
</a-radio>
</div>
</a-radio-group>
</a-card>
</div>
<!-- 多选题 -->
<div style="width: 92%; margin: 0 auto" v-else-if="item.wjType == 4">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px; padding: 20px">多选题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html:value="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word" />
<div v-if="item.picPath">
<j-upload
v-model:value="item.picPath"
fileType="image"
disabled
:maxCount="item.picPath.split(',').length"
:buttonVisible="false"
></j-upload>
</div>
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px"
>题目分值<span class="answer-word"> {{ item.wjScore }} </span> </div
>
<div style="margin-left: 40px"
>所得分值<span class="answer-word"> {{ item.itemScore }}</span> </div
>
</template>
<!-- -{{item.itemSelected}}- -->
<a-checkbox-group v-model:value="item.itemSelected" style="width: 100%" size="default" disabled>
<a-row>
<a-col :span="24" v-for="(tmxx, index) in item.wjxWjxxTmxxList">
<!-- -{{tmxx}}- -->
<a-checkbox :value="tmxx.itemIndex" style="width: 100%; margin-bottom: 5px">
<span v-html:value="tmxx.itemTitle" style="width: 80%; font-size: 16px; color: #000"></span>
<span v-if="tmxx.itemSelected == 'true'" style="color: #9e9e9e; margin-left: 30px; font-size: 12px">(此选项是正确答案)</span>
</a-checkbox>
</a-col>
</a-row>
</a-checkbox-group>
</a-card>
</div>
<!-- 填空题 -->
<div style="width: 92%; margin: 0 auto" v-else-if="item.wjType == 5 && item.wjSubtype == null">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px; padding: 20px">填空题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html:value="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word" />
<span v-if="item.tktda" style="color: #9e9e9e; margin-left: 30px; font-size: 12px">(正确答案:{{ item.tktda }})</span>
<div v-if="item.picPath">
<j-upload
v-model:value="item.picPath"
fileType="image"
disabled
:maxCount="item.picPath.split(',').length"
:buttonVisible="false"
></j-upload>
</div>
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px"
>题目分值<span class="answer-word">{{ item.wjScore }}</span> </div
>
<div style="margin-left: 40px"
>所得分值<span class="answer-word">{{ item.itemScore }}</span> </div
>
</template>
<a-row>
<a-col :span="24">
<span v-html="item.answerText"></span>
<!-- <a-textarea v-model:value="item.answerText" style="width:100%;" :auto-size="{ minRows: 2, maxRows: 5 }" disabled/> -->
</a-col>
</a-row>
</a-card>
</div>
<!-- 简答题 -->
<div style="width: 92%; margin: 0 auto" v-else-if="item.wjType == 5 && item.wjSubtype == 5">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px; padding: 20px">简答题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html:value="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word" />
<div v-if="item.picPath">
<j-upload
v-model:value="item.picPath"
fileType="image"
disabled
:maxCount="item.picPath.split(',').length"
:buttonVisible="false"
></j-upload>
</div>
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px"
>题目分值<span class="answer-word">{{ item.wjScore }}</span> </div
>
<div style="margin-left: 40px"
>所得分值<span class="answer-word">{{ item.itemScore!=null?item.itemScore:'待评' }}</span> </div
>
</template>
<a-row>
<a-col :span="24">
<span v-html="item.answerText"></span>
<!-- <a-textarea v-model:value="item.answerText" style="width:100%;" :auto-size="{ minRows: 2, maxRows: 5 }" disabled/> -->
</a-col>
</a-row>
</a-card>
</div>
<!-- 文件题 -->
<div style="width: 92%; margin: 0 auto" v-else-if="item.wjType == '8'">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px; padding: 20px">文件题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html:value="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word" />
<div v-if="item.picPath">
<j-upload
v-model:value="item.picPath"
fileType="image"
disabled
:maxCount="item.picPath.split(',').length"
:buttonVisible="false"
></j-upload>
</div>
<!-- <span v-if="item.tktda" style="color:#9e9e9e;margin-left:30px;font-size:12px;">(正确答案:{{item.tktda}})</span> -->
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px"
>题目分值<span class="answer-word">{{ item.wjScore }}</span> </div
>
<div style="margin-left: 40px"
>所得分值<span class="answer-word">{{ item.itemScore!=null?item.itemScore:'待评' }}</span> </div
>
</template>
<a-row>
<a-col :span="24">
<div v-if="item.answerText">
<j-upload
v-model:value="item.answerText"
disabled
:buttonVisible="false"
></j-upload>
</div>
<!-- <span v-html="item.answerText"></span> -->
<!-- <a-textarea v-model:value="item.answerText" style="width:100%;" :auto-size="{ minRows: 2, maxRows: 5 }" disabled/> -->
</a-col>
</a-row>
</a-card>
</div>
<div v-else> 无对应类型 </div>
</div>
</a-col>
</a-row>
</a-spin>
</template>
<script lang="ts" name="wjxWjxx-add" setup>
import { ref, nextTick, defineExpose } from 'vue';
import { Icon } from '/@/components/Icon';
import { useMessage } from '/@/hooks/web/useMessage';
import { defHttp } from '/@/utils/http/axios';
import JUpload from '/@/components/Form/src/jeecg/components/JUpload/JUpload.vue';
const title = ref<string>('');
const mainId = ref<string>('');
const confirmLoading = ref<boolean>(false);
const tiganData = ref<any>([]);
const djxxData = ref<any>({});
const { createMessage } = useMessage();
const emit = defineEmits(['register', 'success']);
//
function edit(id) {
tiganData.value = [];
mainId.value = id;
defHttp.get({ url: '/wjxwjxx/wjxDjxx/queryByMainId', params: { id: id } }).then((res) => {
console.log(`🚀 ~ defHttp.get ~ res:`, res);
let djxx = res;
let list = djxx.wjxDjxxTmxxList;
console.log('🥳11111111111', list);
for (let i = 0; i < list.length; i++) {
let par = list[i];
if (par.wjType == 4) {
let lssj = par.itemSelected.split(',');
const numArray = lssj.map((str) => parseInt(str));
list[i].itemSelected = numArray;
}
}
tiganData.value = list;
djxxData.value = djxx;
});
}
//
async function submitForm() {
}
defineExpose({
edit,
submitForm,
});
</script>
<style lang="less" scoped>
/deep/span.ant-radio + * {
width: 100%;
}
/deep/.ant-checkbox-wrapper {
box-sizing: border-box;
margin: 0;
padding: 0;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5715;
list-style: none;
font-feature-settings: tnum;
display: inline-flex;
align-items: baseline;
line-height: unset;
cursor: pointer;
width: 80%;
}
/deep/.ant-checkbox + span {
padding-right: 8px;
padding-left: 8px;
width: 100%;
}
.ant-checkbox-wrapper[aria-disabled='true'] {
color: rgb(2, 2, 2); /* 例如,将文本颜色设置为灰色 */
cursor: not-allowed; /* 将鼠标指针设置为禁用状态 */
}
.answer-title {
font-size: 14px;
color: #333;
}
.answer-info {
font-size: 14px;
color: #666;
text-decoration: underline;
margin-right: 15px;
}
.answer-word {
color: #ff8710;
}
</style>

View File

@ -0,0 +1,63 @@
<template>
<a-modal :title="title" :width="width" centered :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
<WjxWjxxTmlbDjjgForm ref="registerForm" :formDisabled="disableSubmit" :formBpm="false"></WjxWjxxTmlbDjjgForm>
</a-modal>
</template>
<script lang="ts" setup>
import { ref, nextTick, defineExpose } from 'vue';
import WjxWjxxTmlbDjjgForm from './WjxWjxxTmlbDjjgForm.vue'
const title = ref<string>('');
const width = ref<number>(1024);
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const registerForm = ref();
const emit = defineEmits(['register', 'success']);
/**
* 编辑
* @param record
*/
function edit(id) {
title.value = '答卷结果';
visible.value = true;
nextTick(() => {
registerForm.value.edit(id);
});
}
/**
* 确定按钮点击事件
*/
function handleOk() {
registerForm.value.submitForm();
}
/**
* form保存回调事件
*/
function submitCallback() {
handleCancel();
emit('success');
}
/**
* 取消按钮回调事件
*/
function handleCancel() {
visible.value = false;
}
defineExpose({
edit,
disableSubmit,
});
</script>
<style>
/**隐藏样式-modal确定按钮 */
.jee-hidden {
display: none !important;
}
</style>

View File

@ -0,0 +1,205 @@
<template>
<a-spin :spinning="confirmLoading">
<JFormContainer :disabled="disabled">
<template #detail>
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol" name="Xxhbfxcjb0016Form">
<a-row>
<a-col :span="24">
<a-form-item label="分项成绩代码" v-bind="validateInfos.fxcjdm" id="Xxhbfxcjb0016Form-fxcjdm" name="fxcjdm">
<a-input v-model:value="formData.fxcjdm" placeholder="请输入分项成绩代码" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="分项成绩名称" v-bind="validateInfos.fxcjmc" id="Xxhbfxcjb0016Form-fxcjmc" name="fxcjmc">
<a-input v-model:value="formData.fxcjmc" placeholder="请输入分项成绩名称" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="课程任务代码" v-bind="validateInfos.kcrwdm" id="Xxhbfxcjb0016Form-kcrwdm" name="kcrwdm">
<a-input v-model:value="formData.kcrwdm" placeholder="请输入课程任务代码" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="课程编号" v-bind="validateInfos.kcbh" id="Xxhbfxcjb0016Form-kcbh" name="kcbh">
<a-input v-model:value="formData.kcbh" placeholder="请输入课程编号" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="课程名称" v-bind="validateInfos.kcmc" id="Xxhbfxcjb0016Form-kcmc" name="kcmc">
<a-input v-model:value="formData.kcmc" placeholder="请输入课程名称" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="成绩类型代码" v-bind="validateInfos.cjlxdm" id="Xxhbfxcjb0016Form-cjlxdm" name="cjlxdm">
<a-input v-model:value="formData.cjlxdm" placeholder="请输入成绩类型代码" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="分项比例" v-bind="validateInfos.fxbl" id="Xxhbfxcjb0016Form-fxbl" name="fxbl">
<a-input v-model:value="formData.fxbl" placeholder="请输入分项比例" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="教师工号" v-bind="validateInfos.teabh" id="Xxhbfxcjb0016Form-teabh" name="teabh">
<a-input v-model:value="formData.teabh" placeholder="请输入教师工号" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="教师姓名" v-bind="validateInfos.teaxm" id="Xxhbfxcjb0016Form-teaxm" name="teaxm">
<a-input v-model:value="formData.teaxm" placeholder="请输入教师姓名" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="代码名称" v-bind="validateInfos.dmmc" id="Xxhbfxcjb0016Form-dmmc" name="dmmc">
<a-input v-model:value="formData.dmmc" placeholder="请输入代码名称" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="无用" v-bind="validateInfos.synfxcjdm" id="Xxhbfxcjb0016Form-synfxcjdm" name="synfxcjdm">
<a-input v-model:value="formData.synfxcjdm" placeholder="请输入无用" allow-clear ></a-input>
</a-form-item>
</a-col>
</a-row>
</a-form>
</template>
</JFormContainer>
</a-spin>
</template>
<script lang="ts" setup>
import { ref, reactive, defineExpose, nextTick, defineProps, computed, onMounted } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
import { getValueType } from '/@/utils';
import { saveOrUpdate } from '../Xxhbfxcjb0016.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 }
});
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
const formData = reactive<Record<string, any>>({
id: '',
fxcjdm: '',
fxcjmc: '',
kcrwdm: '',
kcbh: '',
kcmc: '',
cjlxdm: '',
fxbl: '',
teabh: '',
teaxm: '',
dmmc: '',
synfxcjdm: '',
});
const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } });
const confirmLoading = ref<boolean>(false);
//
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;
}
}
return props.formDisabled;
});
/**
* 新增
*/
function add() {
edit({});
}
/**
* 编辑
*/
function edit(record) {
nextTick(() => {
resetFields();
const tmpData = {};
Object.keys(formData).forEach((key) => {
if(record.hasOwnProperty(key)){
tmpData[key] = record[key]
}
})
//
Object.assign(formData, tmpData);
});
}
/**
* 提交数据
*/
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;
});
}
defineExpose({
add,
edit,
submitForm,
});
</script>
<style lang="less" scoped>
.antd-modal-form {
padding: 14px;
}
</style>

View File

@ -0,0 +1,77 @@
<template>
<j-modal :title="title" :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
<Xxhbfxcjb0016Form ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></Xxhbfxcjb0016Form>
</j-modal>
</template>
<script lang="ts" setup>
import { ref, nextTick, defineExpose } from 'vue';
import Xxhbfxcjb0016Form from './Xxhbfxcjb0016Form.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
const title = ref<string>('');
const width = ref<number>(800);
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const registerForm = ref();
const emit = defineEmits(['register', 'success']);
/**
* 新增
*/
function add() {
title.value = '新增';
visible.value = true;
nextTick(() => {
registerForm.value.add();
});
}
/**
* 编辑
* @param record
*/
function edit(record) {
title.value = disableSubmit.value ? '详情' : '编辑';
visible.value = true;
nextTick(() => {
registerForm.value.edit(record);
});
}
/**
* 确定按钮点击事件
*/
function handleOk() {
registerForm.value.submitForm();
}
/**
* form保存回调事件
*/
function submitCallback() {
handleCancel();
emit('success');
}
/**
* 取消按钮回调事件
*/
function handleCancel() {
visible.value = false;
}
defineExpose({
add,
edit,
disableSubmit,
});
</script>
<style lang="less">
/**隐藏样式-modal确定按钮 */
.jee-hidden {
display: none !important;
}
</style>
<style lang="less" scoped></style>

View File

@ -0,0 +1,163 @@
<template>
<a-spin :spinning="confirmLoading">
<JFormContainer :disabled="disabled">
<template #detail>
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol" name="Xxhbfxcjmxb0015Form">
<a-row>
<a-col :span="24">
<a-form-item label="学生编号" v-bind="validateInfos.xsbh" id="Xxhbfxcjmxb0015Form-xsbh" name="xsbh">
<a-input v-model:value="formData.xsbh" placeholder="请输入学生编号" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="学生姓名" v-bind="validateInfos.xsxm" id="Xxhbfxcjmxb0015Form-xsxm" name="xsxm">
<a-input v-model:value="formData.xsxm" placeholder="请输入学生姓名" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="分项成绩" v-bind="validateInfos.fxcj" id="Xxhbfxcjmxb0015Form-fxcj" name="fxcj">
<a-input v-model:value="formData.fxcj" placeholder="请输入分项成绩" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="附件" v-bind="validateInfos.path" id="Xxhbfxcjmxb0015Form-path" name="path">
<a-textarea v-model:value="formData.path" :rows="4" placeholder="请输入附件" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</template>
</JFormContainer>
</a-spin>
</template>
<script lang="ts" setup>
import { ref, reactive, defineExpose, nextTick, defineProps, computed, onMounted } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
import { getValueType } from '/@/utils';
import { saveOrUpdate } from '../Xxhbfxcjmxb0015.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 }
});
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
const formData = reactive<Record<string, any>>({
id: '',
xsbh: '',
xsxm: '',
fxcj: '',
path: '',
});
const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } });
const confirmLoading = ref<boolean>(false);
//
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;
}
}
return props.formDisabled;
});
/**
* 新增
*/
function add() {
edit({});
}
/**
* 编辑
*/
function edit(record) {
nextTick(() => {
resetFields();
const tmpData = {};
Object.keys(formData).forEach((key) => {
if(record.hasOwnProperty(key)){
tmpData[key] = record[key]
}
})
//
Object.assign(formData, tmpData);
});
}
/**
* 提交数据
*/
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;
});
}
defineExpose({
add,
edit,
submitForm,
});
</script>
<style lang="less" scoped>
.antd-modal-form {
padding: 14px;
}
</style>

View File

@ -0,0 +1,77 @@
<template>
<j-modal :title="title" :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
<Xxhbfxcjmxb0015Form ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></Xxhbfxcjmxb0015Form>
</j-modal>
</template>
<script lang="ts" setup>
import { ref, nextTick, defineExpose } from 'vue';
import Xxhbfxcjmxb0015Form from './Xxhbfxcjmxb0015Form.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
const title = ref<string>('');
const width = ref<number>(800);
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const registerForm = ref();
const emit = defineEmits(['register', 'success']);
/**
* 新增
*/
function add() {
title.value = '新增';
visible.value = true;
nextTick(() => {
registerForm.value.add();
});
}
/**
* 编辑
* @param record
*/
function edit(record) {
title.value = disableSubmit.value ? '详情' : '编辑';
visible.value = true;
nextTick(() => {
registerForm.value.edit(record);
});
}
/**
* 确定按钮点击事件
*/
function handleOk() {
registerForm.value.submitForm();
}
/**
* form保存回调事件
*/
function submitCallback() {
handleCancel();
emit('success');
}
/**
* 取消按钮回调事件
*/
function handleCancel() {
visible.value = false;
}
defineExpose({
add,
edit,
disableSubmit,
});
</script>
<style lang="less">
/**隐藏样式-modal确定按钮 */
.jee-hidden {
display: none !important;
}
</style>
<style lang="less" scoped></style>

View File

@ -204,6 +204,15 @@
<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>
@ -334,6 +343,8 @@ 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();
@ -341,6 +352,8 @@ const cjdFormModal = ref();
const khpjclFormModal = ref();
const xsysclFormModal = ref();
const xsysclXqFormModal = ref();
const Xxhbfxcjb0016Modal = ref();
const Xxhbfxcjmxb0015Modal = ref();
const queryParam = reactive<any>({});
const queryParam2 = ref<any>({});
const toggleSearchStatus = ref<boolean>(false);
@ -349,6 +362,7 @@ 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';
@ -424,6 +438,13 @@ function handleXsyscl(record) {
function handleXsyscl2(record) {
sfxk2.value = 0;
}
//
function handleZhjxzx(record){
console.log("🚀 ~ handleZhjxzx ~ record:", record)
zhjxxx.value = 2;
Xxhbfxcjmxb0015Modal.value.init(record);
}
//
function handleXuanke() {
sfxk.value = 1;
@ -573,6 +594,9 @@ function onChangeTab(tab) {
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);
}
}
/**

View File

@ -205,6 +205,16 @@
<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>
@ -335,6 +345,8 @@ 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();
@ -346,10 +358,13 @@ 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';
@ -458,6 +473,12 @@ function handleQueren(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() {
//
@ -571,6 +592,9 @@ function onChangeTab(tab) {
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);
}
}
/**