正在显示
7 个修改的文件
包含
107 行增加
和
7 行删除
@@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
3 | namespace app\admin\controller; | 3 | namespace app\admin\controller; |
4 | 4 | ||
5 | use app\common\controller\Backend; | 5 | use app\common\controller\Backend; |
6 | +use think\Db; | ||
6 | 7 | ||
7 | /** | 8 | /** |
8 | * 职位管理 | 9 | * 职位管理 |
@@ -60,7 +61,7 @@ class Job extends Backend | @@ -60,7 +61,7 @@ class Job extends Backend | ||
60 | ->paginate($limit); | 61 | ->paginate($limit); |
61 | 62 | ||
62 | foreach ($list as $row) { | 63 | foreach ($list as $row) { |
63 | - $row->visible(['id','job_name','cover','images','video','type','factory_price','subsidy_price','factory_price_total','salary','people_num','address']); | 64 | + $row->visible(['id','job_name','cover','images','video','type','factory_price','subsidy_price','factory_price_total','salary','people_num','address','weigh','is_top']); |
64 | 65 | ||
65 | } | 66 | } |
66 | 67 | ||
@@ -71,4 +72,43 @@ class Job extends Backend | @@ -71,4 +72,43 @@ class Job extends Backend | ||
71 | return $this->view->fetch(); | 72 | return $this->view->fetch(); |
72 | } | 73 | } |
73 | 74 | ||
75 | + /** | ||
76 | + * 置顶 | ||
77 | + */ | ||
78 | + public function top($ids = null) | ||
79 | + { | ||
80 | + if($ids) { | ||
81 | + $row = $this->model->get($ids); | ||
82 | + if (!$row) { | ||
83 | + $this->error(__('No Results were found')); | ||
84 | + } | ||
85 | + $adminIds = $this->getDataLimitAdminIds(); | ||
86 | + if (is_array($adminIds)) { | ||
87 | + if (!in_array($row[$this->dataLimitField], $adminIds)) { | ||
88 | + $this->error(__('You have no permission')); | ||
89 | + } | ||
90 | + } | ||
91 | + $params = $this->request->param(); | ||
92 | + $params['top_time'] = $params['is_top'] == '1' ? time() : 0; | ||
93 | + Db::startTrans(); | ||
94 | + try { | ||
95 | + $result = $row->allowField(true)->save($params); | ||
96 | + Db::commit(); | ||
97 | + } catch (ValidateException $e) { | ||
98 | + Db::rollback(); | ||
99 | + $this->error($e->getMessage()); | ||
100 | + } catch (PDOException $e) { | ||
101 | + Db::rollback(); | ||
102 | + $this->error($e->getMessage()); | ||
103 | + } catch (\think\Exception $e) { | ||
104 | + Db::rollback(); | ||
105 | + $this->error($e->getMessage()); | ||
106 | + } | ||
107 | + if(!$result) { | ||
108 | + $this->error('操作失败'); | ||
109 | + } | ||
110 | + $this->success('操作成功'); | ||
111 | + } | ||
112 | + } | ||
113 | + | ||
74 | } | 114 | } |
@@ -28,7 +28,12 @@ class Job extends Model | @@ -28,7 +28,12 @@ class Job extends Model | ||
28 | 'type_text' | 28 | 'type_text' |
29 | ]; | 29 | ]; |
30 | 30 | ||
31 | - | 31 | + protected static function init() |
32 | + { | ||
33 | + self::afterInsert(function ($row) { | ||
34 | + $row->save(['weigh' => $row['id']]); | ||
35 | + }); | ||
36 | + } | ||
32 | 37 | ||
33 | public function getTypeList() | 38 | public function getTypeList() |
34 | { | 39 | { |
@@ -126,6 +126,12 @@ | @@ -126,6 +126,12 @@ | ||
126 | <input id="c-user_ids" data-source="user/user/index" data-multiple="true" data-field="nickname" data-params='{"isTree":1}' class="form-control selectpage" name="row[user_ids]" type="text" value=""> | 126 | <input id="c-user_ids" data-source="user/user/index" data-multiple="true" data-field="nickname" data-params='{"isTree":1}' class="form-control selectpage" name="row[user_ids]" type="text" value=""> |
127 | </div> | 127 | </div> |
128 | </div> | 128 | </div> |
129 | + <div class="form-group"> | ||
130 | + <label for="c-weigh" class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label> | ||
131 | + <div class="col-xs-12 col-sm-8"> | ||
132 | + <input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="0"> | ||
133 | + </div> | ||
134 | + </div> | ||
129 | <div class="form-group layer-footer"> | 135 | <div class="form-group layer-footer"> |
130 | <label class="control-label col-xs-12 col-sm-2"></label> | 136 | <label class="control-label col-xs-12 col-sm-2"></label> |
131 | <div class="col-xs-12 col-sm-8"> | 137 | <div class="col-xs-12 col-sm-8"> |
@@ -126,6 +126,12 @@ | @@ -126,6 +126,12 @@ | ||
126 | <input id="c-user_ids" data-source="user/user/index" data-multiple="true" data-field="nickname" data-params='{"isTree":1}' class="form-control selectpage" name="row[user_ids]" type="text" value="{$row.user_ids|htmlentities}"> | 126 | <input id="c-user_ids" data-source="user/user/index" data-multiple="true" data-field="nickname" data-params='{"isTree":1}' class="form-control selectpage" name="row[user_ids]" type="text" value="{$row.user_ids|htmlentities}"> |
127 | </div> | 127 | </div> |
128 | </div> | 128 | </div> |
129 | + <div class="form-group"> | ||
130 | + <label for="c-weigh" class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label> | ||
131 | + <div class="col-xs-12 col-sm-8"> | ||
132 | + <input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="{$row.weigh}"> | ||
133 | + </div> | ||
134 | + </div> | ||
129 | <div class="form-group layer-footer"> | 135 | <div class="form-group layer-footer"> |
130 | <label class="control-label col-xs-12 col-sm-2"></label> | 136 | <label class="control-label col-xs-12 col-sm-2"></label> |
131 | <div class="col-xs-12 col-sm-8"> | 137 | <div class="col-xs-12 col-sm-8"> |
@@ -223,7 +223,7 @@ class Index extends Api | @@ -223,7 +223,7 @@ class Index extends Api | ||
223 | } | 223 | } |
224 | $data = Job::where($where) | 224 | $data = Job::where($where) |
225 | ->field("*,{$distance} distance") | 225 | ->field("*,{$distance} distance") |
226 | - ->order(['distance'=>'asc','createtime'=>'desc']) | 226 | + ->order(['is_top'=>'desc','top_time'=>'desc','distance'=>'asc','weigh'=>'asc']) |
227 | ->paginate($page_num,false,['page'=>$page]) | 227 | ->paginate($page_num,false,['page'=>$page]) |
228 | ->each(function($v){ | 228 | ->each(function($v){ |
229 | $v->visible(['id','cover','job_name','salary','people_num','factory_price_total','factory_price','subsidy_price']); | 229 | $v->visible(['id','cover','job_name','salary','people_num','factory_price_total','factory_price','subsidy_price']); |
@@ -308,7 +308,7 @@ class Index extends Api | @@ -308,7 +308,7 @@ class Index extends Api | ||
308 | ->join('job_collect jc','jc.job_id = j.id and user_id = '.$this->auth->id) | 308 | ->join('job_collect jc','jc.job_id = j.id and user_id = '.$this->auth->id) |
309 | ->where($where) | 309 | ->where($where) |
310 | ->field('j.*') | 310 | ->field('j.*') |
311 | - ->order(['jc.createtime'=>'desc','createtime'=>'desc']) | 311 | + ->order(['j.is_top'=>'desc','j.top_time'=>'desc','jc.createtime'=>'desc','weigh'=>'asc']) |
312 | ->paginate($page_num,false,['page'=>$page]) | 312 | ->paginate($page_num,false,['page'=>$page]) |
313 | ->each(function($v){ | 313 | ->each(function($v){ |
314 | $v->visible(['id','cover','job_name','salary','people_num','factory_price_total','factory_price','subsidy_price']); | 314 | $v->visible(['id','cover','job_name','salary','people_num','factory_price_total','factory_price','subsidy_price']); |
@@ -21,7 +21,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin | @@ -21,7 +21,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin | ||
21 | table.bootstrapTable({ | 21 | table.bootstrapTable({ |
22 | url: $.fn.bootstrapTable.defaults.extend.index_url, | 22 | url: $.fn.bootstrapTable.defaults.extend.index_url, |
23 | pk: 'id', | 23 | pk: 'id', |
24 | - sortName: 'id', | 24 | + sortName: 'is_top desc,top_time desc,weigh', |
25 | columns: [ | 25 | columns: [ |
26 | [ | 26 | [ |
27 | {checkbox: true}, | 27 | {checkbox: true}, |
@@ -37,7 +37,49 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin | @@ -37,7 +37,49 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin | ||
37 | {field: 'salary', title: __('Salary'), operate: 'LIKE'}, | 37 | {field: 'salary', title: __('Salary'), operate: 'LIKE'}, |
38 | {field: 'people_num', title: __('People_num')}, | 38 | {field: 'people_num', title: __('People_num')}, |
39 | {field: 'address', title: __('Address'), operate: 'LIKE'}, | 39 | {field: 'address', title: __('Address'), operate: 'LIKE'}, |
40 | - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | 40 | + {field: 'weigh', title: __('Weigh')}, |
41 | + //操作栏,默认有编辑、删除或排序按钮,可自定义配置buttons来扩展按钮 | ||
42 | + { | ||
43 | + field: 'operate', | ||
44 | + title: __('Operate'), | ||
45 | + table: table, | ||
46 | + events: Table.api.events.operate, | ||
47 | + buttons: [ | ||
48 | + { | ||
49 | + name: 'top', | ||
50 | + text: '置顶', | ||
51 | + title: '置顶', | ||
52 | + classname: 'btn btn-xs btn-primary btn-ajax', | ||
53 | + icon: 'fa fa-long-arrow-up', | ||
54 | + url: 'job/top?job_id={id}&is_top=1', | ||
55 | + visible: function (row) { | ||
56 | + if(row.is_top == '0'){ | ||
57 | + return true; | ||
58 | + } | ||
59 | + }, | ||
60 | + success: function (data) { | ||
61 | + table.bootstrapTable('refresh'); | ||
62 | + } | ||
63 | + }, | ||
64 | + { | ||
65 | + name: 'top', | ||
66 | + text: '取消置顶', | ||
67 | + title: '取消置顶', | ||
68 | + classname: 'btn btn-xs btn-danger btn-ajax', | ||
69 | + icon: 'fa fa-long-arrow-down', | ||
70 | + url: 'job/top?job_id={id}&is_top=0', | ||
71 | + visible: function (row) { | ||
72 | + if(row.is_top == '1'){ | ||
73 | + return true; | ||
74 | + } | ||
75 | + }, | ||
76 | + success: function (data) { | ||
77 | + table.bootstrapTable('refresh'); | ||
78 | + } | ||
79 | + } | ||
80 | + ], | ||
81 | + formatter: Table.api.formatter.operate | ||
82 | + } | ||
41 | ] | 83 | ] |
42 | ] | 84 | ] |
43 | }); | 85 | }); |
-
请 注册 或 登录 后发表评论