From efcf1b2c8012060e03836f7b6bdf343023f462d0 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 16 Dec 2021 16:06:29 +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-update.html |  413 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 413 insertions(+), 0 deletions(-)

diff --git a/src/main/resources/templates/febs/views/video/video/video-update.html b/src/main/resources/templates/febs/views/video/video/video-update.html
new file mode 100644
index 0000000..393134e
--- /dev/null
+++ b/src/main/resources/templates/febs/views/video/video/video-update.html
@@ -0,0 +1,413 @@
+<style>
+    #video-update {
+        padding: 20px 25px 25px 0;
+    }
+    #video-update .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #video-update #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #video-update .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+    #video-update .upload {
+        cursor: pointer;
+    }
+</style>
+<div class="layui-fluid" id="video-update">
+    <form class="layui-form" action="" lay-filter="video-update-form">
+        <input class="layui-input febs-hide" name="id" data-th-value="${video.id}" />
+        <div class="layui-form-item">
+            <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">
+                <textarea name="intro" autocomplete="off" placeholder="请输入简介" class="layui-textarea"></textarea>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">缩略图:</label>
+            <div class="layui-input-block">
+                <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" th:src="${video.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 febs-form-item-require">章节:</label>
+            <div class="layui-input-block">
+                <button class="layui-btn" type="button" id="addItem">新增章节</button>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label"></label>
+            <div class="layui-input-block">
+                <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 febs-form-item-require">是否免费:</label>
+            <div class="layui-input-block">
+                <input type="radio" name="isFree" value="1" title="免费">
+                <input type="radio" name="isFree" value="2" title="会员">
+            </div>
+        </div>
+
+<!--        <div class="layui-form-item layui-form-text">-->
+<!--            <label class="layui-form-label">备注:</label>-->
+<!--            <div class="layui-input-block">-->
+<!--                <textarea name="description" maxlength="100" class="layui-textarea"></textarea>-->
+<!--            </div>-->
+<!--        </div>-->
+        <div class="layui-form-item febs-hide">
+            <button class="layui-btn" lay-submit="" lay-filter="video-update-form-submit" id="submit"></button>
+            <button type="reset" class="layui-btn" id="reset"></button>
+        </div>
+    </form>
+</div>
+
+<script type="text/html" id="tableRowTemplate">
+    {{#  layui.each(d, function(index, item){ }}
+    <tr>
+        <th>
+            <input type="text" class="febs-hide" name="itemId" value="{{item.id}}"/>
+            <input type="text" class="febs-hide" name="sourceId" value="{{item.sourceId}}"/>
+            <input type="text" class="layui-input" name="name" value="{{item.name}}"/>
+        </th>
+        <th>
+            <div class="upload{{item.sourceId}}">
+                {{#  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" value="{{item.thumb}}" />
+                {{# } 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" value="{{item.thumb}}" />
+                {{# } }}
+            </div>
+        </th>
+        <th>{{item.sourceName}}</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,
+            form = layui.form,
+            table = layui.table,
+            $view = $('#video-update'),
+            upload = layui.upload,
+            validate = layui.validate,
+            laytpl = layui.laytpl,
+            tableUpload,
+            video = [[${video}]],
+            templateHtml = tableRowTemplate.innerHTML,
+            $itemList = $("#itemList");
+
+        form.verify(validate);
+        form.render();
+
+        // 已添加的item数据
+        var itemData = [];
+        var videoCate = xmSelect.render({
+            el: '#video-cate',
+            language: 'zn',
+            prop : {
+                value : 'id'
+            },
+            data: []
+        })
+
+        febs.get(ctx + 'video/categoryTree', null, function(res) {
+            videoCate.update({
+                data : res.data,
+                autoRow: true,
+            });
+
+            initValue();
+        });
+
+        function initValue() {
+            form.val("video-update-form", {
+                "title" : video.title,
+                "intro" : video.intro,
+                "isFree" : video.isFree + "",
+                "thumb" : video.thumb
+            })
+
+            videoCate.setValue(video.cateIds.split(','));
+
+            var items = video.items;
+            laytpl(templateHtml).render(items, function(html) {
+                $itemList.append(html);
+            });
+
+            for (var i = 0; i < items.length; i++) {
+                bindUpload(items[i].sourceId);
+                var item = {};
+                item.id = items[i].sourceId;
+                itemData.push(item);
+            }
+
+            deleteBind();
+        }
+
+        $("#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);
+                        // 转化字段
+                        for (var i = 0; i < noRepeatData.length; i++) {
+                            noRepeatData[i].sourceId = noRepeatData[i].id;
+                            noRepeatData[i].sourceName = noRepeatData[i].name;
+                            noRepeatData[i].name = "";
+                            noRepeatData[i].id = "";
+                        }
+
+                        laytpl(templateHtml).render(noRepeatData, function(html) {
+                            $itemList.append(html);
+                        })
+
+                        for (var i = 0; i < noRepeatData.length; i++) {
+                            bindUpload(noRepeatData[i].sourceId);
+                        }
+                    }
+``
+                    deleteUnBind();
+                    deleteBind();
+                    layer.close(layer.index);
+                },
+                btn2: function () {
+                    layer.close(layer.index);
+                }
+            });
+        });
+
+        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('上传失败');
+                }
+
+                $('#thumb').next().val(res.data[0])
+                layer.msg('上传成功', {icon: 1});
+            }
+            ,error: function(){
+                layer.msg('上传失败');
+            }
+        });
+
+        // 表格中的图片上传
+        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('上传失败');
+                }
+            });
+        }
+
+        form.on('submit(video-update-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 itemId = $(this).find("input[name = 'itemId']").val();
+                var videoItemName = $(this).find("input[name = 'name']").val();
+                var itemThumb = $(this).find("input[name = 'itemThumb']").val();
+
+                data.sourceId = sourceId;
+                data.id = itemId;
+                data.name = videoItemName;
+                data.thumb = itemThumb;
+                itemData.push(data);
+            });
+
+            if (!data.field.thumb) {
+                febs.alert.warn('未上传缩略图');
+                return;
+            }
+
+            var field = {};
+            field.items = itemData;
+            field.id = data.field.id;
+            field.title = data.field.title;
+            field.cateIds = cateIds.join(",");
+            field.thumb = data.field.thumb;
+            field.isFree = data.field.isFree;
+            field.intro = data.field.intro;
+
+            $.ajax({
+                url : ctx + 'video/video/update',
+                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