Helius
2022-05-13 3d9854e8ce419e7d8c415ff51ba58836efec8aca
fix newsInfo
2 files added
10 files modified
718 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/MallNewsInfoDto.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IMallNewsInfoService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsInfoServiceImpl.java 71 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java 4 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallNewsInfoMapper.xml 2 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoAdd.html 120 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoList.html 27 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate-bak.html 121 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate-bak2.html 203 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html 147 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java
@@ -16,6 +16,7 @@
import javax.management.Query;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;
/**
@@ -84,4 +85,10 @@
        return new FebsResponse().success().message("新增成功");
    }
    @GetMapping(value = "findAllCategoryList")
    public FebsResponse findAllCategoryList() {
        List<MallNewsCategory> categories = mallNewsInfoService.findAllCategory();
        return new FebsResponse().success().data(categories);
    }
}
src/main/java/cc/mrbird/febs/mall/dto/MallNewsInfoDto.java
@@ -19,4 +19,10 @@
     */
    private Integer type;
    private String videoUrl;
    private String thumb;
    private String categoryId;
}
src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java
@@ -22,4 +22,10 @@
     * 1-文章2-跳转到产品
     */
    private Integer type;
    private String videoUrl;
    private String thumb;
    private Long categoryId;
}
src/main/java/cc/mrbird/febs/mall/service/IMallNewsInfoService.java
@@ -9,6 +9,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
public interface IMallNewsInfoService extends IService<MallNewsInfo> {
    IPage<AdminMallNewsInfoVo> getNewInfoList(MallNewsInfo mallNewsInfo, QueryRequest request);
@@ -26,4 +28,6 @@
    void addOrModifyNewsCategory(MallNewsCategory mallNewsCategory);
    MallNewsCategory findNewsCategoryById(Long id);
    List<MallNewsCategory> findAllCategory();
}
src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsInfoServiceImpl.java
@@ -9,6 +9,7 @@
import cc.mrbird.febs.mall.mapper.MallNewsInfoMapper;
import cc.mrbird.febs.mall.service.IMallNewsInfoService;
import cc.mrbird.febs.mall.vo.AdminMallNewsInfoVo;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -16,6 +17,8 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author wzy
@@ -37,20 +40,23 @@
    @Override
    public FebsResponse addNewsInfo(MallNewsInfoDto mallNewsInfoDto) {
        Integer type = mallNewsInfoDto.getType();
        if(type == 2){
            Long goodsId = mallNewsInfoDto.getGoodsId()==null?0L:mallNewsInfoDto.getGoodsId();
            if(goodsId == 0L){
                return new FebsResponse().fail().message("请选择跳转的产品");
            }
        }
//        Integer type = mallNewsInfoDto.getType();
//        if(type == 2){
//            Long goodsId = mallNewsInfoDto.getGoodsId()==null?0L:mallNewsInfoDto.getGoodsId();
//            if(goodsId == 0L){
//                return new FebsResponse().fail().message("请选择跳转的产品");
//            }
//        }
//        MallNewsInfo mallNewsInfo = new MallNewsInfo();
//        mallNewsInfo.setTitle(mallNewsInfoDto.getTitle());
//        mallNewsInfo.setContent(mallNewsInfoDto.getContent());
//        mallNewsInfo.setType(mallNewsInfoDto.getType());
//        if(mallNewsInfoDto.getType() == 2){
//            mallNewsInfo.setTargetId(mallNewsInfoDto.getGoodsId());
//        }
        MallNewsInfo mallNewsInfo = new MallNewsInfo();
        mallNewsInfo.setTitle(mallNewsInfoDto.getTitle());
        mallNewsInfo.setContent(mallNewsInfoDto.getContent());
        mallNewsInfo.setType(mallNewsInfoDto.getType());
        if(mallNewsInfoDto.getType() == 2){
            mallNewsInfo.setTargetId(mallNewsInfoDto.getGoodsId());
        }
        BeanUtil.copyProperties(mallNewsInfoDto, mallNewsInfo);
        this.baseMapper.insert(mallNewsInfo);
        return new FebsResponse().success();
    }
@@ -71,22 +77,26 @@
        if(ObjectUtil.isEmpty(mallNewsInfoBefore)){
            return new FebsResponse().fail().message("系统繁忙,请刷新页面重试");
        }
        Integer type = mallNewsInfoDto.getType();
        if(type == 2){
            Long goodsId = mallNewsInfoDto.getGoodsId()==null?0L:mallNewsInfoDto.getGoodsId();
            if(goodsId == 0L){
                return new FebsResponse().fail().message("请选择跳转的产品");
            }
        }
//        Integer type = mallNewsInfoDto.getType();
//        if(type == 2){
//            Long goodsId = mallNewsInfoDto.getGoodsId()==null?0L:mallNewsInfoDto.getGoodsId();
//            if(goodsId == 0L){
//                return new FebsResponse().fail().message("请选择跳转的产品");
//            }
//        }
//        MallNewsInfo mallNewsInfo = new MallNewsInfo();
//        mallNewsInfo.setTitle(mallNewsInfoDto.getTitle());
//        mallNewsInfo.setContent(mallNewsInfoDto.getContent());
//        mallNewsInfo.setType(mallNewsInfoDto.getType());
//        if(mallNewsInfoDto.getType() == 2){
//            mallNewsInfo.setTargetId(mallNewsInfoDto.getGoodsId());
//        }
//        this.baseMapper.insert(mallNewsInfo);
//        this.baseMapper.deleteById(mallNewsInfoDto.getId());
        MallNewsInfo mallNewsInfo = new MallNewsInfo();
        mallNewsInfo.setTitle(mallNewsInfoDto.getTitle());
        mallNewsInfo.setContent(mallNewsInfoDto.getContent());
        mallNewsInfo.setType(mallNewsInfoDto.getType());
        if(mallNewsInfoDto.getType() == 2){
            mallNewsInfo.setTargetId(mallNewsInfoDto.getGoodsId());
        }
        this.baseMapper.insert(mallNewsInfo);
        this.baseMapper.deleteById(mallNewsInfoDto.getId());
        BeanUtil.copyProperties(mallNewsInfoDto, mallNewsInfo);
        this.baseMapper.updateById(mallNewsInfo);
        return new FebsResponse().success();
    }
@@ -114,4 +124,9 @@
    public MallNewsCategory findNewsCategoryById(Long id) {
        return mallNewsCategoryMapper.selectById(id);
    }
    @Override
    public List<MallNewsCategory> findAllCategory() {
        return mallNewsCategoryMapper.selectList(null);
    }
}
src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java
@@ -16,6 +16,8 @@
    private String content;
    private String thumb;
    private Long targetId;
    private String targetName;
@@ -27,4 +29,6 @@
     * 1-文章2-跳转到产品
     */
    private Integer type;
    private String categoryName;
}
src/main/resources/mapper/modules/MallNewsInfoMapper.xml
@@ -5,9 +5,11 @@
    <select id="getNewInfoListInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallNewsInfoVo">
        SELECT
               a.*,
               c.title categoryName,
               b.goods_name targetName
        FROM mall_news_info a
        left join mall_goods b on a.target_id = b.id
        left join mall_news_category c on a.category_id=c.id
        group by a.id
        order by a.CREATED_TIME desc
    </select>
src/main/resources/templates/febs/views/modules/news/newsInfoAdd.html
@@ -25,29 +25,44 @@
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">标题:</label>
            <div class="layui-input-block">
                <input type="text" name="title" lay-verify="required" autocomplete="off" class="layui-input" >
                <input type="text" name="title" autocomplete="off" class="layui-input" >
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">内容:</label>
            <label class="layui-form-label febs-form-item-require">分类:</label>
            <div class="layui-input-block">
                <input type="text" name="content" lay-verify="required" autocomplete="off" class="layui-input" >
            </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="type" value="1" title="文章" checked="">
                <input type="radio" name="type" value="2" title="跳转到产品">
                <select name="categoryId" class="news-category" id="news-category" >
                    <option value="">请选择</option>
                </select>
            </div>
        </div>
        <div class="layui-col-lg6">
            <label class="layui-form-label">绑定产品:</label>
        <div class="layui-form-item">
            <label class="layui-form-label">视频:</label>
            <div class="layui-input-block">
                <select name="goodsId" class="newsInfo-add-goods" id="goodsSelect" >
                    <option value="">请选择</option>
                </select>
                <button type="button" class="layui-btn upload" id="upload" style="background-color: #009688; margin-bottom: 2px">上传文件</button>
                <input type="text" name="videoUrl" autocomplete="off" value="" id="videoUrl" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">缩略图:</label>
            <div class="layui-input-block">
                <button type="button" class="layui-btn" id="imageUpload" style="background-color: #009688; margin-bottom: 2px">图片上传</button>
                <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                    <div class=" layui-upload-list view-images" id="thumbImage">
                    </div>
                </blockquote>
                <div class="febs-hide">
                    <input type="text" id="thumb"  name="thumb" autocomplete="off" class="layui-input" readonly>
                </div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">内容:</label>
            <div class="layui-input-block">
                <textarea id="lay_edit" name = "content" lay-verify="content" class="layui-textarea"></textarea>
            </div>
        </div>
        <div class="layui-form-item febs-hide">
@@ -57,27 +72,26 @@
</div>
<script data-th-inline="javascript">
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate'], function () {
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','layedit', 'laydate', 'upload'], function () {
        var $ = layui.$,
            febs = layui.febs,
            layer = layui.layer,
            upload = layui.upload,
            formSelects = layui.formSelects,
            treeSelect = layui.treeSelect,
            form = layui.form,
            laydate = layui.laydate,
            eleTree = layui.eleTree,
            layedit = layui.layedit,
            $view = $('#newsInfo-add'),
            validate = layui.validate;
        //(下拉框)
        $.get(ctx + 'admin/goods/goods/allTree', function (data) {
            for (var k in data)
            {
                $(".newsInfo-add-goods").append("<option value='" + data[k].goodsId + "'>" + data[k].goodsName + "</option>");
        $.get(ctx + 'admin/news/findAllCategoryList', function (data) {
            var arr = data.data;
            for (let i = 0; i < arr.length; i++) {
                $(".news-category").append("<option value='" + arr[i].id + "'>" + arr[i].title + "</option>");
            }
            layui.use('form', function () {
                var form = layui.form;
                // $("#goodsSelect").val(mailGoodsUpdate.categoryId)
                form.render();
            });
        });
@@ -87,8 +101,24 @@
            elem: '#febs-form-group-date'
        });
        formSelects.render();
        layedit.set({    //设置图片接口
            uploadImage: {
                url: 'admin/goods/uploadFileBase64', //接口url
                type: 'post',
            }
        });
        //创建一个编辑器
        var index = layedit.build('lay_edit',{
            height: 300
        });
        form.verify({
            //content富文本域中的lay-verify值
            content: function(value) {
                return layedit.sync(index);
            }
        });
        formSelects.render();
        form.on('submit(newsInfo-add-form-submit)', function (data) {
            febs.post(ctx + 'admin/news/addNewsInfo', data.field, function () {
                layer.closeAll();
@@ -97,5 +127,47 @@
            });
            return false;
        });
        upload.render({
            elem: '#imageUpload'
            ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
            ,multiple: false
            ,before: function(obj){
                //预读本地文件示例,不支持ie8
                obj.preview(function(index, file, result){
                    $('#thumbImage').html('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img" style="width: 100px">')
                });
            }
            ,done: function(res){
                $("#thumb").val(res.data.src);
            }
        });
        bindUpload();
        function bindUpload() {
            upload.render({
                elem: '.upload'
                ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
                ,accept: 'file'
                ,before: function(obj){
                    layer.msg('上传中', {icon: 16, time: 0});
                }
                ,done: function(res){
                    var item = this.item;
                    //如果上传失败
                    if(res.code !== 0){
                        return layer.msg('上传失败');
                    }
                    // $(item).parent().prev().find('input').val(res.data[0]);
                    $("#videoUrl").val(res.data.src);
                    layer.msg('上传完毕', {icon: 1});
                }
                ,error: function(err){
                    return layer.msg('上传失败');
                }
            });
        }
    });
</script>
src/main/resources/templates/febs/views/modules/news/newsInfoList.html
@@ -24,6 +24,11 @@
        </div>
    </div>
</div>
<style>
    .layui-table-cell {
        height: auto;
    }
</style>
<!-- 表格操作栏 start -->
<script type="text/html" id="user-option">
    <span shiro:lacksPermission="user:view,user:update,user:delete">
@@ -61,7 +66,7 @@
                febs.modal.open('编辑', 'modules/news/newsInfoUpdate/' + data.id, {
                    btn: ['提交', '取消'],
                    yes: function (index, layero) {
                        $('#systemPay-update').find('#submit').trigger('click');
                        $('#newsInfo-update').find('#submit').trigger('click');
                    },
                    btn2: function () {
                        layer.closeAll();
@@ -114,24 +119,16 @@
                url: ctx + 'admin/news/getNewInfoList',
                cols: [[
                    {field: 'title', title: '标题', minWidth: 120,align:'center'},
                    {field: 'content', title: '内容', minWidth: 120,align:'center'},
                    {field: 'createdTime', title: '创建时间', minWidth: 120,align:'center'},
                    {field: 'type', title: '类型',
                    {field: 'categoryName', title: '分类', minWidth: 120,align:'center'},
                    {field: 'thumb', title: '缩略图',
                        templet: function (d) {
                            if(d.type === 1){
                                return '<span>文章</span>'
                            }else if(d.type === 2){
                                return '<span>跳转到产品</span>'
                            }else{
                                return ''
                            }
                        }, minWidth: 100,align:'center'},
                    {field: 'targetId', title: '跳转到目标ID', minWidth: 200,align:'center'},
                    {field: 'targetName', title: '跳转到目标', minWidth: 200,align:'center'},
                            return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.thumb+'" alt=""></a>';
                        }, minWidth: 150,align:'center'},
                    {field: 'createdTime', title: '创建时间', minWidth: 120,align:'center'},
                    {title: '操作',
                        templet: function (d) {
                            return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="newsInfoUpdate" shiro:hasPermission="user:update">编辑</button>'
                                +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="delNewsInfo" shiro:hasPermission="user:update">删除</button>'
                                +'<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delNewsInfo" shiro:hasPermission="user:update">删除</button>'
                        },minWidth: 300,align:'center'}
                ]]
            });
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate-bak.html
New file
@@ -0,0 +1,121 @@
<style>
    #newsInfo-update {
        padding: 20px 25px 25px 0;
    }
    #newsInfo-update .layui-treeSelect .ztree li a, .ztree li span {
        margin: 0 0 2px 3px !important;
    }
    #newsInfo-update #data-permission-tree-block {
        border: 1px solid #eee;
        border-radius: 2px;
        padding: 3px 0;
    }
    #newsInfo-update .layui-treeSelect .ztree li span.button.switch {
        top: 1px;
        left: 3px;
    }
    #newsInfo-update img{
        max-width:100px
    }
</style>
<div class="layui-fluid" id="newsInfo-update">
    <form class="layui-form" action="" lay-filter="newsInfo-update-form">
        <div class="layui-form-item febs-hide">
            <label class="layui-form-label febs-form-item-require">id:</label>
            <div class="layui-input-block">
                <input type="text" name="id" data-th-value="${newsInfo.id}">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">标题:</label>
            <div class="layui-input-block">
                <input type="text" name="title" lay-verify="required" autocomplete="off" class="layui-input" >
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">内容:</label>
            <div class="layui-input-block">
                <input type="text" name="content" lay-verify="required" autocomplete="off" class="layui-input" >
            </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="type" value="1" title="文章" checked="">
                <input type="radio" name="type" value="2" title="跳转到产品">
            </div>
        </div>
        <div class="layui-col-lg6">
            <label class="layui-form-label">绑定产品:</label>
            <div class="layui-input-block">
                <select name="goodsId" class="newsInfo-update-goods" id="goodsSelectUpdate" >
                    <option value="">请选择</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item febs-hide">
            <button class="layui-btn" lay-submit="" lay-filter="newsInfo-update-form-submit" id="submit"></button>
        </div>
    </form>
</div>
<script data-th-inline="javascript">
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate'], function () {
        var $ = layui.$,
            febs = layui.febs,
            layer = layui.layer,
            formSelects = layui.formSelects,
            treeSelect = layui.treeSelect,
            form = layui.form,
            laydate = layui.laydate,
            eleTree = layui.eleTree,
            newsInfo = [[${newsInfo}]],
            $view = $('#newsInfo-update'),
            validate = layui.validate;
        //(下拉框)
        $.get(ctx + 'admin/goods/goods/allTree', function (data) {
            for (var k in data)
            {
                $(".newsInfo-update-goods").append("<option value='" + data[k].goodsId + "'>" + data[k].goodsName + "</option>");
            }
            layui.use('form', function () {
                var form = layui.form;
                $("#goodsSelectUpdate").val(newsInfo.targetId)
                form.render();
            });
        });
        form.render();
        laydate.render({
            elem: '#febs-form-group-date'
        });
        formSelects.render();
        initUserValue();
        function initUserValue() {
            form.val("newsInfo-update-form", {
                "id": newsInfo.id,
                "targetId": newsInfo.targetId,
                "title": newsInfo.title,
                "content": newsInfo.content,
                "type": newsInfo.type
            });
        }
        form.on('submit(newsInfo-update-form-submit)', function (data) {
            febs.post(ctx + 'admin/news/updateNewsInfo', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-newInfo').find('#reset').click();
            });
            return false;
        });
    });
</script>
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate-bak2.html
New file
@@ -0,0 +1,203 @@
<style>
    #newsInfo-update {
        padding: 20px 25px 25px 0;
    }
    #newsInfo-update .layui-treeSelect .ztree li a, .ztree li span {
        margin: 0 0 2px 3px !important;
    }
    #newsInfo-update #data-permission-tree-block {
        border: 1px solid #eee;
        border-radius: 2px;
        padding: 3px 0;
    }
    #newsInfo-update .layui-treeSelect .ztree li span.button.switch {
        top: 1px;
        left: 3px;
    }
    #newsInfo-update img {
        max-width: 100px
    }
</style>
<div className="layui-fluid" id="newsInfo-update">
    <form className="layui-form" action="" lay-filter="newsInfo-update-form">
        <div class="layui-form-item febs-hide">
            <label class="layui-form-label febs-form-item-require">id:</label>
            <div class="layui-input-block">
                <input type="text" name="id" data-th-value="${newsInfo.id}">
            </div>
        </div>
        <div className="layui-form-item">
            <label className="layui-form-label febs-form-item-require">标题:</label>
            <div className="layui-input-block">
                <input type="text" name="title" autoComplete="off" className="layui-input">
            </div>
        </div>
        <div className="layui-form-item">
            <label className="layui-form-label febs-form-item-require">分类:</label>
            <div className="layui-input-block">
                <select name="categoryId" className="news-category" id="news-category">
                    <option value="">请选择</option>
                </select>
            </div>
        </div>
        <div className="layui-form-item">
            <label className="layui-form-label">视频:</label>
            <div className="layui-input-block">
                <button type="button" className="layui-btn upload" id="upload"
                        style="background-color: #009688; margin-bottom: 2px">上传文件
                </button>
                <input type="text" name="videoUrl" autoComplete="off" value="" id="videoUrl" className="layui-input"
                       readOnly>
            </div>
        </div>
        <div className="layui-form-item">
            <label className="layui-form-label">缩略图:</label>
            <div className="layui-input-block">
                <button type="button" className="layui-btn" id="imageUpload"
                        style="background-color: #009688; margin-bottom: 2px">图片上传
                </button>
                <blockquote className="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                    <div className=" layui-upload-list view-images" id="thumbImage">
                    </div>
                </blockquote>
                <div className="febs-hide">
                    <input type="text" id="thumb" name="thumb" autoComplete="off" className="layui-input" readOnly>
                </div>
            </div>
        </div>
        <div className="layui-form-item">
            <label className="layui-form-label febs-form-item-require">内容:</label>
            <div className="layui-input-block">
                <textarea id="lay_edit" name="content" lay-verify="content" className="layui-textarea"></textarea>
            </div>
        </div>
        <div className="layui-form-item febs-hide">
            <button className="layui-btn" lay-submit="" lay-filter="newsInfo-update-form-submit" id="submit"></button>
        </div>
    </form>
</div>
<script data-th-inline="javascript">
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'layedit', 'laydate', 'upload'], function () {
        var $ = layui.$,
            febs = layui.febs,
            layer = layui.layer,
            upload = layui.upload,
            formSelects = layui.formSelects,
            form = layui.form,
            laydate = layui.laydate,
            layedit = layui.layedit,
            newsInfo = [[${newsInfo}]],
            $view = $('#newsInfo-update'),
            validate = layui.validate;
        //(下拉框)
        $.get(ctx + 'admin/news/findAllCategoryList', function (data) {
            var arr = data.data;
            for (let i = 0; i < arr.length; i++) {
                $(".news-category").append("<option value='" + arr[i].id + "'>" + arr[i].title + "</option>");
            }
            layui.use('form', function () {
                var form = layui.form;
                form.render();
            });
        });
        form.render();
        laydate.render({
            elem: '#febs-form-group-date'
        });
        layedit.set({    //设置图片接口
            uploadImage: {
                url: 'admin/goods/uploadFileBase64', //接口url
                type: 'post',
            }
        });
        //创建一个编辑器
        var index = layedit.build('lay_edit', {
            height: 300
        });
        form.verify({
            //content富文本域中的lay-verify值
            content: function (value) {
                return layedit.sync(index);
            }
        });
        formSelects.render();
        form.on('submit(newsInfo-update-form-submit)', function (data) {
            febs.post(ctx + 'admin/news/updateNewsInfo', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-newInfo').find('#reset').click();
            });
            return false;
        });
        upload.render({
            elem: '#imageUpload'
            , url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
            , multiple: false
            , before: function (obj) {
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#thumbImage').html('<img src="' + result + '" alt="' + file.name + '" class="layui-upload-img" style="width: 100px">')
                });
            }
            , done: function (res) {
                $("#thumb").val(res.data.src);
            }
        });
        bindUpload();
        function bindUpload() {
            upload.render({
                elem: '.upload'
                , url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
                , accept: 'file'
                , before: function (obj) {
                    layer.msg('上传中', {icon: 16, time: 0});
                }
                , done: function (res) {
                    var item = this.item;
                    //如果上传失败
                    if (res.code !== 0) {
                        return layer.msg('上传失败');
                    }
                    // $(item).parent().prev().find('input').val(res.data[0]);
                    $("#videoUrl").val(res.data.src);
                    layer.msg('上传完毕', {icon: 1});
                }
                , error: function (err) {
                    return layer.msg('上传失败');
                }
            });
        }
        initUserValue();
        function initUserValue() {
            var thumb = newsInfo.thumb;
            $('#thumbImage').html('<img src="' + thumb + '" alt="" class="layui-upload-img" style="width: 100px">')
            form.val("newsInfo-update-form", {
                "id": newsInfo.id,
                "categoryId": newsInfo.categoryId,
                "title": newsInfo.title,
                "videoUrl": newsInfo.videoUrl,
                "thumb": newsInfo.thumb,
                "content": newsInfo.content,
            });
        }
    });
</script>
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html
@@ -31,29 +31,44 @@
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">标题:</label>
            <div class="layui-input-block">
                <input type="text" name="title" lay-verify="required" autocomplete="off" class="layui-input" >
                <input type="text" name="title" autocomplete="off" class="layui-input" >
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">内容:</label>
            <label class="layui-form-label febs-form-item-require">分类:</label>
            <div class="layui-input-block">
                <input type="text" name="content" lay-verify="required" autocomplete="off" class="layui-input" >
            </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="type" value="1" title="文章" checked="">
                <input type="radio" name="type" value="2" title="跳转到产品">
                <select name="categoryId" class="news-category" id="news-category" >
                    <option value="">请选择</option>
                </select>
            </div>
        </div>
        <div class="layui-col-lg6">
            <label class="layui-form-label">绑定产品:</label>
        <div class="layui-form-item">
            <label class="layui-form-label">视频:</label>
            <div class="layui-input-block">
                <select name="goodsId" class="newsInfo-update-goods" id="goodsSelectUpdate" >
                    <option value="">请选择</option>
                </select>
                <button type="button" class="layui-btn upload" id="upload" style="background-color: #009688; margin-bottom: 2px">上传文件</button>
                <input type="text" name="videoUrl" autocomplete="off" value="" id="videoUrl" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">缩略图:</label>
            <div class="layui-input-block">
                <button type="button" class="layui-btn" id="imageUpload" style="background-color: #009688; margin-bottom: 2px">图片上传</button>
                <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                    <div class=" layui-upload-list view-images" id="thumbImage">
                    </div>
                </blockquote>
                <div class="febs-hide">
                    <input type="text" id="thumb"  name="thumb" autocomplete="off" class="layui-input" readonly>
                </div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">内容:</label>
            <div class="layui-input-block">
                <textarea id="lay_edit" name = "content" lay-verify="content" class="layui-textarea"></textarea>
            </div>
        </div>
        <div class="layui-form-item febs-hide">
@@ -63,28 +78,27 @@
</div>
<script data-th-inline="javascript">
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate'], function () {
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','layedit', 'laydate', 'upload'], function () {
        var $ = layui.$,
            febs = layui.febs,
            layer = layui.layer,
            upload = layui.upload,
            formSelects = layui.formSelects,
            treeSelect = layui.treeSelect,
            form = layui.form,
            laydate = layui.laydate,
            eleTree = layui.eleTree,
            layedit = layui.layedit,
            newsInfo = [[${newsInfo}]],
            $view = $('#newsInfo-update'),
            validate = layui.validate;
        //(下拉框)
        $.get(ctx + 'admin/goods/goods/allTree', function (data) {
            for (var k in data)
            {
                $(".newsInfo-update-goods").append("<option value='" + data[k].goodsId + "'>" + data[k].goodsName + "</option>");
        $.get(ctx + 'admin/news/findAllCategoryList', function (data) {
            var arr = data.data;
            for (let i = 0; i < arr.length; i++) {
                $(".news-category").append("<option value='" + arr[i].id + "'>" + arr[i].title + "</option>");
            }
            layui.use('form', function () {
                var form = layui.form;
                $("#goodsSelectUpdate").val(newsInfo.targetId)
                form.render();
            });
        });
@@ -94,21 +108,24 @@
            elem: '#febs-form-group-date'
        });
        formSelects.render();
        initUserValue();
        function initUserValue() {
            form.val("newsInfo-update-form", {
                "id": newsInfo.id,
                "targetId": newsInfo.targetId,
                "title": newsInfo.title,
                "content": newsInfo.content,
                "type": newsInfo.type
            });
        layedit.set({    //设置图片接口
            uploadImage: {
                url: 'admin/goods/uploadFileBase64', //接口url
                type: 'post',
        }
        });
        //创建一个编辑器
        var index = layedit.build('lay_edit',{
            height: 300
        });
        form.verify({
            //content富文本域中的lay-verify值
            content: function(value) {
                return layedit.sync(index);
            }
        });
        formSelects.render();
        form.on('submit(newsInfo-update-form-submit)', function (data) {
            febs.post(ctx + 'admin/news/updateNewsInfo', data.field, function () {
                layer.closeAll();
@@ -117,5 +134,63 @@
            });
            return false;
        });
        upload.render({
            elem: '#imageUpload'
            ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
            ,multiple: false
            ,before: function(obj){
                //预读本地文件示例,不支持ie8
                obj.preview(function(index, file, result){
                    $('#thumbImage').html('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img" style="width: 100px">')
                });
            }
            ,done: function(res){
                $("#thumb").val(res.data.src);
            }
        });
        bindUpload();
        function bindUpload() {
            upload.render({
                elem: '.upload'
                ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
                ,accept: 'file'
                ,before: function(obj){
                    layer.msg('上传中', {icon: 16, time: 0});
                }
                ,done: function(res){
                    var item = this.item;
                    //如果上传失败
                    if(res.code !== 0){
                        return layer.msg('上传失败');
                    }
                    // $(item).parent().prev().find('input').val(res.data[0]);
                    $("#videoUrl").val(res.data.src);
                    layer.msg('上传完毕', {icon: 1});
                }
                ,error: function(err){
                    return layer.msg('上传失败');
                }
            });
        }
        initUserValue();
        function initUserValue() {
            console.log(newsInfo);
            var thumb = newsInfo.thumb;
            $('#thumbImage').html('<img src="' + thumb + '" alt="" class="layui-upload-img" style="width: 100px">')
            form.val("newsInfo-update-form", {
                "id": newsInfo.id,
                "categoryId": newsInfo.categoryId,
                "title": newsInfo.title,
                "videoUrl": newsInfo.videoUrl,
                "thumb": newsInfo.thumb,
                "content": newsInfo.content,
            });
        }
    });
</script>