| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444 |
- <style type="text/css">
- .xm-label-block {
- background-color: #287bd2
- }
- </style>
- <!-- 正文开始 -->
- <div class="layui-fluid">
- <div class="layui-card">
- <div class="layui-card-body">
- <div class="layui-form toolbar" id="tbToolBar">
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label w-auto">用户名:</label>
- <div class="layui-input-inline mr0">
- <input name="keyword" class="layui-input" type="text" placeholder="用户名"/>
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label w-auto">分 类:</label>
- <div class="layui-input-inline mr0">
- <select id="categorySearch" name="category_id" lay-filter="xmFilter">
- <option value=""></option>
- </select>
- </div>
- </div>
- <div class="layui-inline" style="padding-right: 110px;">
- <button class="layui-btn icon-btn" lay-filter="formSubSearchUser" lay-submit>
- <i class="layui-icon"></i>查询
- </button>
- <button class="layui-btn icon-btn article-category">
- <i class="layui-icon"></i>文章分类
- </button>
- </div>
- </div>
- </div>
- <div class="layui-tab layui-tab-brief">
- <table id="dataTable" lay-filter="dataTable"></table>
- </div>
- </div>
- </div>
- </div>
- <script type="text/html" id="toolBarTpl">
- <div class="layui-btn-group fl">
- <a class="layui-btn layui-btn-sm layui-icon layui-icon-add-circle-fine article-add-btn"> 添加</a>
- <a table-data="{'url':'store/article/plectron','action':'put',param:{'status': 1}}" class="layui-btn layui-btn-sm layui-icon layui-icon-play table-toolbar-btn"> 启用</a >
- <a table-data="{'url':'store/article/plectron','action':'put',param:{'status': 0}}" confirm class="layui-btn layui-btn-sm layui-icon layui-icon-pause table-toolbar-btn"> 禁用</a>
- <a table-data="{'url':'store/article/plectron','action':'delete'}" confirm class="layui-btn layui-btn-sm layui-icon layui-icon-close table-toolbar-btn"> 删除</a>
- </div>
- </script>
- <!-- 表格操作列 -->
- <script type="text/html" id="tableBarUser">
- <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a>
- <a class="layui-btn layui-btn-danger layui-btn-xs" perm-show="delete:/store/article/<id>" lay-event="del">删除</a>
- </script>
- <!-- 表格状态列 -->
- <script type="text/html" id="tableStateUser">
- <input type="checkbox" value="{{ d.status }}" switch-data="{'url':'store/article/{{ d.id }}','action':'put'}" lay-skin="switch" lay-filter="ckDataTableState"
- lay-text="正常|发布" {{d.status==1?'checked':''}}/>
- </script>
- <!-- 表单弹窗 -->
- <script type="text/html" id="modelArticle">
- <form id="modelArticleForm" lay-filter="modelArticleForm" class="layui-form model-form">
- <input name="id" type="hidden"/>
- <div class="model-form-body" style="max-height: 500px;">
- <div class="layui-form-item">
- <label class="layui-form-label layui-form-required">文章标题</label>
- <div class="layui-input-block">
- <select name="category_id" id="categorySel" lay-verify="required" lay-filter="xmFilter">
- <option value=""></option>
- </select>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label layui-form-required">文章标题</label>
- <div class="layui-input-block">
- <input name="title" placeholder="请输入文章标题" type="text" class="layui-input" maxlength="80"
- lay-verType="tips" lay-verify="required" required/>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">文章摘要</label>
- <div class="layui-input-block">
- <textarea name="summary" placeholder="请输入文章摘要" class="layui-textarea" maxlength="200"></textarea>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label layui-form-required">文章内容</label>
- <div class="layui-input-block">
- <textarea name="content" id="articleCkEditor"></textarea>
- </div>
- </div>
- </div>
- <div class="layui-form-item text-right">
- <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
- <button class="layui-btn" perm-show="put:/store/article/<id>" lay-filter="modelSubmitArticle" lay-submit>保存</button>
- </div>
- </form>
- </script>
- <!--// 文章分类-->
- <script type="text/html" id="modelArticleCate">
- <table class="layui-table" id="ArticleCateTb" lay-filter="ArticleCateTb"></table>
- </script>
- <!--文章分类操作-->
- <script type="text/html" id="ArticleCateToolbar">
- <div class="layui-btn-group fl">
- <a class="layui-btn layui-btn-sm layui-icon layui-icon-add-circle-fine article-cate-add-btn"> 添加</a>
- <a class="layui-btn layui-btn-sm layui-icon layui-icon-refresh article-cate-refresh-btn"> 刷新</a>
- </div>
- </script>
- <!-- 表格操作列 -->
- <script type="text/html" id="ArticleCateTabbar">
- <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a>
- <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
- </script>
- <script type="text/html" id="modelArticleCateEdit">
- <form id="modelArticleCateEditForm" lay-filter="modelArticleCateEditForm" class="layui-form model-form">
- <input name="id" type="hidden"/>
- <div class="layui-form-item">
- <label class="layui-form-label">分类名称</label>
- <div class="layui-input-block">
- <input name="name" placeholder="请输入分类名称" type="text" class="layui-input" maxlength="20"
- lay-verType="tips" lay-verify="required" required/>
- </div>
- </div>
- <div class="layui-form-item text-right">
- <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
- <button class="layui-btn" perm-show="put:/store/product/category/<id>" lay-filter="modelSubmitArticleCateEdit" lay-submit>保存</button>
- </div>
- </form>
- </script>
- <!-- js部分 -->
- <script>
- layui.use(['layer', 'form', 'table', 'util', 'notice','md5', 'admin', 'setter','CKEDITOR'], function () {
- var $ = layui.jquery;
- var layer = layui.layer;
- var form = layui.form;
- var table = layui.table;
- var util = layui.util;
- var admin = layui.admin;
- var notice = layui.notice;
- var setter = layui.setter;
- var CKEDITOR = layui.CKEDITOR;
- // 获取所有分类
- var category = [];
- layer.load(2);
- admin.req('store/article/category', {}, function (res) {
- layer.closeAll('loading');
- if (10000 == res.code) {
- category = res.data.list;
- $.each(category, function (index, item) {
- $('#categorySearch').append('<option value="'+ item.id +'">'+ item.name +'</option>');// 下拉菜单里添加元素
- });
- form.render('select');
- } else {
- layer.msg('获取分类列表失败', {icon: 2});
- }
- }, 'GET');
- form.render('select');
- // 渲染表格
- var insTb = table.render({
- elem: '#dataTable',
- url: setter.baseServer + 'store/article',
- page: true,
- // toolbar: true,
- toolbar: '#toolBarTpl',
- cellMinWidth: 100,
- cols: [[
- {type: 'checkbox'},
- {field: 'title', title: '标题', width: 200},
- {field: 'category', title: '分类',templet: function (d) {
- return '<span class="layui-badge layui-badge-gray">' + d.category.name +'</span>' || '未分类';
- }},
- {field: 'summary', title: '摘要', width: 200},
- {
- field: 'created_at', sort: true, templet: function (d) {
- return util.toDateString(d.created_at * 1e3);
- }, title: '创建时间', width: 180
- },
- {field: 'status', templet: '#tableStateUser', title: '状态', width: 120},
- {fixed:'right', align: 'center', toolbar: '#tableBarUser', title: '操作', minWidth: 200}
- ]],
- done:function () {
- admin.renderPerm()
- }
- });
- // 分类
- $(document).on('click','.article-category', function () {
- showArticleCateTbModel();
- });
- // 添加
- $(document).on('click','.article-add-btn', function () {
- showEditModel();
- });
- // 搜索
- form.on('submit(formSubSearchUser)', function (data) {
- insTb.reload({where: data.field}, 'data');
- });
- // 工具条点击事件
- table.on('tool(dataTable)', function (obj) {
- var data = obj.data;
- var layEvent = obj.event;
- if (layEvent === 'edit') { // 修改
- showEditModel(data);
- } else if (layEvent === 'del') { // 删除
- layer.confirm('确定要删除“' + data.title + '”吗?', {
- skin: 'layui-layer-admin',
- shade: .1
- }, function (i) {
- layer.close(i);
- layer.load(2);
- admin.req('store/article/' + data.id, function (r) {
- layer.closeAll('loading');
- if (r.code === 10000) {
- notice.msg(r.message, {icon: 1});
- insTb.reload({}, 'data');
- } else {
- notice.msg(r.message, {icon: 2});
- }
- }, 'DELETE');
- });
- } else if (layEvent === 'restore') { // 恢复
- layer.confirm('确定要恢复“' + data.title + '”吗?', {
- skin: 'layui-layer-admin',
- shade: .1
- }, function (i) {
- layer.close(i);
- layer.load(2);
- admin.req('store/article/' + data.id + '/restore',function (r) {
- layer.closeAll('loading');
- if (r.code === 10000) {
- notice.msg(r.message, {icon: 1});
- insTb.reload({}, 'data');
- } else {
- notice.msg(r.message, {icon: 2});
- }
- }, 'POST');
- });
- }
- });
- // 显示表单弹窗
- var articleEdt;
- function showEditModel(data) {
- admin.open({
- id:"LAY_modelArticle",
- type: 1,
- area: '720px', //宽高
- title: (data ? '修改' : '添加') + '文章',
- content: $('#modelArticle').html(),
- success: function (layero, dIndex) {
- // 渲染富文本编辑器
- var articleEdt = CKEDITOR.replace('articleCkEditor', {height: 420,
- language: 'zh-cn', //简体中文
- toolbar : [
- //加粗 斜体, 下划线 穿过线 下标字 上标字
- ['Bold','Italic','Underline','Strike','Subscript','Superscript'],
- // 数字列表 实体列表 减小缩进 增大缩进
- ['NumberedList','BulletedList','-','Outdent','Indent'],
- //左对 齐 居中对齐 右对齐 两端对齐
- ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
- //超链接 取消超链接 锚点
- ['Link','Unlink','Anchor'],
- //图片 flash 表格 水平线 表情 特殊字符 分页符
- ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
- '/',
- // 样式 格式 字体 字体大小
- ['Styles','Format','Font','FontSize'],
- //文本颜色 背景颜色
- ['TextColor','BGColor'],
- //全屏 显示区块
- ['Maximize', 'ShowBlocks','-']
- ]
- });
- articleEdt.on('fileUploadRequest', function (evt) {
- let xhr = evt.data.fileLoader.xhr;
- xhr.setRequestHeader('Authorization', setter.getToken());
- });
- CKEDITOR.instances.pageCkEditor;
- $(layero).children('.layui-layer-content').css('overflow', 'visible');
- $.each(category, function (index, item) {
- let ichecked = "";
- if (data) ichecked = data.category_id === item.id ? "selected": "";
- $('#categorySel').append('<option value="'+ item.id +'" ' + ichecked + '>'+ item.name +'</option>');// 下拉菜单里添加元素
- });
- // 回显数据
- form.val('modelArticleForm', data);
- form.render('radio');
- form.render('select');
- // 表单提交事件
- form.on('submit(modelSubmitArticle)', function (form) {
- // 追加数据
- var content = articleEdt.getData();
- if (content === '') {
- notice.msg("文章内容不能为空", {icon: 2});
- return false;
- }
- form.field.content = articleEdt.getData();
- layer.load(2);
- admin.req('store/article' + (data ? '/' + form.field.id : ''), form.field, function (res) {
- layer.closeAll('loading');
- if (res.code === 10000) {
- layer.close(dIndex);
- notice.msg(res.message, {icon: 1});
- insTb.reload({}, 'data');
- } else {
- notice.msg(res.message, {icon: 2});
- }
- }, data ? 'PUT' : 'POST');
- return false;
- });
- return false;
- }
- });
- }
- var articleCateTb;
- // 展示商品分类
- function showArticleCateTbModel () {
- admin.open({
- id: 'LAY_ArticleCate',
- type: 1,
- area: '720px', //宽高
- title: '文章分类',
- content: $('#modelArticleCate').html(),
- success: function (layero, dIndex) {
- $(layero).children('.layui-layer-content').css('overflow', 'visible');
- // 渲染表格
- articleCateTb = table.render({
- elem: '#ArticleCateTb',
- url: setter.baseServer + 'store/article/category',
- page: true,
- height: 500,
- defaultToolbar: false,
- toolbar: "#ArticleCateToolbar",
- cols: [[
- {type: 'numbers'},
- {field: 'name', title: '分类名称', width: 150},
- {
- field: 'created_at', sort: true, templet: function (d) {
- return util.toDateString(d.created_at * 1e3);
- }, title: '创建时间', width: 180
- },
- {fixed: "right",align: 'center', toolbar: '#ArticleCateTabbar', title: '操作', minWidth: 200}
- ]]
- });
- // 工具条点击事件
- table.on('tool(ArticleCateTb)', function (obj) {
- var data = obj.data;
- var layEvent = obj.event;
- if (layEvent === 'edit') { // 修改
- showArticleCateEditModel(data);
- }else if (layEvent === 'del') { // 删除
- layer.confirm('确定要删除“' + data.name + '”吗?', {
- skin: 'layui-layer-admin',
- shade: .1
- }, function (i) {
- layer.close(i);
- layer.load(2);
- admin.req('store/article/category/delete/' + data.id, function (r) {
- layer.closeAll('loading');
- if (r.code === 10000) {
- notice.msg(r.message, {icon: 1});
- articleCateTb.reload({}, 'data');
- } else {
- notice.msg(r.message, {icon: 2});
- }
- }, 'DELETE');
- });
- }
- });
- }
- })
- }
- // 刷新
- $(document).on('click','.article-cate-refresh-btn', function () {
- articleCateTb.reload({}, 'data');
- });
- // 添加
- $(document).on('click','.article-cate-add-btn', function () {
- showArticleCateEditModel();
- });
- // 显示表单弹窗
- function showArticleCateEditModel(data) {
- admin.open({
- id: 'LAY_ArticleCateEdit',
- type: 1,
- area: ['420px'], //宽高
- title: (data ? '修改' : '添加') + '文章分类',
- content: $('#modelArticleCateEdit').html(),
- success: function (layero, dIndex) {
- $(layero).children('.layui-layer-content').css('overflow', 'visible');
- // 回显数据
- form.val('modelArticleCateEditForm',data);
- form.render('radio');
- form.render('select');
- // 表单提交事件
- form.on('submit(modelSubmitArticleCateEdit)', function (form) {
- layer.load(2);
- admin.req('store/article/category' + (data ? '/update/' + form.field.id : '/create'), form.field, function (res) {
- layer.closeAll('loading');
- if (res.code === 10000) {
- layer.close(dIndex);
- notice.msg(res.message, {icon: 1});
- articleCateTb.reload({}, 'data');
- } else {
- notice.msg(res.message, {icon: 2});
- }
- }, data ? 'PUT' : 'POST');
- return false;
- });
- }
- });
- }
- });
- </script>
|