Notify.php 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace app\mall\admin;
  3. use app\admin\controller\Admin;
  4. use think\Db;
  5. use think\Request;
  6. use think\Validate;
  7. use app\common\builder\ZBuilder;
  8. class Notify extends Admin
  9. {
  10. public function index(){
  11. $order = $this->getOrder();
  12. if($order===''){
  13. $order='id desc';
  14. }
  15. $map = $this->getMap();
  16. $data_list = Db::name('notifys')->where($map)->order($order)->paginate();
  17. $page = $data_list->render();
  18. return ZBuilder::make('table')
  19. ->setPageTitle('') // 设置页面标题
  20. ->setPageTips('') // 设置页面提示信息
  21. ->hideCheckbox() //隐藏第一列多选框
  22. ->setTableName('notifys') // 指定数据表名
  23. ->addOrder('id,send_at') // 添加排序
  24. ->addTimeFilter('send_at') // 添加时间段筛选
  25. ->addTopSelect('type', '全部发送对象', ['1'=>'用户','2'=>'供应商','3'=>'业务员']) //添加顶部下拉筛选
  26. ->setSearch(['id' => 'ID', 'title' => '标题'], '', '', '搜索') // 设置搜索参数
  27. ->addColumns([
  28. ['id', 'ID'],
  29. ['title', '标题'],
  30. ['admin_attachment_id', '图片','picture','暂无图片'],
  31. ['type', '发送对象','callback','array_v',['1'=>'用户','2'=>'供应商','3'=>'业务员']],
  32. ['send_at', '发送时间','datetime', '未知','Y-m-d H:i'],
  33. ['right_button', '操作', 'btn'],
  34. ]) //添加多列数据
  35. ->addRightButton('custom',['title'=>'查看通知内容','href'=>url('look',['id'=>'__ID__'])],true)
  36. ->addTopButton('custom',['title'=>'新建通知','href'=>url('send'),'icon'=>'fa fa-fw fa-send'])
  37. ->setRowList($data_list) // 设置表格数据
  38. ->setPages($page) // 设置分页数据
  39. ->fetch();
  40. }
  41. public function look($id=''){
  42. $notify=Db::name("notifys")->where('id',$id)->find();
  43. if(!$notify){
  44. return $this->error('请求错误');
  45. }
  46. // 使用ZBuilder快速创建表单
  47. return '<div style="padding:20px 2%">'.$notify['content'].'</div>';
  48. }
  49. public function send(){
  50. //判断是否为post请求
  51. if (Request::instance()->isPost()) {
  52. //获取请求的post数据
  53. $data=input('post.');
  54. //数据输入验证
  55. $validate = new Validate([
  56. 'title|标题'=> 'require|length:1,30',
  57. 'admin_attachment_id|图片' => 'require',
  58. 'type|发送对象' => 'require|in:1,2,3',
  59. 'content|内容' => 'require'
  60. ]);
  61. if (!$validate->check($data)) {
  62. return $this->error($validate->getError());
  63. }
  64. //数据处理
  65. $insert=array();
  66. $insert['title']=$data['title'];
  67. $insert['admin_attachment_id']=$data['admin_attachment_id'];
  68. $insert['type']=$data['type'];
  69. $insert['content']=$data['content'];
  70. $insert['send_at']=time();
  71. //数据更新
  72. $insert_id=Db::name("notifys")->insertGetId($insert);
  73. //跳转
  74. if($insert_id>0){
  75. return $this->success('发送成功',url('index'));
  76. } else {
  77. return $this->error('发送失败');
  78. }
  79. }
  80. // 使用ZBuilder快速创建表单
  81. return ZBuilder::make('form')
  82. ->setPageTitle('新建通知') // 设置页面标题
  83. ->setPageTips('请认真编辑相关信息') // 设置页面提示信息
  84. ->setBtnTitle('submit', '发送通知') //修改默认按钮标题
  85. ->addBtn('<button type="reset" class="btn btn-default">重置</button>') //添加额外按钮
  86. ->addText('title', '标题','必填,限制在30个字以内')
  87. ->addImage('admin_attachment_id', '图片','必传')
  88. ->addSelect('type', '发送对象','必选',['1'=>'用户','2'=>'供应商','3'=>'业务员'])
  89. ->addUeditor('content', '内容','建议在1200个字以内')
  90. //->isAjax(false) //默认为ajax的post提交
  91. ->fetch();
  92. }
  93. }