From 9f14a435039c4159cdc015bb567adc6a3f84306f Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 22 Dec 2021 15:35:29 +0800
Subject: [PATCH] 20211216
---
src/main/resources/templates/febs/views/video/video/video-add.html | 413 +++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 303 insertions(+), 110 deletions(-)
diff --git a/src/main/resources/templates/febs/views/video/video/video-add.html b/src/main/resources/templates/febs/views/video/video/video-add.html
index da6eb48..a0051eb 100644
--- a/src/main/resources/templates/febs/views/video/video/video-add.html
+++ b/src/main/resources/templates/febs/views/video/video/video-add.html
@@ -1,80 +1,90 @@
<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">
@@ -82,99 +92,282 @@
</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>
\ No newline at end of file
--
Gitblit v1.9.1