职位编辑

This commit is contained in:
1099438829 2021-02-20 17:56:09 +08:00
parent b10e3dc5c1
commit 8e5dcf5d0e
5 changed files with 517 additions and 41 deletions

View File

@ -2,9 +2,8 @@
namespace app\admin\controller;
use app\admin\model\Document;
use app\admin\model\DocumentArticle;
use app\admin\model\DocumentProduct;
use app\admin\model\Document as aModel;
use app\admin\model\DocumentCategory as cModel;
use app\Request;
use app\admin\services\UtilService as Util;
@ -17,7 +16,7 @@ use app\admin\services\UtilService as Util;
class Article extends AuthController
{
/**
* 账号列表
* 文章管理主页
* @return string
* @throws \Exception
*/
@ -46,7 +45,7 @@ class Article extends AuthController
['page',1],
['limit',20],
]);
return app("json")->layui(Document::systemPage($where));
return app("json")->layui(aModel::systemPage($where));
}
/**
@ -85,7 +84,7 @@ class Article extends AuthController
$saveData[$key] = $value;
}
}
return Document::update($saveData,['id'=>$id]) ? app("json")->success("操作成功") : app("json")->fail("操作失败");
return aModel::update($saveData,['id'=>$id]) ? app("json")->success("操作成功") : app("json")->fail("操作失败");
}
/**
@ -100,7 +99,33 @@ class Article extends AuthController
if (!$id) return app("json")->fail("参数有误Id为空");
$where = Util::postMore([['field',''],['value','']]);
if ($where['field'] == '' || $where['value'] =='') return app("json")->fail("参数有误!");
return Document::update([$where['field']=>$where['value']],['id'=>$id]) ? app("json")->success("操作成功") : app("json")->fail("操作失败");
return aModel::update([$where['field']=>$where['value']],['id'=>$id]) ? app("json")->success("操作成功") : app("json")->fail("操作失败");
}
/**
* 新增页
* @return string
* @throws \Exception
*/
public function add()
{
$this->assign("category",cModel::selectByType(2));
return $this->fetch();
}
/**
* 编辑页
* @return string
* @throws \Exception
* @author 李玉坤
* @date 2021-02-20 17:00
*/
public function edit(Request $request)
{
$this->assign("category",CModel::selectByType(2));
$this->assign("info",aModel::get($request->param(['id'])));
return $this->fetch();
}
}

View File

@ -35,4 +35,24 @@ class DocumentCategory extends BaseModel
$data = $model->select();
return $data->toArray() ?: [];
}
/**
* 查询分类选择类型
* @param int $type
* @param array $ids
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function selectByType(int $type = 0,array $ids = [])
{
$model = new self;
if (!empty($ids)) $model = $model->where("id","not in", $ids);
if ($type != 0) $model = $model->where("type",$type);
$model = $model->where("status",1);
$model = $model->field("id,name");
$data = $model->select();
return $data ? $data->toArray() : [];
}
}

View File

@ -0,0 +1,231 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<title>CMS - 派后台管理系统</title>
<link rel="icon" href="__ADMIN_PATH__favicon.ico" type="image/ico">
<meta name="keywords" content="派后台管理系统">
<meta name="description" content="派后台管理系统">
<meta name="author" content="cfn">
<link href="__ADMIN_PATH__css/bootstrap.min.css" rel="stylesheet">
<link href="__ADMIN_PATH__css/materialdesignicons.min.css" rel="stylesheet">
<link href="__ADMIN_PATH__css/style.min.css" rel="stylesheet">
<!--select2-->
<link href="__ADMIN_PATH__css/select2.min.css" rel="stylesheet">
<!--弹出框-->
<link rel="stylesheet" href="__ADMIN_PATH__js/jconfirm/jquery-confirm.min.css">
<!--时间选择插件-->
<link rel="stylesheet" href="__ADMIN_PATH__js/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css">
<style>
</style>
</head>
<body>
<div class="container-fluid p-t-15">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<form action="#!" method="post" class="row" id="myForm">
<div class="form-group col-md-12">
<label for="title">文章名称</label>
<input type="text" class="form-control" id="title" name="title" value="" placeholder="文章名称" />
</div>
<div class="form-group col-md-12">
<label for="category_id">栏目分类</label>
<div class="form-controls">
<select name="category_id" class="form-control" id="category_id">
<option value="0">请选择</option>
{volist name="category" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group col-md-12">
<label for="author">作者</label>
<input type="text" class="form-control" id="author" name="author" value="" placeholder="作者" />
</div>
<div class="form-group col-md-12">
<label for="image">主图</label>
<div class="input-group">
<input type="text" class="form-control" name="image" id="image" value="" />
<input type="file" id="fileimage" style="display: none;" onchange="upload('image')"/>
<div class="input-group-btn"><button class="btn btn-default" type="button" onclick="btnClick('image')">上传</button></div>
</div>
</div>
<div class="form-group col-md-12">
<label for="is_recommend">推荐</label>
<div class="clearfix">
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_recommend" value="1"><span></span>
</label>
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_recommend" value="0" checked><span></span>
</label>
</div>
</div>
<div class="form-group col-md-12">
<label for="is_hot">热门</label>
<div class="clearfix">
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_hot" value="1"><span></span>
</label>
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_hot" value="0" checked><span></span>
</label>
</div>
</div>
<div class="form-group col-md-12">
<label for="is_top">顶置</label>
<div class="clearfix">
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_top" value="1"><span></span>
</label>
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_top" value="0" checked><span></span>
</label>
</div>
</div>
<div class="form-group col-md-12">
<label for="abstract">摘要</label>
<textarea name="abstract" id="abstract" class="form-control"></textarea>
</div>
<div class="form-group col-md-12">
<label for="content">文章内容</label>
<textarea id="content" name="content"></textarea>
</div>
<div class="form-group col-md-12">
<label for="show_time">发布时间</label>
<input class="form-control js-datetimepicker" type="text" id="show_time" name="show_time" placeholder="请选择具体时间" value="" data-side-by-side="true" data-locale="zh-cn" data-format="YYYY-MM-DD HH:mm:ss" />
</div>
<div class="form-group col-md-12">
<label for="status">状态</label>
<div class="clearfix">
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="status" value="1" checked><span>启用</span>
</label>
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="status" value="0"><span>禁用</span>
</label>
</div>
</div>
<div class="form-group col-md-12">
<button type="submit" class="btn btn-primary ajax-post" target-form="add-form">确 定</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="__ADMIN_PATH__js/jquery.min.js"></script>
<script type="text/javascript" src="__ADMIN_PATH__js/bootstrap.min.js"></script>
<script type="text/javascript" src="__ADMIN_PATH__js/main.min.js"></script>
<!--弹出框-->
<script src="__ADMIN_PATH__js/jconfirm/jquery-confirm.min.js"></script>
<!--弹出框架-->
<script type="text/javascript" src="__ADMIN_PATH__js/iframe.js"></script>
<!--时间选择插件-->
<script src="__ADMIN_PATH__js/bootstrap-datetimepicker/moment.min.js"></script>
<script src="__ADMIN_PATH__js/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js"></script>
<script src="__ADMIN_PATH__js/bootstrap-datetimepicker/locale/zh-cn.js"></script>
<!--富文本输入框-->
<script src="__ADMIN_PATH__js/tinymce/tinymce.min.js"></script>
<!--通知-->
<script src="__ADMIN_PATH__js/bootstrap-notify.min.js"></script>
<!--select2-->
<script src="__ADMIN_PATH__js/select2.min.js"></script>
<script type="text/javascript" src="__ADMIN_PATH__js/lightyear.js"></script>
<script>
$(function () {
$('#tag').select2();
});
$(document).ready(function(){
tinymce.init({
selector: '#content',
language: 'zh_CN',
directionality: 'ltl',
browser_spellcheck: true,
contextmenu: false,
height: 480,
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste imagetools wordcount",
"code"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | code",
images_upload_url: '/admin/widget.files/tinymce',
});
});
/**
* 选择文件
* @param inputName
*/
function btnClick(inputName) {
$("#file"+inputName).click()
}
/**
* 异步上传
* @param inputName
*/
function upload(inputName) {
var formData = new FormData();
formData.append("file",$("#file"+inputName)[0].files[0]);
$.ajax({
type:'POST',
url:'/admin/widget.files/image',
data: formData,
cache: false,
processData: false,
contentType: false,
success: function (res) {
if (!Array.isArray(res)) res = jQuery.parseJSON(res);
$("#"+inputName).val(res.data.filePath);
}
});
}
$("#myForm").submit(function () {
$category_id = $('#category_id option:selected').val();
$content = tinymce.get('content').getContent();
$show_time = $('#show_time').val();
$title = $('#title').val();
$abstract = $('#abstract').val();
$author = $('#author').val();
$image = $('#image').val();
$is_recommend = $('input[name=is_recommend]:radio:checked').val();
$is_hot = $('input[name=is_hot]:radio:checked').val();
$is_top = $('input[name=is_top]:radio:checked').val();
var $tag = "";
$('#tag option:selected').each(function() {
$tag += $(this).attr("value")+",";
});
$show_time = $('#show_time').val();
$status = $('input[name=status]:radio:checked').val();
if ($category_id == 0) {lightyear.notify("栏目分类不能为空", 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');return false;}
if ($title == '') {lightyear.notify("文章名称不能为空", 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');return false;}
if ($author == '') {lightyear.notify("作者不能为空", 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');return false;}
$.post(url="/admin/cms.cms_article/save",data={
"category_id":$category_id,
"content":$content,
"show_time":$show_time,
"status":$status,
"is_recommend":$is_recommend,
"is_hot":$is_hot,
"is_top":$is_top,
"title":$title,
"image":$image,
"tag":$tag,
"author":$author,
"abstract":$abstract,
},function (res) {
if (res.code == 200) {lightyear.notify(res.msg, 'success', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');setTimeout(function () {parent.location.reload()},2000)}
else lightyear.notify(res.msg, 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
});
return false;
})
</script>
</body>
</html>

View File

@ -0,0 +1,231 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<title>CMS - 派后台管理系统</title>
<link rel="icon" href="__ADMIN_PATH__favicon.ico" type="image/ico">
<meta name="keywords" content="派后台管理系统">
<meta name="description" content="派后台管理系统">
<meta name="author" content="cfn">
<link href="__ADMIN_PATH__css/bootstrap.min.css" rel="stylesheet">
<link href="__ADMIN_PATH__css/materialdesignicons.min.css" rel="stylesheet">
<link href="__ADMIN_PATH__css/style.min.css" rel="stylesheet">
<!--select2-->
<link href="__ADMIN_PATH__css/select2.min.css" rel="stylesheet">
<!--弹出框-->
<link rel="stylesheet" href="__ADMIN_PATH__js/jconfirm/jquery-confirm.min.css">
<!--时间选择插件-->
<link rel="stylesheet" href="__ADMIN_PATH__js/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css">
<style>
</style>
</head>
<body>
<div class="container-fluid p-t-15">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<form action="#!" method="post" class="row" id="myForm">
<div class="form-group col-md-12">
<label for="name">文章名称</label>
<input type="text" class="form-control" id="name" name="name" value="{$info.name}" placeholder="文章名称" />
</div>
<div class="form-group col-md-12">
<label for="category_id">栏目分类</label>
<div class="form-controls">
<select name="category_id" class="form-control" id="category_id">
<option value="0">请选择</option>
{volist name="category" id="vo"}
<option value="{$vo.id}" {if $vo.id == $info.category_id}selected{/if}>{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group col-md-12">
<label for="author">作者</label>
<input type="text" class="form-control" id="author" name="author" value="{$info.author}" placeholder="作者" />
</div>
<div class="form-group col-md-12">
<label for="image">主图</label>
<div class="input-group">
<input type="text" class="form-control" name="image" id="image" value="{$info.image}" />
<input type="file" id="fileimage" style="display: none;" onchange="upload('image')"/>
<div class="input-group-btn"><button class="btn btn-default" type="button" onclick="btnClick('image')">上传</button></div>
</div>
</div>
<div class="form-group col-md-12">
<label for="is_recommend">推荐</label>
<div class="clearfix">
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_recommend" value="1" {if $info.is_recommend = 1}checked{/if}><span></span>
</label>
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_recommend" value="0" {if $info.is_recommend = 0}checked{/if}><span></span>
</label>
</div>
</div>
<div class="form-group col-md-12">
<label for="is_hot">热门</label>
<div class="clearfix">
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_hot" value="1" {if $info.is_hot = 1}checked{/if}><span></span>
</label>
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_hot" value="0" {if $info.is_hot = 0}checked{/if}><span></span>
</label>
</div>
</div>
<div class="form-group col-md-12">
<label for="is_top">顶置</label>
<div class="clearfix">
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_top" value="1" {if $info.is_top = 1}checked{/if}><span></span>
</label>
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="is_top" value="0" {if $info.is_top = 0}checked{/if}><span></span>
</label>
</div>
</div>
<div class="form-group col-md-12">
<label for="abstract">摘要</label>
<textarea name="abstract" id="abstract" class="form-control">{$info.abstract}</textarea>
</div>
<div class="form-group col-md-12">
<label for="content">文章内容</label>
<textarea id="content" name="content">{$info.content|html_entity_decode}</textarea>
</div>
<div class="form-group col-md-12">
<label for="show_time">发布时间</label>
<input class="form-control js-datetimepicker" type="text" id="show_time" name="show_time" placeholder="请选择具体时间" value="{$info.show_time|date='Y-m-d H:i:s'}" data-side-by-side="true" data-locale="zh-cn" data-format="YYYY-MM-DD HH:mm:ss" />
</div>
<div class="form-group col-md-12">
<label for="status">状态</label>
<div class="clearfix">
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="status" value="1" checked><span>启用</span>
</label>
<label class="lyear-radio radio-inline radio-primary">
<input type="radio" name="status" value="0"><span>禁用</span>
</label>
</div>
</div>
<div class="form-group col-md-12">
<button type="submit" class="btn btn-primary ajax-post" target-form="add-form">确 定</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="__ADMIN_PATH__js/jquery.min.js"></script>
<script type="text/javascript" src="__ADMIN_PATH__js/bootstrap.min.js"></script>
<script type="text/javascript" src="__ADMIN_PATH__js/main.min.js"></script>
<!--弹出框-->
<script src="__ADMIN_PATH__js/jconfirm/jquery-confirm.min.js"></script>
<!--弹出框架-->
<script type="text/javascript" src="__ADMIN_PATH__js/iframe.js"></script>
<!--时间选择插件-->
<script src="__ADMIN_PATH__js/bootstrap-datetimepicker/moment.min.js"></script>
<script src="__ADMIN_PATH__js/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js"></script>
<script src="__ADMIN_PATH__js/bootstrap-datetimepicker/locale/zh-cn.js"></script>
<!--富文本输入框-->
<script src="__ADMIN_PATH__js/tinymce/tinymce.min.js"></script>
<!--通知-->
<script src="__ADMIN_PATH__js/bootstrap-notify.min.js"></script>
<!--select2-->
<script src="__ADMIN_PATH__js/select2.min.js"></script>
<script type="text/javascript" src="__ADMIN_PATH__js/lightyear.js"></script>
<script>
$(function () {
$('#tag').select2();
});
$(document).ready(function(){
tinymce.init({
selector: '#content',
language: 'zh_CN',
directionality: 'ltl',
browser_spellcheck: true,
contextmenu: false,
height: 480,
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste imagetools wordcount",
"code"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | code",
images_upload_url: '/admin/widget.files/tinymce',
});
});
/**
* 选择文件
* @param inputName
*/
function btnClick(inputName) {
$("#file"+inputName).click()
}
/**
* 异步上传
* @param inputName
*/
function upload(inputName) {
var formData = new FormData();
formData.append("file",$("#file"+inputName)[0].files[0]);
$.ajax({
type:'POST',
url:'/admin/widget.files/image',
data: formData,
cache: false,
processData: false,
contentType: false,
success: function (res) {
if (!Array.isArray(res)) res = jQuery.parseJSON(res);
$("#"+inputName).val(res.data.filePath);
}
});
}
$("#myForm").submit(function () {
$category_id = $('#category_id option:selected').val();
$content = tinymce.get('content').getContent();
$show_time = $('#show_time').val();
$name = $('#name').val();
$abstract = $('#abstract').val();
$author = $('#author').val();
$image = $('#image').val();
$is_recommend = $('input[name=is_recommend]:radio:checked').val();
$is_hot = $('input[name=is_hot]:radio:checked').val();
$is_top = $('input[name=is_top]:radio:checked').val();
var $tag = "";
$('#tag option:selected').each(function() {
$tag += $(this).attr("value")+",";
});
$show_time = $('#show_time').val();
$status = $('input[name=status]:radio:checked').val();
if ($category_id == 0) {lightyear.notify("栏目分类不能为空", 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');return false;}
if ($name == '') {lightyear.notify("文章名称不能为空", 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');return false;}
if ($author == '') {lightyear.notify("作者不能为空", 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');return false;}
$.post(url="/admin/cms.cms_article/save?id={$info.id}",data={
"category_id":$category_id,
"content":$content,
"show_time":$show_time,
"status":$status,
"is_recommend":$is_recommend,
"is_hot":$is_hot,
"is_top":$is_top,
"name":$name,
"image":$image,
"tag":$tag,
"author":$author,
"abstract":$abstract,
},function (res) {
if (res.code == 200) {lightyear.notify(res.msg, 'success', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');setTimeout(function () {parent.location.reload()},2000)}
else lightyear.notify(res.msg, 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
});
return false;
})
</script>
</body>
</html>

View File

@ -20,14 +20,6 @@
</div>
</div>
</div>
<div class="form-group">
<label for="ip">来访IP</label>
<div class="input-group">
<div class="input-group">
<input type="text" class="form-control" id="ip" name="ip" placeholder="IP地址">
</div>
</div>
</div>
<div class="form-group">
<label for="start_time">操作时间</label>
<div class="input-group">
@ -45,8 +37,8 @@
<div class="card">
<div class="card-toolbar clearfix">
<div class="toolbar-btn-action">
<a class="btn btn-primary m-r-5" href="#!" onclick="iframe.createIframe('添加文章','/admin/article/add')"><i class="mdi mdi-plus"></i> 新增</a>
<a class="btn btn-warning" href="#!" onclick="delSelect()"><i class="mdi mdi-window-close"></i> 删除</a>
<a class="btn btn-danger" href="#!" onclick="delAll()"><i class="mdi mdi-window-close"></i> 全部删除</a>
</div>
</div>
<div class="card-body">
@ -132,11 +124,12 @@
title: '操作',
formatter:function (value,row,index) {
let html ='<a class="btn btn-xs btn-default btn-del" href="#!" title="删除" data-toggle="tooltip" onclick="delOne('+row.id+')"><i class="mdi mdi-window-close"></i></a>\n' +
'<a type="button" class="btn-edit btn btn-xs btn-default m-r-5" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>';
'<a type="button" class="btn-edit btn btn-xs btn-default m-r-5" onclick="iframe.createIframe(\'编辑文章\',\'/admin/article/edit?id='+row.id+'\')" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>';
return html;
},
events : {
'click .btn-edit': function (e, value, row, index) {
}
}
}],
@ -213,30 +206,6 @@
}
});
}
function delAll() {
$.confirm({
title: '重要提醒!',
content: '清空后将不可恢复,请谨慎操作!',
backgroundDismiss: true,
buttons: {
ok: {
text: '确认',
btnClass: 'btn-danger',
action: function () {
$.post("/admin/admin_log/empty",data={},function (res) {
if (res.status == 200 || res.code == 200) lightyear.notify(res.msg, 'success', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
else lightyear.notify(res.msg, 'danger', 3000, 'mdi mdi-emoticon-neutral', 'top', 'center');
location.reload();
})
}
},
cancel: {
text: '取消',
btnClass: 'btn-primary'
}
}
});
}
function delSelect() {
var checkID = "";