提交 efaaefaa 编写于 作者: D devil_gong

轮播

上级 3b2b4497
<?php
namespace app\admin\controller;
use app\service\SlideService;
/**
* 轮播图片管理
* @author Devil
......@@ -39,128 +41,91 @@ class Slide extends Common
public function Index()
{
// 参数
$param = array_merge($_POST, $_GET);
$params = input();
// 模型对象
$m = db('Slide');
// 分页
$number = 10;
// 条件
$where = $this->GetIndexWhere();
$where = SlideService::SlideListWhere($params);
// 获取总数
$total = SlideService::SlideTotal($where);
// 分页
$number = MyC('admin_page_number');
$page_param = array(
$page_params = array(
'number' => $number,
'total' => $m->where($where)->count(),
'where' => $param,
'url' => url('Admin/Slide/Index'),
'total' => $total,
'where' => $params,
'page' => isset($params['page']) ? intval($params['page']) : 1,
'url' => url('admin/customview/index'),
);
$page = new \base\Page($page_param);
$page = new \base\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
// 获取列表
$list = $this->SetDataHandle($m->where($where)->limit($page->GetPageStarNumber(), $number)->order('is_enable desc, sort asc')->select());
// 参数
$this->assign('param', $param);
// 分页
$this->assign('page_html', $page->GetPageHtml());
$data_params = array(
'limit_start' => $page->GetPageStarNumber(),
'limit_number' => $number,
'where' => $where,
'field' => '*',
);
$data = SlideService::SlideList($data_params);
$this->assign('data_list', $data['data']);
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
// 数据列表
$this->assign('list', $list);
$this->display('Index');
}
/**
* [SetDataHandle 数据处理]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-29T21:27:15+0800
* @param [array] $data [轮播图片数据]
* @return [array] [处理好的数据]
*/
private function SetDataHandle($data)
{
if(!empty($data))
{
$common_is_enable_tips = lang('common_is_enable_tips');
foreach($data as &$v)
{
// 是否启用
$v['is_enable_text'] = $common_is_enable_tips[$v['is_enable']]['name'];
// 图片地址
$v['images_url'] = empty($v['images_url']) ? '' : config('IMAGE_HOST').$v['images_url'];
// 所属平台
$this->assign('common_platform_type', lang('common_platform_type'));
// 添加时间
$v['add_time_text'] = date('Y-m-d H:i:s', $v['add_time']);
// 事件类型
$this->assign('common_app_event_type', lang('common_app_event_type'));
// 更新时间
$v['upd_time_text'] = date('Y-m-d H:i:s', $v['upd_time']);
}
}
return $data;
// 参数
$this->assign('params', $params);
return $this->fetch();
}
/**
* [GetIndexWhere 列表条件]
* [SaveInfo 添加/编辑页面]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-10T22:16:29+0800
* @datetime 2016-12-14T21:37:02+0800
*/
private function GetIndexWhere()
public function SaveInfo()
{
$where = array();
// 参数
$params = input();
// 模糊
if(!empty($_REQUEST['keyword']))
// 数据
if(!empty($params['id']))
{
$where['name'] = array('like', '%'.I('keyword').'%');
// 获取列表
$data_params = array(
'limit_start' => 0,
'limit_number' => 1,
'where' => ['id'=>intval($params['id'])],
'field' => '*',
);
$data = SlideService::SlideList($data_params);
$this->assign('data', empty($data['data'][0]) ? [] : $data['data'][0]);
}
// 是否更多条件
if(I('is_more', 0) == 1)
{
if(I('is_enable', -1) > -1)
{
$where['is_enable'] = intval(I('is_enable', 0));
}
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
// 表达式
if(!empty($_REQUEST['time_start']))
{
$where['add_time'][] = array('gt', strtotime(I('time_start')));
}
if(!empty($_REQUEST['time_end']))
{
$where['add_time'][] = array('lt', strtotime(I('time_end')));
}
}
return $where;
}
// 所属平台
$this->assign('common_platform_type', lang('common_platform_type'));
/**
* [SaveInfo 添加/编辑页面]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-14T21:37:02+0800
*/
public function SaveInfo()
{
// 轮播图片信息
$data = empty($_REQUEST['id']) ? array() : db('Slide')->find(I('id'));
$this->assign('data', $data);
// 事件类型
$this->assign('common_app_event_type', lang('common_app_event_type'));
// 参数
$this->assign('param', array_merge($_POST, $_GET));
// 编辑器文件存放地址
$this->assign('editor_path_type', 'slide');
$this->display('SaveInfo');
return $this->fetch();
}
/**
......@@ -175,93 +140,13 @@ class Slide extends Common
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 图片
$this->FileSave('images_url', 'file_images_url', 'slide');
// 添加
if(empty($_POST['id']))
{
$this->Add();
// 编辑
} else {
$this->Edit();
return $this->error('非法访问');
}
}
/**
* [Add 轮播图片添加]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-18T16:20:59+0800
*/
private function Add()
{
// 轮播图片模型
$m = D('Slide');
// 数据自动校验
if($m->create($_POST, 1))
{
// 额外数据处理
$m->name = I('name');
$m->jump_url = I('jump_url');
$m->images_url = I('images_url');
$m->is_enable = intval(I('is_enable', 0));
$m->bg_color = I('bg_color');
$m->sort = intval(I('sort'));
$m->add_time = time();
// 数据添加
if($m->add())
{
$this->ajaxReturn('新增成功');
} else {
$this->ajaxReturn('新增失败', -100);
}
} else {
$this->ajaxReturn($m->getError(), -1);
}
}
/**
* [Edit 轮播图片编辑]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-17T22:13:40+0800
*/
private function Edit()
{
// 轮播图片模型
$m = D('Slide');
// 数据自动校验
if($m->create($_POST, 2))
{
// 额外数据处理
$m->name = I('name');
$m->jump_url = I('jump_url');
$m->images_url = I('images_url');
$m->is_enable = intval(I('is_enable', 0));
$m->bg_color = I('bg_color');
$m->sort = intval(I('sort'));
$m->upd_time = time();
// 更新数据库
if($m->where(array('id'=>I('id')))->save())
{
$this->ajaxReturn('编辑成功');
} else {
$this->ajaxReturn('编辑失败或数据未改变', -100);
}
} else {
$this->ajaxReturn($m->getError(), -1);
}
// 开始处理
$params = input();
$ret = SlideService::SlideSave($params);
return json($ret);
}
/**
......@@ -276,39 +161,13 @@ class Slide extends Common
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
return $this->error('非法访问');
}
// 参数处理
$id = I('id');
// 删除数据
if(!empty($id))
{
// 模型
$m = db('Slide');
// 是否存在
$data = $m->find($id);
if(empty($data))
{
$this->ajaxReturn('资源不存在或已被删除', -2);
}
if($data['is_enable'] == 1)
{
$this->ajaxReturn(lang('common_already_is_enable_error'), -3);
}
// 删除
if($m->where(array('id'=>$id))->delete() !== false)
{
$this->ajaxReturn('删除成功');
} else {
$this->ajaxReturn('删除失败或资源不存在', -100);
}
} else {
$this->ajaxReturn('参数错误', -1);
}
// 开始处理
$params = input();
$ret = SlideService::SlideDelete($params);
return json($ret);
}
/**
......@@ -320,19 +179,16 @@ class Slide extends Common
*/
public function StatusUpdate()
{
// 参数
if(empty($_POST['id']) || !isset($_POST['state']))
// 是否ajax请求
if(!IS_AJAX)
{
$this->ajaxReturn('参数错误', -1);
return $this->error('非法访问');
}
// 数据更新
if(db('Slide')->where(array('id'=>I('id')))->save(array('is_enable'=>I('state'))))
{
$this->ajaxReturn('编辑成功');
} else {
$this->ajaxReturn('编辑失败或数据未改变', -100);
}
// 开始处理
$params = input();
$ret = SlideService::SlideStatusUpdate($params);
return json($ret);
}
}
?>
\ No newline at end of file
......@@ -24,7 +24,8 @@
<ul class="plug-file-upload-view goods-category-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
<li>
<input type="hidden" name="icon" value="" />
<img class="icon-images-view" src="{{$image_host}}/Public/admin/default/images/default-images.png" />
<img src="{{$image_host}}/static/admin/default/images/default-images.png" />
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-category-icon-images-view">+上传图片</div>
......@@ -34,7 +35,8 @@
<ul class="plug-file-upload-view goods-category-big_images-images-view" data-form-name="big_images" data-max-number="1" data-dialog-type="images">
<li>
<input type="hidden" name="big_images" value="" />
<img class="big_images-images-view" src="{{$image_host}}/Public/admin/default/images/default-images.png" />
<img src="{{$image_host}}/static/admin/default/images/default-images.png" />
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-category-big_images-images-view">+上传图片</div>
......@@ -86,7 +88,7 @@
<!-- save win end -->
<!-- list start -->
<div id="tree" class="m-t-15" data-rank="3" data-additional='[{"field":"bg_color", "value":"", "type":"input"}, {"field":"bg_color", "value":"", "type":"css", "tag":"button.colorpicker-submit", "style":"background-color"}, {"field":"icon", "value":"", "type":"input"}, {"field":"icon_url", "value":"{{$image_host}}/static/admin/default/images/default-images.png", "type":"attr", "tag":".icon-images-view", "style":"src"}, {"field":"big_images", "value":"", "type":"input"}, {"field":"big_images_url", "value":"{{$image_host}}/static/admin/default/images/default-images.png", "type":"attr", "tag":".big_images-images-view", "style":"src"}, {"field":"vice_name", "value":"", "type":"input"}, {"field":"describe", "value":"", "type":"textarea"}, {"field":"is_home_recommended", "value":"0", "type":"input"}]'>
<div id="tree" class="m-t-15" data-rank="3" data-additional='[{"field":"bg_color", "value":"", "type":"input"}, {"field":"bg_color", "value":"", "type":"css", "tag":"button.colorpicker-submit", "style":"background-color"}, {"field":"icon", "value":"", "type":"input"}, {"field":"icon_url", "value":"{{$image_host}}/static/admin/default/images/default-images.png", "type":"attr", "tag":"ul.goods-category-icon-images-view li img", "style":"src"}, {"field":"big_images", "value":"", "type":"input"}, {"field":"big_images_url", "value":"{{$image_host}}/static/admin/default/images/default-images.png", "type":"attr", "tag":"ul.goods-category-big_images-images-view li img", "style":"src"}, {"field":"vice_name", "value":"", "type":"input"}, {"field":"describe", "value":"", "type":"textarea"}, {"field":"is_home_recommended", "value":"0", "type":"input"}]'>
<div class="m-t-30 t-c">
<img src="{{$image_host}}/static/common/images/loading.gif" />
<p>处理中...</p>
......
......@@ -4,27 +4,39 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form view-list" action="{{:url('Admin/Slide/Index')}}" method="POST">
<form class="am-form view-list" action="{{:url('admin/slide/index')}}" method="POST">
<div class="am-g">
<input type="text" class="am-radius form-keyword" placeholder="名称" name="keyword" <present name="param['keyword']"> value="{{$param.keyword}}"{{/if}} />
<input type="text" autocomplete="off" class="am-radius form-keyword" placeholder="名称" name="keywords" {{if !empty($params['keywords'])}} value="{{$params.keywords}}"{{/if}} />
<button type="submit" class="am-btn am-btn-secondary am-btn-sm am-radius form-submit">查询</button>
<label class="fs-12 m-l-5 c-p fw-100 more-submit">
更多筛选
<input type="checkbox" name="is_more" value="1" id="is_more" {{if isset($param['is_more']) and $param['is_more'] eq 1)}}checked{{/if}} />
<input type="checkbox" name="is_more" value="1" id="is_more" {{if isset($params['is_more']) and $params['is_more'] eq 1}}checked{{/if}} />
<i class="am-icon-angle-down"></i>
</label>
<div class="more-where {{if !isset($param['is_more']) or $param['is_more'] neq 1)}}none{{/if}}">
<div class="more-where {{if !isset($params['is_more']) or $params['is_more'] neq 1}}none{{/if}}">
<select name="is_enable" class="am-radius c-p m-t-10 m-l-5 param-where">
<option value="-1)}}是否启用</option>
<foreach name="common_is_enable_list" item="v">
<option value="{{$v.id}}" {{if isset($param['is_enable']) and $param['is_enable'] eq $v['id']">selected{{/if}}>{{$v.name}}</option>
<option value="-1">是否启用</option>
{{foreach $common_is_enable_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_enable']) and $params['is_enable'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="param-date param-where m-l-5)}}
<input type="text" name="time_start" class="Wdate am-radius m-t-10" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($param['time_start'])}}value="{{$param.time_start}}"{{/if}}/>
<select name="platform" class="am-radius c-p m-t-10 m-l-5 param-where">
<option value="">所属平台</option>
{{foreach $common_platform_type as $v}}
<option value="{{$v.value}}" {{if isset($params['platform']) and $params['platform'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<select name="event_type" class="am-radius c-p m-t-10 m-l-5 param-where">
<option value="-1">事件类型</option>
{{foreach $common_app_event_type as $v}}
<option value="{{$v.value}}" {{if isset($params['event_type']) and $params['event_type'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="param-date param-where m-l-5">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius m-t-10" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($params['time_start'])}}value="{{$params.time_start}}"{{/if}}/>
<span>~</span>
<input type="text" class="Wdate am-radius m-t-10" placeholder="结束时间" name="time_end" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($param['time_end'])}}value="{{$param.time_end}}"{{/if}}/>
<input type="text" autocomplete="off" class="Wdate am-radius m-t-10" placeholder="结束时间" name="time_end" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($params['time_end'])}}value="{{$params.time_end}}"{{/if}}/>
</div>
</div>
</div>
......@@ -32,28 +44,30 @@
<!-- form end -->
<!-- operation start -->
<div class="am-g m-t-15)}}
<a href="{{:url('Admin/Slide/SaveInfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> 新增</a>
<div class="am-g m-t-15">
<a href="{{:url('admin/slide/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> 新增</a>
</div>
<!-- operation end -->
<!-- list start -->
<table class="am-table am-table-striped am-table-hover am-text-middle m-t-1)}}
<table class="am-table am-table-striped am-table-hover am-text-middle m-t-10">
<thead>
<tr>
<th>名称</th>
<th>所属平台</th>
<th>轮播图片</th>
<th>跳转地址</th>
<th>事件值</th>
<th>是否启用</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{{if !empty($list)}}
<foreach name="list" item="v">
<tr id="data-list-{{$v.id}}" {{if $v['is_enable'] eq 0)}}class="am-active"{{/if}}>
{{if !empty($data_list)}}
{{foreach $data_list as $v}}
<tr id="data-list-{{$v.id}}" {{if $v['is_enable'] eq 0}}class="am-active"{{/if}}>
<td>{{$v.name}}</td>
<td>{{$v.platform_text}}</td>
<td {{if !empty($v['bg_color'])}}style="background-color:{{$v.bg_color}};"{{/if}}>
{{if !empty($v['images_url'])}}
<a href="{{$v['images_url']}}" target="_blank">
......@@ -63,18 +77,21 @@
<span class="cr-ddd">暂无图片</span>
{{/if}}
</td>
<td>{{$v.jump_url}}</td>
<td>
{{$v.event_value}}
{{if !empty($v['event_value'])}}
<br /><span class="am-badge am-badge-warning am-radius">{{$v.event_type_text}}</span>
{{/if}}
</td>
<td class="am-hide-sm-only">
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_enable'] eq 1)}}am-success{{else /}}am-default{{/if}}" data-url="{{:url('Admin/Slide/StatusUpdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_enable']}}" data-is-update-status="1)}}</a>
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_enable'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:url('admin/slide/statusUpdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_enable']}}" data-is-update-status="1"></a>
</td>
<td>{{$v.add_time_text}}</td>
<td>{{$v.add_time_time}}</td>
<td class="view-operation">
<a href="{{:url('Admin/Slide/SaveInfo', array('id'=>$v['id']))}}">
<a href="{{:url('admin/slide/saveinfo', array('id'=>$v['id']))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
{{if $v['is_enable'] eq 0)}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:url('Admin/Slide/Delete')}}" data-id="{{$v.id}}"> 删除</button>
{{/if}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:url('admin/slide/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......@@ -86,8 +103,8 @@
<!-- list end -->
<!-- page start -->
{{if !empty($list)}}
{{$page_html}}
{{if !empty($data_list)}}
{{$page_html|raw}}
{{/if}}
<!-- page end -->
</div>
......
......@@ -4,41 +4,66 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:url('Admin/Slide/Save')}}" method="POST" request-type="ajax-url" request-value="{{:url('Admin/Slide/Index')}}" enctype="multipart/form-data">
<form class="am-form form-validation view-save" action="{{:url('admin/slide/save')}}" method="POST" request-type="ajax-url" request-value="{{:url('admin/slide/index')}}" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="{{:MyC('home_max_limit_image', 2048000)}}" />
<legend>
<span class="fs-16)}}
<span class="fs-16">
{{if empty($data['id'])}}
轮播添加
{{else /}}
轮播编辑
{{/if}}
</span>
<a href="{{:url('Admin/Slide/Index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
<a href="{{:url('admin/slide/index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>名称</label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" <notempty name="data"> value="{{$data.name}}"{{/if}} required />
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>所属平台</label>
<select name="platform" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="所属平台有误">
<option value="">可选择...</option>
{{foreach $common_platform_type as $v}}
<option value="{{$v.value}}" {{if isset($data['platform']) and $data['platform'] eq $v['value']}}selected{{else /}}{{if !isset($data['platform']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>事件类型</label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="事件值类型有误">
<option value="">可选择...</option>
{{foreach $common_app_event_type as $v}}
<option value="{{$v.value}}" {{if isset($data['event_type']) and $data['event_type'] eq $v['value']}}selected{{else /}}{{if !isset($data['event_type']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>跳转地址</label>
<input type="text" name="jump_url" placeholder="跳转地址" data-validation-message="跳转地址最多 255 个字符" class="am-radius" <notempty name="data"> value="{{$data.jump_url}}"{{/if}} />
<div class="am-alert am-alert-warning am-radius" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p class="fs-12">WEB页面<br />&nbsp&nbsp&nbsp;1.以http或https开头<br />&nbsp&nbsp&nbsp;2.并在小程序后台加入白名单<br /><br /> 内部页面(小程序/APP内部地址)<br />&nbsp&nbsp&nbsp;1.小程序或APP内部地址<br />&nbsp&nbsp&nbsp;2.小程序以/pages开始<br />&nbsp&nbsp&nbsp;3.例如:/pages/user/user<br />&nbsp&nbsp&nbsp;4.支持带参数 ?x=xx<br /><br /> 跳转原生地图查看指定位置<br />&nbsp&nbsp&nbsp;1.以 | 竖线分割,分别顺序 名称|地址|经度|纬度<br />&nbsp&nbsp&nbsp;2.例如:ShopXO|上海浦东新区张江高科技园区XXX号|121.626444|31.20843</p>
</div>
<label>事件值</label>
<input type="text" name="event_value" placeholder="事件值" data-validation-message="事件值最多 255 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.event_value}}"{{/if}} />
</div>
<div class="am-form-group am-form-file">
<label class="block">轮播图片</label>
<button type="button" class="am-btn am-btn-default am-btn-sm am-radius">
<i class="am-icon-cloud-upload"></i> 选择图片</button>
<input type="text" name="images_url" class="am-radius js-choice-one original-images-url" data-choice-one-to=".images-file-event" <notempty name="data"> value="{{$data.images_url}}"{{/if}}" data-validation-message="请选择需要上传的图片" readonly="readonly" <notempty name="data"> value="{{$data.images_url}}"{{/if}} required />
<input type="file" name="file_images_url" multiple data-validation-message="请选择需要上传的图片" accept="image/gif,image/jpeg,image/jpg,image/png" class="js-choice-one images-file-event" data-choice-one-to=".original-images-url" data-tips-tag="#form-images_url-tips" data-image-tag="#form-img-images_url" required />
<div id="form-images_url-tips" class="m-t-5)}}</div>
<img src="{{if !empty($data['images_url'])}}{{$image_host}}{{$data.images_url}}{{else /}}{{$image_host}}/Public/Admin/Default/Images/default-images.png{{/if}}" id="form-img-images_url" class="block m-t-5 am-img-thumbnail am-radius" width="300" height="150" data-default="{{if !empty($data['images_url'])}}{{$image_host}}{{$data.images_url}}{{else /}}{{$image_host}}/Public/Admin/Default/Images/default-images.png{{/if}}" />
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />
<img src="{{if !empty($data['images_url'])}}{{$data.images_url}}{{else /}}{{$image_host}}/static/admin/default/images/default-images.png{{/if}}" />
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.slide-images_url-images-view">+上传图片</div>
</div>
<div class="am-form-group">
<label>背景色</label>
<input type="hidden" name="bg_color" value="<notempty name="data">{{$data.bg_color}}{{/if}}" />
<button class="am-btn am-btn-default colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" <notempty name="data"> style="background-color:{{$data.bg_color}};"{{/if}}>
<img src="__PUBLIC__/Common/Images/colorpicker.png" />
<input type="hidden" name="bg_color" value="{{if !empty($data)}}{{$data.bg_color}}{{/if}}" />
<button class="am-btn am-btn-default colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data)}} style="background-color:{{$data.bg_color}};"{{/if}}>
<img src="{{$image_host}}/static/common/images/colorpicker.png" />
</button>
</div>
......@@ -49,10 +74,10 @@
<div class="am-form-group">
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_enable'] eq 1)}}checked="true"{{/if}} />
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (!empty($data) and $data['is_enable'] eq 1) or empty($data)}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<input type="hidden" name="id" <notempty name="data"> value="{{$data.id}}"{{/if}} />
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -55,7 +55,7 @@ class LinkService
[
'checked_type' => 'length',
'key_name' => 'sort',
'checked_data' => '4',
'checked_data' => '3',
'error_msg' => '顺序 0~255 之间的数值',
],
[
......
......@@ -10,6 +10,305 @@ namespace app\service;
*/
class SlideService
{
/**
* 数据列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-08-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function SlideList($params = [])
{
$where = empty($params['where']) ? [] : $params['where'];
$field = empty($params['field']) ? '*' : $params['field'];
$m = isset($params['m']) ? intval($params['m']) : 0;
$n = isset($params['n']) ? intval($params['n']) : 10;
$data = db('Slide')->field($field)->where($where)->order('sort asc')->limit($m, $n)->select();
if(!empty($data))
{
$common_platform_type = lang('common_platform_type');
$common_is_enable_tips = lang('common_is_enable_tips');
$common_app_event_type = lang('common_app_event_type');
$image_host = config('IMAGE_HOST');
foreach($data as &$v)
{
// 是否启用
if(isset($v['is_enable']))
{
$v['is_enable_text'] = $common_is_enable_tips[$v['is_enable']]['name'];
}
// 平台类型
if(isset($v['platform']))
{
$v['platform_text'] = $common_platform_type[$v['platform']]['name'];
}
// 事件类型
if(isset($v['event_type']) && $v['event_type'] != -1)
{
$v['event_type_text'] = $common_app_event_type[$v['event_type']]['name'];
}
// 图片地址
if(isset($v['images_url']))
{
$v['images_url'] = empty($v['images_url']) ? '' : $image_host.$v['images_url'];
}
// 时间
if(isset($v['add_time']))
{
$v['add_time_time'] = date('Y-m-d H:i:s', $v['add_time']);
$v['add_time_date'] = date('Y-m-d', $v['add_time']);
}
if(isset($v['upd_time']))
{
$v['upd_time_time'] = date('Y-m-d H:i:s', $v['upd_time']);
$v['upd_time_date'] = date('Y-m-d', $v['upd_time']);
}
}
}
return DataReturn('处理成功', 0, $data);
}
/**
* 总数
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $where [条件]
*/
public static function SlideTotal($where = [])
{
return (int) db('Slide')->where($where)->count();
}
/**
* 列表条件
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function SlideListWhere($params = [])
{
$where = [];
if(!empty($params['keywords']))
{
$where[] = ['name', 'like', '%'.$params['keywords'].'%'];
}
// 是否更多条件
if(isset($params['is_more']) && $params['is_more'] == 1)
{
// 等值
if(isset($params['is_enable']) && $params['is_enable'] > -1)
{
$where[] = ['is_enable', '=', intval($params['is_enable'])];
}
if(isset($params['event_type']) && $params['event_type'] > -1)
{
$where[] = ['event_type', '=', intval($params['event_type'])];
}
if(!empty($params['platform']))
{
$where[] = ['platform', '=', $params['platform']];
}
if(!empty($params['time_start']))
{
$where[] = ['add_time', '>', strtotime($params['time_start'])];
}
if(!empty($params['time_end']))
{
$where[] = ['add_time', '<', strtotime($params['time_end'])];
}
}
return $where;
}
/**
* 数据保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-12-19
* @desc description
* @param [array] $params [输入参数]
*/
public static function SlideSave($params = [])
{
// 是否启用值处理
if(!isset($params['is_enable']))
{
$params['is_enable'] = 0;
}
// 请求类型
$p = [
[
'checked_type' => 'length',
'key_name' => 'name',
'checked_data' => '2,60',
'error_msg' => '名称长度 2~60 个字符',
],
[
'checked_type' => 'in',
'key_name' => 'platform',
'checked_data' => array_column(lang('common_platform_type'), 'value'),
'error_msg' => '平台类型有误',
],
[
'checked_type' => 'in',
'key_name' => 'event_type',
'checked_data' => array_column(lang('common_app_event_type'), 'value'),
'error_msg' => '事件值类型有误',
],
[
'checked_type' => 'length',
'key_name' => 'event_value',
'checked_data' => '255',
'error_msg' => '事件值最多 255 个字符',
],
[
'checked_type' => 'empty',
'key_name' => 'images_url',
'checked_data' => '255',
'error_msg' => '请上传图片',
],
[
'checked_type' => 'length',
'key_name' => 'sort',
'checked_data' => '3',
'error_msg' => '顺序 0~255 之间的数值',
],
[
'checked_type' => 'in',
'key_name' => 'is_enable',
'checked_data' => [0,1],
'error_msg' => '是否显示范围值有误',
],
];
$ret = params_checked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 附件
$data_fields = ['images_url'];
$attachment = ResourcesService::AttachmentParams($params, $data_fields);
// 数据
$data = [
'name' => $params['name'],
'platform' => $params['platform'],
'event_type' => intval($params['event_type']),
'event_value' => $params['event_value'],
'images_url' => $attachment['data']['images_url'],
'bg_color' => isset($params['bg_color']) ? $params['bg_color'] : '',
'sort' => intval($params['sort']),
'is_enable' => intval($params['is_enable']),
];
if(empty($params['id']))
{
$data['add_time'] = time();
if(db('Slide')->insertGetId($data) > 0)
{
return DataReturn('添加成功', 0);
}
return DataReturn('添加失败', -100);
} else {
$data['upd_time'] = time();
if(db('Slide')->where(['id'=>intval($params['id'])])->update($data))
{
return DataReturn('编辑成功', 0);
}
return DataReturn('编辑失败', -100);
}
}
/**
* 删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-12-18
* @desc description
* @param [array] $params [输入参数]
*/
public static function SlideDelete($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
];
$ret = params_checked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 删除操作
if(db('Slide')->where(['id'=>$params['id']])->delete())
{
return DataReturn('删除成功');
}
return DataReturn('删除失败或资源不存在', -100);
}
/**
* 状态更新
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public static function SlideStatusUpdate($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
[
'checked_type' => 'in',
'key_name' => 'state',
'checked_data' => [0,1],
'error_msg' => '状态有误',
],
];
$ret = params_checked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 数据更新
if(db('Slide')->where(['id'=>intval($params['id'])])->update(['is_enable'=>intval($params['state'])]))
{
return DataReturn('编辑成功');
}
return DataReturn('编辑失败或数据未改变', -100);
}
}
?>
\ No newline at end of file
......@@ -15,4 +15,9 @@
}
@media only screen and (max-width: 321px) {
.view-operation button { margin: 2px 0px; }
}
\ No newline at end of file
}
/**
* 覆盖插件样式
*/
ul.plug-file-upload-view li { width: 300px; height: 130px; }
\ No newline at end of file
......@@ -171,9 +171,13 @@ ul.plug-file-upload-view li {
border: 1px dashed #c2c2c2;
position: relative;
}
ul.plug-file-upload-view li input {
position: absolute;
margin-left: -1000000px;
}
ul.plug-file-upload-view li img, ul.plug-file-upload-view-video li video {
width: 100%;
height: 100%;
max-width: 100%;
max-height: 100%;
}
ul.plug-file-upload-view li i {
font-style: normal;
......
......@@ -1504,6 +1504,7 @@ $(function()
{
var $tag = $($('body').attr('view-tag'));
var max_number = $tag.data('max-number') || 0;
var is_delete = ($tag.data('delete') == undefined) ? 1 : $tag.data('delete');
// 只限制一条
if(max_number <= 1)
......@@ -1521,9 +1522,12 @@ $(function()
}
var html = '<li>';
html += '<input type="hidden" name="'+$tag.data('form-name')+'" value="'+result[i].src+'" />';
html += '<input type="text" name="'+$tag.data('form-name')+'" value="'+result[i].src+'" />';
html += '<img src="'+result[i].src+'" />';
html += '<i>×</i>';
if(is_delete == 1)
{
html += '<i>×</i>';
}
html += '</li>';
$tag.append(html);
}
......@@ -1537,6 +1541,7 @@ $(function()
{
var $tag = $($('body').attr('view-tag'));
var max_number = $tag.data('max-number') || 0;
var is_delete = ($tag.data('delete') == undefined) ? 1 : $tag.data('delete');
// 只限制一条
if(max_number <= 1)
......@@ -1555,9 +1560,12 @@ $(function()
var $tag = $($('body').attr('view-tag'));
var html = '<li>';
html += '<input type="hidden" name="'+$tag.data('form-name')+'" value="'+result[i].src+'" />';
html += '<input type="text" name="'+$tag.data('form-name')+'" value="'+result[i].src+'" />';
html += '<video src="'+result[i].src+'" controls>your browser does not support the video tag</video>';
html += '<i>×</i>';
if(is_delete == 1)
{
html += '<i>×</i>';
}
html += '</li>';
$tag.append(html);
}
......@@ -1578,6 +1586,7 @@ $(function()
{
var $tag = $($('body').attr('view-tag'));
var max_number = $tag.data('max-number') || 0;
var is_delete = ($tag.data('delete') == undefined) ? 1 : $tag.data('delete');
// 只限制一条
if(max_number <= 1)
......@@ -1596,9 +1605,12 @@ $(function()
var $tag = $($('body').attr('view-tag'));
var html = '<li>';
html += '<input type="hidden" name="'+$tag.data('form-name')+'" value="'+result[i].src+'" />';
html += '<input type="text" name="'+$tag.data('form-name')+'" value="'+result[i].src+'" />';
html += '<a href="'+result[i].src+'">'+result[i].src+'</a>';
html += '<i>×</i>';
if(is_delete == 1)
{
html += '<i>×</i>';
}
html += '</li>';
$tag.append(html);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册