Commit a07eedb8 authored by 章建武's avatar 章建武

dep

parent 5e64028b
<?php
/**
* 用户控制器
*/
namespace app\admin\controller;
use app\common\model\Attachment;
use think\Request;
use app\common\model\ManagerList;
use app\common\validate\ManagerListValidate;
class ManagerController extends Controller
{
//列表
public function index(Request $request, ManagerList $model)
{
$param = $request->param();
$model = $model->scope('where', $param);
if (isset($param['export_data']) && $param['export_data'] == 1) {
$header = ['ID', '头像', '姓名', '公司', '职位', '创建时间'];
$body = [];
$data = $model->select();
foreach ($data as $item) {
$record = [];
$record['id'] = $item->id;
$record['manager_name'] = $item->manager_name;
$record['manager_position'] = $item->manager_position;
$record['manager_company'] = $item->manager_company;
$record['manager_img'] = $item->manager_img;
$record['created_at'] = date('Y-m-d H:i:s',$item->created_at);
$record['language_type'] = $item->language_type == 1 ? '英语' : '中文';
$body[] = $record;
}
return $this->exportData($header, $body, 'user-' . date('Y-m-d-H-i-s'));
}
$data = $model->where('status',0)->paginate($this->admin['per_page'], false, ['query' => $request->get()]);
foreach ($data as &$v){
$v['language_type'] = $v['language_type'] === 1 ? '英语' : '中文';
$v['created_at'] = date('Y-m-d H:i:s',$v['created_at']);
}
//关键词,排序等赋值
$this->assign($request->get());
$this->assign([
'data' => $data,
'page' => $data->render(),
'total' => $data->total(),
]);
return $this->fetch();
}
//添加
public function add(Request $request, ManagerList $model, ManagerListValidate $validate)
{
if ($request->isPost()) {
$param = $request->param();
if($param['language_type'] == '英语'){
$param['language_type'] = 1;
}else{
$param['language_type'] = 0;
}
$param['created_at'] = time();
$validate_result = $validate->scene('add')->check($param);
if (!$validate_result) {
return error($validate->getError());
}
//处理头像上传
$attachment_avatar = new Attachment;
$file_avatar = $attachment_avatar->upload('manager_img');
if ($file_avatar) {
$param['manager_img'] = $file_avatar->url;
} else {
return error($attachment_avatar->getError());
}
$result = $model::create($param);
$url = URL_BACK;
if (isset($param['_create']) && $param['_create'] == 1) {
$url = URL_RELOAD;
}
return $result ? success('添加成功', $url) : error();
}
$this->assign([
'language_type' => $model->language_type
]);
return $this->fetch();
}
//修改
public function edit($id, Request $request, ManagerList $model, ManagerListValidate $validate)
{
$data = $model::get($id);
if ($request->isPost()) {
$param = $request->param();
if($param['language_type'] == '英语'){
$param['language_type'] = 1;
}else{
$param['language_type'] = 0;
}
$validate_result = $validate->scene('edit')->check($param);
if (!$validate_result) {
return error($validate->getError());
}
//处理头像上传
if (!empty($_FILES['manager_img']['name'])) {
$attachment_avatar = new Attachment;
$file_avatar = $attachment_avatar->upload('manager_img');
if ($file_avatar) {
$param['manager_img'] = $file_avatar->url;
}
}
$result = $data->save($param);
return $result ? success() : error();
}
$this->assign([
'data' => $data,
'language_type' => $model->language_type
]);
return $this->fetch('add');
}
//删除
public function del($id, ManagerList $model)
{
if (count($model->noDeletionId) > 0) {
if (is_array($id)) {
if (array_intersect($model->noDeletionId, $id)) {
return error('ID为' . implode(',', $model->noDeletionId) . '的数据无法删除');
}
} else if (in_array($id, $model->noDeletionId)) {
return error('ID为' . $id . '的数据无法删除');
}
}
if ($model->softDelete) {
$result = $model->whereIn('id', $id)->update(['status'=>1]);
} else {
$result = $model->whereIn('id', $id)->update(['status'=>1]);
}
return $result ? success('操作成功', URL_RELOAD) : error();
}
//启用
public function enable($id, User $model)
{
$result = $model->whereIn('id', $id)->update(['status' => 1]);
return $result ? success('操作成功', URL_RELOAD) : error();
}
//禁用
public function disable($id, User $model)
{
$result = $model->whereIn('id', $id)->update(['status' => 0]);
return $result ? success('操作成功', URL_RELOAD) : error();
}
}
{extend name='public/base' /}
{block name='content'}
{include file='public/content_header' /}
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<!-- 表单头部 -->
<div class="box-header with-border">
<div class="btn-group">
<a class="btn flat btn-sm btn-default BackButton">
<i class="fa fa-arrow-left"></i>
返回
</a>
</div>
</div>
<!-- 表单 -->
<form id="dataForm" class="form-horizontal dataForm" action="" method="post"
enctype="multipart/form-data">
<!-- 表单字段区域 -->
<div class="box-body">
<div class="form-group">
<label for="language_type" class="col-sm-2 control-label">选择语言</label>
<div class="col-sm-10 col-md-4">
<select name="language_type" id="language_type" class="form-control select2">
{foreach name='language_type' item='item'}
<option value="{$item}" {if isset($data) &&
$data.language_type==$item}selected{/if}>
{$item}
</option>
{/foreach}
</select>
</div>
</div>
<script>
$('#language_type').select2();
</script>
<div class="form-group">
<label for="avatar" class="col-sm-2 control-label">头像</label>
<div class="col-sm-10 col-md-4">
<input id="avatar" name="manager_img" placeholder="请上传头像" {if
isset($data.manager_img)}data-initial-preview="{$data.manager_img}" {/if} type="file"
class="form-control field-image" >
</div>
</div>
<script>
$('#avatar').fileinput({
language: 'zh',
overwriteInitial: true,
browseLabel: '浏览',
initialPreviewAsData: true,
dropZoneEnabled: false,
showUpload: false,
showRemove: false,
allowedFileTypes: ['image'],
maxFileSize: 10240,
});
</script>
<script>
$('#user_level_id').select2();
</script>
<div class="form-group">
<label for="username" class="col-sm-2 control-label">姓名</label>
<div class="col-sm-10 col-md-4">
<input id="username" name="manager_name" value="{$data.manager_name|default=''}"
placeholder="请输入姓名" type="text" class="form-control field-text">
</div>
</div>
<div class="form-group">
<label for="mobile" class="col-sm-2 control-label">职位</label>
<div class="col-sm-10 col-md-4">
<input id="mobile" name="manager_position" value="{$data.manager_position|default=''}" placeholder="请输入职位"
type="tel" maxlength="11" class="form-control field-mobile">
</div>
</div>
<div class="form-group">
<label for="nickname" class="col-sm-2 control-label">公司</label>
<div class="col-sm-10 col-md-4">
<input id="nickname" name="manager_company" value="{$data.manager_company|default=''}"
placeholder="请输入公司" type="text" class="form-control field-text">
</div>
</div>
</div>
<!-- 表单底部 -->
<div class="box-footer">
{:token()}
<div class="col-sm-2">
</div>
<div class="col-sm-10 col-md-4">
{if !isset($data)}
<div class="btn-group pull-right">
<label class="createContinue">
<input type="checkbox" value="1" id="_create" name="_create"
title="继续添加数据">继续添加</label>
</div>
{/if}
<div class="btn-group">
<button type="submit" class="btn flat btn-info dataFormSubmit">
保存
</button>
</div>
<div class="btn-group">
<button type="reset" class="btn flat btn-default dataFormReset">
重置
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
<script>
/** 表单验证 **/
$('#dataForm').validate({
rules: {
'user_level_id': {
required: true,
},
'username': {
required: true,
},
'mobile': {
required: true,
},
'nickname': {
required: true,
},
'password': {
required: true,
},
'status': {
required: true,
},
},
messages: {
'user_level_id': {
required: "用户等级不能为空",
},
'username': {
required: "用户名不能为空",
},
'mobile': {
required: "手机号不能为空",
},
'nickname': {
required: "昵称不能为空",
},
'password': {
required: "密码不能为空",
},
'status': {
required: "是否启用不能为空",
},
}
});
</script>
{/block}
\ No newline at end of file
{extend name="public/base" /}
{block name='content'}
{include file='public/content_header' /}
<!--数据列表页面-->
<section class="content">
<!--顶部搜索筛选-->
<div class="row">
<div class="col-md-12">
<div class="box">
<div class="box-body">
<form class="form-inline searchForm" id="searchForm" action="{:url('index')}" method="GET">
<div class="form-group">
<input value="{$_keywords ? $_keywords : '' ;}"
name="_keywords" id="_keywords" class="form-control input-sm"
placeholder="姓名">
</div>
<div class="form-group">
<select name="_by" id="_by" class="form-control input-sm index-order">
<option value="">排序方式</option>
<option value="desc" {if isset($_by) && $_by=='desc'}selected{/if}>倒序</option>
<option value="asc" {if isset($_by) && $_by=='asc'}selected{/if}>正序</option>
</select>
</div>
<script>
$('#_order').select2();
$('#_by').select2();
</script>
<div class="form-group">
<button class="btn btn-sm btn-primary" type="submit"><i class="fa fa-search"></i> 查询
</button>
</div>
<!--<div class="form-group">-->
<!--<button onclick="exportData()" class="btn btn-sm btn-warning exportData" type="button"><i-->
<!--class="fa fa-search"></i> 导出-->
<!--</button>-->
<!--</div>-->
<div class="form-group">
<button onclick="clearSearchForm()" class="btn btn-sm btn-default" type="button"><i
class="fa fa-eraser"></i> 清空查询
</button>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="box">
<!--数据列表顶部-->
<div class="box-header">
<div>
<a title="添加" data-toggle="tooltip" class="btn btn-primary btn-sm " href="{:url('add')}">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-danger btn-sm AjaxButton" data-toggle="tooltip" title="删除选中数据"
data-confirm-title="删除确认" data-confirm-content="您确定要删除选中的数据吗?" data-id="checked"
data-url="{:url('del')}">
<i class="fa fa-trash"></i> 删除
</a>
<!--<a class="btn btn-success btn-sm AjaxButton" data-toggle="tooltip" title="启用选中数据"-->
<!--data-confirm-title="启用确认" data-confirm-content="您确定要启用选中的数据吗?" data-id="checked"-->
<!--data-url="{:url('enable')}">-->
<!--<i class="fa fa-circle"></i> 启用-->
<!--</a>-->
<!--<a class="btn btn-warning btn-sm AjaxButton" data-toggle="tooltip" title="禁用选中数据"-->
<!--data-confirm-title="禁用确认" data-confirm-content="您确定要禁用选中的数据吗?" data-id="checked"-->
<!--data-url="{:url('disable')}">-->
<!--<i class="fa fa-circle"></i> 禁用-->
<!--</a>-->
<a class="btn btn-success btn-sm ReloadButton" data-toggle="tooltip" title="刷新">
<i class="fa fa-refresh"></i> 刷新
</a>
</div>
</div>
<div class="box-body table-responsive">
<table class="table table-hover table-bordered datatable" width="100%">
<thead>
<tr>
<th>
<input id="dataCheckAll" type="checkbox" onclick="checkAll(this)" class="checkbox"
placeholder="全选/取消">
</th>
<th>ID</th>
<th>头像</th>
<th>姓名</th>
<th>公司</th>
<th>职位</th>
<th>语言</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{foreach name="data" id="item"}
<tr>
<td>
<input type="checkbox" onclick="checkThis(this)" name="data-checkbox"
data-id="{$item.id}" class="checkbox data-list-check" value="{$item.id}"
placeholder="选择/取消">
</td>
<td>{$item.id}</td>
<td><img style="max-width: 40px" src="{$item.manager_img}"></td>
<td>{$item.manager_name|default=''}</td>
<td>{$item.manager_position}</td>
<td>{$item.manager_company}</td>
<td>{$item.language_type}</td>
<td>{$item.created_at}</td>
<td class="td-do">
<a href="{:url('edit',['id'=>$item.id])}"
class="btn btn-primary btn-xs" title="修改" data-toggle="tooltip">
<i class="fa fa-pencil"></i>
</a>
<a class="btn btn-danger btn-xs AjaxButton" data-toggle="tooltip" title="删除"
data-id="{$item.id}" data-confirm-title="删除确认"
data-confirm-content='您确定要删除ID为 <span class="text-red">{$item.id}</span> 的数据吗'
data-url="{:url('del')}">
<i class="fa fa-trash"></i>
</a>
<!--{if $item.status==1}-->
<!--<a class="btn btn-warning btn-xs AjaxButton" data-toggle="tooltip" title="禁用"-->
<!--data-id="{$item.id}" data-confirm-title="禁用确认"-->
<!--data-confirm-content='您确定要禁用ID为 <span class="text-red">{$item.id}</span> 的数据吗'-->
<!--data-url="{:url('disable')}">-->
<!--<i class="fa fa-circle"></i>-->
<!--</a>-->
<!--{else/}-->
<!--<a class="btn btn-success btn-xs AjaxButton" data-toggle="tooltip" title="启用"-->
<!--data-id="{$item.id}" data-confirm-title="启用确认"-->
<!--data-confirm-content='您确定要启用ID为 <span class="text-red">{$item.id}</span> 的数据吗'-->
<!--data-url="{:url('enable')}">-->
<!--<i class="fa fa-circle"></i>-->
<!--</a>-->
<!--{/if}-->
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
<!-- 数据列表底部 -->
<div class="box-footer">
{$page|raw}
<label class="control-label pull-right" style="margin-right: 10px; font-weight: 100;">
<small>共{$total}条记录</small>&nbsp;
<small>每页显示</small>
&nbsp;
<select class="input-sm" onchange="changePerPage(this)">
<option value="10" {if $admin.per_page==10}selected{/if}>10</option>
<option value="20" {if $admin.per_page==20}selected{/if}>20</option>
<option value="30" {if $admin.per_page==30}selected{/if}>30</option>
<option value="50" {if $admin.per_page==50}selected{/if}>50</option>
<option value="100" {if $admin.per_page==100}selected{/if}>100</option>
</select>
&nbsp;
<small>条记录</small>
</label>
</div>
</div>
</div>
</div>
</section>
{/block}
<?php
/**
* 用户模型
*/
namespace app\common\model;
use think\model\concern\SoftDelete;
class ManagerList extends Model
{
use SoftDelete;
public $softDelete = true;
protected $name = 'manager_list';
protected $autoWriteTimestamp = true;
//可搜索字段
protected $searchField = ['manager_name', 'manager_company'];
public $language_type = [
0 => '中文',
1 => '英语'
];
//是否启用获取器
public function getStatusTextAttr($value, $data)
{
return self::BOOLEAN_TEXT[$data['status']];
}
// public static function init()
// {
// //添加自动加密密码
// self::event('before_insert', static function ($data) {
// $data->password = base64_encode(password_hash($data->password, 1));
// });
//
// //修改密码自动加密
// self::event('before_update', function ($data) {
// $old = (new static())::get($data->id);
// if ($data->password !== $old->password) {
// $data->password = base64_encode(password_hash($data->password, 1));
// }
// });
// }
/**
* 用户登录
* @param $param
* @return mixed
* @throws \Exception
*/
public static function login($param)
{
$username = $param['username'];
$password = $param['password'];
$user = self::get(['username' => $username]);
if (!$user) {
exception('用户不存在');
}
if (!password_verify($password, base64_decode($user->password))) {
exception('密码错误');
}
if ((int)$user->status !== 1) {
exception('用户被冻结');
}
return $user;
}
//加密字符串,用在登录的时候加密处理
protected function getSignStrAttr($value, $data)
{
$ua = request()->header('user-agent');
return sha1($data['id'] . $data['username'] . $ua);
}
}
<?php
/**
* 用户验证器
*/
namespace app\common\validate;
class ManagerListValidate extends Validate
{
protected $rule = [
'manager_name|姓名' => 'require',
'manager_position|职位' => 'require',
'manager_company|公司' => 'require',
];
protected $message = [
'manager_name.require' => '姓名不能为空',
'manager_position.require' => '职位不能为空',
'manager_company.require' => '公司不能为空',
];
protected $scene = [
'add' => ['manager_name', 'manager_position', 'manager_company','language_type',],
'edit' => ['manager_name', 'manager_position', 'manager_company','language_type',],
];
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment