19 changed files with 659 additions and 22 deletions
@ -0,0 +1,110 @@ |
|||||
|
<?php |
||||
|
|
||||
|
|
||||
|
namespace app\admin\controller\vote; |
||||
|
|
||||
|
|
||||
|
use app\admin\logic\content\ArticleCategoryLogic; |
||||
|
use app\admin\logic\content\ResourceCategoryLogic; |
||||
|
use app\admin\logic\content\ResourceLogic; |
||||
|
use app\admin\logic\vote\VoteCategoryLogic; |
||||
|
use app\admin\logic\vote\VoteLogic; |
||||
|
use app\admin\validate\content\ArticleCategoryValidate; |
||||
|
use app\common\basics\AdminBase; |
||||
|
use app\common\server\JsonServer; |
||||
|
|
||||
|
class VoteCategory extends AdminBase |
||||
|
{ |
||||
|
/** |
||||
|
* @NOTES: 资源分类列表 |
||||
|
* @author: 张无忌 |
||||
|
*/ |
||||
|
public function lists() |
||||
|
{ |
||||
|
if ($this->request->isAjax()) { |
||||
|
$get = $this->request->get(); |
||||
|
$lists = VoteCategoryLogic::lists($get); |
||||
|
return JsonServer::success("获取成功", $lists); |
||||
|
} |
||||
|
|
||||
|
return view(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @NOTES: 添加资源分类 |
||||
|
* @author: 张无忌 |
||||
|
*/ |
||||
|
public function add() |
||||
|
{ |
||||
|
if ($this->request->isAjax()) { |
||||
|
$post = $this->request->post(); |
||||
|
$res = VoteCategoryLogic::add($post); |
||||
|
if ($res === false) { |
||||
|
$error = VoteCategoryLogic::getError() ?: '新增失败'; |
||||
|
return JsonServer::error($error); |
||||
|
} |
||||
|
return JsonServer::success('新增成功'); |
||||
|
} |
||||
|
return view(''); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @NOTES: 编辑分类 |
||||
|
* @author: 张无忌 |
||||
|
*/ |
||||
|
public function edit() |
||||
|
{ |
||||
|
if ($this->request->isAjax()) { |
||||
|
$post = $this->request->post(); |
||||
|
$res = VoteCategoryLogic::edit($post); |
||||
|
if ($res === false) { |
||||
|
$error = VoteCategoryLogic::getError() ?: '编辑失败'; |
||||
|
return JsonServer::error($error); |
||||
|
} |
||||
|
return JsonServer::success('编辑成功'); |
||||
|
} |
||||
|
|
||||
|
$id = $this->request->get('id'); |
||||
|
return view('', [ |
||||
|
'detail' => VoteCategoryLogic::detail($id) |
||||
|
]); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @NOTES: 删除分类 |
||||
|
* @author: 张无忌 |
||||
|
*/ |
||||
|
public function del() |
||||
|
{ |
||||
|
if ($this->request->isAjax()) { |
||||
|
$id = $this->request->post('id'); |
||||
|
$res = VoteCategoryLogic::del($id); |
||||
|
if ($res === false) { |
||||
|
$error = VoteCategoryLogic::getError() ?: '删除失败'; |
||||
|
return JsonServer::error($error); |
||||
|
} |
||||
|
return JsonServer::success('删除成功'); |
||||
|
} |
||||
|
|
||||
|
return JsonServer::error('异常'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Notes: 隐藏分类 |
||||
|
* @Author: 张无忌 |
||||
|
*/ |
||||
|
public function hide() |
||||
|
{ |
||||
|
if ($this->request->isAjax()) { |
||||
|
$id = $this->request->post('id'); |
||||
|
$res = VoteCategoryLogic::hide($id); |
||||
|
if ($res === false) { |
||||
|
$error = VoteCategoryLogic::getError() ?: '操作失败'; |
||||
|
return JsonServer::error($error); |
||||
|
} |
||||
|
return JsonServer::success('操作成功'); |
||||
|
} |
||||
|
|
||||
|
return JsonServer::success('异常'); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,160 @@ |
|||||
|
<?php |
||||
|
|
||||
|
|
||||
|
namespace app\admin\logic\vote; |
||||
|
|
||||
|
|
||||
|
use app\common\basics\Logic; |
||||
|
use app\common\model\vote\VoteCategory; |
||||
|
use Exception; |
||||
|
|
||||
|
class VoteCategoryLogic extends Logic |
||||
|
{ |
||||
|
/** |
||||
|
* 获取资源分类 |
||||
|
* @param $get |
||||
|
* @return array |
||||
|
*/ |
||||
|
public static function lists($get) |
||||
|
{ |
||||
|
try { |
||||
|
$where = [ |
||||
|
['del', '=', 0], |
||||
|
]; |
||||
|
|
||||
|
$model = new VoteCategory(); |
||||
|
$lists = $model->field(true) |
||||
|
->where($where) |
||||
|
->order('id', 'desc') |
||||
|
->paginate([ |
||||
|
'page' => $get['page'], |
||||
|
'list_rows' => $get['limit'], |
||||
|
'var_page' => 'page' |
||||
|
]) |
||||
|
->toArray(); |
||||
|
|
||||
|
foreach ($lists['data'] as &$item) { |
||||
|
$item['is_show'] = $item['is_show'] ? '启用' : '停用'; |
||||
|
} |
||||
|
|
||||
|
return ['count'=>$lists['total'], 'lists'=>$lists['data']]; |
||||
|
} catch (Exception $e) { |
||||
|
return ['error'=>$e->getMessage()]; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Notes: 获取分类 |
||||
|
* @Author: 张无忌 |
||||
|
* @return array |
||||
|
*/ |
||||
|
public static function getCategory($pid=0) |
||||
|
{ |
||||
|
try { |
||||
|
$model = new VoteCategory(); |
||||
|
return $model->field(true) |
||||
|
->where(['del'=>0, 'is_show'=>1]) |
||||
|
->order('id', 'desc') |
||||
|
->select() |
||||
|
->toArray(); |
||||
|
|
||||
|
} catch (\Exception $e) { |
||||
|
return []; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取文章分类详细 |
||||
|
* @param $id |
||||
|
* @return array |
||||
|
*/ |
||||
|
public static function detail($id) |
||||
|
{ |
||||
|
$model = new VoteCategory(); |
||||
|
return $model->field(true)->findOrEmpty($id)->toArray(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 添加分类 |
||||
|
* @param $post |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function add($post) |
||||
|
{ |
||||
|
try { |
||||
|
VoteCategory::create([ |
||||
|
'name' => $post['name'], |
||||
|
'is_show' => $post['is_show'] |
||||
|
]); |
||||
|
|
||||
|
return true; |
||||
|
} catch (\Exception $e) { |
||||
|
static::$error = $e->getMessage(); |
||||
|
return false; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 编辑分类 |
||||
|
* @param $post |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function edit($post) |
||||
|
{ |
||||
|
try { |
||||
|
|
||||
|
VoteCategory::update([ |
||||
|
'name' => $post['name'], |
||||
|
'is_show' => $post['is_show'] |
||||
|
], ['id'=>$post['id']]); |
||||
|
|
||||
|
return true; |
||||
|
} catch (\Exception $e) { |
||||
|
static::$error = $e->getMessage(); |
||||
|
return false; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 删除分类 |
||||
|
* @param $id |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function del($id) |
||||
|
{ |
||||
|
try { |
||||
|
VoteCategory::update([ |
||||
|
'del' => 1 |
||||
|
], ['id'=>$id]); |
||||
|
|
||||
|
return true; |
||||
|
} catch (\Exception $e) { |
||||
|
static::$error = $e->getMessage(); |
||||
|
return false; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Notes: 隐藏 |
||||
|
* @Author: 张无忌 |
||||
|
* @param $id |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function hide($id) |
||||
|
{ |
||||
|
try { |
||||
|
$model = new VoteCategory(); |
||||
|
$category = $model->findOrEmpty($id)->toArray(); |
||||
|
|
||||
|
VoteCategory::update([ |
||||
|
'is_show' => !$category['is_show'], |
||||
|
'update_time' => time() |
||||
|
], ['id'=>$id]); |
||||
|
|
||||
|
return true; |
||||
|
} catch (\Exception $e) { |
||||
|
static::$error = $e->getMessage(); |
||||
|
return false; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
{layout name="layout2" /} |
||||
|
<div class="layui-card layui-form" style="box-shadow:none;"> |
||||
|
<div class="layui-card-body"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label for="name" class="layui-form-label"><span style="color:red;">*</span>分类名称:</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="text" name="name" id="name" lay-verify="required" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label"><span style="color:red;">*</span>分类状态:</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="is_show" value="1" title="启用"> |
||||
|
<input type="radio" name="is_show" value="0" title="关闭" checked> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item layui-hide"> |
||||
|
<input type="button" lay-submit lay-filter="addSubmit" id="addSubmit" value="确认"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
@ -0,0 +1,23 @@ |
|||||
|
{layout name="layout2" /} |
||||
|
<div class="layui-card layui-form" style="box-shadow:none;"> |
||||
|
<div class="layui-card-body"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label for="name" class="layui-form-label"><span style="color:red;">*</span>分类名称:</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="text" name="name" id="name" value="{$detail.name}" lay-verify="required" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label"><span style="color:red;">*</span>分类状态:</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="is_show" value="1" title="启用" {if $detail.is_show}checked{/if}> |
||||
|
<input type="radio" name="is_show" value="0" title="关闭" {if !$detail.is_show}checked{/if}> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item layui-hide"> |
||||
|
<input type="button" lay-submit lay-filter="addSubmit" id="addSubmit" value="确认"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
@ -0,0 +1,151 @@ |
|||||
|
{layout name="layout1" /} |
||||
|
|
||||
|
<div class="wrapper"> |
||||
|
<div class="layui-card"> |
||||
|
<!-- 操作提示 --> |
||||
|
<div class="layui-card-body"> |
||||
|
<div class="layui-collapse" style="border:1px dashed #c4c4c4"> |
||||
|
<div class="layui-colla-item"> |
||||
|
<h2 class="layui-colla-title like-layui-colla-title">操作提示</h2> |
||||
|
<div class="layui-colla-content layui-show"> |
||||
|
<p>*平台维护活动分类,方便投票活动整理。</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- 主体区域 --> |
||||
|
<div class="layui-card-body"> |
||||
|
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm layEvent" lay-event="add">新增活动分类</button> |
||||
|
|
||||
|
<table id="like-table-lists" lay-filter="like-table-lists"></table> |
||||
|
<script type="text/html" id="table-operation"> |
||||
|
<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="edit">编辑</a> |
||||
|
{{# if(d.is_show == '启用'){ }}<a class="layui-btn layui-btn-normal layui-btn-sm layui-btn-warm" lay-event="hide">停用</a>{{# } }} |
||||
|
{{# if(d.is_show == '停用'){ }}<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="hide">启用</a>{{# } }} |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del">删除</a> |
||||
|
</script> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<script> |
||||
|
layui.use(["table"], function(){ |
||||
|
var table = layui.table; |
||||
|
like.tableLists("#like-table-lists", "{:url()}", [ |
||||
|
{field:"id", width:60, title:"ID"} |
||||
|
,{field:"name", width:160, align:"center", title:"资料分类"} |
||||
|
,{field:"is_show", width:100, align:"center", title:"资料状态"} |
||||
|
,{field:"create_time", width:180, align:"center", title:"创建时间"} |
||||
|
,{title:"操作", width:220, align:"center", fixed:"right", toolbar:"#table-operation"} |
||||
|
]); |
||||
|
|
||||
|
|
||||
|
var active = { |
||||
|
add: function() { |
||||
|
layer.open({ |
||||
|
type: 2 |
||||
|
,title: "新增活动分类" |
||||
|
,content: "{:url('vote.VoteCategory/add')}" |
||||
|
,area: ["550px", "400px"] |
||||
|
,btn: ["确定", "取消"] |
||||
|
,yes: function(index, layero){ |
||||
|
var iframeWindow = window["layui-layer-iframe" + index]; |
||||
|
var submit = layero.find("iframe").contents().find("#addSubmit"); |
||||
|
iframeWindow.layui.form.on("submit(addSubmit)", function(data){ |
||||
|
like.ajax({ |
||||
|
url: "{:url('vote.VoteCategory/add')}", |
||||
|
data: data.field, |
||||
|
type: "POST", |
||||
|
success:function(res) { |
||||
|
if(res.code === 1) { |
||||
|
layui.layer.msg(res.msg); |
||||
|
layer.close(index); |
||||
|
table.reload("like-table-lists", { |
||||
|
where: {}, |
||||
|
page: { cur: 1 } |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
submit.trigger("click"); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
edit: function(obj) { |
||||
|
layer.open({ |
||||
|
type: 2 |
||||
|
,title: "编辑活动分类" |
||||
|
,content: "{:url('vote.VoteCategory/edit')}?id=" + obj.data.id |
||||
|
,area: ["550px", "400px"] |
||||
|
,btn: ["确定", "取消"] |
||||
|
,yes: function(index, layero){ |
||||
|
var iframeWindow = window["layui-layer-iframe" + index]; |
||||
|
var submit = layero.find("iframe").contents().find("#addSubmit"); |
||||
|
iframeWindow.layui.form.on("submit(addSubmit)", function(data){ |
||||
|
data.field['id'] = obj.data.id; |
||||
|
like.ajax({ |
||||
|
url: "{:url('vote.VoteCategory/edit')}", |
||||
|
data: data.field, |
||||
|
type: "POST", |
||||
|
success:function(res) { |
||||
|
if(res.code === 1) { |
||||
|
layui.layer.msg(res.msg); |
||||
|
layer.close(index); |
||||
|
table.reload("like-table-lists", { |
||||
|
where: {}, |
||||
|
page: { cur: 1 } |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
submit.trigger("click"); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
del: function(obj) { |
||||
|
layer.confirm("确定删除活动分类:"+obj.data.name, function(index) { |
||||
|
like.ajax({ |
||||
|
url: "{:url('vote.VoteCategory/del')}", |
||||
|
data: {id: obj.data.id}, |
||||
|
type: "POST", |
||||
|
success: function (res) { |
||||
|
if (res.code === 1) { |
||||
|
layui.layer.msg(res.msg); |
||||
|
layer.close(index); |
||||
|
obj.del(); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}) |
||||
|
}, |
||||
|
hide: function(obj) { |
||||
|
var text = obj.data.is_show === '启用' ? '确定停用:' : '确定启用:'; |
||||
|
layer.confirm(text+obj.data.name, function(index) { |
||||
|
like.ajax({ |
||||
|
url: "{:url('vote.VoteCategory/hide')}", |
||||
|
data: {id: obj.data.id}, |
||||
|
type: "POST", |
||||
|
success: function (res) { |
||||
|
if (res.code === 1) { |
||||
|
layui.layer.msg(res.msg); |
||||
|
layer.close(index); |
||||
|
table.reload("like-table-lists", { |
||||
|
where: {}, |
||||
|
page: { cur: 1 } |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}) |
||||
|
} |
||||
|
}; |
||||
|
like.eventClick(active); |
||||
|
|
||||
|
}) |
||||
|
</script> |
||||
@ -0,0 +1,12 @@ |
|||||
|
<?php |
||||
|
|
||||
|
|
||||
|
namespace app\common\model\vote; |
||||
|
|
||||
|
|
||||
|
use app\common\basics\Models; |
||||
|
|
||||
|
class VoteCategory extends Models |
||||
|
{ |
||||
|
|
||||
|
} |
||||
Loading…
Reference in new issue