mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2026-07-12 10:31:07 +08:00
Compare commits
10 Commits
de65ab2b66
...
c7a74395f5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c7a74395f5 | ||
|
|
f1da20ad00 | ||
|
|
cf4b87cee4 | ||
|
|
4c31c22ddc | ||
|
|
f71819fc16 | ||
|
|
96f2c438a2 | ||
|
|
0d2871b732 | ||
|
|
cd718510b3 | ||
|
|
c379d6224e | ||
|
|
5809343603 |
@ -26,7 +26,7 @@ class Data extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取轮播图片数据
|
||||
* 获取图片内容数据
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
@ -34,7 +34,7 @@ class Data extends Controller
|
||||
public function getSlider()
|
||||
{
|
||||
$data = sysdata(input('keys', 'slider'));
|
||||
$this->success('获取轮播图片', $data);
|
||||
$this->success('获取图片内容', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -11,14 +11,6 @@ use think\admin\Controller;
|
||||
*/
|
||||
class Config extends Controller
|
||||
{
|
||||
/**
|
||||
* 页面类型
|
||||
* @var array
|
||||
*/
|
||||
protected $pageTypes = [
|
||||
'关于我们' => '关于我们',
|
||||
'用户协议' => '用户协议',
|
||||
];
|
||||
|
||||
/**
|
||||
* 微信小程序配置
|
||||
@ -30,8 +22,9 @@ class Config extends Controller
|
||||
*/
|
||||
public function wxapp()
|
||||
{
|
||||
$this->skey = 'wxapp';
|
||||
$this->title = '微信小程序配置';
|
||||
$this->__sysconf('wxapp');
|
||||
$this->__sysdata('wxapp');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -44,85 +37,11 @@ class Config extends Controller
|
||||
*/
|
||||
public function cropper()
|
||||
{
|
||||
$this->title = '邀请二维码设置';
|
||||
$this->skey = 'cropper';
|
||||
$this->title = '邀请二维码设置';
|
||||
$this->__sysdata('cropper');
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容页面管理
|
||||
* @auth true
|
||||
* @menu true
|
||||
*/
|
||||
public function pageHome()
|
||||
{
|
||||
$this->title = '内容页面管理';
|
||||
$this->fetch('page_home');
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容页面编辑
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function pageEdit()
|
||||
{
|
||||
$this->skey = input('type') ?: $this->pageTypes[0];
|
||||
$this->title = '编辑' . $this->pageTypes[$this->skey] ?? '';
|
||||
$this->__sysdata('page_form', 'javascript:history.back()');
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页推荐位管理
|
||||
* @menu true
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function iconHome()
|
||||
{
|
||||
$this->skey = 'IconHome';
|
||||
$this->title = '首页推荐位管理';
|
||||
$this->__sysdata('slider');
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页轮播图片
|
||||
* @menu true
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function sliderHome()
|
||||
{
|
||||
$this->skey = 'SliderHome';
|
||||
$this->title = '首页轮播图片';
|
||||
$this->__sysdata('slider');
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示并保存配置
|
||||
* @param string $template 模板文件名称
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
private function __sysconf(string $template)
|
||||
{
|
||||
if ($this->request->isGet()) {
|
||||
$this->fetch($template);
|
||||
}
|
||||
if ($this->request->isPost()) {
|
||||
$data = $this->request->post();
|
||||
foreach ($data as $k => $v) sysconf($k, $v);
|
||||
$this->success('配置保存成功!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示并保存数据
|
||||
* @param string $template 模板文件
|
||||
|
||||
87
app/data/controller/base/Pager.php
Normal file
87
app/data/controller/base/Pager.php
Normal file
@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace app\data\controller\base;
|
||||
|
||||
use think\admin\Controller;
|
||||
use think\admin\model\SystemBase;
|
||||
|
||||
/**
|
||||
* 页面内容管理
|
||||
* Class Pager
|
||||
* @package app\data\controller\base
|
||||
*/
|
||||
class Pager extends Controller
|
||||
{
|
||||
/**
|
||||
* 字典类型
|
||||
* @var string
|
||||
*/
|
||||
protected $type = '页面内容';
|
||||
|
||||
/**
|
||||
* 页面类型
|
||||
* @var array
|
||||
*/
|
||||
protected $types = [];
|
||||
|
||||
/**
|
||||
* 控制器初始化
|
||||
* @return void
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
$this->types = SystemBase::mk()->items($this->type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容页面管理
|
||||
* @auth true
|
||||
* @menu true
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->title = '内容页面管理';
|
||||
$this->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容页面编辑
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$this->skey = input('get.type', '');
|
||||
$this->base = $this->types[$this->skey] ?? [];
|
||||
if (empty($this->base)) $this->error('未配置基础数据!');
|
||||
$this->title = "编辑{$this->base['name']}";
|
||||
$this->sysdata();
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示并保存数据
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
private function sysdata()
|
||||
{
|
||||
if ($this->request->isGet()) {
|
||||
$this->data = sysdata($this->skey);
|
||||
$this->fetch('form');
|
||||
} elseif ($this->request->isPost()) {
|
||||
if (is_string(input('data'))) {
|
||||
$data = json_decode(input('data'), true) ?: [];
|
||||
} else {
|
||||
$data = $this->request->post();
|
||||
}
|
||||
if (sysdata($this->skey, $data) !== false) {
|
||||
$this->success('内容保存成功!', 'javascript:history.back()');
|
||||
} else {
|
||||
$this->error('内容保存失败,请稍候再试!');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
94
app/data/controller/base/Slider.php
Normal file
94
app/data/controller/base/Slider.php
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace app\data\controller\base;
|
||||
|
||||
use think\admin\Controller;
|
||||
use think\admin\model\SystemBase;
|
||||
|
||||
/**
|
||||
* 图片内容管理
|
||||
* Class Slider
|
||||
* @package app\data\controller\base
|
||||
*/
|
||||
class Slider extends Controller
|
||||
{
|
||||
/**
|
||||
* 跳转规则定义
|
||||
* @var string[]
|
||||
*/
|
||||
protected $rules = [
|
||||
'#' => '不跳转',
|
||||
'LK' => '自定义链接',
|
||||
'NL' => '新闻资讯列表',
|
||||
'NS' => '新闻资讯详情',
|
||||
];
|
||||
|
||||
/**
|
||||
* 数据类型
|
||||
* @var string
|
||||
*/
|
||||
protected $type = '图片内容';
|
||||
|
||||
/**
|
||||
* 页面类型
|
||||
* @var array
|
||||
*/
|
||||
protected $types = [];
|
||||
|
||||
/**
|
||||
* 控制器初始化
|
||||
* @return void
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
$this->types = SystemBase::mk()->items($this->type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片内容管理
|
||||
* @auth true
|
||||
* @menu true
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->title = '图片内容管理';
|
||||
$this->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑图片内容
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$this->skey = input('get.type', '');
|
||||
$this->base = $this->types[$this->skey] ?? [];
|
||||
if (empty($this->base)) $this->error('未配置基础数据!');
|
||||
$this->number = 10;
|
||||
$this->sysdata();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存图片内容
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
private function sysdata()
|
||||
{
|
||||
if ($this->request->isGet()) {
|
||||
$this->data = sysdata($this->skey);
|
||||
$this->title = "{$this->base['name']}管理";
|
||||
$this->fetch('form');
|
||||
} else {
|
||||
if (sysdata($this->skey, json_decode(input('data'), true))) {
|
||||
$this->success("{$this->base['name']}保存成功!");
|
||||
} else {
|
||||
$this->error("{$this->base['name']}保存失败,请稍候再试!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7,6 +7,8 @@ use app\data\model\DataNewsMark;
|
||||
use app\data\service\NewsService;
|
||||
use think\admin\Controller;
|
||||
use think\admin\extend\CodeExtend;
|
||||
use think\admin\helper\QueryHelper;
|
||||
use think\admin\model\SystemBase;
|
||||
|
||||
/**
|
||||
* 文章内容管理
|
||||
@ -25,24 +27,14 @@ class Item extends Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->title = '文章内容管理';
|
||||
$query = DataNewsItem::mQuery();
|
||||
$query->like('mark,name')->dateBetween('create_at');
|
||||
$query->where(['deleted' => 0])->order('sort desc,id desc')->page();
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章内容选择器
|
||||
* @login true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function select()
|
||||
{
|
||||
$query = DataNewsItem::mQuery();
|
||||
$query->equal('status')->like('name')->dateBetween('create_at');
|
||||
$query->where(['deleted' => 0])->order('sort desc,id desc')->page();
|
||||
$this->type = input('get.type', 'index');
|
||||
DataNewsItem::mQuery($this->get)->layTable(function () {
|
||||
$this->title = '文章内容管理';
|
||||
$this->marks = DataNewsMark::items();
|
||||
}, function (QueryHelper $query) {
|
||||
$query->like('code,name')->like('mark', ',')->dateBetween('create_at');
|
||||
$query->where(['status' => intval($this->type === 'index'), 'deleted' => 0]);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@ -126,4 +118,17 @@ class Item extends Controller
|
||||
{
|
||||
DataNewsItem::mDelete();
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章内容选择
|
||||
* @login true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function select()
|
||||
{
|
||||
$this->get['status'] = 1;
|
||||
$this->index();
|
||||
}
|
||||
}
|
||||
@ -5,11 +5,19 @@ namespace app\data\model;
|
||||
use think\admin\Model;
|
||||
|
||||
/**
|
||||
*
|
||||
* 新闻内容模型
|
||||
* Class DataNewsItem
|
||||
* @package app\data\model
|
||||
*/
|
||||
class DataNewsItem extends Model
|
||||
{
|
||||
|
||||
/**
|
||||
* 格式化创建时间
|
||||
* @param string $value
|
||||
* @return string
|
||||
*/
|
||||
public function getCreateAtAttr(string $value): string
|
||||
{
|
||||
return format_datetime($value);
|
||||
}
|
||||
}
|
||||
@ -10,6 +10,19 @@ use think\admin\Model;
|
||||
*/
|
||||
class DataNewsMark extends Model
|
||||
{
|
||||
/**
|
||||
* 获取标签数据
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public static function items(): array
|
||||
{
|
||||
$query = static::mk()->where(['status' => 1, 'deleted' => 0]);
|
||||
return $query->field('id,name,remark')->order('sort desc,id desc')->select()->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化创建时间
|
||||
* @param string $value
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
{extend name="../../admin/view/main"}
|
||||
|
||||
{block name='content'}
|
||||
<div class="layui-row layui-col-space20 portal-block-container notselect">
|
||||
{foreach $pageTypes as $key=>$type}
|
||||
<div class="layui-col-sm4 layui-col-md4 layui-col-lg3">
|
||||
<!--{if auth('pageEdit')}-->
|
||||
<div class="pointer" data-open="{:url('pageEdit')}?type={$key}">
|
||||
<div class="portal-block-item nowrap think-bg-violet">
|
||||
<div>编辑页面内容</div>
|
||||
<div style="font-size:26px">{$type|default=''}</div>
|
||||
</div>
|
||||
<i class="portal-block-icon layui-icon layui-icon-read"></i>
|
||||
</div>
|
||||
<!--{else}-->
|
||||
<div class="portal-block-item nowrap think-bg-violet">
|
||||
<div>编辑页面内容</div>
|
||||
<div style="font-size:26px">{$type|default=''}</div>
|
||||
</div>
|
||||
<i class="portal-block-icon layui-icon layui-icon-read"></i>
|
||||
<!--{/if}-->
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
{/block}
|
||||
@ -1,124 +0,0 @@
|
||||
{extend name="../../admin/view/main"}
|
||||
|
||||
{block name="content"}
|
||||
<div class="think-box-shadow">
|
||||
<form autocomplete="off" class='layui-form layui-card' id="DataForm" onsubmit="return false;" style="width:850px">
|
||||
<div class="layui-card-header text-center margin-20 font-w7 color-text layui-bg-gray border-radius-5">
|
||||
{$title|default='图片数据管理'}<span class="color-desc font-s12"> ( 建议上传图片尺寸为 690px 250px )</span>
|
||||
</div>
|
||||
<div class="layui-card-body margin-top-20 padding-bottom-0">
|
||||
<div class="padding-left-20" data-rule-list>
|
||||
<div class="layui-form-item text-center">
|
||||
<a class="layui-btn layui-btn-primary" data-item-add>添加图片</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hr-line-dashed margin-top-30"></div>
|
||||
<div class="layui-form-item text-center padding-left-20">
|
||||
<button class="layui-btn" data-submit>保存数据</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="layui-hide" data-item-tpl>
|
||||
<div class="layui-form-item" data-rule-item>
|
||||
<div class="layui-input-inline nowrap relative" style="width:180px">
|
||||
<input data-upload-image name="img[]" type="hidden">
|
||||
</div>
|
||||
<label class="layui-input-inline nowrap relative margin-bottom-5" style="width:300px">
|
||||
<b class="notselect color-green margin-right-5">图片名称</b>
|
||||
<input class="layui-input inline-block" name="name[]" placeholder="请输入图片名称" required style="width:240px" value="#">
|
||||
<a class="layui-btn layui-btn-primary" data-item-up><i class="layui-icon layui-icon-up margin-0"></i></a>
|
||||
<a class="layui-btn layui-btn-primary" data-item-dn><i class="layui-icon layui-icon-down margin-0"></i></a>
|
||||
<a class="layui-btn layui-btn-primary" data-item-rm><i class="layui-icon layui-icon-close margin-0"></i></a>
|
||||
</label>
|
||||
<label class="layui-input-inline nowrap relative margin-bottom-5" style="width:300px">
|
||||
<b class="notselect color-green margin-right-5">跳转规则</b>
|
||||
<input class="layui-input inline-block" name="rule[]" placeholder="请输入跳转规则" required style="width:240px" value="#">
|
||||
<a class="layui-btn layui-btn-primary" data-prefix="NEWS" data-rule-page="{:url('data/news.item/select')}">选择文章</a>
|
||||
<a class="layui-btn layui-btn-primary" data-prefix="GOODS" data-rule-page="{:url('data/shop.goods/select')}">选择商品</a>
|
||||
<span class="help-block block notselect">若要跳转页面,请选择对应的数据或填写跳转的 URL 地址,不跳转请填写 “#” 号占位。</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label class="layui-hide">
|
||||
<textarea id="DefaultData">{$data|default=[]|json_encode}</textarea>
|
||||
</label>
|
||||
|
||||
<style>
|
||||
[data-rule-page] {
|
||||
margin-top: -3px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
[data-rule-item] {
|
||||
padding-left: 40px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
[data-rule-item] .uploadimage {
|
||||
width: 135px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
[data-item-dn], [data-item-up], [data-item-rm] {
|
||||
margin-top: -4px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
(function (data) {
|
||||
/*! 默认数据渲染 */
|
||||
if (data.length < 1) addItem();
|
||||
else data.forEach(function (item) {
|
||||
addItem(item)
|
||||
});
|
||||
/*! 初始化上传插件 */
|
||||
(function initUpload() {
|
||||
$('[data-rule-list] input[data-upload-image]').map(function () {
|
||||
if (!$(this).attr('inited')) $(this).attr('inited', true).uploadOneImage();
|
||||
});
|
||||
setTimeout(initUpload, 100);
|
||||
})();
|
||||
/*! 数据选项操作 */
|
||||
$('[data-rule-list]').on('click', '[data-rule-page]', function ($that) {
|
||||
$that = $(this), top.setItemValue = function (value) {
|
||||
$that.prevAll('input').val(($that.data('prefix') + '#{v}').replace('{v}', value));
|
||||
};
|
||||
$.form.iframe($(this).data('rule-page'), $that.data('title') || $that.text(), ['930px', '600px']);
|
||||
}).on('click', '[data-item-add]', function () {
|
||||
addItem();
|
||||
}).on('click', '[data-item-rm]', function () {
|
||||
$(this).parents('[data-rule-item]').remove();
|
||||
}).on('click', '[data-item-up]', function () {
|
||||
var item = $(this).parents('[data-rule-item]');
|
||||
var prev = item.prev('[data-rule-item]');
|
||||
if (item.index() > 0) item.insertBefore(prev);
|
||||
}).on('click', '[data-item-dn]', function () {
|
||||
var item = $(this).parents('[data-rule-item]');
|
||||
var next = item.next('[data-rule-item]');
|
||||
if (next) item.insertAfter(next);
|
||||
});
|
||||
/*! 表单提交处理 */
|
||||
$('form#DataForm').vali(function (ret) {
|
||||
var idx, data = [];
|
||||
for (idx in ret.img) {
|
||||
if (!ret.img[idx]) return $.msg.tips('请上传展示图片哦!');
|
||||
data.push({img: ret.img[idx], rule: ret.rule[idx], name: ret.name[idx]});
|
||||
}
|
||||
$.form.load('{$request->url()}', {data: JSON.stringify(data)}, 'post');
|
||||
});
|
||||
})(JSON.parse($('#DefaultData').val() || '[]') || []);
|
||||
|
||||
/*! 添加数据选项 */
|
||||
function addItem(data) {
|
||||
this.$html = $($('[data-item-tpl]').html());
|
||||
if (data) for (this.index in data) this.$html.find('[name^="' + this.index + '"]').val(data[this.index]);
|
||||
$('[data-item-add]').parent().before(this.$html), setTimeout(function () {
|
||||
$.form.reInit();
|
||||
}, 100);
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
{block name="content"}
|
||||
<div class="think-box-shadow">
|
||||
<form action="{:sysuri()}" autocomplete="off" class="layui-form layui-card" data-auto="true" method="post" style="width:850px">
|
||||
<form action="{:sysuri()}" class="layui-form layui-card" data-auto="true" method="post" style="width:850px">
|
||||
<div class="layui-card-header text-center margin-20 font-w7 color-text layui-bg-gray border-radius-5">
|
||||
{$title|default='小程序接口配置'}<span class="color-desc font-s12"> ( 微信公众号平台配置获取 )</span>
|
||||
</div>
|
||||
@ -10,13 +10,13 @@
|
||||
|
||||
<label class="layui-form-item margin-bottom-20 block relative">
|
||||
<span class="color-green font-s14 font-w7 margin-right-10">小程序 AppId</span>
|
||||
<input class="layui-input" maxlength="18" name="data.wxapp_appid" pattern="^wx[0-9a-z]{16}$" placeholder="请输入18位小程序 AppID" required value="{:sysconf('data.wxapp_appid')}">
|
||||
<input class="layui-input" maxlength="18" name="appid" pattern="^wx[0-9a-z]{16}$" placeholder="请输入18位小程序 AppID" required value="{$data.appid|default=''}">
|
||||
<span class="help-block"><b>必选</b>,微信小程序 AppID 需要微信公众号平台获取!</span>
|
||||
</label>
|
||||
|
||||
<label class="layui-form-item margin-bottom-20 block relative">
|
||||
<span class="color-green font-s14 font-w7 margin-right-10">小程序密钥 AppSecret</span>
|
||||
<input class="layui-input" maxlength="32" name="data.wxapp_appkey" pattern="^[0-9a-z]{32}$" placeholder="请输入32位小程序 AppSecret" required value="{:sysconf('data.wxapp_appkey')}">
|
||||
<input class="layui-input" maxlength="32" name="appkey" pattern="^[0-9a-z]{32}$" placeholder="请输入32位小程序 AppSecret" required value="{$data.appkey|default=''}">
|
||||
<span class="help-block"><b>必选</b>,微信小程序 AppSecret 需要微信公众号平台获取!</span>
|
||||
</label>
|
||||
|
||||
|
||||
@ -1,36 +1,35 @@
|
||||
{extend name="../../admin/view/main"}
|
||||
|
||||
{block name='content'}
|
||||
<form action="{:sysuri()}" autocomplete="off" class="layui-form layui-card" data-auto="true" method="post">
|
||||
<form action="{:sysuri()}?type={$get.type|default=''}" class="layui-card layui-form" data-auto="true" method="post">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<label class="layui-form-item relative block">
|
||||
<span class="color-green font-w7">页面名称</span>
|
||||
<span class="color-desc margin-left-5">Page Name</span>
|
||||
<input class="layui-input" name="name" placeholder="请输入页面名称" required value='{$data.name|default=""}'>
|
||||
<span class="help-label"><b>页面名称</b>Page Name</span>
|
||||
<input class="layui-input" name="name" placeholder="请输入页面名称" required value='{$data.name|default=$base.name}'>
|
||||
</label>
|
||||
|
||||
<div class="layui-form-item relative block">
|
||||
<span class="color-green font-w7 label-required-prev">页面内容</span>
|
||||
<span class="color-desc margin-left-5">Page Content</span>
|
||||
<label class="relative block">
|
||||
<textarea class="layui-hide" name="content">{$data.content|default=''}</textarea>
|
||||
<div class="layui-form-item label-required-prev">
|
||||
<span class="help-label"><b>页面内容</b>Page Content</span>
|
||||
<label class="relative block" style="height:606px">
|
||||
<textarea class="layui-hide" name="content">{$data.content|default=$base.content}</textarea>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<input type="hidden" name="type" value="{$get.type|default=''}">
|
||||
|
||||
<div class="layui-form-item text-center">
|
||||
<button class="layui-btn" type="submit">保存数据</button>
|
||||
<button class="layui-btn layui-btn-danger" data-confirm="确定要取消编辑吗?" data-history-back type='button'>取消编辑</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
require(['ckeditor'], function () {
|
||||
window.createEditor('[name=content]', {height: 535});
|
||||
window.createEditor('[name=content]', {height: 533});
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
28
app/data/view/base/pager/index.html
Normal file
28
app/data/view/base/pager/index.html
Normal file
@ -0,0 +1,28 @@
|
||||
{extend name="../../admin/view/main"}
|
||||
|
||||
{block name='content'}
|
||||
<div class="think-box-notify">温馨提示:如需添加新内容,需要在系统管理的基础数据添加类似为 “<b>{$type|default=''}</b>” 的基础数据。</div>
|
||||
<div class="layui-row layui-col-space20 portal-block-container notselect">
|
||||
{foreach $types as $key=>$type}
|
||||
<div class="layui-col-sm4 layui-col-md4 layui-col-lg3">
|
||||
<!--{if auth('edit')}-->
|
||||
<div class="pointer" data-open="{:url('edit')}?type={$key}">
|
||||
<div class="portal-block-item nowrap think-bg-violet">
|
||||
<div class="font-s14">编辑页面</div>
|
||||
<div class="font-s16">{$type.name|default=''}</div>
|
||||
</div>
|
||||
<i class="portal-block-icon layui-icon layui-icon-read"></i>
|
||||
</div>
|
||||
<!--{else}-->
|
||||
<div>
|
||||
<div class="portal-block-item nowrap think-bg-violet">
|
||||
<div class="font-s14">编辑页面</div>
|
||||
<div class="font-s16">{$type.name|default=''}</div>
|
||||
</div>
|
||||
<i class="portal-block-icon layui-icon layui-icon-read"></i>
|
||||
</div>
|
||||
<!--{/if}-->
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
{/block}
|
||||
141
app/data/view/base/slider/form.html
Normal file
141
app/data/view/base/slider/form.html
Normal file
@ -0,0 +1,141 @@
|
||||
{extend name="../../admin/view/main"}
|
||||
|
||||
{block name="content"}
|
||||
<style>
|
||||
[data-upload-image] + .uploadimage {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 0 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="think-box-shadow">
|
||||
<form id="DataForm" class='layui-form' autocomplete='off' action="{:sysuri()}?type={$get.type|default=''}" onsubmit="return false" style="width:850px">
|
||||
<div class="text-center padding-top-10">
|
||||
<b class="color-text font-s16">{$title|default='图片内容管理'}</b>
|
||||
<div class="color-desc font-s12">{$base.content|default='图片尺寸:1080px * 1882px'}</div>
|
||||
<!--{if $app->isDebug() && !empty($skey)}-->
|
||||
<i class="color-desc pull-right">{$skey}</i>
|
||||
<!--{/if}-->
|
||||
</div>
|
||||
<div class="hr-line-dashed margin-bottom-25"></div>
|
||||
<div class="layui-form-item" data-item-box>
|
||||
<div class="layui-form-item text-center">
|
||||
<a class="layui-btn layui-btn-normal" data-item-add>添加选项</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="layui-form-item text-center">
|
||||
<button class="layui-btn" data-submit>保存数据</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div data-item-tpl class="layui-hide">
|
||||
<div class="layui-form-item" style="padding-left:80px" data-news-item>
|
||||
<div class="layui-input-inline text-center" style="width:140px">
|
||||
<input data-upload-image name="img[]" type="hidden">
|
||||
</div>
|
||||
<div class="nowrap margin-bottom-5">
|
||||
<label class="inline-block relative text-middle">
|
||||
<span class="color-green font-s13 margin-right-5">图标标题</span>
|
||||
<input class="layui-input inline-block" style="width:280px" name="title[]" value="#" required placeholder="请输入图标标题">
|
||||
</label>
|
||||
<div class="inline-block margin-left-5">
|
||||
<a data-item-up class="layui-btn layui-btn-primary"><i class="layui-icon layui-icon-up"></i></a>
|
||||
<a data-item-dn class="layui-btn layui-btn-primary"><i class="layui-icon layui-icon-down"></i></a>
|
||||
<a data-item-rm class="layui-btn layui-btn-primary"><i class="layui-icon layui-icon-close"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nowrap margin-bottom-5">
|
||||
<label class="inline-block relative">
|
||||
<span class="color-green font-s13 margin-right-5">跳转规则</span>
|
||||
<input class="layui-input inline-block" style="width:280px" name="url[]" value="#" required placeholder="请输入跳转规则">
|
||||
</label>
|
||||
<div class="inline-block margin-left-5">
|
||||
<select class="layui-select" name="type[]" lay-filter="TypeSelect" data-item-rule lay-ignore>
|
||||
{foreach $rules as $k=>$v}
|
||||
<option value="{$k}">{$k} - {$v}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="help-block">若要跳转页面,请选择对应的数据或填写跳转的 URL 地址,不跳转请填写 “#” 号占位。</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label class="layui-hide">
|
||||
<textarea id="DefaultData">{$data|default=[]|json_encode}</textarea>
|
||||
</label>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
|
||||
/*! 默认数据处理 */
|
||||
var defas = JSON.parse($('#DefaultData').val()), idx;
|
||||
if (defas.length > 0) for (idx in defas) addItem(defas[idx]); else addItem({});
|
||||
|
||||
/*! 跳转规则选择器 */
|
||||
layui.form.on('select(TypeSelect)', function (data) {
|
||||
var input = $(data.elem).parent().prev('label').find('input');
|
||||
var title = data.elem.options[data.elem.selectedIndex].innerText.split(' - ').pop();
|
||||
window.setItemValue = function (id, name) {
|
||||
input.val(data.value + '#' + (id || '0') + '#' + (name || title));
|
||||
}, this.openModel = function (url) {
|
||||
return $.form.modal(url, {}, title, null, true, null, '840px', '5%');
|
||||
};
|
||||
if (data.value === '#') return input.val('#');
|
||||
if (data.value === 'LK') return /^https?:\/\//.test(input.val()) || input.val('#').focus();
|
||||
if (data.value === 'NS') return this.openModel('{:url("data/news.item/select")}');
|
||||
return window.setItemValue();
|
||||
});
|
||||
|
||||
/*! 表单元素操作 */
|
||||
$('form#DataForm').on('click', '[data-item-add]', function () {
|
||||
addItem({});
|
||||
}).on('click', '[data-item-rm]', function () {
|
||||
$(this).parents('[data-news-item]').remove();
|
||||
setAddButton();
|
||||
}).on('click', '[data-item-up]', function () {
|
||||
var item = $(this).parents('[data-news-item]');
|
||||
var prev = item.prev('[data-news-item]');
|
||||
if (item.index() > 0) item.insertBefore(prev);
|
||||
}).on('click', '[data-item-dn]', function () {
|
||||
var item = $(this).parents('[data-news-item]');
|
||||
var next = item.next('[data-news-item]');
|
||||
if (next) item.insertAfter(next);
|
||||
}).vali(function (form, data) {
|
||||
for (idx in form.img) {
|
||||
if (!form.img[idx]) return $.msg.tips('需要上传图片文件哦!');
|
||||
data.push({img: form.img[idx], url: form.url[idx], type: form.type[idx], title: form.title[idx]});
|
||||
}
|
||||
$.form.load(this.action, {data: JSON.stringify(data)}, 'post');
|
||||
});
|
||||
|
||||
/*! 添加图片数据项 */
|
||||
function addItem(data) {
|
||||
data.url = data.url || '#';
|
||||
var $html = $($('[data-item-tpl]').html());
|
||||
for (idx in data) $html.find('[name^=' + idx + ']').val(data[idx]);
|
||||
$html.find('select').removeAttr('lay-ignore').find('option').each(function () {
|
||||
if (data.url === '#' && this.value === data.url) this.selected = true;
|
||||
else if (this.value === data.url.split('#')[0]) this.selected = true;
|
||||
}), $('[data-item-add]').parent().before($html), setAddButton();
|
||||
/*! 初始化插件绑定 */
|
||||
$.form.reInit($html).find('input[data-upload-image]').uploadOneImage();
|
||||
}
|
||||
|
||||
/*! 检查并操作按钮 */
|
||||
function setAddButton() {
|
||||
this.limit = parseInt('{$number|default=0}');
|
||||
this.laster = $('[data-item-box] [data-item-add]').parent();
|
||||
this.number = $('[data-item-box] [data-news-item]').size();
|
||||
if (this.number >= this.limit && this.limit > 0) {
|
||||
this.laster.addClass('layui-hide');
|
||||
} else {
|
||||
this.laster.removeClass('layui-hide');
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
28
app/data/view/base/slider/index.html
Normal file
28
app/data/view/base/slider/index.html
Normal file
@ -0,0 +1,28 @@
|
||||
{extend name="../../admin/view/main"}
|
||||
|
||||
{block name='content'}
|
||||
<div class="think-box-notify">温馨提示:如需添加新内容,需要在系统管理的基础数据添加类似为 “<b>{$type|default=''}</b>” 的基础数据。</div>
|
||||
<div class="layui-row layui-col-space20 portal-block-container notselect">
|
||||
{foreach $types as $key=>$type}
|
||||
<div class="layui-col-sm4 layui-col-md4 layui-col-lg3">
|
||||
<!--{if auth('edit')}-->
|
||||
<div class="pointer" data-open="{:url('edit')}?type={$key}">
|
||||
<div class="portal-block-item nowrap think-bg-violet">
|
||||
<div class="font-s14">编辑页面</div>
|
||||
<div class="font-s16">{$type.name|default=''}</div>
|
||||
</div>
|
||||
<i class="portal-block-icon layui-icon layui-icon-carousel"></i>
|
||||
</div>
|
||||
<!--{else}-->
|
||||
<div>
|
||||
<div class="portal-block-item nowrap think-bg-violet">
|
||||
<div class="font-s14">编辑页面</div>
|
||||
<div class="font-s16">{$type.name|default=''}</div>
|
||||
</div>
|
||||
<i class="portal-block-icon layui-icon layui-icon-carousel"></i>
|
||||
</div>
|
||||
<!--{/if}-->
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
{/block}
|
||||
@ -1,12 +1,12 @@
|
||||
{extend name="../../admin/view/main"}
|
||||
|
||||
{block name='content'}
|
||||
<form action="{:sysuri()}" class="layui-form layui-card" data-auto="true" method="post">
|
||||
<form action="{:sysuri()}" class="layui-card layui-form" data-auto="true" method="post">
|
||||
<div class="layui-card-body">
|
||||
|
||||
{notempty name='marks'}
|
||||
<div class="layui-form-item">
|
||||
<span class="help-label"><b>文章标签</b>Mark Name</span>
|
||||
<!--{notempty name='marks'}-->
|
||||
<div class="layui-form-item label-required-prev">
|
||||
<span class="help-label"><b>文章标签</b>News Mark</span>
|
||||
<div class="layui-textarea help-checks">
|
||||
{foreach $marks as $tag}{if isset($vo.mark) && is_array($vo.mark) && in_array($tag.name, $vo.mark)}
|
||||
<label class="think-checkbox notselect"><input checked lay-ignore name="mark[]" type="checkbox" value="{$tag.name}"> {$tag.name}</label>
|
||||
@ -15,37 +15,30 @@
|
||||
{/if}{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!--{/notempty}-->
|
||||
|
||||
<div class="layui-form-item label-required-prev">
|
||||
<span class="help-label"><b>文章封面</b>Conver Image</span>
|
||||
<span class="help-label"><b>文章封面</b>News Conver</span>
|
||||
<div class="relative block label-required-null">
|
||||
<input class="layui-input think-bg-gray" readonly name="cover" placeholder="请上传文章封面" required value='{$vo.cover|default=""}'>
|
||||
<a class="input-right-icon layui-icon layui-icon-upload" data-field="cover" data-file data-type="png,jpg,gif"></a>
|
||||
<script>$('[name="cover"]').uploadOneImage()</script>
|
||||
<input class="layui-input think-bg-gray" name="cover" placeholder="请上传文章封面" readonly required value='{$vo.cover|default=""}'>
|
||||
<a class="layui-icon layui-icon-upload input-right-icon" data-file data-field="cover" data-type="gif,png,jpg,jpeg"></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label class="layui-form-item relative block">
|
||||
<span class="help-label"><b>文章标题</b>Article Name</span>
|
||||
<span class="help-label"><b>文章标题</b>News Title</span>
|
||||
<input class="layui-input" name="name" placeholder="请输入文章标题" required value='{$vo.name|default=""}'>
|
||||
</label>
|
||||
|
||||
<label class="layui-form-item relative block">
|
||||
<span class="help-label"><b>简介描述</b>Article Remark</span>
|
||||
<textarea class="layui-textarea" name="remark" placeholder="请输入简介描述" required>{$vo.remark|default=''}</textarea>
|
||||
</label>
|
||||
|
||||
<div class="layui-form-item label-required-prev">
|
||||
<span class="help-label"><b>富文本内容</b>Article Content</span>
|
||||
<span class="help-label"><b>文章内容</b>News Content</span>
|
||||
<label class="relative block">
|
||||
<textarea class="layui-textarea" name="content" placeholder="请输入文章内容">{$vo.content|default=''}</textarea>
|
||||
<textarea class="layui-hide" name="content" placeholder="请输入文章内容">{$vo.content|default=''}</textarea>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
{notempty name='vo.id'}<input name='id' type='hidden' value='{$vo.id}'>{/notempty}
|
||||
{notempty name='vo.code'}<input name='code' type='hidden' value='{$vo.code}'>{/notempty}
|
||||
|
||||
<div class="layui-form-item text-center">
|
||||
<button class="layui-btn" type="submit">保存数据</button>
|
||||
@ -57,7 +50,8 @@
|
||||
|
||||
<script>
|
||||
require(['ckeditor'], function () {
|
||||
window.createEditor('[name=content]', {height: 300});
|
||||
$('input[name="cover"]').uploadOneImage();
|
||||
window.createEditor('[name=content]', {height: 350});
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
{/block}
|
||||
|
||||
@ -1,78 +1,104 @@
|
||||
{extend name="../../admin/view/main"}
|
||||
{extend name='../../admin/view/table'}
|
||||
|
||||
{block name="button"}
|
||||
<!--{if auth("add")}-->
|
||||
<button class='layui-btn layui-btn-sm layui-btn-primary' data-open='{:url("add")}'>添加文章</button>
|
||||
<button data-open='{:url("add")}' class='layui-btn layui-btn-sm layui-btn-primary'>添加文章</button>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("remove")}-->
|
||||
<button class='layui-btn layui-btn-sm layui-btn-primary' data-action='{:url("remove")}' data-confirm="确定要删除这些文章吗?" data-rule="id#{key}">删除文章</button>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("news.mark/index")}-->
|
||||
<button class='layui-btn layui-btn-sm layui-btn-primary' data-modal='{:url("news.mark/index")}' data-title="标签管理" data-width="900px">标签管理</button>
|
||||
<button data-action='{:url("remove")}' data-table-id="NewsTable" data-rule="id#{id}" data-confirm="确定要批量删除文章吗?" class='layui-btn layui-btn-sm layui-btn-primary'>批量删除</button>
|
||||
<!--{/if}-->
|
||||
{/block}
|
||||
|
||||
{block name='content'}
|
||||
<div class="think-box-shadow">
|
||||
{include file='news/item/index_search'}
|
||||
<table class="layui-table margin-top-10" lay-skin="line">
|
||||
{notempty name='list'}
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='list-table-check-td think-checkbox'>
|
||||
<label><input data-auto-none data-check-target='.list-check-box' type='checkbox'></label>
|
||||
</th>
|
||||
<th class='list-table-sort-td'>
|
||||
<button class="layui-btn layui-btn-xs" data-reload type="button">刷 新</button>
|
||||
</th>
|
||||
<th class="text-left nowrap">文章编号</th>
|
||||
<th class="text-left nowrap">文章名称</th>
|
||||
<th class="text-left nowrap">搜索标签</th>
|
||||
<th class="text-left nowrap">文章状态</th>
|
||||
<th class="text-left nowrap">创建时间</th>
|
||||
<th class="text-left nowrap"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
{/notempty}
|
||||
<tbody>
|
||||
{foreach $list as $key=>$vo}
|
||||
<tr>
|
||||
<td class='list-table-check-td think-checkbox'>
|
||||
<label><input class="list-check-box" type='checkbox' value='{$vo.id}'></label>
|
||||
</td>
|
||||
<td class='list-table-sort-td'>
|
||||
<label><input class="list-sort-input" data-action-blur="{:sysuri()}" data-loading="false" data-value="id#{$vo.id};action#sort;sort#{value}" value="{$vo.sort}"></label>
|
||||
</td>
|
||||
<td class="text-left nowrap">{$vo.code|default=''}</td>
|
||||
<td class="text-left nowrap">{$vo.name|default=''}</td>
|
||||
<td class="text-left nowrap">{notempty name='vo.mark'}{foreach $vo.mark as $tag}<span class="margin-right-5 layui-badge layui-bg-cyan">{$tag}</span>{/foreach}{/notempty}<br></td>
|
||||
<td class="text-left nowrap">{if $vo.status eq 0}<span class="color-red">已禁用</span>{elseif $vo.status eq 1}<span class="color-green">已激活</span>{/if}</td>
|
||||
<td class="text-left nowrap">{$vo.create_at|format_datetime}</td>
|
||||
<td class='text-left nowrap'>
|
||||
|
||||
<!--{if auth("edit")}-->
|
||||
<a class="layui-btn layui-btn-sm" data-open="{:url('edit')}?id={$vo.id}">编 辑</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("state") and $vo.status eq 1}-->
|
||||
<a class="layui-btn layui-btn-sm layui-btn-warm" data-action="{:url('state')}" data-value="id#{$vo.id};status#0">禁 用</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("state") and $vo.status eq 0}-->
|
||||
<a class="layui-btn layui-btn-sm layui-btn-warm" data-action="{:url('state')}" data-value="id#{$vo.id};status#1">激 活</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("remove")}-->
|
||||
<a class="layui-btn layui-btn-sm layui-btn-danger" data-action="{:url('remove')}" data-confirm="确定要删除该文章吗?" data-value="id#{$vo.id}">删 除</a>
|
||||
<!--{/if}-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
{empty name='list'}<span class="notdata">没有记录哦</span>{else}{$pagehtml|raw|default=''}{/empty}
|
||||
{block name="content"}
|
||||
<div class="layui-tab layui-tab-card">
|
||||
<ul class="layui-tab-title">
|
||||
{foreach ['index'=>'文章管理','recycle'=>'回 收 站'] as $k=>$v}{if isset($type) and $type eq $k}
|
||||
<li data-open="{:url('index')}?type={$k}" class="layui-this color-green">{$v}</li>
|
||||
{else}
|
||||
<li data-open="{:url('index')}?type={$k}">{$v}</li>
|
||||
{/if}{/foreach}
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
{include file='news/item/index_search'}
|
||||
<table id="NewsTable" data-url="{:sysuri()}" data-target-search="form.form-search"></table>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name='script'}
|
||||
<script>
|
||||
$(function () {
|
||||
// 初始化表格组件
|
||||
$('#NewsTable').layTable({
|
||||
even: true, height: 'full',
|
||||
sort: {field: 'sort desc,code', type: 'desc'},
|
||||
where: {type: '{$type|default="index"}'},
|
||||
cols: [[
|
||||
{checkbox: true, fixed: true},
|
||||
{field: 'sort', title: '排序权重', align: 'center', width: 100, sort: true, templet: '#SortInputTpl'},
|
||||
{field: 'id', title: 'ID', align: "center", width: 80},
|
||||
/* {notempty name='marks'} */
|
||||
{
|
||||
field: 'mark', title: '文章标签', align: 'left', minWidth: 100, templet: function (d) {
|
||||
return (d.html = ''), d.mark.forEach(function (val) {
|
||||
d.html += '<span class="layui-badge layui-bg-blue">' + val + '</span>';
|
||||
}), d.html;
|
||||
}
|
||||
},
|
||||
/* {/marks} */
|
||||
{
|
||||
field: 'cover', title: '图片', width: 60, align: 'center', templet: function (d) {
|
||||
if (!d.cover) return '';
|
||||
return layui.laytpl('<div data-tips-image data-tips-hover class="headimg headimg-xs headimg-no margin-0" data-lazy-src="{{d.cover}}"></div>').render(d);
|
||||
}
|
||||
},
|
||||
{field: 'name', title: '文章标题', align: 'left', minWidth: 140},
|
||||
{field: 'num_read', title: '阅读数', align: 'center', minWidth: 80, sort: true, style: 'color:blue;font-size:16px'},
|
||||
{field: 'status', title: '状态', align: 'center', minWidth: 110, templet: '#StatusSwitchTpl'},
|
||||
{field: 'create_at', title: '创建时间', align: 'center', minWidth: 170, sort: true},
|
||||
{toolbar: '#toolbar', title: '操作面板', align: 'center', minWidth: 160, fixed: 'right'},
|
||||
]]
|
||||
});
|
||||
|
||||
// 数据状态切换操作
|
||||
layui.form.on('switch(StatusSwitch)', function (obj) {
|
||||
var data = {id: obj.value, status: obj.elem.checked > 0 ? 1 : 0};
|
||||
$.form.load("{:url('state')}", data, 'post', function (ret) {
|
||||
if (ret.code < 1) $.msg.error(ret.info, 3, function () {
|
||||
$('#NewsTable').trigger('reload');
|
||||
}); else {
|
||||
$('#NewsTable').trigger('reload');
|
||||
}
|
||||
return false;
|
||||
}, false);
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<!-- 列表排序权重模板 -->
|
||||
<script type="text/html" id="SortInputTpl">
|
||||
<input type="number" min="0" data-blur-number="0" data-action-blur="{:sysuri()}" data-value="id#{{d.id}};action#sort;sort#{value}" data-loading="false" value="{{d.sort}}" class="layui-input text-center">
|
||||
</script>
|
||||
|
||||
<!-- 数据状态切换模板 -->
|
||||
<script type="text/html" id="StatusSwitchTpl">
|
||||
<!--{if auth("state")}-->
|
||||
<input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="已激活|已禁用" lay-filter="StatusSwitch" {{d.status>0?'checked':''}}>
|
||||
<!--{else}-->
|
||||
{{d.status ? '<b class="color-green">已启用</b>' : '<b class="color-red">已禁用</b>'}}
|
||||
<!--{/if}-->
|
||||
</script>
|
||||
|
||||
<!-- 数据操作工具条模板 -->
|
||||
<script type="text/html" id="toolbar">
|
||||
<!--{if auth("edit") and isset($type) and $type eq 'index'}-->
|
||||
<a class="layui-btn layui-btn-primary layui-btn-sm" data-open='{:url("edit")}?id={{d.id}}'>编 辑</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("remove") and isset($type) and $type neq 'index'}-->
|
||||
<a class="layui-btn layui-btn-danger layui-btn-sm" data-action="{:url('remove')}" data-value="id#{{d.id}}" data-confirm="确定要删除文章吗?">删 除</a>
|
||||
<!--{/if}-->
|
||||
</script>
|
||||
{/block}
|
||||
@ -1,6 +1,23 @@
|
||||
<fieldset>
|
||||
<legend>条件搜索</legend>
|
||||
<form action="{:sysuri()}" autocomplete="off" class="layui-form layui-form-pane form-search" method="get" onsubmit="return false">
|
||||
|
||||
<!-- {notempty name='marks'} -->
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文章标签</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="mark" lay-search class="layui-select">
|
||||
<option value=''>-- 文章标签 --</option>
|
||||
{foreach $marks as $mark}{if isset($get.mark) and $mark eq $get.mark}
|
||||
<option selected value="{$mark.name}">{$mark.name}</option>
|
||||
{else}
|
||||
<option value="{$mark.name}">{$mark.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- {/notempty} -->
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文章标题</label>
|
||||
<label class="layui-input-inline">
|
||||
@ -8,28 +25,6 @@
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">搜索标签</label>
|
||||
<label class="layui-input-inline">
|
||||
<input class="layui-input" name="mark" placeholder="请输入搜索标签" value="{$get.mark|default=''}">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">使用状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select class="layui-select" name="status">
|
||||
<option value=''>-- 全部 --</option>
|
||||
{foreach ['显示禁止的文章', '显示正常的文章'] as $k=>$v}
|
||||
{if $k.'' eq input('status')}
|
||||
<option selected value="{$k}">{$v}</option>
|
||||
{else}
|
||||
<option value="{$k}">{$v}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">创建时间</label>
|
||||
<label class="layui-input-inline">
|
||||
|
||||
@ -1,41 +1,87 @@
|
||||
{extend name="../../admin/view/full"}
|
||||
{block name="content"}
|
||||
<div class="iframe-pagination notfooter">
|
||||
<fieldset>
|
||||
<legend>条件搜索</legend>
|
||||
<form action="{:sysuri()}" id="NewsTableSearch" autocomplete="off" class="layui-form layui-form-pane form-search" method="get" onsubmit="return false">
|
||||
|
||||
{block name='content'}
|
||||
<div class="iframe-pagination">
|
||||
{include file='news/item/select_search'}
|
||||
<table class="layui-table" lay-skin="line">
|
||||
{notempty name='list'}
|
||||
<thead>
|
||||
<tr>
|
||||
<th>文章标题</th>
|
||||
<th>文章状态</th>
|
||||
<th>创建时间</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
{/notempty}
|
||||
<tbody>
|
||||
{foreach $list as $key => $vo}
|
||||
<tr>
|
||||
<td class="nowrap">{$vo.name|default=''}</td>
|
||||
<td>{if $vo.status eq 0}<span class="color-red">已禁用</span>{elseif $vo.status eq 1}<span class="color-green">已激活</span>{/if}</td>
|
||||
<td>{$vo.create_at|format_datetime}</td>
|
||||
<td class='text-right'><a class="layui-btn layui-btn-sm layui-btn-normal" data-item="{$vo.code}">选择文章</a></td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
{empty name='list'}<span class="notdata">没有记录哦</span>{else}{$pagehtml|raw|default=''}{/empty}
|
||||
<!-- {notempty name='marks'} -->
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文章标签</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="mark" lay-search class="layui-select">
|
||||
<option value=''>-- 文章标签 --</option>
|
||||
{foreach $marks as $mark}{if isset($get.mark) and $mark eq $get.mark}
|
||||
<option selected value="{$mark.name}">{$mark.name}</option>
|
||||
{else}
|
||||
<option value="{$mark.name}">{$mark.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- {/notempty} -->
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文章标题</label>
|
||||
<label class="layui-input-inline">
|
||||
<input class="layui-input" name="name" placeholder="请输入文章标题" value="{$get.name|default=''}">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">创建时间</label>
|
||||
<label class="layui-input-inline">
|
||||
<input class="layui-input" data-date-range name="create_at" placeholder="请选择创建时间" value="{$get.create_at|default=''}">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button class="layui-btn layui-btn-primary"><i class="layui-icon"></i> 搜 索</button>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
<table id="NewsTable" data-url="{:sysuri()}" data-target-search="#NewsTableSearch"></table>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name='script'}
|
||||
<script>
|
||||
$(function () {
|
||||
$.form.reInit(), $('[data-item]').on('click', function () {
|
||||
top.setItemValue(this.getAttribute('data-item') || '');
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
// 初始化表格组件
|
||||
$('#NewsTable').layTable({
|
||||
even: true, height: 'full',
|
||||
sort: {field: 'sort desc,id', type: 'desc'},
|
||||
cols: [[
|
||||
{field: 'id', title: 'ID', align: 'center', width: 60, sort: true},
|
||||
/* {notempty name='marks'} */
|
||||
{
|
||||
field: 'mark', title: '文章标签', align: 'left', minWidth: 100, templet: function (d) {
|
||||
return (d.html = ''), d.mark.forEach(function (val) {
|
||||
d.html += '<span class="layui-badge layui-bg-blue">' + val + '</span>';
|
||||
}), d.html;
|
||||
}
|
||||
},
|
||||
/* {/marks} */
|
||||
{field: 'name', title: '文章标题', align: 'left', minWidth: 140},
|
||||
{field: 'num_read', title: '阅读数', align: 'center', width: 85, sort: true, style: 'color:blue;font-size:16px'},
|
||||
{field: 'status', title: '状态', align: 'center', width: 80, templet: '#StatusSwitchTpl'},
|
||||
{field: 'create_at', title: '创建时间', align: 'center', width: 170, sort: true},
|
||||
{toolbar: '#toolbar', title: '操作', align: 'center', width: 100}
|
||||
]]
|
||||
}).trigger('tool', function (item) {
|
||||
window.setItemValue(item.data.id, item.data.name);
|
||||
item.tr.parents('div.layui-layer-page').find('a.layui-layer-close').trigger('click');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- 操作工具条模板 -->
|
||||
<script type="text/html" id="toolbar">
|
||||
<a class="layui-btn layui-btn-sm" lay-event="select">选 择</a>
|
||||
</script>
|
||||
|
||||
<!-- 数据状态切换模板 -->
|
||||
<script type="text/html" id="StatusSwitchTpl">
|
||||
{{d.status ? '<b class="color-green">已激活</b>' : '<b class="color-red">已禁用</b>'}}
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
|
||||
@ -1,36 +0,0 @@
|
||||
<fieldset>
|
||||
<legend>条件搜索</legend>
|
||||
<form action="{:sysuri()}" autocomplete="off" class="layui-form layui-form-pane form-search" method="get" onsubmit="return false">
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文章标题</label>
|
||||
<label class="layui-input-inline">
|
||||
<input class="layui-input" name="name" placeholder="请输入文章标题" value="{$get.name|default=''}">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">使用状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select class="layui-select" name="status">
|
||||
{foreach [''=>'-- 全部 --','0'=>'显示禁止的文章','1'=>'显示正常的文章'] as $k=>$v}
|
||||
{if $k.'' eq input('status')}
|
||||
<option selected value="{$k}">{$v}</option>
|
||||
{else}
|
||||
<option value="{$k}">{$v}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">创建时间</label>
|
||||
<label class="layui-input-inline">
|
||||
<input class="layui-input" data-date-range name="create_at" placeholder="请选择创建时间" value="{$get.create_at|default=''}">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button class="layui-btn layui-btn-primary"><i class="layui-icon"></i> 搜 索</button>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
Loading…
x
Reference in New Issue
Block a user