Merge remote-tracking branch 'origin/master'

This commit is contained in:
xurongyao 2018-09-11 16:59:07 +08:00
commit 65cd47571a
3 changed files with 460 additions and 425 deletions

View File

@ -8,6 +8,7 @@ use app\admin\model\store\StoreProductAttr;
use app\admin\model\store\StoreProductAttrResult; use app\admin\model\store\StoreProductAttrResult;
use app\admin\model\store\StoreProductRelation; use app\admin\model\store\StoreProductRelation;
use app\admin\model\system\SystemConfig; use app\admin\model\system\SystemConfig;
use service\JsonService;
use traits\CurdControllerTrait; use traits\CurdControllerTrait;
use service\UtilService as Util; use service\UtilService as Util;
use service\JsonService as Json; use service\JsonService as Json;
@ -41,43 +42,87 @@ class StoreProduct extends AuthController
*/ */
public function index() public function index()
{ {
$where = Util::getMore([
['type',$this->request->param('type')],
['cate_id',''],
['is_show',''],
['store_name',''],
['sales',''],
['export',0]
],$this->request);
$this->assign('cate',CategoryModel::getTierList());
$type=$this->request->param('type');
//获取分类
$this->assign('cate',CategoryModel::getTierList());
//出售中产品 //出售中产品
$data = ['is_show'=>1,'is_del'=>0]; $onsale = ProductModel::where(['is_show'=>1,'is_del'=>0])->count();
$onsale = ProductModel::where($data)->count();
//待上架产品 //待上架产品
$data = ['is_show'=>0,'is_del'=>0]; $forsale = ProductModel::where(['is_show'=>0,'is_del'=>0])->count();
$forsale = ProductModel::where($data)->count();
//仓库中产品 //仓库中产品
$data = ['is_del'=>0]; $warehouse = ProductModel::where(['is_del'=>0])->count();
$warehouse = ProductModel::where($data)->count();
//已经售馨产品 //已经售馨产品
$data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>0]; $outofstock = ProductModel::getModelObject()->where(ProductModel::setData(4))->count();
$outofstock = ProductModel::alias('p')
->join('StoreProductAttrValue pav','p.id=pav.product_id','LEFT')
->where($data)->count();
//警戒库存 //警戒库存
$data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>['elt',1]]; $policeforce =ProductModel::getModelObject()->where(ProductModel::setData(5))->count();
$policeforce = ProductModel::alias('p')
->join('StoreProductAttrValue pav','p.id=pav.product_id','LEFT')
->where($data)->count();
//回收站 //回收站
$data = ['is_del'=>1]; $recycle = ProductModel::where(['is_del'=>1])->count();
$recycle = ProductModel::where($data)->count();
$this->assign(compact('where','onsale','forsale','warehouse','outofstock','policeforce','recycle')); $this->assign(compact('type','onsale','forsale','warehouse','outofstock','policeforce','recycle'));
$this->assign(ProductModel::systemPage($where,$this->adminInfo));
return $this->fetch(); return $this->fetch();
} }
/**
* 异步查找产品
*
* @return json
*/
public function product_ist(){
$where=Util::getMore([
['page',1],
['limit',20],
['store_name',''],
['cate_id',''],
['excel',0],
['type',$this->request->param('type')]
]);
return JsonService::successlayui(ProductModel::ProductList($where));
}
/**
* 设置单个产品上架|下架
*
* @return json
*/
public function set_show($is_show='',$id=''){
($is_show=='' || $id=='') && JsonService::fail('缺少参数');
$res=ProductModel::where(['id'=>$id])->update(['is_show'=>(int)$is_show]);
if($res){
return JsonService::successful($is_show==1 ? '上架成功':'下架成功');
}else{
return JsonService::fail($is_show==1 ? '上架失败':'下架失败');
}
}
/**
* 快速编辑
*
* @return json
*/
public function set_product($field='',$id='',$value=''){
$field=='' || $id=='' || $value=='' && JsonService::fail('缺少参数');
if(ProductModel::where(['id'=>$id])->update([$field=>$value]))
return JsonService::successful('保存成功');
else
return JsonService::fail('保存失败');
}
/**
* 设置批量产品上架
*
* @return json
*/
public function product_show(){
$post=Util::postMore([
['ids',[]]
]);
if(empty($post['ids'])){
return JsonService::fail('请选择需要上架的产品');
}else{
$res=ProductModel::where('id','in',$post['ids'])->update(['is_show'=>1]);
if($res)
return JsonService::successful('上架成功');
else
return JsonService::fail('上架失败');
}
}
/** /**
* 显示创建资源表单页. * 显示创建资源表单页.
* *

View File

@ -27,82 +27,101 @@ class StoreProduct extends ModelBasic
use ModelTrait; use ModelTrait;
/** /**
* @param $where * 获取连表查询条件
* @param $type
* @return array * @return array
*/ */
public static function systemPage($where,$adminInfo){ public static function setData($type){
$model = new self; switch ((int)$type){
$model = $model->alias('p');
if($where['store_name'] != '') $model = $model->where('p.store_name|p.keyword|p.id','LIKE',"%$where[store_name]%");
if($where['cate_id'] != '') $model = $model->where('p.cate_id','LIKE',"%$where[cate_id]%");
switch ($where['type']){
case 1: case 1:
$data = ['p.is_show'=>1,'is_del'=>0]; $data = ['p.is_show'=>1,'p.is_del'=>0];
$model = $model->where($data);
break; break;
case 2: case 2:
$data = ['p.is_show'=>0,'is_del'=>0]; $data = ['p.is_show'=>0,'p.is_del'=>0];
$model = $model->where($data);
break; break;
case 3: case 3:
$data = ['p.is_del'=>0]; $data = ['p.is_del'=>0];
$model = $model->where($data);
break; break;
case 4: case 4:
$data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>0]; $data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>0];
$model = $model->where($data);
break; break;
case 5: case 5:
$data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>['elt',1]]; $data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>['elt',1]];
$model = $model->where($data);
break; break;
case 6: case 6:
$data = ['p.is_del'=>1]; $data = ['p.is_del'=>1];
$model = $model->where($data);
break; break;
}; };
$model = $model->field('p.*,sum("pav.stock") as vstock'); return isset($data) ? $data: [];
$model = $model->join('StoreProductAttrValue pav','p.id=pav.product_id','LEFT'); }
/**
* 获取连表MOdel
* @param $model
* @return object
*/
public static function getModelObject($where=[]){
$model=new self();
$model=$model->alias('p')->join('StoreProductAttrValue pav','p.id=pav.product_id','LEFT');
if(!empty($where)){
$model=$model->group('p.id'); $model=$model->group('p.id');
$order = ''; if(isset($where['type']) && $where['type']!='' && ($data=self::setData($where['type']))){
if($where['sales'] != '') $order .= $where['sales']; $model = $model->where($data);
$order .= 'p.id desc';
$model = $model->order($order);
if($where['export'] == 1){
$list = $model->select()->toArray();
$export = [];
foreach ($list as $index=>$item){
$cateName = CategoryModel::where('id','IN',$item['cate_id'])->column('cate_name','id'); if(is_array($cateName)){ $cateNameStr = implode(',',$cateName); }
$export[] = [
$item['store_name'],
$item['store_info'],
$cateName,
'¥'.$item['price'],
$item['stock'],
$item['sales'],
StoreProductRelation::where('product_id',$item['id'])->where('type','like')->count(),
StoreProductRelation::where('product_id',$item['id'])->where('type','collect')->count()
];
$list[$index] = $item;
} }
PHPExcelService::setExcelHeader(['产品名称','产品简介','产品分类','价格','库存','销量','点赞人数','收藏人数']) if(isset($where['store_name']) && $where['store_name']!=''){
->setExcelTile('产品导出','产品信息'.time(),'操作人昵称:'.$adminInfo['real_name'].' 生成时间:'.date('Y-m-d H:i:s',time())) $model = $model->where('p.store_name|p.keyword|p.id','LIKE',"%$where[store_name]%");
->setExcelContent($export)
->ExcelSave();
} }
return self::page($model,function($item){ if(isset($where['cate_id']) && trim($where['cate_id'])!=''){
$model = $model->where('p.cate_id','LIKE',"%$where[cate_id]%");
}
if(isset($where['order']) && $where['order']!=''){
$model = $model->order(self::setOrder($where['order']));
}
}
return $model;
}
/*
* 获取产品列表
* @param $where array
* @return array
*
*/
public static function ProductList($where){
$model=self::getModelObject($where)->field(['p.*','sum(pav.stock) as vstock']);
if($where['excel']==0) $model=$model->page((int)$where['page'],(int)$where['limit']);
$data=($data=$model->select()) && count($data) ? $data->toArray():[];
foreach ($data as &$item){
$cateName = CategoryModel::where('id','IN',$item['cate_id'])->column('cate_name','id'); $cateName = CategoryModel::where('id','IN',$item['cate_id'])->column('cate_name','id');
if(is_array($cateName)){ $item['cate_name']=is_array($cateName) ? implode(',',$cateName) : '';
$item['cate_name'] = implode(',',$cateName); }
$item['collect'] = StoreProductRelation::where('product_id',$item['id'])->where('type','collect')->count();//收藏 $item['collect'] = StoreProductRelation::where('product_id',$item['id'])->where('type','collect')->count();//收藏
$item['like'] = StoreProductRelation::where('product_id',$item['id'])->where('type','like')->count();//点赞 $item['like'] = StoreProductRelation::where('product_id',$item['id'])->where('type','like')->count();//点赞
$item['stock'] = self::getStock($item['id'])>0?self::getStock($item['id']):$item['stock'];//库存 $item['stock'] = self::getStock($item['id'])>0?self::getStock($item['id']):$item['stock'];//库存
$item['stock_attr'] = self::getStock($item['id'])>0 ? true : false;//库存 $item['stock_attr'] = self::getStock($item['id'])>0 ? true : false;//库存
$item['sales_attr'] = self::getSales($item['id']);//属性销量 $item['sales_attr'] = self::getSales($item['id']);//属性销量
$item['visitor'] = Db::name('store_visit')->where('product_id',$item['id'])->where('product_type','product')->count(); $item['visitor'] = Db::name('store_visit')->where('product_id',$item['id'])->where('product_type','product')->count();
},$where);
} }
if($where['excel']==1){
$export = [];
foreach ($data as $index=>$item){
$export[] = [
$item['store_name'],
$item['store_info'],
$item['cate_name'],
'¥'.$item['price'],
$item['stock'],
$item['sales'],
$item['like'],
$item['collect']
];
}
PHPExcelService::setExcelHeader(['产品名称','产品简介','产品分类','价格','库存','销量','点赞人数','收藏人数'])
->setExcelTile('产品导出','产品信息'.time(),' 生成时间:'.date('Y-m-d H:i:s',time()))
->setExcelContent($export)
->ExcelSave();
}
$count=self::getModelObject($where)->count();
return compact('count','data');
}
public static function getChatrdata($type,$data){ public static function getChatrdata($type,$data){
$legdata=['销量','数量','点赞','收藏']; $legdata=['销量','数量','点赞','收藏'];
$model=self::setWhereType(self::order('id desc'),$type); $model=self::setWhereType(self::order('id desc'),$type);
@ -361,7 +380,7 @@ class StoreProduct extends ModelBasic
->select(); ->select();
$count=self::setWhere($where)->where('a.is_pay',1)->group('a.product_id')->count(); $count=self::setWhere($where)->where('a.is_pay',1)->group('a.product_id')->count();
foreach ($data as &$item){ foreach ($data as &$item){
$item['sum_price']=bcdiv($item['num_product'],$item['price'],true); $item['sum_price']=bcdiv($item['num_product'],$item['price'],2);
} }
return compact('data','count'); return compact('data','count');
} }

View File

@ -1,373 +1,344 @@
{extend name="public/container"} {extend name="public/container"}
{block name="head_top"}
<link href="{__FRAME_PATH}css/plugins/iCheck/custom.css" rel="stylesheet">
<script src="{__PLUG_PATH}moment.js"></script>
<link rel="stylesheet" href="{__PLUG_PATH}daterangepicker/daterangepicker.css">
<script src="{__PLUG_PATH}daterangepicker/daterangepicker.js"></script>
<script src="{__ADMIN_PATH}frame/js/plugins/iCheck/icheck.min.js"></script>
<link href="{__FRAME_PATH}css/plugins/footable/footable.core.css" rel="stylesheet">
<script src="{__PLUG_PATH}sweetalert2/sweetalert2.all.min.js"></script>
<script src="{__FRAME_PATH}js/plugins/footable/footable.all.min.js"></script>
{/block}
{block name="content"} {block name="content"}
<div class="row"> <div class="layui-fluid" style="background: #fff">
<div class="col-sm-12"> <div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<div class="ibox"> <li lay-id="list" {eq name='type' value='1'}class="layui-this" {/eq} >
<div class="ibox-title"> <a href="{eq name='type' value='1'}javascript:;{else}{:Url('index',['type'=>1])}{/eq}">出售中产品({$onsale})</a>
<button type="button" class="btn btn-w-m btn-primary" onclick="$eb.createModalFrame(this.innerText,'{:Url('create')}',{h:760,w:900})">添加产品</button>
</div>
<div class="ibox-content">
<div class="row">
<div class="m-b m-l">
<form action="" class="form-inline" id="form">
<div class="ibox">
<div class="input-group">
<select name="cate_id" aria-controls="editable" class="form-control input-sm">
<option value="">所有分类</option>
{volist name="cate" id="vo"}
<option value="{$vo.id}" {eq name="where.cate_id" value="$vo.id"}selected="selected"{/eq}>{$vo.html}{$vo.cate_name}</option>
{/volist}
</select>
<span class="input-group-btn">
<input type="hidden" name="export" value="0">
<input type="hidden" name="is_show" value="{$where.is_show}" />
<input type="text" name="store_name" value="{$where.store_name}" placeholder="请输入产品名称,关键字,编号" class="input-sm form-control" size="38">
<button type="submit" id="no_export" class="btn btn-sm btn-primary"> <i class="fa fa-search" ></i> 搜索</button>
<button type="submit" id="export" class="btn btn-sm btn-info btn-outline"> <i class="fa fa-exchange" ></i> Excel导出</button></span>
<script>
$('#export').on('click',function(){
$('input[name=export]').val(1);
});
$('#no_export').on('click',function(){
$('input[name=export]').val(0);
});
</script>
</div>
</div>
<!-- <div class="layui-btn-group" data-name="type">-->
<!-- 默认 layui-btn-primary 高亮 layui-btn-radius-->
<!-- <button class="layui-btn layui-btn-sm layui-btn-primary" type="button" data-value="1">出售中产品({$onsale})</button>-->
<!-- <button class="layui-btn layui-btn-sm layui-btn-primary" type="button" data-value="2">待上架产品({$forsale})</button>-->
<!-- <button class="layui-btn layui-btn-sm layui-btn-primary" type="button" data-value="3">仓库中产品({$warehouse})</button>-->
<!-- <button class="layui-btn layui-btn-sm layui-btn-primary" type="button" data-value="4">已经售馨产品({$outofstock})</button>-->
<!-- <button class="layui-btn layui-btn-sm layui-btn-primary" type="button" data-value="5">警戒库存({$policeforce})</button>-->
<!-- <button class="layui-btn layui-btn-sm layui-btn-primary" type="button" data-value="6">产品回收站({$recycle})</button>-->
<!-- <input class="search-item-value" type="hidden" name="type" value="{$where.type}" />-->
<!-- </div>-->
<div class="search-item protype" data-name="type">
<div class="btn-group">
<button class="btn btn-white" type="button" data-value="1">出售中产品({$onsale})</button>
<button class="btn btn-white" type="button" data-value="2">待上架产品({$forsale})</button>
<button class="btn btn-white" type="button" data-value="3">仓库中产品({$warehouse})</button>
<button class="btn btn-white" type="button" data-value="4">已经售馨产品({$outofstock})</button>
<button class="btn btn-white" type="button" data-value="5">警戒库存({$policeforce})</button>
<button class="btn btn-white" type="button" data-value="6">产品回收站({$recycle})</button>
</div>
<input class="search-item-value" type="hidden" name="type" value="{$where.type}" />
</div>
<input type="hidden" name="sales" value="{$where.sales}" />
</form>
</div>
</div>
<div class="table-responsive" style="overflow:visible">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th class="text-center">编号</th>
<th class="text-center">产品图片</th>
<th class="text-center">产品名称</th>
<th class="text-center">产品价格</th>
<th class="text-center">虚拟销量</th>
<th class="text-center">商品访客数</th>
<th class="text-center">商品浏览量</th>
<th class="text-center">
<div class="btn-group">
<button data-toggle="dropdown" class="btn btn-white btn-xs dropdown-toggle" style="font-weight: bold;background-color: #f5f5f6;border: solid 0;"
aria-expanded="false">销量
<span class="stair caret"></span>
</button>
<ul class="dropdown-menu search-item" data-name="sales">
<li data-value="" {eq name="where.sales" value=""}style="color:#1ab394"{/eq}>
<a class="save_mark" href="javascript:void(0);" >
<i class="fa fa-arrows-v"></i>默认
</a>
</li> </li>
<li data-value="p.sales desc," {eq name="where.sales" value="p.sales desc,"}style="color:#1ab394"{/eq}> <li lay-id="list" {eq name='type' value='2'}class="layui-this" {/eq}>
<a class="save_mark" href="javascript:void(0);" > <a href="{eq name='type' value='2'}javascript:;{else}{:Url('index',['type'=>2])}{/eq}">待上架产品({$forsale})</a>
<i class="fa fa-sort-numeric-desc"></i>降序
</a>
</li> </li>
<li data-value="p.sales asc," {eq name="where.sales" value="p.sales asc,"}style="color:#1ab394"{/eq}> <li lay-id="list" {eq name='type' value='3'}class="layui-this" {/eq}>
<a class="save_mark" href="javascript:void(0);"> <a href="{eq name='type' value='3'}javascript:;{else}{:Url('index',['type'=>3])}{/eq}">仓库中产品({$warehouse})</a>
<i class="fa fa-sort-numeric-asc"></i>升序 </li>
</a> <li lay-id="list" {eq name='type' value='4'}class="layui-this" {/eq}>
<a href="{eq name='type' value='4'}javascript:;{else}{:Url('index',['type'=>4])}{/eq}">已经售馨产品({$outofstock})</a>
</li>
<li lay-id="list" {eq name='type' value='5'}class="layui-this" {/eq}>
<a href="{eq name='type' value='5'}javascript:;{else}{:Url('index',['type'=>5])}{/eq}">警戒库存({$policeforce})</a>
</li>
<li lay-id="list" {eq name='type' value='6'}class="layui-this" {/eq}>
<a href="{eq name='type' value='6'}javascript:;{else}{:Url('index',['type'=>6])}{/eq}">产品回收站({$recycle})</a>
</li> </li>
</ul> </ul>
</div> </div>
</th> <div class="layui-row layui-col-space15" id="app">
<th class="text-center">库存</th> <div class="layui-col-md12">
<th class="text-center">排序</th> <div class="layui-card">
<th class="text-center">点赞</th> <div class="layui-card-body">
<th class="text-center">收藏</th> <form class="layui-form layui-form-pane" action="">
<th class="text-center" width="5%">操作</th> <div class="layui-form-item">
</tr> <div class="layui-inline">
</thead> <label class="layui-form-label">所有分类</label>
<tbody class=""> <div class="layui-input-block">
{volist name="list" id="vo"} <select name="cate_id">
<tr> <option value=" ">全部</option>
<td class="text-center"> {volist name='cate' id='vo'}
<label class="checkbox-inline i-checks"> <option value="{$vo.id}">{$vo.html}{$vo.cate_name}</option>
<input type="checkbox" name="id[]" value="{$vo.id}"> {/volist}
</label> </select>
</td> </div>
<td class="text-center"> </div>
<img src="{$vo.image}" alt="{$vo.store_name}" class="open_image" data-image="{$vo.image}" style="width: 50px;height: 50px;cursor: pointer;"> <div class="layui-inline">
</td> <label class="layui-form-label">产品名称</label>
<td class="text-left"> <div class="layui-input-block">
{$vo.store_name}<br> <input type="text" name="store_name" class="layui-input" placeholder="请输入产品名称,关键字,编号">
价格:{$vo.price}<br> <input type="hidden" name="type" value="{$type}">
分类:{$vo.cate_name} </div>
</td> </div>
<td class="text-center"> <div class="layui-inline">
<span class="edit-price edit-price-{$vo.id}" data-id="{$vo.id}">{$vo.price}</span> <div class="layui-input-inline">
<input type="number" name="price" data-id="{$vo.id}" class="price price-{$vo.id}" value="{$vo.price}" style="display: none"> <button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="search" lay-filter="search">
</td> <i class="layui-icon layui-icon-search"></i>搜索</button>
<td class="text-center"> <button class="layui-btn layui-btn-primary layui-btn-sm export" lay-submit="export" lay-filter="export">
{$vo.ficti} <i class="fa fa-floppy-o" style="margin-right: 3px;"></i>导出</button>
</td> </div>
<td class="text-center"> </div>
{$vo.visitor} </div>
</td> </form>
<td class="text-center"> </div>
{$vo.browse} </div>
</td> </div>
<td class="text-center"> <!--产品列表-->
{$vo.sales} <div class="layui-col-md12">
</td> <div class="layui-card">
<td class="text-center"> <div class="layui-card-body">
<span class="edit-stock edit-stock-{$vo.id}" data-attr="{$vo.stock_attr}" data-name="{$vo.store_name}" data-id="{$vo.id}">{$vo.stock}</span> <div class="alert alert-info" role="alert">
<input type="number" name="stock" data-id="{$vo.id}" data-attr="{$vo.stock_attr}" class="stock stock-{$vo.id}" value="{$vo.stock}" style="display: none"> 列表[产品价格],[虚拟销量],[库存]可进行快速修改,双击或者单击进入编辑模式,失去焦点可进行自动保存
</td> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<td class="text-center"> </div>
{$vo.sort} <div class="layui-btn-container">
</td> {switch name='type'}
<td class="text-center"> {case value="1"}
<span class="btn btn-xs btn-white" {if condition="$vo['collect'] gt 0"}onclick="$eb.createModalFrame('点赞','{:Url('collect',array('id'=>$vo['id']))}')"{/if} style="cursor: pointer"> <button class="layui-btn layui-btn-sm" onclick="$eb.createModalFrame(this.innerText,'{:Url('create')}',{h:760,w:900})">添加产品</button>
<i class="fa fa-thumbs-up"></i>&nbsp;&nbsp;{$vo.collect} {/case}
</span> {case value="2"}
</td> <button class="layui-btn layui-btn-sm" data-type="show">批量上架</button>
<td class="text-center"> {/case}
<span class="btn btn-xs btn-white" {if condition="$vo['like'] gt 0"}onclick="$eb.createModalFrame('收藏','{:Url('like',array('id'=>$vo['id']))}')"{/if} style="cursor: pointer"> {/switch}
<i class="fa fa-heart"></i>&nbsp;&nbsp;{$vo.like} </div>
</span> <table class="layui-hide" id="List" lay-filter="List"></table>
</td> <!--图片-->
<script type="text/html" id="image">
<td class="text-center"> <img style="cursor: pointer" lay-event="open_image" src="{{d.image}}">
<div class="input-group-btn js-group-btn" style="min-width: 136px;"> </script>
<div class="btn-group"> <!--上架|下架-->
<button class="btn btn-success btn-xs" aria-expanded="false" onclick="$eb.createModalFrame('{$vo.store_name}-属性','{:Url('attr',array('id'=>$vo['id']))}',{h:700,w:800})"> <script type="text/html" id="checkboxstatus">
<input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_show' lay-text='上架|下架' {{ d.is_show == 1 ? 'checked' : '' }}>
</script>
<!--收藏-->
<script type="text/html" id="like">
<span><i class="layui-icon layui-icon-praise"></i> {{d.like}}</span>
</script>
<!--点赞-->
<script type="text/html" id="collect">
<span><i class="layui-icon layui-icon-star"></i> {{d.collect}}</span>
</script>
<!--产品名称-->
<script type="text/html" id="store_name">
<h4>{{d.store_name}}</h4>
<p>价格:{{d.price}}</p>
{{# if(d.cate_name!=''){ }}
<p>分类:{{d.cate_name}}</p>
{{# } }}
<p>访客量:{{d.visitor}}</p>
<p>浏览量:{{d.browse}}</p>
</script>
<!--操作-->
<script type="text/html" id="act">
<button type="button" class="layui-btn layui-btn-xs btn-success" onclick="$eb.createModalFrame('{{d.store_name}}-属性','{:Url('attr')}?id={{d.id}}',{h:700,w:800})">
属性 属性
</button> </button>
<button class="btn btn-default btn-xs" aria-expanded="false" onclick="$eb.createModalFrame('{$vo.store_name}-编辑','{:Url('edit',array('id'=>$vo['id']))}')"> <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" onclick="$eb.createModalFrame('{{d.store_name}}-编辑','{:Url('edit')}?id={{d.id}}')">
编辑 编辑
</button> </button>
<button data-toggle="dropdown" class="btn btn-warning btn-xs dropdown-toggle" <button type="button" class="layui-btn layui-btn-xs" onclick="dropdown(this)">操作 <span class="caret"></span></button>
aria-expanded="false">操作 <ul class="layui-nav-child layui-anim layui-anim-upbit">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li> <li>
<a href="javascript:void(0);" class="" onclick="$eb.createModalFrame(this.innerText,'{:Url('edit_content',array('id'=>$vo['id']))}')"> <a href="javascript:void(0);" class="" onclick="$eb.createModalFrame(this.innerText,'{:Url('edit_content')}?id={{d.id}}')">
<i class="fa fa-pencil"></i> 编辑内容</a> <i class="fa fa-pencil"></i> 编辑内容</a>
</li> </li>
<li> <li>
<a href="javascript:void(0);" onclick="$eb.createModalFrame(this.innerText,'{:Url('ump.store_seckill/seckill',array('id'=>$vo['id']))}')""> <a href="javascript:void(0);" onclick="$eb.createModalFrame(this.innerText,'{:Url('ump.store_seckill/seckill')}?id={{d.id}}')"">
<i class="fa fa-gavel"></i> 开启秒杀</a> <i class="fa fa-gavel"></i> 开启秒杀</a>
</li> </li>
<li> <li>
<a href="javascript:void(0);" class="delstor" data-url="{:Url('delete',array('id'=>$vo['id']))}"> <a href="javascript:void(0);" onclick="$eb.createModalFrame(this.innerText,'{:Url('ump.store_bargain/bargain')}?id={{d.id}}')">
<i class="fa fa-sort-amount-asc"></i> 开启砍价</a>
</li>
<li>
<a href="javascript:void(0);" onclick="$eb.createModalFrame(this.innerText,'{:Url('ump.store_combination/combination')}?id={{d.id}}')">
<i class="fa fa-hand-lizard-o"></i> 开启拼团</a>
</li>
<li>
<a href="javascript:void(0);" lay-event='delstor'>
<i class="fa fa-trash"></i> 删除 <i class="fa fa-trash"></i> 删除
</a> </a>
</li> </li>
<li> <li>
<a href="{:Url('store.storeProductReply/index',array('product_id'=>$vo['id']))}"> <a href="{:Url('store.storeProductReply/index')}?product_id={{d.id}}">
<i class="fa fa-warning"></i> 评论查看 <i class="fa fa-warning"></i> 评论查看
</a> </a>
</li> </li>
</ul> </ul>
</div> </script>
</td>
</tr>
{/volist}
</tbody>
</table>
<!-- <p>-->
<!-- <button class="btn btn-primary btn-sm this-all" type="button">全选</button>-->
<!-- <button class="btn btn-primary btn-sm this-up" type="button">取消</button>-->
<!-- <button class="btn btn-primary btn-sm updatetype" type="button">分类</button>-->
<!-- <button class="btn btn-primary btn-sm" type="button">库存</button>-->
<!-- <button class="btn btn-primary btn-sm" type="button">上架</button>-->
<!-- <button class="btn btn-primary btn-sm" type="button">下架</button>-->
<!-- <button class="btn btn-primary btn-sm" type="button">删除</button>-->
<!-- <button class="btn btn-primary btn-sm" type="button">运费</button>-->
<!-- </p>-->
</div>
{include file="public/inner_page"}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{/block} </div>
{block name="script"} <script src="{__ADMIN_PATH}js/layuiList.js"></script>
<script> <script>
$('.search-item>li').on('click', function () { var type=<?=$type?>;
var that = $(this), value = that.data('value'), p = that.parent(), name = p.data('name'), form = $('#form'); //实例化form
form.find('input[name="' + name + '"]').val(value); layList.form.render();
$('input[name=export]').val(0); //加载列表
form.submit(); layList.tableList('List',"{:Url('product_ist',['type'=>$type])}",function (){
}); var join=new Array();
$('.price').on('blur',function () { switch (parseInt(type)){
var id = $(this).data('id'); case 1:case 3:case 4:case 5:
var price = $(this).val(); join=[
$('.edit-price-'+id).show(); {field: 'id', title: 'ID', sort: true,event:'id',width:'4%'},
$(this).hide(); {field: 'image', title: '产品图片',templet:'#image'},
$eb.axios.post("{:Url('store.store_product/edit_product_price')}",{id:id,price:price}).then(function(res){ {field: 'store_name', title: '产品名称',templet:'#store_name'},
if(res.status == 200 && res.data.code == 200) { {field: 'price', title: '产品价格',edit:'price'},
$eb.layer.msg(res.data.msg); {field: 'ficti', title: '虚拟销量',edit:'ficti'},
$('.edit-price-'+id).html(price); {field: 'stock', title: '库存',edit:'stock'},
}else{ {field: 'sort', title: '排序',edit:'sort'},
$eb.layer.msg(res.data.msg); {field: 'sales', title: '销量',sort: true,event:'sales'},
{field: 'collect', title: '点赞',templet:'#like'},
{field: 'like', title: '收藏',templet:'#collect'},
{field: 'status', title: '状态',templet:"#checkboxstatus"},
{field: 'right', title: '操作',align:'center',toolbar:'#act',width:'10%'},
];
break;
case 2:
join=[
{type:'checkbox'},
{field: 'id', title: 'ID', sort: true,event:'id',width:'4%'},
{field: 'image', title: '产品图片',templet:'#image'},
{field: 'store_name', title: '产品名称',templet:'#store_name'},
{field: 'price', title: '产品价格',edit:'price'},
{field: 'ficti', title: '虚拟销量',edit:'ficti'},
{field: 'stock', title: '库存',edit:'stock'},
{field: 'sort', title: '排序',edit:'sort'},
{field: 'sales', title: '销量',sort: true,event:'sales'},
{field: 'status', title: '状态',templet:"#checkboxstatus"},
{field: 'right', title: '操作',align:'center',toolbar:'#act',width:'10%'},
];
break;
case 6:
join=[
{field: 'id', title: '产品ID', sort: true,event:'id'},
{field: 'image', title: '产品图片',templet:'#image'},
{field: 'store_name', title: '产品名称',templet:'#store_name'},
{field: 'price', title: '产品价格',edit:'price'},
{field: 'ficti', title: '虚拟销量',edit:'ficti'},
{field: 'stock', title: '库存',edit:'stock'},
{field: 'sort', title: '排序',edit:'sort'},
{field: 'sales', title: '销量',sort: true,event:'sales'},
{field: 'status', title: '状态',templet:"#checkboxstatus"},
{field: 'right', title: '操作',align:'center',toolbar:'#act',width:'10%'},
];
break;
} }
}).catch(function(err){ return join;
$eb.layer.msg(err);
});
});
$('.edit-price').on('dblclick',function () {
var id = $(this).data('id');
$('.price-'+id).show();
$('.price-'+id).focus();
$(this).hide();
}) })
$('.stock').on('blur',function () { //excel下载
var attr = $(this).data('attr'); layList.search('export',function(where){
if(!attr){ location.href=layList.U({c:'store.store_product',a:'product_ist',q:{
var id = $(this).data('id'); cate_id:where.cate_id,
var stock = $(this).val(); store_name:where.store_name,
$('.edit-stock-'+id).show(); type:where.type,
$(this).hide(); excel:1
$eb.axios.post("{:Url('store.store_product/edit_product_stock')}",{id:id,stock:stock}).then(function(res){ }});
if(res.status == 200 && res.data.code == 200) { })
$eb.layer.msg(res.data.msg); //下拉框
$('.edit-stock-'+id).html(stock); $(document).click(function (e) {
}else{ $('.layui-nav-child').hide();
$eb.layer.msg(res.data.msg); })
} function dropdown(that){
}).catch(function(err){ var oEvent = arguments.callee.caller.arguments[0] || event;
$eb.layer.msg(err); oEvent.stopPropagation();
}); var offset = $(that).offset();
} var index = $(that).parents('tr').data('index');
}); $('.layui-nav-child').each(function (key) {
$('.edit-stock').on('dblclick',function () { if (key != index) {
var id = $(this).data('id');
var attr = $(this).data('attr');
var storeName = $(this).data('name');
if(attr) $eb.createModalFrame(storeName+'-属性',"{:Url('attr')}?id="+id+",'{h:700,w:800}");
else{
$('.stock-'+id).show();
$('.stock-'+id).focus();
$(this).hide(); $(this).hide();
} }
}) })
//产品状态查找 if($(document).height() < offset.top+$(that).next('ul').height()){
$('.protype>.btn-group>.btn').on('click', function () { $(that).next('ul').css({
var that = $(this), value = that.data('value'), p = that.parent().parent(), name = p.data('name'), form = $('#form'); 'padding': 10,
form.find('input[name="' + name + '"]').val(value); 'top': offset.top-$(that).next('ul').height()-30,
$('input[name=export]').val(0); 'min-width': 'inherit',
form.submit(); 'left': offset.left - $(that).width() / 2,
}); 'position': 'fixed'
//产品状态默认加载 }).toggle();
$('.protype').each(function(){ }else{
var form = $('#form'),value=form.find('input[name="type"]').val(),dom = $('[data-value="'+value+'"]'); $(that).next('ul').css({
dom.eq(0).removeClass('btn-white').addClass('btn-primary') 'padding': 10,
.siblings().addClass('btn-white').removeClass('btn-primary btn-sm'); 'top': offset.top + 30,
}); 'min-width': 'inherit',
//全选 'left': offset.left - $(that).width() / 2,
$('.this-all').on('click',function () { 'position': 'fixed'
$('input[name="id[]"]').each(function(){ }).toggle();
$(this).checked = true;
$(this).parent().addClass('checked');
// $eb.layer.msg('dsfds');
});
});
//取消
$('.this-up').on('click',function () {
$('input[name="id[]"]').each(function(){
$(this).checked = false;
$(this).parent().removeClass('checked');
});
});
//修改分类
$('.updatetype').on('click',function () {
var chk_value =[];
$('input[name="id[]"]:checked').each(function(){
chk_value.push($(this).val());
});
if(chk_value.length < 1){
$eb.message('请选择商品');
return false;
} }
console.log(chk_value);
var str = chk_value.join(',');
var url = "http://"+window.location.host+"/admin/store.store_coupon/grant/id/"+str;
$eb.createModalFrame(this.innerText,url,{'w':800});
});
//获取选择框值
function getcheckvalue() {
var chk_value =[];
$('input[name="id[]"]:checked').each(function(){
chk_value.push($(this).val());
});
if(chk_value.length < 1){
$eb.message('请选择商品');
return false;
} }
return chk_value; //快速编辑
layList.edit(function (obj) {
var id=obj.data.id,value=obj.value;
switch (obj.field) {
case 'price':
action.set_product('price',id,value);
break;
case 'stock':
action.set_product('stock',id,value);
break;
case 'sort':
action.set_product('sort',id,value);
break;
case 'ficti':
action.set_product('ficti',id,value);
break;
} }
//浮动防止遮盖
$('.js-group-btn').on('click',function(){
$('.js-group-btn').css({zIndex:1});
$(this).css({zIndex:2});
}); });
//复选框 //上下加产品
$('.i-checks').iCheck({ layList.switch('is_show',function (odj,value) {
checkboxClass: 'icheckbox_square-green', if(odj.elem.checked==true){
layList.baseGet(layList.Url({c:'store.store_product',a:'set_show',p:{is_show:1,id:value}}),function (res) {
layList.msg(res.msg);
}); });
}else{
//删除产品 layList.baseGet(layList.Url({c:'store.store_product',a:'set_show',p:{is_show:0,id:value}}),function (res) {
$('.delstor').on('click',function(){ layList.msg(res.msg);
window.t = $(this); });
var _this = $(this),url =_this.data('url'); }
});
//点击事件绑定
layList.tool(function (event,data,obj) {
switch (event) {
case 'delstor':
var url=layList.U({c:'store.store_product',a:'delete',q:{id:data.id}});
$eb.$swal('delete',function(){ $eb.$swal('delete',function(){
$eb.axios.get(url).then(function(res){ $eb.axios.get(url).then(function(res){
console.log(res);
if(res.status == 200 && res.data.code == 200) { if(res.status == 200 && res.data.code == 200) {
$eb.$swal('success',res.data.msg); $eb.$swal('success',res.data.msg);
_this.parents('tr').remove(); obj.del();
}else }else
return Promise.reject(res.data.msg || '删除失败') return Promise.reject(res.data.msg || '删除失败')
}).catch(function(err){ }).catch(function(err){
$eb.$swal('error',err); $eb.$swal('error',err);
}); });
}) })
}); break;
case 'open_image':
//点击产品图放大 $eb.openImage(data.image);
$(".open_image").on('click',function (e) { break;
var image = $(this).data('image'); }
$eb.openImage(image);
}) })
//排序
layList.sort(function (obj) {
var type = obj.type;
switch (obj.field){
case 'id':
layList.reload({order: layList.order(type,'p.id')},true,null,obj);
break;
case 'sales':
layList.reload({order: layList.order(type,'p.sales')},true,null,obj);
break;
}
});
//查询
layList.search('search',function(where){
layList.reload(where);
});
//自定义方法
var action={
set_product:function(field,id,value){
layList.baseGet(layList.Url({c:'store.store_product',a:'set_product',q:{field:field,id:id,value:value}}),function (res) {
layList.msg(res.msg);
});
},
show:function(){
var ids=layList.getCheckData().getIds('id');
if(ids.length){
layList.basePost(layList.Url({c:'store.store_product',a:'product_show'}),{ids:ids},function (res) {
layList.msg(res.msg);
layList.reload();
});
}else{
layList.msg('请选择要上架的产品');
}
}
};
//多选事件绑定
$('.layui-btn-container').find('button').each(function () {
var type=$(this).data('type');
$(this).on('click',function(){
action[type] && action[type]();
})
});
</script> </script>
{/block} {/block}