作者 何书鹏
1 个管道 的构建 通过 耗费 7 秒

职位置顶

... ... @@ -3,6 +3,7 @@
namespace app\admin\controller;
use app\common\controller\Backend;
use think\Db;
/**
* 职位管理
... ... @@ -60,7 +61,7 @@ class Job extends Backend
->paginate($limit);
foreach ($list as $row) {
$row->visible(['id','job_name','cover','images','video','type','factory_price','subsidy_price','factory_price_total','salary','people_num','address']);
$row->visible(['id','job_name','cover','images','video','type','factory_price','subsidy_price','factory_price_total','salary','people_num','address','weigh','is_top']);
}
... ... @@ -71,4 +72,43 @@ class Job extends Backend
return $this->view->fetch();
}
/**
* 置顶
*/
public function top($ids = null)
{
if($ids) {
$row = $this->model->get($ids);
if (!$row) {
$this->error(__('No Results were found'));
}
$adminIds = $this->getDataLimitAdminIds();
if (is_array($adminIds)) {
if (!in_array($row[$this->dataLimitField], $adminIds)) {
$this->error(__('You have no permission'));
}
}
$params = $this->request->param();
$params['top_time'] = $params['is_top'] == '1' ? time() : 0;
Db::startTrans();
try {
$result = $row->allowField(true)->save($params);
Db::commit();
} catch (ValidateException $e) {
Db::rollback();
$this->error($e->getMessage());
} catch (PDOException $e) {
Db::rollback();
$this->error($e->getMessage());
} catch (\think\Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
if(!$result) {
$this->error('操作失败');
}
$this->success('操作成功');
}
}
}
... ...
... ... @@ -21,5 +21,6 @@ return [
'Lat' => '纬度',
'User_ids' => '哪些人及其下级可查看',
'Createtime' => '创建时间',
'Updatetime' => '更新时间'
'Updatetime' => '更新时间',
'Weigh' => '权重',
];
... ...
... ... @@ -28,7 +28,12 @@ class Job extends Model
'type_text'
];
protected static function init()
{
self::afterInsert(function ($row) {
$row->save(['weigh' => $row['id']]);
});
}
public function getTypeList()
{
... ...
... ... @@ -126,6 +126,12 @@
<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="">
</div>
</div>
<div class="form-group">
<label for="c-weigh" class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="0">
</div>
</div>
<div class="form-group layer-footer">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8">
... ...
... ... @@ -126,6 +126,12 @@
<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}">
</div>
</div>
<div class="form-group">
<label for="c-weigh" class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="{$row.weigh}">
</div>
</div>
<div class="form-group layer-footer">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8">
... ...
... ... @@ -223,7 +223,7 @@ class Index extends Api
}
$data = Job::where($where)
->field("*,{$distance} distance")
->order(['distance'=>'asc','createtime'=>'desc'])
->order(['is_top'=>'desc','top_time'=>'desc','distance'=>'asc','weigh'=>'asc'])
->paginate($page_num,false,['page'=>$page])
->each(function($v){
$v->visible(['id','cover','job_name','salary','people_num','factory_price_total','factory_price','subsidy_price']);
... ... @@ -308,7 +308,7 @@ class Index extends Api
->join('job_collect jc','jc.job_id = j.id and user_id = '.$this->auth->id)
->where($where)
->field('j.*')
->order(['jc.createtime'=>'desc','createtime'=>'desc'])
->order(['j.is_top'=>'desc','j.top_time'=>'desc','jc.createtime'=>'desc','weigh'=>'asc'])
->paginate($page_num,false,['page'=>$page])
->each(function($v){
$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
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
sortName: 'is_top desc,top_time desc,weigh',
columns: [
[
{checkbox: true},
... ... @@ -37,7 +37,49 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'salary', title: __('Salary'), operate: 'LIKE'},
{field: 'people_num', title: __('People_num')},
{field: 'address', title: __('Address'), operate: 'LIKE'},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
{field: 'weigh', title: __('Weigh')},
//操作栏,默认有编辑、删除或排序按钮,可自定义配置buttons来扩展按钮
{
field: 'operate',
title: __('Operate'),
table: table,
events: Table.api.events.operate,
buttons: [
{
name: 'top',
text: '置顶',
title: '置顶',
classname: 'btn btn-xs btn-primary btn-ajax',
icon: 'fa fa-long-arrow-up',
url: 'job/top?job_id={id}&is_top=1',
visible: function (row) {
if(row.is_top == '0'){
return true;
}
},
success: function (data) {
table.bootstrapTable('refresh');
}
},
{
name: 'top',
text: '取消置顶',
title: '取消置顶',
classname: 'btn btn-xs btn-danger btn-ajax',
icon: 'fa fa-long-arrow-down',
url: 'job/top?job_id={id}&is_top=0',
visible: function (row) {
if(row.is_top == '1'){
return true;
}
},
success: function (data) {
table.bootstrapTable('refresh');
}
}
],
formatter: Table.api.formatter.operate
}
]
]
});
... ...