<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>校园环境</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="/layui/css/layui.css" media="all"> <link rel="stylesheet" href="/style/edit.css" media="all"> <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 --> </head> <body> <style> #editor—wrapper { border: 1px solid #ccc; z-index: 100; /* 按需定义 */ } #toolbar-container { border-bottom: 1px solid #ccc; } #editor-container { height: 400px; } </style> <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"> <ul class="layui-tab-title"> <li class="layui-this">校园环境列表</li> <li>校园环境添加</li> </ul> <div class="layui-tab-content" style="height: 100px;"> <div class="layui-tab-item layui-show"><table class="layui-hide" id="classClass" style="padding:25px;" lay-filter="classClass"></table></div> <div class="layui-tab-item"> <blockquote class="layui-elem-quote layui-text"> 温馨提示: 1. <font style="color:#01aaed;">带有红色”*“的为必填项;</font> </blockquote> <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"> <legend>校园环境</legend> </fieldset> <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">环境标题</label> <div class="layui-input-block"> <input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input"> </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="test1">上传图片</button> <div class="layui-upload-list"> <img class="layui-upload-img" id="demo1"> <p id="demoText"></p> </div> <div style="width: 95px;"> <div class="layui-progress layui-progress-big" lay-showpercent="yes" lay-filter="demo"> <div class="layui-progress-bar" lay-percent=""></div> </div> </div> </div> </div> <input type="hidden" name="img" id="img"> <div class="layui-form-item layui-form-text"> <label class="layui-form-label">环境介绍</label> <div class="layui-input-block"> <div id="editor—wrapper"> <div id="toolbar-container"><!-- 工具栏 --></div> <div id="editor-container"><!-- 编辑器 --></div> </div> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button type="submit" class="layui-btn" lay-submit="" lay-filter="subdata">立即提交</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </form> </div> </div> </div> <script src="/layui/layui.js" charset="utf-8"></script> <script src="/style/edit.js" charset="utf-8"></script> <!-- 注意:如果你直接复制所有代码到本地,上述 JS 路径需要改成你本地的 --> <script type="text/html" id="imgshow"> <!-- 这里的 checked 的状态只是演示 --> <img src="/{{d.log}}"> </script> <script type="text/html" id="tool"> <!-- 这里的 checked 的状态只是演示 --> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> <script> const { createEditor, createToolbar } = window.wangEditor const editorConfig = { placeholder: '请编辑新闻介绍', MENU_CONF: {}, onChange(editor) { const html = editor.getHtml() console.log('editor content', html) // 也可以同步到 <textarea> } } editorConfig.MENU_CONF['uploadImage'] = { server: '/admin_index/upload', // 上传图片地址 // server: 'http://106.12.198.214:3000/api/upload-img-10s', // 用于测试 timeout // server: 'http://106.12.198.214:3000/api/upload-img-failed', // 用于测试 failed // server: 'http://106.12.198.214:3000/api/xxx', // 用于测试 404 timeout: 5 * 1000, // 5s fieldName: 'file', meta: { type: 1 }, metaWithUrl: true, // 参数拼接到 url 上 headers: { Accept: 'text/x-json' }, maxFileSize: 10 * 1024 * 1024, // 10M base64LimitSize: 5 * 1024, // 5kb 以下插入 base64 onBeforeUpload(files) { console.log('onBeforeUpload', files) return files // 返回哪些文件可以上传 // return false 会阻止上传 }, onProgress(progress) { console.log('onProgress', progress) }, onSuccess(file, res) { console.log('onSuccess', file, res) }, onFailed(file, res) { alert(res.message) console.log('onFailed', file, res) }, onError(file, err, res) { alert(err.message) console.error('onError', file, err, res) }, // // 用户自定义插入图片 // customInsert(res, insertFn) { // console.log('customInsert', res) // const imgInfo = res.data[0] || {} // const { url, alt, href } = imgInfo // if (!url) throw new Error(`Image url is empty`) // // 自己插入图片 // console.log('自己插入图片', url) // insertFn(url, alt, href) // }, // // 用户自定义上传图片 // customUpload(file, insertFn) { // console.log('customUpload', file) // return new Promise((resolve) => { // // 插入一张图片,模拟异步 // setTimeout(() => { // const src = `https://www.baidu.com/img/flexible/logo/pc/result@2.png?r=${Math.random()}` // insertFn(src, '百度 logo', src) // resolve('ok') // }, 500) // }) // }, // // 自定义选择图片(如图床) // customBrowseAndUpload(insertFn) { // alert('自定义选择图片,如弹出图床') // // 插入一张图片,模拟异步 // setTimeout(() => { // const src = 'https://www.baidu.com/img/flexible/logo/pc/result@2.png' // insertFn(src, '百度 logo', src) // 插入图片 // }, 500) // }, } const editor = createEditor({ selector: '#editor-container', html: '', config: editorConfig, mode: 'default', // or 'simple' }) const toolbarConfig = {} const toolbar = createToolbar({ editor, selector: '#toolbar-container', config: toolbarConfig, mode: 'default', // or 'simple' }) layui.use(['layedit','table','upload','element','form','layer'], function(){ var layedit = layui.layedit ,table = layui.table ,form = layui.form ,layer = layui.layer ,upload = layui.upload ,element = layui.element ,$ = layui.jquery; table.render({ elem: '#classClass' ,url: '/admin_new/list' ,toolbar: '#toolbarDemo' ,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增 ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可 title: '提示' ,layEvent: 'LAYTABLE_TIPS' ,icon: 'layui-icon-tips' }] ,where: {type: 3} ,page: true ,cols: [[ {field:'id', width:80, title: '序号'} ,{field:'title',width:180, title: '校园环境标题'} ,{templet: '#imgshow',width:180, title: '校园环境图片'} ,{field:'content', title: '校园环境简介',minWidth:'500'} ,{field:'created',width:180, title: '修改时间'} ,{templet: '#tool',width:200, title: '操作'} ]] }); table.on('tool(classClass)', function(obj){ console.log(obj) var data = obj.data; if(obj.event === 'del'){ layer.confirm('确定要删除数据嘛', function(index){ $.post('/admin_index/delete',{tablename:'active',id:data.id},function(obj){ if(obj.status != 1){ return layer.msg(obj.msg); }else{ //示范一个公告层 layer.open({ type: 1 ,title: false //不显示标题栏 ,closeBtn: false ,area: '300px;' ,shade: 0.8 ,id: 'LAY_layuipro' //设定一个id,防止重复弹出 ,btn: '返回列表' ,btnAlign: 'c' ,moveType: 1 //拖拽模式,0或者1 ,content: '<div style="padding: 50px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: bold;font-size: 20px;text-align: center;">删除成功</div>' ,yes: function(){ history.go(0) } }); } }); }); } }); $('.site-demo-layedit').on('click', function(){ var type = $(this).data('type'); active[type] ? active[type].call(this) : ''; }); //监听提交 form.on('submit(subdata)', function(data){ var datas = data.field datas.content = editor.getHtml(); datas.type = 3; $.post('/admin_new/save',data.field,function(obj){ if(obj.status != 1){ return layer.msg(obj.msg); }else{ //示范一个公告层 layer.open({ type: 1 ,title: false //不显示标题栏 ,closeBtn: false ,area: '300px;' ,shade: 0.8 ,id: 'LAY_layuipro' //设定一个id,防止重复弹出 ,btn: '返回列表' ,btnAlign: 'c' ,moveType: 1 //拖拽模式,0或者1 ,content: '<div style="padding: 50px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: bold;font-size: 20px;text-align: center;">添加成功</div>' ,yes: function(){ history.go(0) } }); } }); return false; }); //常规使用 - 普通图片上传 var uploadInst = upload.render({ elem: '#test1' ,url: '/admin_index/upload' //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。 ,before: function(obj){ //预读本地文件示例,不支持ie8 obj.preview(function(index, file, result){ $('#demo1').attr('src', result); //图片链接(base64) }); element.progress('demo', '0%'); //进度条复位 layer.msg('上传中', {icon: 16, time: 0}); } ,done: function(res){ //如果上传失败 if(res.status != 1){ return layer.msg('上传失败'); } $('#img').val(res.data); //置空上传失败的状态 //上传成功的一些操作 //…… $('#demoText').html(''); //置空上传失败的状态 } ,error: function(){ //演示失败状态,并实现重传 var demoText = $('#demoText'); demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>'); demoText.find('.demo-reload').on('click', function(){ uploadInst.upload(); }); } //进度条 ,progress: function(n, elem, e){ element.progress('demo', n + '%'); //可配合 layui 进度条元素使用 if(n == 100){ layer.msg('上传完毕', {icon: 1}); } } }); }); </script> </body> </html>