作者 何书鹏
1 个管道 的构建 通过 耗费 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 }
@@ -21,5 +21,6 @@ return [ @@ -21,5 +21,6 @@ return [
21 'Lat' => '纬度', 21 'Lat' => '纬度',
22 'User_ids' => '哪些人及其下级可查看', 22 'User_ids' => '哪些人及其下级可查看',
23 'Createtime' => '创建时间', 23 'Createtime' => '创建时间',
24 - 'Updatetime' => '更新时间' 24 + 'Updatetime' => '更新时间',
  25 + 'Weigh' => '权重',
25 ]; 26 ];
@@ -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 });