SpringBoot layui 实现复选框和回显+上传图片回显 全页面

10 篇文章 0 订阅
5 篇文章 0 订阅

ajax-form提交

前端代码:

<!DOCTYPE HTML>
<html  xmlns:th="http://www.thymeleaf.org">
<head th:include="_meta :: header">
    <title>添加</title>

</head>
<link rel="stylesheet" th:href="@{/xadmin/lib/formselect/formSelects-v4.css}">
<body>
<div class="layui-fluid">
    <div class="layui-row">
        <form class="layui-form form form-horizontal" id="form-materialMart-add" action="#" th:action="@{/admin/materialMart/edit}"
              th:object="${materialMart}" enctype="multipart/form-data">
            <input type="hidden" name="id" th:value="${materialMart.id}"/>
            <input type="hidden" id="checked" th:value="${materialProjects}"/>
            <div class="layui-form-item">
                <label class="layui-form-label">项目类型:</label>
                <div class="layui-input-block">
                    <select name="typeId" id="type" xm-select="select9" xm-select-search xm-select-create>
                        <option name="rights" th:each="recommendMenuSecond:${recommendMenuSeconds}" th:text="${recommendMenuSecond.menuName}" th:title="${recommendMenuSecond.menuName}" th:value="${recommendMenuSecond.id}"></option>
                    </select>
                </div>
            </div>

            <div class="layui-form-item" style="margin-top: 50px">
                <label class="layui-form-label" style="width:80px;">项目标题:</label>
                <div class="layui-input-inline">
                    <input type="layui-input" class="layui-input" style="width: 738px;" th:value="${materialMart.title}"  name="title"  placeholder="添加项目标题" id="title"/>
                </div>
            </div>
<!--            <div class="layui-form-item">-->
<!--                <label class="layui-form-label" style="width:80px;">上传图标:</label>-->
<!--                <div class="layui-input-inline">-->
<!--                    <input type="file" class="layui-input" th:value="${materialMart.Icon}" name="imageFile" multiple placeholder="添加项目图标" id="Icon"/>-->
<!--                </div>-->
<!--            </div>-->

            <div class="layui-form-item" style="margin-top: 50px">
                <label class="layui-form-label">项目图标:</label>
                <div class="imgcon" style="float: left">
                </div>
                <input type="hidden" value="" name="Icon"  class="goods_img">
                <div class="addimg" style="float: left">
                    <div id="drag" class="" title="将文件拖拽到此处上传">
                        <label for="fileupload" title="点击上传">
                            <img th:src="${materialMart.Icon}" style="height: 100px;width: 100px;" alt="">
                        </label>
                    </div>
                    <input style="display: none" id="fileupload" type="file" accept="image/*" name="imageFile"
                           multiple="multiple" data-url="/admin/materialMart/addFile">
                </div>
            </div>

            <!--                <div class="layui-form-item">-->
            <!--                    <label class="layui-form-label"><span-->
            <!--                            class="c-red">* </span>项目内容:</label>-->
            <!--                    <div class="layui-input-block">-->
            <!--                        <script id="editor" th:text="${materialMart.content}" name="content" autofocus type="text/plain" style="height: 500px">-->
            <!--                        </script>-->
            <!--                    </div>-->
            <!--                </div>-->
            <div class="layui-form-item layui-form-text" style="margin-top: 50px">
                <label for="introduction" class="layui-form-label" style="width:80px;">项目简介:</label>
                <div class="layui-input-block">
                    <textarea id="introduction" name="introduction" th:text="${materialMart.introduction}" class="layui-textarea" style="width:900px;height:200px;margin-right:20px;"></textarea>
                </div>
            </div>
            <div class="layui-form-item layui-form-text" style="margin-top: 50px">
                <label for="content" class="layui-form-label" style="width:80px;">项目内容:</label>
                <div class="layui-input-block">
                    <textarea id="content" name="content" th:text="${materialMart.content}" class="layui-textarea" style="width:900px;height:400px;margin-right:20px;"></textarea>
                </div>
            </div>
            <div class="layui-form-item" style="margin-top: 50px">
                <label class="layui-form-label" style="width:80px;">项目价格:</label>
                <div class="layui-input-inline">
                    <input type="layui-input" class="layui-input" th:value="${materialMart.price}" name="price"  placeholder="添加项目价格" id="price"/>
                </div>
            </div>
            <div class="layui-form-item" style="margin-top: 50px">
                <label class="layui-form-label" style="width:80px;">咨询电话:</label>
                <div class="layui-input-inline">
                    <input type="layui-input" class="layui-input" th:value="${materialMart.phoneNumber}"  name="phoneNumber"  placeholder="添加咨询电话" id="phoneNumber"/>
                </div>
            </div>

            <div class="layui-form-item" style="margin-top: 50px">
                <label class="layui-form-label" style="width:80px;">是否精选:</label>
                <div class="layui-input-block" style="width: 200px">
                    <select name="isGoods" id="isGoods">
                        <option th:value="${materialMart.isGoods}"></option>
                        <option th:text="" th:value="1"></option>
                        <option th:text="" th:value="0"></option>
                    </select>
                </div>
            </div>

            <div class="layui-form-item" style="margin-top: 50px;margin-bottom: 60px;">
                <label class="layui-form-label">
                </label>
                <button  class="layui-btn" id="subbtn" type="submit" >
                    修改
                </button>
                <button  class="layui-btn" id="reset" type="reset" >
                    重置
                </button>
            </div>
        </form>
    </div>
</div>

<!--_footer 作为公共模版分离出去-->
<div th:replace="_footer :: footerjs"></div>
<!--<div th:replace="_ueditor :: ueditor"></div>-->
<script th:src="@{/xadmin/lib/formselect/formSelects-v4.js}" charset="utf-8"></script>
<!--/_footer 作为公共模版分离出去-->
<!--请在下方写此页面业务相关的脚本-->
<link rel="stylesheet" type="text/css" th:href="@{/xadmin/lib/formSelect/formSelects-v4.css}"/>
<script type="text/javascript" th:src="@{/xadmin/lib/formselect/formSelects-v4.js}"></script>
<script th:src="@{/xadmin/lib/jQuery-File-Upload/js/vendor/jquery.ui.widget.js}"></script>
<script th:src="@{/xadmin/lib/jQuery-File-Upload/js/jquery.iframe-transport.js}"></script>
<script th:src="@{/xadmin/lib/jQuery-File-Upload/js/jquery.fileupload.js}"></script>
<script>
    layui.use(['form', 'layer','laydate'],function() {
        $ = layui.jquery;
        var form = layui.form,
            laydate = layui.laydate,
            layer = layui.layer;
        lay('.timeSpace').each(function(){
            laydate.render({
                elem: this
                ,trigger: 'click'
                ,type: 'datetime'
            });
        });
        //多选框回显
        var formSelects = layui.formSelects;
        var questionnaireList = $("#checked").val();
        console.log(questionnaireList);
        let arr = JSON.parse(String(questionnaireList))
        formSelects.value('select9', arr, true);
        formSelects.btns('select9', ['remove']);
    });

    $(function(){
        $("#form-materialMart-add").validate({
            rules:{
                type:{
                    required: true,
                },
                userId:{
                    required: true,
                },
                projectSortId:{
                    required: true,
                },
                title:{
                    required: true,
                },
                Icon:{
                    required: true,
                },
                content:{
                    required: true,
                },
                introduction:{
                    required: true,
                },
                price:{
                    required: true,
                },
                phoneNumber:{
                    required: true,
                },
                createTime:{
                    required: true,
                },
                updateTime:{
                    required: true,
                },
                isGoods:{
                    required: true,
                },
            },
            onkeyup:false,
            debug: true,
            success:"valid",
            submitHandler:function(form){
                $(form).ajaxSubmit({
                    type: 'POST',
                    url: "/admin/materialMart/edit" ,
                    success: function(data){
                        if(data.code == "1"){
                            selfmsg('修改成功!',1,function(){
                                var index = parent.layer.getFrameIndex(window.name);
                                parent.location.reload();
                                parent.layer.close(index);
                            });
                        }else{
                            selfmsg('修改失败!');
                        }
                    },
                    error: function(){
                        selfmsg('修改异常!',5);
                    }
                });
            }
        });
    });

</script>
<!--上传图片-->
<script>
    //删除图片
    function closeImg(obj) {
        $(obj).parent().remove();
        // var goods_img = '';
        // $('.imgcon .img_div').each(function () {
        //     goods_img += $(this).find('img').attr('src') + ',';
        // })
        $('.meetingIcon').val('');
        if ($('.imgcon').children().length == 1) {
            $('.addimg').css('display', 'none');
        }
        if ($('.imgcon').children().length < 1) {
            $('.addimg').css('display', 'inline-block');
        }
    }
    //上传图片
    $(function () {
        $('#fileupload').fileupload({
            dataType: 'json',
            dropZone: $('#drag'),
            change: function (e, data) {
                var len = $('.imgcon').children().length;
                if (data.files.length > (1 - parseInt(len))) {
                    layer.msg('最多上传1张图片');
                    return false;
                }
            },
            start: function (e) {
                layer_msg = layer.msg('正在上传中…', {time: 100000000});
            },
            progressall: function (e, data) {
                $('.layui-layer-msg .layui-layer-content').html('已上传' + (data.loaded / data.total * 100).toFixed(2) + '%');
            },
            done: function (e, data) {
                layer.close(layer_msg);
                callback(data.result.msg);
            }
        });
        $('#drag').bind('drop dragover', function (e) {
            e.preventDefault();
        }).on('dragenter', function (e) {
            $(this).addClass('dragenter');
        }).on('drop', function (e) {
            $(this).removeClass('dragenter');
        }).on('dragleave', function (e) {
            $(this).removeClass('dragenter');
        });

        /**
         * 数据回调
         * @param id
         * @param value
         */
        function callback(value) {
            var $li = $(
                "<div class=\"img_div\">" +
                "<a οnclick=\"$(this).attr('href', $(this).find('img').attr('src'))\" type=\"button\"  data-lightbox=\"preview\">" +
                "<img src=\"" + value + "\" alt=\"\" style='height: 100px;width: 100px'>" +
                "</a>" +
                "<i class='layui-icon layui-icon-delete close' οnclick='closeImg(this)'></i>" +
                "</div>"
            );
            $('.imgcon').append($li);
            if ($('.imgcon').children().length == 1) {
                $('.addimg').css('display', 'none');
            }
            // var goods_img = '';
            // $('.imgcon .img_div').each(function () {
            //     goods_img += $(this).find('img').attr('src') + ',';
            // })
            $('.goods_img').val($(this).find('img').attr('src'));
        }

        //图片回显
        if ("$document.getElementsByName('name')" != '') {
            var goods_img = $(document.getElementsByName('name'));
            $('.goods_img').val(goods_img);
            // var arr = goods_img.split(',');
            // for (var i = 0; i < arr.length; i++) {
            //     if (arr[i] != '') {
            //         callback(arr[i]);
            //     }
            // }
            if ($('.imgcon').children().length == 1) {
                $('.addimg').css('display', 'none');
            }

        }
    });
</script>
<!--/请在上方写此页面业务相关的脚本-->
</body>
</html>

后端代码:

package com.mbyte.easy.admin.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mbyte.easy.admin.entity.MaterialMart;
import com.mbyte.easy.admin.entity.MaterialProject;
import com.mbyte.easy.admin.entity.ProjectSort;
import com.mbyte.easy.admin.entity.RecommendMenuSecond;
import com.mbyte.easy.admin.service.IMaterialMartService;
import com.mbyte.easy.admin.service.IMaterialProjectService;
import com.mbyte.easy.admin.service.IProjectSortService;
import com.mbyte.easy.common.controller.BaseController;
import com.mbyte.easy.common.web.AjaxResult;
import com.mbyte.easy.util.OssFileUtils;
import com.mbyte.easy.util.OssUtil;
import com.mbyte.easy.util.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
* <p>
* 物料商城内容管理
* </p>
* @author 吕金彪
* @since 2019-09-21
*/
@Slf4j
@Controller
@RequestMapping("/admin/materialMart")
public class MaterialMartController extends BaseController  {

    private String prefix = "admin/materialmart/";

    @Autowired
    private IMaterialMartService materialMartService;
    @Autowired
    private IMaterialProjectService materialProjectService;

    /**
    * 查询列表
    *
    * @param model
    * @param pageNo
    * @param pageSize
    * @param materialMart
    * @return
    */
    @RequestMapping
    public String index(Model model,@RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo,@RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize, MaterialMart materialMart) {
        Page<MaterialMart> page = new Page<MaterialMart>(pageNo, pageSize);
        IPage<MaterialMart> pageInfo = materialMartService.listPage(materialMart,page);
        model.addAttribute("searchInfo", materialMart);
        model.addAttribute("pageInfo", new PageInfo(pageInfo));
        return prefix+"list";
    }

    /**
    * 添加跳转页面
    * @return
    */
    @GetMapping("addBefore")
    public String addBefore(Model model){
        List<RecommendMenuSecond> recommendMenuSeconds = materialMartService.selectAllType();
        model.addAttribute("recommendMenuSeconds",recommendMenuSeconds);
        return prefix+"add";
    }

    /**
     * 添加页面图片保存跳转
     */
    String path = "";

    @PostMapping("addFile")
    @ResponseBody
    public AjaxResult addFile(@RequestParam("imageFile") MultipartFile imageFile) {
        path = OssFileUtils.uploadSingleFile(imageFile);
        return success(path);
    }

    /**
    * 添加
    * @param materialMart
    * @return
    */
    @RequestMapping("add")
    @ResponseBody
    public AjaxResult add(MaterialMart materialMart, String typeId){
        materialMart.setShareNumber(0);
        materialMart.setCreateTime(LocalDateTime.now());
        materialMart.setUpdateTime(LocalDateTime.now());
        if(materialMart.getPrice()==null){
            materialMart.setPrice(0);
        }
        //上传图片
        materialMart.setIcon(path);
        log.info("path:"+path);
        //分割字符串typeId
        String[] strArr= StringUtils.split(typeId,",");

        //插入新建项目
        int change = materialMartService.insertAllMart(materialMart);
        log.info("change"+change);
        //插入对应类型到中间表
        MaterialProject materialProject=new MaterialProject();
        for (int i = 0; i < strArr.length; i++) {
            materialProject.setMaterialMartId( materialMart.getId());
            materialProject.setProjectSortId(Long.valueOf(strArr[i]));
            materialProject.setCreateTime(LocalDateTime.now());
            materialProject.setUpdateTime(LocalDateTime.now());
            materialMartService.insertMartType(materialProject);
        }

        return toAjax(change);
    }
    /**
    * 添加跳转页面
    * @return
    */
    @GetMapping("editBefore/{id}")
    public String editBefore(Model model,@PathVariable("id")Long id){
        //回显所有数据
        model.addAttribute("materialMart",materialMartService.getById(id));
        QueryWrapper<MaterialProject> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("material_mart_id",id);
        List<MaterialProject> materialProjects = materialProjectService.selectList(queryWrapper);
        List<Long> list=new ArrayList<>();
        for (MaterialProject materiaProject:materialProjects) {
            list.add(materiaProject.getProjectSortId());
        }

        //回传所有类型
        List<RecommendMenuSecond> recommendMenuSeconds = materialMartService.selectAllType();
        model.addAttribute("materialProjects",list);
        model.addAttribute("recommendMenuSeconds",recommendMenuSeconds);
        return prefix+"edit";
    }
    /**
    * 添加
    * @param materialMart
    * @return
    */
    @PostMapping("edit")
    @ResponseBody
    public AjaxResult edit(MaterialMart materialMart,
                           @RequestParam(required = false) String title,
                           @RequestParam(required = false) String content,
                           @RequestParam(required = false) Integer price,
                           @RequestParam(required = false) Integer phoneNumber,
                           String typeId){
        materialMart.setTitle(title);
        materialMart.setContent(content);
        materialMart.setPrice(price);
        materialMart.setPhoneNumber(phoneNumber);
        materialMart.setUpdateTime(LocalDateTime.now());
        //上传图片
        materialMart.setIcon(path);

        if(typeId!=null&&typeId!="") {
            //分割字符串typeId
            String[] strArr = StringUtils.split(typeId, ",");
            //删除该项目原属类
            materialMartService.deleteByMartId(materialMart.getId());
            //插入类型到中间表
            MaterialProject materialProject = new MaterialProject();
            for (int i = 0; i < strArr.length; i++) {
                materialProject.setMaterialMartId(materialMart.getId());
                materialProject.setProjectSortId(Long.valueOf(strArr[i]));
                materialProject.setCreateTime(LocalDateTime.now());
                materialProject.setUpdateTime(LocalDateTime.now());
                materialMartService.insertMartType(materialProject);
            }
        }
        return toAjax(materialMartService.updateById(materialMart));
    }
    /**
    * 删除
    * @param id
    * @return
    */
    @GetMapping("delete/{id}")
    @ResponseBody
    public AjaxResult delete(@PathVariable("id") Long id){
        //删除该项目原属类
        materialMartService.deleteByMartId(id);
        return toAjax(materialMartService.removeById(id));
    }
    /**
    * 批量删除
    * @param ids
    * @return
    */
    @PostMapping("deleteAll")
    @ResponseBody
    public AjaxResult deleteAll(@RequestBody List<Long> ids){
        //删除项目原属类
        for (Long id:ids) {
            materialMartService.deleteByMartId(id);
        }
        return toAjax(materialMartService.removeByIds(ids));
    }

}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值