初始上传
This commit is contained in:
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