linwu vor 3 Jahren
Ursprung
Commit
0f09e8be93
100 geänderte Dateien mit 3184 neuen und 552 gelöschten Zeilen
  1. 506 461
      app/admin/controller/Comjobs.php
  2. 11 0
      app/admin/view/comjobs/comjobsform.html
  3. 12 1
      app/admin/view/comjobs/comjobslist.html
  4. 48 0
      app/common.php
  5. 79 77
      app/common/model/Comjobs.php
  6. 16 0
      app/common/model/Community.php
  7. 108 0
      app/common/service/RensheService.php
  8. 2 1
      composer.json
  9. 79 8
      composer.lock
  10. 2 2
      config/database.php
  11. 0 2
      public/static/.gitignore
  12. 137 0
      public/static/echoui/config.js
  13. 36 0
      public/static/echoui/json/console/prograss.js
  14. 76 0
      public/static/echoui/json/console/top-card.js
  15. 46 0
      public/static/echoui/json/console/top-search.js
  16. 56 0
      public/static/echoui/json/content/comment.js
  17. 62 0
      public/static/echoui/json/content/list.js
  18. 21 0
      public/static/echoui/json/content/tags.js
  19. 62 0
      public/static/echoui/json/forum/list.js
  20. 69 0
      public/static/echoui/json/forum/replys.js
  21. 39 0
      public/static/echoui/json/layer/photos.js
  22. 96 0
      public/static/echoui/json/layim/getList.js
  23. 67 0
      public/static/echoui/json/layim/getMembers.js
  24. 42 0
      public/static/echoui/json/mall/order.js
  25. 227 0
      public/static/echoui/json/menu.js
  26. 46 0
      public/static/echoui/json/message/all.js
  27. 10 0
      public/static/echoui/json/message/detail.js
  28. 46 0
      public/static/echoui/json/message/direct.js
  29. 7 0
      public/static/echoui/json/message/new.js
  30. 46 0
      public/static/echoui/json/message/notice.js
  31. 96 0
      public/static/echoui/json/table/demo.js
  32. 61 0
      public/static/echoui/json/table/demo2.js
  33. 96 0
      public/static/echoui/json/table/demo3.js
  34. 2 0
      public/static/echoui/json/table/user.js
  35. 1 0
      public/static/echoui/json/table/user30.js
  36. 7 0
      public/static/echoui/json/upload/demo.js
  37. 7 0
      public/static/echoui/json/user/forget.js
  38. 7 0
      public/static/echoui/json/user/login.js
  39. 5 0
      public/static/echoui/json/user/logout.js
  40. 7 0
      public/static/echoui/json/user/reg.js
  41. 7 0
      public/static/echoui/json/user/resetpass.js
  42. 9 0
      public/static/echoui/json/user/session.js
  43. 7 0
      public/static/echoui/json/user/sms.js
  44. 78 0
      public/static/echoui/json/useradmin/mangadmin.js
  45. 54 0
      public/static/echoui/json/useradmin/role.js
  46. 143 0
      public/static/echoui/json/useradmin/webuser.js
  47. 78 0
      public/static/echoui/json/workorder/demo.js
  48. 3 0
      public/static/echoui/json/╦╡├ў.txt
  49. 1 0
      public/static/echoui/layui/css/layui.css
  50. 1 0
      public/static/echoui/layui/css/layui.mobile.css
  51. 2 0
      public/static/echoui/layui/css/modules/code.css
  52. 1 0
      public/static/echoui/layui/css/modules/laydate/default/laydate.css
  53. BIN
      public/static/echoui/layui/css/modules/layer/default/icon-ext.png
  54. BIN
      public/static/echoui/layui/css/modules/layer/default/icon.png
  55. 1 0
      public/static/echoui/layui/css/modules/layer/default/layer.css
  56. BIN
      public/static/echoui/layui/css/modules/layer/default/loading-0.gif
  57. BIN
      public/static/echoui/layui/css/modules/layer/default/loading-1.gif
  58. BIN
      public/static/echoui/layui/css/modules/layer/default/loading-2.gif
  59. 96 0
      public/static/echoui/layui/css/modules/layim/html/chatlog.html
  60. 38 0
      public/static/echoui/layui/css/modules/layim/html/find.html
  61. 87 0
      public/static/echoui/layui/css/modules/layim/html/getmsg.json
  62. 208 0
      public/static/echoui/layui/css/modules/layim/html/msgbox.html
  63. 1 0
      public/static/echoui/layui/css/modules/layim/layim.css
  64. 1 0
      public/static/echoui/layui/css/modules/layim/mobile/layim.css
  65. BIN
      public/static/echoui/layui/css/modules/layim/skin/1.jpg
  66. BIN
      public/static/echoui/layui/css/modules/layim/skin/2.jpg
  67. BIN
      public/static/echoui/layui/css/modules/layim/skin/3.jpg
  68. BIN
      public/static/echoui/layui/css/modules/layim/skin/4.jpg
  69. BIN
      public/static/echoui/layui/css/modules/layim/skin/5.jpg
  70. BIN
      public/static/echoui/layui/css/modules/layim/skin/logo.jpg
  71. BIN
      public/static/echoui/layui/css/modules/layim/voice/default.mp3
  72. BIN
      public/static/echoui/layui/font/iconfont.eot
  73. 25 0
      public/static/echoui/layui/font/iconfont.svg
  74. BIN
      public/static/echoui/layui/font/iconfont.ttf
  75. BIN
      public/static/echoui/layui/font/iconfont.woff
  76. BIN
      public/static/echoui/layui/font/iconfont.woff2
  77. BIN
      public/static/echoui/layui/images/face/0.gif
  78. BIN
      public/static/echoui/layui/images/face/1.gif
  79. BIN
      public/static/echoui/layui/images/face/10.gif
  80. BIN
      public/static/echoui/layui/images/face/11.gif
  81. BIN
      public/static/echoui/layui/images/face/12.gif
  82. BIN
      public/static/echoui/layui/images/face/13.gif
  83. BIN
      public/static/echoui/layui/images/face/14.gif
  84. BIN
      public/static/echoui/layui/images/face/15.gif
  85. BIN
      public/static/echoui/layui/images/face/16.gif
  86. BIN
      public/static/echoui/layui/images/face/17.gif
  87. BIN
      public/static/echoui/layui/images/face/18.gif
  88. BIN
      public/static/echoui/layui/images/face/19.gif
  89. BIN
      public/static/echoui/layui/images/face/2.gif
  90. BIN
      public/static/echoui/layui/images/face/20.gif
  91. BIN
      public/static/echoui/layui/images/face/21.gif
  92. BIN
      public/static/echoui/layui/images/face/22.gif
  93. BIN
      public/static/echoui/layui/images/face/23.gif
  94. BIN
      public/static/echoui/layui/images/face/24.gif
  95. BIN
      public/static/echoui/layui/images/face/25.gif
  96. BIN
      public/static/echoui/layui/images/face/26.gif
  97. BIN
      public/static/echoui/layui/images/face/27.gif
  98. BIN
      public/static/echoui/layui/images/face/28.gif
  99. BIN
      public/static/echoui/layui/images/face/29.gif
  100. BIN
      public/static/echoui/layui/images/face/3.gif

+ 506 - 461
app/admin/controller/Comjobs.php

@@ -1,7 +1,9 @@
 <?php
+
 namespace app\admin\controller;
 
 use app\admin\BaseController;
+use app\common\model\Community;
 use app\common\model\Worker as WorkerModel;
 use app\common\model\Comjobs as ComjobsModel;
 use app\common\model\ComjobsCate as ComjobsCateModel;
@@ -10,482 +12,525 @@ use app\common\model\ComjobsStar as ComjobsStarModel;
 
 use app\common\model\ComjobsShare as ComjobsShareModel;
 
+use app\common\service\RensheService;
 use app\common\validate\Comjobs as ComjobsValidate;
 use think\exception\ValidateException;
 use think\facade\Db;
+use think\facade\Log;
 
 class Comjobs extends BaseController
 {
-	
-	
-	// 报名记录
-	public function logList()
-	{
-		$workerlist = WorkerModel::with('comjobs')->order(['id'=>'desc'])->select();
-		return view('comjobs/loglist',[
-			'workerlist'		=> $workerlist
-		]);
-	}
-	
-	public function delLog()
-	{
-		$idarr = input('idarr/a');
-		$log = ComjobsLogModel::whereIn('id',$idarr)->select();
-		$result = $log->delete();
-		if ($result){
-			exit(json_encode(array(
-				'code' 	=> 0,
-				'msg'	=> ""
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 1,
-			'msg'	=> "删除失败,请稍后重试"
-		)));
-	}
-	
-	public function fieldLog()
-	{
-		$id = input('id/d',0); 
-		$log = ComjobsLogModel::findOrEmpty($id);
-		if ($log->isEmpty()){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "信息不存在"
-			)));
-		}else{
-			$log->save([
-				input('field/s')  => input('value')
-			]);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function listLog()
-	{
-		$limit = input('limit/d',20);
-		$page = input('page/d',1);
-		$map = array();
-		$workercomjobsarr = explode(",", input('workercomjobs/s'));
-		$workerid = isset($workercomjobsarr[0]) ? $workercomjobsarr[0] : 0;
-		$comjobsid = isset($workercomjobsarr[1]) ? $workercomjobsarr[1] : 0;
-		if (!empty($workerid)){
-			$map[] = ['workerid', '=', $workerid];
-		}
-		if (!empty($comjobsid)){
-			$map[] = ['comjobsid', '=', $comjobsid];
-		}
-		$status = input('status/d',0);
-		if (!empty($status)){
-			$map[] = ['status', '=', $status];
-		}
-		$list = ComjobsLogModel::with(['user','worker','comjobs'])->where($map)->order('id','DESC')->limit($limit)->page($page)->append(['status_text'])->select();
-		$count = ComjobsLogModel::where($map)->count();
-		if ($count==0){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "未查询到数据"
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 0,
-			'msg'	=> "",
-			'count' => $count,
-			'data'  => $list
-		)));
-	}
-	
-	public function exportLog()
-	{
-		$map = array();
-		$workercomjobsarr = explode(",", input('workercomjobs/s'));
-		$workerid = isset($workercomjobsarr[0]) ? $workercomjobsarr[0] : 0;
-		$comjobsid = isset($workercomjobsarr[1]) ? $workercomjobsarr[1] : 0;
-		if (!empty($workerid)){
-			$map[] = ['workerid', '=', $workerid];
-		}
-		if (!empty($comjobsid)){
-			$map[] = ['comjobsid', '=', $comjobsid];
-		}
-		$status = input('status/d',0);
-		if (!empty($status)){
-			$map[] = ['status', '=', $status];
-		}
-		$xlsData = ComjobsLogModel::with(['user','worker','comjobs'])->where($map)->order('id','DESC')->append(['status_text'])->select()->toArray();
-		$xlsCell = array(
-			array('id','表ID'),
-			array('user.nickname','昵称'),
-			array('user.realname','姓名'),
-			array('user.mobile','手机号'),
-			array('worker.title','劳务公司'),
-			array('comjobs.title','招聘标题'),
-			array('status_text','公司反馈'),
-			array('remark','反馈备注'),
-			array('createtime','报名时间'),
-		);
-		export_excel("招聘报名记录",$xlsCell,$xlsData);
-	}
-	
-	
-	// 企业招聘
-	public function comjobsList()
-	{
-		$workerlist = WorkerModel::order(['id'=>'desc'])->select();
-		$catelist = ComjobsCateModel::order(['priority'=>'desc','id'=>'desc'])->select();
-		return view('comjobs/comjobslist',[
-			'workerlist'	=> $workerlist,
-			'catelist'		=> $catelist
-		]);
-	}
-	
-	public function comjobsForm()
-	{
-		$id = input('id/d, 0');
-		$comjobs = ComjobsModel::findOrEmpty($id);
-		$workerlist = WorkerModel::order(['id'=>'desc'])->select();
-		$catelist = ComjobsCateModel::order(['priority'=>'desc','id'=>'desc'])->select();
-		return view('comjobs/comjobsform',[
-			'catelist'		=> $catelist,
-			'workerlist'	=> $workerlist,
-			'comjobs'		=> $comjobs
-		]);
-	}
-	
-	public function editComjobs()
-	{
-		$id = input('id/d', 0);
-		$wtype = input('wtype/d', 1);
-		$zwagall = $wtype==1 ? input('zwagall/s', "") : '';
-		$data = [
-			'workerid'			=> input('workerid/d', 0),
-			'title'				=> input('title/s', ""),
-			'cateid'			=> input('cateid/d', 0),
-			'province'			=> input('province/s', ""),
-			'city'				=> input('city/s', ""),
-			'district'			=> input('district/s', ""),
-			'agegroup'			=> input('agegroup/s', ""),
-			'tags'				=> input('tags/a', array()),
-			'enddate'			=> input('enddate/s', ""),
-			'requirement'		=> input('requirement/s', ""),
-			'comdetails'		=> input('comdetails/s', ""),
-			'companydetails'	=> input('companydetails/s', ""),
-			'retmoney'	        => input('retmoney/d', ""),
-			'picall'			=> input('picall/a', array()),
-			'companydetails'	=> input('companydetails/s', ""),
-			'wtype'				=> $wtype,
-			'bwagall'			=> input('bwagall/s', ""),
-			'zwagall'			=> $zwagall,
-			'fwagall'			=> input('fwagall/s', ""),
-			'telephone'			=> input('telephone/s', ""),
-			'remark'			=> input('remark/s', ""),
-			'status'			=> input('status/d', 1),
-			'priority'			=> input('priority/d', 0),
-			'updatetime'		=> input('updatetime/s', ""),
-			'createtime'		=> input('createtime/s', ""),
-			'volume'			=> input('volume/d', 0),
-			'recruitment_cate'	=> input('recruitment_cate/d', 1),
-            'latitude'		=> input('latitude/f'),
-            'longitude'		=> input('longitude/f'),
-            'address'		=> input('address/s')
-		]; 
-		try {
-		    validate(ComjobsValidate::class)->check($data);
-		} catch (ValidateException $e) {
-		    exit(json_encode(array(
-		        'code' 	=> 1,
-		        'msg'	=> $e->getError()
-		    )));
-		}
-		if (empty($id)){
+
+
+    // 报名记录
+    public function logList()
+    {
+        $workerlist = WorkerModel::with('comjobs')->order(['id' => 'desc'])->select();
+        return view('comjobs/loglist', [
+            'workerlist' => $workerlist,
+        ]);
+    }
+
+    public function delLog()
+    {
+        $idarr  = input('idarr/a');
+        $log    = ComjobsLogModel::whereIn('id', $idarr)->select();
+        $result = $log->delete();
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+    public function fieldLog()
+    {
+        $id  = input('id/d', 0);
+        $log = ComjobsLogModel::findOrEmpty($id);
+        if ($log->isEmpty()) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "信息不存在",
+            ]));
+        } else {
+            $log->save([
+                input('field/s') => input('value'),
+            ]);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function listLog()
+    {
+        $limit            = input('limit/d', 20);
+        $page             = input('page/d', 1);
+        $map              = [];
+        $workercomjobsarr = explode(",", input('workercomjobs/s'));
+        $workerid         = isset($workercomjobsarr[0]) ? $workercomjobsarr[0] : 0;
+        $comjobsid        = isset($workercomjobsarr[1]) ? $workercomjobsarr[1] : 0;
+        if (!empty($workerid)) {
+            $map[] = ['workerid', '=', $workerid];
+        }
+        if (!empty($comjobsid)) {
+            $map[] = ['comjobsid', '=', $comjobsid];
+        }
+        $status = input('status/d', 0);
+        if (!empty($status)) {
+            $map[] = ['status', '=', $status];
+        }
+        $list  = ComjobsLogModel::with(['user', 'worker', 'comjobs'])->where($map)->order('id', 'DESC')->limit($limit)->page($page)->append(['status_text'])->select();
+        $count = ComjobsLogModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function exportLog()
+    {
+        $map              = [];
+        $workercomjobsarr = explode(",", input('workercomjobs/s'));
+        $workerid         = isset($workercomjobsarr[0]) ? $workercomjobsarr[0] : 0;
+        $comjobsid        = isset($workercomjobsarr[1]) ? $workercomjobsarr[1] : 0;
+        if (!empty($workerid)) {
+            $map[] = ['workerid', '=', $workerid];
+        }
+        if (!empty($comjobsid)) {
+            $map[] = ['comjobsid', '=', $comjobsid];
+        }
+        $status = input('status/d', 0);
+        if (!empty($status)) {
+            $map[] = ['status', '=', $status];
+        }
+        $xlsData = ComjobsLogModel::with(['user', 'worker', 'comjobs'])->where($map)->order('id', 'DESC')->append(['status_text'])->select()->toArray();
+        $xlsCell = [
+            ['id', '表ID'],
+            ['user.nickname', '昵称'],
+            ['user.realname', '姓名'],
+            ['user.mobile', '手机号'],
+            ['worker.title', '劳务公司'],
+            ['comjobs.title', '招聘标题'],
+            ['status_text', '公司反馈'],
+            ['remark', '反馈备注'],
+            ['createtime', '报名时间'],
+        ];
+        export_excel("招聘报名记录", $xlsCell, $xlsData);
+    }
+
+
+    // 企业招聘
+    public function comjobsList()
+    {
+        $workerlist = WorkerModel::order(['id' => 'desc'])->select();
+        $catelist   = ComjobsCateModel::order(['priority' => 'desc', 'id' => 'desc'])->select();
+        return view('comjobs/comjobslist', [
+            'workerlist' => $workerlist,
+            'catelist'   => $catelist,
+        ]);
+    }
+
+    public function comjobsForm()
+    {
+        $id            = input('id/d, 0');
+        $comjobs       = ComjobsModel::findOrEmpty($id);
+        $workerlist    = WorkerModel::order(['id' => 'desc'])->select();
+        $catelist      = ComjobsCateModel::order(['priority' => 'desc', 'id' => 'desc'])->select();
+        $communitylist = Community::select();
+        return view('comjobs/comjobsform', [
+            'catelist'      => $catelist,
+            'workerlist'    => $workerlist,
+            'communitylist' => $communitylist,
+            'comjobs'       => $comjobs,
+        ]);
+    }
+
+    public function editComjobs()
+    {
+        $id      = input('id/d', 0);
+        $wtype   = input('wtype/d', 1);
+        $zwagall = $wtype == 1 ? input('zwagall/s', "") : '';
+        $data    = [
+            'workerid'         => input('workerid/d', 0),
+            'title'            => input('title/s', ""),
+            'cateid'           => input('cateid/d', 0),
+            'province'         => input('province/s', ""),
+            'city'             => input('city/s', ""),
+            'district'         => input('district/s', ""),
+            'agegroup'         => input('agegroup/s', ""),
+            'tags'             => input('tags/a', []),
+            'enddate'          => input('enddate/s', ""),
+            'requirement'      => input('requirement/s', ""),
+            'comdetails'       => input('comdetails/s', ""),
+            'companydetails'   => input('companydetails/s', ""),
+            'retmoney'         => input('retmoney/d', ""),
+            'picall'           => input('picall/a', []),
+            'companydetails'   => input('companydetails/s', ""),
+            'wtype'            => $wtype,
+            'bwagall'          => input('bwagall/s', ""),
+            'zwagall'          => $zwagall,
+            'fwagall'          => input('fwagall/s', ""),
+            'telephone'        => input('telephone/s', ""),
+            'remark'           => input('remark/s', ""),
+            'status'           => input('status/d', 1),
+            'priority'         => input('priority/d', 0),
+            'updatetime'       => input('updatetime/s', ""),
+            'createtime'       => input('createtime/s', ""),
+            'volume'           => input('volume/d', 0),
+            'recruitment_cate' => input('recruitment_cate/d', 1),
+            'latitude'         => input('latitude/f'),
+            'longitude'        => input('longitude/f'),
+            'address'          => input('address/s'),
+        ];
+        try {
+            validate(ComjobsValidate::class)->check($data);
+        } catch (ValidateException $e) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => $e->getError(),
+            ]));
+        }
+        if (empty($id)) {
             $data['video'] = input('new_video/s', "");
-			$comjobs = ComjobsModel::create($data);
-		}else{
+            $comjobs       = ComjobsModel::create($data);
+        } else {
 
-            $old_video = input('old_video/s','');
-            $new_video = input('new_video/s','');
-            if(!empty($new_video)){
+            $old_video = input('old_video/s', '');
+            $new_video = input('new_video/s', '');
+            if (!empty($new_video)) {
                 $data['video'] = $new_video;
-            }else{
-                if(!empty($old_video))
-                {
+            } else {
+                if (!empty($old_video)) {
                     $data['video'] = $old_video;
                 }
             }
 
-			$comjobs = ComjobsModel::find($id);
-			ComjobsLogModel::update([ 'workerid' => input('workerid/d', 0) ],['comjobsid'=>$comjobs->id]); 
-			$comjobs->save($data);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function fieldComjobs()
-	{
-		$id = input('id/d',0); 
-		$comjobs = ComjobsModel::findOrEmpty($id);
-		if ($comjobs->isEmpty()){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "信息不存在"
-			)));
-		}else{
-			$comjobs->save([
-				input('field/s')  => input('value')
-			]);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function delComjobs()
-	{
-		$idarr = input('idarr/a');
-		ComjobsLogModel::whereIn('comjobsid',$idarr)->delete();
-		ComjobsStarModel::whereIn('comjobsid',$idarr)->delete();
-		$result = Db::name('comjobs')->whereIn('id',$idarr)->update(['deletetime'=>time()]);
-
-		if ($result){
-			exit(json_encode(array(
-				'code' 	=> 0,
-				'msg'	=> ""
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 1,
-			'msg'	=> "删除失败,请稍后重试"
-		)));
-	}
-	
-	public function listComjobs()
-	{
-		$limit = input('limit/d',20);
-		$page = input('page/d',1);
-		$map = array();
-		$keywords = input('keywords/s', "");
-		if (!empty($keywords)){
-			$map[] =['title', 'like', '%'.$keywords.'%'];
-		}
-		$workerid = input('workerid/d', 0);
-		if (!empty($workerid)){
-			$map[] = ['workerid', '=', $workerid];
-		}
-		$cateid = input('cateid/d', 0);
-		if (!empty($cateid)){
-			$map[] = ['cateid', '=', $cateid];
-		}
-		$wtype = input('wtype/d');
-		if (!empty($wtype)){
-			$map[] = ['wtype', '=', $wtype];
-		}
-		$status = input('status/d');
-		if (!empty($status)){
-			$map[] = ['status', '=', $status];
-		}
-		$daterange = input('daterange/s', "");
-		if (!empty($daterange)){
-			$daterangearr = explode("~", $daterange);
-			$map[] = ['createtime', '>= time', trim($daterangearr[0])];
-			$map[] = ['createtime', '<= time', trim($daterangearr[1])];
-		}
-		$list = ComjobsModel::with(['worker','comjobsCate'])->withCount(['comjobsLog'])->where($map)->order(['priority'=>'desc','id'=>'desc',])->limit($limit)->page($page)->append(['wtype_text','status_text'])->select();
-		$count = ComjobsModel::where($map)->count();
+            $comjobs = ComjobsModel::find($id);
+            ComjobsLogModel::update(['workerid' => input('workerid/d', 0)], ['comjobsid' => $comjobs->id]);
+            $comjobs->save($data);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function fieldComjobs()
+    {
+        $id      = input('id/d', 0);
+        $comjobs = ComjobsModel::findOrEmpty($id);
+        if ($comjobs->isEmpty()) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "信息不存在",
+            ]));
+        } else {
+            $comjobs->save([
+                input('field/s') => input('value'),
+            ]);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function delComjobs()
+    {
+        $idarr = input('idarr/a');
+        ComjobsLogModel::whereIn('comjobsid', $idarr)->delete();
+        ComjobsStarModel::whereIn('comjobsid', $idarr)->delete();
+        $result = Db::name('comjobs')->whereIn('id', $idarr)->update(['deletetime' => time()]);
+
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+    public function listComjobs()
+    {
+        $limit    = input('limit/d', 20);
+        $page     = input('page/d', 1);
+        $map      = [];
+        $keywords = input('keywords/s', "");
+        if (!empty($keywords)) {
+            $map[] = ['title', 'like', '%' . $keywords . '%'];
+        }
+        $workerid = input('workerid/d', 0);
+        if (!empty($workerid)) {
+            $map[] = ['workerid', '=', $workerid];
+        }
+        $cateid = input('cateid/d', 0);
+        if (!empty($cateid)) {
+            $map[] = ['cateid', '=', $cateid];
+        }
+        $wtype = input('wtype/d');
+        if (!empty($wtype)) {
+            $map[] = ['wtype', '=', $wtype];
+        }
+        $status = input('status/d');
+        if (!empty($status)) {
+            $map[] = ['status', '=', $status];
+        }
+        $daterange = input('daterange/s', "");
+        if (!empty($daterange)) {
+            $daterangearr = explode("~", $daterange);
+            $map[]        = ['createtime', '>= time', trim($daterangearr[0])];
+            $map[]        = ['createtime', '<= time', trim($daterangearr[1])];
+        }
+        $list  = ComjobsModel::with(['worker', 'comjobsCate'])->withCount(['comjobsLog'])->where($map)->order(['priority' => 'desc', 'id' => 'desc',])->limit($limit)->page($page)->append(['wtype_text', 'status_text'])->select();
+        $count = ComjobsModel::where($map)->count();
 
 //		dump($map);
 //		dump($list);
 //		die;
-		if ($count==0){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "未查询到数据"
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 0,
-			'msg'	=> "",
-			'count' => $count,
-			'data'  => $list
-		)));
-	}
-	
-	// 岗位类型
-	public function cateList()
-	{
-		return view('comjobs/catelist');
-	}
-	
-	public function cateForm()
-	{
-		$id = input('id/d', 0);
-		$cate = ComjobsCateModel::findOrEmpty($id);
-		return view('comjobs/cateform',[
-			'cate'			=> $cate
-		]);
-	}
-	
-	public function listCate()
-	{
-		$limit = input('limit');
-		$page = input('page');
-		$list = ComjobsCateModel::order(['priority'=>'desc','id'=>'desc'])->limit($limit)->page($page)->select();
-		$count = ComjobsCateModel::count();
-		if ($count==0){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "未查询到数据"
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 0,
-			'msg'	=> "",
-			'count' => $count,
-			'data'  => $list
-		)));
-	}	
-	
-	public function fieldCate()
-	{
-		$id = input('id/d', 0);
-		$info = ComjobsCateModel::find($id);
-		$info->save([
-			input('field/s')  => input('value/s', "")
-		]);
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function editCate()
-	{
-		$id = input('id/d');
-		if (empty($id)){
-			$cate = ComjobsCateModel::create([
-				'title' 	=> input('title/s', ""),
-				'priority'  => input('priority/d', 0)
-			]);
-		}else{
-			$cate = ComjobsCateModel::find($id);
-			$cate->save([
-				'title' 	=> input('title/s', ""),
-				'priority'  => input('priority/d', 0)
-			]);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function delCate()
-	{
-		$id = input('id/d');
-		$cate = ComjobsCateModel::where('id',$id)->select();
-		$result = $cate->delete();
-		if ($result){
-			exit(json_encode(array(
-				'code' 	=> 0,
-				'msg'	=> ""
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 1,
-			'msg'	=> "删除失败,请稍后重试"
-		)));
-	}
-		
-		
-	
-	// 推广海报
-	public function shareList()
-	{
-		return view('comjobs/sharelist',[ ]); 
-	}
-
-	public function shareForm()
-	{
-		$id = input('id/d', 0);
-		$share = ComjobsShareModel::findOrEmpty($id);
-		return view('comjobs/shareform',[
-			'share'		=> $share
-		]);
-	}
-	
-	public function editShare()
-	{
-		$id = input('id/d', 0);
-		$data = array(
-			'title' 	=> input('title/s', ""),
-			'tilpic' 	=> input('tilpic/s', ""),
-			'status'	=> input('status/d', 1),
-			'priority'  => input('priority/d', 0)
-		); 
-		if (empty($id)){
-			$share = ComjobsShareModel::create($data);
-		}else{
-			$share = ComjobsShareModel::find($id);
-			$share->save($data);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function listShare()
-	{
-		$limit = input('limit');
-		$page = input('page');
-		$map = array();
-		$status = input('status/d', 0);
-		if (!empty($status)){
-			$map[] = ['status', '=', $status];
-		}
-		$list = ComjobsShareModel::where($map)->order(['priority'=>'desc','id'=>'desc'])->limit($limit)->page($page)->append(['status_text'])->select();
-		$count = ComjobsShareModel::where($map)->count();
-		if ($count==0){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "未查询到数据"
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 0,
-			'msg'	=> "",
-			'count' => $count,
-			'data'  => $list
-		)));
-	}
-	
-	public function fieldShare()
-	{
-		$id = input('id/d', 0);
-		$info = ComjobsShareModel::find($id);
-		$info->save([
-			input('field/s')  => input('value/s', "")
-		]);
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function delShare()
-	{
-		$id = input('id/d', 0);
-		$share = ComjobsShareModel::where('id',$id)->select();
-		$result = $share->delete();
-		if ($result){
-			exit(json_encode(array(
-				'code' 	=> 0,
-				'msg'	=> ""
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 1,
-			'msg'	=> "删除失败,请稍后重试"
-		)));
-	}
-	
-		
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    // 岗位类型
+    public function cateList()
+    {
+        return view('comjobs/catelist');
+    }
+
+    public function cateForm()
+    {
+        $id   = input('id/d', 0);
+        $cate = ComjobsCateModel::findOrEmpty($id);
+        return view('comjobs/cateform', [
+            'cate' => $cate,
+        ]);
+    }
+
+    public function listCate()
+    {
+        $limit = input('limit');
+        $page  = input('page');
+        $list  = ComjobsCateModel::order(['priority' => 'desc', 'id' => 'desc'])->limit($limit)->page($page)->select();
+        $count = ComjobsCateModel::count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function fieldCate()
+    {
+        $id   = input('id/d', 0);
+        $info = ComjobsCateModel::find($id);
+        $info->save([
+            input('field/s') => input('value/s', ""),
+        ]);
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function editCate()
+    {
+        $id = input('id/d');
+        if (empty($id)) {
+            $cate = ComjobsCateModel::create([
+                'title'    => input('title/s', ""),
+                'priority' => input('priority/d', 0),
+            ]);
+        } else {
+            $cate = ComjobsCateModel::find($id);
+            $cate->save([
+                'title'    => input('title/s', ""),
+                'priority' => input('priority/d', 0),
+            ]);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function delCate()
+    {
+        $id     = input('id/d');
+        $cate   = ComjobsCateModel::where('id', $id)->select();
+        $result = $cate->delete();
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+
+    // 推广海报
+    public function shareList()
+    {
+        return view('comjobs/sharelist', []);
+    }
+
+    public function shareForm()
+    {
+        $id    = input('id/d', 0);
+        $share = ComjobsShareModel::findOrEmpty($id);
+        return view('comjobs/shareform', [
+            'share' => $share,
+        ]);
+    }
+
+    public function editShare()
+    {
+        $id   = input('id/d', 0);
+        $data = [
+            'title'    => input('title/s', ""),
+            'tilpic'   => input('tilpic/s', ""),
+            'status'   => input('status/d', 1),
+            'priority' => input('priority/d', 0),
+        ];
+        if (empty($id)) {
+            $share = ComjobsShareModel::create($data);
+        } else {
+            $share = ComjobsShareModel::find($id);
+            $share->save($data);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function listShare()
+    {
+        $limit  = input('limit');
+        $page   = input('page');
+        $map    = [];
+        $status = input('status/d', 0);
+        if (!empty($status)) {
+            $map[] = ['status', '=', $status];
+        }
+        $list  = ComjobsShareModel::where($map)->order(['priority' => 'desc', 'id' => 'desc'])->limit($limit)->page($page)->append(['status_text'])->select();
+        $count = ComjobsShareModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function fieldShare()
+    {
+        $id   = input('id/d', 0);
+        $info = ComjobsShareModel::find($id);
+        $info->save([
+            input('field/s') => input('value/s', ""),
+        ]);
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function delShare()
+    {
+        $id     = input('id/d', 0);
+        $share  = ComjobsShareModel::where('id', $id)->select();
+        $result = $share->delete();
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+    public function synRenshe()
+    {
+        //获取数据
+        $id   = input('id/d', 0);
+        $info = ComjobsModel::with(['comjobsCate', 'worker'])->find($id);
+
+        //数据重组
+        $list           = $item = [];
+        $item['baz367'] = $info['id'];
+        $item['aca111'] = $info['comjobsCate']['code'];
+        $item['aca112'] = $info['title'];
+        $item['cae006'] = $info['community'];
+        $item['cae007'] = $info['province'] . $info['city'] . $info['district'] . $info['address'];
+        $item['bcz007'] = $info['comdetails'];
+        $item['bcz008'] = $info['requirement'];
+        $item['aab069'] = $info['worker']['title'];
+        $item['aae005'] = $info['telephone'];
+        $item['aae004'] = $info['worker']['realname'];
+        $item['aae006'] = $info['worker']['province'] . $info['worker']['city'] . $info['worker']['district'] . $info['worker']['address'];
+        $item['aae100'] = $info['status'] == 3 ? 1 : 0;
+        $item['bcz015'] = $info['longitude'];
+        $item['bcz016'] = $info['latitude'];
+        $item['bye002'] = $info['updatetime'];
+        $list[]         = $item;
+        $send['list']   = $list;
+
+        //发送数据
+        $service = new RensheService($send);
+        $res     = $service->JobInfo();
+
+        if ($res['code'] == 200) {
+            Log::error('同步人社成功');
+            return json(['code' => 0]);
+        } else {
+            Log::error('同步人社失败:', json_encode($res));
+            return json([
+                'code' => 1,
+                'msg'  => '网络异常,请重试',
+            ]);
+        }
+    }
+
 }

+ 11 - 0
app/admin/view/comjobs/comjobsform.html

@@ -70,6 +70,17 @@
 								</select>
 							</div>
 						</div>
+						<div class="layui-form-item">
+							<label class="layui-form-label"><span style="color:#f90c05;">*</span>社区</label>
+							<div class="layui-input-block">
+								<select name="community" lay-verify="" lay-search="">
+									<option value="">请选择社区</option>
+									{volist name="communitylist" id="vo"}
+									<option value="{$vo.code}" {eq name="vo.code" value="$comjobs['community']"}selected{/eq}>{$vo.name}</option>
+									{/volist}
+								</select>
+							</div>
+						</div>
 						<div class="layui-form-item">
 							<label class="layui-form-label"><span style="color:#f90c05;">*</span>详细地址</label>
 							<div class="layui-input-block">

+ 12 - 1
app/admin/view/comjobs/comjobslist.html

@@ -79,6 +79,7 @@
 			<script type="text/html" id="setTpl">
 				<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
 				<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+				<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="syn"><i class="layui-icon layui-icon-edit"></i>同步到人社</a>
 			</script>
 		</div>
 	</div>
@@ -132,7 +133,7 @@
 					{ field: 'volume', title: '浏览量', edit: 'text', width: 100, align: 'right' },
 					{ field: 'updatetime', title: '更新时间', width: 170 },
 					{ field: 'createtime', title: '创建时间', width: 170 },
-					{ title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#setTpl' }
+					{ title: '操作', width: 250, align: 'center', fixed: 'right', toolbar: '#setTpl' }
 				]
 			],
 			page: true,
@@ -229,6 +230,16 @@
 					area: ['750px', '480px']
 				});
 				layer.full(index);
+			} else if (obj.event === 'syn') {
+				layer.confirm('确定同步此招聘信息吗?', function(index) {
+					admin.req({
+						url: setter.baseAdminUrl + 'comjobs/synRenshe?id=' + data.id,
+						done: function(res) {
+							layer.msg('已同步');
+						}
+					});
+					layer.close(index);
+				});
 			}
 		});
 

+ 48 - 0
app/common.php

@@ -451,4 +451,52 @@ function distance_sql($lon1='116.434164',$lat1='39.909843',$lon2='longitude',$la
 {
     $sql = "round(6378.138*2*asin(sqrt(pow(sin( ({$lat1}*pi()/180-{$lat2}*pi()/180)/2),2)+cos({$lat1}*pi()/180)*cos({$lat2}*pi()/180)* pow(sin( ({$lon1}*pi()/180-{$lon2}*pi()/180)/2),2)))*1000) ";
     return $sql;
+}
+
+/**
+ * CURL请求
+ * @param $url 请求url地址
+ * @param $method 请求方法 get post
+ * @param null $postfields post数据数组
+ * @param array $headers 请求header信息
+ * @return mixed
+ */
+function http_request($url, $method = "GET", $postfields = null, $headers = [])
+{
+    $method = strtoupper($method);
+    $ci     = curl_init();
+    /* Curl settings */
+    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
+    curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
+    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */
+    curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */
+    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
+    switch ($method) {
+        case "POST":
+            curl_setopt($ci, CURLOPT_POST, true);
+            if (!empty($postfields)) {
+                $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
+                curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
+            }
+            break;
+        default:
+            curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
+            break;
+    }
+    $ssl = preg_match('/^https:\/\//i', $url) ? TRUE : FALSE;
+    curl_setopt($ci, CURLOPT_URL, $url);
+    if ($ssl) {
+        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
+        curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
+    }
+    //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/
+    curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
+    curl_setopt($ci, CURLOPT_MAXREDIRS, 2); /* 指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的 */
+    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
+    curl_setopt($ci, CURLINFO_HEADER_OUT, true);
+    /* curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */
+    $response    = curl_exec($ci);
+
+    curl_close($ci);
+    return $response;
 }

+ 79 - 77
app/common/model/Comjobs.php

@@ -1,4 +1,5 @@
 <?php
+
 namespace app\common\model;
 
 use think\Model;
@@ -10,87 +11,88 @@ class Comjobs extends Model
     protected $deleteTime = 'deletetime';
     protected $defaultSoftDelete = 0;
 
-	// 设置字段信息
+    // 设置字段信息
     protected $schema = [
-        'id'			=> 'int',
-		'workerid'		=> 'int',
-		'title'			=> 'string',
-		'video'			=> 'string',
-		'cateid'		=> 'int',
-		'province'		=> 'string',
-		'city'			=> 'string',
-		'district'		=> 'string',
-		'agegroup'		=> 'string',
-		'tags'			=> 'string',
-		'enddate'		=> 'int',
-		'requirement'	=> 'string',
-		'comdetails'	=> 'string',
-		'picall'	=> 'string',
-		'companydetails'	=> 'string',
-		'retmoney'			=> 'int',
-		'wtype'			=> 'tinyint',
-		'bwagall'		=> 'string',
-		'zwagall'		=> 'string',
-		'fwagall'		=> 'string',
-		'telephone'		=> 'string',
-		'remark'		=> 'string',
-		'status'		=> 'tinyint',
-		'priority'		=> 'int',
-		'updatetime'	=> 'int',
-        'createtime'	=> 'int',
-		'volume'		=> 'int',
-		'recruitment_cate'=> 'int',
-        'latitude'		=> 'float',
-        'longitude'		=> 'float',
-        'address'		=> 'string'
-    ]; 
+        'id'               => 'int',
+        'workerid'         => 'int',
+        'title'            => 'string',
+        'video'            => 'string',
+        'cateid'           => 'int',
+        'province'         => 'string',
+        'city'             => 'string',
+        'district'         => 'string',
+        'agegroup'         => 'string',
+        'tags'             => 'string',
+        'enddate'          => 'int',
+        'requirement'      => 'string',
+        'comdetails'       => 'string',
+        'picall'           => 'string',
+        'companydetails'   => 'string',
+        'retmoney'         => 'int',
+        'wtype'            => 'tinyint',
+        'bwagall'          => 'string',
+        'zwagall'          => 'string',
+        'fwagall'          => 'string',
+        'telephone'        => 'string',
+        'remark'           => 'string',
+        'status'           => 'tinyint',
+        'priority'         => 'int',
+        'updatetime'       => 'int',
+        'createtime'       => 'int',
+        'volume'           => 'int',
+        'recruitment_cate' => 'int',
+        'latitude'         => 'float',
+        'longitude'        => 'float',
+        'address'          => 'string',
+        'community'        => 'string',
+    ];
 
-	// 设置字段自动转换类型
-	protected $type = [
-		'tags'			=> 'json',
-		'picall'		=> 'json',
-		'enddate'		=> 'timestamp:Y-m-d',
-		'updatetime'	=> 'timestamp:Y-m-d H:i:s',
-        'createtime'	=> 'timestamp:Y-m-d H:i:s'
-    ]; 
-	// 设置JSON数据返回数组
-	protected $jsonAssoc = true;
-	
-	public function getWtypeTextAttr($value,$data)
-	{
-		$wtype = [1=>'月薪',2=>'日薪',3=>'时薪',4=>'面议'];
-		return $wtype[$data['wtype']];
-	}
+    // 设置字段自动转换类型
+    protected $type = [
+        'tags'       => 'json',
+        'picall'     => 'json',
+        'enddate'    => 'timestamp:Y-m-d',
+        'updatetime' => 'timestamp:Y-m-d H:i:s',
+        'createtime' => 'timestamp:Y-m-d H:i:s',
+    ];
+    // 设置JSON数据返回数组
+    protected $jsonAssoc = true;
 
-    public function getRecruitmentCateTextAttr($value,$data)
+    public function getWtypeTextAttr($value, $data)
     {
-        $recruitment_cate = [1=>'普通招聘',2=>'无忧聘'];
+        $wtype = [1 => '月薪', 2 => '日薪', 3 => '时薪', 4 => '面议'];
+        return $wtype[$data['wtype']];
+    }
+
+    public function getRecruitmentCateTextAttr($value, $data)
+    {
+        $recruitment_cate = [1 => '普通招聘', 2 => '无忧聘'];
         return $recruitment_cate[$data['recruitment_cate']];
     }
-	
-	public function getStatusTextAttr($value,$data)
-	{
-		$status = [1=>'待修改',2=>'待审核',3=>'已上架',4=>'已停招',5=>'已下架'];
-		return $status[$data['status']];
-	}
-	
-	// 关联ComjobsCate
-	public function comjobsCate()
-	{
-	    return $this->hasOne(ComjobsCate::class, "id", "cateid");
-	}
-	
-	// 关联Worker
-	public function worker()
-	{
-	    return $this->hasOne(Worker::class, "id", "workerid")->removeOption('soft_delete');
-	}
-	
-	// 关联ComjobsLog
-	public function comjobsLog()
-	{
-	    return $this->hasMany(ComjobsLog::class, "comjobsid", "id");
-	}
-	
-	
+
+    public function getStatusTextAttr($value, $data)
+    {
+        $status = [1 => '待修改', 2 => '待审核', 3 => '已上架', 4 => '已停招', 5 => '已下架'];
+        return $status[$data['status']];
+    }
+
+    // 关联ComjobsCate
+    public function comjobsCate()
+    {
+        return $this->hasOne(ComjobsCate::class, "id", "cateid");
+    }
+
+    // 关联Worker
+    public function worker()
+    {
+        return $this->hasOne(Worker::class, "id", "workerid")->removeOption('soft_delete');
+    }
+
+    // 关联ComjobsLog
+    public function comjobsLog()
+    {
+        return $this->hasMany(ComjobsLog::class, "comjobsid", "id");
+    }
+
+
 }

+ 16 - 0
app/common/model/Community.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class Community extends Model
+{
+    // 设置字段信息
+    protected $schema = [
+        'id'   => 'int',
+        'name' => 'string',
+        'code' => 'string',
+    ];
+
+}

+ 108 - 0
app/common/service/RensheService.php

@@ -0,0 +1,108 @@
+<?php
+
+namespace app\common\service;
+
+use OneSm\Sm4;
+
+class RensheService
+{
+    //网址
+    const BASE_URL = 'https://12333.jinjiang.gov.cn/interface-jjlgsc-wbjk';
+    //密钥
+    const KEY = 'be2daba9afed4b75';
+    //偏移量
+    const IV = 'b33f8ac8cca782b9';
+    //版本号
+    const VERSION = 'lgyz1.0';
+
+    //要发送的数据
+    private $_data = [];
+    //sm4对象
+    private $_sm4Obj = null;
+    //当前时间
+    private $_time = 0;
+
+    /**
+     * 构造函数
+     * @param array $data 要发送的数据
+     */
+    public function __construct($data = [])
+    {
+        $this->_data   = $data;
+        $this->_sm4Obj = new Sm4(self::KEY, self::IV);
+        $this->_time   = date('YmdHis');
+    }
+
+    /**
+     * 设置参数
+     * @param $data
+     */
+    public function setData($data)
+    {
+        foreach ($data as $k => $v) {
+            $this->_data[$k] = $v;
+        }
+    }
+
+    /**
+     * 岗位信息库提交
+     */
+    public function JobInfo()
+    {
+        $url = self::BASE_URL . '/dayjob/submitJobInfo.html';
+        $res = $this->_send($url);
+
+        return $res;
+    }
+
+    /**
+     * 参数加密
+     * @return string
+     */
+    private function _enDataCbc()
+    {
+        $data = $this->_time . json_encode($this->_data);
+        $res  = $this->_sm4Obj->encrypt($data);
+
+        return $res;
+    }
+
+    /**
+     * 参数解密
+     * @param $data
+     * @return mixed
+     */
+    private function _deDataCbc($data)
+    {
+        $res = $this->_sm4Obj->decrypt($data);
+        if ($res[0] != "{") {
+            $res = mb_substr($res,14,strlen($res),'UTF-8');
+        }
+
+        return json_decode($res, true);
+    }
+
+    /**
+     * 发送数据
+     * @param $url
+     * @return mixed
+     */
+    private function _send($url)
+    {
+        //请求头
+        $enTime = $this->_sm4Obj->encrypt($this->_time);
+        $header = [
+            'Content-Type: application/json',
+            'Author-source: 1',
+            'Author-token: ' . $enTime,
+            'Author-version: ' . self::VERSION,
+        ];
+
+        //发送数据
+        $enData   = $this->_enDataCbc();
+        $response = http_request($url, 'POST', $enData, $header);
+        $deData   = $this->_deDataCbc($response);
+
+        return $deData;
+    }
+}

+ 2 - 1
composer.json

@@ -24,7 +24,8 @@
         "phpoffice/phpexcel": "^1.8",
         "firebase/php-jwt": "^5.0",
         "topthink/think-multi-app": "^1.0",
-        "php-ffmpeg/php-ffmpeg": "v1.x-dev"
+        "php-ffmpeg/php-ffmpeg": "v1.x-dev",
+        "lizhichao/one-sm": "^1.10"
     },
     "require-dev": {
         "symfony/var-dumper": "^4.2"

+ 79 - 8
composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "2a61a08bb14fc1ebb90d4f7d3975bad0",
+    "content-hash": "468f71a9845deeb6ee5571035936f53e",
     "packages": [
         {
             "name": "alchemy/binary-driver",
@@ -294,6 +294,66 @@
             "description": "An adapter decorator to enable meta-data caching.",
             "time": "2018-07-09T20:51:04+00:00"
         },
+        {
+            "name": "lizhichao/one-sm",
+            "version": "1.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/lizhichao/sm.git",
+                "reference": "687a012a44a5bfd4d9143a0234e1060543be455a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/lizhichao/sm/zipball/687a012a44a5bfd4d9143a0234e1060543be455a",
+                "reference": "687a012a44a5bfd4d9143a0234e1060543be455a",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "OneSm\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "tanszhe",
+                    "email": "1018595261@qq.com"
+                }
+            ],
+            "description": "国密sm3",
+            "keywords": [
+                "php",
+                "sm3"
+            ],
+            "support": {
+                "issues": "https://github.com/lizhichao/sm/issues",
+                "source": "https://github.com/lizhichao/sm/tree/1.10"
+            },
+            "funding": [
+                {
+                    "url": "https://www.vicsdf.com/img/w.jpg",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.vicsdf.com/img/z.jpg",
+                    "type": "custom"
+                }
+            ],
+            "time": "2021-05-26T06:19:22+00:00"
+        },
         {
             "name": "monolog/monolog",
             "version": "1.25.5",
@@ -1172,17 +1232,23 @@
         },
         {
             "name": "topthink/think-multi-app",
-            "version": "v1.0.12",
+            "version": "v1.0.14",
             "source": {
                 "type": "git",
                 "url": "https://github.com/top-think/think-multi-app.git",
-                "reference": "3c1914d2adc08c8753c7f67228885ca47fb9b3bf"
+                "reference": "ccaad7c2d33f42cb1cc2a78d6610aaec02cea4c3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/top-think/think-multi-app/zipball/3c1914d2adc08c8753c7f67228885ca47fb9b3bf",
-                "reference": "3c1914d2adc08c8753c7f67228885ca47fb9b3bf",
-                "shasum": ""
+                "url": "https://api.github.com/repos/top-think/think-multi-app/zipball/ccaad7c2d33f42cb1cc2a78d6610aaec02cea4c3",
+                "reference": "ccaad7c2d33f42cb1cc2a78d6610aaec02cea4c3",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
             },
             "require": {
                 "php": ">=7.1.0",
@@ -1212,7 +1278,11 @@
                 }
             ],
             "description": "thinkphp6 multi app support",
-            "time": "2020-03-01T13:29:35+00:00"
+            "support": {
+                "issues": "https://github.com/top-think/think-multi-app/issues",
+                "source": "https://github.com/top-think/think-multi-app/tree/master"
+            },
+            "time": "2020-07-12T13:50:37+00:00"
         },
         {
             "name": "topthink/think-orm",
@@ -1538,5 +1608,6 @@
     "platform": {
         "php": ">=7.1.0"
     },
-    "platform-dev": []
+    "platform-dev": [],
+    "plugin-api-version": "2.0.0"
 }

+ 2 - 2
config/database.php

@@ -36,9 +36,9 @@ return [
             // 数据库名
             'database'          => Env::get('database.database', 'jinjianghc'),
             // 用户名
-            'username'          => Env::get('database.username', 'jinjianghc'),
+            'username'          => Env::get('database.username', 'root'),
             // 密码
-            'password'          => Env::get('database.password', 'rG6hkT5pAYHGB7Lz'),
+            'password'          => Env::get('database.password', ''),
             // 端口
             'hostport'          => Env::get('database.hostport', '3306'),
             // 数据库连接参数

+ 0 - 2
public/static/.gitignore

@@ -1,2 +0,0 @@
-*
-!.gitignore

+ 137 - 0
public/static/echoui/config.js

@@ -0,0 +1,137 @@
+/**
+
+ @Name:layuiAdmin iframe版全局配置
+ @Author:贤心
+ @Site:http://www.layui.com/admin/
+ @License:LPPL(layui付费产品协议)
+    
+ */
+ 
+layui.define(['laytpl', 'layer', 'element', 'util'], function(exports){
+  exports('setter', {
+    container: 'LAY_app' //容器ID
+    ,base: layui.cache.base //记录静态资源所在路径
+    ,views: layui.cache.base + 'tpl/' //动态模板所在目录
+    ,entry: 'index' //默认视图文件名
+    ,engine: '.html' //视图文件后缀名
+    ,pageTabs: true //是否开启页面选项卡功能。iframe版推荐开启
+    
+    ,name: 'layuiAdmin'
+    ,tableName: 'layuiAdmin' //本地存储表名
+    ,MOD_NAME: 'admin' //模块事件名
+    
+    ,debug: true //是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息
+	
+	//请求地址公众部分
+	/*,baseAdminUrl: "https://linggong.jinjianghc.com/admin.php/"
+	,baseWorkerUrl: "https://linggong.jinjianghc.com/worker.php/"
+	,baseAgentUrl: "https://linggong.jinjianghc.com/agent.php/"*/
+    ,baseAdminUrl: "http://bd.odd_job.com/admin.php/"
+    ,baseWorkerUrl: "http://bd.odd_job.com/worker.php/"
+    ,baseAgentUrl: "http://bd.odd_job.com/agent.php/"
+
+    //自定义请求字段
+    ,request: {
+      tokenName: false //自动携带 token 的字段名(如:access_token)。可设置 false 不携带。
+    }
+    
+    //自定义响应字段
+    ,response: {
+      statusName: 'code' //数据状态的字段名称
+      ,statusCode: {
+        ok: 0 //数据状态一切正常的状态码
+        ,logout: 1001 //登录状态失效的状态码
+      }
+      ,msgName: 'msg' //状态信息的字段名称
+      ,dataName: 'data' //数据详情的字段名称
+    }
+    
+    //扩展的第三方模块
+    ,extend: [
+      'echarts', //echarts 核心包
+      'echartsTheme' //echarts 主题
+    ]
+    
+    //主题配置
+    ,theme: {
+      //内置主题配色方案
+      color: [{
+        main: '#20222A' //主题色
+        ,selected: '#009688' //选中色
+        ,alias: 'default' //默认别名
+      },{
+        main: '#03152A'
+        ,selected: '#3B91FF'
+        ,alias: 'dark-blue' //藏蓝
+      },{
+        main: '#2E241B'
+        ,selected: '#A48566'
+        ,alias: 'coffee' //咖啡
+      },{
+        main: '#50314F'
+        ,selected: '#7A4D7B'
+        ,alias: 'purple-red' //紫红
+      },{
+        main: '#344058'
+        ,logo: '#1E9FFF'
+        ,selected: '#1E9FFF'
+        ,alias: 'ocean' //海洋
+      },{
+        main: '#3A3D49'
+        ,logo: '#2F9688'
+        ,selected: '#5FB878'
+        ,alias: 'green' //墨绿
+      },{
+        main: '#20222A'
+        ,logo: '#F78400'
+        ,selected: '#F78400'
+        ,alias: 'red' //橙色
+      },{
+        main: '#28333E'
+        ,logo: '#AA3130'
+        ,selected: '#AA3130'
+        ,alias: 'fashion-red' //时尚红
+      },{
+        main: '#24262F'
+        ,logo: '#3A3D49'
+        ,selected: '#009688'
+        ,alias: 'classic-black' //经典黑
+      },{
+        logo: '#226A62'
+        ,header: '#2F9688'
+        ,alias: 'green-header' //墨绿头
+      },{
+        main: '#344058'
+        ,logo: '#0085E8'
+        ,selected: '#1E9FFF'
+        ,header: '#1E9FFF'
+        ,alias: 'ocean-header' //海洋头
+      },{
+        header: '#393D49'
+        ,alias: 'classic-black-header' //经典黑头
+      },{
+        main: '#50314F'
+        ,logo: '#50314F'
+        ,selected: '#7A4D7B'
+        ,header: '#50314F'
+        ,alias: 'purple-red-header' //紫红头
+      },{
+        main: '#28333E'
+        ,logo: '#28333E'
+        ,selected: '#AA3130'
+        ,header: '#AA3130'
+        ,alias: 'fashion-red-header' //时尚红头
+      },{
+        main: '#28333E'
+        ,logo: '#009688'
+        ,selected: '#009688'
+        ,header: '#009688'
+        ,alias: 'green-header' //墨绿头
+      }]
+      
+      //初始的颜色索引,对应上面的配色方案数组索引
+      //如果本地已经有主题色记录,则以本地记录为优先,除非请求本地数据(localStorage)
+      ,initColorIndex: 0
+    }
+  });
+});

+ 36 - 0
public/static/echoui/json/console/prograss.js

@@ -0,0 +1,36 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "prograss": "开会"
+    ,"time": "一小时"
+    ,"complete": "已完成"
+    ,"LAY_CHECKED": true
+  },{
+    "prograss": "项目开发"
+    ,"time": "两小时"
+    ,"complete": "进行中"
+    ,"LAY_CHECKED": true
+  },{
+    "prograss": "陪吃饭"
+    ,"time": "一小时"
+    ,"complete": "未完成"
+  },{
+    "prograss": "修改小bug"
+    ,"time": "半小时"
+    ,"complete": "未完成"
+  },{
+    "prograss": "修改大bug"
+    ,"time": "两小时"
+    ,"complete": "未完成"
+  },{
+    "prograss": "修改小bug"
+    ,"time": "半小时"
+    ,"complete": "未完成"
+  },{
+    "prograss": "修改大bug"
+    ,"time": "两小时"
+    ,"complete": "未完成"
+  }]
+}

+ 76 - 0
public/static/echoui/json/console/top-card.js

@@ -0,0 +1,76 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": 111
+    ,"title": "社区开始接受 “赞助商广告” 投放"
+    ,"username": "贤心"
+    ,"channel": "公告"
+    ,"href": "http://fly.layui.com/jie/15697/"
+    ,"crt": 61632
+  },{
+    "id": 222
+    ,"title": "layui 一周年"
+    ,"username": "猫吃"
+    ,"channel": "讨论"
+    ,"href": "http://fly.layui.com/jie/16622/"
+    ,"crt": 61632
+  },{
+    "id": 333
+    ,"title": "四个月的前端"
+    ,"username": "fd"
+    ,"channel": "分享"
+    ,"href": "http://fly.layui.com/jie/16651/"
+    ,"crt": 61632
+  },{
+    "id": 333
+    ,"title": "如何评价LayUI和他的作者闲心"
+    ,"username": "纸飞机"
+    ,"channel": "提问"
+    ,"href": "http://fly.layui.com/jie/9352/"
+    ,"crt": 61632
+  },{
+    "id": 333
+    ,"title": "如何评价LayUI和他的作者闲心"
+    ,"username": "纸飞机"
+    ,"channel": "提问"
+    ,"href": "http://fly.layui.com/jie/9352/"
+    ,"crt": 61632
+  },{
+    "id": 333
+    ,"title": "如何评价LayUI和他的作者闲心"
+    ,"username": "纸飞机"
+    ,"channel": "提问"
+    ,"href": "http://fly.layui.com/jie/9352/"
+    ,"crt": 61632
+  },{
+    "id": 333
+    ,"title": "如何评价LayUI和他的作者闲心"
+    ,"username": "纸飞机"
+    ,"channel": "提问"
+    ,"href": "http://fly.layui.com/jie/9352/"
+    ,"crt": 61632
+  },{
+    "id": 333
+    ,"title": "如何评价LayUI和他的作者闲心"
+    ,"username": "纸飞机"
+    ,"channel": "提问"
+    ,"href": "http://fly.layui.com/jie/9352/"
+    ,"crt": 61632
+  },{
+    "id": 333
+    ,"title": "如何评价LayUI和他的作者闲心"
+    ,"username": "纸飞机"
+    ,"channel": "提问"
+    ,"href": "http://fly.layui.com/jie/9352/"
+    ,"crt": 61632
+  },{
+    "id": 333
+    ,"title": "如何评价LayUI和他的作者闲心"
+    ,"username": "纸飞机"
+    ,"channel": "提问"
+    ,"href": "http://fly.layui.com/jie/9352/"
+    ,"crt": 61632
+  }]
+}

+ 46 - 0
public/static/echoui/json/console/top-search.js

@@ -0,0 +1,46 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "keywords": "贤心是男是女"
+    ,"frequency": 8520
+    ,"userNums": 2216
+  },{
+    "keywords": "Java程序员能找到女朋友吗"
+    ,"frequency": 666
+    ,"userNums": 333
+  },{
+    "keywords": "此表格是静态模拟数据"
+    ,"frequency": 666
+    ,"userNums": 333
+  },{
+    "keywords": "layui官方教程"
+    ,"frequency": 666
+    ,"userNums": 333
+  },{
+    "keywords": "layui官方教程"
+    ,"frequency": 666
+    ,"userNums": 333
+  },{
+    "keywords": "layui官方教程"
+    ,"frequency": 666
+    ,"userNums": 333
+  },{
+    "keywords": "layui官方教程"
+    ,"frequency": 666
+    ,"userNums": 333
+  },{
+    "keywords": "layui官方教程"
+    ,"frequency": 666
+    ,"userNums": 333
+  },{
+    "keywords": "layui官方教程"
+    ,"frequency": 666
+    ,"userNums": 333
+  },{
+    "keywords": "layui官方教程"
+    ,"frequency": 666
+    ,"userNums": 333
+  }]
+}

+ 56 - 0
public/static/echoui/json/content/comment.js

@@ -0,0 +1,56 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": "001"
+    ,"reviewers": "赵"
+    ,"content": "我又爱上编程了"
+    ,"commtime": 20160312
+  },{
+    "id": "002"
+    ,"reviewers": "钱"
+    ,"content": "女生出门要小心"
+    ,"commtime": 20160821
+  },{
+    "id": "003"
+    ,"reviewers": "孙"
+    ,"content": "框架就用layui"
+    ,"commtime": 20161212
+  },{
+    "id": "004"
+    ,"reviewers": "李"
+    ,"content": "心姐么么哒" 
+    ,"commtime": 20170311
+  },{
+    "id": "005"
+    ,"reviewers": "周"
+    ,"content": "希望明天是个好天气"
+    ,"commtime": 20170612
+  },{
+    "id": "006"
+    ,"reviewers": "吴"
+    ,"content": "我又爱上编程了"
+    ,"commtime": 20171112
+  },{
+    "id": "007"
+    ,"reviewers": "郑"
+    ,"content": "女生出门要小心"
+    ,"commtime": 20171230
+  },{
+    "id": "008"
+    ,"reviewers": "王"
+    ,"content": "框架就用layui"
+    ,"commtime": 20180112
+  },{
+    "id": "009"
+    ,"reviewers": "冯"
+    ,"content": "心姐么么哒"
+    ,"commtime": 20180221
+  },{
+    "id": "010"
+    ,"reviewers": "陈"
+    ,"content": "希望明天是个好天气"
+    ,"commtime": 20180312
+  }]
+}

+ 62 - 0
public/static/echoui/json/content/list.js

@@ -0,0 +1,62 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": "001"
+    ,"label": "美食"
+    ,"title": "舌尖上的中国第一季"
+    ,"author": "作者-1"
+    ,"content": "通过中华美食的多个侧面,来展现食物给中国人生活带来的仪式、伦理等方面的文化;见识中国特色食材以及与食物相关、构成中国美食特有气质的一系列元素;了解中华饮食文化的精致和源远流长"
+    ,"uploadtime": 20121204
+    ,"status": true
+  },{
+    "id": "002"
+    ,"label": "美食"
+    ,"title": "舌尖上的中国第二季"
+    ,"author": "作者-2"
+    ,"content": "以食物为窗口,读懂中国——通过美食,使人们可以有滋有味地认知这个古老的东方国度。“一方水土一方人”,本片将通过展示人们日常生活中与美食相关的多重侧面,描绘与感知中国人的文化传统、家族观念、生活态度与故土难离。人们收获、保存、烹饪、生产美食,并在其过程中留存和传承食物所承载的味觉记忆、饮食习俗、文化样态与家常情感。"
+    ,"uploadtime": 20141204
+    ,"status": false
+  },{
+    "id": "003"
+    ,"label": "美食"
+    ,"title": "舌尖上的中国第三季"
+    ,"author": "作者-3"
+    ,"content": "以食物为窗口,读懂中国——通过美食,使人们可以有滋有味地认知这个古老的东方国度。“一方水土一方人”,本片将通过展示人们日常生活中与美食相关的多重侧面,描绘与感知中国人的文化传统、家族观念、生活态度与故土难离。人们收获、保存、烹饪、生产美食,并在其过程中留存和传承食物所承载的味觉记忆、饮食习俗、文化样态与家常情感将世界美食和中国美食进行比照。春耕、夏耘、秋收、冬藏,天人合一的东方哲学让中国饮食依时而变,智慧灵动,中医营养摄生学说创造了食材运用的新天地,儒家人伦道德则把心意和家的味道端上我们的餐桌。淘洗历史,糅合时光,一代又一代的中国人在天地间升起烟火,用至精至诚的心意烹制食物,一餐一食之间,中国人展示个性,确认归属,构建文明,理解和把握着世界的奥妙。"
+    ,"uploadtime": 20161204
+    ,"status": false
+  },{
+    "id": "004"
+    ,"label": "历史"
+    ,"title": "诸葛亮骂王朗"
+    ,"author": "作者-1"
+    ,"content": "皓首匹夫!苍髯老贼!你即将命归于九泉之下,届时,有何面目见汉朝二十四代先帝?二臣贼子!你枉活七十有六,一生未立寸功,只会摇唇舞舌,助曹为虐!一条断脊之犬,还敢在我军阵前狺狺狂吠!我从未见过如此厚颜无耻之人!!!"
+    ,"uploadtime": 20180201
+    ,"status": false
+  },{
+    "id": "005"
+    ,"label": "新闻"
+    ,"title": "新时代特色中国梦"
+    ,"author": "作者-1"
+    ,"content": "今天,我们比历史上任何时期都更接近、更有信心和能力实现中华民族伟大复兴的目标。新时代已经到来,蓝图已经绘就,中国梦离我们越来越近了。"
+    ,"uploadtime": 20180512
+    ,"status": false
+  },{
+    "id": "006"
+    ,"label": "新闻"
+    ,"title": "新时代特色中国梦"
+    ,"author": "作者-2"
+    ,"content": "梦想不会主动走向我们,只有我们去主动实现梦想。行百里者半九十。虽然中国梦离我们越来越近了,但是要实现中国梦,还要靠我们以永不懈怠的精神状态、功在不舍的坚强意志,不忘初心,继续前进。"
+    ,"uploadtime": 20180514
+    ,"status": false
+  },{
+    "id": "007"
+    ,"label": "体育"
+    ,"title": "皇马大战利物浦"
+    ,"author": "作者-3"
+    ,"content": "对欧足联而言,更想要产生个新冠军。连续三年都是同一个冠军队,这会毁掉欧冠……”格里姆表态,“皇马有梦幻般的阵容,但从促进竞争的角度而言,另一支球队获胜会更好。"
+    ,"uploadtime": 20180515
+    ,"status": false
+  }]
+}

+ 21 - 0
public/static/echoui/json/content/tags.js

@@ -0,0 +1,21 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": "001"
+    ,"tags": "美食"
+  },{
+    "id": "002"
+    ,"tags": "新闻"  
+  },{
+    "id": "003"
+    ,"tags": "八卦"
+  },{
+    "id": "004"
+    ,"tags": "体育"  
+  },{
+    "id": "005"
+    ,"tags": "音乐"
+  }]
+}

+ 62 - 0
public/static/echoui/json/forum/list.js

@@ -0,0 +1,62 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": "1001"
+    ,"poster": "赵"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"content": "为什么花儿这么么红"
+    ,"posttime": 20160805
+    ,"top": false
+  },{
+    "id": "1002"
+    ,"poster": "钱"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"content": "喜欢胡歌,赞赞赞"
+    ,"posttime": 20161205
+    ,"top": true
+  },{
+    "id": "1003"
+    ,"poster": "孙"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"content": "明天就要考试了,好紧张,求保佑"
+    ,"posttime": 20170405
+    ,"top": false
+  },{
+    "id": "1004"
+    ,"poster": "李"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"content": "希望明天是个好天气" 
+    ,"posttime": 20171005
+    ,"top": false
+  },{
+    "id": "1005"
+    ,"poster": "周"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"content": "女追男隔层纱,是不是真的"
+    ,"posttime": 20180205
+    ,"top": false
+  },{
+    "id": "1006"
+    ,"poster": "吴"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"content": "竟然有人跳楼,年轻人想不开啊!" 
+    ,"posttime": 20180512
+    ,"top": false
+  },{
+    "id": "1007"
+    ,"poster": "郑"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"content": "大家一定不能学那个年轻人,珍爱生命啊"
+    ,"posttime": 20180512
+    ,"top": false
+  },{
+    "id": "1008"
+    ,"poster": "王"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"content": "想知道南昌哪里有好吃的西安肉夹馍"
+    ,"posttime": 20180514
+    ,"top": false
+  }]
+}

+ 69 - 0
public/static/echoui/json/forum/replys.js

@@ -0,0 +1,69 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": "001"
+    ,"replyer": "吴"
+    ,"cardid": "1002"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "有眼光,我也喜欢胡歌!"
+    ,"replytime": 20161205
+  },{
+    "id": "002"
+    ,"replyer": "郑"
+    ,"cardid": "1002"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "同上同上。"
+    ,"replytime": 20161205
+  },{
+    "id": "003"
+    ,"replyer": "王"
+    ,"cardid": "1003"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "能过一定过,不能过紧张也没用"
+    ,"replytime": 20170405
+  },{
+    "id": "004"
+    ,"replyer": "冯"
+    ,"cardid": "1001"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "可能因为你流鼻血了。" 
+    ,"replytime": 20170405
+  },{
+    "id": "005"
+    ,"replyer": "陈"
+    ,"cardid": "1003"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "加油加油,看好你"
+    ,"replytime": 20170405
+  },{
+    "id": "006"
+    ,"replyer": "褚"
+    ,"cardid": "1005"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "纯属放屁" 
+    ,"replytime": 20180207
+  },{
+    "id": "007"
+    ,"replyer": "卫"
+    ,"cardid": "1005"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "可以试试"
+    ,"replytime": 20180207
+  },{
+    "id": "006"
+    ,"replyer": "蒋"
+    ,"cardid": "1006"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "是啊是啊,太恐怖了。" 
+    ,"replytime": 20180512
+  },{
+    "id": "007"
+    ,"replyer": "沈"
+    ,"cardid": "1008"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"content": "魏家凉皮的凉皮就很不错奥。"
+    ,"replytime": 20180515
+  }]
+}

+ 39 - 0
public/static/echoui/json/layer/photos.js

@@ -0,0 +1,39 @@
+{
+  "code": 0,
+  "msg": "",
+  "title": "JSON请求的相册",
+  "id": 8,
+  "start": 0,
+  "data": [
+    {
+      "alt": "layer",
+      "pid": 109,
+      "src": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg",
+      "thumb": ""
+    },
+    {
+      "alt": "说好的,一起Fly",
+      "pid": 110,
+      "src": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4kebemcj20ga09saa1.jpg",
+      "thumb": ""
+    },
+    {
+      "alt": "佟丽娅女神",
+      "pid": 111,
+      "src": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg",
+      "thumb": ""
+    },
+    {
+      "alt": "凤姐是个好人",
+      "pid": 112,
+      "src": "https://wx3.sinaimg.cn/mw690/5db11ff4gy1fmx4kec9vuj20b20dwmyk.jpg",
+      "thumb": ""
+    },
+    {
+      "alt": "星空如此深邃",
+      "pid": 113,
+      "src": "https://wx3.sinaimg.cn/mw690/5db11ff4gy1fmx4keca8ag208g06iglw.gif",
+      "thumb": ""
+    }
+  ]
+}

+ 96 - 0
public/static/echoui/json/layim/getList.js

@@ -0,0 +1,96 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"data": {
+    "mine": {
+      "username": "纸飞机"
+      ,"id": "100000"
+      ,"status": "online"
+      ,"sign": "在深邃的编码世界,做一枚轻盈的纸飞机"
+      ,"avatar": "//res.layui.com/images/fly/avatar/00.jpg"
+    }
+    ,"friend": [{
+      "groupname": "知名人物"
+      ,"id": 0
+      ,"list": [{
+        "username": "贤心"
+        ,"id": "100001"
+        ,"avatar": "//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg"
+        ,"sign": "这些都是测试数据,实际使用请严格按照该格式返回"
+        ,"status": "online"
+      },{
+        "username": "刘涛tamia"
+        ,"id": "100001222"
+        ,"sign": "如约而至,不负姊妹欢乐颂"
+        ,"avatar": "//tva4.sinaimg.cn/crop.0.1.1125.1125.180/475bb144jw8f9nwebnuhkj20v90vbwh9.jpg"
+      },{
+        "username": "谢楠"
+        ,"id": "10034001"
+        ,"avatar": "//tva2.sinaimg.cn/crop.1.0.747.747.180/633f068fjw8f9h040n951j20ku0kr74t.jpg"
+        ,"sign": ""
+      },{
+        "username": "马小云"
+        ,"id": "168168"
+        ,"avatar": "//tva1.sinaimg.cn/crop.0.0.180.180.180/7fde8b93jw1e8qgp5bmzyj2050050aa8.jpg"
+        ,"sign": "让天下没有难写的代码"
+      },{
+        "username": "徐小峥"
+        ,"id": "666666"
+        ,"avatar": "//tva1.sinaimg.cn/crop.0.0.512.512.180/6a4acad5jw8eqi6yaholjj20e80e8t9f.jpg"
+        ,"sign": "代码在囧途,也要写到底"
+      }]
+    },{
+      "groupname": "网红声优"
+      ,"id": 1
+      ,"list": [{
+        "username": "罗玉凤"
+        ,"id": "121286"
+        ,"avatar": "//tva4.sinaimg.cn/crop.0.0.640.640.180/4a02849cjw8fc8vn18vktj20hs0hs75v.jpg"
+        ,"sign": "在自己实力不济的时候,不要去相信什么媒体和记者。他们不是善良的人,有时候候他们的采访对当事人而言就是陷阱"
+      },{
+        "username": "Z_子晴"
+        ,"id": "108101"
+        ,"avatar": "//tva1.sinaimg.cn/crop.0.23.1242.1242.180/8693225ajw8fbimjimpjwj20yi0zs77l.jpg"
+        ,"sign": "微电商达人"
+      },{
+        "username": "大鱼_MsYuyu"
+        ,"id": "12123454"
+        ,"avatar": "//tva2.sinaimg.cn/crop.0.0.512.512.180/005LMAegjw8f2bp9qg4mrj30e80e8dg5.jpg"
+        ,"sign": "我瘋了!這也太準了吧  超級笑點低"
+      },{
+        "username": "醋醋cucu"
+        ,"id": "102101"
+        ,"avatar": "//tva2.sinaimg.cn/crop.0.0.640.640.180/648fbe5ejw8ethmg0u9egj20hs0ht0tn.jpg"
+        ,"sign": ""
+      },{
+        "username": "柏雪近在它香"
+        ,"id": "3435343"
+        ,"avatar": "//tva2.sinaimg.cn/crop.0.8.751.751.180/961a9be5jw8fczq7q98i7j20kv0lcwfn.jpg"
+        ,"sign": ""
+      }]
+    },{
+      "groupname": "女神艺人"
+      ,"id": 2
+      ,"list": [{
+        "username": "王祖贤"
+        ,"id": "76543"
+        ,"avatar": "//wx2.sinaimg.cn/mw690/5db11ff4gy1flxmew7edlj203d03wt8n.jpg"
+        ,"sign": "我爱贤心"
+      },{
+        "username": "佟丽娅"
+        ,"id": "4803920"
+        ,"avatar": "//tva3.sinaimg.cn/crop.0.0.750.750.180/5033b6dbjw8etqysyifpkj20ku0kuwfw.jpg"
+        ,"sign": "我也爱贤心吖吖啊"
+      }]
+    }]
+    ,"group": [{
+      "groupname": "前端群"
+      ,"id": "101"
+      ,"avatar": "//tva1.sinaimg.cn/crop.0.0.200.200.50/006q8Q6bjw8f20zsdem2mj305k05kdfw.jpg"
+    },{
+      "groupname": "Fly社区官方群"
+      ,"id": "102"
+      ,"avatar": "//tva2.sinaimg.cn/crop.0.0.199.199.180/005Zseqhjw1eplix1brxxj305k05kjrf.jpg"
+    }]
+  }
+}

+ 67 - 0
public/static/echoui/json/layim/getMembers.js

@@ -0,0 +1,67 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"data": {
+    "list": [{
+      "username": "贤心"
+      ,"id": "100001"
+      ,"avatar": "//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg"
+      ,"sign": "这些都是测试数据,实际使用请严格按照该格式返回"
+    },{
+      "username": "Z_子晴"
+      ,"id": "108101"
+      ,"avatar": "//tva1.sinaimg.cn/crop.0.23.1242.1242.180/8693225ajw8fbimjimpjwj20yi0zs77l.jpg"
+      ,"sign": "微电商达人"
+    },{
+      "username": "Lemon_CC"
+      ,"id": "102101"
+      ,"avatar": "//tva4.sinaimg.cn/crop.0.0.180.180.180/6d424ea5jw1e8qgp5bmzyj2050050aa8.jpg"
+      ,"sign": ""
+    },{
+      "username": "马小云"
+      ,"id": "168168"
+      ,"avatar": "//tva1.sinaimg.cn/crop.0.0.180.180.180/7fde8b93jw1e8qgp5bmzyj2050050aa8.jpg"
+      ,"sign": "让天下没有难写的代码"
+    },{
+      "username": "徐小峥"
+      ,"id": "666666"
+      ,"avatar": "//tva1.sinaimg.cn/crop.0.0.512.512.180/6a4acad5jw8eqi6yaholjj20e80e8t9f.jpg"
+      ,"sign": "代码在囧途,也要写到底"
+    },{
+      "username": "罗玉凤"
+      ,"id": "121286"
+      ,"avatar": "//tva4.sinaimg.cn/crop.0.0.640.640.180/4a02849cjw8fc8vn18vktj20hs0hs75v.jpg"
+      ,"sign": "在自己实力不济的时候,不要去相信什么媒体和记者。他们不是善良的人,有时候候他们的采访对当事人而言就是陷阱"
+    },{
+      "username": "刘涛tamia"
+      ,"id": "100001222"
+      ,"avatar": "//tva4.sinaimg.cn/crop.0.1.1125.1125.180/475bb144jw8f9nwebnuhkj20v90vbwh9.jpg"
+      ,"sign": "如约而至,不负姊妹欢乐颂"
+    },{
+        "username": "大鱼_MsYuyu"
+        ,"id": "12123454"
+        ,"avatar": "//tva2.sinaimg.cn/crop.0.0.512.512.180/005LMAegjw8f2bp9qg4mrj30e80e8dg5.jpg"
+        ,"sign": "我瘋了!這也太準了吧  超級笑點低"
+      },{
+        "username": "谢楠"
+        ,"id": "10034001"
+        ,"avatar": "//tva2.sinaimg.cn/crop.1.0.747.747.180/633f068fjw8f9h040n951j20ku0kr74t.jpg"
+        ,"sign": ""
+      },{
+        "username": "柏雪近在它香"
+        ,"id": "3435343"
+        ,"avatar": "//tva2.sinaimg.cn/crop.0.8.751.751.180/961a9be5jw8fczq7q98i7j20kv0lcwfn.jpg"
+        ,"sign": ""
+      },{
+        "username": "林心如"
+        ,"id": "76543"
+        ,"avatar": "//tva3.sinaimg.cn/crop.0.0.512.512.180/48f122e6jw8fcmi072lkyj20e80e8t9i.jpg"
+        ,"sign": "我爱贤心"
+      },{
+        "username": "佟丽娅"
+        ,"id": "4803920"
+        ,"avatar": "//tva3.sinaimg.cn/crop.0.0.750.750.180/5033b6dbjw8etqysyifpkj20ku0kuwfw.jpg"
+        ,"sign": "我也爱贤心吖吖啊"
+      }]
+  }
+}

+ 42 - 0
public/static/echoui/json/mall/order.js

@@ -0,0 +1,42 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "invoice": "X123565541"
+    ,"username": "张小三"
+    ,"orderDate": "2017-11-10"
+    ,"amount": 800
+    ,"status": 1
+  },{
+    "invoice": "X123565542"
+    ,"username": "李小四"
+    ,"orderDate": "2017-11-10"
+    ,"amount": 800
+    ,"status": 0
+  },{
+    "invoice": "X123565543"
+    ,"username": "王老五"
+    ,"orderDate": "2017-11-10"
+    ,"amount": 800
+    ,"status": 1
+  },{
+    "invoice": "X123565544"
+    ,"username": "赵小六"
+    ,"orderDate": "2017-11-09"
+    ,"amount": 1600
+    ,"status": 1
+  },{
+    "invoice": "X123565545"
+    ,"username": "孙小七"
+    ,"orderDate": "2017-11-09"
+    ,"amount": 1600
+    ,"status": -1
+  },{
+    "invoice": "X123565546"
+    ,"username": "周小八"
+    ,"orderDate": "2017-11-08"
+    ,"amount": 2600
+    ,"status": 1
+  }]
+}

+ 227 - 0
public/static/echoui/json/menu.js

@@ -0,0 +1,227 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"data": [{
+    "name": "component"
+    ,"title": "组件"
+    ,"icon": "layui-icon-component"
+    ,"list": [{
+      "name": "grid"
+      ,"title": "栅格"
+      ,"list": [{
+        "name": "list"
+        ,"title": "等比例列表排列"
+      },{
+        "name": "mobile"
+        ,"title": "按移动端排列"
+      },{
+        "name": "mobile-pc"
+        ,"title": "移动桌面端组合"
+      },{
+        "name": "all"
+        ,"title": "全端复杂组合"
+      },{
+        "name": "stack"
+        ,"title": "低于桌面堆叠排列"
+      },{
+        "name": "speed-dial"
+        ,"title": "九宫格"
+      }]
+    }, {
+      "name": "button"
+      ,"title": "按钮"
+    }, {
+      "name": "form"
+      ,"title": "表单"
+      ,"list": [{
+        "name": "element"
+        ,"title": "表单元素"
+      },{
+        "name": "group"
+        ,"title": "表单组合"
+      }]
+    }, {
+      "name": "nav"
+      ,"title": "导航"
+    }, {
+      "name": "tabs"
+      ,"title": "选项卡"
+    }, {
+      "name": "progress"
+      ,"title": "进度条"
+    }, {
+      "name": "panel"
+      ,"title": "面板"
+    }, {
+      "name": "badge"
+      ,"title": "徽章"
+    }, {
+      "name": "timeline"
+      ,"title": "时间线"
+    }, {
+      "name": "anim"
+      ,"title": "动画"
+    }, {
+      "name": "auxiliar"
+      ,"title": "辅助"
+    }, {
+      "name": "layer"
+      ,"title": "通用弹层"
+      ,"list": [{
+        "name": "list"
+        ,"title": "功能演示"
+      },{
+        "name": "special-demo"
+        ,"title": "特殊示例"
+      },{
+        "name": "theme"
+        ,"title": "风格定制"
+      }]
+    }, {
+      "name": "laydate"
+      ,"title": "日期时间"
+    }, {
+      "name": "table"
+      ,"title": "表格"
+    }, {
+      "name": "laypage"
+      ,"title": "分页"
+    }, {
+      "name": "upload"
+      ,"title": "上传"
+    }, {
+      "name": "carousel"
+      ,"title": "轮播"
+    }, {
+      "name": "laytpl"
+      ,"title": "模板引擎"
+    }, {
+      "name": "flow"
+      ,"title": "流加载"
+    }, {
+      "name": "util"
+      ,"title": "工具"
+    }, {
+      "name": "code"
+      ,"title": "代码修饰"
+    }, {
+      "name": "layim"
+      ,"title": "即时聊天"
+      ,"jump": "senior/im/"
+    }]
+  }, {
+    "name": "template"
+    ,"title": "模板"
+    ,"icon": "layui-icon-template"
+    ,"list": [{
+      "name": "user"
+      ,"title": "用户相关"
+      ,"spread": true
+      ,"list": [{
+        "name": "reg"
+        ,"title": "注册"
+        ,"jump": "user/reg"
+      },{
+        "name": "login"
+        ,"title": "登入"
+        ,"jump": "user/login"
+      },{
+        "name": "forget"
+        ,"title": "忘记密码"
+        ,"jump": "user/forget"
+      }]
+    }, {
+      "name": "tips"
+      ,"title": "提示页面"
+      ,"spread": true
+      ,"list": [{
+        "name": "404"
+        ,"title": "404"
+      },{
+        "name": "error"
+        ,"title": "错误提示"
+      }]
+    }, {
+      "name": ""
+      ,"title": "内嵌页面"
+      ,"spread": true
+      ,"list": [{
+        "name": ""
+        ,"title": "百度一下"
+        ,"jump": "/iframe/link/baidu"
+      }, {
+        "name": ""
+        ,"title": "layui官网"
+        ,"jump": "/iframe/link/layui"
+      }, {
+        "name": ""
+        ,"title": "layuiAdmin官网"
+        ,"jump": "/iframe/link/layuiAdmin"
+      }]
+    }]
+  }, {
+    "name": "app"
+    ,"title": "应用"
+    ,"icon": "layui-icon-app"
+    ,"list": [{
+      "name": "message"
+      ,"title": "消息中心"
+    }]
+  }, {
+    "name": "senior"
+    ,"title": "高级"
+    ,"icon": "layui-icon-senior"
+    ,"list": [{
+      "name": "im"
+      ,"title": "通讯系统"
+    }]
+  }, {
+    "name": "user"
+    ,"title": "用户"
+    ,"icon": "layui-icon-user"
+    ,"list": [{
+      "name": "user"
+      ,"title": "用户"
+      ,"spread": true
+      ,"list": [{
+        "name": "list"
+        ,"title": "用户列表"
+      }]
+    },{
+      "name": "administrators"
+      ,"title": "后台管理组"
+      ,"spread": true
+      ,"list": [{
+        "name": "list"
+        ,"title": "管理员列表"
+      },{
+        "name": "role"
+        ,"title": "角色管理"
+      }]
+    }]
+  }, {
+    "name": "set"
+    ,"title": "设置"
+    ,"icon": "layui-icon-set"
+    ,"list": [{
+      "name": "base"
+      ,"title": "基本设置"
+      ,"spread": true
+      ,"list": [{
+        "name": "website"
+        ,"title": "系统设置"
+      },{
+        "name": "email"
+        ,"title": "邮件服务"
+      }]
+    },{
+      "name": "security"
+      ,"title": "安全设置"
+    }]
+  }, {
+    "name": "get"
+    ,"title": "授权"
+    ,"icon": "layui-icon-auz"
+    ,"jump": "system/get"
+  }]
+}

+ 46 - 0
public/static/echoui/json/message/all.js

@@ -0,0 +1,46 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": 60
+  ,"data": [{
+    "id": 123
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510363800000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1507447570000
+  }]
+}

+ 10 - 0
public/static/echoui/json/message/detail.js

@@ -0,0 +1,10 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"data": {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"content": "<p>一直以来,layui 秉承无偿开源的初心,虔诚致力于服务各层次前后端 Web 开发者,在商业横飞的当今时代,这一信念从未动摇。即便身单力薄,仍然重拾决心,埋头造轮,以尽可能地填补产品本身的缺口。在过去的一段的时间,我一直在寻求持久之道,已维持你眼前所见的一切。而 layuiAdmin 是我们尝试解决的手段之一。我相信真正有爱于 layui 生态的你,定然不会错过这一拥抱吧。</p><p>子曰:君子不用防,小人防不住。请务必通过官网正规渠道,获得 <a href=\"http://www.layui.com/admin/\" target=\"_blank\">layuiAdmin</a>!</p><p>—— 贤心(<a href=\"http://www.layui.com/\" target=\"_blank\">layui.com</a>)</p>"
+    ,"time": 1510363800000
+  }
+}

+ 46 - 0
public/static/echoui/json/message/direct.js

@@ -0,0 +1,46 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": 60
+  ,"data": [{
+    "id": 123
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510363800000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "贤心发来了一段私信"
+    ,"time": 1507447570000
+  }]
+}

+ 7 - 0
public/static/echoui/json/message/new.js

@@ -0,0 +1,7 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"data": {
+    "newmsg": 3
+  }
+}

+ 46 - 0
public/static/echoui/json/message/notice.js

@@ -0,0 +1,46 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": 60
+  ,"data": [{
+    "id": 123
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510363800000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1510212370000
+  }, {
+    "id": 111
+    ,"title": "你好新朋友,感谢使用 layuiAdmin"
+    ,"time": 1507447570000
+  }]
+}

+ 96 - 0
public/static/echoui/json/table/demo.js

@@ -0,0 +1,96 @@
+
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": 3000000
+  ,"data": [{
+    "id": "10001"
+    ,"username": "杜甫"
+    ,"email": "xianxin@layui.com"
+    ,"sex": "男"
+    ,"city": "浙江杭州"
+    ,"sign": "点击此处,显示更多。当内容超出时,点击单元格会自动显示更多内容。"
+    ,"experience": "116"
+    ,"ip": "192.168.0.8"
+    ,"logins": "108"
+    ,"joinTime": "2016-10-14"
+  }, {
+    "id": "10002"
+    ,"username": "李白"
+    ,"email": "xianxin@layui.com"
+    ,"sex": "男"
+    ,"city": "浙江杭州"
+    ,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。"
+    ,"experience": "12"
+    ,"ip": "192.168.0.8"
+    ,"logins": "106"
+    ,"joinTime": "2016-10-14"
+    ,"LAY_CHECKED": true
+  }, {
+    "id": "10003"
+    ,"username": "王勃"
+    ,"email": "xianxin@layui.com"
+    ,"sex": "男"
+    ,"city": "浙江杭州"
+    ,"sign": "人生恰似一场修行"
+    ,"experience": "65"
+    ,"ip": "192.168.0.8"
+    ,"logins": "106"
+    ,"joinTime": "2016-10-14"
+  }, {
+    "id": "10004"
+    ,"username": "李清照"
+    ,"email": "xianxin@layui.com"
+    ,"sex": "女"
+    ,"city": "浙江杭州"
+    ,"sign": "人生恰似一场修行"
+    ,"experience": "666"
+    ,"ip": "192.168.0.8"
+    ,"logins": "106"
+    ,"joinTime": "2016-10-14"
+  }, {
+    "id": "10005"
+    ,"username": "冰心"
+    ,"email": "xianxin@layui.com"
+    ,"sex": "女"
+    ,"city": "浙江杭州"
+    ,"sign": "人生恰似一场修行"
+    ,"experience": "86"
+    ,"ip": "192.168.0.8"
+    ,"logins": "106"
+    ,"joinTime": "2016-10-14"
+  }, {
+    "id": "10006"
+    ,"username": "贤心"
+    ,"email": "xianxin@layui.com"
+    ,"sex": "男"
+    ,"city": "浙江杭州"
+    ,"sign": "人生恰似一场修行"
+    ,"experience": "12"
+    ,"ip": "192.168.0.8"
+    ,"logins": "106"
+    ,"joinTime": "2016-10-14"
+  }, {
+    "id": "10007"
+    ,"username": "贤心"
+    ,"email": "xianxin@layui.com"
+    ,"sex": "男"
+    ,"city": "浙江杭州"
+    ,"sign": "人生恰似一场修行"
+    ,"experience": "16"
+    ,"ip": "192.168.0.8"
+    ,"logins": "106"
+    ,"joinTime": "2016-10-14"
+  }, {
+    "id": "10008"
+    ,"username": "贤心"
+    ,"email": "xianxin@layui.com"
+    ,"sex": "男"
+    ,"city": "浙江杭州"
+    ,"sign": "人生恰似一场修行"
+    ,"experience": "106"
+    ,"ip": "192.168.0.8"
+    ,"logins": "106"
+    ,"joinTime": "2016-10-14"
+  }]
+}  

+ 61 - 0
public/static/echoui/json/table/demo2.js

@@ -0,0 +1,61 @@
+
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": 66
+  ,"data": [{
+    "username": "张小三"
+    ,"amount": 18
+    ,"province": "浙江"
+    ,"city": "杭州"
+    ,"zone": "西湖区"
+    ,"street": "西溪街道"
+    ,"address": "西溪花园"
+    ,"house": "30栋1单元"
+  }, {
+    "username": "李小四"
+    ,"amount": 39
+    ,"province": "江苏"
+    ,"city": "苏州"
+    ,"zone": "姑苏区"
+    ,"street": "丝绸路"
+    ,"address": "天墅之城"
+    ,"house": "9幢2单元"
+  }, {
+    "username": "王小五"
+    ,"amount": 8
+    ,"province": "江西"
+    ,"city": "南昌"
+    ,"zone": "青山湖区"
+    ,"street": "艾溪湖办事处"
+    ,"address": "中兴和园"
+    ,"house": "1幢3单元"
+  }, {
+    "username": "赵小六"
+    ,"amount": 16
+    ,"province": "福建"
+    ,"city": "泉州"
+    ,"zone": "丰泽区"
+    ,"street": "南洋街道"
+    ,"address": "南洋村"
+    ,"house": "6幢1单元"
+  }, {
+    "username": "孙小七"
+    ,"amount": 12
+    ,"province": "湖北"
+    ,"city": "武汉"
+    ,"zone": "武昌区"
+    ,"street": "武昌大道"
+    ,"address": "两湖花园"
+    ,"house": "16幢2单元"
+  }, {
+    "username": "周小八"
+    ,"amount": 11
+    ,"province": "安徽"
+    ,"city": "黄山"
+    ,"zone": "黄山区"
+    ,"street": "汤口镇"
+    ,"address": "温泉村"
+    ,"house": "21号"
+  }]
+}  

+ 96 - 0
public/static/echoui/json/table/demo3.js

@@ -0,0 +1,96 @@
+{
+  "status": 200
+  ,"message": ""
+  ,"total": 8
+  ,"rows": {
+    "item": [{
+      "id": "10001"
+      ,"username": "杜甫"
+      ,"email": "xianxin@layui.com"
+      ,"sex": "男"
+      ,"city": "浙江杭州"
+      ,"sign": "点击此处,显示更多。当内容超出时,点击单元格会自动显示更多内容。"
+      ,"experience": "116"
+      ,"ip": "192.168.0.8"
+      ,"logins": "108"
+      ,"joinTime": "2016-10-14"
+    }, {
+      "id": "10002"
+      ,"username": "李白"
+      ,"email": "xianxin@layui.com"
+      ,"sex": "男"
+      ,"city": "浙江杭州"
+      ,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。"
+      ,"experience": "12"
+      ,"ip": "192.168.0.8"
+      ,"logins": "106"
+      ,"joinTime": "2016-10-14"
+    }, {
+      "id": "10003"
+      ,"username": "王勃"
+      ,"email": "xianxin@layui.com"
+      ,"sex": "男"
+      ,"city": "浙江杭州"
+      ,"sign": "人生恰似一场修行"
+      ,"experience": "65"
+      ,"ip": "192.168.0.8"
+      ,"logins": "106"
+      ,"joinTime": "2016-10-14"
+    }, {
+      "id": "10004"
+      ,"username": "李清照"
+      ,"email": "xianxin@layui.com"
+      ,"sex": "女"
+      ,"city": "浙江杭州"
+      ,"sign": "人生恰似一场修行"
+      ,"experience": "666"
+      ,"ip": "192.168.0.8"
+      ,"logins": "106"
+      ,"joinTime": "2016-10-14"
+    }, {
+      "id": "10005"
+      ,"username": "冰心"
+      ,"email": "xianxin@layui.com"
+      ,"sex": "女"
+      ,"city": "浙江杭州"
+      ,"sign": "人生恰似一场修行"
+      ,"experience": "86"
+      ,"ip": "192.168.0.8"
+      ,"logins": "106"
+      ,"joinTime": "2016-10-14"
+    }, {
+      "id": "10006"
+      ,"username": "贤心"
+      ,"email": "xianxin@layui.com"
+      ,"sex": "男"
+      ,"city": "浙江杭州"
+      ,"sign": "人生恰似一场修行"
+      ,"experience": "12"
+      ,"ip": "192.168.0.8"
+      ,"logins": "106"
+      ,"joinTime": "2016-10-14"
+    }, {
+      "id": "10007"
+      ,"username": "贤心"
+      ,"email": "xianxin@layui.com"
+      ,"sex": "男"
+      ,"city": "浙江杭州"
+      ,"sign": "人生恰似一场修行"
+      ,"experience": "16"
+      ,"ip": "192.168.0.8"
+      ,"logins": "106"
+      ,"joinTime": "2016-10-14"
+    }, {
+      "id": "10008"
+      ,"username": "贤心"
+      ,"email": "xianxin@layui.com"
+      ,"sex": "男"
+      ,"city": "浙江杭州"
+      ,"sign": "人生恰似一场修行"
+      ,"experience": "106"
+      ,"ip": "192.168.0.8"
+      ,"logins": "106"
+      ,"joinTime": "2016-10-14"
+    }]
+  }
+}  

+ 2 - 0
public/static/echoui/json/table/user.js

@@ -0,0 +1,2 @@
+
+{"code":0,"msg":"","count":1000,"data":[{"id":10000,"username":"user-0","sex":"女","city":"城市-0","sign":"签名-0","experience":255,"logins":24,"wealth":82830700,"classify":"作家","score":57},{"id":10001,"username":"user-1","sex":"男","city":"城市-1","sign":"签名-1","experience":884,"logins":58,"wealth":64928690,"classify":"词人","score":27},{"id":10002,"username":"user-2","sex":"女","city":"城市-2","sign":"签名-2","experience":650,"logins":77,"wealth":6298078,"classify":"酱油","score":31},{"id":10003,"username":"user-3","sex":"女","city":"城市-3","sign":"签名-3","experience":362,"logins":157,"wealth":37117017,"classify":"诗人","score":68},{"id":10004,"username":"user-4","sex":"男","city":"城市-4","sign":"签名-4","experience":807,"logins":51,"wealth":76263262,"classify":"作家","score":6},{"id":10005,"username":"user-5","sex":"女","city":"城市-5","sign":"签名-5","experience":173,"logins":68,"wealth":60344147,"classify":"作家","score":87},{"id":10006,"username":"user-6","sex":"女","city":"城市-6","sign":"签名-6","experience":982,"logins":37,"wealth":57768166,"classify":"作家","score":34},{"id":10007,"username":"user-7","sex":"男","city":"城市-7","sign":"签名-7","experience":727,"logins":150,"wealth":82030578,"classify":"作家","score":28},{"id":10008,"username":"user-8","sex":"男","city":"城市-8","sign":"签名-8","experience":951,"logins":133,"wealth":16503371,"classify":"词人","score":14},{"id":10009,"username":"user-9","sex":"女","city":"城市-9","sign":"签名-9","experience":484,"logins":25,"wealth":86801934,"classify":"词人","score":75}]}

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
public/static/echoui/json/table/user30.js


+ 7 - 0
public/static/echoui/json/upload/demo.js

@@ -0,0 +1,7 @@
+{
+  "code": 0,
+  "msg": "",
+  "data": {
+    "src": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+  }
+}

+ 7 - 0
public/static/echoui/json/user/forget.js

@@ -0,0 +1,7 @@
+{
+  "code": 0
+  ,"msg": "注册成功"
+  ,"data": {
+    
+  }
+}

+ 7 - 0
public/static/echoui/json/user/login.js

@@ -0,0 +1,7 @@
+{
+  "code": 0
+  ,"msg": "登入成功"
+  ,"data": {
+    "access_token": "c262e61cd13ad99fc650e6908c7e5e65b63d2f32185ecfed6b801ee3fbdd5c0a"
+  }
+}

+ 5 - 0
public/static/echoui/json/user/logout.js

@@ -0,0 +1,5 @@
+{
+  "code": 0
+  ,"msg": "退出成功"
+  ,"data": null
+}

+ 7 - 0
public/static/echoui/json/user/reg.js

@@ -0,0 +1,7 @@
+{
+  "code": 0
+  ,"msg": "注册成功"
+  ,"data": {
+    
+  }
+}

+ 7 - 0
public/static/echoui/json/user/resetpass.js

@@ -0,0 +1,7 @@
+{
+  "code": 0
+  ,"msg": "注册成功"
+  ,"data": {
+    
+  }
+}

+ 9 - 0
public/static/echoui/json/user/session.js

@@ -0,0 +1,9 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"data": {
+    "username": "贤心"
+    ,"sex": "男"
+    ,"role": 1
+  }
+}

+ 7 - 0
public/static/echoui/json/user/sms.js

@@ -0,0 +1,7 @@
+{
+  "code": 0
+  ,"msg": "注册成功"
+  ,"data": {
+    
+  }
+}

+ 78 - 0
public/static/echoui/json/useradmin/mangadmin.js

@@ -0,0 +1,78 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": "1001"
+    ,"loginname": "admin"
+    ,"telphone": "11111111111"
+    ,"email": "111@qq.com"
+    ,"role": "超级管理员"
+    ,"jointime": "20150217"
+    ,"check": true
+  },{
+    "id": "1002"
+    ,"loginname": "common-1"
+    ,"telphone": "22222222222"
+    ,"email": "222@qq.com"
+    ,"role": "管理员"
+    ,"jointime": "20160217"
+    ,"check": false
+  },{
+    "id": "1003"
+    ,"loginname": "common-2"
+    ,"telphone": "33333333333"
+    ,"email": "333@qq.com"
+    ,"role": "管理员"
+    ,"jointime": "20161012"
+    ,"check": false
+  },{
+    "id": "1004"
+    ,"loginname": "common-3"
+    ,"telphone": "44444444444"
+    ,"email": "444@qq.com"
+    ,"role": "管理员"
+    ,"jointime": "20170518"
+    ,"check": true
+  },{
+    "id": "1005"
+    ,"loginname": "common-4"
+    ,"telphone": "55555555555"
+    ,"email": "555@qq.com"
+    ,"role": "管理员"
+    ,"jointime": "20180101"
+    ,"check": false
+  },{
+    "id": "1006"
+    ,"loginname": "common-5"
+    ,"telphone": "66666666666"
+    ,"email": "666@qq.com"
+    ,"role": "管理员"
+    ,"jointime": "20160217"
+    ,"check": false
+  },{
+    "id": "1007"
+    ,"loginname": "common-6"
+    ,"telphone": "77777777777"
+    ,"email": "777@qq.com"
+    ,"role": "管理员"
+    ,"jointime": "20161012"
+    ,"check": false
+  },{
+    "id": "1008"
+    ,"loginname": "common-7"
+    ,"telphone": "88888888888"
+    ,"email": "888@qq.com"
+    ,"role": "管理员"
+    ,"jointime": "20170518"
+    ,"check": true
+  },{
+    "id": "1009"
+    ,"loginname": "common-8"
+    ,"telphone": "99999999999"
+    ,"email": "999@qq.com"
+    ,"role": "管理员"
+    ,"jointime": "20180101"
+    ,"check": false
+  }]
+}

+ 54 - 0
public/static/echoui/json/useradmin/role.js

@@ -0,0 +1,54 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": "1"
+    ,"rolename": "超级管理员"
+    ,"limits": "管理所有的管理员"
+    ,"descr": "拥有至高无上的权利"
+    ,"check": true
+  },{
+    "id": "2"
+    ,"rolename": "管理员"
+    ,"limits": "所有列表的管理"
+    ,"descr": "事情很多,权力很大"
+    ,"check": true
+  },{
+    "id": "3"
+    ,"rolename": "文章撰写员"
+    ,"limits": "负责文章的编写"
+    ,"descr": "文采第一的人才集合"
+    ,"check": false
+  },{
+    "id": "4"
+    ,"rolename": "纠错员"
+    ,"limits": "负责文章内容的修改"
+    ,"descr": "暂无"
+    ,"check": false
+  },{
+    "id": "5"
+    ,"rolename": "统计人员"
+    ,"limits": "对数据进行统计"
+    ,"descr": "暂无"
+    ,"check": false
+  },{
+    "id": "6"
+    ,"rolename": "评估员"
+    ,"limits": "对统计数据进行评估"
+    ,"descr": "及时捕捉市场发展动态"
+    ,"check": false
+  },{
+    "id": "7"
+    ,"rolename": "采购员"
+    ,"limits": "负责员工的伙食"
+    ,"descr": "暂无"
+    ,"check": false
+  },{
+    "id": "8"
+    ,"rolename": "推销员"
+    ,"limits": "介绍销售公司产品"
+    ,"descr": "暂无"
+    ,"check": false
+  }]
+}

+ 143 - 0
public/static/echoui/json/useradmin/webuser.js

@@ -0,0 +1,143 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "id": "001"
+    ,"username": "用户-1"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+    "id": "002"
+    ,"username": "用户-2"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+    "id": "003"
+    ,"username": "用户-3"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "女"
+    ,"ip": "1111111"
+    ,"jointime": 20171011
+    ,"LAY_CHECKED": true
+  },{
+    "id": "004"
+    ,"username": "用户-4"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20160505
+  },{
+    "id": "005"
+    ,"username": "用户-5"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+   "id": "006"
+    ,"username": "用户-6"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+    "id": "007"
+    ,"username": "用户-7"
+    ,"avatar": "https://wx3.sinaimg.cn/mw690/5db11ff4gy1fmx4keca8ag208g06iglw.gif"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20180210
+  },{
+    "id": "008"
+    ,"username": "用户-8"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "女"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+   "id": "009"
+    ,"username": "用户-9"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "女"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+    "id": "010"
+    ,"username": "用户-10"
+    ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20170719
+  },{
+    "id": "011"
+    ,"username": "用户-11"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+    "id": "012"
+    ,"username": "用户-12"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "女"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+    "id": "013"
+    ,"username": "用户-13"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "女"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+    ,"LAY_CHECKED": true
+  },{
+    "id": "014"
+    ,"username": "用户-14"
+    ,"avatar": "https://wx3.sinaimg.cn/mw690/5db11ff4gy1fmx4keca8ag208g06iglw.gif"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  },{
+    "id": "015"
+    ,"username": "用户-15"
+    ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg"
+    ,"phone": 12345678901
+    ,"email": "11111@qq.com"
+    ,"sex": "男"
+    ,"ip": "1111111"
+    ,"jointime": 20171204
+  }]
+}

+ 78 - 0
public/static/echoui/json/workorder/demo.js

@@ -0,0 +1,78 @@
+{
+  "code": 0
+  ,"msg": ""
+  ,"count": "100"
+  ,"data": [{
+    "orderid": 111
+    ,"title": "移动支付踏入马来西亚,聚合支付紧随其后"
+    ,"attr": "公告"
+    ,"progress": "25%"
+    ,"submit": "贤心"
+    ,"accept": "员工-1"
+    ,"state": "处理中"
+  },{
+    "orderid": 222
+    ,"title": "凡科拖拽式免费建站神器,享双重优惠!"
+    ,"attr": "讨论"
+    ,"progress": "100%"
+    ,"submit": "猫吃"
+    ,"accept": "员工-1"
+    ,"state": "已处理"
+  },{
+    "orderid": 333
+    ,"title": "看着别人的老板给员工送汽车有感"
+    ,"attr": "分享"
+    ,"progress": "0%"
+    ,"submit": "纸飞机"
+    ,"accept": ""
+    ,"state": "未分配"
+  },{
+    "orderid": 444
+    ,"title": "DISCUZ的云平台应该彻底完了"
+    ,"attr": "提问"
+    ,"progress": "0%"
+    ,"submit": "纸飞机"
+    ,"accept": ""
+    ,"state": "未分配"
+  },{
+    "orderid": 555
+    ,"title": "现在个人网站还有必要长期坚持下去吗?"
+    ,"attr": "提问"
+    ,"progress": "50%"
+    ,"submit": "纸飞机"
+    ,"accept": "员工-2"
+    ,"state": "处理中"
+  },{
+    "orderid": 666
+    ,"title": "向北京公安局投诉了京东商城"
+    ,"attr": "公告"
+    ,"progress": "25%"
+    ,"submit": "纸飞机"
+    ,"accept": "员工-3"
+    ,"state": "处理中"
+  },{
+    "orderid": 777
+    ,"title": "游戏 网页美工,一个月多少工资才正常?"
+    ,"attr": "提问"
+    ,"progress": "100%"
+    ,"submit": "纸飞机"
+    ,"accept": "员工-1"
+    ,"state": "已处理"
+  },{
+    "orderid": 888
+    ,"title": "几年没来了,蓝色理想帖子这么少了啊"
+    ,"attr": "提问"
+    ,"progress": "0%"
+    ,"submit": "纸飞机"
+    ,"accept": ""
+    ,"state": "未分配"
+  },{
+    "orderid": 999
+    ,"title": "我的天,求推荐靠谱的学习网站"
+    ,"attr": "提问"
+    ,"progress": "50%"
+    ,"submit": "纸飞机"
+    ,"accept": "员工-2"
+    ,"state": "处理中"
+  }]
+}

+ 3 - 0
public/static/echoui/json/╦╡├ў.txt

@@ -0,0 +1,3 @@
+
+注意:这里是模拟的数据。
+实际应用时,请在模板文件(.html)中的 lay-url="" 和其它相关接口的 url 设置成你真实的接口地址

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
public/static/echoui/layui/css/layui.css


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
public/static/echoui/layui/css/layui.mobile.css


+ 2 - 0
public/static/echoui/layui/css/modules/code.css

@@ -0,0 +1,2 @@
+/** layui-v2.5.6 MIT License By https://www.layui.com */
+ html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
public/static/echoui/layui/css/modules/laydate/default/laydate.css


BIN
public/static/echoui/layui/css/modules/layer/default/icon-ext.png


BIN
public/static/echoui/layui/css/modules/layer/default/icon.png


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
public/static/echoui/layui/css/modules/layer/default/layer.css


BIN
public/static/echoui/layui/css/modules/layer/default/loading-0.gif


BIN
public/static/echoui/layui/css/modules/layer/default/loading-1.gif


BIN
public/static/echoui/layui/css/modules/layer/default/loading-2.gif


+ 96 - 0
public/static/echoui/layui/css/modules/layim/html/chatlog.html

@@ -0,0 +1,96 @@
+ 
+ 
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+<title>聊天记录</title>
+
+<link rel="stylesheet" href="http://local.res.layui.com/layui/src/css/layui.css">
+<style>
+body .layim-chat-main{height: auto;}
+</style>
+</head>
+<body>
+
+<div class="layim-chat-main">
+  <ul id="LAY_view"></ul>
+</div>
+
+<div id="LAY_page" style="margin: 0 10px;"></div>
+
+
+<textarea title="消息模版" id="LAY_tpl" style="display:none;">
+{{# layui.each(d.data, function(index, item){
+  if(item.id == parent.layui.layim.cache().mine.id){ }}
+    <li class="layim-chat-mine"><div class="layim-chat-user"><img src="{{ item.avatar }}"><cite><i>{{ layui.data.date(item.timestamp) }}</i>{{ item.username }}</cite></div><div class="layim-chat-text">{{ layui.layim.content(item.content) }}</div></li>
+  {{# } else { }}
+    <li><div class="layim-chat-user"><img src="{{ item.avatar }}"><cite>{{ item.username }}<i>{{ layui.data.date(item.timestamp) }}</i></cite></div><div class="layim-chat-text">{{ layui.layim.content(item.content) }}</div></li>
+  {{# }
+}); }}
+</textarea>
+
+<!-- 
+上述模版采用了 laytpl 语法,不了解的同学可以去看下文档:http://www.layui.com/doc/modules/laytpl.html
+
+-->
+
+
+<script src="http://local.res.layui.com/layui/src/layui.js"></script>
+<script>
+layui.use(['layim', 'laypage'], function(){
+  var layim = layui.layim
+  ,layer = layui.layer
+  ,laytpl = layui.laytpl
+  ,$ = layui.jquery
+  ,laypage = layui.laypage;
+  
+  //聊天记录的分页此处不做演示,你可以采用laypage,不了解的同学见文档:http://www.layui.com/doc/modules/laypage.html
+  
+  
+  //开始请求聊天记录
+  var param =  location.search //获得URL参数。该窗口url会携带会话id和type,他们是你请求聊天记录的重要凭据
+  
+  //实际使用时,下述的res一般是通过Ajax获得,而此处仅仅只是演示数据格式
+  ,res = {
+    code: 0
+    ,msg: ''
+    ,data: [{
+      username: '纸飞机'
+      ,id: 100000
+      ,avatar: 'http://tva3.sinaimg.cn/crop.0.0.512.512.180/8693225ajw8f2rt20ptykj20e80e8weu.jpg'
+      ,timestamp: 1480897882000
+      ,content: 'face[抱抱] face[心] 你好啊小美女'
+    }, {
+      username: 'Z_子晴'
+      ,id: 108101
+      ,avatar: 'http://tva3.sinaimg.cn/crop.0.0.512.512.180/8693225ajw8f2rt20ptykj20e80e8weu.jpg'
+      ,timestamp: 1480897892000
+      ,content: '你没发错吧?face[微笑]'
+    },{
+      username: 'Z_子晴'
+      ,id: 108101
+      ,avatar: 'http://tva3.sinaimg.cn/crop.0.0.512.512.180/8693225ajw8f2rt20ptykj20e80e8weu.jpg'
+      ,timestamp: 1480897898000
+      ,content: '你是谁呀亲。。我爱的是贤心!我爱的是贤心!我爱的是贤心!重要的事情要说三遍~'
+    },{
+      username: 'Z_子晴'
+      ,id: 108101
+      ,avatar: 'http://tva3.sinaimg.cn/crop.0.0.512.512.180/8693225ajw8f2rt20ptykj20e80e8weu.jpg'
+      ,timestamp: 1480897908000
+      ,content: '注意:这些都是模拟数据,实际使用时,需将其中的模拟接口改为你的项目真实接口。\n该模版文件所在目录(相对于layui.js):\n/css/modules/layim/html/chatlog.html'
+    }]
+  }
+  
+  //console.log(param)
+  
+  var html = laytpl(LAY_tpl.value).render({
+    data: res.data
+  });
+  $('#LAY_view').html(html);
+  
+});
+</script>
+</body>
+</html>

+ 38 - 0
public/static/echoui/layui/css/modules/layim/html/find.html

@@ -0,0 +1,38 @@
+ 
+ 
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+<title>发现</title>
+
+<link rel="stylesheet" href="http://local.res.layui.com/layui/src/css/layui.css">
+<style>
+
+</style>
+</head>
+<body>
+
+<div style="margin: 15px;">
+  <blockquote class="layui-elem-quote">此为自定义的【查找】页面,因需求不一,所以官方暂不提供该模版结构与样式,实际使用时,可移至该文件到你的项目中,对页面自行把控。
+  <br>文件所在目录(相对于layui.js):/css/modules/layim/html/find.html</blockquote>
+</div>
+
+
+
+<script src="http://local.res.layui.com/layui/src/layui.js"></script>
+<script>
+layui.use(['layim', 'laypage'], function(){
+  var layim = layui.layim
+  ,layer = layui.layer
+  ,laytpl = layui.laytpl
+  ,$ = layui.jquery
+  ,laypage = layui.laypage;
+  
+  //一些添加好友请求之类的交互参见文档
+  
+});
+</script>
+</body>
+</html>

+ 87 - 0
public/static/echoui/layui/css/modules/layim/html/getmsg.json

@@ -0,0 +1,87 @@
+{
+    "code": 0,
+    "pages": 1,
+    "data": [
+        {
+            "id": 76,
+            "content": "申请添加你为好友",
+            "uid": 168,
+            "from": 166488,
+            "from_group": 0,
+            "type": 1,
+            "remark": "有问题要问",
+            "href": null,
+            "read": 1,
+            "time": "刚刚",
+            "user": {
+                "id": 166488,
+                "avatar": "http://q.qlogo.cn/qqapp/101235792/B704597964F9BD0DB648292D1B09F7E8/100",
+                "username": "李彦宏",
+                "sign": null
+            }
+        },
+        {
+            "id": 75,
+            "content": "申请添加你为好友",
+            "uid": 168,
+            "from": 347592,
+            "from_group": 0,
+            "type": 1,
+            "remark": "你好啊!",
+            "href": null,
+            "read": 1,
+            "time": "刚刚",
+            "user": {
+                "id": 347592,
+                "avatar": "http://q.qlogo.cn/qqapp/101235792/B78751375E0531675B1272AD994BA875/100",
+                "username": "麻花疼",
+                "sign": null
+            }
+        },
+        {
+            "id": 62,
+            "content": "雷军 拒绝了你的好友申请",
+            "uid": 168,
+            "from": null,
+            "from_group": null,
+            "type": 1,
+            "remark": null,
+            "href": null,
+            "read": 1,
+            "time": "10天前",
+            "user": {
+                "id": null
+            }
+        },
+        {
+            "id": 60,
+            "content": "马小云 已经同意你的好友申请",
+            "uid": 168,
+            "from": null,
+            "from_group": null,
+            "type": 1,
+            "remark": null,
+            "href": null,
+            "read": 1,
+            "time": "10天前",
+            "user": {
+                "id": null
+            }
+        },
+        {
+            "id": 61,
+            "content": "贤心 已经同意你的好友申请",
+            "uid": 168,
+            "from": null,
+            "from_group": null,
+            "type": 1,
+            "remark": null,
+            "href": null,
+            "read": 1,
+            "time": "10天前",
+            "user": {
+                "id": null
+            }
+        }
+    ]
+}

+ 208 - 0
public/static/echoui/layui/css/modules/layim/html/msgbox.html

@@ -0,0 +1,208 @@
+ 
+ 
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+<title>消息盒子</title>
+
+<link rel="stylesheet" href="../../../layui.css?v=1">
+<style>
+.layim-msgbox{margin: 15px;}
+.layim-msgbox li{position: relative; margin-bottom: 10px; padding: 0 130px 10px 60px; padding-bottom: 10px; line-height: 22px; border-bottom: 1px dotted #e2e2e2;}
+.layim-msgbox .layim-msgbox-tips{margin: 0; padding: 10px 0; border: none; text-align: center; color: #999;}
+.layim-msgbox .layim-msgbox-system{padding: 0 10px 10px 10px;}
+.layim-msgbox li p span{padding-left: 5px; color: #999;}
+.layim-msgbox li p em{font-style: normal; color: #FF5722;}
+
+.layim-msgbox-avatar{position: absolute; left: 0; top: 0; width: 50px; height: 50px;}
+.layim-msgbox-user{padding-top: 5px;}
+.layim-msgbox-content{margin-top: 3px;}
+.layim-msgbox .layui-btn-small{padding: 0 15px; margin-left: 5px;}
+.layim-msgbox-btn{position: absolute; right: 0; top: 12px; color: #999;}
+</style>
+</head>
+<body>
+
+<ul class="layim-msgbox" id="LAY_view"></ul>
+
+<div style="margin: 0 15px;">
+  <blockquote class="layui-elem-quote">注意:这些都是模拟数据,实际使用时,需将其中的模拟接口改为你的项目真实接口。
+  <br>该模版文件所在目录(相对于layui.js):/css/modules/layim/html/msgbox.html</blockquote>
+</div>
+
+<textarea title="消息模版" id="LAY_tpl" style="display:none;">
+{{# layui.each(d.data, function(index, item){
+  if(item.from){ }}
+    <li data-uid="{{ item.from }}" data-fromGroup="{{ item.from_group }}">
+      <a href="/u/{{ item.from }}/" target="_blank">
+        <img src="{{ item.user.avatar }}" class="layui-circle layim-msgbox-avatar">
+      </a>
+      <p class="layim-msgbox-user">
+        <a href="/u/{{ item.from }}/" target="_blank">{{ item.user.username||'' }}</a>
+        <span>{{ item.time }}</span>
+      </p>
+      <p class="layim-msgbox-content">
+        {{ item.content }} 
+        <span>{{ item.remark ? '附言: '+item.remark : '' }}</span>
+      </p>
+      <p class="layim-msgbox-btn">
+        <button class="layui-btn layui-btn-small" data-type="agree">同意</button>
+        <button class="layui-btn layui-btn-small layui-btn-primary" data-type="refuse">拒绝</button>
+      </p>
+    </li>
+  {{# } else { }}
+    <li class="layim-msgbox-system">
+      <p><em>系统:</em>{{ item.content }}<span>{{ item.time }}</span></p>
+    </li>
+  {{# }
+}); }}
+</textarea>
+
+<!-- 
+上述模版采用了 laytpl 语法,不了解的同学可以去看下文档:http://www.layui.com/doc/modules/laytpl.html 
+-->
+
+
+<script src="../../../../layui.js?v=1"></script>
+<script>
+layui.use(['layim', 'flow'], function(){
+  var layim = layui.layim
+  ,layer = layui.layer
+  ,laytpl = layui.laytpl
+  ,$ = layui.jquery
+  ,flow = layui.flow;
+
+  var cache = {}; //用于临时记录请求到的数据
+
+  //请求消息
+  var renderMsg = function(page, callback){
+    
+    //实际部署时,请将下述 getmsg.json 改为你的接口地址
+    
+    $.get('getmsg.json', {
+      page: page || 1
+    }, function(res){
+      if(res.code != 0){
+        return layer.msg(res.msg);
+      }
+
+      //记录来源用户信息
+      layui.each(res.data, function(index, item){
+        cache[item.from] = item.user;
+      });
+
+      callback && callback(res.data, res.pages);
+    });
+  };
+
+  //消息信息流
+  flow.load({
+    elem: '#LAY_view' //流加载容器
+    ,isAuto: false
+    ,end: '<li class="layim-msgbox-tips">暂无更多新消息</li>'
+    ,done: function(page, next){ //加载下一页
+      renderMsg(page, function(data, pages){
+        var html = laytpl(LAY_tpl.value).render({
+          data: data
+          ,page: page
+        });
+        next(html, page < pages);
+      });
+    }
+  });
+
+  //打开页面即把消息标记为已读
+  /*
+  $.post('/message/read', {
+    type: 1
+  });
+  */
+
+  //操作
+  var active = {
+    //同意
+    agree: function(othis){
+      var li = othis.parents('li')
+      ,uid = li.data('uid')
+      ,from_group = li.data('fromGroup')
+      ,user = cache[uid];
+
+      //选择分组
+      parent.layui.layim.setFriendGroup({
+        type: 'friend'
+        ,username: user.username
+        ,avatar: user.avatar
+        ,group: parent.layui.layim.cache().friend //获取好友分组数据
+        ,submit: function(group, index){
+          
+          //将好友追加到主面板
+          parent.layui.layim.addList({
+            type: 'friend'
+            ,avatar: user.avatar //好友头像
+            ,username: user.username //好友昵称
+            ,groupid: group //所在的分组id
+            ,id: uid //好友ID
+            ,sign: user.sign //好友签名
+          });
+          parent.layer.close(index);
+          othis.parent().html('已同意');
+        
+        
+          //实际部署时,请开启下述注释,并改成你的接口地址
+          /*
+          $.post('/im/agreeFriend', {
+            uid: uid //对方用户ID
+            ,from_group: from_group //对方设定的好友分组
+            ,group: group //我设定的好友分组
+          }, function(res){
+            if(res.code != 0){
+              return layer.msg(res.msg);
+            }
+
+            //将好友追加到主面板
+            parent.layui.layim.addList({
+              type: 'friend'
+              ,avatar: user.avatar //好友头像
+              ,username: user.username //好友昵称
+              ,groupid: group //所在的分组id
+              ,id: uid //好友ID
+              ,sign: user.sign //好友签名
+            });
+            parent.layer.close(index);
+            othis.parent().html('已同意');
+          });
+          */
+          
+        }
+      });
+    }
+
+    //拒绝
+    ,refuse: function(othis){
+      var li = othis.parents('li')
+      ,uid = li.data('uid');
+
+      layer.confirm('确定拒绝吗?', function(index){
+        $.post('/im/refuseFriend', {
+          uid: uid //对方用户ID
+        }, function(res){
+          if(res.code != 0){
+            return layer.msg(res.msg);
+          }
+          layer.close(index);
+          othis.parent().html('<em>已拒绝</em>');
+        });
+      });
+    }
+  };
+
+  $('body').on('click', '.layui-btn', function(){
+    var othis = $(this), type = othis.data('type');
+    active[type] ? active[type].call(this, othis) : '';
+  });
+});
+</script>
+</body>
+</html>

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
public/static/echoui/layui/css/modules/layim/layim.css


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
public/static/echoui/layui/css/modules/layim/mobile/layim.css


BIN
public/static/echoui/layui/css/modules/layim/skin/1.jpg


BIN
public/static/echoui/layui/css/modules/layim/skin/2.jpg


BIN
public/static/echoui/layui/css/modules/layim/skin/3.jpg


BIN
public/static/echoui/layui/css/modules/layim/skin/4.jpg


BIN
public/static/echoui/layui/css/modules/layim/skin/5.jpg


BIN
public/static/echoui/layui/css/modules/layim/skin/logo.jpg


BIN
public/static/echoui/layui/css/modules/layim/voice/default.mp3


BIN
public/static/echoui/layui/font/iconfont.eot


Datei-Diff unterdrückt, da er zu groß ist
+ 25 - 0
public/static/echoui/layui/font/iconfont.svg


BIN
public/static/echoui/layui/font/iconfont.ttf


BIN
public/static/echoui/layui/font/iconfont.woff


BIN
public/static/echoui/layui/font/iconfont.woff2


BIN
public/static/echoui/layui/images/face/0.gif


BIN
public/static/echoui/layui/images/face/1.gif


BIN
public/static/echoui/layui/images/face/10.gif


BIN
public/static/echoui/layui/images/face/11.gif


BIN
public/static/echoui/layui/images/face/12.gif


BIN
public/static/echoui/layui/images/face/13.gif


BIN
public/static/echoui/layui/images/face/14.gif


BIN
public/static/echoui/layui/images/face/15.gif


BIN
public/static/echoui/layui/images/face/16.gif


BIN
public/static/echoui/layui/images/face/17.gif


BIN
public/static/echoui/layui/images/face/18.gif


BIN
public/static/echoui/layui/images/face/19.gif


BIN
public/static/echoui/layui/images/face/2.gif


BIN
public/static/echoui/layui/images/face/20.gif


BIN
public/static/echoui/layui/images/face/21.gif


BIN
public/static/echoui/layui/images/face/22.gif


BIN
public/static/echoui/layui/images/face/23.gif


BIN
public/static/echoui/layui/images/face/24.gif


BIN
public/static/echoui/layui/images/face/25.gif


BIN
public/static/echoui/layui/images/face/26.gif


BIN
public/static/echoui/layui/images/face/27.gif


BIN
public/static/echoui/layui/images/face/28.gif


BIN
public/static/echoui/layui/images/face/29.gif


BIN
public/static/echoui/layui/images/face/3.gif


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.