Merge remote-tracking branch 'origin/baotou-signup' into baotou-signup

This commit is contained in:
Renpc-kilig 2021-05-15 22:31:33 +08:00
commit 7063991872
15 changed files with 871 additions and 166 deletions

View File

@ -141,6 +141,12 @@
</dependency>
<!--二维码end-->
<dependency>
<groupId>ink.wgink</groupId>
<artifactId>register-base</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@ -40,6 +40,33 @@ public class ApplyController extends DefaultBaseController {
private IApplyService applyService;
@ApiOperation(value = "报名信息报道", notes = "报名信息报道接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "applyId", value = "报名信息ID", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("updateInstitutionId/{targetId}")
@CheckRequestBodyAnnotation
public SuccessResult updateInstitutionId(@PathVariable("targetId") String targetId) {
Map<String, Object> params = requestParams();
String sourceIds = params.get("sourceIds").toString();
applyService.updateInstitutionId(targetId,Arrays.asList(sourceIds.split(",")));
return new SuccessResult();
}
@ApiOperation(value = "自定义新增报名信息", notes = "自定义新增报名信息")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PostMapping("save-relation")
@CheckRequestBodyAnnotation
public SuccessResult saveRelation(@RequestBody ApplyVO applyVO) {
applyService.saveRelationReturnId(applyVO);
return new SuccessResult();
}
@ApiOperation(value = "报名信息撤回", notes = "报名信息撤回接口")
@ApiImplicitParams({

View File

@ -16,6 +16,8 @@ public class ApplyDTO {
@ApiModelProperty(name = "applyInstitutionId", value = "报名机构ID")
private String applyInstitutionId;
@ApiModelProperty(name = "applyInstitutionName", value = "报名机构中文名称")
private String applyInstitutionName;
@ApiModelProperty(name = "applyId", value = "报名信息ID")
private String applyId;
@ApiModelProperty(name = "applyClassId", value = "报名班级ID")
@ -87,6 +89,15 @@ public class ApplyDTO {
@ApiModelProperty(name = "准考证码", value = "准考证码")
private String distributionCardCode;
@ApiModelProperty(name = "applyUserNum1", value = "预计报名人数")
private Integer applyUserNum1;
@ApiModelProperty(name = "applyUserNum2", value = "已报名人数")
private Integer applyUserNum2;
@ApiModelProperty(name = "applyUserNum3", value = "已通过审核人数")
private Integer applyUserNum3;
public String getApplyInstitutionId() {
return applyInstitutionId;
@ -96,6 +107,14 @@ public class ApplyDTO {
this.applyInstitutionId = applyInstitutionId;
}
public String getApplyInstitutionName() {
return applyInstitutionName;
}
public void setApplyInstitutionName(String applyInstitutionName) {
this.applyInstitutionName = applyInstitutionName;
}
public String getApplyId() {
return applyId == null ? "" : applyId.trim();
}
@ -344,4 +363,29 @@ public class ApplyDTO {
public void setApplyWorkTypeName(String applyWorkTypeName) {
this.applyWorkTypeName = applyWorkTypeName;
}
public Integer getApplyUserNum1() {
return applyUserNum1;
}
public void setApplyUserNum1(Integer applyUserNum1) {
this.applyUserNum1 = applyUserNum1;
}
public Integer getApplyUserNum2() {
return applyUserNum2;
}
public void setApplyUserNum2(Integer applyUserNum2) {
this.applyUserNum2 = applyUserNum2;
}
public Integer getApplyUserNum3() {
return applyUserNum3;
}
public void setApplyUserNum3(Integer applyUserNum3) {
this.applyUserNum3 = applyUserNum3;
}
}

View File

@ -22,6 +22,13 @@ import java.util.Map;
**/
public interface IApplyService {
/**
* 修改报名机构
* @param targetId 目标id
* @param sourceIds 源id
*/
void updateInstitutionId(String targetId,List<String> sourceIds);
/**
* 自定义新增报名信息
* @param applyVO

View File

@ -86,12 +86,41 @@ public class ApplyServiceImpl extends DefaultBaseService implements IApplyServic
@Autowired
private ServerProperties serverProperties;
/**
* 修改报名机构
* @param targetId 目标id
* @param sourceIds 源id
*/
public void updateInstitutionId(String targetId,List<String> sourceIds){
InstitutionDTO institutionDTO = iInstitutionService.get(targetId);
if(institutionDTO != null){
throw new SearchException("未查询到目标机构信息");
}
Map<String,Object> params = new HashMap<>();
for (String sourceId : sourceIds) {
params.put("applyInstitutionId",sourceId);
List<ApplyDTO> applyDTOList = this.list(params);//查询源报名的人
for (ApplyDTO applyDTO : applyDTOList) {
Map<String,Object> updateParams = new HashMap<>();
updateParams.put("applyId",applyDTO.getApplyId());
updateParams.put("applyInstitutionId",applyDTO.getApplyInstitutionId());
applyDao.update(params);
//增加操作日志
ApplyAuditLogVO auditLogVO = new ApplyAuditLogVO();
auditLogVO.setApplyId(applyDTO.getApplyId());
auditLogVO.setApplyAuditState(0);
InstitutionDTO sourceInstitutionDTO = iInstitutionService.get(applyDTO.getApplyInstitutionId());
if(sourceInstitutionDTO != null){
throw new SearchException("未查询到源机构信息");
}
auditLogVO.setApplyAuditExplain("【因报名人数不足】 报名培训机构 由原【"+sourceInstitutionDTO.getInstitutionName()+"】培训机构 调整到【"+institutionDTO.getInstitutionName()+"】培训机构");
applyAuditLogService.save(null,auditLogVO);
}
}
}
private ISystemConfigManager systemConfigManager;
public String saveRelationReturnId(ApplyVO applyVO){
String applyId = UUIDUtil.getUUID();
@ -143,6 +172,23 @@ public class ApplyServiceImpl extends DefaultBaseService implements IApplyServic
}
PageHelper.startPage(page.getPage(), page.getRows());
List<ApplyDTO> applyDTOs = list(page.getParams());
for (ApplyDTO applyDTO : applyDTOs) {
//统计机构报名数量
List<String> states = new ArrayList<>();
states.add("0");
states.add("1");
states.add("2");
states.add("-1");
Integer num2 = countApplyNum(applyDTO.getApplyWorkTypeId(),applyDTO.getApplyInstitutionId(),states);
//统计机构报名审核通过数量
states.clear();
states.add("2");
Integer num3 = countApplyNum(applyDTO.getApplyWorkTypeId(),applyDTO.getApplyInstitutionId(),states);
Object applyClassPlanUserNum = ConfigManager.getInstance().getConfig().get("applyClassPlanUserNum");
applyDTO.setApplyUserNum1(applyClassPlanUserNum == null ? 0:Integer.valueOf(applyClassPlanUserNum.toString()));
applyDTO.setApplyUserNum2(num2);
applyDTO.setApplyUserNum3(num3);
}
PageInfo<ApplyDTO> pageInfo = new PageInfo<>(applyDTOs);
return new SuccessResultList<>(applyDTOs, pageInfo.getPageNum(), pageInfo.getTotal());
}
@ -372,9 +418,9 @@ public class ApplyServiceImpl extends DefaultBaseService implements IApplyServic
if(!(applyDTO.getApplyAuditState() == -1 || applyDTO.getApplyAuditState() == 1)){
throw new SearchException("暂不能修改信息");
}
if(checkApplyIsFirst(creator,applyWorkTypeId,null) != 0){
throw new SaveException("您选择的工种已报名过其他培训机构");
}
// if(checkApplyIsFirst(creator,applyWorkTypeId,null) != 0){
// throw new SaveException("您选择的工种已报名过其他培训机构");
// }
if(!examCheckService.getExamCheckFailOrBack(applyWorkTypeId,applyInstitutionId)){
throw new SaveException("该机构以截止报名");

View File

@ -329,9 +329,9 @@ public class DistributionServiceImpl extends DefaultBaseService implements IDist
*/
Map<String, Object> params = HashMapUtil.beanToMap(distributionVO);
if (StringUtils.isBlank(token)) {
setUpdateInfo(params);
setSaveInfo(params);
} else {
setAppUpdateInfo(token, params);
setAppSaveInfo(token, params);
}
params.put("stationId", stationId.length() > 0 ? stationId.substring(1, stationId.length()) : "");
params.put("planId", classPlanId);

View File

@ -4,6 +4,7 @@
<resultMap id="applyDTO" type="cn.com.tenlion.pojo.dtos.apply.ApplyDTO">
<result column="apply_institution_id" property="applyInstitutionId"/>
<result column="apply_institution_name" property="applyInstitutionName"/>
<result column="apply_id" property="applyId"/>
<result column="apply_class_id" property="applyClassId"/>
<result column="apply_class_name" property="applyClassName"/>
@ -275,6 +276,7 @@
<select id="get" parameterType="map" resultMap="applyDTO">
SELECT
t1.apply_institution_id,
m1.institution_name AS apply_institution_name,
t1.apply_class_id,
t1.apply_class_name,
t1.apply_work_type_id,
@ -316,6 +318,8 @@
ON t1.apply_physical_state = t5.data_id
LEFT JOIN e_work_type e1
ON t1.apply_work_type_id = e1.work_type_id
LEFT JOIN m_institution m1
ON t1.apply_institution_id = m1.institution_id
WHERE
t1.is_delete = 0
<if test="applyId != null and applyId != ''">
@ -410,6 +414,7 @@
<select id="list" parameterType="map" resultMap="applyDTO">
SELECT
t1.apply_institution_id,
m1.institution_name AS apply_institution_name,
t1.apply_id,
t1.apply_class_id,
t1.apply_class_name,
@ -451,6 +456,8 @@
ON t1.apply_physical_state = t5.data_id
LEFT JOIN e_work_type e1
ON t1.apply_work_type_id = e1.work_type_id
LEFT JOIN m_institution m1
ON t1.apply_institution_id = m1.institution_id
WHERE
t1.is_delete = 0
<if test="keywords != null and keywords != ''">
@ -686,4 +693,7 @@
</select>
</mapper>

View File

@ -22,126 +22,168 @@
</div>
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-form-item">
<label class="layui-form-label">报名班级ID</label>
<div class="layui-input-block">
<input type="text" id="applyClassId" name="applyClassId" class="layui-input" value="" placeholder="请输入报名班级ID" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人姓名</label>
<div class="layui-input-block">
<input type="text" id="applyName" name="applyName" class="layui-input" value="" placeholder="请输入报名人姓名" maxlength="50">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人性别 1男 2女【数据字典】</label>
<div class="layui-input-block layui-form" id="applySexSelectTemplateBox" lay-filter="applySexSelectTemplateBox"></div>
<script id="applySexSelectTemplate" type="text/html">
<select id="applySex" name="applySex">
<option value="">请选择报名人性别 1男 2女【数据字典】</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.selectId}}">{{item.selectName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人出生日期</label>
<div class="layui-input-block">
<input type="text" id="applyDataBirth" name="applyDataBirth" class="layui-input" value="" placeholder="请选择报名人出生日期" readonly style="cursor: pointer;" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人证件类型【数据字典】</label>
<div class="layui-input-block layui-form" id="applyCardTypeSelectTemplateBox" lay-filter="applyCardTypeSelectTemplateBox"></div>
<script id="applyCardTypeSelectTemplate" type="text/html">
<select id="applyCardType" name="applyCardType">
<option value="">请选择报名人证件类型【数据字典】</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.selectId}}">{{item.selectName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人证件号码</label>
<div class="layui-input-block">
<input type="text" id="applyCardNumber" name="applyCardNumber" class="layui-input" value="" placeholder="请输入报名人证件号码" maxlength="50">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人手机号码</label>
<div class="layui-input-block">
<input type="number" id="applyPhone" name="applyPhone" class="layui-input" value="" placeholder="请输入报名人手机号码" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人通讯地址</label>
<div class="layui-input-block">
<input type="text" id="applyAddress" name="applyAddress" class="layui-input" value="" placeholder="请输入报名人通讯地址" maxlength="500">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人文化程度【数据字典】</label>
<div class="layui-input-block layui-form" id="applyCultureLevelSelectTemplateBox" lay-filter="applyCultureLevelSelectTemplateBox"></div>
<script id="applyCultureLevelSelectTemplate" type="text/html">
<select id="applyCultureLevel" name="applyCultureLevel">
<option value="">请选择报名人文化程度【数据字典】</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.selectId}}">{{item.selectName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人邮编</label>
<div class="layui-input-block">
<input type="text" id="applyPostcode" name="applyPostcode" class="layui-input" value="" placeholder="请输入报名人邮编" maxlength="50">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人身体状态【数据字典】</label>
<div class="layui-input-block layui-form" id="applyPhysicalStateSelectTemplateBox" lay-filter="applyPhysicalStateSelectTemplateBox"></div>
<script id="applyPhysicalStateSelectTemplate" type="text/html">
<select id="applyPhysicalState" name="applyPhysicalState">
<option value="">请选择报名人身体状态【数据字典】</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.selectId}}">{{item.selectName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人单位名称</label>
<div class="layui-input-block">
<input type="text" id="applyUnitName" name="applyUnitName" class="layui-input" value="" placeholder="请输入报名人单位名称" maxlength="100">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人单位电话</label>
<div class="layui-input-block">
<input type="number" id="applyUnitPhone" name="applyUnitPhone" class="layui-input" value="" placeholder="请输入报名人单位电话" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名人单位地址</label>
<div class="layui-input-block">
<input type="text" id="applyUnitAddress" name="applyUnitAddress" class="layui-input" value="" placeholder="请输入报名人单位地址" maxlength="500">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">证件照片</label>
<div class="layui-input-block">
<input type="text" id="applyUserCardPhoto" name="applyUserCardPhoto" class="layui-input" value="" placeholder="请输入证件照片" maxlength="36">
<input type="hidden" id="applyUserCardPhoto" name="applyUserCardPhoto">
<div class="layui-btn-container" id="applyUserCardPhotoFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="applyUserCardPhotoFileDownload" type="text/html">
{{# var fileName = 'applyUserCardPhoto'; }}
{{# if(d[fileName].length > 0) { }}
{{# var files = d[fileName];}}
{{# for(var i = 0, item = files[i]; item = files[i++];) { }}
<div class="upload-image-box">
<span class="upload-image-span">
<img src="route/file/download/false/{{item.fileId}}" align="加载失败">
</span>
<a class="layui-btn layui-btn-xs layui-btn-danger text-danger remove-image" href="javascript:void(0);" lay-form-button data-id="{{item.fileId}}" data-name="{{fileName}}" lay-filter="applyUserCardPhotoRemoveFile">
<i class="fa fa-trash-o"></i>
</a>
</div>
{{# } }}
{{# } }}
{{# if(d[fileName].length < 1) { }}
<div class="upload-image-box" style="width: auto; height: auto; padding: 5px;">
<a href="javascript:void(0);" lay-form-button data-explain="证件照片" data-name="applyUserCardPhoto" lay-filter="applyUserCardPhotoUploadFile">
<i class="fa fa-plus-square-o" style="font-size: 70px;"></i>
</a>
</div>
{{# } }}
</script>
</div>
</div>
<div class="layui-form-item layui-col-space10">
<div class="layui-col-md4">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" id="applyName" name="applyName" class="layui-input" value=""maxlength="50" placeholder="请输入姓名" lay-verify="required" >
</div>
</div>
<div class="layui-col-md4">
<label class="layui-form-label">性别</label>
<div class="layui-input-block layui-form" id="applySexSelectTemplateBox" lay-filter="applySexSelectTemplateBox"></div>
<script id="applySexSelectTemplate" type="text/html">
<select id="applySex" name="applySex" lay-verify="required" >
<option value="">请选择性别</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.dataId}}">{{item.dataName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-col-md4">
<label class="layui-form-label">出生日期</label>
<div class="layui-input-block">
<input type="text" id="applyDataBirth" name="applyDataBirth" class="layui-input" value="" placeholder="请输入出生日期" lay-verify="required" readonly style="cursor: pointer;">
</div>
</div>
</div>
<div class="layui-form-item layui-col-space10">
<div class="layui-col-md4">
<label class="layui-form-label">职务</label>
<div class="layui-input-block">
<input type="text" id="applyPosition" name="applyPosition" class="layui-input" value="" placeholder="请输入职务" lay-verify="required" style="cursor: pointer;">
</div>
</div>
<div class="layui-col-md4">
<label class="layui-form-label">从业年限</label>
<div class="layui-input-block">
<input type="number" id="applyMajorYear" name="applyMajorYear" class="layui-input" value="" placeholder="请输入从业年限" maxlength="50" lay-verify="required" >
</div>
</div>
<div class="layui-col-md4">
<label class="layui-form-label">技术职称</label>
<div class="layui-input-block">
<input type="text" id="applyTechnicalTitles" name="applyTechnicalTitles" class="layui-input" value="" placeholder="请输入技术职称" lay-verify="required" >
</div>
</div>
</div>
<div class="layui-form-item layui-col-space10">
<div class="layui-col-md4">
<label class="layui-form-label">证件类型</label>
<div class="layui-input-block layui-form" id="applyCardTypeSelectTemplateBox" lay-filter="applyCardTypeSelectTemplateBox"></div>
<script id="applyCardTypeSelectTemplate" type="text/html">
<select id="applyCardType" name="applyCardType" lay-verify="required" >
<option value="">请选择证件类型</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.dataId}}">{{item.dataName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-col-md4">
<label class="layui-form-label">证件号码</label>
<div class="layui-input-block">
<input type="text" id="applyCardNumber" name="applyCardNumber" class="layui-input" value="" placeholder="请输入证件号码" maxlength="50" lay-verify="required" >
</div>
</div>
<div class="layui-col-md4">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-block">
<input type="text" id="applyPhone" name="applyPhone" class="layui-input" value="" placeholder="请输入手机号码" lay-verify="required" >
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">报名状态 0 待审核 1用户撤回 2审核通过 3未报到 4报名完成-1审核不通过</label>
<label class="layui-form-label">通讯地址</label>
<div class="layui-input-block">
<input type="number" id="applyAuditState" name="applyAuditState" class="layui-input" value="" placeholder="请输入报名状态 0 待审核 1用户撤回 2审核通过 3未报到 4报名完成-1审核不通过" lay-verify="required">
<input type="text" id="applyAddress" name="applyAddress" class="layui-input" value="" placeholder="请输入通讯地址" maxlength="500" >
</div>
</div>
<div class="layui-form-item layui-col-space10">
<div class="layui-col-md4">
<label class="layui-form-label">文化程度</label>
<div class="layui-input-block layui-form" id="applyCultureLevelSelectTemplateBox" lay-filter="applyCultureLevelSelectTemplateBox"></div>
<script id="applyCultureLevelSelectTemplate" type="text/html">
<select id="applyCultureLevel" name="applyCultureLevel" lay-verify="required" >
<option value="">请选择文化程度</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.dataId}}">{{item.dataName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-col-md4">
<label class="layui-form-label">身体状态</label>
<div class="layui-input-block layui-form" id="applyPhysicalStateSelectTemplateBox" lay-filter="applyPhysicalStateSelectTemplateBox"></div>
<script id="applyPhysicalStateSelectTemplate" type="text/html">
<select id="applyPhysicalState" name="applyPhysicalState" lay-verify="required" >
<option value="">请选择身体状态</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.dataId}}">{{item.dataName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-col-md4">
<label class="layui-form-label">邮编</label>
<div class="layui-input-block">
<input type="text" id="applyPostcode" name="applyPostcode" class="layui-input" value="" placeholder="请输入邮编" maxlength="50" >
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-col-md6">
<label class="layui-form-label">单位名称</label>
<div class="layui-input-block">
<input type="text" id="applyUnitName" name="applyUnitName" class="layui-input" value="" placeholder="请输入单位名称" maxlength="100" >
</div>
</div>
<div class="layui-col-md6">
<label class="layui-form-label">单位电话</label>
<div class="layui-input-block">
<input type="text" id="applyUnitPhone" name="applyUnitPhone" class="layui-input" value="" placeholder="请输入单位电话" >
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单位地址</label>
<div class="layui-input-block">
<input type="text" id="applyUnitAddress" name="applyUnitAddress" class="layui-input" value="" placeholder="请输入地址" maxlength="500" >
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;">
@ -171,6 +213,9 @@
var wangEditor = window.wangEditor;
var wangEditorObj = {};
var viewerObj = {};
var applyWorkTypeId = top.restAjax.params(window.location.href).applyWorkTypeId;
var applyInstitutionId = top.restAjax.params(window.location.href).applyInstitutionId;
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
@ -226,9 +271,9 @@
}
}
// 初始化报名人性别 1男 2女【数据字典】下拉选择
// 初始化报名人性别
function initApplySexSelect() {
top.restAjax.get(top.restAjax.path('api/url/selectUrl', []), {}, null, function(code, data, args) {
top.restAjax.get(top.restAjax.path('api/data/listbyparentid/4ef46940-76ab-4758-b5f0-0cbc93ffc660', []), {}, null, function(code, data, args) {
laytpl(document.getElementById('applySexSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('applySexSelectTemplateBox').innerHTML = html;
});
@ -238,6 +283,45 @@
});
}
// 初始化报名人证件类型
function initApplyCardTypeSelect() {
top.restAjax.get(top.restAjax.path('api/data/listbyparentid/76c5044f-805a-4313-b1e8-79e966b97c0d', []), {}, null, function(code, data, args) {
laytpl(document.getElementById('applyCardTypeSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('applyCardTypeSelectTemplateBox').innerHTML = html;
});
form.render('select', 'applyCardTypeSelectTemplateBox');
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化报名人文化程度
function initApplyCultureLevelSelect() {
top.restAjax.get(top.restAjax.path('api/data/listbyparentid/d6b9f026-6ea9-456a-b48b-0c18d502523b', []), {}, null, function(code, data, args) {
laytpl(document.getElementById('applyCultureLevelSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('applyCultureLevelSelectTemplateBox').innerHTML = html;
});
form.render('select', 'applyCultureLevelSelectTemplateBox');
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化报名人身体状态
function initApplyPhysicalStateSelect() {
top.restAjax.get(top.restAjax.path('api/data/listbyparentid/e4680c90-7a1f-4f09-96c8-0c583d8031ba', []), {}, null, function(code, data, args) {
laytpl(document.getElementById('applyPhysicalStateSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('applyPhysicalStateSelectTemplateBox').innerHTML = html;
});
form.render('select', 'applyPhysicalStateSelectTemplateBox');
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化报名人出生日期日期
function initApplyDataBirthDate() {
laydate.render({
@ -248,59 +332,88 @@
});
}
// 初始化报名人证件类型【数据字典】下拉选择
function initApplyCardTypeSelect() {
top.restAjax.get(top.restAjax.path('api/url/selectUrl', []), {}, null, function(code, data, args) {
laytpl(document.getElementById('applyCardTypeSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('applyCardTypeSelectTemplateBox').innerHTML = html;
// 初始化头像图片上传
function initApplyUserCardPhotoUploadFile() {
var files = $('#applyUserCardPhoto').val();
initFileList('applyUserCardPhoto', files, function(fileName) {
var viewer = new Viewer(document.getElementById(fileName +'FileBox'), {navbar: false});
viewerObj[fileName] = viewer;
});
form.on('button(applyUserCardPhotoUploadFile)', function(obj) {
var name = this.dataset.name;
var explain = this.dataset.explain;
top.dialog.file({
type: 'image',
title: '上传'+ explain,
width: '400px',
height: '420px',
maxFileCount: '1',
onClose: function() {
var uploadFileArray = top.dialog.dialogData.uploadFileArray;
if(typeof(uploadFileArray) != 'undefined' && uploadFileArray.length > 0) {
var files = $('#'+ name).val();
for(var j = 0, file = uploadFileArray[j]; file = uploadFileArray[j++];) {
if(files.length > 0) {
files += ',';
}
files += file.data;
}
initFileList(name, files, function(fileName) {
viewerObj[fileName].update();
});
}
}
});
});
form.on('button(applyUserCardPhotoRemoveFile)', function(obj) {
var name = this.dataset.name;
var id = this.dataset.id;
var files = $('#'+ name).val().replace(id, '');
files = files.replace(/\,+/g, ',');
if(files.charAt(0) == ',') {
files = files.substring(1);
}
if(files.charAt(files.length - 1) == ',') {
files = files.substring(0, files.length - 1);
}
initFileList(name, files, function(fileName) {
viewerObj[fileName].update();
});
form.render('select', 'applyCardTypeSelectTemplateBox');
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化报名人文化程度【数据字典】下拉选择
function initApplyCultureLevelSelect() {
top.restAjax.get(top.restAjax.path('api/url/selectUrl', []), {}, null, function(code, data, args) {
laytpl(document.getElementById('applyCultureLevelSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('applyCultureLevelSelectTemplateBox').innerHTML = html;
});
form.render('select', 'applyCultureLevelSelectTemplateBox');
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化报名人身体状态【数据字典】下拉选择
function initApplyPhysicalStateSelect() {
top.restAjax.get(top.restAjax.path('api/url/selectUrl', []), {}, null, function(code, data, args) {
laytpl(document.getElementById('applyPhysicalStateSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('applyPhysicalStateSelectTemplateBox').innerHTML = html;
});
form.render('select', 'applyPhysicalStateSelectTemplateBox');
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化内容
function initData() {
if(applyWorkTypeId == '' || applyInstitutionId==''){
top.dialog.msg('参数错误');
return;
}
initApplySexSelect();
initApplyDataBirthDate();
initApplyCardTypeSelect();
initApplyCultureLevelSelect();
initApplyPhysicalStateSelect();
initApplyUserCardPhotoUploadFile();
}
initData();
// 提交表单
form.on('submit(submitForm)', function(formData) {
formData.field.applyWorkTypeId = applyWorkTypeId;
formData.field.applyInstitutionId = applyInstitutionId;
top.dialog.confirm(top.dataMessage.commit, function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.post(top.restAjax.path('api/apply/save', []), formData.field, null, function(code, data) {
top.restAjax.post(top.restAjax.path('api/apply/save-relation', []), formData.field, null, function(code, data) {
var layerIndex = top.dialog.msg(top.dataMessage.commitSuccess, {
time: 0,
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],

View File

@ -0,0 +1,295 @@
<!doctype html>
<html lang="en">
<head>
<base href="/signup/">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-anim layui-anim-fadein">
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-body">
<div class="test-table-reload-btn" style="margin-bottom: 10px;">
<div class="layui-inline">
<input type="text" id="keywords" class="layui-input search-item" placeholder="输入关键字">
</div>
<div class="layui-inline">
<input type="text" id="startTime" class="layui-input search-item" placeholder="开始时间" readonly>
</div>
<div class="layui-inline">
<input type="text" id="endTime" class="layui-input search-item" placeholder="结束时间" readonly>
</div>
<button type="button" id="search" class="layui-btn layui-btn-sm">
<i class="fa fa-lg fa-search"></i> 搜索
</button>
</div>
<table class="layui-hide" id="dataTable" lay-filter="dataTable"></table>
<!-- 表头按钮组 -->
<script type="text/html" id="headerToolBar">
<div class="layui-btn-group">
<button type="button" class="layui-btn layui-btn-sm" lay-event="saveEvent">
<i class="fa fa-lg fa-plus"></i> 新增
</button>
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" lay-event="updateEvent">
<i class="fa fa-lg fa-edit"></i> 编辑
</button>
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm" lay-event="removeEvent">
<i class="fa fa-lg fa-trash"></i> 删除
</button>
</div>
</script>
</div>
</div>
</div>
</div>
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'table', 'laydate', 'common'], function() {
var $ = layui.$;
var $win = $(window);
var table = layui.table;
var admin = layui.admin;
var laydate = layui.laydate;
var common = layui.common;
var resizeTimeout = null;
var tableUrl = 'api/lessons/listpage';
var projectCatalogId = top.restAjax.params(window.location.href).projectCatalogId;
var projectCatalogName = top.restAjax.params(window.location.href).parentName;
var orgInfo = {};
function initData(){
initDate();
getOrgInfo()
}
initData();
function getOrgInfo(){
top.restAjax.get(top.restAjax.path('api/teacher/getorginfo', []), {}, null, function (code, data) {
orgInfo = data;
initTable();
}, function (code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化表格
function initTable() {
table.render({
elem: '#dataTable',
id: 'dataTable',
url: top.restAjax.path(tableUrl + '?projectCatalogId={projectCatalogId}', [projectCatalogId]),
width: admin.screen() > 1 ? '100%' : '',
height: $win.height() - 60,
limit: 20,
limits: [20, 40, 60, 80, 100, 200],
toolbar: '#headerToolBar',
request: {
pageName: 'page',
limitName: 'rows'
},
where : {
orgId : orgInfo.institutionId
},
cols: [
[
{type:'checkbox', fixed: 'left'},
{field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
{field: 'lessonName', width: 260, title: '课程名称', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'projectCatalogName', width: 200, title: '培训项目', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'lessonType', width: 180, title: '课程类型', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(rowData == '1'){
return '必修';
}
if(rowData == '2'){
return '选修';
}
return '-';
}
},
{field: 'teachWay', width: 180, title: '授课方式', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(rowData == '1'){
return '面授';
}
return '-';
}
},
]
],
page: true,
parseData: function(data) {
return {
'code': 0,
'msg': '',
'count': data.total,
'data': data.rows
};
}
});
}
// 重载表格
function reloadTable(currentPage) {
table.reload('dataTable', {
url: top.restAjax.path(tableUrl, []),
where: {
keywords: $('#keywords').val(),
startTime: $('#startTime').val(),
endTime: $('#endTime').val(),
projectCatalogId : projectCatalogId,
orgId : orgInfo.institutionId
},
page: {
curr: currentPage
},
height: $win.height() - 60,
});
}
// 初始化日期
function initDate() {
// 日期选择
laydate.render({
elem: '#startTime',
format: 'yyyy-MM-dd'
});
laydate.render({
elem: '#endTime',
format: 'yyyy-MM-dd'
});
}
// 删除
function removeData(ids) {
top.dialog.msg(top.dataMessage.delete, {
time: 0,
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
shade: 0.3,
yes: function (index) {
top.dialog.close(index);
var layIndex;
top.restAjax.delete(top.restAjax.path('api/lessons/remove/{ids}', [ids]), {}, null, function (code, data) {
top.dialog.msg(top.dataMessage.deleteSuccess, {time: 1000});
reloadTable();
}, function (code, data) {
top.dialog.msg(data.msg);
}, function () {
layIndex = top.dialog.msg(top.dataMessage.deleting, {icon: 16, time: 0, shade: 0.3});
}, function () {
top.dialog.close(layIndex);
});
}
});
}
// 事件 - 页面变化
$win.on('resize', function() {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(function() {
reloadTable();
}, 500);
});
// 事件 - 搜索
$(document).on('click', '#search', function() {
reloadTable(1);
});
// 事件 - 增删改
table.on('toolbar(dataTable)', function(obj) {
var layEvent = obj.event;
var checkStatus = table.checkStatus('dataTable');
var checkDatas = checkStatus.data;
if(layEvent === 'saveEvent') {
if(typeof (orgInfo.institutionId) === 'undefined'
|| orgInfo.institutionId == ''){
layer.msg('当前用户未绑定机构信息');
return;
}
if(typeof (projectCatalogId) === 'undefined'
|| projectCatalogId === ''){
layer.msg('请先在左侧选择培训项目');
return;
}
layer.open({
type: 2,
title: false,
closeBtn: 0,
area: ['100%', '100%'],
shadeClose: true,
anim: 2,
content: top.restAjax.path('route/lessons/save.html' +
'?projectCatalogId={projectCatalogId}&projectCatalogName={projectCatalogName}' +
'&orgId={orgId}',
[projectCatalogId,projectCatalogName,orgInfo.institutionId]),
end: function() {
reloadTable();
}
});
} else if(layEvent === 'updateEvent') {
if(checkDatas.length === 0) {
top.dialog.msg(top.dataMessage.table.selectEdit);
} else if(checkDatas.length > 1) {
top.dialog.msg(top.dataMessage.table.selectOneEdit);
} else {
layer.open({
type: 2,
title: false,
closeBtn: 0,
area: ['100%', '100%'],
shadeClose: true,
anim: 2,
content: top.restAjax.path('route/lessons/update.html?lessonsId={lessonsId}&projectCatalogName={projectCatalogName}',
[checkDatas[0].lessonId,checkDatas[0].projectCatalogName]),
end: function() {
reloadTable();
}
});
}
} else if(layEvent === 'removeEvent') {
if(checkDatas.length === 0) {
top.dialog.msg(top.dataMessage.table.selectDelete);
} else {
var ids = '';
for(var i = 0, item; item = checkDatas[i++];) {
if(i > 1) {
ids += '_';
}
ids += item['lessonId'];
}
removeData(ids);
}
}
});
});
</script>
</body>
</html>

View File

@ -0,0 +1,154 @@
<!doctype html>
<html lang="en">
<head>
<base href="/signup/">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
<link rel="stylesheet" href="assets/js/vendor/zTree3/css/metroStyle/metroStyle.css"/>
<link rel="stylesheet" href="assets/layuiadmin/style/common.css" media="all">
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein">
<div class="layui-row">
<div class="layui-row layui-col-space15">
<div class="layui-col-md2 layui-col-sm2 layui-col-xs2">
<div class="layui-card">
<div class="layui-card-body left-tree-wrap">
<div id="leftTreeWrap">
<ul id="leftTree" class="ztree"></ul>
</div>
</div>
</div>
</div>
<div class="layui-col-md10 layui-col-sm10 layui-col-xs10">
<div class="layui-card">
<div id="listContentWrap" class="layui-card-body">
<blockquote id="treeTitle" class="layui-elem-quote">所有机构</blockquote>
<iframe id="listContent" frameborder="0" class="layadmin-iframe" style="margin-top: 65px;"></iframe>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script>
var common;
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'ztree', 'common'], function() {
common = layui.common;
var $ = layui.$;
var $win = $(window);
var resizeTimeout = null;
var parentId = '0';
var parentName = '';
var orgInfo = {};
var orgId = orgInfo.institutionId;
function initData(){
initSize();
getOrgInfo();
}
initData();
// 初始化大小
function initSize() {
$('#leftTreeWrap').css({
height: $win.height() - 40,
overflow: 'auto'
});
$('#listContentWrap').css({
height: $win.height() - 120,
});
}
function getOrgInfo(){
top.restAjax.get(top.restAjax.path('api/teacher/getorginfo', []), {}, null, function (code, data) {
orgInfo = data;
initThree();
$('#listContent').attr('src', top.restAjax.path('route/classplan/list-signup.html?orgId={arg1}&workerCatalog={arg2}',
[orgId,'']));
}, function (code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化树
function initThree() {
var setting = {
async: {
enable: true,
autoLoad: false,
type: 'get',
url: top.restAjax.path('api/worktype/listztree', []),
autoParam: ['id'],
otherParam: {
id : function () {
return parentId;
}
},
dataFilter: function (treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i = 0, l = childNodes.length; i < l; i++) {
childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
}
return childNodes;
}
},
callback: {
onClick: function (event, treeId, treeNode) {
if(treeNode.pId == '-1'){
$('#treeTitle').text('所有机构');
$('#listContent').attr('src', top.restAjax.path('route/classplan/list-signup.html?orgId={arg1}&workerCatalog={arg2}',
[orgId,'']));
return;
}
if(treeNode.isParent == true){
return;
}
parentId = treeNode.id;
parentName = treeNode.name;
$('#treeTitle').text(parentName);
initIFrame();
return false;
}
},
};
var zTree = $.fn.zTree.init($("#leftTree"), setting);
zTree.addNodes(null, {
id: '0',
pId: '-1',
name: '所有工种类型',
url: 'javascript:;',
isParent: 'true'
});
common.refreshTree('leftTree');
}
// 初始化IFrame
function initIFrame() {
$('#listContent').attr('src', top.restAjax.path('route/classplan/list-signup.html?orgId={arg1}&workerCatalog={arg2}',
[orgId,parentId]));
}
// 事件 - 页面变化
$win.on('resize', function() {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(function() {
initSize();
}, 500);
});
});
</script>
</body>
</html>

View File

@ -31,7 +31,7 @@
<button type="button" id="search" class="layui-btn layui-btn-sm">
<i class="fa fa-lg fa-search"></i> 搜索
</button>
<button type="button" id="add-apply-user" class="layui-btn layui-btn-sm layui-btn-normal">
<button type="button" id="add-apply-user" class="layui-btn layui-btn-sm layui-btn-normal" style="display: none;">
<i class="fa fa-lg fa-plus"></i> 填加人员
</button>
</div>
@ -64,6 +64,7 @@
if(reportType == '2'){
tableUrl = 'api/applystudents/listpage';
} else{
$('#add-apply-user').show();
tableUrl = 'api/apply/listpage';
}
@ -81,7 +82,6 @@
where :{
applyInstitutionId: orgId,
applyWorkTypeId : workerCatalog,
applyWorkTypeId : workerCatalog,
applyClassId : reportType == "2" ? classPlanId : ''
},
toolbar: false,
@ -149,8 +149,10 @@
keywords: $('#keywords').val(),
startTime: $('#startTime').val(),
endTime: $('#endTime').val(),
applyInstitutionId: orgId,
applyWorkTypeId : workerCatalog,
applyClassId : reportType == "2" ? classPlanId : '',
applyAuditStates:$('#applyAuditStates').val(),
applyClassId : classPlanId
},
page: {
curr: currentPage

View File

@ -19,7 +19,7 @@
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-row layui-col-space10">
<div class="layui-col-md4">
<div class="layui-col-md4 layui-col-xs4">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #d7dee2">
已报人员数量
@ -27,7 +27,7 @@
</div>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-col-md4 layui-col-xs4">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #d7dee2">
已审人员数量
@ -35,7 +35,7 @@
</div>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-col-md4 layui-col-xs4">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #d7dee2">
<span id="totalSignUpUser">总计人数</span>

View File

@ -443,7 +443,7 @@
shade: 0.3,
yes: function(index) {
top.dialog.close(index);
window.location.reload();
closeBox();
},
btn2: function() {
closeBox();

View File

@ -17,7 +17,7 @@
<div class="layui-card-header">
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
<a class="close" href="javascript:void(0);">上级列表</a><span lay-separator="">/</span>
<a href="javascript:void(0);"><cite>分配考场与考试时间</cite></a>
<a href="javascript:void(0);"><cite>查看考场分配与考试时间</cite></a>
</span>
</div>
<div class="layui-card-body" style="padding: 15px;">
@ -199,10 +199,11 @@
success: function (orgData) {
// 回显 , 选中
for (var a = 0; a < orgData.length; a++) {
console.log(dataForm);
for (var j = 0; j < dataForm.distributionFieldList.length; j++) {
if (orgData[a].organizationId == dataForm.distributionFieldList[j].fieldId) {
orgData[a].checked = 'checked="checked"';
if(dataForm) {
for (var j = 0; j < dataForm.distributionFieldList.length; j++) {
if (orgData[a].organizationId == dataForm.distributionFieldList[j].fieldId) {
orgData[a].checked = 'checked="checked"';
}
}
}
}

View File

@ -17,7 +17,7 @@
<div class="layui-card-header">
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
<a class="close" href="javascript:void(0);">上级列表</a><span lay-separator="">/</span>
<a href="javascript:void(0);"><cite>查看考场分配与考试时间</cite></a>
<a href="javascript:void(0);"><cite>分配考场与考试时间</cite></a>
</span>
</div>
<div class="layui-card-body" style="padding: 15px;">