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

This commit is contained in:
Renpc-kilig 2021-06-03 19:06:11 +08:00
commit 37d9a4ef5d
13 changed files with 1880 additions and 36 deletions

View File

@ -160,8 +160,8 @@ public class ClassPlanController extends DefaultBaseController {
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("update-exam-recommit/{classPlanId}")
public SuccessResult updateExamRecommit(@PathVariable("classPlanId") String classPlanId) {
classPlanService.updateExamRecommit(classPlanId);
public SuccessResult updateExamRecommit(@PathVariable("classPlanId") String classPlanId,@RequestBody ClassPlanVO classPlanVO) {
classPlanService.updateExamRecommit(classPlanId, classPlanVO);
return new SuccessResult();
}

View File

@ -1,8 +1,11 @@
package cn.com.tenlion.controller.api.traininginstitutionuser;
import cn.com.tenlion.institutionmanagement.pojo.dtos.institution.InstitutionDTO;
import com.alibaba.fastjson.JSONObject;
import ink.wgink.annotation.CheckRequestBodyAnnotation;
import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.common.component.SecurityComponent;
import ink.wgink.exceptions.ParamsException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.ErrorResult;
@ -13,6 +16,7 @@ import cn.com.tenlion.pojo.dtos.traininginstitutionuser.TrainingInstitutionUserD
import cn.com.tenlion.pojo.vos.traininginstitutionuser.TrainingInstitutionUserVO;
import cn.com.tenlion.service.traininginstitutionuser.ITrainingInstitutionUserService;
import io.swagger.annotations.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -34,6 +38,25 @@ public class TrainingInstitutionUserController extends DefaultBaseController {
@Autowired
private ITrainingInstitutionUserService trainingInstitutionUserService;
@Autowired
protected SecurityComponent securityComponent;
@ApiOperation(value = "获取当前登录人的培训机构详情", notes = "获取当前登录人的培训机构详情接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("get-now-institution")
public InstitutionDTO getNowInstitution(){
String userId = securityComponent.getCurrentUser().getUserId();
if(StringUtils.isBlank(userId)){
throw new ParamsException("请重新登录");
}
return trainingInstitutionUserService.getByUserId(userId);
}

View File

@ -149,4 +149,22 @@ public interface IClassPlanDao {
*/
Map<String, Object> countPlanType(Map<String, Object> params);
/**
* 保存考试申请图片和PDF
* @param params
*/
void saveExamFile(Map<String, Object> params);
/**
* 查询考试申请图片和PDF
* @param params
* @return
*/
Map<String, Object> getExamFile(Map<String, Object> params);
/**
* 更新考试申请图片和PDF
* @param params
*/
void updateExamFile(Map<String, Object> params);
}

View File

@ -81,6 +81,10 @@ public class ClassPlanDTO {
private String planImages;
@ApiModelProperty(name = "planPDF", value = "开班申请PDF")
private String planPDF;
@ApiModelProperty(name = "examImages", value = "考试申请图片")
private String examImages;
@ApiModelProperty(name = "examPDF", value = "考试申请PDF")
private String examPDF;
public String getPlanNumber() {
@ -309,4 +313,20 @@ public class ClassPlanDTO {
public void setPlanPDF(String planPDF) {
this.planPDF = planPDF;
}
public String getExamImages() {
return examImages == null ? "" : examImages;
}
public void setExamImages(String examImages) {
this.examImages = examImages;
}
public String getExamPDF() {
return examPDF == null ? "" : examPDF;
}
public void setExamPDF(String examPDF) {
this.examPDF = examPDF;
}
}

View File

@ -58,6 +58,10 @@ public class ClassPlanVO {
private String planImages;
@ApiModelProperty(name = "planPDF", value = "开班申请PDF")
private String planPDF;
@ApiModelProperty(name = "examImages", value = "考试申请图片")
private String examImages;
@ApiModelProperty(name = "examPDF", value = "考试申请PDF")
private String examPDF;
public String getPlanNumber() {
return planNumber == null ? "" : planNumber.trim();
@ -234,4 +238,21 @@ public class ClassPlanVO {
public void setPlanPDF(String planPDF) {
this.planPDF = planPDF;
}
public String getExamImages() {
return examImages == null ? "" : examImages;
}
public void setExamImages(String examImages) {
this.examImages = examImages;
}
public String getExamPDF() {
return examPDF == null ? "" : examPDF;
}
public void setExamPDF(String examPDF) {
this.examPDF = examPDF;
}
}

View File

@ -275,6 +275,7 @@ public interface IClassPlanService {
/**
* 重新提交考试申请
* @param classPlanId
* @param classPlanVO
*/
void updateExamRecommit(String classPlanId);
void updateExamRecommit(String classPlanId, ClassPlanVO classPlanVO);
}

View File

@ -421,6 +421,24 @@ public class ClassPlanServiceImpl extends DefaultBaseService implements IClassPl
// 查询当前计划下所有课程和讲师绑定信息
List<Map<String, Object>> classPlanLessons = classPlanDao.listClassPlanLessons(classPlanId);
dto.setClassPlanLessons(classPlanLessons);
// 查询考试申请图片及PDF
Map<String, Object> examFile = classPlanDao.getExamFile(params);
if(examFile != null && examFile.size() > 0){
dto.setExamImages(examFile.get("examImages").toString());
dto.setExamPDF(examFile.get("examPDF").toString());
}
//查询考试申请状态
params.clear();
params.put("examId",classPlanId);
ExamApplyDTO examApplyDTO = examApplyService.get(params);
if(null == examApplyDTO){
// 未提交考试申请
dto.setExamType("");
} else {
// 0待审核 1审核通过 2退回
dto.setExamType(examApplyDTO.getCheckStatus() + "");
dto.setExamReason(examApplyDTO.getReason());
}
return dto;
}
@ -598,13 +616,22 @@ public class ClassPlanServiceImpl extends DefaultBaseService implements IClassPl
examApplyVO.setOrgId(classPlanDTO.getOrgId());
examApplyVO.setPlanName(classPlanDTO.getPlanName());
examApplyService.save(examApplyVO);
Map<String, Object> params = new HashMap<>(8);
params.put("classPlanId",classPlanId);
params.put("examImages",classPlanVO.getExamImages());
params.put("examPDF",classPlanVO.getExamPDF());
classPlanDao.saveExamFile(params);
}
@Override
public void updateExamRecommit(String classPlanId) {
public void updateExamRecommit(String classPlanId, ClassPlanVO classPlanVO) {
ExamApplyVO examApplyVO = new ExamApplyVO();
examApplyVO.setCheckStatus(0);
examApplyService.updateStatus(classPlanId,examApplyVO);
// 更新考试申请图片和PDF信息
Map<String, Object> params = HashMapUtil.beanToMap(classPlanVO);
params.put("classPlanId", classPlanId);
classPlanDao.updateExamFile(params);
}
@Override

View File

@ -478,4 +478,31 @@
class_plan_id = #{classPlanId}
</update>
<insert id="saveExamFile" parameterType="map">
INSERT INTO e_class_plan_exam_file
(class_plan_id, exam_images, exam_pdf)
VALUES
(#{classPlanId}, #{examImages}, #{examPDF})
</insert>
<select id="getExamFile" parameterType="map" resultType="map">
SELECT
class_plan_id classPlanId,
exam_images examImages,
exam_pdf examPDF
FROM
e_class_plan_exam_file
WHERE
class_plan_id = #{classPlanId}
limit 1
</select>
<update id="updateExamFile" parameterType="map">
UPDATE e_class_plan_exam_file SET
exam_images = #{examImages},
exam_pdf = #{examPDF}
WHERE
class_plan_id = #{classPlanId}
</update>
</mapper>

View File

@ -137,7 +137,7 @@
return dom;
}
if(row['reportType'] === '2' && row['examType'] === '0'){
dom += '<a type="button" class="layui-btn layui-btn-info layui-btn-xs" lay-event="showEvent">查看详情</a>';
dom += '<a type="button" class="layui-btn layui-btn-warm layui-btn-xs" lay-event="showExamCommitEvent">考试申请信息</a>';
return dom;
}
if(row['reportType'] === '2' && row['examType'] === '1'){
@ -145,7 +145,6 @@
return dom;
}
if(row['reportType'] === '2' && row['examType'] === '2'){
dom += '<a type="button" class="layui-btn layui-btn-info layui-btn-xs" lay-event="showReasonEvent">查看原因</a>';
dom += '<a type="button" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="reExamEvent">重新申考</a>';
return dom;
}
@ -155,7 +154,7 @@
return dom;
}
},
{field: 'planNumber', width: 190, title: '班号', align:'center',
{field: 'planNumber', width: 190, title: '班号', align:'left',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
@ -164,7 +163,7 @@
return rowData;
}
},
{field: 'planName', width: 180, title: '班级名称', align:'center',
{field: 'planName', width: 180, title: '班级名称', align:'left',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
@ -308,39 +307,33 @@
shade: 0.3,
yes: function (index) {
top.dialog.close(index);
var layIndex;
top.restAjax.put(top.restAjax.path('api/classplan/update-exam/{classPlanId}', [obj.data.classPlanId]), {reportType: '1'}, null, function (code, data) {
top.dialog.msg('提交成功', {time: 1000});
layer.open({
type: 2,
title: '提交 【' + obj.data.workerCatalogName + '】 考试申请',
closeBtn: 1,
area: ['70%', '70%'],
shadeClose: false,
anim: 2,
content: top.restAjax.path('route/classplan/save-exam-commit.html?classPlanId={classPlanId}', [obj.data.classPlanId]),
end: function () {
reloadTable();
}, function (code, data) {
top.dialog.msg(data.msg);
}, function () {
layIndex = top.dialog.msg('提交中', {icon: 16, time: 0, shade: 0.3});
}, function () {
top.dialog.close(layIndex);
}
});
}
});
return;
}
if(layEvent == 'reExamEvent'){
top.dialog.msg('重新提交考试申请?', {
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.put(top.restAjax.path('api/classplan/update-exam-recommit/{classPlanId}', [obj.data.classPlanId]), {reportType: '1'}, null, function (code, data) {
top.dialog.msg('提交成功', {time: 1000});
layer.open({
type: 2,
title: '重新提交 【' + obj.data.workerCatalogName + '】 考试申请',
closeBtn: 1,
area: ['70%', '70%'],
shadeClose: false,
anim: 2,
content: top.restAjax.path('route/classplan/update-exam-commit.html?classPlanId={classPlanId}', [obj.data.classPlanId]),
end: function () {
reloadTable();
}, function (code, data) {
top.dialog.msg(data.msg);
}, function () {
layIndex = top.dialog.msg('提交中', {icon: 16, time: 0, shade: 0.3});
}, function () {
top.dialog.close(layIndex);
});
}
});
return;
@ -359,6 +352,20 @@
}
});
}
if(layEvent == 'showExamCommitEvent') {
layer.open({
type: 2,
title: '查看 【' + obj.data.workerCatalogName + '】 考试申请',
closeBtn: 1,
area: ['90%', '90%'],
shadeClose: false,
anim: 2,
content: top.restAjax.path('route/classplan/show-exam-commit.html?classPlanId={classPlanId}', [obj.data.classPlanId]),
end: function () {
reloadTable();
}
});
}
if(layEvent == 'showReasonEvent') {
var reason = obj.data.examReason == '' ? '未填写原因' : obj.data.examReason;
layer.open({

View File

@ -0,0 +1,297 @@
<!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" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
</head>
<body>
<div class="layui-anim layui-anim-fadein">
<div class="layui-card">
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">上传考试申请图片</label>
<div class="layui-input-block">
<input type="hidden" id="examImages" name="examImages">
<div class="layui-btn-container" id="examImagesFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="examImagesFileDownload" type="text/html">
{{# var fileName = 'examImages'; }}
{{# 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="examImagesRemoveFile">
<i class="fa fa-trash-o"></i>
</a>
</div>
{{# } }}
{{# } }}
<div class="upload-image-box" style="width: auto; height: auto; padding: 5px;">
<a href="javascript:void(0);" lay-form-button data-explain="考试申请图片" data-name="examImages" lay-filter="examImagesUploadFile">
<i class="fa fa-plus-square-o" style="font-size: 70px;"></i>
</a>
</div>
</script>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">上传考试申请PDF</label>
<div class="layui-input-block">
<input type="hidden" id="examPDF" name="examPDF">
<div class="layui-btn-container" id="examPDFFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="examPDFFileDownload" type="text/html">
{{# var fileName = 'examPDF'; }}
{{# 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="assets/images/pdf_icon.jpg" title="{{item.fileName}}" data-id="{{item.fileId}}" align="加载失败" class="pdf-open-show">
</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="examPDFRemoveFile">
<i class="fa fa-trash-o"></i>
</a>
</div>
{{# } }}
{{# } }}
<div class="upload-image-box" style="width: auto; height: auto; padding: 5px;">
<a href="javascript:void(0);" lay-form-button data-explain="PDF" data-name="examPDF" lay-filter="examPDFUploadFile">
<i class="fa fa-plus-square-o" style="font-size: 70px;"></i>
</a>
</div>
</script>
</div>
</div>
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;z-index: 10">
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交申请</button>
<button type="button" class="layui-btn layui-btn-primary close">返回列表</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'table', 'form', 'laydate', 'laytpl'], function(){
var $ = layui.$;
var $win = $(window);
var table = layui.table;
var form = layui.form;
var admin = layui.admin;
var laytpl = layui.laytpl;
var laydate = layui.laydate;
var classPlanId = top.restAjax.params(window.location.href).classPlanId;
var examImagesViewerObj = {};
// 初始化内容
function initData() {
$('.layui-card').height($(window).height());
initExamImagesUploadFile();
initExamPDFUploadFile();
}
initData();
// 初始化图片上传
function initExamImagesUploadFile() {
var files = $('#examImages').val();
initFileList('examImages', files, function(fileName) {
var viewer = new Viewer(document.getElementById(fileName +'FileBox'), {navbar: false});
examImagesViewerObj[fileName] = viewer;
});
form.on('button(examImagesUploadFile)', 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) {
examImagesViewerObj[fileName].update();
});
}
}
});
});
form.on('button(examImagesRemoveFile)', 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) {
examImagesViewerObj[fileName].update();
});
});
}
// 初始化PDF上传
function initExamPDFUploadFile() {
var files = $('#examPDF').val();
initFileList('examPDF', files, function(fileName) {
$(document).on('click', '.pdf-open-show', function(obj){
var fileId = this.dataset.id;
window.open('route/file/download/true/' + fileId);
})
});
form.on('button(examPDFUploadFile)', function(obj) {
var name = this.dataset.name;
var explain = this.dataset.explain;
top.dialog.file({
type: 'file',
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) {
});
}
}
});
});
form.on('button(examPDFRemoveFile)', 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) {
});
});
}
function refreshDownloadTemplet(fileName, file) {
var dataRander = {};
dataRander[fileName] = file;
laytpl(document.getElementById(fileName +'FileDownload').innerHTML).render(dataRander, function(html) {
document.getElementById(fileName +'FileBox').innerHTML = html;
});
}
// 初始化文件列表
function initFileList(fileName, ids, callback) {
var dataForm = {};
dataForm[fileName] = ids;
form.val('dataForm', dataForm);
if(!ids) {
refreshDownloadTemplet(fileName, []);
if(callback) {
callback(fileName, []);
}
return;
}
top.restAjax.get(top.restAjax.path('api/file/list', []), {
ids: ids
}, null, function(code, data) {
refreshDownloadTemplet(fileName, data);
if(callback) {
callback(fileName, data);
}
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
// 提交表单
form.on('submit(submitForm)', function(formData) {
top.dialog.confirm(top.dataMessage.commit, function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/classplan/update-exam/{classPlanId}', [classPlanId]), formData.field, null, function(code, data) {
top.dialog.close(index);
closeBox();
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
});
return false;
});
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
$('.close').on('click', function() {
closeBox();
});
// 校验
form.verify({
});
});
</script>
</body>
</html>

View File

@ -0,0 +1,640 @@
<!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" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
</head>
<body>
<div class="layui-anim layui-anim-fadein">
<div class="layui-card">
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-row">
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>班号</label>
<div class="layui-input-block">
<input type="text" id="planNumber" name="planNumber" class="layui-input" value="" readonly="readonly" maxlength="100">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>班级名称</label>
<div class="layui-input-block">
<input type="text" id="planName" name="planName" class="layui-input" value=""
autocomplete="off" placeholder="请输入班级名称" lay-verify="required" maxlength="255">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md3">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>培训类型</label>
<div class="layui-input-block">
<select id="planType" name="planType" readonly="readonly">
<option value="1">初训</option>
<option value="2">复训</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>培训项目</label>
<div class="layui-input-block">
<input type="hidden" id="projectCatalogId" name="projectCatalogId" value="">
<input type="text" id="projectCatalogName" name="projectCatalogName" class="layui-input" value="" style="cursor: pointer;" lay-verify="required" placeholder="请选择培训项目" readonly="readonly">
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>开始时间</label>
<div class="layui-input-block">
<input type="text" id="planStartTime" name="planStartTime" class="layui-input" value="" placeholder="请选择培训开始时间" readonly style="cursor: pointer;" lay-verify="required">
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>结束时间</label>
<div class="layui-input-block">
<input type="text" id="planEndTime" name="planEndTime" class="layui-input" value="" placeholder="请选择培训结束时间" readonly style="cursor: pointer;" lay-verify="required">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>负责人</label>
<div class="layui-input-block">
<input type="text" id="chargePerson" name="chargePerson" class="layui-input" value=""
autocomplete="off" placeholder="请输入负责人" lay-verify="required" maxlength="50">
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>联系方式</label>
<div class="layui-input-block">
<input type="text" id="chargePersonTel" name="chargePersonTel" class="layui-input" value=""
autocomplete="off" placeholder="请输入联系方式" lay-verify="required" maxlength="255">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">*</span>培训地点</label>
<div class="layui-input-block">
<input type="text" id="planAddress" name="planAddress" class="layui-input" value=""
autocomplete="off" placeholder="请输入培训地点" lay-verify="required" maxlength="255">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">图片文件</label>
<div class="layui-input-block">
<input type="hidden" id="planImages" name="planImages">
<div class="layui-btn-container" id="planImagesFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="planImagesFileDownload" type="text/html">
{{# var fileName = 'planImages'; }}
{{# 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>
</div>
{{# } }}
{{# } }}
</script>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">PDF文件</label>
<div class="layui-input-block">
<input type="hidden" id="planPDF" name="planPDF">
<div class="layui-btn-container" id="planPDFFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="planPDFFileDownload" type="text/html">
{{# var fileName = 'planPDF'; }}
{{# 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="assets/images/pdf_icon.jpg" title="{{item.fileName}}" data-id="{{item.fileId}}" align="加载失败" class="pdf-open-show">
</span>
</div>
{{# } }}
{{# } }}
</script>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<table class="layui-table" id="dataTable" lay-filter="dataTable">
<thead>
<tr>
<th style="width: 50px; text-align: center"><b>确认课程</b></th>
<th style="width: 100px; text-align: center"><b>选择讲师</b></th>
<th style="width: 200px; text-align: center"><b>授课时间</b></th>
<th style="width: 260px; text-align: center"><b>课程名称</b></th>
<th style="width: 100px; text-align: center"><b>课程类型</b></th>
<th style="width: 100px; text-align: center"><b>授课方式</b></th>
</tr>
</thead>
<tbody id="lessonTbodyBox"></tbody>
<script type="text/html" id="lessonTbodyTemplate">
{{# for(var i = 0, item; item = d.lesson[i++];) { }}
<tr id="lesson-{{item.lessonId}}" data-lesson-id="{{item.lessonId}}">
<td style="text-align: center">
<input data-lesson-id="{{item.lessonId}}" type="checkbox" name="lessonCheckBox" lay-skin="primary" lay-filter="lessonCheckBox" disabled>
</td>
<td style="text-align: center">
<select id="select-{{item.lessonId}}">
<option value="">请选择</option>
{{# for(var j = 0, teacher; teacher = d.teacher[j++];) { }}
<option value="{{teacher.teacherId}}">{{teacher.teacherName}}</option>
{{# } }}
</select>
</td>
<td>
<div class="test-table-reload-btn">
<div class="layui-inline">
<input type="text" id="date-start-{{item.lessonId}}" value="" class="layui-input search-item lessons-date"
style="width: 150px" placeholder="开始时间" readonly>
</div>
<div class="layui-inline">
<input type="text" id="date-end-{{item.lessonId}}" value="" class="layui-input search-item lessons-date"
style="width: 150px" placeholder="结束时间" readonly>
</div>
</div>
</td>
<td style="text-align: center">
{{item.lessonName}}
</td>
<td style="text-align: center">
{{# if(item.lessonType == '1'){ }}
必修
{{# } }}
{{# if(item.lessonType == '2'){ }}
选修
{{# } }}
</td>
<td style="text-align: center">
{{# if(item.teachWay == '1'){ }}
面授
{{# } }}
</td>
</tr>
{{# } }}
</script>
</table>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">考试申请图片</label>
<div class="layui-input-block">
<input type="hidden" id="examImages" name="examImages">
<div class="layui-btn-container" id="examImagesFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="examImagesFileDownload" type="text/html">
{{# var fileName = 'examImages'; }}
{{# 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>
</div>
{{# } }}
{{# } }}
</script>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">考试申请PDF</label>
<div class="layui-input-block">
<input type="hidden" id="examPDF" name="examPDF">
<div class="layui-btn-container" id="examPDFFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="examPDFFileDownload" type="text/html">
{{# var fileName = 'examPDF'; }}
{{# 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="assets/images/pdf_icon.jpg" title="{{item.fileName}}" data-id="{{item.fileId}}" align="加载失败" class="pdf-open-show">
</span>
</div>
{{# } }}
{{# } }}
</script>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="assets/js/vendor/wangEditor/wangEditor.min.js"></script>
<script src="assets/js/vendor/ckplayer/ckplayer/ckplayer.js"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'table', 'form', 'laydate', 'laytpl'], function(){
var $ = layui.$;
var $win = $(window);
var table = layui.table;
var form = layui.form;
var admin = layui.admin;
var laytpl = layui.laytpl;
var laydate = layui.laydate;
var teacherList = [];
var classPlanLessons = [];
var classPlanId = top.restAjax.params(window.location.href).classPlanId;
var orgId = '';
var planImagesViewerObj = {};
var examImagesViewerObj = {};
// 初始化内容
function initData() {
var loadLayerIndex;
top.restAjax.get(top.restAjax.path('api/classplan/get/{classPlanId}', [classPlanId]), {}, null, function(code, data) {
var dataFormData = {};
for(var i in data) {
dataFormData[i] = data[i] +'';
}
dataFormData['planStartTime'] = dataFormData['planStartTime'].substring(0,10);
dataFormData['planEndTime'] = dataFormData['planEndTime'].substring(0,10);
dataFormData['signUpStartTime'] = dataFormData['signUpStartTime'].substring(0,10);
dataFormData['signUpEndTime'] = dataFormData['signUpEndTime'].substring(0,10);
form.val('dataForm', dataFormData);
form.render(null, 'dataForm');
if(dataFormData['reportReason'] = ''){
$('#report-reason-block').show();
}
//初始化课程列表
initTeacherList(data.orgId);
classPlanLessons = data.classPlanLessons;
orgId = data.orgId;
initPlanImagesUploadFile();
initPlanPDFUploadFile();
initExamImagesUploadFile();
initExamPDFUploadFile();
setTimeout(function(){
$('.layui-card').height($('.layui-card').height());
},1000);
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
initData();
//查询讲师列表
function initTeacherList(orgId){
top.restAjax.get(top.restAjax.path('api/teacher/list',[]), {orgId : orgId}, null, function(code,data){
teacherList = data;
initLessonsList();
},function(code,data){
top.dialog.msg(data.msg);
});
}
//查询课程列表
function initLessonsList(){
var dataObj = {};
var projectCatalogId = $('#projectCatalogId').val();
if(projectCatalogId == ''){
dataObj['lesson'] = [];
dataObj['teacher'] = [];
laytpl(document.getElementById('lessonTbodyTemplate').innerHTML).render(dataObj, function(html) {
document.getElementById('lessonTbodyBox').innerHTML = html;
});
form.render();
return;
}
top.restAjax.get(top.restAjax.path('api/lessons/list',[]), {projectCatalogId : projectCatalogId, orgId: orgId}, null, function(code,data){
dataObj['lesson'] = data;
dataObj['teacher'] = teacherList;
laytpl(document.getElementById('lessonTbodyTemplate').innerHTML).render(dataObj, function(html) {
document.getElementById('lessonTbodyBox').innerHTML = html;
});
form.render();
reloadLessonsList();
},function(code,data){
top.dialog.msg(data.msg);
});
}
// 初始化图片上传
function initPlanImagesUploadFile() {
var files = $('#planImages').val();
initFileList('planImages', files, function(fileName) {
var viewer = new Viewer(document.getElementById(fileName +'FileBox'), {navbar: false});
planImagesViewerObj[fileName] = viewer;
});
form.on('button(planImagesUploadFile)', 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) {
planImagesViewerObj[fileName].update();
});
}
}
});
});
form.on('button(planImagesRemoveFile)', 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) {
planImagesViewerObj[fileName].update();
});
});
}
// 初始化PDF上传
function initPlanPDFUploadFile() {
var files = $('#planPDF').val();
initFileList('planPDF', files, function(fileName) {
$(document).on('click', '.pdf-open-show', function(obj){
var fileId = this.dataset.id;
window.open('route/file/download/true/' + fileId);
})
});
form.on('button(planPDFUploadFile)', function(obj) {
var name = this.dataset.name;
var explain = this.dataset.explain;
top.dialog.file({
type: 'file',
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) {
});
}
}
});
});
form.on('button(planPDFRemoveFile)', 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) {
});
});
}
// 初始化图片上传
function initExamImagesUploadFile() {
var files = $('#examImages').val();
initFileList('examImages', files, function(fileName) {
var viewer = new Viewer(document.getElementById(fileName +'FileBox'), {navbar: false});
examImagesViewerObj[fileName] = viewer;
});
form.on('button(examImagesUploadFile)', 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) {
examImagesViewerObj[fileName].update();
});
}
}
});
});
form.on('button(examImagesRemoveFile)', 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) {
examImagesViewerObj[fileName].update();
});
});
}
// 初始化PDF上传
function initExamPDFUploadFile() {
var files = $('#examPDF').val();
initFileList('examPDF', files, function(fileName) {
$(document).on('click', '.pdf-open-show', function(obj){
var fileId = this.dataset.id;
window.open('route/file/download/true/' + fileId);
})
});
form.on('button(examPDFUploadFile)', function(obj) {
var name = this.dataset.name;
var explain = this.dataset.explain;
top.dialog.file({
type: 'file',
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) {
});
}
}
});
});
form.on('button(examPDFRemoveFile)', 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) {
});
});
}
function reloadLessonsList(){
if(typeof (classPlanLessons) != 'undefined' && classPlanLessons.length > 0)
$.each(classPlanLessons,function(i,e){
var checkBox = $('#lesson-' + e.lessonId).find('input[name="lessonCheckBox"]').get(0);
$(checkBox).attr('checked', 'checked');
$('#select-' + e.lessonId).val(e.teacherId);
$('#select-' + e.lessonId).attr("disabled","disabled");
$('#date-start-' + e.lessonId).val(e.lessonStart);
$('#date-end-' + e.lessonId).val(e.lessonEnd);
});
form.render();
}
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
function refreshDownloadTemplet(fileName, file) {
var dataRander = {};
dataRander[fileName] = file;
laytpl(document.getElementById(fileName +'FileDownload').innerHTML).render(dataRander, function(html) {
document.getElementById(fileName +'FileBox').innerHTML = html;
});
}
// 初始化文件列表
function initFileList(fileName, ids, callback) {
var dataForm = {};
dataForm[fileName] = ids;
form.val('dataForm', dataForm);
if(!ids) {
refreshDownloadTemplet(fileName, []);
if(callback) {
callback(fileName, []);
}
return;
}
top.restAjax.get(top.restAjax.path('api/file/list', []), {
ids: ids
}, null, function(code, data) {
refreshDownloadTemplet(fileName, data);
if(callback) {
callback(fileName, data);
}
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
$('.close').on('click', function() {
closeBox();
});
// 校验
form.verify({
});
});
</script>
</body>
</html>

View File

@ -0,0 +1,319 @@
<!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" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
</head>
<body>
<div class="layui-anim layui-anim-fadein">
<div class="layui-card">
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<blockquote id="exam-reason-block" class="layui-elem-quote" style="border-left: 5px solid #cc0200;display: none;"></blockquote>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">上传考试申请图片</label>
<div class="layui-input-block">
<input type="hidden" id="examImages" name="examImages">
<div class="layui-btn-container" id="examImagesFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="examImagesFileDownload" type="text/html">
{{# var fileName = 'examImages'; }}
{{# 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="examImagesRemoveFile">
<i class="fa fa-trash-o"></i>
</a>
</div>
{{# } }}
{{# } }}
<div class="upload-image-box" style="width: auto; height: auto; padding: 5px;">
<a href="javascript:void(0);" lay-form-button data-explain="考试申请图片" data-name="examImages" lay-filter="examImagesUploadFile">
<i class="fa fa-plus-square-o" style="font-size: 70px;"></i>
</a>
</div>
</script>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">上传考试申请PDF</label>
<div class="layui-input-block">
<input type="hidden" id="examPDF" name="examPDF">
<div class="layui-btn-container" id="examPDFFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="examPDFFileDownload" type="text/html">
{{# var fileName = 'examPDF'; }}
{{# 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="assets/images/pdf_icon.jpg" title="{{item.fileName}}" data-id="{{item.fileId}}" align="加载失败" class="pdf-open-show">
</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="examPDFRemoveFile">
<i class="fa fa-trash-o"></i>
</a>
</div>
{{# } }}
{{# } }}
<div class="upload-image-box" style="width: auto; height: auto; padding: 5px;">
<a href="javascript:void(0);" lay-form-button data-explain="PDF" data-name="examPDF" lay-filter="examPDFUploadFile">
<i class="fa fa-plus-square-o" style="font-size: 70px;"></i>
</a>
</div>
</script>
</div>
</div>
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;z-index: 10">
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">重新申请</button>
<button type="button" class="layui-btn layui-btn-primary close">返回列表</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'table', 'form', 'laydate', 'laytpl'], function(){
var $ = layui.$;
var $win = $(window);
var table = layui.table;
var form = layui.form;
var admin = layui.admin;
var laytpl = layui.laytpl;
var laydate = layui.laydate;
var classPlanId = top.restAjax.params(window.location.href).classPlanId;
var examImagesViewerObj = {};
// 初始化内容
function initData() {
var loadLayerIndex;
top.restAjax.get(top.restAjax.path('api/classplan/get/{classPlanId}', [classPlanId]), {}, null, function(code, data) {
var dataFormData = {};
for(var i in data) {
dataFormData[i] = data[i] +'';
}
form.val('dataForm', dataFormData);
form.render(null, 'dataForm');
if(dataFormData['examReason'] != ''){
$('#exam-reason-block').html('退回原因: ' + data['examReason']);
$('#exam-reason-block').show();
}
initExamImagesUploadFile();
initExamPDFUploadFile();
setTimeout(function(){
$('.layui-card').height($('.layui-card').height());
},1000);
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
initData();
// 初始化图片上传
function initExamImagesUploadFile() {
var files = $('#examImages').val();
initFileList('examImages', files, function(fileName) {
var viewer = new Viewer(document.getElementById(fileName +'FileBox'), {navbar: false});
examImagesViewerObj[fileName] = viewer;
});
form.on('button(examImagesUploadFile)', 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) {
examImagesViewerObj[fileName].update();
});
}
}
});
});
form.on('button(examImagesRemoveFile)', 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) {
examImagesViewerObj[fileName].update();
});
});
}
// 初始化PDF上传
function initExamPDFUploadFile() {
var files = $('#examPDF').val();
initFileList('examPDF', files, function(fileName) {
$(document).on('click', '.pdf-open-show', function(obj){
var fileId = this.dataset.id;
window.open('route/file/download/true/' + fileId);
})
});
form.on('button(examPDFUploadFile)', function(obj) {
var name = this.dataset.name;
var explain = this.dataset.explain;
top.dialog.file({
type: 'file',
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) {
});
}
}
});
});
form.on('button(examPDFRemoveFile)', 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) {
});
});
}
function refreshDownloadTemplet(fileName, file) {
var dataRander = {};
dataRander[fileName] = file;
laytpl(document.getElementById(fileName +'FileDownload').innerHTML).render(dataRander, function(html) {
document.getElementById(fileName +'FileBox').innerHTML = html;
});
}
// 初始化文件列表
function initFileList(fileName, ids, callback) {
var dataForm = {};
dataForm[fileName] = ids;
form.val('dataForm', dataForm);
if(!ids) {
refreshDownloadTemplet(fileName, []);
if(callback) {
callback(fileName, []);
}
return;
}
top.restAjax.get(top.restAjax.path('api/file/list', []), {
ids: ids
}, null, function(code, data) {
refreshDownloadTemplet(fileName, data);
if(callback) {
callback(fileName, data);
}
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
// 提交表单
form.on('submit(submitForm)', function(formData) {
top.dialog.confirm(top.dataMessage.commit, function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/classplan/update-exam-recommit/{classPlanId}', [classPlanId]), formData.field, null, function(code, data) {
top.dialog.close(index);
closeBox();
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
});
return false;
});
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
$('.close').on('click', function() {
closeBox();
});
// 校验
form.verify({
});
});
</script>
</body>
</html>

View File

@ -0,0 +1,444 @@
<!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" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein">
<div class="layui-card">
<!--<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>-->
<!--</span>-->
<!--</div>-->
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">机构图片</label>
<div class="layui-input-block">
<input type="hidden" id="institutionImage" name="institutionImage">
<div class="layui-btn-container" id="institutionImageFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="institutionImageFileDownload" type="text/html">
{{# var fileName = 'institutionImage'; }}
{{# 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="institutionImageRemoveFile">
<i class="fa fa-trash-o"></i>
</a>
</div>
{{# } }}
{{# } }}
{{# if(d[fileName].length < 9) { }}
<div class="upload-image-box" style="width: auto; height: auto; padding: 5px;">
<a href="javascript:void(0);" lay-form-button data-explain="机构图片" data-name="institutionImage" lay-filter="institutionImageUploadFile">
<i class="fa fa-plus-square-o" style="font-size: 70px;"></i>
</a>
</div>
{{# } }}
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">机构名称</label>
<div class="layui-input-block">
<input type="text" id="institutionName" name="institutionName" class="layui-input" value="" placeholder="请输入机构名称" maxlength="255" 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="institutionFoundingTime" name="institutionFoundingTime" class="layui-input" value="" placeholder="请选择机构成立时间" readonly style="cursor: pointer;">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">机构描述</label>
<div class="layui-input-block">
<textarea id="institutionDesc" name="institutionDesc" class="layui-textarea" placeholder="请输入机构描述"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">机构负责人</label>
<div class="layui-input-block">
<input type="text" id="institutionPrincipal" name="institutionPrincipal" class="layui-input" value="" placeholder="请输入机构负责人" maxlength="100">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">机构联系方式</label>
<div class="layui-input-block">
<textarea id="institutionContact" name="institutionContact" class="layui-textarea" placeholder="请输入机构联系方式"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">行政区划</label>
<div class="layui-input-inline">
<select name="institutionRegionProvince" id="institutionRegionProvince" lay-filter="institutionRegionProvince">
<option value="">请选择省</option>
</select>
</div>
<div class="layui-input-inline">
<select name="institutionRegionCity" id="institutionRegionCity" lay-filter="institutionRegionCity">
<option value="">请选择市</option>
</select>
</div>
<div class="layui-input-inline">
<select name="institutionRegionArea" id="institutionRegionArea" lay-filter="institutionRegionArea">
<option value="">请选择县</option>
</select>
</div>
<div class="layui-input-inline">
<select name="institutionRegionVillage" id="institutionRegionVillage" lay-filter="institutionRegionVillage">
<option value="">请选择镇</option>
</select>
</div>
<div class="layui-input-inline">
<select name="institutionRegionStreet" id="institutionRegionStreet" lay-filter="institutionRegionStreet">
<option value="">请选择村</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">机构详细地址</label>
<div class="layui-input-block">
<input type="hidden" id="institutionX" name="institutionX" value="" placeholder="请输入机构经度">
<input type="hidden" id="institutionY" name="institutionY" value="" placeholder="请输入机构纬度">
<input type="text" id="institutionAddress" name="institutionAddress" class="layui-input" value="" placeholder="请输入机构地址" maxlength="50">
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12 layui-col-sm12" style="padding: 0 0px;">
<div id="mapContainer" style="width: 100%;height: 350px;"></div>
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">更新信息</button>
<!--<button type="button" class="layui-btn layui-btn-primary close">关闭</button>-->
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=oWU9RD4ihDHAafexgI6XOrTK8lDatRju"></script>
<script src="assets/js/vendor/wangEditor/wangEditor.min.js"></script>
<script src="assets/js/vendor/ckplayer/ckplayer/ckplayer.js"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate', 'laytpl'], function(){
var $ = layui.$;
var form = layui.form;
var laytpl = layui.laytpl;
var laydate = layui.laydate;
var institutionId = "";
var dictId = '0';
var wangEditor = window.wangEditor;
var wangEditorObj = {};
var viewerObj = {};
var institutionType="training"
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
function refreshDownloadTemplet(fileName, file) {
var dataRander = {};
dataRander[fileName] = file;
laytpl(document.getElementById(fileName +'FileDownload').innerHTML).render(dataRander, function(html) {
document.getElementById(fileName +'FileBox').innerHTML = html;
});
}
// 初始化文件列表
function initFileList(fileName, ids, callback) {
var dataForm = {};
dataForm[fileName] = ids;
form.val('dataForm', dataForm);
if(!ids) {
refreshDownloadTemplet(fileName, []);
if(callback) {
callback(fileName, []);
}
return;
}
top.restAjax.get(top.restAjax.path('api/file/list', []), {
ids: ids
}, null, function(code, data) {
refreshDownloadTemplet(fileName, data);
if(callback) {
callback(fileName, data);
}
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
// 初始化视频
function initVideo(fileName, data) {
for(var i = 0, item; item = data[i++];) {
var player = new ckplayer({
container: '#'+ fileName + i,
variable: 'player',
flashplayer: false,
video: {
file: 'route/file/download/true/'+ item.fileId,
type: 'video/mp4'
}
});
}
}
// 初始化机构图片图片上传
function initInstitutionImageUploadFile() {
var files = $('#institutionImage').val();
initFileList('institutionImage', files, function(fileName) {
var viewer = new Viewer(document.getElementById(fileName +'FileBox'), {navbar: false});
viewerObj[fileName] = viewer;
});
form.on('button(institutionImageUploadFile)', 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(institutionImageRemoveFile)', 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();
});
});
}
// 初始化机构成立时间时间戳
function initInstitutionFoundingTimeDateTime(v) {
laydate.render({
elem: '#institutionFoundingTime',
type: 'date',
value: v,
trigger: 'click'
});
}
// 初始化内容
function initData() {
var loadLayerIndex;
top.restAjax.get(top.restAjax.path('api/traininginstitutionuser/get-now-institution', []), {}, null, function(code, data) {
var dataFormData = {};
for(var i in data) {
dataFormData[i] = data[i] +'';
}
form.val('dataForm', dataFormData);
form.render(null, 'dataForm');
initInstitutionImageUploadFile();
initInstitutionFoundingTimeDateTime(data.institutionFoundingTime);
initMap(data.institutionX,data.institutionY);
initDataDict(dictId,'institutionRegionProvince',data.institutionRegionProvince);
initDataDict(data.institutionRegionProvince,'institutionRegionCity',data.institutionRegionCity);
initDataDict(data.institutionRegionCity,'institutionRegionArea',data.institutionRegionArea);
initDataDict(data.institutionRegionArea,'institutionRegionVillage',data.institutionRegionVillage);
initDataDict(data.institutionRegionVillage,'institutionRegionStreet',data.institutionRegionStreet);
institutionId = data.institutionId;
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
initData();
// 提交表单
form.on('submit(submitForm)', function(formData) {
formData.field.institutionType = institutionType;
top.dialog.confirm(top.dataMessage.commit, function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/institution/update/{institutionId}', [institutionId]), formData.field, null, function(code, data) {
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
time: 0,
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
shade: 0.3,
yes: function(index) {
top.dialog.close(index);
window.location.reload();
},
btn2: function() {
closeBox();
}
});
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
});
return false;
});
$('.close').on('click', function() {
closeBox();
});
//初始化百度地图
function initMap(longitude, latitude) {
if (longitude == '' || latitude == ''){
longitude = '109.85017859252311';
latitude = '40.66017700460503';
}
map = new BMap.Map("mapContainer", {enableMapClick: false,});
var point = new BMap.Point(longitude, latitude);
map.centerAndZoom(point, 13);
map.disableDoubleClickZoom();
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.OverviewMapControl());
map.addControl(new BMap.MapTypeControl());
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableContinuousZoom();//开启缩放平滑
// 点击获取地址
var geocoder= new BMap.Geocoder();
mapMarkPoint(map, point);
map.addEventListener("click", function(e) {
map.clearOverlays();
$('#institutionX').val(e.point.lng);
$('#institutionY').val(e.point.lat);
point = new BMap.Point(e.point.lng, e.point.lat);
mapMarkPoint(map, point);
geocoder.getLocation(e.point, function(rs) {
$('#institutionAddress').val(rs.address);
});
});
}
//地图标点
function mapMarkPoint(map, point) {
var marker = new BMap.Marker(point);
map.addOverlay(marker);
}
//c初始化数据字典
function initDataDict(dictId,tabId,selectVelue){
if(!dictId){
return;
}
top.restAjax.get(top.restAjax.path("api/area/listbyparentid/{areaParentId}",[dictId]),{},null,function (code,data,args) {
$("#"+tabId).empty();
var html = '';
if ('institutionRegionProvince' === tabId){
html += '<option value="">请选择省</option>';
}
if ('institutionRegionCity' === tabId){
html += '<option value="">请选择市</option>';
}
if ('institutionRegionArea' === tabId){
html += '<option value="">请选择县</option>';
}
if ('institutionRegionVillage' === tabId){
html += '<option value="">请选择镇</option>';
}
if ('institutionRegionStreet' === tabId){
html += '<option value="">请选择村</option>';
}
$.each(data, function (index, item) {
if(selectVelue == item.areaId){
html += '<option selected value="'+item.areaId+'">'+item.areaName+'</option>';
}else{
html += '<option value="'+item.areaId+'">'+item.areaName+'</option>';
}
});
$("#"+tabId).append(html);
form.render('select');
});
}
//省监听事件
form.on('select(institutionRegionProvince)', function(data){
var v = data.value;
initDataDict(v,'institutionRegionCity');
});
//市监听事件
form.on('select(institutionRegionCity)', function(data){
var v = data.value;
initDataDict(v,'institutionRegionArea');
});
//区监听事件
form.on('select(institutionRegionArea)', function(data){
var v = data.value;
initDataDict(v,'institutionRegionVillage');
});
//镇、村监听事件
form.on('select(institutionRegionVillage)', function(data){
var v = data.value;
initDataDict(v,'institutionRegionStreet');
});
// 校验
form.verify({
});
});
</script>
</body>
</html>