| | |
| | | <style> |
| | | #user-add { |
| | | #video-add { |
| | | padding: 20px 25px 25px 0; |
| | | } |
| | | #user-add .layui-treeSelect .ztree li a, .ztree li span { |
| | | #video-add .layui-treeSelect .ztree li a, .ztree li span { |
| | | margin: 0 0 2px 3px !important; |
| | | } |
| | | #user-add #data-permission-tree-block { |
| | | #video-add #data-permission-tree-block { |
| | | border: 1px solid #eee; |
| | | border-radius: 2px; |
| | | padding: 3px 0; |
| | | } |
| | | #user-add .layui-treeSelect .ztree li span.button.switch { |
| | | #video-add .layui-treeSelect .ztree li span.button.switch { |
| | | top: 1px; |
| | | left: 3px; |
| | | } |
| | | #video-add .upload { |
| | | cursor: pointer; |
| | | } |
| | | </style> |
| | | <div class="layui-fluid" id="user-add"> |
| | | <form class="layui-form" action="" lay-filter="user-add-form"> |
| | | <div class="layui-fluid" id="video-add"> |
| | | <form class="layui-form" action="" lay-filter="video-add-form"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">用户名:</label> |
| | | <div class="layui-col-md6"> |
| | | <label class="layui-form-label febs-form-item-require">视频标题:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="title" minlength="2" maxlength="10" lay-verify="range" |
| | | autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md6"> |
| | | <label class="layui-form-label febs-form-item-require">视频分类:</label> |
| | | <div class="layui-input-block" id="video-cate"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">简介:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="username" minlength="2" maxlength="10" lay-verify="range|username" |
| | | autocomplete="off" class="layui-input"> |
| | | <textarea name="intro" autocomplete="off" placeholder="请输入简介" class="layui-textarea"></textarea> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">手机:</label> |
| | | <label class="layui-form-label">缩略图:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="tel" name="mobile" lay-verify="phone" autocomplete="off" class="layui-input"> |
| | | <div class="layui-upload"> |
| | | <button type="button" class="layui-btn" id="thumbUpload">上传图片</button> |
| | | <div class="layui-upload-list"> |
| | | <img class="layui-upload-img" id="thumb" style="width: 150px;"/> |
| | | <input class="layui-input febs-hide" name="thumb" autocomplete="off" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">邮箱:</label> |
| | | <label class="layui-form-label febs-form-item-require">章节:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="email" lay-verify="email" maxlength="50" autocomplete="off" |
| | | class="layui-input"> |
| | | <button class="layui-btn" type="button" id="addItem">新增章节</button> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">角色:</label> |
| | | <label class="layui-form-label"></label> |
| | | <div class="layui-input-block"> |
| | | <select name="roleId" |
| | | lay-verify="required" |
| | | xm-select-direction="down" |
| | | xm-select="user-add-role" |
| | | xm-select-skin="default"> |
| | | </select> |
| | | <table class="layui-table"> |
| | | <thead> |
| | | <tr> |
| | | <th>章节标题</th> |
| | | <th>缩略图</th> |
| | | <th>资源名称</th> |
| | | <th>操作</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody id="itemList"> |
| | | </tbody> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">部门:</label> |
| | | <label class="layui-form-label febs-form-item-require">是否免费:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="deptId" id="user-add-dept" class="layui-input"> |
| | | <input type="radio" name="isFree" value="1" title="免费" checked> |
| | | <input type="radio" name="isFree" value="2" title="会员"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">状态:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="status" value="1" title="有效" checked=""> |
| | | <input type="radio" name="status" value="0" title="禁用"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">性别:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="sex" value="0" title="男性"> |
| | | <input type="radio" name="sex" value="1" title="女性"> |
| | | <input type="radio" name="sex" value="2" title="保密" checked=""> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">数据权限:</label> |
| | | <div class="layui-input-block" id="data-permission-tree-block"> |
| | | <div class="data-permission-tree" lay-filter="dataPermissionTree" style="margin-left: 1rem"></div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item layui-form-text"> |
| | | <label class="layui-form-label">备注:</label> |
| | | <div class="layui-input-block"> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item febs-hide"> |
| | | <button class="layui-btn" lay-submit="" lay-filter="user-add-form-submit" id="submit"></button> |
| | | <button class="layui-btn" lay-submit="" lay-filter="video-add-form-submit" id="submit"></button> |
| | | <button type="reset" class="layui-btn" id="reset"></button> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | |
| | | <script> |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () { |
| | | <script type="text/html" id="tableRowTemplate"> |
| | | {{# layui.each(d, function(index, item){ }} |
| | | <tr> |
| | | <th> |
| | | <input type="text" class="febs-hide" name="sourceId" value="{{item.id}}"/> |
| | | <input type="text" class="layui-input" name="name" placeholder="" value=""/> |
| | | </th> |
| | | <th> |
| | | <div class="upload{{item.id}}"> |
| | | {{# if(!item.thumb || item.thumb == ''){ }} |
| | | <img class="layui-upload-img item-img febs-hide" src="" style="width: 150px;"/> |
| | | <button class="layui-btn layui-btn-xs" type="button">点击上传</button> |
| | | <input type="text" class="febs-hide" autocomplete="off" name="itemThumb" /> |
| | | {{# } else { }} |
| | | <img class="layui-upload-img item-img" src="{{item.thumb}}" style="width: 150px;"/> |
| | | <button class="layui-btn layui-btn-xs febs-hide" type="button">点击上传</button> |
| | | <input type="text" class="febs-hide" autocomplete="off" name="itemThumb" /> |
| | | {{# } }} |
| | | </div> |
| | | </th> |
| | | <th>{{item.name}}</th> |
| | | <th> |
| | | <button class="layui-btn layui-btn-xs layui-btn-danger item-delete" type="button">删除</button> |
| | | </th> |
| | | </tr> |
| | | {{# }); }} |
| | | </script> |
| | | |
| | | <script data-th-inline="javascript"> |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'upload', 'xmSelect', 'laytpl', 'table'], function () { |
| | | var $ = layui.$, |
| | | febs = layui.febs, |
| | | layer = layui.layer, |
| | | formSelects = layui.formSelects, |
| | | treeSelect = layui.treeSelect, |
| | | form = layui.form, |
| | | eleTree = layui.eleTree, |
| | | $view = $('#user-add'), |
| | | table = layui.table, |
| | | $view = $('#video-add'), |
| | | upload = layui.upload, |
| | | validate = layui.validate, |
| | | _deptTree; |
| | | laytpl = layui.laytpl, |
| | | tableUpload, |
| | | templateHtml = tableRowTemplate.innerHTML, |
| | | $itemList = $("#itemList"); |
| | | |
| | | form.verify(validate); |
| | | form.render(); |
| | | |
| | | formSelects.render(); |
| | | renderDeptTree(); |
| | | // 已添加的item数据 |
| | | var itemData = []; |
| | | var videoCate = xmSelect.render({ |
| | | el: '#video-cate', |
| | | language: 'zn', |
| | | prop : { |
| | | value : 'id' |
| | | }, |
| | | data: [] |
| | | }) |
| | | |
| | | treeSelect.render({ |
| | | elem: $view.find('#user-add-dept'), |
| | | type: 'get', |
| | | data: ctx + 'dept/select/tree', |
| | | placeholder: '请选择', |
| | | search: false |
| | | }); |
| | | febs.get(ctx + 'video/categoryTree', null, function(res) { |
| | | videoCate.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | }) |
| | | |
| | | function renderDeptTree() { |
| | | _deptTree = eleTree.render({ |
| | | elem: $view.find('.data-permission-tree'), |
| | | url: ctx + 'dept/tree', |
| | | accordion: true, |
| | | highlightCurrent: true, |
| | | showCheckbox: true, |
| | | checkStrictly: true, |
| | | renderAfterExpand: false, |
| | | request: { |
| | | name: 'name', |
| | | key: "id", |
| | | checked: "checked", |
| | | data: 'data' |
| | | $("#addItem").on('click', function() { |
| | | febs.modal.open('选择视频资源', 'video/source/select/list', { |
| | | area: $(window).width() <= 750 ? '90%' : '50%', |
| | | offset: '30px', |
| | | btn: ['提交', '取消'], |
| | | yes: function (index, layero) { |
| | | var selectData = table.checkStatus('videoSourceSelectTable').data; |
| | | |
| | | // 去重 |
| | | var noRepeatData = []; |
| | | if (itemData.length != 0) { |
| | | for (var i = 0; i < selectData.length; i++) { |
| | | var flag = true; |
| | | for(var j = 0; j < itemData.length; j++) { |
| | | if (selectData[i].id == itemData[j].id) { |
| | | flag = false; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (flag) { |
| | | noRepeatData.push(selectData[i]); |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | noRepeatData = selectData; |
| | | } |
| | | |
| | | if (noRepeatData.length > 0) { |
| | | itemData = itemData.concat(noRepeatData); |
| | | laytpl(templateHtml).render(noRepeatData, function(html) { |
| | | $itemList.append(html); |
| | | }) |
| | | |
| | | for (var i = 0; i < noRepeatData.length; i++) { |
| | | bindUpload(noRepeatData[i].id); |
| | | } |
| | | } |
| | | `` |
| | | deleteUnBind(); |
| | | deleteBind(); |
| | | layer.close(layer.index); |
| | | }, |
| | | response: { |
| | | statusName: "code", |
| | | statusCode: 200, |
| | | dataName: "data" |
| | | btn2: function () { |
| | | layer.close(layer.index); |
| | | } |
| | | }); |
| | | return _deptTree; |
| | | } |
| | | }); |
| | | |
| | | formSelects.config('user-add-role', { |
| | | searchUrl: ctx + 'role', |
| | | response: { |
| | | statusCode: 200 |
| | | }, |
| | | beforeSuccess: function (id, url, searchVal, result) { |
| | | var data = result.data; |
| | | var tranData = []; |
| | | for (var i = 0; i < data.length; i++) { |
| | | tranData.push({ |
| | | name: data[i].roleName, |
| | | value: data[i].roleId |
| | | }) |
| | | upload.render({ |
| | | elem: '#thumbUpload' |
| | | ,url: 'common/upload' |
| | | ,before: function(obj){ |
| | | //预读本地文件示例,不支持ie8 |
| | | obj.preview(function(index, file, result){ |
| | | $('#thumb').attr('src', result); |
| | | }); |
| | | layer.msg('上传中', {icon: 16, time: 0}); |
| | | } |
| | | ,done: function(res){ |
| | | //如果上传失败 |
| | | if(res.code != 200){ |
| | | return layer.msg('上传失败'); |
| | | } |
| | | result.data = tranData; |
| | | return result; |
| | | }, |
| | | error: function (id, url, searchVal, err) { |
| | | console.error(err); |
| | | febs.alert.error('获取角色列表失败'); |
| | | |
| | | $('#thumb').next().val(res.data[0]) |
| | | layer.msg('上传成功', {icon: 1}); |
| | | } |
| | | ,error: function(){ |
| | | layer.msg('上传失败'); |
| | | } |
| | | }); |
| | | |
| | | form.on('submit(user-add-form-submit)', function (data) { |
| | | var checked = _deptTree.getChecked(false, true); |
| | | var deptIds = []; |
| | | layui.each(checked, function (key, item) { |
| | | deptIds.push(item.id) |
| | | // 表格中的图片上传 |
| | | function bindUpload(id) { |
| | | upload.render({ |
| | | elem: '.upload' + id |
| | | ,url: ctx + 'common/upload' //改成您自己的上传接口 |
| | | // ,accept: 'file' |
| | | ,before: function(obj){ |
| | | var item = this.item; |
| | | var $button = $(item).find("button"); |
| | | var $img = $(item).find('img'); |
| | | |
| | | // 如果img标签内没有src,说明没有上传图片,故此时显示的是button,所以需要操作一遍显示隐藏 |
| | | if (!$img.attr("src")) { |
| | | $button.addClass("febs-hide"); |
| | | $img.removeClass("febs-hide"); |
| | | } |
| | | |
| | | obj.preview(function(index, file, result){ |
| | | $img.attr('src', result); |
| | | }); |
| | | |
| | | layer.msg('上传中', {icon: 16, time: 0}); |
| | | } |
| | | ,done: function(res){ |
| | | var item = this.item; |
| | | var $itemThumb = $(item).find('input[name="itemThumb"]'); |
| | | var $button = $(item).find("button"); |
| | | var $img = $(item).find('img'); |
| | | |
| | | //如果上传失败 |
| | | if(res.code !== 200){ |
| | | layer.msg('上传失败'); |
| | | // 上传失败则重置 |
| | | $button.removeClass("febs-hide"); |
| | | $img.addClass("febs-hide"); |
| | | $img.attr('src', ''); |
| | | return |
| | | } |
| | | $itemThumb.val(res.data[0]); |
| | | layer.msg('上传完毕', {icon: 1}); |
| | | } |
| | | ,error: function(){ |
| | | return layer.msg('上传失败'); |
| | | } |
| | | }); |
| | | data.deptIds = deptIds.join(","); |
| | | febs.post(ctx + 'user', data.field, function () { |
| | | layer.closeAll(); |
| | | febs.alert.success('新增用户成功,初始密码为 1234qwer'); |
| | | $('#febs-user').find('#query').click(); |
| | | } |
| | | |
| | | form.on('submit(video-add-form-submit)', function (data) { |
| | | var $tr = $("#itemList").find("tr"); |
| | | var itemLength = $tr.length; |
| | | if (itemLength == 0) { |
| | | layer.msg('请添加章节!'); |
| | | return; |
| | | } |
| | | |
| | | var cateIds = videoCate.getValue('value'); |
| | | if (cateIds.length <= 0) { |
| | | febs.alert.warn('至少选择一个目录'); |
| | | return false; |
| | | } |
| | | |
| | | var itemData = []; |
| | | $tr.each(function() { |
| | | var data = {}; |
| | | var sourceId = $(this).find("input[name = 'sourceId']").val(); |
| | | var videoItemName = $(this).find("input[name = 'name']").val(); |
| | | var itemThumb = $(this).find("input[name = 'itemThumb']").val(); |
| | | |
| | | data.sourceId = sourceId; |
| | | data.name = videoItemName; |
| | | data.thumb = itemThumb; |
| | | itemData.push(data); |
| | | }); |
| | | |
| | | if (!data.field.thumb) { |
| | | febs.alert.warn('未上传缩略图'); |
| | | return; |
| | | } |
| | | |
| | | var field = {}; |
| | | field.items = itemData; |
| | | field.title = data.field.title; |
| | | field.cateIds = cateIds.join(","); |
| | | field.thumb = data.field.thumb; |
| | | field.isFree = data.field.isFree; |
| | | field.intro = data.field.intro; |
| | | console.log(field); |
| | | |
| | | $.ajax({ |
| | | url : ctx + 'video/video/add', |
| | | type : "post", |
| | | dataType : "json", |
| | | contentType : "application/json", |
| | | data : JSON.stringify(field), |
| | | success : function(res) { |
| | | console.log(res) |
| | | if (res.code != 200) { |
| | | febs.alert.warn(res.message); |
| | | return; |
| | | } |
| | | febs.alert.success('新增成功'); |
| | | $('#febs-video').find('#query').click(); |
| | | layer.closeAll(); |
| | | }, |
| | | error : function(err) { |
| | | layer.msg("请求错误"); |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | |
| | | function deleteBind() { |
| | | $(".item-delete").each(function(index, element) { |
| | | $(this).on("click", function() { |
| | | var $tr = $(this).parents("tr"); |
| | | var id = $tr.find("input[name='sourceId']").val(); |
| | | for (var i = 0; i < itemData.length; i++) { |
| | | if (itemData[i].id == id) { |
| | | itemData.splice(i, 1); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | $tr.remove(); |
| | | }); |
| | | }) |
| | | } |
| | | |
| | | function deleteUnBind() { |
| | | $(".item-delete").each(function(index, element) { |
| | | $(this).unbind('click'); |
| | | }) |
| | | } |
| | | }); |
| | | </script> |