From 43fa0ec4dc02c2bb1a2ac5e9eea81cae4d2cb11d Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 17 Dec 2021 16:08:18 +0800
Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-video

---
 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