初始上传
This commit is contained in:
415
addon/virtualevaluation/shop/controller/Comment.php
Executable file
415
addon/virtualevaluation/shop/controller/Comment.php
Executable file
@@ -0,0 +1,415 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\virtualevaluation\shop\controller;
|
||||
|
||||
use addon\virtualevaluation\model\VirtualEvaluation;
|
||||
use addon\virtualevaluation\model\VirtualStock;
|
||||
use app\model\express\ExpressTemplate as ExpressTemplateModel;
|
||||
use app\model\goods\Goods;
|
||||
use app\model\goods\Goods as GoodsModel;
|
||||
use app\model\goods\GoodsCategory as GoodsCategoryModel;
|
||||
use app\model\goods\GoodsLabel as GoodsLabelModel;
|
||||
use app\model\goods\GoodsService as GoodsServiceModel;
|
||||
use app\model\upload\Album;
|
||||
use app\shop\controller\BaseShop;
|
||||
|
||||
|
||||
/**
|
||||
* 虚拟评价
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
class Comment extends BaseShop
|
||||
{
|
||||
public function goodsLists()
|
||||
{
|
||||
$stockalarm = input('stockalarm', 0);
|
||||
$goods_model = new GoodsModel();
|
||||
if (request()->isJson()) {
|
||||
$page_index = input('page', 1);
|
||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||
$search_text = input('search_text', "");
|
||||
$goods_state = input('goods_state', "");
|
||||
$start_sale = input('start_sale', 0);
|
||||
$end_sale = input('end_sale', 0);
|
||||
$start_price = input('start_price', 0);
|
||||
$end_price = input('end_price', 0);
|
||||
$goods_class = input('goods_class', "");
|
||||
$label_id = input('label_id', "");
|
||||
$order = input('order', '');
|
||||
$sort = input('sort', 'asc');
|
||||
|
||||
$order_by = 'create_time desc';
|
||||
if ($order != '') {
|
||||
if ($order == 'sort') {
|
||||
$order_by = $order . ' ' . $sort . ',create_time desc';
|
||||
} else {
|
||||
$order_by = $order . ' ' . $sort;
|
||||
}
|
||||
}
|
||||
$promotion_type = input('promotion_type', "");
|
||||
|
||||
$condition = [ [ 'is_delete', '=', 0 ], [ 'site_id', '=', $this->site_id ] ];
|
||||
|
||||
if (!empty($search_text)) {
|
||||
$condition[] = [ 'goods_name', 'like', '%' . $search_text . '%' ];
|
||||
}
|
||||
$category_id = input('category_id', "");
|
||||
if (!empty($category_id)) {
|
||||
$condition[] = [ 'category_id', 'like', '%,' . $category_id . ',%' ];
|
||||
}
|
||||
|
||||
if ($goods_class !== "") {
|
||||
$condition[] = [ 'goods_class', '=', $goods_class ];
|
||||
}
|
||||
|
||||
if (!empty($label_id)) {
|
||||
$condition[] = [ 'label_id', '=', $label_id ];
|
||||
}
|
||||
|
||||
if (!empty($promotion_type)) {
|
||||
$condition[] = [ 'promotion_addon', 'like', "%{$promotion_type}%" ];
|
||||
}
|
||||
|
||||
// 上架状态
|
||||
if ($goods_state !== '') {
|
||||
$condition[] = [ 'goods_state', '=', $goods_state ];
|
||||
}
|
||||
if (!empty($start_sale)) $condition[] = [ 'sale_num', '>=', $start_sale ];
|
||||
if (!empty($end_sale)) $condition[] = [ 'sale_num', '<=', $end_sale ];
|
||||
if (!empty($start_price)) $condition[] = [ 'price', '>=', $start_price ];
|
||||
if (!empty($end_price)) $condition[] = [ 'price', '<=', $end_price ];
|
||||
|
||||
// 查询库存预警的商品
|
||||
if ($stockalarm) {
|
||||
$stock_alarm = $goods_model->getGoodsStockAlarm($this->site_id);
|
||||
if (!empty($stock_alarm[ 'data' ])) {
|
||||
$condition[] = [ 'goods_id', 'in', $stock_alarm[ 'data' ] ];
|
||||
} else {
|
||||
return success(0, '', [ 'page_count' => 1, 'count' => 0, 'list' => [] ]);
|
||||
}
|
||||
}
|
||||
$field = 'goods_id,goods_name,site_id,site_name,goods_image,goods_state,price,goods_stock,goods_stock_alarm,create_time,sale_num,is_virtual,goods_class,is_fenxiao,fenxiao_type,promotion_addon,sku_id,is_consume_discount,discount_config,discount_method,sort,evaluate,evaluate_shaitu,success_evaluate_num,fail_evaluate_num,wait_evaluate_num';
|
||||
$res = $goods_model->getGoodsPageList($condition, $page_index, $page_size, $order_by, $field);
|
||||
$goods_promotion_type = event('GoodsPromotionType');
|
||||
if (!empty($res[ 'data' ][ 'list' ])) {
|
||||
foreach ($res[ 'data' ][ 'list' ] as $k => $v) {
|
||||
|
||||
$res[ 'data' ][ 'list' ][ $k ][ 'goods_stock' ] = numberFormat($res[ 'data' ][ 'list' ][ $k ][ 'goods_stock' ]);
|
||||
$res[ 'data' ][ 'list' ][ $k ][ 'sale_num' ] = numberFormat($res[ 'data' ][ 'list' ][ $k ][ 'sale_num' ]);
|
||||
|
||||
if (!empty($v[ 'promotion_addon' ])) {
|
||||
$v[ 'promotion_addon' ] = json_decode($v[ 'promotion_addon' ], true);
|
||||
foreach ($v[ 'promotion_addon' ] as $ck => $cv) {
|
||||
foreach ($goods_promotion_type as $gk => $gv) {
|
||||
if ($gv[ 'type' ] == $ck) {
|
||||
$res[ 'data' ][ 'list' ][ $k ][ 'promotion_addon_list' ][] = $gv;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $res;
|
||||
} else {
|
||||
|
||||
$goods_state = input('state', '');
|
||||
$this->assign('goods_state', $goods_state);
|
||||
//获取一级商品分类
|
||||
$goods_category_model = new GoodsCategoryModel();
|
||||
$condition = [
|
||||
[ 'pid', '=', 0 ],
|
||||
[ 'site_id', '=', $this->site_id ]
|
||||
];
|
||||
|
||||
$goods_category_list = $goods_category_model->getCategoryList($condition, 'category_id,category_name,level,commission_rate');
|
||||
$goods_category_list = $goods_category_list[ 'data' ];
|
||||
$this->assign("goods_category_list", $goods_category_list);
|
||||
|
||||
// 商品分组
|
||||
$goods_label_model = new GoodsLabelModel();
|
||||
$label_list = $goods_label_model->getLabelList([ [ 'site_id', '=', $this->site_id ] ], 'id,label_name', 'create_time desc')[ 'data' ];
|
||||
$this->assign("label_list", $label_list);
|
||||
|
||||
// 商品服务
|
||||
$goods_service_model = new GoodsServiceModel();
|
||||
$service_list = $goods_service_model->getServiceList([ [ 'site_id', '=', $this->site_id ] ], 'id,service_name,icon')[ 'data' ];
|
||||
$this->assign("service_list", $service_list);
|
||||
|
||||
//获取运费模板
|
||||
$express_template_model = new ExpressTemplateModel();
|
||||
$express_template_list = $express_template_model->getExpressTemplateList([ [ 'site_id', "=", $this->site_id ] ], 'template_id,template_name', 'is_default desc');
|
||||
$express_template_list = $express_template_list[ 'data' ];
|
||||
$this->assign("express_template_list", $express_template_list);
|
||||
|
||||
//判断会员价插件
|
||||
$memberprice_is_exit = addon_is_exit('memberprice', $this->site_id);
|
||||
$this->assign('memberprice_is_exit', $memberprice_is_exit);
|
||||
|
||||
// 判断采集插件
|
||||
$goodsgrab_is_exit = addon_is_exit('goodsgrab', $this->site_id);
|
||||
$this->assign('goodsgrab_is_exit', $goodsgrab_is_exit);
|
||||
|
||||
// 营销活动
|
||||
$goods_promotion_type = event('GoodsPromotionType');
|
||||
$this->assign('promotion_type', $goods_promotion_type);
|
||||
|
||||
$this->assign('virtualcard_exit', addon_is_exit('virtualcard', $this->site_id));
|
||||
|
||||
$this->assign('stockalarm', $stockalarm);
|
||||
|
||||
return $this->fetch("comment/goods_lists");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建虚拟评价
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function setting()
|
||||
{
|
||||
$goods_ids = input('goods_ids', 0);
|
||||
$goods_model = new Goods();
|
||||
$goods_data = $goods_model->getGoodsList([ [ 'goods_id', 'in', $goods_ids ], [ 'site_id', '=', $this->site_id ] ], 'sku_id,goods_id,goods_name,price,goods_image');
|
||||
|
||||
$data = json_decode(input('field'), true);
|
||||
|
||||
if (!empty($data[ 'member_headimg' ])) {
|
||||
$data[ 'member_headimg' ] = $data[ 'member_headimg' ][ 0 ];
|
||||
}
|
||||
$pingjia_img = '';
|
||||
if (!empty($data[ 'pingjia_img' ])) {
|
||||
foreach ($data[ 'pingjia_img' ] as $k => $val) {
|
||||
$pingjia_img = $pingjia_img . ',' . $val;
|
||||
}
|
||||
$pingjia_img = trim($pingjia_img, ',');
|
||||
}
|
||||
|
||||
$data[ 'pingjia_img' ] = $pingjia_img;
|
||||
$data[ 'goods_data' ] = '';
|
||||
if (!empty($goods_data[ 'data' ])) {
|
||||
$data[ 'goods_data' ] = $goods_data[ 'data' ];
|
||||
}
|
||||
$VirtualEvaluation_model = new VirtualEvaluation();
|
||||
$res = $VirtualEvaluation_model->addGoodsComment($data, $this->site_id);
|
||||
return $res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 虚拟评价库
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function stock()
|
||||
{
|
||||
if (request()->isJson()) {
|
||||
$stock_model = new VirtualStock();
|
||||
$page = input('page', 1);
|
||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||
$condition = [
|
||||
'site_id' => $this->site_id
|
||||
];
|
||||
$stock_data = $stock_model->getStockPageList($condition, $page, $page_size, '', '');
|
||||
return $stock_data;
|
||||
} else {
|
||||
|
||||
return $this->fetch("comment/stock");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加虚拟评价库
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function addStock()
|
||||
{
|
||||
$stock_model = new VirtualStock();
|
||||
$stock_name = input('stock_name', '');
|
||||
$data = [
|
||||
'stock_name' => $stock_name,
|
||||
'site_id' => $this->site_id,
|
||||
'create_time' => time(),
|
||||
];
|
||||
return $stock_model->addStock($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除虚拟评价库
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function deleteStock()
|
||||
{
|
||||
$stock_model = new VirtualStock();
|
||||
$stock_id = input('stock_id', '');
|
||||
|
||||
return $stock_model->deleteStock($stock_id, $this->site_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取虚拟评价库信息
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function getStockInfo()
|
||||
{
|
||||
$stock_model = new VirtualStock();
|
||||
$stock_id = input('stock_id', '');
|
||||
return $stock_model->getStockInfo($stock_id, $this->site_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑虚拟评价库
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function editStock()
|
||||
{
|
||||
$stock_model = new VirtualStock();
|
||||
$stock_id = input('stock_id', 0);
|
||||
$stock_name = input('stock_name', '');
|
||||
$data = [
|
||||
'stock_name' => $stock_name,
|
||||
'modify_time' => time(),
|
||||
'stock_id' => $stock_id
|
||||
];
|
||||
|
||||
return $stock_model->updateStock($data, $this->site_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取虚拟评价库里的评论信息
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function getContents()
|
||||
{
|
||||
$stock_id = input('stock_id', 0);
|
||||
if (request()->isJson()) {
|
||||
$stock_model = new VirtualStock();
|
||||
$page = input('page', 1);
|
||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||
$condition = [
|
||||
'site_id' => $this->site_id,
|
||||
'stock_id' => $stock_id,
|
||||
];
|
||||
$stock_data = $stock_model->getContentsPageList($condition, $page, $page_size, '', '');
|
||||
return $stock_data;
|
||||
} else {
|
||||
$this->assign('stock_id', $stock_id);
|
||||
return $this->fetch("comment/contents");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加虚拟评价库评论
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function addContent()
|
||||
{
|
||||
$stock_model = new VirtualStock();
|
||||
$stock_id = input('stock_id', 0);
|
||||
$content = input('content', '');
|
||||
$data = [
|
||||
'stock_id' => $stock_id,
|
||||
'site_id' => $this->site_id,
|
||||
'content' => $content,
|
||||
'create_time' => time(),
|
||||
];
|
||||
return $stock_model->addContent($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除虚拟评价库评论
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function deleteContent()
|
||||
{
|
||||
$stock_model = new VirtualStock();
|
||||
$id = input('id', 0);
|
||||
|
||||
return $stock_model->deleteContent($id, $this->site_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取虚拟评价库评论信息
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function getContentInfo()
|
||||
{
|
||||
$stock_model = new VirtualStock();
|
||||
$id = input('id', 0);
|
||||
|
||||
return $stock_model->getContentInfo($id, $this->site_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改虚拟评价库评论信息
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function editContent()
|
||||
{
|
||||
$stock_model = new VirtualStock();
|
||||
$id = input('id', 0);
|
||||
$content = input('content', '');
|
||||
$data = [
|
||||
'content' => $content,
|
||||
'id' => $id
|
||||
];
|
||||
return $stock_model->editContentInfo($data, $this->site_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量添加单个商品的评论
|
||||
* Class Virtualgoods
|
||||
* @package app\shop\controller
|
||||
*/
|
||||
public function batchAdd()
|
||||
{
|
||||
$album_model = new Album();
|
||||
$stock_model = new VirtualStock();
|
||||
$goods_id = input('goods_id', 0);
|
||||
if (request()->isJson()) {
|
||||
$start_time = date_to_time(input('start_time'));
|
||||
$end_time = date_to_time(input('end_time'));
|
||||
if ($start_time == '' || $end_time == '' || $end_time < $start_time) return error('-1', '时间格式不正确');
|
||||
$virtual_evaluation_model = new VirtualEvaluation();
|
||||
$data = [
|
||||
'goods_id' => input('goods_id', 0),
|
||||
'number' => input('number', 0),
|
||||
'pingfen' => input('pingfen', ''),
|
||||
'start_time' => $start_time,
|
||||
'end_time' => $end_time,
|
||||
'album_id' => input('album_id', 0),
|
||||
'stock_id' => input('stock_id', 0)
|
||||
];
|
||||
$res = $virtual_evaluation_model->batghAdd($data, $this->site_id);
|
||||
return $res;
|
||||
} else {
|
||||
//获取相册
|
||||
$album_list = $album_model->getAlbumList([ [ 'site_id', '=', $this->site_id ], [ 'num', '>', 0 ] ]);
|
||||
$this->assign('album_list', $album_list[ 'data' ]);
|
||||
//获取评论库
|
||||
$stock_list = $stock_model->getStockList([ [ 'site_id', '=', $this->site_id ], [ 'num', '>', 0 ] ]);
|
||||
$this->assign('stock_list', $stock_list[ 'data' ]);
|
||||
$this->assign('goods_id', $goods_id);
|
||||
return $this->fetch("comment/batchadd");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
250
addon/virtualevaluation/shop/view/comment/batchadd.html
Executable file
250
addon/virtualevaluation/shop/view/comment/batchadd.html
Executable file
@@ -0,0 +1,250 @@
|
||||
<link rel="stylesheet" href="__STATIC__/ext/video/video.css">
|
||||
<link rel="stylesheet" type="text/css" href="__STATIC__/ext/searchable_select/searchable_select.css" />
|
||||
<style>
|
||||
/*底部按钮*/
|
||||
.fixed-btn {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
margin: 0 0 0 -15px !important;
|
||||
background: #F9F9F9;
|
||||
line-height: 80px;
|
||||
z-index: 1000;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
.fixed-btn > button {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fixed-btn > button:first-child {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div class="layui-form">
|
||||
<div class="layui-tab layui-tab-brief" lay-filter="goods_tab">
|
||||
<div class="layui-tab-content">
|
||||
|
||||
<!-- 基础设置 -->
|
||||
<div class="layui-tab-item layui-show">
|
||||
|
||||
<div class="layui-card card-common">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">添加条数</span>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>添加条数:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="number" onchange="maxNum(this)" type="number" placeholder="请输入整数" max="100" autocomplete="off" lay-verify="number" class="layui-input len-long">
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux">将按此条数随机生成虚拟评论,每次上限100条</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">会员信息</span>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">生成方式:</label>
|
||||
<div class="layui-input-inline">
|
||||
<p>随机生成</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label"><span class="required">*</span>头像来源:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="album_id" id="album_id">
|
||||
<option value="">请选择头像来源</option>
|
||||
{foreach name="$album_list" item="vo"}
|
||||
<option value="{$vo['album_id']}">{$vo['album_name']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux">头像来源分组来自【商品-相册管理】中的图片分组,生成每条评论时,用户头像将从此分组中随机抽取</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">评价内容</span>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>评价级别:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="checkbox" name="pingfen" value="1" title="1分">
|
||||
<input type="checkbox" name="pingfen" value="2" title="2分">
|
||||
<input type="checkbox" name="pingfen" value="3" title="3分">
|
||||
<input type="checkbox" name="pingfen" value="4" title="4分">
|
||||
<input type="checkbox" name="pingfen" value="5" title="5分">
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux">生成每条评论时,从所勾选的评分中随机选择</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label"><span class="required">*</span>评论来源:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="stock_id" id="stock_id">
|
||||
<option value="">请选择评论来源</option>
|
||||
{foreach name="$stock_list" item="vo"}
|
||||
<option value="{$vo['stock_id']}">{$vo['stock_name']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux">评论来源来自【虚拟评价库】,生成每条评论时,评论内容将从此评价库随机抽取</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label"><span class="required">*</span>时间范围:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux">生成每条评论时,评论时间将从此时间段中选取</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="fixed-btn">
|
||||
<button class="layui-btn layui-btn-primary border-color text-color js-prev" lay-filter="prev">上一步</button>
|
||||
<input type="hidden" name="goods_id" value="{$goods_id}">
|
||||
<button class="layui-btn js-save" lay-submit="save" lay-filter="save">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var save_flag = false,form;
|
||||
layui.use(['form','layer','laytpl' ,'element','laydate'], function() {
|
||||
form = layui.form;
|
||||
laytpl = layui.laytpl;
|
||||
var laydate = layui.laydate;
|
||||
var layer = layui.layer;
|
||||
element = layui.element;
|
||||
|
||||
form.render();
|
||||
|
||||
var myDate = ns.time_to_date(new Date().getTime() / 1000);
|
||||
//渲染时间
|
||||
laydate.render({
|
||||
elem: '#start_time'
|
||||
,type: 'datetime',
|
||||
max: myDate
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#end_time'
|
||||
,type: 'datetime',
|
||||
max: myDate
|
||||
});
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 保存添加评价库
|
||||
*/
|
||||
form.on('submit(save)', function (data) {
|
||||
var pingfen =[];
|
||||
if (save_flag) return;
|
||||
save_flag = true;
|
||||
var goods_id = {$goods_id};
|
||||
// var goods_id = $("input[name='goods_id']").val();
|
||||
var number = $("input[name='number']").val();
|
||||
$("[name='pingfen']:checked").each(function(){
|
||||
pingfen.push($(this).val())
|
||||
});
|
||||
var start_time = $("input[name='start_time']").val();
|
||||
var end_time = $("input[name='end_time']").val() ;
|
||||
var album_id = $("#album_id").val();
|
||||
var stock_id = $("#stock_id").val();
|
||||
if(goods_id==''){
|
||||
return layer.msg('必要参数不能为空');
|
||||
}
|
||||
if(number=='' || number<0){
|
||||
return layer.msg('条数不能为空且大于零的正整数');
|
||||
}
|
||||
if(stock_id==''){
|
||||
return layer.msg('评论内容来源不能为空');
|
||||
}
|
||||
if(pingfen==''){
|
||||
return layer.msg('评分不能不勾选');
|
||||
}
|
||||
if(album_id==''){
|
||||
return layer.msg('会员头像来源不能为空');
|
||||
}
|
||||
if(start_time=='' || end_time=='' || end_time < start_time){
|
||||
return layer.msg('时间格式不对');
|
||||
}
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("virtualevaluation://shop/comment/batchadd"),
|
||||
data: {number:number,pingfen:pingfen,start_time:start_time,end_time:end_time,album_id:album_id,stock_id:stock_id,goods_id:goods_id},
|
||||
success: function (res) {
|
||||
save_flag = false;
|
||||
if (res.code == 0) {
|
||||
layer.confirm('操作成功', {
|
||||
title: '操作提示',
|
||||
btn: ['返回列表','继续操作'],
|
||||
yes: function (index, layero) {
|
||||
location.hash = ns.hash("virtualevaluation://shop/comment/goodslists")
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function (index, layero) {
|
||||
listenerHash(); // 刷新页面
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
});
|
||||
function maxNum(el){
|
||||
var value = $(el).val();
|
||||
if(value > 100) {
|
||||
$(el).val(100);
|
||||
layer.msg('添加条数不能超过100条');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
54
addon/virtualevaluation/shop/view/comment/category_select.html
Executable file
54
addon/virtualevaluation/shop/view/comment/category_select.html
Executable file
@@ -0,0 +1,54 @@
|
||||
<link rel="stylesheet" type="text/css" href="__STATIC__/ext/layui/extend/cascader/cascader.css"/>
|
||||
<style>
|
||||
.goods-category-container {display: inline-block;position: relative;z-index: 10}
|
||||
</style>
|
||||
<div class="goods-category-container">
|
||||
<input type="text" autocomplete="off" show="false" class="layui-input select-category" placeholder="选择商品分类" readonly />
|
||||
<input type="hidden" name="category_id">
|
||||
</div>
|
||||
<script>
|
||||
var form, layCascader, goodsCategory = [];
|
||||
$(function() {
|
||||
layui.use(['form', 'layCascader'], function () {
|
||||
form = layui.form;
|
||||
layCascader = layui.layCascader;
|
||||
form.render();
|
||||
fetchCategory($('.goods-category-container .select-category'), function (value, node) {
|
||||
$('[name="category_id"]').val(value);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 渲染分类选择
|
||||
* @param elem
|
||||
* @param callback
|
||||
*/
|
||||
function fetchCategory(elem, callback){
|
||||
if (!goodsCategory.length) {
|
||||
$.ajax({
|
||||
url : ns.url("shop/goodscategory/lists"),
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(res) {
|
||||
goodsCategory = res.data;
|
||||
}
|
||||
})
|
||||
}
|
||||
if($('.select-category').length) {
|
||||
var _cascader = layCascader({
|
||||
elem: $('.select-category'),
|
||||
options: goodsCategory,
|
||||
props: {
|
||||
value: 'category_id',
|
||||
label: 'category_name',
|
||||
children: 'child_list'
|
||||
}
|
||||
});
|
||||
_cascader.changeEvent(function (value, node) {
|
||||
typeof callback == 'function' && callback(value, node)
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
253
addon/virtualevaluation/shop/view/comment/contents.html
Executable file
253
addon/virtualevaluation/shop/view/comment/contents.html
Executable file
@@ -0,0 +1,253 @@
|
||||
<style>
|
||||
.single-filter-box{display: flex; justify-content: space-between}
|
||||
.item-right select {margin-right: 20px;width: 80px; height: 25px;}
|
||||
.layui-form-label{width: 205px}
|
||||
.layui-form-item{display: flex;justify-content: center;}
|
||||
.layui-form-label{width: auto;}
|
||||
.layui-input-inline textarea{border:1px solid rgba(135,135,135,.2);}
|
||||
.layui-input-block textarea{border:1px solid rgba(135,135,135,.2);}
|
||||
textarea{padding: 6px;box-sizing: border-box;height: 156px;}
|
||||
</style>
|
||||
|
||||
<div class="single-filter-box">
|
||||
<button class="layui-btn" onclick="addContent()">添加评价</button>
|
||||
</div>
|
||||
<table id="content_list" lay-filter="content_list"></table>
|
||||
<!-- 搜索 -->
|
||||
|
||||
<!-- 创建评论库弹出层 -->
|
||||
<script type="text/html" id="create_content">
|
||||
<div class="goods-service">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">评价内容:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="content" id="content" cols="30" rows="10" maxlength="150"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row mid">
|
||||
<input type="hidden" name="stock_id" value="{$stock_id}">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="closeAddStockLayer()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" lay-event="rename">编辑</a>
|
||||
<a class="layui-btn" lay-event="delete">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var laytpl,save_flag = false;
|
||||
var layer;
|
||||
var form,table,element,repeat_flag = false;
|
||||
layui.use(['form','layer','laytpl' ,'element'], function() {
|
||||
form = layui.form;
|
||||
laytpl = layui.laytpl;
|
||||
var layer = layui.layer;
|
||||
element = layui.element;
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
|
||||
table = new Table({
|
||||
elem: '#content_list',
|
||||
url: ns.url("virtualevaluation://shop/comment/getContents"),
|
||||
where: {
|
||||
'stock_id': {$stock_id}
|
||||
},
|
||||
cols: [
|
||||
[{
|
||||
title: '评价内容',
|
||||
unresize: 'false',
|
||||
width: '35%',
|
||||
field: 'content'
|
||||
}, {
|
||||
title: '创建时间',
|
||||
unresize: 'false',
|
||||
width: '35%',
|
||||
templet: function(data) {
|
||||
return ns.time_to_date(data.create_time);
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'rename': //重命名
|
||||
rename(data.id)
|
||||
break;
|
||||
case 'delete': //删除
|
||||
deleteContent(data.id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 保存添加评价库
|
||||
*/
|
||||
form.on('submit(save)', function (data) {
|
||||
if (save_flag) return;
|
||||
save_flag = true;
|
||||
var stock_id = $("input[name='stock_id']").val();
|
||||
var content = $("#content").val();
|
||||
if(stock_id ==''){
|
||||
return layer.msg('必备参数不具有');
|
||||
}
|
||||
if(content ==''){
|
||||
return layer.msg('内容不能为空');
|
||||
}
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("virtualevaluation://shop/comment/addcontent"),
|
||||
data: {content:content,stock_id:stock_id},
|
||||
success: function (res) {
|
||||
save_flag = false;
|
||||
layer.msg(res.message);
|
||||
listenerHash(); // 刷新页面
|
||||
layer.closeAll();
|
||||
}
|
||||
})
|
||||
})
|
||||
/**
|
||||
* 保存添加评价库
|
||||
*/
|
||||
form.on('submit(editSave)', function (data) {
|
||||
if (save_flag) return;
|
||||
save_flag = true;
|
||||
var content = $("#editcontent").val();
|
||||
var id = $("input[name='id']").val();
|
||||
if(id==''){
|
||||
return layer.msg('必须参数不可少');
|
||||
}
|
||||
if(content==''){
|
||||
return layer.msg('评价不能为空');
|
||||
}
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("virtualevaluation://shop/comment/editcontent"),
|
||||
data: {content:content,id:id},
|
||||
success: function (res) {
|
||||
save_flag = false;
|
||||
layer.msg(res.message);
|
||||
listenerHash(); // 刷新页面
|
||||
layer.closeAll();
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
});
|
||||
function closeAddStockLayer() {
|
||||
layer.close(add_stock_layer);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
function addContent() {
|
||||
laytpl($("#create_content").html()).render({}, function(html) {
|
||||
add_stock_layer = layer.open({
|
||||
type: 1,
|
||||
title: '添加评价',
|
||||
area: ['500px', '300px'],
|
||||
content: html,
|
||||
success: function(layero, index) {
|
||||
form.render();
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
function rename(id){
|
||||
$.ajax({
|
||||
url: ns.url("virtualevaluation://shop/comment/getcontentinfo"),
|
||||
data: {
|
||||
id:id
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
repeat_flag = false;
|
||||
var id = res.data.id;
|
||||
var content = res.data.content;
|
||||
var html = `<div class="layui-form form-wrap">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label" style="width:auto"><span class="required">*</span>评价内容:</label>
|
||||
<div class="layui-input-block" style="margin-left: 0;">
|
||||
<input name="id" type="hidden" lay-verify="required" value="`+ id +`" class="layui-input len-mid">
|
||||
<textarea name="editcontent" id="editcontent" cols="30" rows="10" >`+content+`</textarea>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row mid">
|
||||
<button class="layui-btn" lay-submit lay-filter="editSave">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="closeAddStockLayer()">返回</button>
|
||||
</div>
|
||||
</div>`;
|
||||
add_stock_layer=layer.open({
|
||||
type: 1,
|
||||
shadeClose: true,
|
||||
shade: 0.3,
|
||||
offset: 'auto',
|
||||
scrollbar: true,
|
||||
fixed: false,
|
||||
title: "编辑评价",
|
||||
area: ['450px', 'auto'],
|
||||
content: html,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
function deleteContent(id){
|
||||
if (repeat_flag) return false;
|
||||
repeat_flag = true;
|
||||
|
||||
layer.confirm('确定要删除该评价吗?', function(index) {
|
||||
layer.close(index);
|
||||
$.ajax({
|
||||
url: ns.url("virtualevaluation://shop/comment/deletecontent"),
|
||||
data: {
|
||||
id:id
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
946
addon/virtualevaluation/shop/view/comment/goods_lists.html
Executable file
946
addon/virtualevaluation/shop/view/comment/goods_lists.html
Executable file
@@ -0,0 +1,946 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/goods_lists.css">
|
||||
<link rel="stylesheet" type="text/css" href="__STATIC__/ext/searchable_select/searchable_select.css" />
|
||||
<style>
|
||||
.batch-set-wrap{height: auto;}
|
||||
.layui-input-block textarea{border: 1px solid #D2D2D2;}
|
||||
.layui-input-block textarea:focus{border: 1px solid var(--base-color);}
|
||||
/* 底部btn位置 */
|
||||
.content-box{position: relative;}
|
||||
.footer-btn{width: 100%;position: absolute;left: -20px;bottom: 20px;}
|
||||
.layui-layout-admin .layui-body .body-content{padding-top:15px !important;}
|
||||
</style>
|
||||
|
||||
<!-- 筛选面板 -->
|
||||
<div class="screen layui-collapse" lay-filter="selection_panel">
|
||||
<div class="layui-colla-item">
|
||||
<form class="layui-colla-content layui-form layui-show">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="search_text" placeholder="请输入商品名称" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商品分类:</label>
|
||||
<div class="layui-input-inline">
|
||||
{include file="comment/category_select" /}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">销量:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="start_sale" id="start_sale" lay-verify="int" placeholder="最低销量" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
<div class="layui-form-mid">-</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="end_sale" id="end_sale" lay-verify="int" placeholder="最高销量" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商品类型:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="goods_class" lay-filter="goods_class">
|
||||
<option value="">全部</option>
|
||||
<option value="1">实物商品</option>
|
||||
<option value="2">虚拟商品</option>
|
||||
{if $virtualcard_exit}<option value="3">电子卡密</option>{/if}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商品分组:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="label_id" lay-filter="label_id">
|
||||
<option value="">全部</option>
|
||||
{foreach name="$label_list" item="vo"}
|
||||
<option value="{$vo['id']}">{$vo['label_name']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">营销活动:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="promotion_type" lay-filter="promotion_type">
|
||||
<option value="">全部</option>
|
||||
{foreach name="$promotion_type" item="vo"}
|
||||
<option value="{$vo['type']}">{$vo['name']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="stockalarm" value="{$stockalarm}"/>
|
||||
<input type="hidden" name="goods_state" value="{$goods_state}"/>
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="search">筛选</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-tab table-tab" lay-filter="goods_list_tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li {if $goods_state == '' && $stockalarm == 0}class="layui-this"{/if} lay-id="">全部</li>
|
||||
<li {if $goods_state == '1'}class="layui-this"{/if} lay-id="1" data-type="goods_state">销售中</li>
|
||||
<li {if $goods_state == '0'}class="layui-this"{/if} lay-id="0" data-type="goods_state">仓库中</li>
|
||||
<li {if $stockalarm == '1'} class="layui-this"{/if} lay-id="1" data-type="stockalarm">预警中</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<table id="goods_list" lay-filter="goods_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 商品信息 -->
|
||||
<script type="text/html" id="goods_info">
|
||||
<div class="table-title">
|
||||
<div class="contraction" data-goods-id="{{d.goods_id}}" data-open="0"></div>
|
||||
<div class="title-pic" id="goods_img_{{d.goods_id}}">
|
||||
<img layer-src="{{ns.img(d.goods_image.split(',')[0], 'big')}}" src="{{ns.img(d.goods_image.split(',')[0], 'small')}}"/>
|
||||
</div>
|
||||
<div class="title-content">
|
||||
<a href="javascript:;" class="multi-line-hiding text-color-sub" title="{{d.goods_name}}" lay-event="preview">{{d.goods_name}}</a>
|
||||
{{# if(d.promotion_addon && d.promotion_addon_list){ }}
|
||||
<span class="promotion-addon">
|
||||
{{# for(var i=0;i<d.promotion_addon_list.length;i++){ }}
|
||||
<a href="{{ns.href( d.promotion_addon_list[i].url )}}" target="_blank"><span class="bg-color" title="{{d.promotion_addon_list[i].name}}">{{ d.promotion_addon_list[i].short }}</span></a>
|
||||
{{# } }}
|
||||
</span>
|
||||
{{# } }}
|
||||
{{# if(d.is_consume_discount ==1){ }}
|
||||
<span class="promotion-addon vips_price" data-goods-id="{{d.goods_id}}" data-open="0">
|
||||
<span class="layui-bg-black " title="会员价"><span class="iconfont iconhuiyuan icon">svip</span></span>
|
||||
</span>
|
||||
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="operation-wrap" id="goods_id" data-goods-id="{{d.goods_id}}">
|
||||
<div class="popup-qrcode-wrap"><img class="popup-qrcode-loadimg" src="__STATIC__/loading/loading.gif" /></div>
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" lay-event="batch_set">添加评论</a>
|
||||
<a class="layui-btn" lay-event="batch_add">批量添加</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 批量操作 -->
|
||||
<script type="text/html" id="toolbarOperation">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="batch_set">批量评论</button>
|
||||
</script>
|
||||
|
||||
<!-- 批量操作 -->
|
||||
<script type="text/html" id="batchOperation">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="batch_set">批量评论</button>
|
||||
</script>
|
||||
|
||||
<!-- SKU商品列表 -->
|
||||
<script type="text/html" id="skuList">
|
||||
<tr class="js-sku-list-{{d.index}}" id="sku_img_{{d.index}}">
|
||||
<td></td>
|
||||
{{# if (d.member_price_is_exit == 1) { }}
|
||||
<td colspan="9">
|
||||
{{# } else { }}
|
||||
<td colspan="8">
|
||||
{{# } }}
|
||||
<ul class="sku-list">
|
||||
{{# for(var i=0;i<d.list.length;i++){ }}
|
||||
<li>
|
||||
<div class="img-wrap">
|
||||
<img layer-src src="{{ns.img(d.list[i].sku_image, 'small')}}">
|
||||
</div>
|
||||
<div class="info-wrap">
|
||||
<span class="sku-name">{{d.list[i].sku_name}}</span>
|
||||
<div>
|
||||
{{# if(d.list[i].stock_alarm> 0 && d.list[i].stock<=d.list[i].stock_alarm){ }}
|
||||
<span class="stock" >库存:<label style="color:red;">{{d.list[i].stock}}(库存不足)</label></span>
|
||||
{{# }else{ }}
|
||||
<span class="stock">库存:{{d.list[i].stock}}</span>
|
||||
{{# } }}
|
||||
<span class="sale_num">销量:{{d.list[i].sale_num}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="prices">
|
||||
原价: ¥{{d.list[i].price}}
|
||||
{{# if (d.list[i].member_price_list) { }}
|
||||
{{# layui.each(d.list[i].member_price_list, function(index, item){ }}
|
||||
<p class="vip_price">{{ item.level_name }}: ¥{{ item.member_price }}</p>
|
||||
{{# }); }}
|
||||
{{# } }}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
{{# } }}
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</script>
|
||||
|
||||
<!-- 编辑库存html -->
|
||||
<script type="text/html" id="edit_stock">
|
||||
<div class="layui-form" id="edit_stock_block" lay-filter="form">
|
||||
<table class="layui-table" lay-skin="line">
|
||||
<colgroup>
|
||||
<col width="16%">
|
||||
<col width="12%">
|
||||
<col width="12%">
|
||||
<col width="12%">
|
||||
<col width="12%">
|
||||
<col width="12%">
|
||||
<col width="12%">
|
||||
<col width="12%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>sku名称</th>
|
||||
<th>销售价</th>
|
||||
<th>划线价</th>
|
||||
<th>成本价</th>
|
||||
<th>库存</th>
|
||||
<th>重量(kg)</th>
|
||||
<th>体积(m³)</th>
|
||||
<th>sku编码</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{# layui.each(d, function(index, item){ }}
|
||||
<tr>
|
||||
<td><input type="hidden" name="sku_list[{{index}}][sku_id]" value="{{ item.sku_id }}" class="layui-input">{{ item.sku_name }}</td>
|
||||
<td><input type="number" name="sku_list[{{index}}][price]" value="{{ item.price }}" class="layui-input" lay-verify="flo"></td>
|
||||
<td><input type="number" name="sku_list[{{index}}][market_price]" value="{{ item.market_price }}" class="layui-input" lay-verify="flo"></td>
|
||||
<td><input type="number" name="sku_list[{{index}}][cost_price]" value="{{ item.cost_price }}" class="layui-input" lay-verify="flo"></td>
|
||||
<td><input type="number" name="sku_list[{{index}}][stock]" value="{{ item.stock }}" class="layui-input" lay-verify="int"></td>
|
||||
<td><input type="number" name="sku_list[{{index}}][weight]" value="{{ item.weight }}" class="layui-input" lay-verify="flo"></td>
|
||||
<td><input type="number" name="sku_list[{{index}}][volume]" value="{{ item.volume }}" class="layui-input" lay-verify="flo"></td>
|
||||
<td><input type="text" name="sku_list[{{index}}][sku_no]" value="{{ item.sku_no }}" class="layui-input"></td>
|
||||
</tr>
|
||||
{{# }); }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="edit_stock">确定</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="closeStock()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 批量操作 -->
|
||||
<script type="text/html" id="batchSet">
|
||||
<div class="batch-set-wrap">
|
||||
<div class="set-wrap">
|
||||
<div class="content-wrap content-box">
|
||||
<div class="tab-item tab-show group">
|
||||
<div class="layui-form">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>评价时间:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="evaluate_time" id="evaluate_time" placeholder="评价时间" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item goods-image-wrap" >
|
||||
<label class="layui-form-label"><span class="required">*</span>会员头像:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="js-goods-image">+</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline" >
|
||||
<label class="layui-form-label"><span class="required">*</span>会员昵称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="hidden" id="test" value="{{d.goods_id}}">
|
||||
<input type="text" name="member_name" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline" >
|
||||
<label class="layui-form-label"><span class="required">*</span>评价等级:</label>
|
||||
<div class="layui-input-block">
|
||||
<div id="test2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item goods-image-wrap" >
|
||||
<label class="layui-form-label"><span class="required">*</span>评价内容:</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="content" id="content" cols="30" rows="10" maxlength="150"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item goods-image-wrap">
|
||||
<label class="layui-form-label">评价图:</label>
|
||||
<div class="layui-input-block">
|
||||
<!--商品主图项-->
|
||||
<div class="pj-goods-image">+</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-item result">
|
||||
<img src="SHOP_IMG/success.png">
|
||||
<div class="text">设置成功</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-wrap footer-btn">
|
||||
<button class="layui-btn layui-btn-primary" onclick="layer.closeAll()">取消</button>
|
||||
<button class="layui-btn" onclick="batchSetting()">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!--商品主图列表-->
|
||||
<script type="text/html" id="goodsImage">
|
||||
{{# if(d.list.length){ }}
|
||||
{{# for(var i=0;i<d.list.length;i++){ }}
|
||||
<div class="item upload_img_square_item" data-index="{{i}}">
|
||||
<div class="img-wrap">
|
||||
<img src="{{ns.img(d.list[i],'small')}}" layer-src="{{ns.img(d.list[i],'big')}}">
|
||||
</div>
|
||||
<div class="operation">
|
||||
<i title="图片预览" class="iconfont iconreview js-preview"></i>
|
||||
<i title="删除图片" class="layui-icon layui-icon-delete js-delete" data-index="{{i}}"></i>
|
||||
<div class="replace_img" data-index="{{i}}">点击替换</div>
|
||||
</div>
|
||||
</div>
|
||||
{{# } }}
|
||||
{{# if(d.list.length < d.max){ }}
|
||||
<div class="item js-add-goods-image upload_img_square">+</div>
|
||||
{{# } }}
|
||||
{{# }else{ }}
|
||||
<div class="item js-add-goods-image upload_img_square">+</div>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<!--选择商品分类-->
|
||||
<script type="text/html" id="selectedCategory">
|
||||
|
||||
<div class="category-list">
|
||||
|
||||
<div class="item">
|
||||
<!--后续做搜索-->
|
||||
<ul>
|
||||
{foreach name="$goods_category_list" item="vo"}
|
||||
{{# if(d.category_id_1 == '{$vo['category_id']}' ){ }}
|
||||
<li data-category-id="{$vo['category_id']}" data-commission-rate="{$vo['commission_rate']}" data-level="{$vo['level']}" class="selected">
|
||||
{{# }else{ }}
|
||||
<li data-category-id="{$vo['category_id']}" data-commission-rate="{$vo['commission_rate']}" data-level="{$vo['level']}">
|
||||
{{# } }}
|
||||
<span class="category-name">{$vo['category_name']}</span>
|
||||
<span class="right-arrow">></span>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="item" data-level="2">
|
||||
<!--后续做搜索-->
|
||||
<ul></ul>
|
||||
</div>
|
||||
|
||||
<div class="item" data-level="3">
|
||||
<!--后续做搜索-->
|
||||
<ul></ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="selected-category-wrap">
|
||||
<label>您当前选择的是:</label>
|
||||
<span class="js-selected-category"></span>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var member_price_is_exit ="{$memberprice_is_exit}";
|
||||
</script>
|
||||
<script type="text/javascript" charset="utf-8" src="__STATIC__/ext/ueditor/ueditor.config.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="__STATIC__/ext/ueditor/ueditor.all.js"> </script>
|
||||
<script type="text/javascript" charset="utf-8" src="__STATIC__/ext/ueditor/lang/zh-cn/zh-cn.js"></script>
|
||||
<script>
|
||||
var goodsImage = null;
|
||||
var pggoodsImage = null;
|
||||
var laytpl, form, element, table;
|
||||
$(function () {
|
||||
$("body").off("click", ".vips_price").on("click", ".vips_price", function () {
|
||||
var goods_id = $(this).attr("data-goods-id");
|
||||
var open = $(this).attr("data-open");
|
||||
var open_t = $(this).parent().siblings('.contraction').attr("data-open");
|
||||
var tr = $(this).parent().parent().parent().parent().parent();
|
||||
var index = tr.attr("data-index");
|
||||
|
||||
if ((parseInt(open)+parseInt(open_t)) > 0) {
|
||||
$(this).parent().siblings('.contraction').children("span").text("+");
|
||||
$(".js-sku-list-" + index).remove();
|
||||
} else {
|
||||
$(this).parent().siblings('.contraction').children("span").text("-");
|
||||
$.ajax({
|
||||
url: ns.url("shop/goods/getGoodsSkuList"),
|
||||
data: {goods_id: goods_id},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function (res) {
|
||||
var list = res.data;
|
||||
var sku_list = $("#skuList").html();
|
||||
var data = {
|
||||
list: list,
|
||||
index: index,
|
||||
member_price_is_exit: member_price_is_exit
|
||||
};
|
||||
laytpl(sku_list).render(data, function (html) {
|
||||
tr.after(html);
|
||||
});
|
||||
|
||||
layer.photos({
|
||||
photos: '.img-wrap',
|
||||
anim: 5
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
$(this).attr("data-open", (open == 0 ? 1 : 0));
|
||||
$(this).parent().siblings('.contraction').attr("data-open", (open == 0 ? 1 : 0))
|
||||
});
|
||||
|
||||
layui.use(['form', 'laytpl', 'element'], function () {
|
||||
form = layui.form;
|
||||
element = layui.element;
|
||||
laytpl = layui.laytpl;
|
||||
|
||||
form.render();
|
||||
refreshTable();
|
||||
|
||||
element.on('tab(goods_list_tab)', function () {
|
||||
var type = this.getAttribute('data-type');
|
||||
$("input[name='goods_state']").val("");
|
||||
if (type) {
|
||||
if (type == "goods_state") {
|
||||
$("input[name='stockalarm']").val("");
|
||||
}
|
||||
var id = this.getAttribute('lay-id');
|
||||
$("input[name='" + type + "']").val(id);
|
||||
} else {
|
||||
$("input[name='stockalarm']").val("");
|
||||
}
|
||||
|
||||
var html = '<button class="layui-btn layui-btn-primary" lay-event="batch_set">批量评价</button>';
|
||||
|
||||
$("#toolbarOperation").html(html);
|
||||
$("#batchOperation").html(html);
|
||||
|
||||
refreshTable();
|
||||
|
||||
});
|
||||
|
||||
// 监听工具栏操作
|
||||
table.tool(function (obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'batch_set':
|
||||
laytpl($("#batchSet").html()).render(data, function (html) {
|
||||
layer.open({
|
||||
title: "评价设置",
|
||||
type: 1,
|
||||
area: ['600px', '750px'],
|
||||
content: html,
|
||||
success: function(){
|
||||
layui.use(['form', 'laydate','rate'], function() {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate;
|
||||
|
||||
form.render();
|
||||
var myDate = ns.time_to_date(new Date().getTime() / 1000);
|
||||
|
||||
laydate.render({
|
||||
elem: '#evaluate_time',
|
||||
type: 'datetime',
|
||||
max: myDate
|
||||
});
|
||||
var rate = layui.rate;
|
||||
//显示文字
|
||||
dengji = '';
|
||||
rate.render({
|
||||
elem: '#test2'
|
||||
,choose: function(value){
|
||||
dengji = value;
|
||||
}
|
||||
,text: true //开启文本
|
||||
});
|
||||
|
||||
});
|
||||
goodsImage = [];
|
||||
pggoodsImage = [];
|
||||
//渲染商品主图列表
|
||||
refreshGoodsImage(goodsImage,1,'js-goods-image');
|
||||
|
||||
refreshGoodsImage(pggoodsImage,5,'pj-goods-image');
|
||||
}
|
||||
});
|
||||
});
|
||||
break;
|
||||
case 'batch_add':
|
||||
batchAdd(data.goods_id);
|
||||
break
|
||||
;
|
||||
}
|
||||
});
|
||||
|
||||
// 批量操作
|
||||
table.bottomToolbar(function (obj) {
|
||||
|
||||
if (obj.data.length < 1) {
|
||||
layer.msg('请选择要操作的数据');
|
||||
return;
|
||||
}
|
||||
var id_array = new Array();
|
||||
for (i in obj.data) id_array.push(obj.data[i].goods_id);
|
||||
switch (obj.event) {
|
||||
case 'batch_set':
|
||||
layer.open({
|
||||
title: "评价设置",
|
||||
type: 1,
|
||||
area: ['600px', '750px'],
|
||||
content: $('#batchSet').html(),
|
||||
success: function(){
|
||||
layui.use(['form', 'laydate','rate'], function() {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate;
|
||||
|
||||
form.render();
|
||||
|
||||
laydate.render({
|
||||
elem: '#evaluate_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
var rate = layui.rate;
|
||||
//显示文字
|
||||
dengji = '';
|
||||
rate.render({
|
||||
elem: '#test2'
|
||||
,choose: function(value){
|
||||
dengji = value
|
||||
}
|
||||
,text: true //开启文本
|
||||
});
|
||||
|
||||
});
|
||||
goodsImage = [];
|
||||
pggoodsImage = [];
|
||||
//渲染商品主图列表
|
||||
refreshGoodsImage(goodsImage,1,'js-goods-image');
|
||||
|
||||
refreshGoodsImage(pggoodsImage,5,'pj-goods-image');
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
table.toolbar(function(obj){
|
||||
if (obj.data.length < 1) {
|
||||
layer.msg('请选择要操作的数据');
|
||||
return;
|
||||
}
|
||||
var id_array = new Array();
|
||||
for (i in obj.data) id_array.push(obj.data[i].goods_id);
|
||||
switch (obj.event) {
|
||||
case 'batch_set':
|
||||
layer.open({
|
||||
title: "评价设置",
|
||||
type: 1,
|
||||
area: ['600px', '750px'],
|
||||
content: $('#batchSet').html(),
|
||||
success: function(){
|
||||
layui.use(['form', 'laydate','rate'], function() {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate;
|
||||
|
||||
form.render();
|
||||
|
||||
laydate.render({
|
||||
elem: '#evaluate_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
});
|
||||
var rate = layui.rate;
|
||||
//显示文字
|
||||
dengji = 5;
|
||||
rate.render({
|
||||
elem: '#test2'
|
||||
,value: 5 //初始值
|
||||
// ,text: true //开启文本
|
||||
// ,choose: function(value){
|
||||
// dengji = value
|
||||
// },
|
||||
});
|
||||
|
||||
goodsImage = [];
|
||||
pggoodsImage = [];
|
||||
//渲染商品主图列表
|
||||
refreshGoodsImage(goodsImage,1,'js-goods-image');
|
||||
|
||||
refreshGoodsImage(pggoodsImage,5,'pj-goods-image');
|
||||
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
// 搜索功能
|
||||
form.on('submit(search)', function (data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// 验证
|
||||
form.verify({
|
||||
int: function (value) {
|
||||
if (value < 0) {
|
||||
return '销量不能小于0!'
|
||||
}
|
||||
if (value % 1 != 0) {
|
||||
return '销量不能为小数!'
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* 刷新表格列表
|
||||
*/
|
||||
function refreshTable() {
|
||||
var cols = [
|
||||
[{
|
||||
type: 'checkbox',
|
||||
unresize: 'false',
|
||||
width: '3%'
|
||||
}, {
|
||||
title: '商品信息',
|
||||
unresize: 'false',
|
||||
width: '31%',
|
||||
templet: '#goods_info'
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '价格',
|
||||
unresize: 'false',
|
||||
width: '7%',
|
||||
align: 'right',
|
||||
templet: function (data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
},{
|
||||
field: 'sale_num',
|
||||
title: '销量',
|
||||
unresize: 'false',
|
||||
width: '4%',
|
||||
sort: true
|
||||
},{
|
||||
field: 'evaluate',
|
||||
title: '评价数',
|
||||
unresize: 'false',
|
||||
width: '5%',
|
||||
}, {
|
||||
field: 'success_evaluate_num',
|
||||
title: '审核通过',
|
||||
unresize: 'false',
|
||||
width: '5%',
|
||||
}, {
|
||||
field: 'fail_evaluate_num',
|
||||
unresize:'false',
|
||||
title: `审核未通过`,
|
||||
width: '5%',
|
||||
align: 'center',
|
||||
}, {
|
||||
title: '创建时间',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
return ns.time_to_date(data.create_time);
|
||||
}
|
||||
}, {
|
||||
title: '状态',
|
||||
unresize: 'false',
|
||||
width: '9%',
|
||||
templet: function (data) {
|
||||
var str = '';
|
||||
if (data.goods_state == 1) {
|
||||
str = '销售中';
|
||||
} else if (data.goods_state == 0) {
|
||||
str = '仓库中';
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
];
|
||||
|
||||
if(member_price_is_exit == 1){
|
||||
cols = [
|
||||
[{
|
||||
type: 'checkbox',
|
||||
unresize: 'false',
|
||||
width: '3%'
|
||||
}, {
|
||||
title: '商品信息',
|
||||
unresize: 'false',
|
||||
width: '33%',
|
||||
templet: '#goods_info'
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '价格',
|
||||
unresize: 'false',
|
||||
width: '7%',
|
||||
align: 'right',
|
||||
templet: function (data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
}, {
|
||||
field: 'sale_num',
|
||||
title: '销量',
|
||||
unresize: 'false',
|
||||
width: '4%',
|
||||
sort: true
|
||||
}, {
|
||||
field: 'evaluate',
|
||||
title: '评价数',
|
||||
unresize: 'false',
|
||||
width: '5%',
|
||||
},{
|
||||
field: 'success_evaluate_num',
|
||||
title: '审核通过',
|
||||
unresize: 'false',
|
||||
width: '5%',
|
||||
},{
|
||||
field: 'fail_evaluate_num',
|
||||
unresize:'false',
|
||||
title: `审核未通过`,
|
||||
width: '5%',
|
||||
align: 'center',
|
||||
}, {
|
||||
title: '创建时间',
|
||||
unresize: 'false',
|
||||
width: '12%',
|
||||
templet: function (data) {
|
||||
return ns.time_to_date(data.create_time);
|
||||
}
|
||||
}, {
|
||||
title: '状态',
|
||||
unresize: 'false',
|
||||
width: '6%',
|
||||
templet: function (data) {
|
||||
var str = '';
|
||||
if (data.goods_state == 1) {
|
||||
str = '销售中';
|
||||
} else if (data.goods_state == 0) {
|
||||
str = '仓库中';
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
];
|
||||
}
|
||||
|
||||
table = new Table({
|
||||
id: 'goods_list',
|
||||
elem: '#goods_list',
|
||||
url: ns.url("virtualevaluation://shop/comment/goodslists"),
|
||||
cols: cols,
|
||||
toolbar: '#toolbarOperation',
|
||||
bottomToolbar: "#batchOperation",
|
||||
where: {
|
||||
search_text: $("input[name='search_text']").val(),
|
||||
goods_state: $("input[name='goods_state']").val(),
|
||||
start_sale: $("input[name='start_sale']").val(),
|
||||
end_sale: $("input[name='end_sale']").val(),
|
||||
category_id: $("input[name='category_id']").val(),
|
||||
goods_class: $("select[name='goods_class'] option:checked").val(),
|
||||
label_id: $("select[name='label_id'] option:checked").val(),
|
||||
promotion_type: $("select[name='promotion_type'] option:checked").val(),
|
||||
stockalarm: $("input[name='stockalarm']").val()
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function closeStock() {
|
||||
layer.close(layer_stock);
|
||||
}
|
||||
|
||||
// 批量设置
|
||||
var setSub = false;
|
||||
function batchSetting(){
|
||||
var id_array = new Array(),
|
||||
setType = $('.batch-set-wrap .tab-wrap .active').attr('data-type'),
|
||||
checkedData = table.checkStatus('goods_list').data,
|
||||
field = {}
|
||||
var goods_id = $("#test").val();
|
||||
|
||||
for (i in checkedData) id_array.push(checkedData[i].goods_id);
|
||||
if (id_array.toString()==''){
|
||||
id_array = goods_id;
|
||||
}
|
||||
|
||||
field.evaluate_time = $("input[name='evaluate_time']").val();
|
||||
field.member_headimg = goodsImage;
|
||||
field.member_name = $("input[name='member_name']").val();
|
||||
field.content = $("#content").val();
|
||||
field.dengji = dengji;
|
||||
field.pingjia_img = pggoodsImage;
|
||||
|
||||
if(field.evaluate_time ==''){
|
||||
layer.msg('请输入时间');
|
||||
return false
|
||||
}else if(field.member_headimg==''){
|
||||
layer.msg('请选择头像');
|
||||
return false
|
||||
}else if(field.member_name==''){
|
||||
layer.msg('请输入昵称');
|
||||
return false
|
||||
}else if(field.content==''){
|
||||
layer.msg('请输入内容');
|
||||
return false
|
||||
}else if(field.dengji==''){
|
||||
layer.msg('请选择等级');
|
||||
return false
|
||||
}
|
||||
if (setSub) return;
|
||||
setSub = true;
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: ns.url("virtualevaluation://shop/comment/setting"),
|
||||
data: {
|
||||
'type': setType,
|
||||
'goods_ids': id_array.toString(),
|
||||
'field' : JSON.stringify(field)
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (res) {
|
||||
setSub = false;
|
||||
if (res.code >= 0) {
|
||||
$('.batch-set-wrap .footer-wrap').hide();
|
||||
$('.batch-set-wrap .content-wrap .tab-item.result').addClass('tab-show').siblings('.tab-item').removeClass('tab-show');
|
||||
table.reload();
|
||||
} else {
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 监听单元格编辑
|
||||
$(".layui-colla-title").on("click", function(){
|
||||
if($(".layui-colla-title>i").hasClass("layui-icon-down") === false && $(".layui-colla-title>i").hasClass("layui-icon-up") === false){
|
||||
$(".layui-colla-title .put-open").html("展开");
|
||||
}else if($(".layui-colla-title>i").hasClass("layui-icon-down") === true){
|
||||
$(".layui-colla-title .put-open").html("展开");
|
||||
}else if($(".layui-colla-title>i").hasClass("layui-icon-up") === true){
|
||||
$(".layui-colla-title .put-open").html("收起");
|
||||
}
|
||||
});
|
||||
|
||||
/***
|
||||
* @param imgArr 存储图片集合
|
||||
* @param imgMax 最大图片数量
|
||||
* @param imgDom 图片dom
|
||||
*/
|
||||
function refreshGoodsImage(imgArr,imgMax,imgDom) {
|
||||
|
||||
var goods_image_template = $("#goodsImage").html();
|
||||
var data = {
|
||||
list: imgArr,
|
||||
max: imgMax
|
||||
};
|
||||
var imageDom = "." + imgDom;
|
||||
|
||||
laytpl(goods_image_template).render(data, function (html) {
|
||||
|
||||
$(imageDom).html(html);
|
||||
|
||||
$(imageDom).find(".js-add-goods-image").click(function (){
|
||||
openAlbum(function (data) {
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (imgArr.length < imgMax) imgArr.push(data[i].pic_path);
|
||||
}
|
||||
refreshGoodsImage(imgArr,imgMax,imgDom);
|
||||
}, imgMax);
|
||||
});
|
||||
|
||||
//加载图片放大
|
||||
loadImgMagnify();
|
||||
|
||||
if (imgArr.length) {
|
||||
|
||||
//预览
|
||||
$(imageDom).find('.js-preview').click(function () {
|
||||
$(this).parent().prev().find("img").click();
|
||||
});
|
||||
|
||||
//图片删除
|
||||
$(imageDom).find('.js-delete').click(function () {
|
||||
var index = $(this).attr("data-index");
|
||||
imgArr.splice(index, 1);
|
||||
refreshGoodsImage(imgArr,imgMax,imgDom);
|
||||
});
|
||||
|
||||
//图片替换
|
||||
$(imageDom).find('.replace_img').click(function () {
|
||||
var index = $(this).attr("data-index");
|
||||
openAlbum(function (data) {
|
||||
imgArr[index] = data[0].pic_path;
|
||||
refreshGoodsImage(imgArr,imgMax,imgDom);
|
||||
}, 1);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function batchAdd(goods_id){
|
||||
location.hash = ns.hash("virtualevaluation://shop/comment/batchadd?goods_id=" + goods_id)
|
||||
}
|
||||
|
||||
</script>
|
||||
<script>
|
||||
layui.use(['form', 'laydate','rate'], function() {
|
||||
var form = layui.form;
|
||||
var laydate = layui.laydate;
|
||||
form.render();
|
||||
laydate.render({
|
||||
elem: '#evaluate_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
311
addon/virtualevaluation/shop/view/comment/stock.html
Executable file
311
addon/virtualevaluation/shop/view/comment/stock.html
Executable file
@@ -0,0 +1,311 @@
|
||||
<style>
|
||||
.single-filter-box{display: flex; justify-content: space-between}
|
||||
.item-right select {margin-right: 20px;width: 80px; height: 25px;}
|
||||
.layui-form-label{width: 205px}
|
||||
.layui-input-inline>textarea{min-width:462px;max-width: 462px;min-height:20px;max-height: 68px;background:rgba(135,135,135,.2);border:none;}
|
||||
.layui-layer-content{height: auto !important; }
|
||||
.layui-form-item {margin-bottom: 30px;}
|
||||
.layui-layout-admin .single-filter-box {
|
||||
padding-top: 14px !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="single-filter-box">
|
||||
<button class="layui-btn" onclick="addStock()">添加评价库</button>
|
||||
</div>
|
||||
<table id="stock_list" lay-filter="stock_list"></table>
|
||||
|
||||
<!-- 创建评论库弹出层 -->
|
||||
<script type="text/html" id="create_stock">
|
||||
<div class="goods-service">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">评价库名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="stock_name" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row mid">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="closeAddStockLayer()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script type="text/html" id="edit_stock">
|
||||
<div class="goods-service">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="stock_name" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row mid">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="closeAddStockLayer()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" lay-event="edit">评价管理</a>
|
||||
<a class="layui-btn" lay-event="rename">重命名</a>
|
||||
<a class="layui-btn" lay-event="delete">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var laytpl, save_flag = false;
|
||||
var layer;
|
||||
var form, table, element, repeat_flag = false;
|
||||
layui.use(['form', 'layer', 'laytpl', 'element'], function() {
|
||||
form = layui.form;
|
||||
laytpl = layui.laytpl;
|
||||
var layer = layui.layer;
|
||||
element = layui.element;
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
|
||||
table = new Table({
|
||||
elem: '#stock_list',
|
||||
url: ns.url("virtualevaluation://shop/comment/stock"),
|
||||
cols: [
|
||||
[{
|
||||
title: '评价库名称',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
field: 'stock_name'
|
||||
}, {
|
||||
title: '评价条数',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
field: 'num'
|
||||
}, {
|
||||
title: '创建时间',
|
||||
unresize: 'false',
|
||||
width: '15%',
|
||||
templet: function(data) {
|
||||
return ns.time_to_date(data.create_time);
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data;
|
||||
num=data.num;
|
||||
switch (obj.event) {
|
||||
case 'rename': //重命名
|
||||
rename(data.stock_id);
|
||||
break;
|
||||
case 'delete': //删除
|
||||
deleteStock(data.stock_id,num);
|
||||
break;
|
||||
case 'edit': //编辑
|
||||
editStock(data.stock_id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 保存添加评价库
|
||||
*/
|
||||
form.on('submit(save)', function(data) {
|
||||
if (save_flag) return;
|
||||
save_flag = true;
|
||||
var stock_name = $("input[name='stock_name']").val();
|
||||
if (stock_name == '') {
|
||||
return layer.msg('请填写名称');
|
||||
}
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("virtualevaluation://shop/comment/addstock"),
|
||||
data: {
|
||||
stock_name: stock_name
|
||||
},
|
||||
success: function(res) {
|
||||
save_flag = false;
|
||||
layer.msg(res.message);
|
||||
listenerHash(); // 刷新页面
|
||||
layer.closeAll();
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
/**
|
||||
* 保存添加评价库
|
||||
*/
|
||||
form.on('submit(editSave)', function(data) {
|
||||
if (save_flag) return;
|
||||
save_flag = true;
|
||||
var stock_name = $("input[name='stockname']").val();
|
||||
var stock_id = $("input[name='stock_id']").val();
|
||||
if (stock_id == '') {
|
||||
return layer.msg('必须参数不可少');
|
||||
}
|
||||
if (stock_name == '') {
|
||||
return layer.msg('请填写名称');
|
||||
}
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("virtualevaluation://shop/comment/editstock"),
|
||||
data: {
|
||||
stock_name: stock_name,
|
||||
stock_id: stock_id
|
||||
},
|
||||
success: function(res) {
|
||||
save_flag = false;
|
||||
layer.msg(res.message);
|
||||
listenerHash(); // 刷新页面
|
||||
layer.closeAll();
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
function closeAddStockLayer() {
|
||||
layer.close(add_stock_layer);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
function addStock() {
|
||||
laytpl($("#create_stock").html()).render({}, function(html) {
|
||||
add_stock_layer = layer.open({
|
||||
type: 1,
|
||||
title: '添加评价库',
|
||||
area: ['500px', '200px'],
|
||||
content: html,
|
||||
success: function(layero, index) {
|
||||
form.render();
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
function rename(stock_id) {
|
||||
$.ajax({
|
||||
url: ns.url("virtualevaluation://shop/comment/getstockinfo"),
|
||||
data: {
|
||||
stock_id: stock_id
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
repeat_flag = false;
|
||||
var stock_id = res.data.stock_id;
|
||||
var stock_name = res.data.stock_name;
|
||||
var html =
|
||||
`<div class="layui-form form-wrap">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label" style="width:auto"><span class="required">*</span>评价库名称:</label>
|
||||
<div class="layui-input-block" style="margin-left: 0;">
|
||||
<input name="stock_id" type="hidden" lay-verify="required" value="` +
|
||||
stock_id +
|
||||
`" class="layui-input len-mid">
|
||||
<input name="stockname" type="text" lay-verify="required" value="` +
|
||||
stock_name +
|
||||
`" class="layui-input len-mid">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row mid">
|
||||
<button class="layui-btn" lay-submit lay-filter="editSave">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="closeAddStockLayer()">返回</button>
|
||||
</div>
|
||||
</div>`;
|
||||
add_stock_layer = layer.open({
|
||||
type: 1,
|
||||
shadeClose: true,
|
||||
shade: 0.3,
|
||||
offset: 'auto',
|
||||
scrollbar: true,
|
||||
fixed: false,
|
||||
title: "编辑评价库",
|
||||
area: ['450px', 'auto'],
|
||||
content: html,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
function deleteStock(stock_id,num) {
|
||||
if(num>0){
|
||||
layer.confirm('本操作将删除评论库及其评价,确定要删除吗?', function(index) {
|
||||
layer.close(index);
|
||||
$.ajax({
|
||||
url: ns.url("virtualevaluation://shop/comment/deletestock"),
|
||||
data: {
|
||||
stock_id: stock_id
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function() {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
return false
|
||||
}
|
||||
if (repeat_flag) return false;
|
||||
repeat_flag = true;
|
||||
layer.confirm('确定要删除该评价库吗?', function(index) {
|
||||
layer.close(index);
|
||||
$.ajax({
|
||||
url: ns.url("virtualevaluation://shop/comment/deletestock"),
|
||||
data: {
|
||||
stock_id: stock_id
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function() {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
function editStock(stock_id) {
|
||||
location.hash = ns.hash("virtualevaluation://shop/comment/getContents?stock_id=" + stock_id)
|
||||
}
|
||||
</script>
|
||||
2
addon/virtualevaluation/shop/view/public/css/goods_edit.css
Executable file
2
addon/virtualevaluation/shop/view/public/css/goods_edit.css
Executable file
@@ -0,0 +1,2 @@
|
||||
.add-carmichael .head{font-weight: bolder;margin-bottom: 15px;}
|
||||
.add-carmichael .layui-textarea {height: 190px;}
|
||||
BIN
addon/virtualevaluation/shop/view/public/img/comment.png
Executable file
BIN
addon/virtualevaluation/shop/view/public/img/comment.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
addon/virtualevaluation/shop/view/public/img/comment_selected.png
Executable file
BIN
addon/virtualevaluation/shop/view/public/img/comment_selected.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Reference in New Issue
Block a user