liche update for admin goods list sort

This commit is contained in:
xxb
2021-08-31 17:43:56 +08:00
committed by lccsw
parent a7bef448ef
commit 04ecb8e0d3
3 changed files with 252 additions and 13 deletions
+48 -7
View File
@@ -31,27 +31,33 @@ class Goods extends HD_Controller
$params = $this->input->get();
$page = $params['page'] = $params['page'] ? intval($params['page']) : 1;
$size = $params['size'] = $params['size'] ? intval($params['size']) : 20;
$where = $autoList = array();
$where = $where_fine = $autoList = array();
$search_type = 0;
if ($params['brand_id']) {
$where['brand_id'] = $params['brand_id'];
$where_fine['brand_id'] = $params['brand_id'];
$autoList[2] = $this->mdAutoSeries->select(array('status' => 1, 'brand_id' => $params['brand_id']), 'id desc', 0, 0, 'id,name');
}
if ($params['s_id']) {
$where['s_id'] = $params['s_id'];
$where_fine['s_id'] = $params['s_id'];
$autoList[3] = $this->mdAutoAttr->select(array('type' => 1, 's_id' => $params['s_id']), 'id desc', 0, 0, 'id,title as name');
}
if ($params['v_id']) {
$where['v_id'] = $params['v_id'];
$where_fine['v_id'] = $params['v_id'];
}
//车身颜色
if ($params['cor_id']) {
$where['cor_id'] = $params['cor_id'];
$where_fine['cor_id'] = $params['cor_id'];
} else {
$params['cor_id'] = '';
}
if($params['addr_id']){
$where['addr_id'] = $params['addr_id'];
$where_fine['addr_id'] = $params['addr_id'];
} else if($params['city_id']){
$where_addr = array('status>0' => null, 'city_id' => $params['city_id']);
if($params['county_id']){
@@ -63,8 +69,10 @@ class Goods extends HD_Controller
if($rows_addr){
$str_ids = implode(',', array_column($rows_addr, 'id'));
$where["addr_id in ({$str_ids})"] = null;
$where_fine["addr_id in ({$str_ids})"] = null;
} else {
$where['addr_id'] = -1;
$where_fine['addr_id'] = -1;
}
} else {
$params['city_id'] = '';
@@ -73,29 +81,62 @@ class Goods extends HD_Controller
}
if(strlen($params['status'])>0){
$where['status'] = $params['status'];
$where_fine['m.status'] = $params['status'];
} else {
$params['status'] = '';
}
if($params['vin']){
$where["vin like '%{$params['vin']}%'"] = null;
$where_fine["vin like '%{$params['vin']}%'"] = null;
}
//精品筛选
if($params['fine_ids']){
$fine_count = substr_count($params['fine_ids'], ',') + 1;
$sql = "select item_id from lc_items_relate where type=1 and status=1 and type_id in ({$params['fine_ids']}) group by item_id having count(item_id)={$fine_count}";
$where["id in ($sql)"] = null;
$fine_num = substr_count($params['fine_ids'], ',') + 1;
$where_fine["type_id in ({$params['fine_ids']})"] = null;
$where_fine["having"] = "fine_num={$fine_num}";
$search_type = 1;
} else {
$params['fine_ids'] = '';
}
$order = 'id';
if('fine_num' == $params['order']){
$order = $params['order'];
$search_type = 1;
} else if($params['order']){
$order = $params['order'];
} else {
$params['order'] = $order;
}
$sort = 'desc';
if($params['sort']){
$sort = $params['sort'];
} else {
$params['sort'] = $sort;
}
$autoList[1] = $this->mdAutoBrand->select(array('status' => 1), 'id desc', 0, 0, 'id,name');
$count = $this->mdItems->count($where);
if(1 == $search_type){
//精品筛选
$count = $this->mdItems->count_fine($where_fine);
} else {
$count = $this->mdItems->count($where);
}
$lists = array();
$fine_ids = array();
if ($count) {
$fileds = 'id,brand_id,s_id,vin,v_id,cor_id,incor_id,in_time,addr_id';
$rows = $this->mdItems->select($where, 'id desc', $page, $size, $fileds);
if(1 == $search_type){
//精品筛选
$fileds = 'id,brand_id,s_id,vin,v_id,cor_id,incor_id,in_time,addr_id,count(type_id) as fine_num';
$orderby = "{$order} {$sort}";
$rows = $this->mdItems->select_fine($where_fine, $orderby, $page, $size, $fileds);
} else {
$fileds = 'id,brand_id,s_id,vin,v_id,cor_id,incor_id,in_time,addr_id';
$orderby = "{$order} {$sort}";
$rows = $this->mdItems->select($where, $orderby, $page, $size, $fileds);
}
$brand_id_arr = array();
$addr_ids = array();
$ids = array();
+127 -6
View File
@@ -35,10 +35,63 @@
white-space: normal;
line-height: 1.4;
}
.order-on {
border-bottom: 2px solid #e61773;
height: 40px;
}
.order-none{
height: 38px;
}
.order {
width: 150px;
display: table-cell;
position: relative;
}
.order a{
display: block;
overflow: hidden;
width: 100%;
height: 30px;
line-height: 30px;
text-align: center;
color: #5e5e5e;
}
.angle_top {
content: '';
width: 0;
height: 0;
display: block;
border-style: solid;
border-width: 0 6px 6px;
border-color: transparent transparent #5e5e5e;
position: absolute;
transform: rotate(180deg);
bottom: 14px;
right: 17px;
}
.angle_bottom {
content: '';
width: 0;
height: 0;
display: block;
border-style: solid;
border-width: 0 6px 6px;
border-color: transparent transparent #5e5e5e;
position: absolute;
top: 10px;
right: 17px;
}
</style>
<div class="coms-table-wrap mt10">
<form class=" form-search coms-table-hd clearfix no-border" onsubmit="return false"
action="/items/goods/goods">
<input title="排序字段" type="hidden" name="order" id="order" v-model="params.order"/>
<input title="排序方向" type="hidden" name="sort" id="sort" v-model="params.sort"/>
<div class="am-form am-form-horizontal">
<div class="am-form-group fl">
<label class="am-para-label w100">车型:</label>
@@ -168,12 +221,60 @@
<table class="am-table am-table-bordered">
<thead>
<tr>
<th width="5%"><span>ID</span></th>
<th width="25%"><span>车辆</span></th>
<th width="15%"><span>车架号</span></th>
<th width="15%"><span>存放地</span></th>
<th width="15%"><span>入库日期</span></th>
<th width="15%"><span>精品加装</span></th>
<th width="5%">
<span :class="'order'+('id'==params.order?' order-on':' order-none')">
<a href="javascript:void(0)" @click="set_order('id')">
<span class="mr10">ID</span>
<i class="angle_top" v-if="'desc'==params.sort||'id'!=params.order"></i>
<i class="angle_bottom" v-if="'asc'==params.sort||'id'!=params.order"></i>
</a>
</span>
</th>
<th width="25%">
<span :class="'order'+('brand_id'==params.order?' order-on':' order-none')">
<a href="javascript:void(0)" @click="set_order('brand_id')">
<span class="mr10">车辆</span>
<i class="angle_top" v-if="'desc'==params.sort||'brand_id'!=params.order"></i>
<i class="angle_bottom" v-if="'asc'==params.sort||'brand_id'!=params.order"></i>
</a>
</span>
</th>
<th width="15%">
<span :class="'order'+('vin'==params.order?' order-on':' order-none')">
<a href="javascript:void(0)" @click="set_order('vin')">
<span>车架号</span>
<i class="angle_top" v-if="'desc'==params.sort||'vin'!=params.order"></i>
<i class="angle_bottom" v-if="'asc'==params.sort||'vin'!=params.order"></i>
</a>
</span>
</th>
<th width="15%">
<span :class="'order'+('addr_id'==params.order?' order-on':' order-none')">
<a href="javascript:void(0)" @click="set_order('addr_id')">
<span>存放地</span>
<i class="angle_top" v-if="'desc'==params.sort||'addr_id'!=params.order"></i>
<i class="angle_bottom" v-if="'asc'==params.sort||'addr_id'!=params.order"></i>
</a>
</span>
</th>
<th width="15%">
<span :class="'order'+('in_time'==params.order?' order-on':' order-none')">
<a href="javascript:void(0)" @click="set_order('in_time')">
<span>入库日期</span>
<i class="angle_top" v-if="'desc'==params.sort||'in_time'!=params.order"></i>
<i class="angle_bottom" v-if="'asc'==params.sort||'in_time'!=params.order"></i>
</a>
</span>
</th>
<th width="15%">
<span :class="'order'+('fine_num'==params.order?' order-on':' order-none')">
<a href="javascript:void(0)" @click="set_order('fine_num')">
<span>精品加装</span>
<i class="angle_top" v-if="'desc'==params.sort||'fine_num'!=params.order"></i>
<i class="angle_bottom" v-if="'asc'==params.sort||'fine_num'!=params.order"></i>
</a>
</span>
</th>
<th width=""><span>操作</span></th>
</tr>
</thead>
@@ -541,6 +642,26 @@
vm.attrs_cor = [];
vm.params.cor_id = '';
}
},
set_order:function(order){
var vm = this;
var sort = vm.params.sort;
if(vm.params.order == order){
if(vm.params.sort == 'desc'){
sort = 'asc';
} else {
sort = 'desc';
}
} else {
vm.params.order = order;
sort = 'desc';
}
vm.params.order = order;
vm.params.sort = sort;
$('#sort').val(sort);
$('#order').val(order);
$('.form-search').submit();
}
},
watch:{
+77
View File
@@ -14,4 +14,81 @@ class Items_model extends HD_Model
{
parent::__construct($this->table_name, 'default');
}
/**
* 精品筛选数量
* @param array $where
* @return mixed
*/
function count_fine($where = array()){
$join_on = "j.item_id=m.id and j.type=1 and j.status=1";
$this->db->from("lc_items as m");
$this->db->join("lc_items_relate as j", $join_on, 'left');
$this->db->group_by('id');
if($where['having']){
$this->db->having($where['having']);
unset($where['having']);
}
if($where)
{
$this->db->where($where);
}
$this->db->select('id, count(type_id) as fine_num', false);
return $this->db->count_all_results();
}
/**
* 精品筛选数据列表
* @param array $where
* @param string $order
* @param int $page
* @param int $page_size
* @param string $select
* @return mixed
*/
function select_fine($where = array(), $order = '', $page = 0, $page_size = 20, $select = ''){
$join_on = "j.item_id=m.id and j.type=1 and j.status=1";
$this->db->from("lc_items as m");
$this->db->join("lc_items_relate as j", $join_on, 'left');
$this->db->group_by('id');
if($where['having']){
$this->db->having($where['having']);
unset($where['having']);
}
if($select)
{
$this->db->select($select, false);
}
if($where)
{
$this->db->where($where);
}
if($order)
{
$this->db->order_by($order);
}
if($page)
{
$offset = ($page - 1) * $page_size;
$limit = $page_size;
}
else
{
$offset = null;
$limit = null;
}
return $this->db->get(null, $limit, $offset)->result_array();
}
}