Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions

View File

@ -0,0 +1,156 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'图标', name:'accredImg' ,width:50, align:'center', renderer: function(val,item,rowIndex){
return '<img src="'+WST.conf.IMGURL+'/'+item['accredImg']+'" height="28px" />';
}},
{title:'认证名称', name:'accredName' ,width:125},
{title:'创建时间', name:'createTime' ,width:75,},
{title:'操作', name:'' ,width:60, align:'center', renderer: function(val,item,rowIndex){
var h="";
if(WST.GRANT.RZGL_02)h += "<a class='btn btn-blue' href='javascript:getForEdit(" + item['accredId'] + ")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.RZGL_03)h += "<a class='btn btn-red' href='javascript:toDel(" + item['accredId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-80,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/Accreds/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
function getForEdit(id){
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/accreds/get'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.accredId){
WST.setValues(json);
//显示原来的图片
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.accredImg+'" height="70px" />');
$('#isImg').val('ok');
toEdit(json.accredId);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(id){
if(!isInitUpload){
initUpload();
}
var title =(id==0)?"新增":"编辑";
var box = WST.open({title:title,type:1,content:$('#accredBox'),area: ['450px', '280px'],btn: ['确定','取消'],yes:function(){
$('#accredForm').submit();
},cancel:function(){
//重置表单
$('#accredForm')[0].reset();
//清空预览图
$('#preview').html('');
$('#accredImg').val('');
},end:function(){
$('#accredBox').hide();
//重置表单
$('#accredForm')[0].reset();
//清空预览图
$('#preview').html('');
$('#accredImg').val('');
}});
$('#accredForm').validator({
fields: {
accredName: {
rule:"required;",
msg:{required:"请输入认证名称"},
tip:"请输入认证名称",
ok:"",
},
accredImg: {
rule:"required;",
msg:{required:"请上传图标"},
tip:"请上传图标",
ok:"",
},
},
valid: function(form){
var params = WST.getParams('.ipt');
params.accredId = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/accreds/'+((id==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
$('#accredForm')[0].reset();
//清空预览图
$('#preview').html('');
//清空图片隐藏域
$('#accredImg').val('');
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
var isInitUpload = false;
function initUpload(){
isInitUpload = true;
//文件上传
WST.upload({
pick:'#adFilePicker',
formData: {dir:'accreds'},
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#uploadMsg').empty().hide();
//将上传的图片路径赋给全局变量
$('#accredImg').val(json.savePath+json.name);
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" height="75" />');
}else{
WST.msg(json.msg,{icon:2});
}
},
progress:function(rate){
$('#uploadMsg').show().html('已上传'+rate+"%");
}
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Accreds/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}

View File

@ -0,0 +1,50 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/accreds/accreds.js?v={$v}" type="text/javascript"></script>
<script type='text/javascript' src='__STATIC__/plugins/webuploader/webuploader.js?v={$v}'></script>
{/block}
{block name="main"}
{if WSTGrant('RZGL_01')}
<div class="wst-toolbar">
<button class="btn btn-success f-right" onclick="javascript:toEdit(0)"><i class='fa fa-plus'></i>新增</button>
<div style="clear:both"></div>
</div>
{/if}
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='accredBox' style='display:none'>
<form id='accredForm' method="post" autocomplete="off">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>认证名称<font color='red'>*</font></th>
<td><input type='text' id='accredName' name="accredName" class='ipt' maxLength='20'/></td>
</tr>
<tr>
<th>图标:</th>
<td>
<div id='adFilePicker'>上传图标</div><span id='uploadMsg'></span>
<input type='hidden' id='accredImg' name="accredImg" class="ipt" />
</td>
</tr>
<tr>
<th>预览图:</th>
<td><div style="min-height:70px;" id="preview"></div></td>
</tr>
</table>
</form>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,110 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'名称', name:'title', width: 50,sortable:true},
{title:'标识', name:'name', width: 10,sortable:true},
{title:'描述', name:'description', width: 220,sortable:true},
{title:'状态', name:'status', width: 10,sortable:true, renderer: function(val,item,rowIndex){
if(item['status']==0){
return "<span class='statu-wait'><i class='fa fa-ban'></i> "+item.statusName+"</span>";
}else if(item['status']==2){
return "<span class='statu-no'><i class='fa fa-ban'></i> "+item.statusName+"</span>";
}else{
return "<span class='statu-yes'><i class='fa fa-check-circle'></i> "+item.statusName+"</span>";
}
}},
{title:'作者', name:'author', width: 10,sortable:true},
{title:'版本', name:'version', width: 5,sortable:true},
{title:'操作', name:'' ,width:100, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.CJGL_01 && item['status']>0 && item['isConfig']==1)h += "<a class='btn btn-blue' href='"+WST.U('admin/Addons/toEdit','id='+item['addonId'])+"'><i class='fa fa-gear'></i>设置</a> ";
if(WST.GRANT.CJGL_02 && item['status']==0)h += "<a class='btn btn-blue' href='javascript:install(" + item['addonId'] + ")'><i class='fa fa-gear'></i>安装</a> ";
if(WST.GRANT.CJGL_03 && item['status']>0)h += "<a class='btn btn-red' href='javascript:uninstall(" + item['addonId'] + ")'><i class='fa fa-trash-o'></i>卸载</a> ";
if(WST.GRANT.CJGL_04 && item['status']==2)h += "<a class='btn btn-blue' href='javascript:enable(" + item['addonId'] + ")'><i class='fa fa-check'></i>启用</a> ";
if(WST.GRANT.CJGL_05 && item['status']==1)h += "<a class='btn btn-red' href='javascript:disable(" + item['addonId'] + ")'><i class='fa fa-ban'></i>禁用</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/addons/pageQuery'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'status',sortStatus:'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
//安装
function install(id){
var loading = WST.msg('正在安装,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/addons/install'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("安装成功,请刷页面",{icon:1});
layer.close(loading);
addonsQuery();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
//卸载
function uninstall(id){
var box = WST.confirm({content:"您确定要卸载吗?",yes:function(){
var loading = WST.msg('正在卸载,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/addons/uninstall'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("卸载成功,请刷页面",{icon:1});
layer.close(box);
addonsQuery();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
//禁用
function enable(id){
var loading = WST.msg('正在启用,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/addons/enable'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("启用成功",{icon:1});
layer.close(loading);
addonsQuery();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
//启用
function disable(id){
var loading = WST.msg('正在禁用,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/addons/disable'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("禁用成功",{icon:1});
layer.close(loading);
addonsQuery();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
//查询
function addonsQuery(){
var query = WST.getParams('.query');
query.page = 1;
mmg.load(query);
}

View File

@ -0,0 +1,168 @@
{extend name="base" /}
{block name="main"}
<div >
<form action="{:url('saveConfig')}" method="post" style="line-height: 30px;margin:10px;" autocomplete="off">
<div class="main-title cf">
<div class="addoncfg-title">插件配置 [ {$data.title} ]</div>
</div>
{foreach name="data['config']" item="form" key="o_key"}
<div class="form-item cf">
{present name="form.title"}
<label class="item-label">
<span style="font-weight: bold;">{$form.title|default=''}</span>
</label>
{/present}
{switch name="form.type"}
{case value="tips"}
<div>
{$form.value}
</div>
{/case}
{case value="text"}
<div>
<input type="text" name="config[{$o_key}]" class="text input-large" value="{$form.value}" style="width:400px;"><?php if(isset($form['tips'])){ ?><span>{$form.tips}</span><?php } ?>
</div>
{/case}
{case value="password"}
<div>
<input type="password" name="config[{$o_key}]" class="text input-large" value="{$form.value}">
</div>
{/case}
{case value="hidden"}
<input type="hidden" name="config[{$o_key}]" value="{$form.value}">
{/case}
{case value="radio"}
<div class="layui-form">
{foreach name="form.options" item="opt" key="opt_k"}
<label class="radio">
<input type="radio" name="config[{$o_key}]" value="{$opt_k}" {eq name="form.value" value="$opt_k"} checked{/eq} title="{$opt}">
</label>
{/foreach}
</div>
{/case}
{case value="checkbox"}
<div>
{foreach name="form.options" item="opt" key="opt_k"}
<label class="checkbox">
{php}
is_null($form["value"]) && $form["value"] = array();
{/php}
<input type="checkbox" name="config[{$o_key}][]" value="{$opt_k}" {in name="opt_k" value="$form.value"}checked{/in}>{$opt}
</label>
{/foreach}
</div>
{/case}
{case value="select"}
<div>
<select name="config[{$o_key}]">
{foreach name="form.options" item="opt" key="opt_k"}
<option value="{$opt_k}" {eq name="form.value" value="$opt_k"} selected{/eq}>{$opt}</option>
{/foreach}
</select>
</div>
{/case}
{case value="textarea"}
<div>
<label class="textarea input-large">
<textarea name="config[{$o_key}]" style="width:500px;height:200px;">{$form.value}</textarea>
</label>
</div>
{/case}
{case value="group"}
<ul class="tab-nav nav">
{volist name="form.options" id="li"}
<li data-tab="tab{$i}" {eq name="i" value="1"}class="current" {/eq} ><a href="javascript:void(0);">{$li.title}</a></li>
{/volist}
<div style="clear: both;"></div>
</ul>
<div class="tab-content">
{volist name="form.options" id="tab"}
<div id="tab{$i}" class="tab-pane {eq name="i" value="1"}in{/eq} tab{$i}">
{foreach name="tab['options']" item="tab_form" key="o_tab_key"}
<label class="item-label">
<span style="font-weight: bold;">{$tab_form.title|default=''}</span>
{present name="tab_form.tip"}
<span class="check-tips">{$tab_form.tip}</span>
{/present}
</label>
<div>
{switch name="tab_form.type"}
{case value="tips"}
<div>
{$form.value}
</div>
{/case}
{case value="text"}
<input type="text" name="config[{$o_tab_key}]" class="text input-large" value="{$tab_form.value}" style="width:400px;">
{/case}
{case value="password"}
<input type="password" name="config[{$o_tab_key}]" class="text input-large" value="{$tab_form.value}">
{/case}
{case value="hidden"}
<input type="hidden" name="config[{$o_tab_key}]" value="{$tab_form.value}">
{/case}
{case value="radio"}
{foreach name="tab_form.options" item="opt" key="opt_k"}
<label class="layui-form radio">
<input type="radio" name="config[{$o_tab_key}]" value="{$opt_k}" {eq name="tab_form.value" value="$opt_k"} checked{/eq} title="{$opt}">
</label>
{/foreach}
{/case}
{case value="checkbox"}
{foreach name="tab_form.options" item="opt" key="opt_k"}
<label class="checkbox">
{php}
is_null($tab_form["value"]) && $tab_form["value"] = array();
{/php}
<input type="checkbox" name="config[{$o_tab_key}][]" value="{$opt_k}" {in name="opt_k" value="$tab_form.value"} checked{/in}>{$opt}
</label>
{/foreach}
{/case}
{case value="select"}
<select name="config[{$o_tab_key}]">
{foreach name="tab_form.options" item="opt" key="opt_k"}
<option value="{$opt_k}" {eq name="tab_form.value" value="$opt_k"} selected{/eq}>{$opt}</option>
{/foreach}
</select>
{/case}
{case value="textarea"}
<label>
<textarea name="config[{$o_tab_key}]">{$tab_form.value}</textarea>
</label>
{/case}
{/switch}
</div>
{/foreach}
</div>
{/volist}
</div>
{/case}
{/switch}
</div>
{/foreach}
<div class="form-item cf wst-bottombar" style='padding-left:130px;padding-top:10px'>
<input type="hidden" name="id" value="{$addonId}" readonly/>
<button type="submit" class="btn submit-btn ajax-post btn-primary btn-mright" ><i class="fa fa-check"></i>确 定</button>&nbsp;&nbsp;&nbsp;&nbsp;
<button type="button" class='btn' onclick="location.href='{:url("admin/addons/index")}'"><i class="fa fa-angle-double-left"></i>返回</button>
</div>
</form>
</div>
{/block}
{block name="js"}
<script type="text/javascript" charset="utf-8">
$(function(){
$(".tab-nav li").click(function(){
var self = $(this), target = self.data("tab");
self.addClass("current").siblings(".current").removeClass("current");
//window.location.hash = "#" + target.substr(3);
$(".tab-pane.in").removeClass("in");
$("." + target).addClass("in");
}).filter("[data-tab=tab" + window.location.hash.substr(1) + "]").click();
})
</script>
{/block}

View File

@ -0,0 +1,27 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/addons/addons.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<div id="query" style="float:left;">
<input type="text" name="keyWords" placeholder="插件名称、标识" id="keyWords" class="j-ipt query">
<button type="button" class='btn btn-primary btn-mright' onclick="javascript:addonsQuery()"><i class="fa fa-search"></i>查询</button>
<span style="color:red;font-weight:bold;">&nbsp;&nbsp;安装插件后,进入“设置”,填写配置信息,然后点击保存!</span>
</div>
<div style="clear:both"></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,184 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'图标', name:'' ,width:50, align:'center', renderer: function(val,item,rowIndex){
var adGoodsImg = item['adGoodsImg'].split(',');
return'<img src="'+WST.conf.IMGURL+'/'+adGoodsImg[0]+'" height="28px" width="100"/>';
}},
{title:'广告名称', name:'adName' ,width:80},
{title:'商品名称', name:'goodsName' ,width:130},
{title:'商品种类', name:'adGoodsStatus' ,width:30,renderer: function(val,item,rowIndex){
if(item['adGoodsStatus']==1){return "精选"}
if(item['adGoodsStatus']==2){return "推荐"}
if(item['adGoodsStatus']==3){return "热卖"}
}},
{title:'广告开始日期', name:'startDate' ,width:50},
{title:'广告结束日期', name:'endDate' ,width:50},
{title:'操作', name:'' ,width:80, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.GGGL_02)h += "<a class='btn btn-blue' href='javascript:toEdit("+item['adGoodsId']+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.GGGL_03)h += "<a class='btn btn-red' href='javascript:toDel(" + item['adGoodsId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-155,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/adgoods/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
if(v){
mmg.resize({height:h-155});
}else{
mmg.resize({height:h-128});
}
}});
}
function toEdit(id){
location.href = WST.U('admin/adgoods/toEdit','id='+id);
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Adgoods/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadQuery();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function loadQuery(){
var query = WST.getParams('.query');
query.page = 1;
mmg.load(query);
}
var oldSort;
function changeSort(t,id){
$(t).attr('ondblclick'," ");
var html = "<input type='text' id='sort-"+id+"' style='width:30px;padding:2px;' onblur='doneChange(this,"+id+")' value='"+$(t).html()+"' />";
$(t).html(html);
$('#sort-'+id).focus();
$('#sort-'+id).select();
oldSort = $(t).html();
}
function doneChange(t,id){
var sort = ($(t).val()=='')?0:$(t).val();
if(sort==oldSort){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
return;
}
$.post(WST.U('admin/adgoods/changeSort'),{id:id,adSort:sort},function(data){
var json = WST.toAdminJson(data);
if(json.status==1){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
}
});
}
//查询
function adsQuery(){
var query = WST.getParams('.query');
grid.set('url',WST.U('admin/adgoods/pageQuery',query));
}
function editInit(){
var laydate = layui.laydate;
form = layui.form;
laydate.render({
elem: '#startDate'
});
laydate.render({
elem: '#endDate'
});
//文件上传
WST.upload({
pick:'#adFilePicker',
formData: {dir:'adspic'},
compress:false,//默认不对图片进行压缩
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#uploadMsg').empty().hide();
var html = '<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" />';
$('#preview').html(html);
// 图片路径
$('#adGoodsImg').val(json.savePath+json.name);
}
},
progress:function(rate){
$('#uploadMsg').show().html('已上传'+rate+"%");
}
});
/* 表单验证 */
$('#adsForm').validator({
fields: {
adGoodsStatus: {
rule:"required",
msg:{required:"请选择广告商品类型"},
tip:"请选择广告商品类型",
ok:"验证通过",
},
adId: {
rule:"required;",
msg:{required:"广告名称不能为空"},
tip:"请输入广告名称",
ok:"验证通过",
},
adGoodsImg: {
rule:"required;",
msg:{required:"请上传广告图片"},
tip:"请上传广告图片",
ok:"",
},
goodsId: {
rule:"required;",
msg:{required:"请上传广告商品"},
tip:"请上传广告商品",
ok:"",
},
startDate: {
rule:"required;match(lt, endDate, date)",
msg:{required:"请选择广告开始时间",match:"必须小于广告结束时间"},
ok:"验证通过",
},
endDate: {
rule:"required;match(gt, startDate, date)",
msg:{required:"请选择广告结束时间",match:"必须大于广告开始时间"},
ok:"验证通过",
}
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Adgoods/'+((params.adGoodsId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('Admin/Adgoods/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
//

View File

@ -0,0 +1,189 @@
var grid;
function initGrid(){
grid = $("#maingrid").ligerGrid({
url:WST.U('admin/Ads/pageQuery'),
pageSize:WST.pageSize,
pageSizeOptions:WST.pageSizeOptions,
height:'99%',
width:'100%',
minColToggle:6,
rownumbers:true,
columns: [
{ display: '标题', name: 'adName', isSort: false},
{ display: '广告位置', name: 'adPositionId', isSort: false,render:function(rowdata, rowindex, value){
return rowdata['positionName'];
}},
{ display: '广告网址', name: 'adURL', isSort: false},
{ display: '广告开始日期', name: 'adStartDate', isSort: false},
{ display: '广告结束日期', name: 'adEndDate', isSort: false},
{ display: '图标', name: 'adFile', height: '300', isSort: false,render:function(rowdata, rowindex, value){
var adFile = rowdata['adFile'].split(',');
return'<img src="'+WST.conf.IMGURL+'/'+adFile[0]+'" height="28px" />';
}},
{ display: '点击数', name: 'adClickNum', isSort: false},
{ display: '排序号', name: 'adSort', isSort: false,render:function(rowdata, rowindex, value){
return '<span style="cursor:pointer;" ondblclick="changeSort(this,'+rowdata["adId"]+');">'+value+'</span>';
}},
{ display: '操作', name: 'op',isSort: false,render: function (rowdata, rowindex, value){
var h = "";
if(WST.GRANT.GGGL_02)h += "<a href='"+WST.U('admin/Ads/toEdit','id='+rowdata['adId'])+"'>修改</a> ";
if(WST.GRANT.GGGL_03)h += "<a href='javascript:toDel(" + rowdata['adId'] + ")'>删除</a> ";
return h;
}}
]
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Ads/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
grid.reload();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
var oldSort;
function changeSort(t,id){
$(t).attr('ondblclick'," ");
var html = "<input type='text' id='sort-"+id+"' style='width:30px;' onblur='doneChange(this,"+id+")' value='"+$(t).html()+"' />";
$(t).html(html);
$('#sort-'+id).focus();
$('#sort-'+id).select();
oldSort = $(t).html();
}
function doneChange(t,id){
var sort = ($(t).val()=='')?0:$(t).val();
if(sort==oldSort){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
return;
}
$.post(WST.U('admin/ads/changeSort'),{id:id,adSort:sort},function(data){
var json = WST.toAdminJson(data);
if(json.status==1){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
}
});
}
//查询
function adsQuery(){
var query = WST.getParams('.query');
grid.set('url',WST.U('admin/ads/pageQuery',query));
}
function editInit(){
//文件上传
WST.upload({
pick:'#adFilePicker',
formData: {dir:'adspic'},
compress:false,//默认不对图片进行压缩
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#uploadMsg').empty().hide();
var html = '<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" />';
$('#preview').html(html);
// 图片路径
$('#adFile').val(json.savePath+json.name);
}
},
progress:function(rate){
$('#uploadMsg').show().html('已上传'+rate+"%");
}
});
/* 表单验证 */
$('#adsForm').validator({
fields: {
adPositionId: {
rule:"required",
msg:{required:"请选择广告位置"},
tip:"请选择广告位置",
ok:"验证通过",
},
adName: {
rule:"required;",
msg:{required:"广告标题不能为空"},
tip:"请输入广告标题",
ok:"验证通过",
},
adFile: {
rule:"required;",
msg:{required:"请上传广告图片"},
tip:"请上传广告图片",
ok:"",
},
adStartDate: {
rule:"required;match(lt, adEndDate, date)",
msg:{required:"请选择广告开始时间",match:"必须小于广告结束时间"},
ok:"验证通过",
},
adEndDate: {
rule:"required;match(gt, adStartDate, date)",
msg:{required:"请选择广告结束时间",match:"必须大于广告开始时间"},
ok:"验证通过",
}
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Ads/'+((params.adId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('Admin/Ads/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
var positionInfo;
/*获取地址*/
function addPosition(pType, val, getSize)
{
$.post(WST.U('admin/Adpositions/getPositon'),{'positionType':pType},function(data,textStatus){
positionInfo = data;
var html='<option value="">请选择</option>';
$(data).each(function(k,v){
var selected;
if(v.positionId==val){
selected = 'selected="selected"';
getPhotoSize(v.positionId);
}
html +='<option '+selected+' value="'+v.positionId+'">'+v.positionName+'</option>';
});
$('#adPositionId').html(html);
})
}
/*获取图片尺寸 以及设置图片显示方式*/
function getPhotoSize(pType)
{
$(positionInfo).each(function(k,v){
if(v.positionId==pType){
$('#img_size').html(v.positionWidth+'x'+v.positionHeight);
if(v.positionWidth>v.positionHeight){
$('.ads-h-list').removeClass('ads-h-list').addClass('ads-w-list');
}
}
});
}

View File

@ -0,0 +1,92 @@
{extend name="base" /}
{block name="css"}
<style>
#preview img{max-width: 600px;max-height:150px;}
</style>
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script type='text/javascript' src='__STATIC__/plugins/webuploader/webuploader.js?v={$v}'></script>
<script src="__ADMIN__/adgoods/admgrs.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<form id="adsForm">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>广告名称<font color='red'>*</font></th>
<td>
<select id="adId" name="adId" class='ipt' maxLength='20'>
<option value=''>请选择</option>
{volist name="result" id='vo'}
<option {if $data['adName'] == $vo['adName']}selected{/if} value="{$vo['adId']}">{$vo['adName']}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<th>广告商品类型<font color='red'>*</font></th>
<td>
<select id="adGoodsStatus" name="adGoodsStatus" class='ipt' maxLength='20'>
<option value="">-请选择-</option>
<option {if $data['adGoodsStatus'] == 1}selected{/if} value="1">-精选-</option>
<option {if $data['adGoodsStatus'] == 2}selected{/if} value="2">-推荐-</option>
<option {if $data['adGoodsStatus'] == 3}selected{/if} value="3">-热卖-</option>
</select>
</td>
</tr>
<tr>
<tr>
<tr>
<th>广告商品ID<font color='red'>*</font></th>
<td><input type='text' id='goodsId' name="goodsId" value="{$data['goodsId']}" class='ipt' maxLength='20'/></td>
</tr>
<tr>
<th>广告图片<font color='red'>*</font></th>
<td><div id='adFilePicker'>上传广告图</div><span id='uploadMsg'></span>
<div>
图片大小:<span id="img_size">300x300</span>(px),格式为 gif, jpg, jpeg, png
</div>
</td>
</tr>
<tr>
<th>预览图<font color='red'> </font></th>
<td>
<div id="preview" style="min-height:30px;">
{if ($data['adGoodsImg']!='')}
<img src="__IMGURL__/{$data['adGoodsImg']}">
{/if}
</div>
<input type="hidden" name="adGoodsImg" id="adGoodsImg" class="ipt" value="{$data['adGoodsImg']}" />
</td>
</tr>
<th >广告开始时间<font color='red'>*</font></th>
<td>
<input type="text" style="margin:0px;vertical-align:baseline;" id="startDate" name="startDate" class="laydate-icon ipt" maxLength="20" value="{$data['startDate']}" />
</td>
</tr>
<tr>
<th>广告结束时间<font color='red'>*</font></th>
<td>
<input type="text" style="margin:0px;vertical-align:baseline;" id="endDate" name="endDate" class="laydate-icon ipt" maxLength="20" value="{$data['endDate']}" />
</td>
</tr>
<tr>
<td colspan='2' align='center' class='wst-bottombar'>
<input type="hidden" name="id" id="adGoodsId" class="ipt" value="{$data['adGoodsId']+0}" />
<button type="submit" class="btn btn-primary btn-mright" ><i class="fa fa-check"></i>提交</button>
<button type="button" class="btn" onclick="javascript:history.go(-1)"><i class="fa fa-angle-double-left"></i>返回</button>
</td>
</tr>
</table>
</form>
<script>
$(function(){
editInit();
//初始化位置类型
});
</script>
{/block}

View File

@ -0,0 +1,40 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/adgoods/admgrs.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>广告位置类型主要用于确定广告在商城里的位置,调用时把广告代码放入相应位置即可显示广告</li>
</ul>
</div>
<form autocomplete="off" >
<div class="wst-toolbar">
<select name="adId" id="adId" class="query">
<option value="">请选择广告名称</option>
<option value=''>请选择</option>
{volist name="result" id='vo'}
<option value="{$vo['adId']}">{$vo['adName']}</option>
{/volist}
</select>
<button class="btn btn-primary" type='button' onclick="javascript:loadQuery()"><i class='fa fa-search'></i>查询</button>
{if WSTGrant('GGGL_01')}
<button class="btn btn-success f-right btn-fixtop" type='button' onclick="javascript:location.href='<?=url("admin/adgoods/toEdit")?>'"><i class='fa fa-plus'></i>新增</button>
{/if}
<div style="clear:both"></div>
</div>
</form>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,124 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'位置名称', name:'positionName', width: 230},
{title:'宽度', name:'positionWidth' ,width:30},
{title:'高度', name:'positionHeight' ,width:30},
{title:'位置类型', name:'' ,width:30, align:'center', renderer: function(val,item,rowIndex){
var pName;
switch(item['positionType']){
case 2:
pName='微信版';
break;
case 3:
pName='手机版';
break;
case 4:
pName='APP版';
break;
default:
pName='PC版';
break;
}
return pName;
}},
{title:'位置代码', name:'positionCode' ,width:40},
{title:'操作', name:'' ,width:60, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.GGWZ_02)h += "<a class='btn btn-blue' href='javascript:toEdit("+item['positionId']+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.GGWZ_03)h += "<a class='btn btn-red' href='javascript:toDel(" + item['positionId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-175,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/Adpositions/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
if(v){
mmg.resize({height:h-175});
}else{
mmg.resize({height:h-130});
}
}});
}
function toEdit(id){
location.href = WST.U('admin/Adpositions/toedit','id='+id);
}
function loadQuery(){
var query = WST.getParams('.query');
query.page = 1;
mmg.load(query);
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/AdPositions/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadQuery();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function editInit(){
/* 表单验证 */
$('#adPositionsForm').validator({
fields: {
positionType: {
rule:"required",
msg:{required:"请选择位置类型"},
tip:"请选择位置类型",
ok:"",
},
positionName: {
rule:"required;",
msg:{required:"请输入位置名称"},
tip:"请输入位置名称",
ok:"",
},
positionCode: {
rule:"required;",
msg:{required:"请输入位置代码"},
tip:"请输入位置代码",
ok:"",
},
positionWidth: {
rule:"required;",
msg:{required:"请输入建议宽度"},
ok:"",
},
positionHeight: {
rule:"required",
msg:{required:"请输入建议高度"},
ok:"",
}
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Adpositions/'+((params.positionId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('Admin/Adpositions/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}

View File

@ -0,0 +1,67 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script type='text/javascript' src='__STATIC__/plugins/webuploader/webuploader.js?v={$v}'></script>
<script src="__ADMIN__/adpositions/adpositions.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<form id="adPositionsForm" autocomplete="off">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>位置类型<font color='red'>*</font></th>
<td>
<select id="positionType" name="positionType" class='ipt' maxLength='20'>
<option value="">-请选择-</option>
{volist name=":WSTDatas('ADS_TYPE')" id='vo'}
<option <?=($data['positionType']==$vo['dataVal'])?'selected':'';?> value="{$vo['dataVal']}">{$vo['dataName']}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<th>位置名称<font color='red'>*</font></th>
<td>
<input type="text" id="positionName" name="positionName" value='{$data['positionName']}' class="ipt" />
</td>
</tr>
<tr>
<th>位置代码<font color='red'>*</font></th>
<td>
<input type="text" id="positionCode" name="positionCode" value='{$data['positionCode']}' class="ipt" />
</td>
</tr>
<tr>
<th>建议宽度<font color='red'>*</font></th>
<td>
<input type="text" id="positionWidth" name="positionWidth" value='{$data['positionWidth']}' class="ipt" maxLength='4' />
</td>
</tr>
<tr>
<th>建议高度<font color='red'>*</font></th>
<td>
<input type='text' id='positionHeight' name="positionHeight" value='{$data['positionHeight']}' class='ipt' maxLength='4'/>
</td>
</tr>
<tr>
<th>排序号<font color='red'> </font></th>
<td>
<input type='text' id='apSort' name="apSort" value='{$data['apSort']}' class='ipt' maxLength='10'/>
</td>
</tr>
<tr>
<td colspan='2' align='center' class='wst-bottombar'>
<input type="hidden" name="id" id="positionId" class="ipt" value="{$data['positionId']+0}" />
<button type="submit" class='btn btn-primary btn-mright'><i class="fa fa-check"></i>提交</button>
<button type="button" onclick="javascript:history.go(-1)" class='btn'><i class="fa fa-angle-double-left"></i>返回</button>
</td>
</tr>
</table>
</form>
<script>
$(function(){editInit()});
</script>
{/block}

View File

@ -0,0 +1,40 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/adpositions/adpositions.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>广告位置类型主要用于确定广告在商城里的位置,调用时把广告代码放入相应位置即可显示广告。</li>
<li>该功能为开发者功能,普通使用者请勿随意修改,以免影响系统使用。</li>
</ul>
</div>
<form autocomplete="off" >
{if WSTGrant('GGWZ_01')}
<div class="wst-toolbar">
<select name="positionType" id="positionType" class="query">
<option value="">请选择广告位置类型</option>
{volist name=":WSTDatas('ADS_TYPE')" id='vo'}
<option value="{$vo['dataVal']}">{$vo['dataName']}</option>
{/volist}
</select>
<input type='text' id='key' class="query" placeholder='位置代码'/>
<button type="button" class="btn btn-primary" onclick="javascript:loadQuery()"><i class='fa fa-search'></i>查询</button>
<button class="btn btn-success f-right" type='button' onclick="javascript:location.href='<?=url("admin/Adpositions/toEdit")?>'"><i class='fa fa-plus'></i>新增</button>
<div style="clear:both"></div>
</div>
{/if}
</form>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,210 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'图标', name:'' ,width:50, align:'center', renderer: function(val,item,rowIndex){
var adFile = item['adFile'].split(',');
return'<img src="'+WST.conf.IMGURL+'/'+adFile[0]+'" height="28px" width="100"/>';
}},
{title:'标题', name:'adName', width: 100},
{title:'广告位置', name:'positionName' ,width:80},
{title:'广告网址', name:'adURL' ,width:130},
{title:'广告开始日期', name:'adStartDate' ,width:30},
{title:'广告结束日期', name:'adEndDate' ,width:30},
{title:'点击数', name:'adClickNum' ,width:15},
{title:'排序号', name:'adSort' ,width:15, renderer: function(val,item,rowIndex){
return '<span style="color:blue;cursor:pointer;" ondblclick="changeSort(this,'+item["adId"]+');">'+val+'</span>';
}},
{title:'操作', name:'' ,width:80, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.GGGL_02)h += "<a class='btn btn-blue' href='javascript:toEdit("+item['adId']+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.GGGL_03)h += "<a class='btn btn-red' href='javascript:toDel(" + item['adId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-155,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/ads/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
if(v){
mmg.resize({height:h-155});
}else{
mmg.resize({height:h-128});
}
}});
}
function toEdit(id){
location.href = WST.U('admin/ads/toedit','id='+id);
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Ads/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadQuery();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function loadQuery(){
var query = WST.getParams('.query');
query.page = 1;
mmg.load(query);
}
var oldSort;
function changeSort(t,id){
$(t).attr('ondblclick'," ");
var html = "<input type='text' id='sort-"+id+"' style='width:30px;padding:2px;' onblur='doneChange(this,"+id+")' value='"+$(t).html()+"' />";
$(t).html(html);
$('#sort-'+id).focus();
$('#sort-'+id).select();
oldSort = $(t).html();
}
function doneChange(t,id){
var sort = ($(t).val()=='')?0:$(t).val();
if(sort==oldSort){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
return;
}
$.post(WST.U('admin/ads/changeSort'),{id:id,adSort:sort},function(data){
var json = WST.toAdminJson(data);
if(json.status==1){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
}
});
}
//查询
function adsQuery(){
var query = WST.getParams('.query');
grid.set('url',WST.U('admin/ads/pageQuery',query));
}
function editInit(){
var laydate = layui.laydate;
form = layui.form;
laydate.render({
elem: '#adStartDate'
});
laydate.render({
elem: '#adEndDate'
});
//文件上传
WST.upload({
pick:'#adFilePicker',
formData: {dir:'adspic'},
compress:false,//默认不对图片进行压缩
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#uploadMsg').empty().hide();
var html = '<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" />';
$('#preview').html(html);
// 图片路径
$('#adFile').val(json.savePath+json.name);
}
},
progress:function(rate){
$('#uploadMsg').show().html('已上传'+rate+"%");
}
});
/* 表单验证 */
$('#adsForm').validator({
fields: {
adPositionId: {
rule:"required",
msg:{required:"请选择广告位置"},
tip:"请选择广告位置",
ok:"验证通过",
},
adName: {
rule:"required;",
msg:{required:"广告标题不能为空"},
tip:"请输入广告标题",
ok:"验证通过",
},
adFile: {
rule:"required;",
msg:{required:"请上传广告图片"},
tip:"请上传广告图片",
ok:"",
},
adStartDate: {
rule:"required;match(lt, adEndDate, date)",
msg:{required:"请选择广告开始时间",match:"必须小于广告结束时间"},
ok:"验证通过",
},
adEndDate: {
rule:"required;match(gt, adStartDate, date)",
msg:{required:"请选择广告结束时间",match:"必须大于广告开始时间"},
ok:"验证通过",
}
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Ads/'+((params.adId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('Admin/Ads/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
var positionInfo;
/*获取地址*/
function addPosition(pType, val, getSize)
{
$.post(WST.U('admin/Adpositions/getPositon'),{'positionType':pType},function(data,textStatus){
positionInfo = data;
var html='<option value="">请选择</option>';
$(data).each(function(k,v){
var selected;
if(v.positionId==val){
selected = 'selected="selected"';
getPhotoSize(v.positionId);
}
html +='<option '+selected+' value="'+v.positionId+'">'+v.positionName+'</option>';
});
$('#adPositionId').html(html);
layui.form.render('select');
})
}
/*获取图片尺寸 以及设置图片显示方式*/
function getPhotoSize(pType)
{
$(positionInfo).each(function(k,v){
if(v.positionId==pType){
$('#img_size').html(v.positionWidth+'x'+v.positionHeight);
if(v.positionWidth>v.positionHeight){
$('.ads-h-list').removeClass('ads-h-list').addClass('ads-w-list');
}
}
});
}

189
hyhproject/admin/view/ads/ads.js Executable file
View File

@ -0,0 +1,189 @@
var grid;
function initGrid(){
grid = $("#maingrid").ligerGrid({
url:WST.U('admin/Ads/pageQuery'),
pageSize:WST.pageSize,
pageSizeOptions:WST.pageSizeOptions,
height:'99%',
width:'100%',
minColToggle:6,
rownumbers:true,
columns: [
{ display: '标题', name: 'adName', isSort: false},
{ display: '广告位置', name: 'adPositionId', isSort: false,render:function(rowdata, rowindex, value){
return rowdata['positionName'];
}},
{ display: '广告网址', name: 'adURL', isSort: false},
{ display: '广告开始日期', name: 'adStartDate', isSort: false},
{ display: '广告结束日期', name: 'adEndDate', isSort: false},
{ display: '图标', name: 'adFile', height: '300', isSort: false,render:function(rowdata, rowindex, value){
var adFile = rowdata['adFile'].split(',');
return'<img src="'+WST.conf.IMGURL+'/'+adFile[0]+'" height="28px" />';
}},
{ display: '点击数', name: 'adClickNum', isSort: false},
{ display: '排序号', name: 'adSort', isSort: false,render:function(rowdata, rowindex, value){
return '<span style="cursor:pointer;" ondblclick="changeSort(this,'+rowdata["adId"]+');">'+value+'</span>';
}},
{ display: '操作', name: 'op',isSort: false,render: function (rowdata, rowindex, value){
var h = "";
if(WST.GRANT.GGGL_02)h += "<a href='"+WST.U('admin/Ads/toEdit','id='+rowdata['adId'])+"'>修改</a> ";
if(WST.GRANT.GGGL_03)h += "<a href='javascript:toDel(" + rowdata['adId'] + ")'>删除</a> ";
return h;
}}
]
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Ads/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
grid.reload();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
var oldSort;
function changeSort(t,id){
$(t).attr('ondblclick'," ");
var html = "<input type='text' id='sort-"+id+"' style='width:30px;' onblur='doneChange(this,"+id+")' value='"+$(t).html()+"' />";
$(t).html(html);
$('#sort-'+id).focus();
$('#sort-'+id).select();
oldSort = $(t).html();
}
function doneChange(t,id){
var sort = ($(t).val()=='')?0:$(t).val();
if(sort==oldSort){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
return;
}
$.post(WST.U('admin/ads/changeSort'),{id:id,adSort:sort},function(data){
var json = WST.toAdminJson(data);
if(json.status==1){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
}
});
}
//查询
function adsQuery(){
var query = WST.getParams('.query');
grid.set('url',WST.U('admin/ads/pageQuery',query));
}
function editInit(){
//文件上传
WST.upload({
pick:'#adFilePicker',
formData: {dir:'adspic'},
compress:false,//默认不对图片进行压缩
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#uploadMsg').empty().hide();
var html = '<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" />';
$('#preview').html(html);
// 图片路径
$('#adFile').val(json.savePath+json.name);
}
},
progress:function(rate){
$('#uploadMsg').show().html('已上传'+rate+"%");
}
});
/* 表单验证 */
$('#adsForm').validator({
fields: {
adPositionId: {
rule:"required",
msg:{required:"请选择广告位置"},
tip:"请选择广告位置",
ok:"验证通过",
},
adName: {
rule:"required;",
msg:{required:"广告标题不能为空"},
tip:"请输入广告标题",
ok:"验证通过",
},
adFile: {
rule:"required;",
msg:{required:"请上传广告图片"},
tip:"请上传广告图片",
ok:"",
},
adStartDate: {
rule:"required;match(lt, adEndDate, date)",
msg:{required:"请选择广告开始时间",match:"必须小于广告结束时间"},
ok:"验证通过",
},
adEndDate: {
rule:"required;match(gt, adStartDate, date)",
msg:{required:"请选择广告结束时间",match:"必须大于广告开始时间"},
ok:"验证通过",
}
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Ads/'+((params.adId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('Admin/Ads/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
var positionInfo;
/*获取地址*/
function addPosition(pType, val, getSize)
{
$.post(WST.U('admin/Adpositions/getPositon'),{'positionType':pType},function(data,textStatus){
positionInfo = data;
var html='<option value="">请选择</option>';
$(data).each(function(k,v){
var selected;
if(v.positionId==val){
selected = 'selected="selected"';
getPhotoSize(v.positionId);
}
html +='<option '+selected+' value="'+v.positionId+'">'+v.positionName+'</option>';
});
$('#adPositionId').html(html);
})
}
/*获取图片尺寸 以及设置图片显示方式*/
function getPhotoSize(pType)
{
$(positionInfo).each(function(k,v){
if(v.positionId==pType){
$('#img_size').html(v.positionWidth+'x'+v.positionHeight);
if(v.positionWidth>v.positionHeight){
$('.ads-h-list').removeClass('ads-h-list').addClass('ads-w-list');
}
}
});
}

View File

@ -0,0 +1,117 @@
{extend name="base" /}
{block name="css"}
<style>
#preview img{max-width: 600px;max-height:150px;}
</style>
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script type='text/javascript' src='__STATIC__/plugins/webuploader/webuploader.js?v={$v}'></script>
<script src="__ADMIN__/ads/admgrs.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<form id="adsForm">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>位置类型<font color='red'>*</font></th>
<td>
<select id="positionType" name="positionType" class='ipt' maxLength='20' onchange='javascript:addPosition(this.value);'>
<option value=''>请选择</option>
{volist name=":WSTDatas('ADS_TYPE')" id='vo'}
<option {if $data['positionType'] == $vo['dataVal']}selected{/if} value="{$vo['dataVal']}">{$vo['dataName']}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<th>广告位置<font color='red'>*</font></th>
<td>
<select id="adPositionId" name="adPositionId" class='ipt' maxLength='20' onchange='javascript:getPhotoSize(this.value);'>
<option value="">-请选择-</option>
</select>
</td>
</tr>
<tr>
<!--添加链接类型-->
<th width='150'>链接类型<font color='red'>*</font></th>
<td>
<select id="targetType" name="targetType" class='ipt' maxLength='20'>
<option {if $data['targetType'] == 1}selected{/if} value="1">商品</option>
<option {if $data['targetType'] == 2}selected{/if} value="2">店铺</option>
<option {if $data['targetType'] == 3}selected{/if} value="3">活动</option>
</select>
</td>
</tr>
<!--添加链接类型结束-->
<tr>
<tr>
<th>广告标题<font color='red'>*</font></th>
<td><input type='text' id='adName' name="adName" value='{$data['adName']}' class='ipt' maxLength='20'/></td>
</tr>
<tr>
<th>广告图片<font color='red'>*</font></th>
<td><div id='adFilePicker'>上传广告图</div><span id='uploadMsg'></span>
<div>
图片大小:<span id="img_size">300x300</span>(px),格式为 gif, jpg, jpeg, png
</div>
</td>
</tr>
<tr>
<th>预览图<font color='red'> </font></th>
<td>
<div id="preview" style="min-height:30px;">
{if ($data['adFile']!='')}
<img src="__IMGURL__/{$data['adFile']}">
{/if}
</div>
<input type="hidden" name="adFile" id="adFile" class="ipt" value="{$data['adFile']}" />
</td>
</tr>
<tr>
<th>广告网址<font color='red'> </font></th>
<td>
<input type="text" id="adURL" class="ipt" maxLength="200" value='{$data['adURL']}' />
</td>
</tr>
<tr>
<th >广告开始时间<font color='red'>*</font></th>
<td>
<input type="text" style="margin:0px;vertical-align:baseline;" id="adStartDate" name="adStartDate" class="laydate-icon ipt" maxLength="20" value='{$data['adStartDate']}' />
</td>
</tr>
<tr>
<th>广告结束时间<font color='red'>*</font></th>
<td>
<input type="text" style="margin:0px;vertical-align:baseline;" id="adEndDate" name="adEndDate" class="laydate-icon ipt" maxLength="20" value='{$data['adEndDate']}' />
</td>
</tr>
<tr>
<th>广告排序号:</th>
<td>
<input type="text" id="adSort" class="ipt" maxLength="20" value='{$data['adSort']}' />
</td>
</tr>
<tr>
<td colspan='2' align='center' class='wst-bottombar'>
<input type="hidden" name="id" id="adId" class="ipt" value="{$data['adId']+0}" />
<button type="submit" class="btn btn-primary btn-mright" ><i class="fa fa-check"></i>提交</button>
<button type="button" class="btn" onclick="javascript:history.go(-1)"><i class="fa fa-angle-double-left"></i>返回</button>
</td>
</tr>
</table>
</form>
<script>
$(function(){
editInit();
//初始化位置类型
addPosition("{$data['positionType']}","{$data['adPositionId']}");
});
</script>
{/block}

View File

@ -0,0 +1,42 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/ads/admgrs.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>广告位置类型主要用于确定广告在商城里的位置,调用时把广告代码放入相应位置即可显示广告</li>
</ul>
</div>
<form autocomplete="off" >
<div class="wst-toolbar">
<select name="positionType" id="positionType" class="query" onchange='javascript:addPosition(this.value);'>
<option value="">请选择广告位置类型</option>
{volist name=":WSTDatas('ADS_TYPE')" id='vo'}
<option value="{$vo['dataVal']}">{$vo['dataName']}</option>
{/volist}
</select>
<select name="adPositionId" id="adPositionId" class="query" >
<option value="">请选择</option>
</select>
<button class="btn btn-primary" type='button' onclick="javascript:loadQuery()"><i class='fa fa-search'></i>查询</button>
{if WSTGrant('GGGL_01')}
<button class="btn btn-success f-right btn-fixtop" type='button' onclick="javascript:location.href='<?=url("admin/ads/toEdit")?>'"><i class='fa fa-plus'></i>新增</button>
{/if}
<div style="clear:both"></div>
</div>
</form>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,149 @@
var mmg;
function initGrid(){
var parentId=$('#h_areaId').val();
var h = WST.pageHeight();
var cols = [
{title:'地区名称', name:'areaName', width: 300},
{title:'是否显示', name:'isShow', width: 30,renderer: function(val,item,rowIndex){
return '<input type="checkbox" '+((item['isShow']==1)?"checked":"")+' name="isShow2" lay-skin="switch" lay-filter="isShow2" data="'+item['areaId']+'" lay-text="显示|隐藏">';
}},
{title:'排序字母', name:'areaKey', width: 30},
{title:'排序号', name:'areaSort', width: 30},
{title:'操作', name:'' ,width:140, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' onclick='javascript:toView("+item['areaId']+")'><i class='fa fa-search'></i>查看</a> ";
if(WST.GRANT.DQGL_02)h += "<a class='btn btn-blue' onclick='javascript:toEdit("+item['areaId']+","+item["parentId"]+")'><i class='fa fa-pencil'></i>修改</a>";
if(WST.GRANT.DQGL_03)h += "<a class='btn btn-red' onclick='javascript:toDel(" + item['areaId'] + ")'><i class='fa fa-trash-o'></i>删除</a>";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-80,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/areas/pageQuery','parentId='+parentId), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
mmg.on('loadSuccess',function(){
layui.form.render('','gridForm');
layui.form.on('switch(isShow2)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsShow(0,id);
}else{
toggleIsShow(1,id);
}
});
})
}
function toggleIsShow(t,v){
if(!WST.GRANT.DQGL_02)return;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/areas/editiIsShow'),{id:v,isShow:t},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toReturn(){
location.href=WST.U('admin/areas/index','parentId='+$('#h_parentId').val());
}
function letterOnblur(obj){
if($.trim(obj.value)=='')return;
if($('#areaKey').val()!=='')return;
var loading = WST.msg('正在生成排序字母,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/areas/letterObtain'),{code:obj.value},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status == 1){
$('#areaKey').val(json.msg);
}
});
}
function toEdit(id,pid){
$('#areaForm')[0].reset();
if(id>0){
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/areas/get'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json){
WST.setValues(json);
layui.form.render();
editsBox(id);
}
});
}else{
WST.setValues({parentId:pid,areaId:0});
layui.form.render();
editsBox(id);
}
}
function toView(id){
location.href = WST.U('admin/areas/index','parentId='+id);
}
function editsBox(id){
var box = WST.open({title:(id>0)?'修改地区':"新增地区",type:1,content:$('#areasBox'),area: ['460px', '260px'],btn:['确定','取消'],
end:function(){$('#areasBox').hide();},yes:function(){
$('#areaForm').submit();
}});
$('#areaForm').validator({
fields: {
areaName: {
tip: "请输入地区名称",
rule: '地区名称:required;length[~10];'
},
areaKey: {
tip: "请输入排序字母",
rule: '排序字母:required;length[~1];'
},
areaSort: {
tip: "请输入排序号",
rule: '排序号:required;length[~8];'
}
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/areas/'+((id>0)?"edit":"add")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
$('#areasBox').hide();
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该地区吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/areas/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}

View File

@ -0,0 +1,55 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/areas/areas.js?v={$v}" type="text/javascript"></script>
<script>
$(function(){initGrid();})
</script>
{/block}
{block name="main"}
<input type='hidden' id='h_areaId' value='{$pArea["areaId"]}'/>
<input type='hidden' id='h_parentId' value='{$pArea["parentId"]}'/>
<div class="wst-toolbar">
{if condition="($pArea['areaId'] != 0)"}
上级地区:{$pArea['areaName']}
<button class="btn f-right" onclick='javascript:toReturn(0)'><i class="fa fa-angle-double-left"></i>返回</button>
{/if}
{if WSTGrant('DQGL_01')}
<button class="btn btn-success f-right btn-mright" onclick='javascript:toEdit(0,{$pArea["areaId"]})'><i class='fa fa-plus'></i>新增</button>
{/if}
<div style='clear:both'></div>
</div>
<form lay-filter='gridForm' class='layui-form wst-grid'>
<div id="mmg" class="mmg"></div>
</form>
<div id="pg" style="text-align: right;"></div>
<div id='areasBox' style='display:none'>
<form id='areaForm' autocomplete="off" class='layui-form'>
<input type='hidden' class='ipt' id='areaId' />
<input type='hidden' class='ipt' id='parentId' />
<table class='wst-form wst-box-top'>
<tr>
<th width='100'>地区名称<font color='red'>*</font></th>
<td><input type='text' id='areaName' name="areaName" class='ipt' maxLength='20' style='width:200px;' onblur='javascript:letterOnblur(this)'/></td>
</tr>
<tr>
<th width='100'>是否显示<font color='red'>*</font></th>
<td height='24'>
<input type="checkbox" id='isShow' name='isShow' value="1" lay-skin="switch" lay-filter="switchTest" class="ipt" lay-text="显示|隐藏">
</td>
</tr>
<tr>
<th width='100'>排序字母<font color='red'>*</font></th>
<td><input type='text' id='areaKey' name='areaKey' class='ipt' style='width:60px;' maxLength='1'/></td>
</tr>
<tr>
<th width='100'>排序号<font color='red'>*</font></th>
<td><input type='text' id='areaSort' name='areaSort' class='ipt' style='width:60px;' onkeypress='return WST.isNumberKey(event);' onkeyup="javascript:WST.isChinese(this,1)" maxLength='10' value='0'/></td>
</tr>
</table>
</form>
</div>
{/block}

View File

@ -0,0 +1,149 @@
var grid,oldData = {};
function initGrid(){
grid = $('#maingrid').WSTGridTree({
url:WST.U('admin/articlecats/pageQuery'),
rownumbers:true,
columns: [
{ display: '分类名称', name: 'catName', id:'catId', align: 'left',isSort: false,render: function (item)
{
oldData[item.catId] = item.catName;
return '<input type="text" size="40" value="'+item.catName+'" onblur="javascript:editName('+item.catId+',this)"/>';
}},
{ display: '分类类型', width: 100, name: 'catType',isSort: false,
render: function (item)
{
if (parseInt(item.catType) == 1) return '<span>系统菜单</span>';
return '<span>普通类型</span>';
}
},
{ display: '是否显示', width: 80, name: 'isShow',isSort: false,
render: function (item)
{
return '<input type="checkbox" '+((item.isShow==1)?"checked":"")+' class="ipt" lay-skin="switch" lay-filter="isShow" data="'+item.catId+'" lay-text="显示|隐藏">';
}
},
{ display: '排序号', name: 'catSort',width: 60,isSort: false},
{ display: '操作', name: 'op',width: 250,isSort: false,
render: function (rowdata,e){
var h = "";
if(WST.GRANT.WZFL_01)h += "<a class='btn btn-blue' href='javascript:toEdit("+rowdata["catId"]+",0)'><i class='fa fa-plus'></i>新增子分类</a> ";
if(WST.GRANT.WZFL_02)h += "<a class='btn btn-blue' href='javascript:toEdit("+rowdata["parentId"]+","+rowdata["catId"]+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.WZFL_03 && rowdata["catType"]==0)h += "<a class='btn btn-red' href='javascript:toDel("+rowdata["parentId"]+","+rowdata["catId"]+","+rowdata["catType"]+")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
],
callback:function(){
layui.form.render();
}
});
layui.form.on('switch(isShow)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsShow(id, 1);
}else{
toggleIsShow(id, 0);
}
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){}});
}
function toggleIsShow(id,isShow){
if(!WST.GRANT.WZFL_02)return;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/articlecats/editiIsShow'),{id:id,isShow:isShow},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
grid.reload(id);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(pid,id){
$('#articlecatForm')[0].reset();
if(id>0){
$.post(WST.U('admin/articlecats/get'),{id:id},function(data,textStatus){
var json = WST.toAdminJson(data);
if(json){
WST.setValues(json);
layui.form.render();
editsBox(id);
}
});
}else{
WST.setValues({parentId:pid,catName:'',isShow:1,catSort:0});
layui.form.render();
editsBox(id);
}
}
function editsBox(id){
var title =(id>0)?"修改文章分类":"新增文章分类";
var box = WST.open({title:title,type:1,content:$('#articlecatBox'),area: ['465px', '250px'],btn:['确定','取消'],
end:function(){$('#articlecatBox').hide();},yes:function(){
$('#articlecatForm').submit();
}});
$('#articlecatForm').validator({
fields: {
catName: {
tip: "请输入分类名称",
rule: '分类名称:required;length[~10];'
},
catSort: {
tip: "请输入排序号",
rule: '排序号:required;length[~8];'
}
},
valid: function(form){
var params = WST.getParams('.ipt');
params.id = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/articlecats/'+((id>0)?"edit":"add")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
$('#articlecatBox').hide();
layer.close(box);
grid.reload(params.parentId);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
function toDel(pid,id,type){
var box = WST.confirm({content:"您确定要删除该分类以及其下的文章吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/articlecats/del'),{id:id,type:type},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
grid.reload(pid);
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function editName(id,obj){
if($.trim(obj.value)=='' || $.trim(obj.value)==oldData[id]){
obj.value = oldData[id];
return;
}
$.post(WST.U('admin/articlecats/editName'),{id:id,catName:obj.value},function(data,textStatus){
var json = WST.toAdminJson(data);
if(json.status=='1'){
oldData[id] = $.trim(obj.value);
WST.msg(json.msg,{icon:1});
}else{
WST.msg(json.msg,{icon:2});
}
});
}

View File

@ -0,0 +1,51 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/wstgridtree.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/articlecats/articlecats.js?v={$v}" type="text/javascript"></script>
<script>
$(function(){initGrid();})
</script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>本功能主要用于文章分类的管理。分类可分为“普通菜单”和“系统系统”。</li>
<li>“系统菜单”一般在商城前台有进行调用,非开发者请勿直接删除“系统菜单”,以免造成数据丢失。</li>
</ul>
</div>
<style>.mmGrid{border-bottom:0px;}</style>
{if WSTGrant('WZFL_01')}
<div class="wst-toolbar">
<button class="btn btn-success f-right" onclick='javascript:toEdit(0)'><i class='fa fa-plus'></i>新增</button>
<div style='clear:both'></div>
</div>
{/if}
<div class='wst-grid'>
<div class='mmGrid layui-form' id="maingrid"></div>
</div>
<div id='articlecatBox' style='display:none' class="layui-form">
<form id='articlecatForm' autocomplete="off">
<input type='hidden' id='parentId' name="parentId" class='ipt' />
<table class='wst-form wst-box-top'>
<tr>
<th width='100'>分类名称<font color='red'>*</font></th>
<td><input type='text' id='catName' name="catName" class='ipt' maxLength='20' style='width:200px;'/></td>
</tr>
<tr>
<th width='100'>是否显示<font color='red'>*</font></th>
<td height='24'>
<input type="checkbox" id="isShow" name="isShow" value="1" class="ipt" lay-skin="switch" lay-filter="isShow1" lay-text="显示|隐藏">
</td>
</tr>
<tr>
<th width='100'>排序号<font color='red'>*</font></th>
<td><input type='text' id='catSort' name='catSort' class='ipt' style='width:60px;' onkeypress='return WST.isNumberKey(event);' onkeyup="javascript:WST.isChinese(this,1)" maxLength='10' value='0'/></td>
</tr>
</table>
</form>
</div>
{/block}

View File

@ -0,0 +1,193 @@
var mmg,combo;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'文章ID', name:'articleId' ,width:30,sortable:true},
{title:'标题', name:'articleTitle' ,width:200,sortable:true},
{title:'分类', name:'catName' ,width:100,sortable:true},
{title:'是否显示', name:'isShow' ,width:50,sortable:true, renderer: function(val,item,rowIndex){
return '<form autocomplete="off" class="layui-form" lay-filter="gridForm"><input type="checkbox" id="isShow" name="isShow" '+((item['isShow']==1)?"checked":"")+' lay-skin="switch" value="1" lay-filter="isShow" lay-text="显示|隐藏" data="'+item['articleId']+'"></form>';
}},
{title:'最后编辑者', name:'staffName' ,width:50,sortable:true},
{title:'创建时间', name:'createTime' ,width:120,sortable:true},
{title:'操作', name:'' ,width:100, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.WZGL_02)h += "<a class='btn btn-blue' onclick='javascript:toEdit("+item['articleId']+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.WZGL_03)h += "<a class='btn btn-red' onclick='javascript:toDel(" + item['articleId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol: true, cols: cols,method:'POST',checkCol:true,multiSelect:true,
url: WST.U('admin/articles/pageQuery'), fullWidthRows: true, autoLoad: true,remoteSort: true,
plugins: [
$('#pg').mmPaginator({})
]
});
mmg.on('loadSuccess',function(){
layui.form.render('','gridForm');
layui.form.on('switch(isShow)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsShow(1,id);
}else{
toggleIsShow(0,id);
}
});
})
}
function initCombo(v){
var setting = {
check: {
enable: true,
chkStyle: "radio",
radioType: "all"
},
view: {
dblClickExpand: false
},
async: {
enable: true,
url:WST.U('admin/articlecats/listQuery2','hasRoot='+v),
autoParam:["id", "name=n", "level=lv"]
},
callback: {
onClick: onClick,
onCheck: onCheck
}
};
$.fn.zTree.init($("#dropDownTree"), setting);
}
function onClick(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("dropDownTree");
zTree.checkNode(treeNode, !treeNode.checked, null, true);
return false;
}
function onCheck(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("dropDownTree");
var nodes = zTree.getCheckedNodes(true);
var v = [],ids = [];
for (var i=0, l=nodes.length; i<l; i++) {
v .push(nodes[i].name);
ids.push(nodes[i].id);
}
$("#catSel").attr("value", v.join(','));
$('#catId').val(ids.join(','));
hideMenu();
}
function showMenu(){
var cityObj = $("#catSel");
var cityOffset = $("#catSel").offset();
$("#ztreeMenuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
}
function hideMenu(){
$("#ztreeMenuContent").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);
}
function onBodyDown(event) {
if (!(event.target.id == "menuBtn" || event.target.id == "citySel" || event.target.id == "ztreeMenuContent" || $(event.target).parents("#ztreeMenuContent").length>0)) {
hideMenu();
}
}
function loadGrid(){
mmg.load({key:$('#key').val(),catId:$('#catId').val(),page:1});
}
function toggleIsShow(t,v){
if(!WST.GRANT.WZGL_02)return;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/articles/editiIsShow'),{id:v,isShow:t},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toggleIsShow(t,v){
if(!WST.GRANT.WZGL_02)return;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/articles/editiIsShow'),{id:v,isShow:t},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(id){
location.href=WST.U('admin/articles/toEdit','id='+id);
}
function toEdits(id){
var params = WST.getParams('.ipt');
params.id = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/articles/'+((id>0)?"edit":"add")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
setTimeout(function(){
location.href=WST.U('admin/articles/index');
},1000);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该文章吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/articles/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function toBatchDel(){
var rows = mmg.selectedRows();
if(rows.length==0){
WST.msg('请选择要删除的文章',{icon:2});
return;
}
var ids = [];
for(var i=0;i<rows.length;i++){
ids.push(rows[i]['articleId']);
}
var box = WST.confirm({content:"您确定要删除这些文章吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/articles/delByBatch'),{ids:ids.join(',')},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}

View File

@ -0,0 +1,166 @@
{extend name="base" /}
{block name="css"}
<link href="__ADMIN__/js/ztree/css/zTreeStyle/zTreeStyle.css?v={$v}" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/ztree/jquery.ztree.all-3.5.js?v={$v}"></script>
<script src="__STATIC__/plugins/webuploader/webuploader.js?v={$v}" type="text/javascript" ></script>
<script src="__STATIC__/plugins//kindeditor/kindeditor.js?v={$v}" type="text/javascript" ></script>
<script src="__ADMIN__/articles/articles.js?v={$v}" type="text/javascript"></script>
<script>
$(function () {
initCombo(0);
{if condition="$object['articleId'] !=0 "}
WST.setValues({$object});
{/if}
$('#articleForm').validator({
fields: {
articleTitle: {
tip: "请输入文章名称",
rule: '文章名称:required;length[~50];'
},
catIds: {
tip: "请选择文章分类",
rule: "文章分类:required;",
target:"#catIdt"
},
articleKey: {
tip: "请输入关键字",
rule: '关键字:required;length[~100];'
},
layoutType: {
tip: "请选择移动端布局样式",
rule: '关键字:required;length[~100];'
},
articleContent: {
tip: "请输入文章内容",
rule: '文章内容:required;'
}
},
valid: function(form){
var articleId = $('#articleId').val();
toEdits(articleId);
}
})
});
</script>
{/block}
{block name="main"}
<input type='hidden' id='articleId' value='{$object["articleId"]}'/>
<form id='articleForm' autocomplete="off">
<table class='wst-form wst-box-top '>
<tr>
<th width='150'>文章标题<font color='red'>*</font></th>
<td><input type="text" id='articleTitle' name='articleTitle' maxLength='50' style='width:300px;' class='ipt'/></td>
</tr>
<tr>
<th width='150' align='right'>分类类型<font color='red'>*</font></th>
<td>
<input id="catSel" type="text" readonly onclick="showMenu();" style='width:250px;' value="{$object.catName}"/>
<div id="ztreeMenuContent" class="ztreeMenuContent">
<ul id="dropDownTree" class="ztree" style="margin-top:0; width:250px; height: 300px;"></ul>
</div>
<input id="catId" class="text ipt" autocomplete="off" type="hidden" value=""/>
</td>
</tr>
<tr>
<th width='150'>是否显示<font color='red'>*</font></th>
<td height='24' class="layui-form">
<input type="checkbox" id="isShow" {if $object['isShow']==1}checked{/if} name="isShow" value="1" class="ipt" lay-skin="switch" lay-filter="isShow" lay-text="显示|隐藏">
</td>
</tr>
<tr>
<th width='150'>关键字<font color='red'>*</font></th>
<td><input type="text" id='articleKey' name='articleKey' maxLength='120' style='width:600px;' class='ipt'/></td>
</tr>
<tr >
<th>移动端布局样式预览图:</th>
<td class="typeState" style="padding-top: 10px;">
<li>
<input type='radio' name='TypeStatus' class='ipt' value='1'/>
<label>
<img src="__ADMIN__/img/news_1.png" style="width:150px;height:80px;">
</label>
</li>
<li>
<input type='radio' name='TypeStatus' class='ipt' value='2' />
<label>
<img src="__ADMIN__/img/news_2.png" style="width:150px;height:80px;">
</label>
</li>
<li>
<input type='radio' name='TypeStatus' class='ipt' value='3' />
<label>
<img src="__ADMIN__/img/news_3.png" style="width:150px;height:80px;">
</label>
</li>
</td>
</tr>
<tr>
<th>封面图片:</th>
<td>
<div id='coverImgPicker'>请上传封面图片</div><span id='coverImgMsg'></span>图片大小:230x195(px),格式为 gif, jpg, jpeg, png
<input type="hidden" id='coverImg' name="coverImg" class="ipt"/>
</td>
</tr>
<tr>
<th>预览图:</th>
<td><div style="min-height:70px;" id="preview">{if ($object['articleId']!=0 && $object['coverImg'])}<img src="__IMGURL__/{$object['coverImg']}" height="152" />{/if}</div></td>
</tr>
<tr>
<th width='150'>文章内容<font color='red'>*</font></th>
<td>
<textarea id='articleContent' name='articleContent' class="form-control ipt" style='width:80%;height:400px'></textarea>
</td>
</tr>
<tr>
<td colspan='2' align='center'>
<button type="submit" class="btn btn-primary btn-mright" ><i class="fa fa-check"></i>&nbsp;</button>
<button type="button" class="btn" onclick="javascript:history.go(-1)"><i class="fa fa-angle-double-left"></i>&nbsp;</button>
</td>
</tr>
</table>
</form>
<script>
$(function(){
//文件上传
WST.upload({
pick:'#coverImgPicker',
formData: {dir:'articles',isThumb:1},
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#coverImgMsg').empty().hide();
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" height="152" />');
$('#coverImg').val(json.savePath+json.name);
}
},
progress:function(rate){
$('#coverImgMsg').show().html('已上传'+rate+"%");
}
});
//编辑器
KindEditor.ready(function(K) {
editor1 = K.create('textarea[name="articleContent"]', {
height:'350px',
uploadJson : WST.conf.ROOT+'/admin/articles/editorUpload',
allowFileManager : false,
allowImageUpload : true,
allowMediaUpload : false,
items:[
'source', '|', 'undo', 'redo', '|', 'preview', 'print', 'template', 'code', 'cut', 'copy', 'paste',
'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright',
'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
'superscript', 'clearhtml', 'quickformat', 'selectall', '|', 'fullscreen', '/',
'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|','image','media','table', 'hr', 'emoticons', 'baidumap', 'pagebreak',
'anchor', 'link', 'unlink', '|', 'about'
],
afterBlur: function(){ this.sync(); }
});
});
});
</script>
{/block}

View File

@ -0,0 +1,35 @@
{extend name="base" /}
{block name="css"}
<link href="__ADMIN__/js/ztree/css/zTreeStyle/zTreeStyle.css?v={$v}" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/ztree/jquery.ztree.all-3.5.js?v={$v}"></script>
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/articles/articles.js?v={$v}" type="text/javascript"></script>
<script>
$(function(){initCombo(1);initGrid();})
</script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<input id="catSel" type="text" readonly onclick="showMenu();" style='width:250px;' />
<div id="ztreeMenuContent" class="ztreeMenuContent">
<ul id="dropDownTree" class="ztree" style="margin-top:0; width:250px; height: 300px;"></ul>
</div>
<input id="catId" class="text ipt" autocomplete="off" type="hidden" value=""/>
<input type='text' id='key' placeholder='文章标题'/>
<button class="btn btn-primary" onclick='javascript:loadGrid()'><i class='fa fa-search'></i>查询</button>
{if WSTGrant('WZGL_03')}
<button class="btn btn-danger f-right btn-fixtop" onclick='javascript:toBatchDel()' style='margin-left:10px;'><i class='fa fa-trash'></i>批量删除</button>
{/if}
{if WSTGrant('WZGL_01')}
<button class="btn btn-success f-right btn-fixtop" onclick='javascript:toEdit(0)'><i class='fa fa-plus'></i>新增</button>
{/if}
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
{/block}

View File

@ -0,0 +1,134 @@
var mmg;
$(function(){
var h = WST.pageHeight();
var cols = [
{title:'属性名称', name:'attrName', width: 10},
{title:'所属商品分类', name:'goodsCatNames', width: 160},
{title:'属性类型', name:'attrType', width: 5,renderer: function(val,item,rowIndex){
return (val==1)?'多选项':(val==2?'下拉框':'输入框');
}},
{title:'属性选项', name:'attrVal', width: 260},
{title:'是否显示', name:'attrVal', width: 20,renderer: function(val,item,rowIndex){
return '<input type="checkbox" '+((item['isShow']==1)?"checked":"")+' id="isShow1" name="isShow1" value="1" class="ipt" lay-skin="switch" lay-filter="isShow1" data="'+item['attrId']+'" lay-text="显示|隐藏">'
}},
{title:'排序号', name:'attrSort', width: 5},
{title:'操作', name:'' ,width:80, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.SPSX_02)h += "<a class='btn btn-blue' href='javascript:toEdit("+ item['attrId']+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.SPSX_03)h += "<a class='btn btn-red' href='javascript:toDel(" + item['attrId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/attributes/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
mmg.on('loadSuccess',function(data){
layui.form.render();
layui.form.on('switch(isShow1)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsShow(id, 1);
}else{
toggleIsShow(id, 0);
}
});
})
});
//------------------属性类型---------------//
function toEdit(attrId){
$("select[id^='bcat_0_']").remove();
$('#attrForm').get(0).reset();
$.post(WST.U('admin/attributes/get'),{attrId:attrId},function(data,textStatus){
var json = WST.toAdminJson(data);
WST.setValues(json);
layui.form.render();
if(json.goodsCatId>0){
var goodsCatPath = json.goodsCatPath.split("_");
$('#bcat_0').val(goodsCatPath[0]);
var opts = {id:'bcat_0',val:goodsCatPath[0],childIds:goodsCatPath,className:'goodsCats'}
WST.ITSetGoodsCats(opts);
}
var title =(attrId==0)?"新增":"编辑";
var box = WST.open({title:title,type:1,content:$('#attrBox'),area: ['750px', '320px'],btn:['确定','取消'],
end:function(){$('#attrBox').hide();},yes:function(){
$('#attrForm').submit();
}});
$('#attrForm').validator({
rules: {
attrType: function() {
return ($('#attrType').val()!='0');
}
},
fields: {
'attrName': {rule:"required",msg:{required:'请输入属性名称'}},
'attrVal': 'required(attrType)'
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
params.goodsCatId = WST.ITGetGoodsCatVal('goodsCats');
$.post(WST.U('admin/attributes/'+((params.attrId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
$('#attrBox').hide();
loadGrid();
layer.close(box);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
});
}
function loadGrid(){
var keyName = $("#keyName").val();
var goodsCatPath = WST.ITGetAllGoodsCatVals('cat_0','pgoodsCats');
mmg.load({"page":1,"keyName":keyName,"goodsCatPath":goodsCatPath.join('_')});
}
function toDel(attrId){
var box = WST.confirm({content:"您确定要删除该属性吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/attributes/del'),{attrId:attrId},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function toggleIsShow( attrId, isShow){
$.post(WST.U('admin/attributes/setToggle'), {'attrId':attrId, 'isShow':isShow}, function(data, textStatus){
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
})
}
function changeArrType(v){
if(v>0){
$('#attrValTr').show();
}else{
$('#attrValTr').hide();
}
}

View File

@ -0,0 +1,87 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/attributes/attributes.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<div class="f-left">
<div id="pcat_0_box" class="f-left">
<select id="cat_0" class='ipt pgoodsCats' level="0" onchange="WST.ITGoodsCats({id:'cat_0',val:this.value,isRequire:false,className:'pgoodsCats'});">
<option value="">-所属分类-</option>
{volist name=":WSTGoodsCats(0)" id="vo"}
<option value="{$vo['catId']}">{$vo['catName']}</option>
{/volist}
</select>
</div>
<input type="text" id="keyName" placeholder="请输入属性名称"/>
<button class="btn btn-primary" onclick="loadGrid(0)"><i class='fa fa-search'></i>查询</button>
</div>
{if WSTGrant('SPSX_01')}
<button class="btn btn-success f-right" onclick="javascript:toEdit(0);"><i class='fa fa-plus'></i>新增</button>
{/if}
<div style="clear:both"></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='attrBox' style='display:none'>
<form id="attrForm">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>
<input type="hidden" id="attrId" value="" class="ipt" />
所属商品分类<font color='red'>*</font></th>
<td id="bcat_0_box">
<select id="bcat_0" class='ipt goodsCats' level="0" onchange="WST.ITGoodsCats({id:'bcat_0',val:this.value,isRequire:false,className:'goodsCats'});" data-rule='所属商品分类:required;' data-target="#msg_bcat_0">
<option value="">-请选择-</option>
{volist name=":WSTGoodsCats(0)" id="vo"}
<option value="{$vo['catId']}">{$vo['catName']}</option>
{/volist}
</select>
<span class='msg-box' id='msg_bcat_0' style='color:red;'>(至少选择一个商品分类)</span>
</td>
</tr>
<tr>
<th>属性名称<font color='red'>*</font></th>
<td>
<input type="text" id="attrName" name="attrName" class="ipt" maxLength='20'/>
</td>
</tr>
<tr>
<th>属性类型<font color='red'>*</font></th>
<td>
<select id='attrType' class='ipt' onchange='changeArrType(this.value)'>
<option value='0'>输入框</option>
<option value='1'>多选项</option>
<option value='2'>下拉项</option>
</select>
</td>
</tr>
<tr id='attrValTr' style='display:none'>
<th>属性选项<font color='red'>*</font></th>
<td>
<input type="text" id="attrVal" name="attrVal" class="ipt" style='width:70%' placeholder="每个属性选项以,号分隔" data-msg='请输入属性选项'/>
</td>
</tr>
<tr>
<th>是否显示<font color='red'> </font></th>
<td class='layui-form'>
<input type="checkbox" id="isShow" name="isShow" value="1" class="ipt" lay-skin="switch" lay-filter="isShow" lay-text="显示|隐藏">
</td>
</tr>
<tr>
<th>排序号<font color='red'>*</font></th>
<td>
<input type="text" id="attrSort" name="attrSort" class="ipt" maxLength='20'/>
</td>
</tr>
</table>
</form>
</div>
{/block}

View File

@ -0,0 +1,90 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'银行名称', name:'bankName', width: 100},
{title:'操作', name:'' ,width:70, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.YHGL_02)h += "<a class='btn btn-blue' onclick='javascript:getForEdit("+item['bankId']+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.YHGL_03)h += "<a class='btn btn-red' onclick='javascript:toDel(" + item['bankId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-80,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/banks/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/banks/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function getForEdit(id){
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/banks/get'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.bankId){
WST.setValues(json);
toEdit(json.bankId);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(id){
var title =(id==0)?"新增":"编辑";
var box = WST.open({title:title,type:1,content:$('#bankBox'),area: ['450px', '160px'],
btn:['确定','取消'],end:function(){$('#bankBox').hide();},yes:function(){
$('#bankForm').submit();
}});
$('#bankForm').validator({
fields: {
bankName: {
rule:"required;",
msg:{required:"银行名称不能为空"},
tip:"请输入银行名称",
ok:"",
},
},
valid: function(form){
var params = WST.getParams('.ipt');
params.bankId = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/banks/'+((id==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
$('#bankBox').hide();
$('#bankForm')[0].reset();
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}

View File

@ -0,0 +1,33 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/banks/banks.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
{if WSTGrant('YHGL_01')}
<div class="wst-toolbar">
<button class="btn btn-success f-right" onclick='javascript:toEdit(0)'><i class='fa fa-plus'></i>新增</button>
<div style="clear:both"></div>
{/if}
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='bankBox' style='display:none'>
<form id='bankForm' autocomplete="off">
<table class='wst-form wst-box-top'>
<tr>
<th width='100'>银行名称<font color='red'>*</font></th>
<td><input type='text' id='bankName' name="bankName" class='ipt' maxLength='20'/></td>
</tr>
</table>
</form>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

28
hyhproject/admin/view/base.html Executable file
View File

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<title>后台管理中心 - {:WSTConf('CONF.mallName')}</title>
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<link rel="stylesheet" href="__ADMIN__/js/bootstrap/css/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="__STATIC__/plugins/layui/css/layui.css" type="text/css" />
<link rel="stylesheet" href="__STATIC__/plugins/font-awesome/css/font-awesome.min.css" type="text/css" />
<script src="__ADMIN__/js/jquery.min.js"></script>
{block name="css"}{/block}
<link href="__ADMIN__/css/common.css?v={$v}" rel="stylesheet" type="text/css" />
<script>
window.conf = {"DOMAIN":"{:str_replace('index.php','',$Request.root.true)}","ROOT":"__ROOT__","IMGURL":"__IMGURL__","APP":"__APP__","STATIC":"__STATIC__","SUFFIX":"{:config('url_html_suffix')}","GOODS_LOGO":"{:WSTConf('CONF.goodsLogo')}","SHOP_LOGO":"{:WSTConf('CONF.shopLogo')}","MALL_LOGO":"{:WSTConf('CONF.mallLogo')}","USER_LOGO":"{:WSTConf('CONF.userLogo')}",'GRANT':'{:implode(",",session("WST_STAFF.privileges"))}',"IS_CRYPT":"{:WSTConf('CONF.isCryptPwd')}","ROUTES":'{:WSTRoute()}'}
</script>
<script language="javascript" type="text/javascript" src="__STATIC__/js/common.js"></script>
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div id="j-loader"><img src="__ADMIN__/img/ajax-loader.gif"/></div>
{block name="main"}{/block}
<script src="__ADMIN__/js/bootstrap/js/bootstrap.min.js"></script>
<script language="javascript" type="text/javascript" src="__STATIC__/plugins/layui/layui.all.js"></script>
<script language="javascript" type="text/javascript" src="__ADMIN__/js/common.js"></script>
{block name="js"}{/block}
{:hook('initCronHook')}
</body>
</html>

View File

@ -0,0 +1,88 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'品牌名称', name:'brandName', width: 100},
{title:'品牌介绍', name:'brandDesc', width: 100,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['brandDesc']+"</p></span>";
}},
{title:'商铺', name:'shopName', width: 100,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['shopName']+"</p></span>";
}},
{title:'主营分类', name:'catName', width: 100,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['catName']+"</p></span>";
}},
{title:'品牌图标', name:'img', width: 100, renderer: function(val,item,rowIndex){
return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:40px;width:40px;' src='"+WST.conf.IMGURL+"/"+item['brandImg']
+"'><span class='imged' style='left:45px;' ><img style='height:150px;width:150px;' src='"+WST.conf.IMGURL+"/"+item['brandImg']+"'></span></span>";
}},
{title:'操作', name:'' ,width:70, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.PPGL_02)h += "<a class='btn btn-blue' href='javascript:toEdit("+item["brandId"]+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.PPGL_03)h += "<a class='btn btn-red' href='javascript:toDel("+item["brandId"]+")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol: true,indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/brands/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
function loadGrid(){
mmg.load({page:1,key:$('#key').val(),id:$('#catId').val()});
}
function toEdit(id){
location.href=WST.U('admin/brands/toEdit','id='+id);
}
function toEdits(id){
var params = WST.getParams('.ipt');
params.id = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/brands/'+((id>0)?"edit":"add")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
setTimeout(function(){
location.href=WST.U('admin/brands/index');
},1000);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该品牌吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/brands/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function toolTip(){
$('body').mousemove(function(e){
var windowH = $(window).height();
if(e.pageY >= windowH*0.8){
var top = windowH*0.233;
$('.imged').css('margin-top',-top);
}else{
var top = windowH*0.06;
$('.imged').css('margin-top',-top);
}
});
}

View File

@ -0,0 +1,142 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
<style>
.goodsCat{display:inline-block;width:150px}
</style>
{/block}
{block name="js"}
<script src="__STATIC__/plugins/webuploader/webuploader.js?v={$v}" type="text/javascript" ></script>
<script src="__STATIC__/plugins//kindeditor/kindeditor.js?v={$v}" type="text/javascript" ></script>
<script src="__ADMIN__/brands/brands.js?v={$v}" type="text/javascript"></script>
<script>
$(function () {
{if condition="$object['brandId'] !=0"}
WST.setValues({$object});
{/if}
$('#brandForm').validator({
fields: {
brandName: {
tip: "请输入品牌名称",
rule: '品牌名称:required;length[~50];'
},
shopId: {
tip: "请输入店铺ID",
rule: '品牌名称:required;'
},
catId: {
tip: "请选择分类",
rule: 'checked(1~);length[~16];'
},
brandDesc: {
tip: "请输入品牌介绍",
rule: '品牌介绍:required;'
}
},
valid: function(form){
var brandId = $('#brandId').val();
toEdits(brandId);
}
})
});
</script>
{/block}
{block name="main"}
<input type='hidden' id='brandId' value='{$object["brandId"]}'/>
<div class="l-loading" style="display: block" id="wst-loading"></div>
<form id="brandForm" autocomplete="off">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>品牌名称<font color='red'>*</font></th>
<td><input type="text" id='brandName' name='brandName' maxLength='20' style='width:300px;' class='ipt'/></td>
</tr>
<tr>
<th width='150' align='right'>店铺ID<font color='red'>*</font></th>
<td><input type="text" id='shopId' name='shopId' maxLength='20' style='width:300px;' class='ipt'/></td>
</tr>
<tr>
<th width='150' align='right'>所属分类<font color='red'>*</font></th>
<td>
{volist name="gcatList" id="vo"}
<label class='goodsCat'>
<input type='checkbox' id='catId' name='catId' class="ipt" value='{$vo["catId"]}'
{if condition="$object['brandId'] !=0 "}
{if in_array($vo["catId"],$object['catIds'])==1}checked{/if}
{/if}
>&nbsp;{$vo["catName"]}&nbsp;
</label>
{/volist}
</td>
</tr>
<tr width='150'>
<th align='right'>品牌图标<font color='red'>*</font></th>
<td>
<div>
<div id="filePicker" style='margin-left:0px;float:left; width: 100px'>上传图片</div>
<div style='margin-left:5px;float:left'>图片大小:400 x 200 (px),格式为 gif, jpg, jpeg,bmp, png</div>
<input id="brandImg" name="brandImg" class="text ipt" autocomplete="off" type="hidden" value="{$object.brandImg}"/>
<div style="clear:both;"></div>
</div>
</td>
</tr>
<tr >
<th align='right' height='152'>预览图:</th>
<td >
<div id="preview" >
{if $object['brandId']!=0}
<img src="__IMGURL__/{$object['brandImg']}" class="ipt" height='152'/>
{/if}
</div>
</td>
</tr>
<tr>
<th width='150'>品牌介绍<font color='red'>*</font></th>
<td>
<textarea id='brandDesc' name='brandDesc' class="form-control ipt" style='width:80%;height:400px'></textarea>
</td>
</tr>
<tr>
<td colspan='2' align='center'>
<button type="submit" class="btn btn-primary btn-mright"><i class="fa fa-check"></i>&nbsp;</button>
<button type="button" class="btn" onclick="javascript:history.go(-1)"><i class="fa fa-angle-double-left"></i>&nbsp;</button>
</td>
</tr>
</table>
</form>
<script>
$(function(){
//文件上传
WST.upload({
pick:'#filePicker',
formData: {dir:'brands',mWidth:500,mHeight:250},
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#preview').html('<img src="'+WST.conf.IMGURL+"/"+json.savePath+json.thumb+'" height="200" />');
$('#brandImg').val(json.savePath+json.name);
}
}
});
//编辑器
KindEditor.ready(function(K) {
editor1 = K.create('textarea[name="brandDesc"]', {
height:'350px',
uploadJson : WST.conf.ROOT+'/admin/brands/editorUpload',
allowFileManager : false,
allowImageUpload : true,
items:[
'source', '|', 'undo', 'redo', '|', 'preview', 'print', 'template', 'code', 'cut', 'copy', 'paste',
'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright',
'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
'superscript', 'clearhtml', 'quickformat', 'selectall', '|', 'fullscreen', '/',
'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|','image','table', 'hr', 'emoticons', 'baidumap', 'pagebreak',
'anchor', 'link', 'unlink', '|', 'about'
],
afterBlur: function(){ this.sync(); }
});
});
});
</script>
{/block}

View File

@ -0,0 +1,32 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/brands/brands.js?v={$v}" type="text/javascript"></script>
<script>
$(function(){initGrid();})
</script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<select id='catId'>
<option value='0'>所属商品分类</option>
{volist name="gcatList" id="vo"}
<option value='{$vo['catId']}'>{$vo['catName']}</option>
{/volist}
</select>
<input type='text' id='key' placeholder='品牌名称'/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class='fa fa-search'></i>查询</button>
{if WSTGrant('PPGL_01')}
<button class="btn btn-success f-right" onclick='javascript:toEdit(0)'><i class='fa fa-plus'></i>新增</button>
{/if}
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
{/block}

View File

@ -0,0 +1,28 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/carts/carts.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<input type="text" name="goodsName" placeholder='商品名称' id="goodsName" class='j-ipt'/>
<input type="text" name="shopName" placeholder='店铺名称' id="shopName" class='j-ipt'/>
<input type="text" name="loginName" placeholder='用户名称' id="loginName" class='j-ipt'/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class='fa fa-search'></i>查询</button>
<button class="btn btn-primary btn-fixtop f-right" style="margin-left: 10px;" onclick='javascript:toExport()'><i class="fa fa-sign-in"></i>导出</button>
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initGrid();})
</script>
{/block}

View File

@ -0,0 +1,62 @@
var mmg;
$(function(){
var laydate = layui.laydate;
laydate.render({
elem: '#startDate'
});
laydate.render({
elem: '#endDate'
});
})
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'&nbsp;', name:'goodsImg', width: 30, renderer: function(val,item,rowIndex){
var thumb = item['goodsImg'];
//thumb = thumb.replace('.','_thumb.');
return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:60px;width:60px;' src='"+WST.conf.IMGURL+"/"+thumb+"/thumb80"
+"'><span class='imged' ><img style='height:180px;width:180px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'></span></span>";
}},
{title:'用户名称', name:'loginName' ,width:60,sortable:true},
{title:'商品名称', name:'goodsName', width: 120,sortable:true,renderer: function(val,item,rowIndex){
return "<span><p>"+item['goodsName']+"</p></span>";
}},
{title:'购物车数量', name:'cartNum' ,width:20,sortable:true,align:'center', },
{title:'单品价格', name:'shopPrice' ,width:20,sortable:true,align:'center', renderer: function(val,item,rowIndex){
return '¥'+item['shopPrice'];
}},
{title:'总价', name:'totalPrice' ,width:20,sortable:true,align:'center', renderer: function(val,item,rowIndex){
return '¥'+item['totalPrice'];
}},
{title:'所属店铺', name:'shopName' ,width:60,sortable:true},
{title:'所属分类', name:'goodsCatName' ,width:60,renderer:function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsCatName']+"</p></span>";
}},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank' href='"+WST.U("home/goods/detail","id="+item['goodsId'])+"'><i class='fa fa-search'></i>查看</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-85),indexCol: true, indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/carts/cartsByPage'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'goodsSn',sortStatus:'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
function toExport(){
var params = {};
params = WST.getParams('.j-ipt');
var box = WST.confirm({content:"您确定要导出订单吗?",yes:function(){
layer.close(box);
location.href=WST.U('admin/carts/toExport',params);
}});
}
function loadGrid(){
var params = WST.getParams('.j-ipt');
params.page = 1;
mmg.load(params);
}

View File

@ -0,0 +1,90 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'提现单号', name:'cashNo', width: 100,sortable: true},
{title:'会员类型', name:'targetType' ,width:60,sortable: true, renderer:function(val,item,rowIndex){
return (item['targetType']==1)?"【商家】":"【会员】";
}},
{title:'会员名称', name:'loginName' ,width:100, renderer:function(val,item,rowIndex){
if(item['targetType']==1){
return WST.blank(item['userName'])+"("+item['loginName']+")";
}else{
return WST.blank(item['userName'])+"("+item['loginName']+")";
}
}},
{title:'提现银行', name:'accTargetName' ,width:60,sortable: true},
{title:'银行卡号', name:'accNo' ,width:40,sortable: true},
{title:'持卡人', name:'accUser' ,width:40,sortable: true},
{title:'提现金额', name:'money' ,width:40,sortable: true, renderer:function(val,item,rowIndex){
return '¥'+val;
}},
{title:'提现时间', name:'createTime',sortable: true ,width:60},
{title:'状态', name:'cashSatus' ,width:60,sortable: true, renderer:function(val,item,rowIndex){
return (val==1)?"<span class='statu-yes'><i class='fa fa-check-circle'></i> 提现成功</span>":((val==-1)?"<span class='statu-no'><i class='fa fa-ban'></i> 提现失败&nbsp;</span>":"<span class='statu-wait'><i class='fa fa-clock-o'></i> 待处理&nbsp;</span>");
}},
{title:'操作', name:'' ,width:120, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' href='javascript:toView(" + item['cashId'] + ")'><i class='fa fa-search'></i>查看</a> ";
if(item['cashSatus']==0 && WST.GRANT.TXSQ_04)h += "<a class='btn btn-green' href='javascript:toEdit(" + item['cashId'] + ")'><i class='fa fa-pencil'></i>处理</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-173,indexCol: true,indexColWidth:50, cols: cols,method:'POST',nowrap:true,
url: WST.U('admin/cashdraws/pageQuery'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'createTime',sortStatus:'desc',
remoteSort:true ,
sortName: 'cashNo',
sortStatus: 'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
var diff = v?173:128;
mmg.resize({height:h-diff})
}});
}
function toEdit(id){
location.href=WST.U('admin/cashdraws/toHandle','id='+id);
}
function toView(id){
location.href=WST.U('admin/cashdraws/toView','id='+id);
}
function loadGrid(){
mmg.load({page:1,cashNo:$('#cashNo').val(),cashSatus:$('#cashSatus').val(),targetType:$('#targetType').val()});
}
function save(){
var params = WST.getParams('.ipt');
if(typeof(params.cashSatus)=='undefined'){
WST.msg('请选择提现结果',{icon:2});
return;
}
if(params.cashSatus==-1 && $.trim(params.cashRemarks)==''){
WST.msg('输入提现失败原因',{icon:2});
return;
}
if(WST.confirm({content:'您确定该提现申请'+((params.cashSatus==1)?'成功':'失败')+'吗?',yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/cashdraws/handle'),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('admin/cashdraws/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}}));
}
function toExport(){
var params = {};
params = WST.getParams('.j-ipt');
var box = WST.confirm({content:"您确定要导出提现申请记录吗?",yes:function(){
layer.close(box);
location.href=WST.U('admin/cashdraws/toExport',params);
}});
}

View File

@ -0,0 +1,85 @@
{extend name="base" /}
{block name="js"}
<script src="__ADMIN__/cashdraws/cashdraws.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<style>
th{height:25px;}
</style>
<form autocomplete='off' id='editFrom'>
<input type='hidden' id='cashId' class='ipt' value="{$object['cashId']}"/>
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>会员类型:</th>
<td>
{if $object['targetType']==1}商家{else}普通会员{/if}
</td>
</tr>
<tr>
<th width='150'>会员名称:</th>
<td>
{$object['userName']}({$object['loginName']})
</td>
</tr>
<tr>
<th width='150'>提现单号:</th>
<td>
{$object['cashNo']}
</td>
</tr>
<tr>
<th>提现金额:</th>
<td>¥{$object['money']}</td>
</tr>
<tr>
<th>提现银行:</th>
<td>{$object['accTargetName']}</td>
</tr>
<tr>
<th>开卡地区:</th>
<td>
{$object['accAreaName']}
</td>
</tr>
<tr>
<th>卡号:</th>
<td>
{$object['accNo']}
</td>
</tr>
<tr>
<th>持卡人:</th>
<td>
{$object['accUser']}
</td>
</tr>
<tr>
<th>申请时间:</th>
<td>{$object['createTime']}</td>
</tr>
<tr>
<th>提现结果:</th>
<td class='layui-form'>
<label>
<input type='radio' name='cashSatus' class='ipt' value='1' title='提现成功'/>
</label>
<label>
<input type='radio' name='cashSatus' class='ipt' value='-1' title='提现失败'/>
</label>
</td>
</tr>
<tr >
<th valign='top'>提现备注:<br/>(用户可见)&nbsp;&nbsp;</th>
<td>
<textarea id='cashRemarks' class='ipt' style='width:70%;height:80px;'></textarea>
</td>
</tr>
<tr>
<td colspan='2' align='center'>
<button type="button" class="btn btn-primary btn-mright" onclick='javascript:save()'><i class="fa fa-check"></i>提交</button>
<button type="button" class="btn" onclick="javascript:history.go(-1)"><i class="fa fa-angle-double-left"></i>返回</button>
</td>
</tr>
</table>
</form>
{/block}

View File

@ -0,0 +1,42 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/cashdraws/cashdraws.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>本功能主要用于处理来自于会员(商家)的提现请求。提现通过后系统会扣除会员(商家)的钱包金额。</li>
<li>本功能只扣除本系统的会员(商家)钱包金额,实际上的资金转账需平台线下操作。</li>
</ul>
</div>
<div class="wst-toolbar">
<select id='targetType' class='j-ipt'>
<option value='-1'>会员类型</option>
<option value='0'>会员</option>
<option value='1'>商家</option>
</select>
<select id='cashSatus' class='j-ipt'>
<option value='-1'>提现状态</option>
<option value='0'>待处理</option>
<option value='1'>已通过</option>
</select>
<input type="text" name="cashNo" placeholder='提现单号' id="cashNo" class='j-ipt'/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class="fa fa-search"></i>查询</button>
<button class="btn btn-primary f-right btn-fixtop" onclick='javascript:toExport(0)'><i class="fa fa-sign-in"></i>导出</button>
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){
initGrid();
})
</script>
{/block}

View File

@ -0,0 +1,70 @@
{extend name="base" /}
{block name="js"}
<script src="__ADMIN__/cashdraws/cashdraws.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<form autocomplete='off'>
<input type='hidden' id='cashId' class='ipt' value="{$object['cashId']}"/>
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>会员类型:</th>
<td>
{if $object['targetType']==1}商家{else}普通会员{/if}
</td>
</tr>
<tr>
<th width='150'>会员名称:</th>
<td>
{$object['userName']}({$object['loginName']})
</td>
</tr>
<tr>
<th width='150'>提现单号:</th>
<td>
{$object['cashNo']}
</td>
</tr>
<tr>
<th>提现金额:</th>
<td>¥{$object['money']}</td>
</tr>
<tr>
<th>提现银行:</th>
<td>{$object['accTargetName']}</td>
</tr>
<tr>
<th>开卡地区:</th>
<td>
{$object['accAreaName']}
</td>
</tr>
<tr>
<th>卡号:</th>
<td>
{$object['accNo']}
</td>
</tr>
<tr>
<th>持卡人:</th>
<td>
{$object['accUser']}
</td>
</tr>
<tr>
<th>申请时间:</th>
<td>{$object['createTime']}</td>
</tr>
<tr >
<th valign='top'>提现备注:<br/>(用户可见)&nbsp;&nbsp;</th>
<td>
{$object['cashRemarks']}
</td>
</tr>
<tr>
<td colspan='2' align='center'>
<button type="button" class="btn" onclick='javascript:history.go(-1)'><i class="fa fa-angle-double-left"></i>返回</button>
</td>
</tr>
</table>
</form>
{/block}

View File

@ -0,0 +1,267 @@
{extend name="base" /}
{block name="css"}
<style type="text/css">
@page
{
size: auto; /* auto is the initial value */
margin: 0mm; /* this affects the margin in the printer settings */
}
.table_title{
font-size:18px;font-weight: bold;text-align: center;margin:10px;
}
.right{
float: right;
}
.center{
text-align: center;
}
.layui-form{
width:95%;
margin:50px auto;
}
.red{
color:red;
}
</style>
{/block}
{block name="js"}
<script src="__ADMIN__/cashdraws/cashdraws.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-input-block" style="float: right;">
<button class="layui-btn layui-btn-warm print">打印</button>
</div>
</div>
<div class="layui-collapse" lay-filter="test">
<div class="layui-colla-item">
<h2 class="layui-colla-title">点击查询/充值/扣除操作</h2>
<div class="layui-colla-content">
<fieldset class="layui-elem-field">
<legend>查询</legend>
<div class="layui-field-box">
<form action="" method="get">
<div class="wst-toolbar">
<label class="layui-form-label">查询日期</label>
<input type="text" id="searchDate" name="searchDate" class="layui-input" maxlength="20" value="{$searchDate}" placeholder="查询日期">
<button class="btn btn-primary search" ><i class="fa fa-search"></i>查询</button>
</div>
</form>
</div>
</fieldset>
<fieldset class="layui-elem-field">
<legend>充值/扣除操作</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<label class="layui-form-label" style="width: auto;">日期选择:</label>
<div class="layui-input-inline">
<input type="text" id="reDate" name="reDate" class="layui-input ipt" maxlength="20" value="{$searchDate}" placeholder="日期">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width: auto;">充值/扣除:</label>
<div class="layui-input-block">
<input type="radio" class="ipt" name="reType" value="1" title="充值" checked="">
<input type="radio" class="ipt" name="reType" value="2" title="扣除">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width: auto;">变动数额:</label>
<div class="layui-input-inline">
<input type="text" id="money" name="money" class="layui-input ipt" maxlength="20" value="" placeholder="请输入变动数额">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width: auto;">&nbsp;&nbsp;&nbsp;验证码:</label>
<div class="layui-input-inline">
<input type="text" id="mobileCode" name="mobileCode" class="layui-input" maxlength="20" value="" placeholder="请输入验证码">
</div>
<div class="layui-word-aux""><button class="layui-btn layui-btn-normal layui-btn-sm getCode">获取验证码</button> </div>
</div>
<div class="layui-form-item">
<button class="layui-btn setReport" >确定提交</button>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<!--start-->
<table class="layui-table">
<tbody>
<tr>
<th colspan="12"> <p class="table_title">交易明细备查表-{$searchDate}</p></th>
</tr>
<tr>
<th colspan="12"> <p class="right">单位:元</p></th>
</tr>
<tr>
<td>上日余额¥ {$orders['yesterdayMoney']}</td>
<td>今日余额¥ {$orders['todayMoney']}</td>
<td>今日交易¥{$orders['allPaySum']}</td>
<td>今日代收¥ {$orders['collectionGatheringSum']}</td>
<td>今日代付¥ {$orders['coupousEarningsSum']+$orders['hasVouchersEearningsSum']+$orders['taxFeeSum']+$orders['collectionPaySum']}</td>
<td class="red">今日收益¥ {$orders['coupousEarningsSum']+$orders['hasVouchersEearningsSum']}</td>
</tr>
<tr>
<td colspan="1" >今日明细</td>
<td colspan="1" >代付款</td>
<td colspan="3" class="center">公司手续费收益</td>
<td>商品交易</td>
</tr>
<tr>
<td>合计</td>
<td>¥{$orders['taxFeeSum']}</td>
<td>¥{$orders['hasVouchersEearningsSum']}</td>
<td>合计</td>
<td>¥{$orders['coupousEarningsSum']}</td>
<td>¥{$orders['allPaySum']}</td>
</tr>
<tr>
<td>购户ID</td>
<td>今日缴税</td>
<td>已获券收益</td>
<td>商户ID</td>
<td>优惠款收益</td>
<td>销售额</td>
</tr>
{foreach name="orders['list']" item="vo"}
<tr>
<td>{$vo['loginName']} </td>
<td>{$vo['taxFee']}</td>
<td>{$vo['hasVouchersEearnings']}</td>
<td>{$vo['shopLoginName']}</td>
<td>{$vo['coupousEarnings']} </td>
<td>{$vo['realTotalMoney']}</td>
</tr>
{/foreach}
</tbody>
</table>
<table class="layui-table">
<tbody>
<tr>
<th colspan="3"> <p class="table_title">交易明细备查表-{$searchDate}</p></th>
</tr>
<tr>
<th class="red">今日汇总:¥{$orders['collectionGatheringSum']-$orders['collectionPaySum']}</th>
<th>代收款</th>
<th>代付款</th>
</tr>
<tr>
<th>合计</th>
<th>¥{$orders['collectionGatheringSum']}</th>
<th>¥{$orders['collectionPaySum']}</th>
</tr>
<tr>
<th>商户ID</th>
<th>优惠款</th>
<th>提现金额</th>
</tr>
{foreach name="orders['collection']" item="vo"}
<tr>
<td>{$vo['shopLoginName']}</td>
<td>{$vo['gathering']}</td>
<td>{$vo['pay']}</td>
</tr>
{/foreach}
</tbody>
</table>
<!--end-->
</div>
<script>
$(function(){
var laydate = layui.laydate;
laydate.render({
elem: '#searchDate'
});
laydate.render({
elem: '#reDate'
});
isSend = false;
$('body').on('click','.getCode',function(){
var params = WST.getParams('.ipt');
if(params.money<=0){
WST.msg('请输入变动金额','warn');
$('#money').focus();
return;
}
var that = $(this);
if(isSend) return;
isSend = true;
$('.ipt').removeAttr('disabled');
$.post(WST.U('admin/Cashdraws/getMobileCode'), params, function(data) {
var json = WST.toAdminJson(data);
if(json.status == 1) {
$('.ipt').attr('disabled','disabled');
WST.msg(json.msg, 'success');
time = 120;
that.attr('disabled', 'disabled').html('120秒获取');
$('#mobileCode').focus();
var task = setInterval(function() {
time--;
that.html('' + time + "秒获取");
if(time == 0) {
isSend = false;
clearInterval(task);
that.removeAttr('disabled').html("重新发送");
}
}, 1000);
} else {
WST.msg(json.msg, 'warn');
isSend = false;
}
data = json = null;
});
});
//修改凭证
$('body').on('click','.setReport',function(){
var params = {};
params.mobileCode = $('#mobileCode').val();
if(params.mobileCode.length<4){
WST.msg('请输入验证码','warn');
return;
}
var that = $(this);
that.attr('disabled','disabled');
$.post(WST.U('admin/Cashdraws/setReport'), params, function(data) {
var json = WST.toAdminJson(data);
if(json.status == 1) {
WST.msg(json.msg, 'success');
$('.ipt').removeAttr('disabled');
} else {
WST.msg(json.msg, 'warn');
}
that.removeAttr('disabled');
data = json = null;
});
});
//打印
$('body').on('click','.print',function(){
bdhtml = window.document.body.innerHTML;
sprnstr = "<!--start-->";
eprnstr = "<!--end-->";
prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr));
prnhtml = prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML = prnhtml;
window.print();
location.reload();
});
})
</script>
{/block}

View File

@ -0,0 +1,81 @@
var mmg;
function initGrid(staffId){
var h = WST.pageHeight();
var cols = [
{title:'充值金额', name:'chargeMoney', width: 60},
{title:'赠送金额', name:'giveMoney' ,width:60},
{title:'排序号', name:'itemSort' ,width:50},
{title:'创建时间', name:'createTime' ,width:30},
{title:'操作', name:'op' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.CZGL_02)h += "<a class='btn btn-blue' onclick='javascript:location.href=\""+WST.U('admin/Chargeitems/toEdit','id='+item['id'])+"\"'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.CZGL_03)h += "<a class='btn btn-red' onclick='javascript:toDel(" + item['id'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-80),indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/Chargeitems/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
function loadQuery(){
var query = WST.getParams('.query');
query.page = 1;
mmg.load(query);
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Chargeitems/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadQuery();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function editInit(){
/* 表单验证 */
$('#adPositionsForm').validator({
fields: {
chargeMoney: {
rule:"required",
msg:{required:"请输入充值金额"},
tip:"请输入充值金额",
ok:"",
},
giveMoney: {
rule:"required;",
msg:{required:"请输入赠送金额"},
tip:"请输入赠送金额",
ok:"",
}
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/Chargeitems/'+((params.id==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('Admin/Chargeitems/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}

View File

@ -0,0 +1,46 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script type='text/javascript' src='__STATIC__/plugins/webuploader/webuploader.js?v={$v}'></script>
<script src="__ADMIN__/chargeitems/chargeitems.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<form id="adPositionsForm">
<table class='wst-form wst-box-top'>
<tr>
<tr>
<th width='150'>充值金额<font color='red'>*</font></th>
<td>
<input type="text" id="chargeMoney" name="chargeMoney" value='{$data['chargeMoney']}' class="ipt" onkeypress="return WST.isNumberKey(event)" onkeyup="javascript:WST.isChinese(this,1)"/>
</td>
</tr>
<tr>
<th>赠送金额<font color='red'>*</font></th>
<td>
<input type="text" id="giveMoney" name="giveMoney" value='{$data['giveMoney']}' class="ipt" onkeypress="return WST.isNumberKey(event)" onkeyup="javascript:WST.isChinese(this,1)"/>
</td>
</tr>
<tr>
<th>排序号<font color='red'> </font></th>
<td>
<input type='text' id='itemSort' name="itemSort" value='{$data['itemSort']}' class='ipt' maxLength='10' onkeypress="return WST.isNumberKey(event)" onkeyup="javascript:WST.isChinese(this,1)"/>
</td>
</tr>
<tr>
<td colspan='2' align='center' class='wst-bottombar'>
<input type="hidden" name="id" id="id" class="ipt" value="{$data['id']+0}" />
<button type="submit" class="btn btn-primary btn-mright" ><i class="fa fa-check"></i>提交</button>
<button type="button" class="btn" onclick="javascript:history.go(-1)"><i class="fa fa-angle-double-left"></i>返回</button>
</td>
</tr>
</table>
</form>
<script>
$(function(){editInit()});
</script>
{/block}

View File

@ -0,0 +1,23 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/chargeitems/chargeitems.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
{if WSTGrant('GGWZ_01')}
<div class="wst-toolbar">
<button class="btn btn-success f-right" onclick="javascript:location.href='<?=url("Chargeitems/toEdit")?>'"><i class='fa fa-plus'></i>新增</button>
<div style="clear:both"></div>
</div>
{/if}
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,333 @@
/***验证框架样式***/
.msg-wrap,.n-icon,.n-inline-block,.n-msg,.nice-validator [contenteditable],.nice-validator input,.nice-validator select,.nice-validator textarea{display:inline-block}
.nice-validator .msg-container .msg-box{display:block}
.nice-validator .msg-container .msg-wrap{position:static}
.msg-box{position:relative}
.msg-wrap{position:relative;white-space:nowrap;line-height:16px;font-size:12px}
.msg-wrap,.n-icon,.n-msg{vertical-align:top}
.msg-box .msg-wrap .n-error,.msg-box .msg-wrap .n-ok,.msg-box .msg-wrap .n-tip{display:block;background:0 0;box-shadow:none;padding:3px 2px}
.n-arrow{position:absolute;overflow:hidden}
.n-arrow b,.n-arrow i{position:absolute;left:0;top:0;border:0;margin:0;padding:0;overflow:hidden;font-weight:400;font-style:normal;font-size:12px;font-family:serif;line-height:14px}
.n-arrow i{text-shadow:none}
.n-icon{width:16px;height:16px;overflow:hidden;background-repeat:no-repeat}
.n-msg{display:inline-block;margin-left:1px}
.n-error{color:#c33}
.n-ok{color:#390}
.n-loading,.n-tip .n-msg{color:grey}
.n-error .n-icon{background-position:0 0}
.n-ok .n-icon{background-position:-16px 0}
.n-tip .n-icon{background-position:-32px 0}
.n-loading .n-icon{background:url(../images/loading.gif) 0 center no-repeat!important}
.n-bottom,.n-left,.n-right,.n-top{display:inline-block;line-height:0;vertical-align:top;outline:0}
.n-bottom .n-arrow,.n-top .n-arrow{height:6px;width:12px;left:8px}
.n-left .n-arrow,.n-right .n-arrow{width:6px;height:12px;top:6px}
.n-top{vertical-align:top}
.n-top .msg-wrap{margin-bottom:6px}
.n-top .n-arrow{bottom:-6px}
.n-top .n-arrow b{top:-6px}
.n-top .n-arrow i{top:-7px}
.n-bottom{vertical-align:bottom}
.n-bottom .msg-wrap{margin-top:6px}
.n-bottom .n-arrow{top:-6px}
.n-bottom .n-arrow b{top:-1px}
.n-bottom .n-arrow i{top:0}
.n-left .msg-wrap{right:100%;margin-right:6px}
.n-left .n-arrow{right:-6px}
.n-left .n-arrow b{left:-6px}
.n-left .n-arrow i{left:-7px}
.n-right .msg-wrap{margin-left:6px}
.n-right .n-arrow{left:-6px}
.n-right .n-arrow b{left:1px}
.n-right .n-arrow i{left:2px}
.n-default .n-left,.n-default .n-right{margin-top:5px}
.n-default .n-top .msg-wrap{bottom:100%}
.n-default .n-bottom .msg-wrap{top:100%}
.n-default .msg-wrap{position:absolute;z-index:1}
.n-default .msg-wrap .n-icon{background-image:url(../images/validator_default.png)}
.n-default .n-tip .n-icon{display:none}
.n-simple .msg-wrap{position:absolute;z-index:1}
.n-simple .msg-wrap .n-icon{background-image:url(../images/validator_simple.png)}
.n-simple .n-top .msg-wrap{bottom:100%}
.n-simple .n-bottom .msg-wrap{top:100%}
.n-simple .n-left,.n-simple .n-right{margin-top:5px}
.n-simple .n-bottom .msg-wrap{margin-top:3px}
.n-simple .n-tip .n-icon{display:none}
.n-yellow .msg-wrap{position:absolute;z-index:1;padding:4px 6px;font-size:12px;border:1px solid transparent;background-color:#fffcef;border-color:#ffbb76;color:#db7c22;box-shadow:0 1px 3px #ccc;border-radius:2px}
.n-yellow .msg-wrap .n-arrow b{color:#ffbb76;text-shadow:0 0 2px #ccc}
.n-yellow .msg-wrap .n-arrow i{color:#fffcef}
.n-yellow .msg-wrap .n-icon{background-image:url(../images/validator_simple.png)}
.n-yellow .n-top .msg-wrap{bottom:100%}
.n-yellow .n-bottom .msg-wrap{top:100%}
.n-yellow .n-loading,.n-yellow .n-ok,.n-yellow .n-tip{background-color:#f8fdff;border-color:#ddd;color:#333;box-shadow:0 1px 3px #ccc}
.n-yellow .n-loading .n-arrow b,.n-yellow .n-ok .n-arrow b,.n-yellow .n-tip .n-arrow b{color:#ddd;text-shadow:0 0 2px #ccc}
.n-yellow .n-loading .n-arrow i,.n-yellow .n-ok .n-arrow i,.n-yellow .n-tip .n-arrow i{color:#f8fdff}
/***系统风格样式***/
body{background:#ffffff;font-size: 12px;overflow-x:hidden;overflow-y:auto;}
.j-layout{margin:5px;}
.j-layout .j-layout-left{border:1px solid #ccc;float:left;}
.j-layout .j-layout-center{border:1px solid #ccc;float:left;margin-left:5px;}
.j-layout .j-layout-panel{border-bottom:1px solid #ccc;height:30px;width:100%;line-height:30px;padding-left:5px;}
.wst-panel{border:1px solid #666;float:left;}
.wst-panel .panel-header{border-bottom:1px solid #666;height:30px;background:#ffffff;}
.wst-toolbar{border-bottom: 0px;line-height: 30px;padding:5px;}
.f-right{float:right;}
.f-left{float:left;}
.f-clear{clear:both}
.wst-form{width:100%;margin-bottom:20px}
.wst-form input.cfg,.wst-form input.textarea{width:340px}
.wst-form th{text-align:right;font-weight:normal}
.wst-form td{padding:2px 5px;}
.wst-box-top{margin-top:5px}label{margin-right:10px}
.webuploader-pick{background:#428bca;height:24px;border-radius:3px;line-height:24px;overflow:hidden}
.webuploader-container{height:24px;overflow:hidden;width:300px}
#j-loader{cursor: progress; position: fixed; top: -50%; left: -50%; width: 200%; height: 200%; background: #fff; z-index: 10000; overflow: hidden;}
#j-loader img{position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto;}
td.wst-bottombar{text-align:left;padding-left:155px;padding-top:10px;}
.btn-fixtop{margin-top:3px;}
.btn-mright{margin-right:10px;}
.wst-footer{padding-bottom:20px;text-align:center}
.line-break{word-break:break-all;word-wrap:break-word;}
.wst-green{color:#5FB878;}
.wst-wiki{background: #F5F5F5;color:#777;height:20px;padding:5px 8px;border:1px solid;border-color:#DCDCDC #DCDCDC #B3B3B3 #DCDCDC;border-radius:3px;}
/***订单**/
.order-box{margin-bottom:5px;border-bottom:1px solid #ddd}
.order-box .box-head{font-weight:bold;height:30px;line-height:30px}
.order-box .delivery-box{height:100px;border-bottom:1px solid #ddd}
.order-box th{font-weight:normal}
.order-box .goods-head{border-top:2px solid #fc7a64;background:#f3f3f3;display:block;height:25px;line-height:25px;margin:0 0 10px;padding:5px 0}
.order-box .goods-head .goods{float:left;width:650px;padding-left:15px}
.order-box .goods-head .price{float:left;width:100px}
.order-box .goods-head .num{float:left;width:100px}
.order-box .goods-head .t-price{float:left;width:105px}
.order-box .shop{padding-left:15px;height:25px;line-height:25px;border-bottom:2px solid #fdd8d2;color:#e55356;font-weight:bold;font-size:15px}
.order-box .item{padding-top:5px;padding-bottom:5px;border:1px solid #eee}
.order-box .item .goods{float:left;width:650px;padding-left:15px}
.order-box .item .goods .img{float:left;width:80px;height:80px}
.order-box .item .goods .name{float:left;width:390px;height:80px;margin-left:5px}
.order-box .item .goods .spec{float:left;width:165px;margin-left:5px}
.order-box .item .price{float:left;width:100px}
.order-box .item .num{float:left;width:100px}
.order-box .item .t-price{float:left;width:100px}
.order-box .goods-footer{padding-right:10px;margin-bottom:10px}
.order-box .line{border-top:1px solid #ddd}
.order-box .goods-summary{margin-top:10px}
.order-box .summary{height:30px;line-height:30px}
.order-box .orderScore{margin-right:5px}
.order-box .log td{height:25px;line-height:25px;padding-left:15px}
.order-box .log-box{height:132px}
.order-box .log-box .icon{float:left;width:60px;height:60px}
.order-box .log-box .icons{float:left;width:60px;height:60px}
.order-box .log-box .icon11{background:url(../img/user_icon_rzxx.png) -15px -12px no-repeat}
.order-box .log-box .icon21{background:url(../img/user_icon_rzxx.png) -105px -12px no-repeat}
.order-box .log-box .icon31{background:url(../img/user_icon_rzxx.png) -194px -12px no-repeat}
.order-box .log-box .icon41{background:url(../img/user_icon_rzxx.png) -282px -12px no-repeat}
.order-box .log-box .icon51{background:url(../img/user_icon_rzxx.png) -373px -12px no-repeat}
.order-box .log-box .icon12{background:url(../img/user_icon_rzxx.png) -15px -62px no-repeat}
.order-box .log-box .icon22{background:url(../img/user_icon_rzxx.png) -105px -62px no-repeat}
.order-box .log-box .icon32{background:url(../img/user_icon_rzxx.png) -194px -61px no-repeat}
.order-box .log-box .icon42{background:url(../img/user_icon_rzxx.png) -282px -63px no-repeat}
.order-box .log-box .icon52{background:url(../img/user_icon_rzxx.png) -373px -62px no-repeat}
.order-box .log-box .icon13{background:url(../img/user_icon_rzxx.png) -19px -123px no-repeat}
.order-box .log-box .icon23{background:url(../img/user_icon_rzxx.png) -105px -122px no-repeat}
.order-box .log-box .icon33{background:url(../img/user_icon_rzxx.png) -194px -121px no-repeat}
.order-box .log-box .icon43{background:url(../img/user_icon_rzxx.png) -282px -122px no-repeat}
.order-box .log-box .icon53{background:url(../img/user_icon_rzxx.png) -373px -121px no-repeat}
.order-box .log-box .arrow{float:left;color:#979797;font-size:15px;font-weight:bold;margin-top:18px}
.order-box .log-box .arrow2{color:#7ebb53}
.order-box .log-box .state{float:left;width:100%;margin-left:18px}
.order-box .log-box .state2{float:left;width:100%;position:relative}
.order-box .log-box .state2 p{float:left;width:178px;height:50px;text-align:left;margin-left:15px;color:#f05858;font-size:15px}
.order-box .log-box .state2 .path{position:absolute;z-index:10}
.order-box .log-box .state2 .path span{float:left;width:178px;height:50px;text-align:left;margin-left:15px;background:#fff}
.order-source{margin:0 5px 0 0;width:18px;height:18px;position:relative;}
.order-source2{margin:0 5px 0 0;width:16px;height:16px;position:relative;}
/***风格管理模块**/
.style-box{width:215px;height:315px;border:1px solid #ddd;padding:5px;margin:5px;float:left}
.style-box .style-img{width:200px;height:200px;text-align:center;vertical-align:middle;display:block;position:relative}
.style-box .style-img a{display:table-cell;vertical-align:middle;width:200px;height:200px;border:1px solid #ddd}
.style-box .style-img a img{max-width:200px;max-height:200px}
.style-box .style-txt,.style-box .style-author,.style-box .style-web{width:200px;height:25px;overflow:hidden;text-align:left;line-height:25px}
.style-box .style-op{height:30px;text-align:center;overflow:hidden}
/***推荐管理模块***/
.recom-lbox{width:350px;height:350px;border:1px solid #ddd;padding:5px;text-align:left;overflow-x:hidden;overflow-y:auto}
.recom-lbox .head,.recom-rbox .head{border-bottom:1px solid #eee}
.recom-lbox .tck,.recom-rbox .tck{float:left;height:30px;overflow:hidden;width:25px}
.recom-lbox .ttxt{float:left;height:30px;overflow:hidden;width:290px}
.recom-lbox .trow{height:30px;overflow:hidden;line-height:30px}
.recom-rbox{width:420px;height:350px;border:1px solid #ddd;padding:5px;text-align:left;overflow-x:hidden;overflow-y:auto}
.recom-rbox .tck{float:left;height:30px;overflow:hidden;width:25px}
.recom-rbox .ttxt{float:left;height:30px;overflow:hidden;width:325px}
.recom-rbox .top{float:left;width:70px}
.recom-rbox .trow{height:30px;overflow:hidden;width:420px;line-height:30px}
.recom-rbox .s-sort{width:30px;height: 26px;}
/**微信菜单**/
.wst-views{float:left;width:335px;padding-bottom: 10px;}
.wst-views .reveal{margin:0px 5px 0px;width:325px;height:100%;border:1px solid #e7e7eb;position:relative;}
.wst-views .revealt{position:absolute;left:0;top:0;width:100%;height:65px;background:url(../img/img_topinfo.png) 0 0 no-repeat;background-size:100%}
.wst-views .revealb{position:absolute;left:0;bottom:0;width:100%;height:46px;border-top:1px solid #e7e7eb}
.wst-views .revealb i{float:left;width:15%;height:45px;background:url(../img/img_dibu.png) -5px -10px no-repeat}
.wst-views .ui{float:right;width:85%;height:45px;display:-webkit-box}
.wst-views .li{-webkit-box-flex:1;display:block;line-height:45px;text-align:center;border-left:1px solid #e7e7eb;cursor:pointer;position:relative}
.wst-views .li:hover,.wst-views .li .list:hover{background:#eee}
.wst-views .selected{background:#eee}
.wst-views .li .lis{position:absolute;left:0;bottom:45px;width:100%;border:1px solid #e7e7eb}
.wst-views .li .list{float:left;width:100%;border-bottom:1px solid #e7e7eb}
.wst-maingr{float:right;width:72%;}
.wst-view{float:left;width:200px;height:200px;background:#eee}
.wst-view a{display:block;height:200px;line-height:200px;text-decoration:none;text-align:center;color:#3295d3}
.wst-view a:hover{color:#56b7f5}
/***树形菜单**/
.wst-grid{margin-left:5px;margin-right:5px;}
.wst-grid-tree-hd-cell{height:2em;padding:7px 5px;font-weight:bold;line-height:2;}
.wst-grid-tree-hd .first{width:26px;text-align: center;}
.wst-grid-tree-row .first{width:26px;text-align: center;}
.wst-grid-tree-row-cell{height:2em;border-bottom: 1px solid #f5f5f5;padding:5px 5px;}
.wst-grid-tree-space{margin-left:15px;display: inline-block;}
.wst-tree-img{font-size: 18px;margin-right: 5px;cursor: pointer;}
/**ztree右键菜单**/
div#rMenu {background:#fff;position:absolute; visibility:hidden; top:0; text-align: left;padding: 2px;border:1px solid #eeeeee;}
div#rMenu ul li{margin: 0px;padding: 5px 10px;cursor: pointer;list-style: none outside none;border-bottom: 1px solid #eeeeee;font-size: 12px;}
.ztree li a.curSelectedNode{height:20px;}
.ztreeMenuContent{border:1px solid #eee;z-index:1000;background:#ffffff;overflow:auto;display:none; position: absolute;}
/**修复layui**/
.layui-form-switch{width:60px;}
.layui-tab {margin: 0px 0px;}
.layui-tab-title{height:35px;}
.layui-tab-title li{font-size:12px;line-height: 35px;}
.layui-tab-title .layui-this:after{height:36px;}
.layui-field-title{margin-top:0px;}
.layui-input:focus,.layui-textarea:focus{border-color: #66afe9;outline: 0;-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);}
.layui-form-switch{margin-top:0px;height:26px;line-height:26px;}
.layui-form-switch i{height:18px;width:18px;}
.layui-form-checkbox{height:20px;line-height:18px;width:20px;padding-right:20px;}
.layui-form-checkbox i{width:20px;left:-5px;top:1px;}
.layui-form-radio i{font-size:17px;}
.layui-form-radio{line-height:21px;font-weight:normal;}
.layui-form-select dl{top:27px;}
.layui-tab-content{padding:0px;}
/**覆盖bootstrap样式**/
.form-control{width:200px;display:inline-block;}
textarea{width:70%;height:120px;background-color:#fff;background-image:none;border:1px solid #ccc;color:#222;border-radius:2px;box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;display:inline-block;font-size:14px;padding:2px 5px;position:relative;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;vertical-align:middle;}
input[type=text],input[type=password]{display:inline-block;width:auto;height:30px;padding:6px 12px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}
input[type=text]:focus,input[type=password]:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}
input[type=text]::-moz-placeholder,input[type=password]::-moz-placeholder{color:#999;opacity:1}
input[type=text]:-ms-input-placeholder,input[type=password]:-ms-input-placeholder{color:#999}
input[type=text]::-webkit-input-placeholder,input[type=password]::-webkit-input-placeholder{color:#999}
input[type=text][disabled],input[type=text][readonly]{background-color:#eee;opacity:1}
input[type=text][disabled]{cursor:not-allowed}
.btn{padding:3px 12px;}
.btn-green,.btn-blue,.btn-red{padding:5px 8px;font-size:12px;background:#ffffff;color:#777;border:1px solid #eee;}
.btn-blue:hover{color:#fff;background-color: #3598DC; border-color: #2A80B9;box-shadow: 2px 2px #ccc;}
.btn-red:hover{color:#fff;background-color: #c9302c;border-color: #ac2925;box-shadow: 2px 2px #ccc;}
.btn-green:hover{color:#fff;background-color: #5CB85C;border-color: #4E9D4E;box-shadow: 2px 2px #ccc;}
.statu-yes{color: #1BBC9D;}
.statu-no{color: #c9302c;}
.statu-wait{color: #BEC3C7;}
legend {display: inline-block;margin-bottom: 10px;width:auto;border-bottom: 0px;}
.alert{padding:8px;}
.alert-tips{margin:6px;overflow: hidden;}
.alert .head{font-size:14px;font-weight: bold;cursor: pointer;}
.alert .head .fa{margin-right: 2px;}
.alert .body{padding-left:15px;margin-top:10px;}
.alert .body li{list-style:disc;}
select{border-radius:4px;border-color:#ccc;height:30px;margin-right:5px;}
.navbar-nav .fa{margin-right: 2px;}
.btn .fa{margin-right: 2px;}
/**覆盖mmgrid**/
.mmGrid .mmg-headWrapper{border-top:none;background: #f9f9f9}
.mmGrid .mmg-bodyWrapper .mmg-body td{color:#777;padding:4px 5px;border-left:0px;border-right:0px;border-bottom:1px solid #f5f5f5;word-wrap: break-word;word-break:break-all;}
.mmGrid .mmg-bodyWrapper .mmg-body td .mmg-index{color:#777;}
.mmGrid .mmg-headWrapper .mmg-head th {padding:6px 5px;border:0px;}
.mmPaginator .totalCountLabel{padding: 5px 0 0 0;}
.mmPaginator .pageList li{margin: 0;padding: 4px 12px;background-color: #ffffff;border: 1px solid #dddddd;border-left-width: 0;}
.mmPaginator .pageList li.active{padding: 4px 12px;border: 1px solid #dddddd;border-left-width: 0;background-color: #f5f5f5;}
.mmPaginator .pageList li.active a{color: #999999;cursor: default;}
.mmPaginator .pageList li.disable a{color: #999999;}
.mmPaginator .pageList li.disable{background: #f5f5f5;}
.mmPaginator .pageList li.disable a{color: #999999;}
.mmPaginator .pageList li a{color: #005580;text-decoration: none;}
.mmPaginator .pageList li.prev{border-left-width: 1px;-webkit-border-bottom-left-radius: 4px;border-bottom-left-radius: 4px;-webkit-border-top-left-radius: 4px;border-top-left-radius: 4px;-moz-border-radius-bottomleft: 4px;-moz-border-radius-topleft: 4px;}
.mmPaginator .limit select{height:28px;line-height:28px;margin-right:20px;}
.mmGrid .mmg-bodyWrapper .mmg-body td.colSelectedEven,.mmGrid .mmg-bodyWrapper .mmg-body td.colSelected{background:none;}
/*新增*/
.img-remind{width: 25px;height: 25px;margin-right: 10px;margin-bottom: 5px;}
.remind-angle-left{width: 25px;height: 25px;position: absolute;bottom: -0px;left: -0px;}
.remind-angle-right{width: 25px;height: 25px;position: absolute;top: 0px;right: 0px;}
.wst-tb-bor{margin:0px;}
.wst-repair{padding:2px;padding-left:20px;border: 0px solid transparent;}
.wst-total{margin:10px 10px 20px;height:auto;overflow:hidden;border: 1px solid #eee;}
.wst-num{font-size: 15px;line-height: ;}
.wst-tb-bor{width: 60%;height: auto;overflow:hidden;float: left;}
.wst-box-top{margin-top:5px}
.wst-bor-left{margin-left:30px}
.wst-bor-right{margin-right:20px}
.wst-bor-top{margin-top: 20px;}
.wst-line-top{margin-top: 5px;}
.wst-cont-total{ width:98%;height: auto;float: right;border: 1px solid #f5f5f5;border-top: 5px solid #1d2225;border-top-left-radius:5px;border-top-right-radius:5px;box-shadow: 5px 5px 6px 3px #f5f5f5;}
.wst-summary{padding: 10px;box-shadow: 5px 5px 6px 3px #f5f5f5;}
.wst-summary .wst-summary-head{padding: 10px 10px 10px 30px; height: 40px;width: 100%;background:url('../img/title_head.png') bottom left no-repeat;}
.wst-summary .wst-summary-content{ height: 90px;overflow: hidden;}
.wst-summary .img img{ height: 4.5rem;width: 4.5rem;float: left;margin:20px 0px 20px 20px;}
.wst-summary .data{ height: 60%;width: auto;overflow:hidden;float:left;margin:10px 0px 0px 10px;}
.wst-summary .data-top{text-align:center;padding-top: 5%; width: 100%;height: 60%;font-size: 30px;font-weight: bold;}
.wst-summary .data-bottom{text-align:center; width: 100%;padding-top: 2%;height: 25%;}
.wst-summary-head .content{color: #333333;}
.wst-summary .wst-summary-content2{ height: 240px;margin-top: 5px;}
.wst-summary .wst-strip{width: 100%;height: 30%;overflow: hidden;}
.wst-summary .wst-title{width: auto;overflow:hidden;height: 22px;margin: 10px;padding-top: 1%;}
.wst-summary img{width: 65%;height: 15px;margin: 0px 5px 10px 20px;}
.wst-summary .wst-system-chunk{height: auto;overflow: hidden;border-right: 1px dotted #CCCCCC;}
.wst-summary .wst-system-strip{height: 30px;width: 100%;}
.wst-summary .wst-system-strip .title{width: 35%;text-align: right;float: left;height: 100%;padding-top: 1.5%;}
.wst-summary .wst-system-strip .text{width: 65%;text-align: left;float: left;height: 100%;padding-top: 1.5%;}
.wst-cont-total .wst-cont-bor{width: 90%;height: auto; margin: 20px;}
.wst-cont-total .wst-cont-head{width: 100%;height: 30px;line-height: 30px;font-size: 15px;}
.wst-cont-total .wst-cont-body{width: 100%;height: auto;padding: 10px;border-bottom: 1px solid #CCCCCC;}
.wst-nowrap{width: 150px;white-space:nowrap;overflow: hidden;text-overflow:ellipsis;}
.weixin{ display:block;position: relative;}
.weixin .imged{ display:none;}
.weixin:hover .imged{ position:absolute; left:60px; margin-top: -40px; display:block;border: 5px solid #bfbfbf;border-radius: 6px;}
.style-main{padding:10px}
.style-box{width:203px;height:307px;border:1px solid #ddd;padding:5px;margin:5px;float:left;box-sizing: content-box;}
.style-box .style-img{width:200px;height:200px;text-align:center;vertical-align:middle;display:block;position:relative}
.style-box .style-img a{display:table-cell;vertical-align:middle;width:200px;height:200px;border:1px solid #ddd}
.style-box .style-img a img{max-width:200px;max-height:200px}
.style-box .style-txt,.style-box .style-author,.style-box .style-web{width:200px;height:25px;overflow:hidden;text-align:left;line-height:25px}
.style-box .style-op{height:30px;text-align:center;overflow:hidden}
.nav li a,.nav li a:hover,.nav-list li a,.nav-list li a:hover{display:block;text-decoration:none;outline:0;border-bottom:0 none}
.nav li{float:left}
.tab-wrap{margin-top:10px}
.tab-nav{margin-bottom:15px;padding-left:1px;border-bottom:1px solid #e0e0e0}
.tab-nav li{margin-bottom:-1px;margin-left:-1px}
.tab-nav li a,.tab-nav li a:hover{padding:0 20px;height:35px;line-height:35px;font-weight:bold;font-size:16px;border:1px solid transparent;border-top-width:2px}
.tab-nav .current a,.tab-nav .current a:hover{border-color:#34b4e0 #e0e0e0 #f6f6f6}
.tab-content .tab-pane{display:none}
.tab-content .in{display:block}
.label{border-radius:.25em;color:#fff;display:inline;font-weight:700;line-height:1;padding:.2em .6em .3em;text-align:center;vertical-align:baseline;white-space:nowrap}
a.label:hover,a.label:focus{color:#fff;cursor:pointer;text-decoration:none}a{text-decoration:none}
.form-item input[type=checkbox] {margin-left:0;position: relative;}
.form-item label {display: inline-block;}
.addoncfg-title{font-size:18px;font-weight:bold;}
.weixin:hover .imged{ position:absolute; left:60px; margin-top: -40px; display:block;border: 5px solid #bfbfbf;border-radius: 6px;}
/**tip提示***/
.tip-yellow{z-index:10000;text-align:left;border:1px solid #000;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;padding:6px 8px;min-width:50px;max-width:300px;color:#fff;background-color:#000}
.tip-yellow .tip-inner{font:12px/16px arial,helvetica,sans-serif}
.tip-yellow .tip-arrow-top{margin-top:-6px;margin-left:-5px;top:0;left:50%;width:9px;height:6px;}
.tip-yellow .tip-arrow-right{margin-top:-4px;margin-left:0;top:50%;left:100%;width:6px;height:9px;}
.tip-yellow .tip-arrow-bottom{margin-top:0;margin-left:-5px;top:100%;left:50%;width:9px;height:6px;}
.tip-yellow .tip-arrow-left{margin-top:-4px;margin-left:-6px;top:50%;left:0;width:6px;height:9px;}
/* 图标替换 */
.layui-layer-icowst1,.layui-layer-icowst2,.layui-layer-icowst3{background-image:url(../../../../static/images/wst_icon.png)!important;background-repeat:no-repeat!important;background-size:cover!important}
.layui-layer-icowst2{background-position:-40px 0!important}
.layui-layer-icowst3{background-position:-80px -1px!important}
.layui-layer-icowstloading{background-image:url(../../../../static/images/loading.gif)!important;background-repeat:no-repeat!important;background-size:206% auto!important;background-position:-16px -16px!important}
.wst-table-1 th{width: 150px;text-align: right;}
.typeState li{display: inline-block;}

View File

@ -0,0 +1,176 @@
body,html{height:100%;overflow:hidden;}
.layout-boxed body,.layout-boxed html{height:100%}
body{font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-size:12px;}
.wrapper{height:100%;position:relative;overflow-x:hidden;overflow-y:auto}
.wrapper:after,.wrapper:before{content:" ";display:table}
.wrapper:after{clear:both}
.wrapper:after,.wrapper:before{content:" ";display:table}
.wrapper:after{clear:both}
.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,.5);position:relative}
.layout-boxed{background:url(../img/boxed-bg.jpg) repeat fixed}
.content-wrapper,.main-footer{-webkit-transition:-webkit-transform .3s ease-in-out,margin .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,margin .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,margin .3s ease-in-out;transition:transform .3s ease-in-out,margin .3s ease-in-out;margin-left:170px;z-index:820}
.layout-top-nav .content-wrapper,.layout-top-nav .main-footer{margin-left:0}
@media (max-width:767px){.content-wrapper,.main-footer{margin-left:0}
}
@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .main-footer{margin-left:0}
}
@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .main-footer{-webkit-transform:translate(160px,0);-ms-transform:translate(160px,0);-o-transform:translate(160px,0);transform:translate(160px,0)}
}
.content-wrapper{min-height:100%;background-color:#ecf0f5;z-index:800}
.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de}
.fixed .left-side,.fixed .main-header,.fixed .main-sidebar{position:fixed}
.fixed .main-header{top:0;right:0;left:0}
.fixed .content-wrapper,.fixed .right-side{padding-top:50px}
@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px}
}
.fixed.layout-boxed .wrapper{max-width:100%}
.fixed .wrapper{overflow:hidden}
.hold-transition .content-wrapper,.hold-transition .left-side,.hold-transition .main-footer,.hold-transition .main-header .logo,.hold-transition .main-header .navbar,.hold-transition .main-sidebar,.hold-transition .menu-open .fa-angle-left,.hold-transition .right-side{-webkit-transition:none;-o-transition:none;transition:none}
.content{height:100%;margin:0 auto;}
.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:'Source Sans Pro',sans-serif}
a{color:#337ab7}
a:active,a:focus,a:hover{outline:0;text-decoration:none;color:#23527c}
.page-header{margin:10px 0 20px 0;font-size:22px}
.page-header>small{color:#666;display:block;margin-top:5px}
.main-header{position:relative;max-height:50px;z-index:1030}
.main-header .navbar{-webkit-transition:margin-left .3s ease-in-out;-o-transition:margin-left .3s ease-in-out;transition:margin-left .3s ease-in-out;margin-bottom:0;margin-left:170px;border:none;min-height:40px;border-radius:0}
.layout-top-nav .main-header .navbar{margin-left:0}
.main-header #navbar-search-input.form-control{background:rgba(255,255,255,.2);border-color:transparent}
.main-header #navbar-search-input.form-control:active,.main-header #navbar-search-input.form-control:focus{border-color:rgba(0,0,0,.1);background:rgba(255,255,255,.9)}
.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1}
.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc}
.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc}
.main-header .navbar-custom-menu,.main-header .navbar-right{float:right}
@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:0 0}
}
@media (max-width:767px){.main-header .navbar-right{float:none}
.navbar-collapse .main-header .navbar-right{margin:7.5px -15px}
.main-header .navbar-right>li{color:inherit;border:0}
}
.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;font-family:fontAwesome}
.main-header .sidebar-toggle:before{content:"\f0c9"}
.main-header .sidebar-toggle:hover{color:#fff}
.main-header .sidebar-toggle:active,.main-header .sidebar-toggle:focus{background:0 0}
.main-header .sidebar-toggle .icon-bar{display:none}
.main-header .navbar .nav>li.user>a>.fa,.main-header .navbar .nav>li.user>a>.glyphicon,.main-header .navbar .nav>li.user>a>.ion{margin-right:5px}
.main-header .navbar .nav>li>a>.label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9}
.main-header .logo{-webkit-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:170px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden}
.main-header .logo .logo-lg{display:block;font-weight: bold;font-size: 25px;text-shadow: 3px 3px 7px #000;}
.main-header .logo .logo-lg .logo-txt{font-size:20px;margin-left:2px;height:50px;line-height:50px}
.main-header .logo .logo-mini{display:none;text-shadow: 3px 3px 7px #000;}
.main-header .navbar-brand{color:#fff}
.content-header{position:relative;}
.content-header>h1{margin:0;font-size:24px}
.content-header>h1>small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300}
.content-header>.breadcrumb{border-bottom:solid 2px #222d32;height:40px;line-height:31px;background:0 0;margin-top:0;margin-bottom:0;font-size:12px;padding:5px 5px;border-radius:2px}
.content-header>.breadcrumb>li>a{color:#444;text-decoration:none;display:inline-block}
.content-header>.breadcrumb>li>a>.fa,.content-header>.breadcrumb>li>a>.glyphicon,.content-header>.breadcrumb>li>a>.ion{margin-right:5px}
.content-header>.breadcrumb>li+li:before{content:'>\00a0'}
@media (max-width:991px){.content-header>.breadcrumb{position:relative;top:0;right:0;float:none;background:#d2d6de;padding-left:10px}
.content-header>.breadcrumb li:before{color:#97a0b3}
}
.navbar-toggle{color:#fff;border:0;margin:0;padding:15px 15px}
@media (max-width:991px){.navbar-custom-menu .navbar-nav>li{float:left}
.navbar-custom-menu .navbar-nav{margin:0;float:left}
.navbar-custom-menu .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}
}
@media (max-width:767px){.main-header{position:relative}
.main-header .logo,.main-header .navbar{width:100%;float:none}
.main-header .navbar{margin:0}
.main-header .navbar-custom-menu{float:right}
.navbar .nav-top .top-menu span{display:none;}
}
@media (max-width:991px){.navbar-collapse.pull-left{float:none!important}
.navbar-collapse.pull-left+.navbar-custom-menu{display:block;position:absolute;top:0;right:40px}
}
.main-sidebar{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:170px;z-index:810;-webkit-transition:-webkit-transform .3s ease-in-out,width .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,width .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,width .3s ease-in-out;transition:transform .3s ease-in-out,width .3s ease-in-out}
@media (max-width:767px){.main-sidebar{padding-top:100px}
}
@media (max-width:767px){.main-sidebar{-webkit-transform:translate(-160px,0);-ms-transform:translate(-160px,0);-o-transform:translate(-160px,0);transform:translate(-160px,0)}
}
@media (min-width:768px){.sidebar-collapse .main-sidebar{-webkit-transform:translate(-160px,0);-ms-transform:translate(-160px,0);-o-transform:translate(-160px,0);transform:translate(-160px,0)}
}
@media (max-width:767px){.navbar .nav-top .top-menu span{display:none;}.sidebar-open .main-sidebar{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}
}
.navbar-nav > .user-menu .user-image {float: left;width: 25px;height: 25px;border-radius: 50%;margin-right: 10px;margin-top: -2px;}
@media (max-width: 767px) {.navbar-nav > .user-menu .user-image {float: none;margin-right: 0;margin-top: -8px;line-height: 10px;}}
.sidebar{padding-bottom:10px}
.sidebar-form input:focus{border-color:transparent}
.user-panel{position:relative;width:100%;padding:20px 10px 20px 10px;overflow:hidden}
.user-panel:after,.user-panel:before{content:" ";display:table}
.user-panel:after{clear:both}
.user-panel:after,.user-panel:before{content:" ";display:table}
.user-panel:after{clear:both}
.user-panel>.image>img{width:100%;max-width:45px;height:auto}
.user-panel>.info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px}
.user-panel>.info>p{font-weight:600;margin-bottom:9px}
.user-panel>.info>a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px}
.user-panel>.info>a>.fa,.user-panel>.info>a>.glyphicon,.user-panel>.info>a>.ion{margin-right:3px}
.user-panel>.button{margin-top:10px;}
.sidebar-menu{list-style:none;margin:0;padding:0}
.sidebar-menu>li{position:relative;margin:0;padding:0}
.sidebar-menu>li>a{padding:12px 5px 12px 15px;display:block;}
.sidebar-menu>li>a>.fa,.sidebar-menu>li>a>.glyphicon,.sidebar-menu>li>a>.ion{width:20px}
.sidebar-menu>li .badge,.sidebar-menu>li .label{margin-right:5px}
.sidebar-menu>li .badge{margin-top:3px}
.sidebar-menu li.header{padding:10px 25px 10px 15px;}
.sidebar-menu li>a>.fa-angle-left,.sidebar-menu li>a>.pull-right-container>.fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;-webkit-transition:transform .5s ease;-o-transition:transform .5s ease;transition:transform .5s ease}
.sidebar-menu li>a>.fa-angle-left{position:absolute;top:50%;right:10px;margin-top:-8px}
.sidebar-menu .menu-open>a>.fa-angle-left,.sidebar-menu .menu-open>a>.pull-right-container>.fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}
.sidebar-menu .active>.treeview-menu{display:block;}
@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .main-footer,.sidebar-mini.sidebar-collapse .right-side{margin-left:50px!important;z-index:840}
.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);width:50px!important;z-index:850}
.sidebar-mini.sidebar-collapse .sidebar-menu>li{position:relative}
.sidebar-mini.sidebar-collapse .sidebar-menu>li>a{margin-right:0}
.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span{border-top-right-radius:4px}
.sidebar-mini.sidebar-collapse .sidebar-menu>li:not(.treeview)>a>span{border-bottom-right-radius:4px}
.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px}
.sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.button,.sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.button,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu li.header,.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>.pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span{display:none!important;-webkit-transform:translateZ(0)}
.sidebar-mini.sidebar-collapse .main-header .logo{width:50px}
.sidebar-mini.sidebar-collapse .main-header .logo>.logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px}
.sidebar-mini.sidebar-collapse .main-header .logo>.logo-lg{display:none}
.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px}
}
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu,.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right){display:block!important;position:absolute;width:160px;left:50px}
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit}
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container{position:relative!important;float:right;width:auto!important;left:160px!important;top:-22px!important;z-index:900}
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container>.label:not(:first-of-type){display:none}
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{top:40px;margin-left:0}
.sidebar-expanded-on-hover .content-wrapper,.sidebar-expanded-on-hover .main-footer{margin-left:50px}
.sidebar-expanded-on-hover .main-sidebar{box-shadow:3px 0 8px rgba(0,0,0,.125)}
.main-sidebar .user-panel,.sidebar-menu,.sidebar-menu>li.header{white-space:nowrap;overflow:hidden}
.sidebar-menu:hover{overflow:visible}
.sidebar-form,.sidebar-menu>li.header{overflow:hidden;text-overflow:clip}
.sidebar-menu li>a{position:relative}
.sidebar-menu li>a>.pull-right-container{position:absolute;right:10px;top:50%;margin-top:0px}
.treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px}
.treeview-menu .treeview-menu{padding-left:20px}
.treeview-menu>li{margin:0}
.treeview-menu>li>a{padding:5px 5px 5px 25px;display:block;color:#b8c7ce;}
.treeview-menu>li>a>.fa,.treeview-menu>li>a>.glyphicon,.treeview-menu>li>a>.ion{width:20px}
.treeview-menu>li>a>.fa-angle-down,.treeview-menu>li>a>.fa-angle-left,.treeview-menu>li>a>.pull-right-container>.fa-angle-down,.treeview-menu>li>a>.pull-right-container>.fa-angle-left{width:auto}
.main-header>.navbar .nav-top{display:inline;margin-bottom:0px;margin-top:0px;}
.main-header>.navbar .nav-top li{line-height:50px;height:37px;overflow:hidden;list-style:none;display:inline-block;color:#fff;margin-right:20px;}
.main-header>.navbar .nav-top li a{color:#fff;}
.main-header>.navbar .nav-top>li>a>.fa{width:15px;}
.navbar-nav>li>a{padding-top:15px;padding-bottom:15px;font-size: 14px;}
.content-wrapper .content-header button{padding:0px;position: absolute;right: 0px;top:0px;background:#fff;border:0;height:38px;line-height:40px;width:40px;outline:0}
.content-wrapper .content-header button:hover{background:#fafafa}
.content-wrapper .content-header button i{color: #999;}
.dropdown-menu{min-width:120px;box-shadow:#eee;border-color:#eee;}
.dropdown-menu>li>a{font-size:12px;}
.dropdown-menu>li>a>.fa{margin-right:10px;}
/***风格覆盖***/
.skin-blue .main-header .navbar{background:#2cabe3;}
.skin-blue .main-header .logo{background:#2cabe3;}
.wst-focus{background: rgba(0,0,0,0.1);color: #f6f6f6}
.edit-pass{display: inline-block;background:#F7FCFF;padding:3px 5px;margin-right:5px;color:#000000;border-radius:4px;}
.logout{display: inline-block;background:#F7FCFF;padding:3px 5px;color:#000000;border-radius:4px;}
.edit-pass:hover{background:#f5f5f5;}
.logout:hover{background:#f5f5f5;}
.edit-pass i,.logout i{color:#000000;margin-right:2px;}
.edit-pass span,.logout span{color:#000000;font-size:12px;}

View File

@ -0,0 +1,53 @@
body{margin:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-size:14px;font-family:"微软雅黑",Arial,Helvetica,sans-serif}
#logo{position:absolute;top:5px;left:5px;text-align:center}
.login_logo{margin-left: 23px;width:70px;height:70px;float:left;}
.login_logo img{width:100%;height: 100%;}
#loginFrame{background:url(../img/login_bg.png) #4771a0 no-repeat center center fixed;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover}
/* 图标替换 */
.layui-layer-icowst1,.layui-layer-icowst2,.layui-layer-icowst3{background-image:url(../../../../static/images/wst_icon.png)!important;background-repeat:no-repeat!important;background-size:cover!important}
.layui-layer-icowst2{background-position:-40px 0!important}
.layui-layer-icowst3{background-position:-80px -1px!important}
.layui-layer-icowstloading{background-image:url(../../../../static/images/loading.gif)!important;background-repeat:no-repeat!important;background-size:206% auto!important;background-position:-16px -16px!important}
.wst-clear{clear: both;}
.wst-lo{ position: absolute;left: 50%;margin-left: -350px;top: 35%;margin-top: -140px;width: 700px;}
.wst-lo .head{position:absolute;top:-80px;left:27%;width:252px;height:110px;line-height:55px;font-size:20px;color:#fff;font-family:"microsoft yahei";text-shadow:#717070 1px 1px 1px;text-align:center;background:url(../img/logo.png) 0 0 no-repeat;background-size:100%}
.wst-lo-left{float:left;width:235px;height:256px;background-size:cover}
.wst-lo-left img{margin-left:45px}
#verifyImg{ cursor: pointer;width: 108px;border-top-right-radius: 6px;border-bottom-right-radius: 6px;height: 32px;position: absolute;z-index: 100;top:-7px;right: 18px;}
.login_title{float:right;width:340px;text-align:left;margin-top:4px;color:#fff;}
.login_title .title_cn{font-size:30px;position: relative;}
.login_title .title_en{position: relative;}
.login-wrapper {text-align: center;position:relative; }
.login-wrapper .frame{padding-right:0px;position:relative;}
.login-wrapper .text2{margin-bottom:0;width:222px;}
.login-wrapper .logo {margin-bottom: 45px;position: relative;left: -2px; }
.login-wrapper .boxbg{opacity:0.3;margin: 0 auto;padding: 35px 0 30px;float: none;width: 500px;box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);border-radius: 5px;background: #fff; height:300px;}
.login-wrapper .boxbg2{position:relative;opacity:0.16;margin: 0 auto;padding: 35px 0 30px;float: none;width: 400px;box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);border-radius: 5px;background: #fff; height:240px;margin-left:150px;filter:alpha(opacity=16)}
.login-wrapper .box {position:absolute;top:17px;left:162px; margin: 0 auto;padding: 35px 0 30px;float: none;width: 380px; }
.login-wrapper .box .content-wrap {width: 82%;margin: 0 auto; }
.login-wrapper .box h6 {text-transform: uppercase;margin: 0 0 12px 0;font-size: 18px;font-weight: 600; }
.login-wrapper .box input[type="text"],
.login-wrapper .box input[type="password"] { border-radius: 0;font-size: 15px;height:30px;margin-bottom: 10px;border:0;padding-left: 12px;border-bottom:1px solid #244eac;}
.login-wrapper .box input[type="password"] {margin-bottom: 10px; }
.login-wrapper .box input:-moz-placeholder {color: #9ba8b6;font-size: 15px;letter-spacing: 0px;font-style: italic; }
.login-wrapper .box input:-ms-input-placeholder {color: #9ba8b6;font-style: italic;letter-spacing: 0px;font-size: 15px; }
.login-wrapper .box input::-webkit-input-placeholder {color: #9ba8b6;font-style: italic;letter-spacing: 0px;font-size: 15px; }
.login-wrapper .box .login {text-transform: uppercase;font-size: 13px;padding: 8px 30px; }
.login-wrapper .no-account {margin: 0 auto;float: none;text-align: center;font-size: 14px;margin-top: 25px; }
.login-wrapper .no-account p {display: inline-block;color: #eee; }
.login-wrapper .login-box{background-color: #fff;padding: 17px;border-radius: 3px; margin-bottom: 15px; padding-left: 55px;}
.login-head{width:90px;height:90px;background-size:contain;position: absolute;top: 56px; right: 0; }
.login-head img{width:100%;height: 100%;}
.login-icon1,.login-icon2,.login-icon3{width:25px;height:25px;background:url(../img/login_icon.png) no-repeat;position:absolute;}
.login-icon1{top:55px;left:50px;background-position: 0 0;}
.login-icon2{top:95px;left:50px;background-position: 0 -30px;}
.login-icon3{top:136px;left:50px;background-position: 0 -61px;}
.login-header{width:445px;margin:0 auto;margin-bottom:20px;}
.login-footer{color:#fff;width:360px;margin:0 auto;margin-top:30px;position:relative;text-align:center;}
.login-footer .line1{position:absolute;width:95px;font-size:0;line-height:1px;border-bottom:1px solid #fff;top: 10px;left:0; }
.login-footer .line2{position:absolute;width:95px;font-size:0;line-height:1px;border-bottom:1px solid #fff;top: 10px;right:0; }
#loginbtn{background: url(../img/login-btn.png) no-repeat;background-position: -1px -2px;}

View File

@ -0,0 +1 @@
.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a,.skin-blue .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-blue .sidebar-menu>li.active>a{border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-blue .sidebar-menu .treeview-menu>li.active>a,.skin-blue .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}

View File

@ -0,0 +1,207 @@
@CHARSET "UTF-8";
body,html{height:100%}
body{padding:0;margin:0;overflow-x:hidden}
.layui-layer-icowst1,.layui-layer-icowst2,.layui-layer-icowst3{background-image:url(../../../../static/images/wst_icon.png)!important;background-repeat:no-repeat!important;background-size:cover!important}
.layui-layer-icowst2{background-position:-40px 0!important}
.layui-layer-icowst3{background-position:-80px -1px!important}
.layui-layer-icowstloading{background-image:url(../../../../static/images/loading.gif)!important;background-repeat:no-repeat!important;background-size:206% auto!important;background-position:-16px -16px!important}
.wst-top-link{display:inline-block;height:26px;line-height:26px;padding-left:10px;text-decoration:none;color:#333}
.wst-link{display:block;height:26px;line-height:26px;padding-left:10px;text-decoration:none;color:#333}
.wst-link:hover{background:#ffeeac}
.wst-space{color:#e7e7e7}
.wst-topmenu{margin:0;padding:0;height:88px;line-height:31px;background:url(../img/img_top_bg.png);position:relative;border-top:1px solid #1d438b}
.wst-topmenu-logo{color:#e7e7e7;padding-left:5px;line-height:26px}
.wst-topmenu-welcome{position:absolute;height:24px;line-height:24px;right:30px;top:2px;color:#070a0c}
.wst-topmenu-welcome a{color:#fff;text-decoration:none}
.wst-topmenu-welcome .website{background:url('../img/icon_topmenu.png') -5px -5px no-repeat;width:15px;height:15px;background-size:700%;display:inline-block}
.wst-topmenu-welcome .selfshop{background:url('../img/icon_topmenu.png') -22px -5px no-repeat;width:15px;height:15px;background-size:700%;display:inline-block}
.wst-topmenu-welcome .support{background:url('../img/icon_topmenu.png') -58px -5px no-repeat;width:16px;height:15px;background-size:700%;display:inline-block}
.wst-topmenu-welcome .clear{background:url('../img/icon_topmenu.png') -38px -5px no-repeat;width:15px;height:15px;background-size:700%;display:inline-block}
.wst-topmenu-welcome .password{background:url('../img/icon_topmenu.png') -69px -5px no-repeat;width:15px;height:15px;background-size:700%;display:inline-block}
.wst-topmenu-welcome .logout{background:url('../img/icon_topmenu.png') -84px -5px no-repeat;width:15px;height:15px;background-size:700%;display:inline-block}
#wst-tabs .l-tab-links{border-bottom:3px solid #157abf}
.l-tab-links{border-bottom:2px solid #157abf}
.l-tab-links{background:0}
.l-tab-links li{background:url("../img/tabs-item-over-bg.gif") repeat scroll 0 0}
.l-tab-links .l-tab-links-item-right{background:url("../img/tabs2-item-right-bg.gif") repeat scroll 0 0}
.l-tab-links .l-tab-links-item-left{background:url("../img/tabs2-item-left-bg.gif") repeat scroll 0 0}
.l-tab-links .l-selected .l-tab-links-item-left{background:url("../img/tabs-item-left-bg.gif") repeat scroll 0 0}
.l-tab-links .l-selected .l-tab-links-item-right{background:url("../img/tabs-item-right-bg.gif") repeat scroll 0 0}
.l-tab-links li.l-selected{background:url("../img/tabs-item-bg.gif") repeat scroll 0 0}
.l-tab-links li a{margin-left:33px}
.l-tab-links li.l-selected a{color:#fff}
#wst-tabs .l-tab-links li a{margin-left:33px;font-weight:bold}#wst-tabs .l-tab-links li.l-selected a{color:#fff;font-weight:bold}
.l-layout-left .l-layout-header-toggle{background:url("../img/togglebar.gif") repeat scroll -20px 0}
.l-layout-header,.l-accordion-header{background:url("../img/layout-header.gif") repeat scroll -20px 0}
.l-layout-header .l-layout-header-inner,.l-accordion-header .l-accordion-header-inner,.l-layout-header{color:#fff}
.l-layout-collapse-left,.l-layout-collapse-right{background:#43aedf}
.l-accordion-toggle{background:url("../img/togglebar.gif") repeat scroll 0 0}
.l-accordion-toggle-open{background-position:0 -40px}
.l-accordion-toggle-close{background-position:0 0}
.body-gray2014 #wst-framecenter{margin-top:3px}
#wst-pageinit{position:absolute;left:0;top:0;width:100%;background:white url('../img/loading.gif') no-repeat centerheight:100%;z-index:99999}
.btn{-moz-user-select:none;background-image:none;border:1px solid #ccc;cursor:pointer;display:inline-block;font-size:14px;font-weight:normal;line-height:1.42857;margin-bottom:0;text-align:center;vertical-align:middle;white-space:nowrap;border-radius:3px;height:24px;line-height:1.2;padding:2px 8px;background:#fafafa none repeat scroll 0 0}
.btn-green{background:#43b97e none repeat scroll 0 0;border-color:green;color:#fff}
.btn-red{background:red none repeat scroll 0 0;border-color:red;color:#fff}
.btn-blue{background:#1d9ed9 none repeat scroll 0 0;border-color:#157abf;color:#fff}
.btn:hover,.btn:focus,.btn:active,.btn.active{background-color:#ddd}
.btn-green:hover,.btn-green:focus,.btn-green:active,.btn-green.active{background-color:green;border-color:green;color:#fff}
.btn-red:hover,.btn-red:focus,.btn-red:active,.btn-red.active{background-color:red;border-color:red;color:#fff}
.btn-blue:hover,.btn-blue:focus,.btn-blue:active,.btn-blue.active{background-color:#428bca;border-color:#428bca;color:#fff}
.btn-disabled{color:#ccc}
.wst-toolbar{padding:5px}
.wst-body{padding:5px}
.wst-footer{padding-bottom:20px;text-align:center}
.f-right{float:right}
.f-left{float:left}
.f-clear{clear:both}
.wst-form{width:100%;margin-bottom:20px}
.wst-form input.cfg,.wst-form input.textarea{width:340px}
.wst-form th{text-align:right}
.wst-form td{padding:2px 5px}
.wst-box-top{margin-top:5px}label{margin-right:10px}
input[type=text],input[type=password]{background-color:#fff;border:1px solid #ccc;color:#222;border-radius:2px;box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;display:inline-block;font-size:14px;height:20px;padding:2px 5px;position:relative;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;vertical-align:middle;width:auto;margin:2px}
textarea{background-color:#fff;background-image:none;border:1px solid #ccc;color:#222;border-radius:2px;box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;display:inline-block;font-size:14px;padding:2px 5px;position:relative;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;vertical-align:middle;margin:2px}
select{background-color:#fff;border:1px solid #ccc;border-radius:2px;height:24px;margin:2px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 1px rgba(0,0,0,0.075) inset}
input[type="radio"],input[type="checkbox"]{margin:2px}td.head-ititle{background:url('../img/img_seller_ggjt.png') no-repeat 5px 4px;padding-left:28px;padding-bottom:5px;font-weight:bold}
.webuploader-pick{background:#428bca;height:24px;border-radius:3px;line-height:24px;overflow:hidden}
.webuploader-container{height:24px;overflow:hidden;width:300px}
.l-text{background:white none repeat scroll 0 0;border:1px solid #fff;height:25px;line-height:25px;position:relative;width:160px;margin:2px}
.l-trigger,.l-trigger-hover,.l-trigger-pressed{top:6px}
.l-grid-header{background:#fff url("../img/header-bg.gif") repeat-x scroll left bottom;border-bottom:1px solid #ddd;overflow:hidden;width:100%}
.l-grid-hd-cell{border-right:1px solid #ddd;margin:0;overflow:hidden;padding:0;text-align:center}
.l-grid-row-alt .l-grid-row-cell-rownumbers,.l-selected .l-grid-row-cell-rownumbers,.l-grid-row-over .l-grid-row-cell-rownumbers,.l-grid-row-cell-rownumbers{background:#eee none repeat scroll 0 0}
.l-grid-row-cell{border-bottom:1px dotted #a3bae9;border-right:1px solid #ddd;overflow:hidden;text-align:center}#maingrid{border:1px solid #ddd}
.wst-grid-tree .row-hover{background:#e0ecff}
.wst-grid-tree .row-selected{background:#dcf8a8}
.wst-grid-tree .bg-color{background:#f5f5f5}
.order-box{margin-bottom:5px;border-bottom:1px solid #ddd}
.order-box .box-head{font-weight:bold;height:30px;line-height:30px}
.order-box .delivery-box{height:100px;border-bottom:1px solid #ddd}
.order-box th{font-weight:normal}
.order-box .goods-head{border-top:2px solid #fc7a64;background:#f3f3f3;display:block;height:25px;line-height:25px;margin:0 0 10px;padding:5px 0}
.order-box .goods-head .goods{float:left;width:650px;padding-left:15px}
.order-box .goods-head .price{float:left;width:100px}
.order-box .goods-head .num{float:left;width:100px}
.order-box .goods-head .t-price{float:left;width:105px}
.order-box .shop{padding-left:15px;height:25px;line-height:25px;border-bottom:2px solid #fdd8d2;color:#e55356;font-weight:bold;font-size:15px}
.order-box .item{padding-top:5px;padding-bottom:5px;border:1px solid #eee}
.order-box .item .goods{float:left;width:650px;padding-left:15px}
.order-box .item .goods .img{float:left;width:80px;height:80px}
.order-box .item .goods .name{float:left;width:390px;height:80px;margin-left:5px}
.order-box .item .goods .spec{float:left;width:165px;margin-left:5px}
.order-box .item .price{float:left;width:100px}
.order-box .item .num{float:left;width:100px}
.order-box .item .t-price{float:left;width:100px}
.order-box .goods-footer{padding-right:10px;margin-bottom:10px}
.order-box .line{border-top:1px solid #ddd}
.order-box .goods-summary{margin-top:10px}
.order-box .summary{height:30px;line-height:30px}
.order-box .orderScore{margin-right:5px}
.order-box .log td{height:25px;line-height:25px;padding-left:15px}
.order-box .log-box{height:132px}
.order-box .log-box .icon{float:left;width:60px;height:60px}
.order-box .log-box .icons{float:left;width:60px;height:60px}
.order-box .log-box .icon11{background:url(../img/user_icon_rzxx.png) -15px -12px no-repeat}
.order-box .log-box .icon21{background:url(../img/user_icon_rzxx.png) -105px -12px no-repeat}
.order-box .log-box .icon31{background:url(../img/user_icon_rzxx.png) -194px -12px no-repeat}
.order-box .log-box .icon41{background:url(../img/user_icon_rzxx.png) -282px -12px no-repeat}
.order-box .log-box .icon51{background:url(../img/user_icon_rzxx.png) -373px -12px no-repeat}
.order-box .log-box .icon12{background:url(../img/user_icon_rzxx.png) -15px -62px no-repeat}
.order-box .log-box .icon22{background:url(../img/user_icon_rzxx.png) -105px -62px no-repeat}
.order-box .log-box .icon32{background:url(../img/user_icon_rzxx.png) -194px -61px no-repeat}
.order-box .log-box .icon42{background:url(../img/user_icon_rzxx.png) -282px -63px no-repeat}
.order-box .log-box .icon52{background:url(../img/user_icon_rzxx.png) -373px -62px no-repeat}
.order-box .log-box .icon13{background:url(../img/user_icon_rzxx.png) -19px -123px no-repeat}
.order-box .log-box .icon23{background:url(../img/user_icon_rzxx.png) -105px -122px no-repeat}
.order-box .log-box .icon33{background:url(../img/user_icon_rzxx.png) -194px -121px no-repeat}
.order-box .log-box .icon43{background:url(../img/user_icon_rzxx.png) -282px -122px no-repeat}
.order-box .log-box .icon53{background:url(../img/user_icon_rzxx.png) -373px -121px no-repeat}
.order-box .log-box .arrow{float:left;color:#979797;font-size:15px;font-weight:bold;margin-top:18px}
.order-box .log-box .arrow2{color:#7ebb53}
.order-box .log-box .state{float:left;width:100%;margin-left:18px}
.order-box .log-box .state2{float:left;width:100%;position:relative}
.order-box .log-box .state2 p{float:left;width:178px;height:50px;text-align:left;margin-left:15px;color:#f05858;font-size:15px}
.order-box .log-box .state2 .path{position:absolute;z-index:10}
.order-box .log-box .state2 .path span{float:left;width:178px;height:50px;text-align:left;margin-left:15px;background:#fff}
.recom-lbox{width:350px;height:350px;border:1px solid #ddd;padding:5px;text-align:left;overflow-x:hidden;overflow-y:auto}
.recom-lbox .head,.recom-rbox .head{border-bottom:1px solid #eee}
.recom-lbox .tck,.recom-rbox .tck{float:left;height:30px;overflow:hidden;width:25px}
.recom-lbox .ttxt{float:left;height:30px;overflow:hidden;width:305px}
.recom-lbox .trow{backbgound:#eee;height:30px;overflow:hidden;line-height:30px}
.recom-rbox{width:420px;height:350px;border:1px solid #ddd;padding:5px;text-align:left;overflow-x:hidden;overflow-y:auto}
.recom-rbox .tck{float:left;height:30px;overflow:hidden;width:25px}
.recom-rbox .ttxt{float:left;height:30px;overflow:hidden;width:325px}
.recom-rbox .top{float:left;width:70px}
.recom-rbox .trow{height:30px;overflow:hidden;width:420px;line-height:30px}
.recom-rbox .s-sort{width:20px}
.wst-grid-tree-hd{background:#fff url("../img/header-bg.gif") repeat-x scroll left bottom;border-bottom:1px solid #ddd}
.wstmart-login-tips{border-bottom:1px solid #ddd;box-shadow:0 1px 3px #ddd;line-height:30px;padding-left:10px}
.wstmart-version-tips,.wstmart-accredit-tips{border-bottom:1px solid #ddd;box-shadow:0 1px 3px #ddd;display:none;background:url('../img/ico_5.png') no-repeat;font-weight:bold;height:25px;line-height:23px;padding-left:30px}
.wstmart-version-tips a,.wstmart-accredit-tips a{color:#e9754f}
.wstmart-version-tips a:hover,.wstmart-accredit-tips a:hover{color:#fe9c3d}
.wst-summary{margin:5px;border:1px solid #ddd;margin-bottom:20px;max-width:99%;width:99%;border-collapse:collapse;border-spacing:0}
.wst-summary .wst-summary-head{background:url("../img/img_seller_ggjt.png") no-repeat scroll 5px 7px;font-weight:bold;margin:5px;padding-left:28px}
.wst-summary tr:nth-child(2n){background:#f9f9f9}
.wst-summary td{padding:5px;vertical-align:middle;border:1px solid #ddd}
.wst-summary tr:hover{background:#f9f9f9}
.wst-desc-head{height:25px;line-height:25px;font-weight:bold;margin:5px 5px 2px 5px}
.wst-desc-body{height:20px;line-height:20px;margin-left:5px}
.wst-desc-body a{color:#000;text-decoration:none}
.tbr-m{padding:0 5px 0 5px;height:30px;line-height:30px}
.wst-views{float:left;width:26%;height:60%}
.wst-views .reveal{margin:0 auto;width:68%;height:100%;border:1px solid #e7e7eb;position:relative}
.wst-views .revealt{position:absolute;left:0;top:0;width:100%;height:65px;background:url(../img/img_topinfo.png) 0 0 no-repeat;background-size:100%}
.wst-views .revealb{position:absolute;left:0;bottom:0;width:100%;height:46px;border-top:1px solid #e7e7eb}
.wst-views .revealb i{float:left;width:15%;height:46px;background:url(../img/img_dibu.png) -5px -10px no-repeat}
.wst-views .ui{float:right;width:85%;height:46px;display:-webkit-box}
.wst-views .li{-webkit-box-flex:1;display:block;line-height:46px;text-align:center;border-left:1px solid #e7e7eb;cursor:pointer;position:relative}
.wst-views .li:hover,.wst-views .li .list:hover{background:#eee}
.wst-views .selected{background:#eee}
.wst-views .li .lis{position:absolute;left:0;bottom:46px;width:100%;border:1px solid #e7e7eb}
.wst-views .li .list{float:left;width:100%;border-bottom:1px solid #e7e7eb}
.wst-maingr{float:right;width:72%}
.wst-view{float:left;width:200px;height:200px;background:#eee}
.wst-view a{display:block;height:200px;line-height:200px;text-decoration:none;text-align:center;color:#3295d3}
.wst-view a:hover{color:#56b7f5}
.style-main{padding:10px}
.style-box{width:200px;height:300px;border:1px solid #ddd;padding:5px;margin:5px;float:left}
.style-box .style-img{width:200px;height:200px;text-align:center;vertical-align:middle;display:block;position:relative}
.style-box .style-img a{display:table-cell;vertical-align:middle;width:200px;height:200px;border:1px solid #ddd}
.style-box .style-img a img{max-width:200px;max-height:200px}
.style-box .style-txt,.style-box .style-author,.style-box .style-web{width:200px;height:25px;overflow:hidden;text-align:left;line-height:25px}
.style-box .style-op{height:30px;text-align:center;overflow:hidden}
.nav li a,.nav li a:hover,.nav-list li a,.nav-list li a:hover{display:block;text-decoration:none;outline:0;border-bottom:0 none}
.nav li{float:left}
.tab-wrap{margin-top:10px}
.tab-nav{margin-bottom:15px;padding-left:1px;border-bottom:1px solid #e0e0e0}
.tab-nav li{margin-bottom:-1px;margin-left:-1px}
.tab-nav li a,.tab-nav li a:hover{padding:0 20px;height:35px;line-height:35px;font-weight:bold;font-size:16px;border:1px solid transparent;border-top-width:2px}
.tab-nav .current a,.tab-nav .current a:hover{border-color:#34b4e0 #e0e0e0 #f6f6f6}
.tab-content .tab-pane{display:none}
.tab-content .in{display:block}
.label{border-radius:.25em;color:#fff;display:inline;font-weight:700;line-height:1;padding:.2em .6em .3em;text-align:center;vertical-align:baseline;white-space:nowrap}
a.label:hover,a.label:focus{color:#fff;cursor:pointer;text-decoration:none}a{text-decoration:none}
.label:empty{display:none}
.label-default{background-color:#777}
.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}
.label-primary{background-color:#428bca}
.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}
.label-success{background-color:#5cb85c}
.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}
.label-info{background-color:#5bc0de}
.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}
.label-warning{background-color:#f0ad4e}
.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}
.label-danger{background-color:#d9534f}
.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}
.label-gray{background-color:#e6e6e6}
.label-gray[href]:hover,.label-danger[href]:focus{background-color:#eee}
.line-break{word-break:break-all;word-wrap:break-word}
.order-source{margin:0 5px 0 0;width:18px;height:18px;position:relative;top:5px}
.order-source2{margin:0 5px 0 0;width:16px;height:16px;position:relative;top:5px}
.wst-tips-box{height: auto;line-height:25px;-moz-border-radius: 5px; -webkit-border-radius: 5px; color:red;border:1px dotted #F0A869;background:#FFFFCC;padding:5px 5px 5px 15px;margin-left:10px;margin-bottom: 5px;margin-top:10px;}
.wst-tips-box .icon{width:20px;height: 20px;float:left;background: url('../img/icon_tstb.png') no-repeat;background-size: 100%}
.wst-tips-box .tips{float: left;padding-left: 5px;}
.line-break{word-break:break-all;word-wrap:break-word;}

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

View File

@ -0,0 +1,241 @@
var zTree,mmg,rMenu,diff = 0;
function layout(){
var h = WST.pageHeight();
var w = WST.pageWidth();
$('.j-layout').width(w-10);
$('.j-layout-left').width(200).height(h-98);
$('.j-layout-center').width(w-220).height(h-98);
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
diff = v?98:53;
$('.j-layout-left').height(h-diff);
$('#menuTree').height(h-diff-40);
$('.j-layout-center').height(h-diff);
if(mmg)mmg.resize({height:h-diff-110});
}});
}
function initGrid(id){
var h = WST.pageHeight();
var cols = [
{title:'数据名称', name:'dataName', width: 100},
{title:'数据值', name:'dataVal' ,width:100},
{title:'排序号', name:'dataSort' ,width:10},
{title:'操作', name:'' ,width:60, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.SJGL_02)h += "<a class='btn btn-blue' onclick='javascript:getForEdit(" + item['id'] + ")'><i class='fa fa-pencil'></i>编辑</a> ";
if(WST.GRANT.SJGL_03)h += "<a class='btn btn-red' onclick='javascript:toDel(" + item['id'] + ","+item['catId']+")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (diff==0)?(h-205):(h-diff-110),cols: cols,method:'POST',indexCol: true,
url: WST.U("admin/datas/childQuery"), fullWidthRows: true, autoLoad: false,
plugins: [
$('#pg').mmPaginator({})
]
});
mmg.load({id:id});
$('#m_add').click(function(){
treeNode = zTree.getSelectedNodes()[0];
editMenu({menuId:0,menuName:'',parentId:treeNode.id,pnode:treeNode,menuSort:0});
});
$('#m_edit').click(function(){
treeNode = zTree.getSelectedNodes()[0];
getForEditMenu(treeNode.id);
return false;
});
$('#m_del').click(function(){
treeNode = zTree.getSelectedNodes()[0];
layer.confirm('您确定要删除该菜单['+treeNode.name+']吗?', {btn: ['确定','取消']}, function(){
var loading = WST.msg('正在提交请求,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/datacats/del'),{id:treeNode.id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
zTree.reAsyncChildNodes(treeNode.getParentNode(), "refresh",true);
}else{
WST.msg(json.msg,{icon:2});
}
});
});
return false;
});
isInit = true;
}
var isInit = false;
$(window).resize(function(){layout();});
$(function(){
layout();
$('#menuTree').height(WST.pageHeight()-95);
var setting = {
view: {
selectedMulti: false,
dblClickExpand:false
},
async: {
enable: true,
url:WST.U('admin/datacats/listQuery'),
autoParam:["id", "name=n", "level=lv"]
},
callback:{
onRightClick: onRightClick,
onClick: onClick,
onAsyncSuccess: onAsyncSuccess
}
};
$.fn.zTree.init($("#menuTree"), setting);
zTree = $.fn.zTree.getZTreeObj("menuTree");
rMenu = $("#rMenu");
});
function loadGrid(id){
mmg.load({id:id,page:1});
}
function onAsyncSuccess(event, treeId, treeNode, msg){
var json = WST.toAdminJson(msg);
if(json && json.id==0){
var treeNode = zTree.getNodeByTId('menuTree_1');
zTree.reAsyncChildNodes(treeNode, "refresh",true);
zTree.expandAll(treeNode,true);
}
}
function onClick(e,treeId, treeNode){
if(treeNode.id>0){
$('.wst-toolbar').show();
$('#maingrid').show();
}else{
$('.wst-toolbar').hide();
$('#maingrid').hide();
}
if(!isInit){
initGrid(treeNode.id);
}else{
loadGrid(treeNode.id);
}
}
function onRightClick(event, treeId, treeNode) {
if(!treeNode)return;
if(!WST.GRANT.CDGL_01 && !WST.GRANT.CDGL_02 && !WST.GRANT.CDGL_03)return;
if(!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
zTree.cancelSelectedNode();
showRMenu("root", event.clientX, event.clientY);
}else if(treeNode && !treeNode.noR) {
zTree.selectNode(treeNode);
showRMenu("node", event.clientX, event.clientY);
}
}
function showRMenu(type, x, y) {
$("#rMenu ul").show();
y += document.body.scrollTop;
x += document.body.scrollLeft;
rMenu.css({"top":y+"px", "left":x+"px", "visibility":"visible"});
$("body").bind("mousedown", onBodyMouseDown);
}
function hideRMenu() {
if (rMenu) rMenu.css({"visibility": "hidden"});
$("body").unbind("mousedown", onBodyMouseDown);
}
function onBodyMouseDown(event){
if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length>0)) {
rMenu.css({"visibility" : "hidden"});
}
}
function getForEditMenu(id){
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/datacats/get'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.catId){
editMenu(json);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function editMenu(obj){
WST.setValues(obj);
var box = WST.open({ title:(obj.catId==0)?'新增数据分类':"编辑数据分类",type: 1,area: ['430px', '190px'],
content:$('#menuBox'),
btn:['确定','取消'],
end:function(){$('#menuBox').hide();},
yes: function(index, layero){
if(!$('#catName').isValid())return;
if(!$('#catCode').isValid())return;
var params = WST.getParams('.ipt2');
params.catId = obj.catId;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/datacats/'+((params.catId)?"edit":"add")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
$('#menuForm')[0].reset();
treeNode = zTree.getNodeByTId('menuTree_1');
zTree.reAsyncChildNodes(treeNode, "refresh",true);
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function getForEdit(id){
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/datas/get'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.id){
WST.setValues(json);
toEdit(json.id);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(id){
var title = "新增数据";
if(id>0){
title = "编辑数据";
}else{
$('#dataForm')[0].reset();
}
var box = WST.open({title:title,type:1,content:$('#dataBox'),area: ['450px', '240px'],btn:['确定','取消'],
end:function(){$('#dataBox').hide();},
yes:function(){
if(!$('#dataName').isValid())return;
if(!$('#dataVal').isValid())return;
var params = WST.getParams('.ipt');
params.catId = zTree.getSelectedNodes()[0].id;
params.id = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/datas/'+((id==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
$('#dataForm')[0].reset();
layer.close(box);
loadGrid(params.catId);
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function toDel(id,pid){
var box = WST.confirm({content:"您确定要删除该数据吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/datas/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid(pid);
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}

View File

@ -0,0 +1,77 @@
{extend name="base" /}
{block name="css"}
<link href="__ADMIN__/js/ztree/css/zTreeStyle/zTreeStyle.css?v={$v}" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/ztree/jquery.ztree.all-3.5.js?v={$v}"></script>
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/datas/datas.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>本功能主要提供系统基础数据元的管理功能,开发者可以在此配置系统的基础选项值。</li>
<li>该功能为开发者功能,普通使用者请勿随意修改,以免影响系统使用。</li>
</ul>
</div>
<div class="j-layout">
<div class='j-layout-left'>
<div class='j-layout-panel layui-colla-title'>数据分类管理</div>
<ul id="menuTree" class="ztree" style='overflow:auto'></ul>
</div>
<div class='j-layout-center' style='border:1px solid #ccc;float:left;margin-left:5px;'>
<div class='j-layout-panel layui-colla-title'>数据管理</div>
{if WSTGrant('SJGL_01')}
<div class="wst-toolbar" style='display:none'>
<button class="btn btn-success f-right" onclick='javascript:toEdit(0)'><i class='fa fa-plus'></i>新增</button>
<div style='clear:both'></div>
</div>
{/if}
<div id="maingrid" style='display:none'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
</div>
</div>
<div id='menuBox' style='display:none'>
<form id='menuForm'>
<table class='wst-form wst-box-top'>
<tr>
<th width='100'>数据分类名称<font color='red'>*</font></th>
<td><input type='text' id='catName' class='ipt2' data-rule="数据分类名称: required;"/></td>
</tr>
<tr>
<th width='100'>数据分类代码<font color='red'>*</font></th>
<td><input type='text' id='catCode' class='ipt2' data-rule="数据分类代码: required;" /></td>
</tr>
</table>
</form>
</div>
<div id='dataBox' style='display:none'>
<form id='dataForm' autocomplete='off'>
<table class='wst-form wst-box-top'>
<tr>
<th width='100'>数据名称<font color='red'>*</font></th>
<td><input type='text' id='dataName' class='ipt' data-rule="数据名称: required;"/></td>
</tr>
<tr>
<th>数据值<font color='red'>*</font></th>
<td><input type='text' id='dataVal' class='ipt' data-rule="数据值: required;"/></td>
</tr>
<tr>
<th>排序号<font color='red'> </font></th>
<td><input onkeypress='return WST.isNumberKey(event);' onkeyup="javascript:WST.isChinese(this,1)" type='text' id='dataSort' class='ipt' /></td>
</tr>
</table>
</form>
</div>
<div id="rMenu">
<ul>
{if WSTGrant('SJFL_01')}<li id="m_add" >新增分类</li>{/if}
{if WSTGrant('SJFL_02')}<li id="m_edit">编辑分类</li>{/if}
{if WSTGrant('SJFL_03')}<li id="m_del" style='border-bottom:0px;'>删除分类</li>{/if}
</ul>
</div>
{/block}

View File

@ -0,0 +1,54 @@
{if !empty($object)}
<form id='editFrom'>
<table class='wst-form'>
<tr>
<td colspan='2' class='head-ititle'>订单信息</td>
</tr>
<tr>
<th width='100'>订单编号:</th>
<td>{$object['transactionId']}</td>
</tr>
<tr>
<th>用户名称:</th>
<td>¥{$object['loginName']}</td>
</tr>
<tr>
<th>ECT发送方</th>
<td>{$object['fromAccount']}</td>
</tr>
<tr>
<th>ECT接收方</th>
<td>{$object['toAccount']}</td>
</tr>
<tr>
<th>备注:</th>
<td>{$object['dataRemarks']}</td>
</tr>
<tr>
<th>ECT数量</th>
<td>{$object['ectNum']}</td>
</tr>
<tr>
<th>创建时间:</th>
<td>{$object['createTime']}</td>
</tr>
<tr>
<th width='120'>管理员意见:</th>
<td>
<label><input type='radio' {if $object['status']==1} checked{/if} onclick='WST.showHide(0,"#tr")' name='status' id='refundStatus1' value='1'/>同意</label>
<label style='margin-left:15px;'><input type='radio' {if $object['status']==2} checked{/if} onclick='WST.showHide(1,"#tr")' name='status' id='refundStatus0' value='2'/>不同意</label>
</td>
</tr>
<tr>
<td colspan='2' style='text-align:center;padding-top:30px;'>
<button type="button" class="btn btn-primary btn-mright" onclick="javascript:toEcttarget({$object['id']})"><i class="fa fa-check"></i>&nbsp;&nbsp;</button>
<button type="button" class="btn" onclick='javascript:layer.close(w)'><i class="fa fa-angle-double-left"></i>&nbsp;&nbsp;</button>
</td>
</tr>
</table>
</form>
{else}
<div style='color:red;margin:20px;'>
该订单不存在或已退款。
</div>
{/if}

View File

@ -0,0 +1,87 @@
var mmg;
$(function(){
var laydate = layui.laydate;
laydate.render({
elem: '#startDate'
});
laydate.render({
elem: '#endDate'
});
})
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'会员名称', name:'loginName' ,width:100,sortable: true},
{title:'ECT返还数量', name:'ectNum' ,width:40,sortable: true, renderer:function(val,item,rowIndex){
return '¥'+val;
}},
{title:'交易时间', name:'giveTime' ,width:60,sortable: true,renderer:function(val,item,rowIndex){
var today=new Date(parseInt(item['giveTime'])*1000);
var y=today.getFullYear();
var m=today.getMonth()+1;
var d=today.getDate();
var h=today.getHours();
var i=today.getMinutes();
var s=today.getSeconds();
return (y+"-"+m+"-"+d+" "+h+":"+i+":"+s);
}},
];
mmg = $('.mmg').mmGrid({height: h-173,indexCol: true,indexColWidth:50, cols: cols,method:'POST',nowrap:true,
url: WST.U('admin/ectday/pageQuery'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'createTime',sortStatus:'desc',
remoteSort:true ,
sortName: 'ectNo',
sortStatus: 'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
var diff = v?173:128;
mmg.resize({height:h-diff})
}});
}
function loadGrid(){
var p = WST.getParams('.j-ipt');
p.page = 1;
mmg.load(p);
}
function toView(loginName){
location.href=WST.U('admin/ectdeal/index','loginName='+loginName);
}
function toExport(){
var params = {};
params = WST.getParams('.j-ipt');
var box = WST.confirm({content:"您确定要导出订单吗?",yes:function(){
layer.close(box);
location.href=WST.U('admin/ectday/toExport',params);
}});
}
function toHandle(id){
var ll = WST.msg('正在加载信息,请稍候...');
$.post(WST.U('admin/ectday/toHandle',{id:id}),{},function(data){
layer.close(ll);
w =WST.open({type: 1,title:"订单退款",shade: [0.6, '#000'],offset:'50px',border: [0],content:data,area: ['550px', '380px']});
});
}
function toEcttarget(id){
$('#editFrom').isValid(function(v){
if(v){
var params = {};
params.status = $('#refundStatus1')[0].checked?1:2;
params.id = id;
ll = WST.msg('正在加载信息,请稍候...');
$.post(WST.U('admin/ectday/ectTarget'),params,function(data){
layer.close(ll);
var json = WST.toAdminJson(data);
if(json.status==1){
WST.msg(json.msg, {icon: 1});
loadGrid();
layer.close(w);
}else{
WST.msg(json.msg, {icon: 2});
}
});
}
})
}

View File

@ -0,0 +1,39 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/ectday/ectday.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>本功能主要用于处理来自于会员(商家)的提现请求。提现通过后系统会扣除会员(商家)的钱包金额。</li>
<li>本功能只扣除本系统的会员(商家)钱包金额,实际上的资金转账需平台线下操作。</li>
</ul>
</div>
<div class="wst-toolbar">
<input type="text" id="startDate" name="startDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='开始日期'/>
<input type="text" id="endDate" name="endDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='结束日期'/>
<input type="text" name="loginName" placeholder='用户名称' id="loginName" class='j-ipt' value="{$Request.param.loginName}"/>
<button class="btn btn-primary" id="search" onclick='javascript:loadGrid(0)'><i class="fa fa-search"></i>查询</button>
<button class="btn btn-primary f-right btn-fixtop" onclick='javascript:history.back()'><i class="fa fa-sign-in"></i>返回</button>
<!--<button class="btn btn-primary f-right btn-fixtop" onclick='javascript:toExport(0)'><i class="fa fa-sign-in"></i>导出</button>-->
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){
initGrid();
if($("#loginName").val()!=""){
$("#search").click();
}
})
</script>
{/block}

View File

@ -0,0 +1,94 @@
var mmg;
$(function(){
var laydate = layui.laydate;
laydate.render({
elem: '#startDate'
});
laydate.render({
elem: '#endDate'
});
})
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'ECT交易ID', name:'ectId', width: 100,sortable: true},
{title:'会员名称', name:'loginName' ,width:100,sortable: true},
{title:'ECT获取方式', name:'dataSrc' ,width:60,sortable: true,renderer:function(val,item,rowIndex){
if(item['dataSrc']=="1"){
return '注册';
}else if(item['dataSrc']=="2"){
return "推荐";
}else if(item['dataSrc']=="3"){
return "交易";
}else if(item['dataSrc']=="4"){
return "提现";
}else if(item['dataSrc']=="5"){
return "联盟积分转换";
}else if(item['dataSrc']=="6"){
return "成为商家";
}else if(item['dataSrc']=="7"){
return "推荐成为商家";
}else if(item['dataSrc']=="8"){
return "成为线上商城商家";
}else if(item['dataSrc']=="9"){
return "推荐成为线上商城商家";
}else if(item['dataSrc']=="10"){
return "";
}else if(item['dataSrc']=="11"){
return "购物";
}else if(item['dataSrc']=="12"){
return "结算";
}else if(item['dataSrc']=="13"){
return "退款";
}else if(item['dataSrc']=="14"){
return "充值";
}else {
return "";
}
}},
{title:'备注', name:'dataRemarks' ,width:40,sortable: true},
{title:'ECT变动数量', name:'ectNum' ,width:40,sortable: true, renderer:function(val,item,rowIndex){
return '¥'+val;
}},
{title:'创建时间', name:'createTime' ,width:40,sortable: true,renderer:function(val,item,rowIndex){
var today=new Date(parseInt(item['createTime'])*1000);
var y=today.getFullYear();
var m=today.getMonth()+1;
var d=today.getDate();
var h=today.getHours();
var i=today.getMinutes();
var s=today.getSeconds();
return (y+"-"+m+"-"+d+" "+h+""+i+""+s);
}}
];
mmg = $('.mmg').mmGrid({height: h-173,indexCol: true,indexColWidth:50, cols: cols,method:'POST',nowrap:true,
url: WST.U('admin/ectdeal/pageQuery'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'createTime',sortStatus:'desc',
remoteSort:true ,
sortName: 'ectNo',
sortStatus: 'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
var diff = v?173:128;
mmg.resize({height:h-diff})
}});
mmg.on('loadSuccess',function(e,data){
if(data.items[0].sumEct!=undefined){
$('#sunNum').text(data.items[0].sumEct);
}
if(data.items[0].sumCashEct!=undefined){
$('#sumCashEct').text(data.items[0].sumCashEct);
}
if(data.items[0].sumCashChong!=undefined){
$('#sumCashChong').text(data.items[0].sumCashChong);
}
})
}
function loadGrid(){
var p = WST.getParams('.j-ipt');
p.page = 1;
mmg.load(p);
}

View File

@ -0,0 +1,43 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/ectdeal/ectdeal.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>本功能主要用于查看会员以及商户获取ECT途径</li>
</ul>
</div>
<div class="wst-toolbar">
<input type="text" id="startDate" name="startDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='开始日期'/>
<input type="text" id="endDate" name="endDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='结束日期'/>
<input type="text" name="loginName" placeholder='会员名称' id="loginName" class='j-ipt' value="{$Request.param.loginName}"/>
<button class="btn btn-primary" id="search" onclick='javascript:loadGrid(0)'><i class="fa fa-search"></i>查询</button>
<span style="font-size: 14px;margin-left: 50px;">ect结算总金额: <span id="sunNum"></span></span>
<span style="font-size: 14px;margin-left: 50px;">ect提现总金额: <span id="sumCashEct"></span></span>
<span style="font-size: 14px;margin-left: 50px;">ect充值总金额: <span id="sumCashChong"></span></span>
<button class="btn btn-primary f-right btn-fixtop" onclick='javascript:history.back()'><i class="fa fa-sign-in"></i>返回</button>
<!-- <button class="btn btn-primary f-right btn-fixtop" onclick='javascript:toExport(0)'><i class="fa fa-sign-in"></i>导出</button> -->
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){
initGrid();
if($('#loginName').val()!=''){
$('#search').click();
}
})
</script>
{/block}

View File

@ -0,0 +1,54 @@
{if !empty($object)}
<form id='editFrom'>
<table class='wst-form'>
<tr>
<td colspan='2' class='head-ititle'>订单信息</td>
</tr>
<tr>
<th width='100'>订单编号:</th>
<td>{$object['transactionId']}</td>
</tr>
<tr>
<th>用户名称:</th>
<td>¥{$object['loginName']}</td>
</tr>
<tr>
<th>ECT发送方</th>
<td>{$object['fromAccount']}</td>
</tr>
<tr>
<th>ECT接收方</th>
<td>{$object['toAccount']}</td>
</tr>
<tr>
<th>备注:</th>
<td>{$object['dataRemarks']}</td>
</tr>
<tr>
<th>ECT数量</th>
<td>{$object['ectNum']}</td>
</tr>
<tr>
<th>创建时间:</th>
<td>{$object['createTime']}</td>
</tr>
<tr>
<th width='120'>管理员意见:</th>
<td>
<label><input type='radio' {if $object['status']==1} checked{/if} onclick='WST.showHide(0,"#tr")' name='status' id='refundStatus1' value='1'/>同意</label>
<label style='margin-left:15px;'><input type='radio' {if $object['status']==2} checked{/if} onclick='WST.showHide(1,"#tr")' name='status' id='refundStatus0' value='2'/>不同意</label>
</td>
</tr>
<tr>
<td colspan='2' style='text-align:center;padding-top:30px;'>
<button type="button" class="btn btn-primary btn-mright" onclick="javascript:toEcttarget({$object['id']})"><i class="fa fa-check"></i>&nbsp;&nbsp;</button>
<button type="button" class="btn" onclick='javascript:layer.close(w)'><i class="fa fa-angle-double-left"></i>&nbsp;&nbsp;</button>
</td>
</tr>
</table>
</form>
{else}
<div style='color:red;margin:20px;'>
该订单不存在或已退款。
</div>
{/if}

View File

@ -0,0 +1,150 @@
var mmg;
$(function(){
var laydate = layui.laydate;
laydate.render({
elem: '#startDate'
});
laydate.render({
elem: '#endDate'
});
})
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'ECT交易ID', name:'transactionId', width: 100,sortable: true},
{title:'会员名称', name:'loginName' ,width:100,sortable: true},
{title:'ECT发送方', name:'fromAccount' ,width:60,sortable: true},
{title:'ECT接收方', name:'toAccount' ,width:40,sortable: true},
{title:'备注', name:'dataRemarks' ,width:40,sortable: true},
{title:'ECT提现数量', name:'ectNum' ,width:40,sortable: true, renderer:function(val,item,rowIndex){
return '¥'+val;
}},
{title:'创建时间', name:'createTime' ,width:60,sortable: true,renderer:function(val,item,rowIndex){
var today=new Date(parseInt(item['createTime'])*1000);
var y=today.getFullYear();
var m=today.getMonth()+1;
var d=today.getDate();
var h=today.getHours();
var i=today.getMinutes();
var s=today.getSeconds();
return (y+"-"+m+"-"+d+" "+h+"-"+i+"-"+s);
}},
{title:'状态', name:'status' ,width:50,renderer: function (val,item,rowIndex){
if(item['status']==1){
return "<span class='statu-yes'><i class='fa fa-check-circle'></i> 已同意</span>";
}else if(item['status']==2){
return "<span class='statu-no'><i class='fa fa-check-circle'></i> 未同意</span>";
}else{
return "<span class='statu-no'><i class='fa fa-ban'></i>未审核</span>";
}
}},
{title:'操作', name:'op' ,width:180, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += '<a class="btn btn-blue" href="javascript:toView(\'' + item['loginName'] + '\');"><i class="fa fa-search"></i>查看记录</a> ';
h += '<a class="btn btn-blue" href="javascript:toEctDay(\'' + item['loginName'] + '\');"><i class="fa fa-search"></i>查看返还</a> ';
if(item['status']==0){
h += "<a class='btn btn-blue' href='javascript:toHandle(" + item['id'] + ")'><i class='fa fa-pencil'></i>处理</a> ";
}
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-173,indexCol: true,indexColWidth:50, cols: cols,method:'POST',nowrap:true,
url: WST.U('admin/ecttarget/pageQuery'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'createTime',sortStatus:'desc',
remoteSort:true ,
sortName: 'ectNo',
sortStatus: 'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
var diff = v?173:128;
mmg.resize({height:h-diff})
}});
mmg.on('loadSuccess',function(e,data){
if(data.items[0].sumEct!=undefined){
$('#sunNum').text(data.items[0].sumEct);
}
})
}
function loadGrid(){
var p = WST.getParams('.j-ipt');
p.page = 1;
mmg.load(p);
}
function toView(loginName){
location.href=WST.U('admin/ectdeal/index','loginName='+loginName);
}
function toEctDay(loginName){
location.href=WST.U('admin/ectday/index','loginName='+loginName);
}
function toExport(){
var params = {};
params = WST.getParams('.j-ipt');
var box = WST.confirm({content:"您确定要导出订单吗?",yes:function(){
layer.close(box);
location.href=WST.U('admin/ecttarget/toExport',params);
}});
}
function toHandle(id){
var ll = WST.msg('正在加载信息,请稍候...');
$.post(WST.U('admin/ecttarget/toHandle',{id:id}),{},function(data){
layer.close(ll);
w =WST.open({type: 1,title:"ECT提现操作",shade: [0.6, '#000'],offset:'50px',border: [0],content:data,area: ['550px', '380px']});
});
}
var click =false;
function toEcttarget(id){
if (click==true) return;
$('#editFrom').isValid(function(v){
if(v){
var params = {};
params.status = $('#refundStatus1')[0].checked?1:2;
params.id = id;
ll = WST.msg('正在加载信息,请稍候...');
$.post(WST.U('admin/ecttarget/ectTarget'),params,function(data){
var json = WST.toAdminJson(data);
if(json.status==1){
if(params.status == 1){
$.ajax({
url: "http://moacapi.juzi199.com/api/ect/ect_transfer",
type: "POST",
data:{
'id':id
},
dataType: "jsonp", //指定服务器返回的数据类型
success: function (ect_data) {
var json = WST.toAdminJson(ect_data);
//console.log(json);
if(json.status==1){
WST.msg(json.msg, {icon: 1});
}else{
alert(json.msg);
}
click=true;
loadGrid();
layer.close(ll);
layer.close(w);
}
});
}else{
WST.msg('拒绝'+json.msg, {icon: 2});
loadGrid();
layer.close(w);
click=true;
}
}else{
WST.msg(json.msg, {icon: 2});
layer.close(w);
click=true;
}
});
}
})
}

View File

@ -0,0 +1,37 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/ecttarget/ecttarget.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>本功能主要用于处理来自于会员(商家)的提现请求。提现通过后系统会扣除会员(商家)的钱包金额。</li>
<li>本功能只扣除本系统的会员(商家)钱包金额,实际上的资金转账需平台线下操作。</li>
</ul>
</div>
<div class="wst-toolbar">
<input type="text" id="startDate" name="startDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='开始日期'/>
<input type="text" id="endDate" name="endDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='结束日期'/>
<input type="text" name="ectNo" placeholder='交易ID' id="ectNo" class='j-ipt'/>
<input type="text" name="loginName" placeholder='会员名称' id="loginName" class='j-ipt'/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class="fa fa-search"></i>查询</button>
<!-- <span style="font-size: 14px;margin-left: 50px;">ect提现总金额: <span id="sunNum"></span></span> -->
<button class="btn btn-primary f-right btn-fixtop" onclick='javascript:toExport(0)'><i class="fa fa-sign-in"></i>导出</button>
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){
initGrid();
})
</script>
{/block}

View File

@ -0,0 +1,35 @@
{extend name="base" /}
{block name="js"}
<script src="__ADMIN__/js/license.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
</head>
<body>
<body>
<form id='editFrom' name="editFrom" method="post" id="myform" autocomplete="off">
<table class="wst-form" style='margin-top:30px;'>
<tr>
<th align='right'>授权域名 <font color='red'>*</font></th>
<td>
{:request()->root(true)}
</td>
</tr>
<tr>
<th align='right' width='150'>授权码 <font color='red'>*</font></th>
<td>
<input type='text' id='license' name='license' style='width:400px;' data-rule="授权码: required;"/>
</td>
</tr>
<tr id='licenseTr' style='display:none'>
<th align='right'>授权状态 </th>
<td id='licenseStatus' style='color:red;'></td>
</tr>
<tr>
<td colspan='2' style='padding-left:250px;padding-top:15px;'>
<button type="button" class="btn btn-primary btn-mright" onclick='edit()'>&nbsp;</button>
<button type="reset" class="btn">&nbsp;</button>
</td>
</tr>
</table>
</form>
{/block}

View File

@ -0,0 +1,156 @@
var mmg;
function initGrid(staffId){
var h = WST.pageHeight();
var cols = [
{title:'图标', name:'expressImg' ,width:50, align:'center', renderer: function(val,item,rowIndex){
return '<img src="'+WST.conf.IMGURL+'/'+item['expressImg']+'" height="28px" />';
}},
{title:'快递名称', name:'expressName', width: 160},
{title:'快递代码', name:'expressCode' ,width:60},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.KDGL_02)h += "<a class='btn btn-blue' onclick='javascript:getForEdit(" + item['expressId'] + ")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.KDGL_03)h += "<a class='btn btn-red' onclick='javascript:toDel(" + item['expressId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-155),indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/express/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
if(v){
mmg.resize({height:h-155});
}else{
mmg.resize({height:h-128});
}
}});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/express/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function getForEdit(id){
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/express/get'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.expressId){
WST.setValues(json);
//显示原来的图片
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.expressImg+'" height="75px" />');
$('#isImg').val('ok');
toEdit(json.expressId);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(id){
if(!isInitUpload){
initUpload();
}
var title = "新增";
if(id>0){
title = "编辑";
}else{
$('#expressForm')[0].reset();
}
var box = WST.open({title:title,type:1,content:$('#expressBox'),area: ['450px', '400px'],btn:['确定','取消'],
end:function(){
$('#expressBox').hide();
//重置表单
$('#expressForm')[0].reset();
//清空预览图
$('#preview').html('');
$('#expressImg').val('');
},yes:function(){
$('#expressForm').submit();
},cancel:function(){
//重置表单
$('#expressForm')[0].reset();
//清空预览图
$('#preview').html('');
$('#expressImg').val('');
}});
$('#expressForm').validator({
fields: {
expressName: {
rule:"required;",
msg:{required:"快递名称不能为空"},
tip:"请输入快递名称",
ok:"",
},
expressImg: {
rule:"required;",
msg:{required:"请上传图标"},
tip:"请上传图标",
ok:"",
}
},
valid: function(form){
var params = WST.getParams('.ipt');
params.expressId = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/express/'+((id==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
$('#expressForm')[0].reset();
//清空预览图
$('#preview').html('');
//清空图片隐藏域
$('#expressImg').val('');
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
var isInitUpload = false;
function initUpload(){
isInitUpload = true;
//文件上传
WST.upload({
pick:'#adFilePicker',
formData: {dir:'accreds'},
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#uploadMsg').empty().hide();
//将上传的图片路径赋给全局变量
$('#expressImg').val(json.savePath+json.name);
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" height="75" />');
}else{
WST.msg(json.msg,{icon:2});
}
},
progress:function(rate){
$('#uploadMsg').show().html('已上传'+rate+"%");
}
});
}

View File

@ -0,0 +1,59 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/express/express.js?v={$v}" type="text/javascript"></script>
<script type='text/javascript' src='__STATIC__/plugins/webuploader/webuploader.js?v={$v}'></script>
{/block}
{block name="main"}
{if WSTGrant('KDGL_01')}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>本功能主要用于管理快递公司的信息。快递代码主要用于物流插件的快递识别查询,填写时请参照各物流插件的快递代码填写。</li>
</ul>
</div>
<div class="wst-toolbar">
<button class="btn btn-success f-right" onclick='javascript:toEdit(0)'><i class='fa fa-plus'></i>新增</button>
<div style="clear:both"></div>
{/if}
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='expressBox' style='display:none'>
<form id='expressForm' autocomplete="off">
<table class='wst-form wst-box-top'>
<tr>
<th width='100'>快递名称<font color='red'>*</font></th>
<td><input type='text' id='expressName' name="expressName" class='ipt' maxLength='20'/></td>
</tr>
<tr>
<th width='100'>快递代码:</th>
<td><input type='text' id='expressCode' name="expressCode" class='ipt' maxLength='20'/></td>
</tr>
<tr>
<td colspan="2" style="padding-left: 35px;">快递代码是用于物流查询,请查询所启用插件的快递代码</td>
</tr>
<tr>
<th>图标:</th>
<td>
<div id='adFilePicker'>上传图标</div><span id='uploadMsg'></span>
<input type='hidden' id='expressImg' name="expressImg" class="ipt" />
</td>
</tr>
<tr>
<th>预览图:</th>
<td><div style="min-height:70px;" id="preview"></div></td>
</tr>
</table>
</form>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,154 @@
var mmg,isInitUpload = false;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'网站名称', name:'friendlinkName', width: 80},
{title:'网址', name:'friendlinkUrl' ,width:100},
{title:'图标', name:'friendlinkIco' ,width:30,renderer:function(val,item,rowIndex){
if(item['friendlinkIco']){
return '<img src="'+WST.conf.IMGURL+'/'+item['friendlinkIco']+'" height="28px" />';
}else{
return "";
}
}},
{title:'操作', name:'' ,width:80, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.YQGL_02)h += "<a class='btn btn-blue' onclick='javascript:getForEdit("+item['friendlinkId']+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.YQGL_03)h += "<a class='btn btn-red' onclick='javascript:toDel(" + item['friendlinkId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-80,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/Friendlinks/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
function initUpload(){
//文件上传
WST.upload({
pick:'#adFilePicker',
formData: {dir:'friendlinks'},
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#uploadMsg').empty().hide();
$('#friendlinkIco').val(json.savePath+json.name);
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" height="75" />');
}else{
WST.msg(json.msg,{icon:2});
}
},
progress:function(rate){
$('#uploadMsg').show().html('已上传'+rate+"%");
}
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/friendlinks/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function getForEdit(id){
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/friendlinks/get'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.friendlinkId){
WST.setValues(json);
//显示原来的图片
if(json.friendlinkIco!=''){
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.friendlinkIco+'" height="70px" />');
}else{
$('#preview').empty();
}
toEdit(json.friendlinkId);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(id){
if(!isInitUpload){
isInitUpload = true;
initUpload();
}
var title =(id==0)?"新增":"编辑";
var box = WST.open({title:title,type:1,content:$('#friendlinkBox'),area: ['450px', '350px'],btn: ['确定','取消'],
yes:function(){
$('#friendlinkForm').submit();
},cancel:function(){
$('#friendlinkBox').hide();
//重置表单
$('#friendlinkForm')[0].reset();
//清空预览图
$('#preview').html('');
//清空图片隐藏域
$('#friendlinkIco').val('');
},end:function(){
$('#friendlinkBox').hide();
//重置表单
$('#friendlinkForm')[0].reset();
//清空预览图
$('#preview').html('');
//清空图片隐藏域
$('#friendlinkIco').val('');
}});
$('#friendlinkForm').validator({
fields: {
friendlinkName: {
rule:"required;",
msg:{required:"网站名称不能为空"},
tip:"请输入网站名称",
ok:"",
},
friendlinkUrl: {
rule: "required;",
msg: {required: "网址不能为空"},
tip: "请输入网址",
ok: "",
}
},
valid: function(form){
var params = WST.getParams('.ipt');
params.friendlinkId = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/friendlinks/'+((id==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
$('#friendlinkBox').hide();
$('#friendlinkForm')[0].reset();
//清空预览图
$('#preview').html('');
//清空图片隐藏域
$('#friendlinkIco').val('');
layer.close(box);
mmg.load();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}

View File

@ -0,0 +1,60 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/friendlinks/friendlinks.js?v={$v}" type="text/javascript"></script>
<script type='text/javascript' src='__STATIC__/plugins/webuploader/webuploader.js?v={$v}'></script>
{/block}
{block name="main"}
{if WSTGrant('YQGL_01')}
<div class="wst-toolbar">
<button class="btn btn-success f-right" onclick='javascript:toEdit(0)'><i class='fa fa-plus'></i>新增</button>
<div style="clear:both"></div>
</div>
{/if}
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='friendlinkBox' style='display:none'>
<form id='friendlinkForm' method="post" autocomplete="off">
<table class='wst-form wst-box-top'>
<tr>
<th width='100'>网站名称<font color='red'>*</font></th>
<td><input type='text' id='friendlinkName' name="friendlinkName" class='ipt' maxLength='20'/></td>
</tr>
<tr>
<th width='100'>图标:</th>
<td>
<div id='adFilePicker'>上传图标</div><span id='uploadMsg'></span>
<input type='hidden' id='friendlinkIco' class='ipt'/>
</td>
</tr>
<tr>
<th width='100'>预览图:</th>
<td>
<div style="min-height:70px;" id="preview"></div>
</td>
</tr>
<tr>
<th width='100'>网址<font color='red'>*</font></th>
<td><input type='text' id='friendlinkUrl' name="friendlinkUrl" class='ipt' maxLength='120'/></td>
</tr>
<tr>
<th width='100'>网站排序号:</th>
<td><input type='text' id='friendlinkSort' class='ipt' maxLength='20'/></td>
</tr>
</table>
</form>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,285 @@
var mmg;
function initSaleGrid(){
var h = WST.pageHeight();
var cols = [
{title:'&nbsp;', name:'goodsImg', width: 30, renderer: function(val,item,rowIndex){
var thumb = item['goodsImg'];
//thumb = thumb.replace('.','_thumb.');
return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:60px;width:60px;' src='"+WST.conf.IMGURL+"/"+thumb+"/thumb80"
+"'><span class='imged' ><img style='height:180px;width:180px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'></span></span>";
}},
{title:'商品ID', name:'goodsId' ,width:60,sortable:true},
{title:'商品名称', name:'goodsName', width: 120,sortable:true,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsName']+"</p></span>";
}},
{title:'商品编号', name:'goodsSn' ,width:60,sortable:true},
{title:'价格', name:'shopPrice' ,width:20,sortable:true, renderer: function(val,item,rowIndex){
return '¥'+item['shopPrice'];
}},
{title:'优惠率', name:'discountRate' ,width:20,sortable:true, renderer: function(val,item,rowIndex){
return item['discountRate']+'%';
}},
{title:'所属店铺', name:'shopName' ,width:60,sortable:true},
{title:'店铺电话', name:'phone' ,width:60,sortable:true},
{title:'申请上架时间', name:'saleTime' ,width:60,sortable:true},
{title:'审核通过时间', name:'createTime' ,width:60,sortable:true},
{title:'所属分类', name:'goodsCatName' ,width:60,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsCatName']+"</p></span>";
}},
{title:'销量', name:'saleNum' ,width:20,sortable:true,align:'center'},
{title:'状态', name:'isSale' ,width:30,renderer: function (val,item,rowIndex){
if(item['isSale']==1){
return "<span class='statu-yes'><i class='fa fa-check-circle'></i> 已上架</span>";
}else{
return "<span class='statu-no'><i class='fa fa-ban'></i>已下架</span>";
}
}},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
// h += "<a class='btn btn-blue' target='_blank' href='"+WST.U("home/goods/detail","id="+item['goodsId'])+"'><i class='fa fa-search'></i>查看</a> ";
// h += "<a class='btn btn-red' href='javascript:toPay(" + item['goodsId'] + ",1)'><i class='fa fa-ban'></i>添加ECT支付</a> ";
if(WST.GRANT.SJSP_04)h += "<a class='btn btn-red' href='javascript:illegal(" + item['goodsId'] + ",1)'><i class='fa fa-ban'></i>违规下架</a> ";
if(WST.GRANT.SJSP_03)h += "<a class='btn btn-red' href='javascript:del(" + item['goodsId'] + ",1)'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-85),indexCol: true, indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/goods/saleByPage'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'goodsSn',sortStatus:'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
function loadGrid(){
var params = WST.getParams('.j-ipt');
params.areaIdPath = WST.ITGetAllAreaVals('areaId1','j-areas').join('_');
params.goodsCatIdPath = WST.ITGetAllGoodsCatVals('cat_0','pgoodsCats').join('_');
params.page = 1;
mmg.load(params);
}
function toPay(id,type){
var box = WST.confirm({content:"您确定要添加ECT支付吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goods/goodsEct'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function toExportSale(){
var params = {};
params = WST.getParams('.j-ipt');
var box = WST.confirm({content:"您确定要导出订单吗?",yes:function(){
layer.close(box);
location.href=WST.U('admin/goods/toExportSale',params);
}});
}
function del(id,type){
var box = WST.confirm({content:"您确定要删除该商品吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goods/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function illegal(id,type){
var w = WST.open({type: 1,title:((type==1)?"商品违规原因":"商品不通过原因"),shade: [0.6, '#000'],border: [0],
content: '<textarea id="illegalRemarks" rows="7" style="width:100%" maxLength="200"></textarea>',
area: ['500px', '260px'],btn: ['确定', '关闭窗口'],
yes: function(index, layero){
var illegalRemarks = $.trim($('#illegalRemarks').val());
if(illegalRemarks==''){
WST.msg(((type==1)?'请输入违规原因 !':'请输入不通过原因!'), {icon: 5});
return;
}
var ll = WST.msg('数据处理中,请稍候...');
$.post(WST.U('admin/goods/illegal'),{id:id,illegalRemarks:illegalRemarks},function(data){
layer.close(w);
layer.close(ll);
var json = WST.toAdminJson(data);
if(json.status>0){
WST.msg(json.msg, {icon: 1});
loadGrid();
}else{
WST.msg(json.msg, {icon: 2});
}
});
}
});
}
function initAuditGrid(){
var h = WST.pageHeight();
var cols = [
{title:'商品ID', name:'goodsId' ,width:30,sortable:true},
{title:'&nbsp;', name:'goodsName', width: 30, renderer: function(val,item,rowIndex){
return "<span class='weixin'><img class='img' style='height:60px;width:60px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'><img class='imged' style='height:200px;width:200px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'></span>";
}},
{title:'商品名称', name:'goodsName', width: 160,sortable:true,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsName']+"</p></span>";
}},
{title:'商品编号', name:'goodsSn' ,width:60,sortable:true},
{title:'价格', name:'shopPrice' ,width:20,sortable:true, renderer: function(val,item,rowIndex){
return '¥'+item['shopPrice'];
}},
{title:'优惠率', name:'discountRate' ,width:20,sortable:true, renderer: function(val,item,rowIndex){
return item['discountRate']+'%';
}},
{title:'所属店铺', name:'shopName' ,width:60,sortable:true},
{title:'店铺电话', name:'phone' ,width:60,sortable:true},
{title:'所属分类', name:'goodsCatName' ,width:60,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsCatName']+"</p></span>";
}},
{title:'销量', name:'saleNum' ,width:20,sortable:true,align:'center'},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
// h += "<a class='btn btn-blue' target='_blank' href='"+WST.U("home/goods/detail","id="+item['goodsId']+"&key="+item['verfiycode'])+"'><i class='fa fa-search'></i>查看</a> ";
if(WST.GRANT.DSHSP_04)h += "<a class='btn btn-blue' href='javascript:allow(" + item['goodsId'] + ",0)'><i class='fa fa-check'></i>审核通过</a> ";
if(WST.GRANT.DSHSP_04)h += "<a class='btn btn-red' href='javascript:illegal(" + item['goodsId'] + ",0)'><i class='fa fa-ban'></i>审核不通过</a> ";
if(WST.GRANT.DSHSP_03)h += "<a class='btn btn-red' href='javascript:del(" + item['goodsId'] + ",0)'><i class='fa fa-trash-o'></i>删除</a>";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-85),indexCol: true, indexColWidth:40, cols: cols,method:'POST',checkCol:true,multiSelect:true,
url: WST.U('admin/goods/auditByPage'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'goodsSn',sortStatus:'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
// 批量审核通过
function toBatchAllow(){
var rows = mmg.selectedRows();
if(rows.length==0){
WST.msg('请选择商品',{icon:2});
return;
}
var ids = [];
for(var i=0;i<rows.length;i++){
ids.push(rows[i]['goodsId']);
}
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goods/batchAllow'),{ids:ids.join(',')},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
// 批量审核不通过
function toBatchIllegal(){
var rows = mmg.selectedRows();
if(rows.length==0){
WST.msg('请选择商品',{icon:2});
return;
}
var ids = [];
for(var i=0;i<rows.length;i++){
ids.push(rows[i]['goodsId']);
}
// 先显示弹出框,让用户输入审核不通原因
var w = WST.open({type: 1,title:"商品不通过原因",shade: [0.6, '#000'],border: [0],
content: '<textarea id="illegalRemarks" rows="7" style="width:96%" maxLength="200"></textarea>',
area: ['500px', '260px'],btn: ['确定', '关闭窗口'],
yes: function(index, layero){
var illegalRemarks = $.trim($('#illegalRemarks').val());
if(illegalRemarks==''){
WST.msg('请输入不通过原因!', {icon: 5});
return;
}
var ll = WST.msg('数据处理中,请稍候...');
$.post(WST.U('admin/goods/batchIllegal'),{ids:ids.join(','),illegalRemarks:illegalRemarks},function(data){
layer.close(w);
layer.close(ll);
var json = WST.toAdminJson(data);
if(json.status>0){
WST.msg(json.msg, {icon: 1});
loadGrid();
}else{
WST.msg(json.msg, {icon: 2});
}
});
}
});
}
function allow(id,type){
var box = WST.confirm({content:"您确定审核通过该商品吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goods/allow'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function initIllegalGrid(){
var h = WST.pageHeight();
var cols = [
{title:'&nbsp;', name:'goodsName', width: 30, renderer: function(val,item,rowIndex){
return "<span class='weixin'><img class='img' style='height:60px;width:60px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'><img class='imged' style='height:200px;width:200px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'></span>";
}},
{title:'商品名称', name:'goodsName', width: 100,sortable:true,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsName']+"</p></span>";
}},
{title:'商品编号', name:'goodsSn' ,width:60,sortable:true},
{title:'所属店铺', name:'shopName' ,width:60,sortable:true},
{title:'所属分类', name:'goodsCatName' ,width:60,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsName']+"</p></span>";
}},
{title:'违规原因', name:'illegalRemarks' ,width:160},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank' href='"+WST.U("home/goods/detail","id="+item['goodsId']+"&key="+item['verfiycode'])+"'><i class='fa fa-search'></i>查看</a> ";
if(WST.GRANT.WGSP_04)h += "<a class='btn btn-blue' href='javascript:allow(" + item['goodsId'] + ",0)'><i class='fa fa-check'></i>审核通过</a> ";
if(WST.GRANT.WGSP_03)h += "<a class='btn btn-red' href='javascript:del(" + item['goodsId'] + ",0)'><i class='fa fa-trash-o'></i>删除</a></div> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-85),indexCol: true, indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/goods/illegalByPage'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'goodsSn',sortStatus:'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
function toolTip(){
WST.toolTip();
}

View File

@ -0,0 +1,41 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goods/goods.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<select id="areaId1" class='j-ipt j-areas hide' level="0" onchange="WST.ITAreas({id:'areaId1',val:this.value,className:'j-areas'});">
<option value="">-商家所在地-</option>
{volist name="areaList" id="vo"}
<option value="{$vo['areaId']}">{$vo['areaName']}</option>
{/volist}
</select>
<input type="text" name="shopName" placeholder='店铺名称/店铺编号' id="shopName" class='j-ipt hide'/>
<select id="cat_0" class='ipt pgoodsCats' level="0" onchange="WST.ITGoodsCats({id:'cat_0',val:this.value,isRequire:false,className:'pgoodsCats'});">
<option value="">-所属分类-</option>
{volist name=":WSTGoodsCats(0)" id="vo"}
<option value="{$vo['catId']}">{$vo['catName']}</option>
{/volist}
</select>
<input type="text" name="goodsName" placeholder='商品名称/商品编号' id="goodsName" class='j-ipt'/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class='fa fa-search'></i>查询</button>
{if WSTGrant('DSHSP_04')}
<button class="btn btn-danger f-right" onclick='javascript:toBatchIllegal()' style='margin-left:10px;'><i class='fa fa-ban'></i>批量不通过</button>
<button class="btn btn-success f-right" onclick='javascript:toBatchAllow()' style='margin-left:10px;'><i class='fa fa-check'></i>批量通过</button>
{/if}
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initAuditGrid();})
</script>
{/block}

View File

@ -0,0 +1,35 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goods/goods.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<select id="areaId1" class='j-ipt j-areas hide' level="0" onchange="WST.ITAreas({id:'areaId1',val:this.value,className:'j-areas'});">
<option value="">-商家所在地-</option>
{volist name="areaList" id="vo"}
<option value="{$vo['areaId']}">{$vo['areaName']}</option>
{/volist}
</select>
<input type="text" name="shopName" placeholder='店铺名称/店铺编号' id="shopName" class='j-ipt hide'/>
<select id="cat_0" class='ipt pgoodsCats' level="0" onchange="WST.ITGoodsCats({id:'cat_0',val:this.value,isRequire:false,className:'pgoodsCats'});">
<option value="">-所属分类-</option>
{volist name=":WSTGoodsCats(0)" id="vo"}
<option value="{$vo['catId']}">{$vo['catName']}</option>
{/volist}
</select>
<input type="text" name="goodsName" placeholder='商品名称/商品编号' id="goodsName" class='j-ipt'/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class='fa fa-search'></i>查询</button>
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initIllegalGrid();})
</script>
{/block}

View File

@ -0,0 +1,51 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goods/goods.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<select id="areaId1" class='j-ipt j-areas hide' level="0" onchange="WST.ITAreas({id:'areaId1',val:this.value,className:'j-areas'});">
<option value="">-商家所在地-</option>
{volist name="areaList" id="vo"}
<option value="{$vo['areaId']}">{$vo['areaName']}</option>
{/volist}
</select>
<input type="text" name="shopName" placeholder='店铺名称/店铺编号' id="shopName" class='j-ipt hide'/>
<select id="cat_0" class='ipt pgoodsCats' level="0" onchange="WST.ITGoodsCats({id:'cat_0',val:this.value,isRequire:false,className:'pgoodsCats'});">
<option value="">-所属分类-</option>
{volist name=":WSTGoodsCats(0)" id="vo"}
<option value="{$vo['catId']}">{$vo['catName']}</option>
{/volist}
</select>
<input type="text" name="goodsName" placeholder='商品名称/商品编号' id="goodsName" class='j-ipt'/>
<input type="text" name="shopName" placeholder='店铺名称' id="shopName" class='j-ipt'/>
<input type="text" id="startDate" name="startDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='开始日期'/>
<input type="text" id="endDate" name="endDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='结束日期'/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class='fa fa-search'></i>查询</button>
<button class="btn btn-primary btn-fixtop f-right" style="margin-left: 10px;" onclick='javascript:toExportSale()'><i class="fa fa-sign-in"></i>导出</button>
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){
var laydate = layui.laydate;
laydate.render({
elem: '#startDate'
});
laydate.render({
elem: '#endDate'
});
})
$(function(){initSaleGrid();})
</script>
{/block}

View File

@ -0,0 +1,95 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goods/goods.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<select id="areaId1" class='j-ipt j-areas hide' level="0" onchange="WST.ITAreas({id:'areaId1',val:this.value,className:'j-areas'});">
<option value="">-商家所在地-</option>
{volist name="areaList" id="vo"}
<option value="{$vo['areaId']}">{$vo['areaName']}</option>
{/volist}
</select>
<input type="text" name="shopName" placeholder='店铺名称/店铺编号' id="shopName" class='j-ipt hide'/>
<select id="cat_0" class='ipt pgoodsCats' level="0" onchange="WST.ITGoodsCats({id:'cat_0',val:this.value,isRequire:false,className:'pgoodsCats'});">
<option value="">-所属分类-</option>
{volist name=":WSTGoodsCats(0)" id="vo"}
<option value="{$vo['catId']}">{$vo['catName']}</option>
{/volist}
</select>
<input type="text" name="goodsName" placeholder='商品名称/商品编号' id="goodsName" class='j-ipt'/>
<input type="text" name="shopName" placeholder='店铺名称' id="shopName" class='j-ipt'/>
<input type="text" id="startDate" name="startDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='开始日期'/>
<input type="text" id="endDate" name="endDate" class="laydate-icon j-ipt" maxLength="20" value='' placeholder='结束日期'/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class='fa fa-search'></i>查询</button>
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
function initShelvesGrid(){
var h = WST.pageHeight();
var cols = [
{title:'&nbsp;', name:'goodsImg', width: 30, renderer: function(val,item,rowIndex){
var thumb = item['goodsImg'];
//thumb = thumb.replace('.','_thumb.');
return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:60px;width:60px;' src='"+WST.conf.IMGURL+"/"+thumb+"/thumb80"
+"'><span class='imged' ><img style='height:180px;width:180px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'></span></span>";
}},
{title:'商品名称', name:'goodsName', width: 120,sortable:true,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsName']+"</p></span>";
}},
{title:'商品编号', name:'goodsSn' ,width:60,sortable:true},
{title:'价格', name:'shopPrice' ,width:20,sortable:true, renderer: function(val,item,rowIndex){
return '¥'+item['shopPrice'];
}},
{title:'所属店铺', name:'shopName' ,width:60,sortable:true},
{title:'申请上架时间', name:'saleTime' ,width:60,sortable:true},
{title:'审核通过时间', name:'createTime' ,width:60,sortable:true},
{title:'所属分类', name:'goodsCatName' ,width:60,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsCatName']+"</p></span>";
}},
{title:'销量', name:'saleNum' ,width:20,sortable:true,align:'center'},
{title:'状态', name:'isSale' ,width:30,renderer: function (val,item,rowIndex){
if(item['isSale']==1){
return "<span class='statu-yes'><i class='fa fa-check-circle'></i> 已上架</span>";
}else{
return "<span class='statu-no'><i class='fa fa-ban'></i>已下架</span>";
}
}},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank' href='"+WST.U("home/goods/detail","id="+item['goodsId'])+"'><i class='fa fa-search'></i>查看</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-85),indexCol: true, indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/goods/shelvesByPage'), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'goodsSn',sortStatus:'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
$(function(){
var laydate = layui.laydate;
laydate.render({
elem: '#startDate'
});
laydate.render({
elem: '#endDate'
});
})
$(function(){initShelvesGrid();})
</script>
{/block}

View File

@ -0,0 +1,126 @@
{extend name="base" /}
{block name="js"}
<script src="__ADMIN__/goodsappraises/goodsappraises.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<script type="text/javascript" src="__STATIC__/plugins/raty/jquery.raty.min.js"></script>
<script>
$(function(){
var options = {
hints : ['很不满意', '不满意', '一般', '满意', '非常满意'],
width:200,
targetKeep: true,
starHalf:'__STATIC__/plugins/raty/img/star-half-big.png',
starOff:'__STATIC__/plugins/raty/img/star-off-big.png',
starOn:'__STATIC__/plugins/raty/img/star-on-big.png',
cancelOff: '__STATIC__/plugins/raty/img/cancel-off-big.png',
cancelOn: '__STATIC__/plugins/raty/img/cancel-on-big.png'
}
options.target='#goodsScore_hint';
options.score='{$data['goodsScore']}';
$('.goodsScore').raty(options);
options.target='#timeScore_hint';
options.score='{$data['timeScore']}';
$('.timeScore').raty(options);
options.target='#serviceScore_hint';
options.score='{$data['serviceScore']}';
$('.serviceScore').raty(options);
editInit();
});
</script>
<form id="goodsAppraisesForm" autocomplete="off">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>商品:</th>
<td>
<img src='__IMGURL__/{$data["goodsImg"]}' width='50' style="float:left;" />&nbsp;
<p style="float:left;height:50px;line-height:25px;width:245px;overflow:hidden;margin-left:5px;">{$data['goodsName']}</p>
</td>
</tr>
<tr>
<th>所属订单:</th>
<td>
{$data['orderNo']}
</td>
</tr>
<tr>
<th>用户:</th>
<td>
{$data['loginName']}
</td>
</tr>
<tr>
<th>评价:</th>
<td>
<div style='width:500px;'>
<div style='float:left;width:70px;'>商品评分:</div>
<div style='float:left;width:430px;'>
<div class="goodsScore" class="ipt" style='float:left'></div>
<div id="goodsScore_hint" style='float:left'></div>
</div>
</div>
<div id="score_error"></div>
<div style='width:500px;'>
<div style='float:left;width:70px;'> 时效评分:</div>
<div style='float:left;width:430px;'>
<div class="timeScore" class="ipt" style='float:left'></div>
<div id="timeScore_hint" style='float:left'></div>
</div>
</div>
<div style='width:500px;'>
<div style='float:left;width:70px;'>服务评分:</div>
<div style='float:left;width:430px;'>
<div class="serviceScore" class="ipt" style='float:left'></div>
<div id="serviceScore_hint" style='float:left'></div>
</div>
</div>
</td>
</tr>
<tr>
<th>状态:</th>
<td class='layui-form'>
<input type="checkbox" id="isShow" {if $data['isShow']==1}checked{/if} name="isShow" value="1" class="ipt" lay-skin="switch" lay-filter="isShow" lay-text="显示|隐藏">
</tr>
<tr>
<th>评语:</th>
<td>
<textarea style="width:300px;height:100px" id="content" name="content" class="ipt">{$data['content']}</textarea>
</td>
</tr>
<tr>
<th>附件:</th>
<td>
<div id="appraise-img">
{if !empty($data['images'])}
{volist name="$data['images']" id="img"}
<img src="__IMGURL__/{$img}/thumb80" layer-src="__IMGURL__/{$img}" width="50" />
{/volist}
{/if}
</div>
</td>
</tr>
<tr>
<td colspan='2' align='center' class="wst-bottombar">
<input type="hidden" name="id" id="id" class="ipt" value="{$data['id']+0}" />
<button type="submit" class='btn btn-primary btn-mright'><i class="fa fa-check"></i>提交</button>
<button type="button" class='btn' onclick="javascript:history.go(-1)"><i class="fa fa-angle-double-left"></i>返回</button>
</td>
</tr>
</table>
</form>
<script>
$(function(){
parent.showImg({photos: $('#appraise-img')});
});
</script>
{/block}

View File

@ -0,0 +1,139 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'商品主图', name:'goodsImg', width: 30, renderer: function(val,item,rowIndex){
var thumb = item['goodsImg'];
//thumb = thumb.replace('.','_thumb.');
return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:40px;width:40px;' src='"+WST.conf.IMGURL+"/"+thumb
+"'><span class='imged' style='left:45px;'><img style='height:150px;width:150px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'></span></span>";
}},
{title:'订单号', name:'orderNo',sortable: true, width: 90},
{title:'商品', name:'goodsName',sortable: true, width: 100,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsName']+"</p></span>";
}},
{title:'商品评分', name:'goodsScore',sortable: true, width: 80, renderer: function(val,item,rowIndex){
var s="<div style='line-height:28px;'>";
for(var i=0;i<val;++i){
s +="<img src='"+WST.conf.ROOT+"/hyhproject/admin/view/goodsappraises/icon_score_yes.png'>";
}
s += "</div>";
return s;
}},
{title:'时效评分', name:'timeScore',sortable: true, width: 80, renderer: function(val,item,rowIndex){
var s="<div style='line-height:28px;'>";
for(var i=0;i<val;++i){
s +="<img src='"+WST.conf.ROOT+"/hyhproject/admin/view/goodsappraises/icon_score_yes.png'>";
}
s += "</div>";
return s;
}},
{title:'服务评分', name:'serviceScore',sortable: true, width: 80, renderer: function(val,item,rowIndex){
var s="<div style='line-height:28px;'>";
for(var i=0;i<val;++i){
s +="<img src='"+WST.conf.ROOT+"/hyhproject/admin/view/goodsappraises/icon_score_yes.png'>";
}
s += "</div>";
return s;
}},
{title:'评价内容', name:'content', width: 155},
{title:'状态', name:'isShow', width: 20,sortable: true, renderer: function(val,item,rowIndex){
return (val==0)?"<span class='statu-no'><i class='fa fa-ban'></i> 隐藏</span>":"<span class='statu-yes'><i class='fa fa-check-circle'></i> 显示</span></h3>";
}},
{title:'操作', name:'' ,width:95, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.PJGL_02)h += "<a class='btn btn-blue' href='"+WST.U('admin/goodsappraises/toEdit','id='+item['id'])+"'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.PJGL_03)h += "<a class='btn btn-red' href='javascript:toDel(" + item['id'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol: true,indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/goodsappraises/pageQuery'), fullWidthRows: true, autoLoad: true,
remoteSort:true ,
sortName: 'orderNo',
sortStatus: 'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsappraises/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function loadGrid(){
var query = WST.getParams('.query');
query.page = 1;
mmg.load(query);
}
function editInit(){
/* 表单验证 */
$('#goodsAppraisesForm').validator({
fields: {
content: {
rule:"required;length(3~50)",
msg:{length:"评价内容为3-50个字",required:"评价内容为3-50个字"},
tip:"评价内容为3-50个字",
ok:"",
},
score: {
rule:"required",
msg:{required:"评分必须大于0"},
ok:"",
target:"#score_error",
},
},
valid: function(form){
var params = WST.getParams('.ipt');
//获取修改的评分
params.goodsScore = $('.goodsScore').find('[name=score]').val();
params.timeScore = $('.timeScore').find('[name=score]').val();
params.serviceScore = $('.serviceScore').find('[name=score]').val();
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsappraises/'+((params.id==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('Admin/goodsappraises/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
function toolTip(){
$('body').mousemove(function(e){
var windowH = $(window).height();
if(e.pageY >= windowH*0.8){
var top = windowH*0.233;
$('.imged').css('margin-top',-top);
}else{
var top = windowH*0.06;
$('.imged').css('margin-top',-top);
}
});
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

View File

@ -0,0 +1,34 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodsappraises/goodsappraises.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<div id="query" style="float:left;">
<select id="areaId1" class='query' level="0" onchange="WST.ITAreas({id:'areaId1',val:this.value,className:'query'});" >
<option value="-1">-请选择地区-</option>
{foreach $area1 as $v}
<option value="<?=$v['areaId']?>"><?=$v['areaName']?></option>
{/foreach}
</select>
<input type="text" name="shopName" placeholder='店铺名称' id="shopName" class="query" />
<input type="text" name="goodsName" placeholder='商品名称' id="goodsName" class="query" />
<button type="button" class='btn btn-primary btn-mright' onclick="javascript:loadGrid()"><i class="fa fa-search"></i>查询</button>
</div>
<div style="clear:both"></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){
initGrid();
});
</script>
{/block}

View File

@ -0,0 +1,276 @@
var grid,oldData = {},oldorderData = {};
function initGrid(){
grid = $('#maingrid').WSTGridTree({
url:WST.U('admin/goodscats/pageQuery'),
pageSize:10000,
pageSizeOptions:[10000],
height:'99%',
width:'100%',
minColToggle:6,
delayLoad :true,
rownumbers:true,
columns: [
{ display: '分类名称', width: 350,name: 'catName', id:'catId', align: 'left',isSort: false,render: function (item)
{
oldData[item.catId] = item.catName;
return '<input type="text" size="40" value="'+item.catName+'" onblur="javascript:editName('+item.catId+',this)"/>';
}},
{ display: '自营是否显示', width: 70, name: 'isSelfShow',isSort: false,
render: function (item)
{
return '<input type="checkbox" '+((item.isSelfShow==1)?"checked":"")+' class="ipt" lay-skin="switch" lay-filter="isSelfShow" data="'+item.catId+'" lay-text="显示|隐藏">';
}
},
{ display: '推荐楼层', width: 70, name: 'isFloor',isSort: false,
render: function (itemf)
{
return '<input type="checkbox" '+((itemf.isFloor==1)?"checked":"" )+' class="ipt" lay-skin="switch" lay-filter="isFloor" data="'+itemf.catId+'" lay-text="是|否">';
}
},
{ display: '是否显示', width: 70, name: 'isShow',isSort: false,
render: function (item)
{
return '<input type="checkbox" '+((item.isShow==1)?"checked":"")+' class="ipt" lay-skin="switch" lay-filter="isShow" data="'+item.catId+'" lay-text="显示|隐藏">';
}
},
{ display: '排序号', name: 'catSort',width: 50,isSort: false,render: function (item)
{
oldorderData[item.catId] = item.catSort;
return '<input type="text" style="width:50px" value="'+item.catSort+'" onblur="javascript:editOrder('+item.catId+',this)"/>';
}},
{ display: '佣金', width: 50, name: 'commissionRate',isSort: false,
render: function (item)
{
return item["commissionRate"]+'%';
}
},
{ display: '质保金', width: 50, name: 'payDeposit',isSort: false,
render: function (item)
{
return item["payDeposit"];
}
},
{ display: '操作', name: 'op',width: 170,isSort: false,
render: function (rowdata){
var h = "";
if(WST.GRANT.SPFL_01)h += "<a class='btn btn-blue' href='javascript:toEdit("+rowdata["catId"]+",0)'><i class='fa fa-plus'></i>新增子分类</a> ";
if(WST.GRANT.SPFL_02)h += "<a class='btn btn-blue' href='javascript:toEdit("+rowdata["parentId"]+","+rowdata["catId"]+")'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.SPFL_03)h += "<a class='btn btn-red' href='javascript:toDel("+rowdata["parentId"]+","+rowdata["catId"]+")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
],
callback:function(){
layui.form.render();
}
});
layui.form.on('switch(isSelfShow)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsSelfShow(id, 1);
}else{
toggleIsSelfShow(id, 0);
}
});
layui.form.on('switch(isShow)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsShow(id, 1);
}else{
toggleIsShow(id, 0);
}
});
layui.form.on('switch(isFloor)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsFloor(id, 1);
}else{
toggleIsFloor(id, 0);
}
});
}
function toggleIsSelfShow(id,isSelfShow){
if(!WST.GRANT.SPFL_02)return;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodscats/editiIsSelfShow'),{id:id,isSelfShow:isSelfShow},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
grid.reload(id);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toggleIsFloor(id,isFloor){
if(!WST.GRANT.SPFL_02)return;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodscats/editiIsFloor'),{id:id,isFloor:isFloor},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
grid.reload(id);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toggleIsShow(id,isShow){
if(!WST.GRANT.SPFL_02)return;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodscats/editiIsShow'),{id:id,isShow:isShow},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
grid.reload(id);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(pid,id){
$('#goodscatsForm')[0].reset();
if(id>0){
$.post(WST.U('admin/goodscats/get'),{id:id},function(data,textStatus){
var json = WST.toAdminJson(data);
if(json){
WST.setValues(json);
layui.form.render();
if(json.catImg){
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.catImg+'" height="70px" />');
}else{
$('#preview').html('');
}
editsBox(id);
}
});
}else{
WST.setValues({parentId:pid,catName:'',isShow:1,isFloor:0,catSort:0,catImg:''});
$('#preview').html('');
layui.form.render();
editsBox(id);
}
}
var isInitUpload = false;
function editsBox(id,v){
if(!isInitUpload)initUpload();
var title =(id>0)?"修改商品分类":"新增商品分类";
var box = WST.open({title:title,type:1,content:$('#goodscatsBox'),area: ['465px', '400px'],btn:['确定','取消'],
end:function(){$('#goodscatsBox').hide();},yes:function(){
$('#goodscatsForm').submit();
}});
$('#goodscatsForm').validator({
fields: {
catName: {
tip: "请输入商品分类名称",
rule: '商品分类名称:required;length[~20];'
},
commissionRate: {
tip: "请输入分类的佣金",
rule: '分类的佣金:required;'
},
catSort: {
tip: "请输入排序号",
rule: '排序号:required;length[~8];'
},
payDeposit: {
tip: "请输入质保金",
rule: '分类的质保金:required;length[~20];'
},
},
valid: function(form){
var params = WST.getParams('.ipt');
params.id = id;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodscats/'+((id>0)?"edit":"add")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
$('#goodscatsBox').hide();
layer.close(box);
grid.reload(params.parentId);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
function toDel(pid,id){
var box = WST.confirm({content:"您确定要删除该商品分类并下架该分类下的所有商品吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodscats/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg(json.msg,{icon:1});
layer.close(box);
grid.reload(pid);
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function initUpload(){
isInitUpload = true;
//文件上传
WST.upload({
pick:'#catFilePicker',
formData: {dir:'goodscats'},
accept: {extensions: 'gif,jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'},
callback:function(f){
var json = WST.toAdminJson(f);
if(json.status==1){
$('#uploadMsg').empty().hide();
//将上传的图片路径赋给全局变量
$('#catImg').val(json.savePath+json.name);
$('#preview').html('<img src="'+WST.conf.IMGURL+'/'+json.savePath+json.thumb+'" height="75" />');
}else{
WST.msg(json.msg,{icon:2});
}
},
progress:function(rate){
$('#uploadMsg').show().html('已上传'+rate+"%");
}
});
}
function editName(id,obj){
if($.trim(obj.value)=='' || $.trim(obj.value)==oldData[id]){
obj.value = oldData[id];
return;
}
$.post(WST.U('admin/goodscats/editName'),{id:id,catName:obj.value},function(data,textStatus){
var json = WST.toAdminJson(data);
if(json.status=='1'){
oldData[id] = $.trim(obj.value);
WST.msg(json.msg,{icon:1});
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function editOrder(id,obj){
if($.trim(obj.value)=='' || $.trim(obj.value)==editOrder[id]){
obj.value = editOrder[id];
return;
}
$.post(WST.U('admin/goodscats/editOrder'),{id:id,catSort:obj.value},function(data,textStatus){
var json = WST.toAdminJson(data);
if(json.status=='1'){
editOrder[id] = $.trim(obj.value);
WST.msg(json.msg,{icon:1});
}else{
WST.msg(json.msg,{icon:2});
}
});
}

View File

@ -0,0 +1,80 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/webuploader/webuploader.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/wstgridtree.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodscats/goodscats.js?v={$v}" type="text/javascript"></script>
<script type='text/javascript' src='__STATIC__/plugins/webuploader/webuploader.js?v={$v}'></script>
<script>
$(function(){initGrid();})
</script>
{/block}
{block name="main"}
<style>.mmGrid{border-bottom:0px;}</style>
{if WSTGrant('SPFL_01')}
<div class="wst-toolbar">
<button class="btn btn-success f-right" onclick='javascript:toEdit(0)'><i class='fa fa-plus'></i>新增</button>
<div style='clear:both'></div>
</div>
{/if}
<div class='wst-grid'>
<div class='mmGrid layui-form' id="maingrid"></div>
</div>
<div id='goodscatsBox' style='display:none' class='layui-form'>
<form id='goodscatsForm' autocomplete="off">
<input type='hidden' id='parentId' name="parentId" class='ipt'/>
<table class='wst-form wst-box-top'>
<tr>
<th width='100'>商品分类名称<font color='red'>*</font></th>
<td><input type='text' id='catName' name="catName" class='ipt' maxLength='20' style='width:200px;'/></td>
</tr>
<tr>
<th>图标:</th>
<td>
<div id='catFilePicker'>上传图标</div><span id='uploadMsg'></span>
<input type='hidden' id='catImg' name="catImg" class="ipt" />
</td>
</tr>
<tr>
<th>预览图:</th>
<td><div style="min-height:70px;" id="preview"></div></td>
</tr>
<tr>
<th width='100'>佣金<font color='red'>*</font></th>
<td height='24'>
<input type="text" id="commissionRate" name="commissionRate" class="ipt" value="-1" data-target="#msg_commissionRate" size='7' class='ipt'>%<span id='msg_commissionRate'>-1代表继承上级佣金</span>
</td>
</tr>
<tr>
<th width='100'>应交质保金<font color='red'>*</font></th>
<td height='50'>
<input type="text" id="payDeposit" name="payDeposit" class="ipt" value="-1" data-target="#payDeposit" size='7' class='ipt'><span id='payDeposit'>-1代表继承上级质保金</span>
</td>
</tr>
<tr>
<th width='100'>是否显示<font color='red'>*</font></th>
<td height='24'>
<input type="checkbox" id="isShow" name="isShow" value="1" class="ipt" lay-skin="switch" lay-filter="isShow1" lay-text="显示|隐藏">
</td>
</tr>
<tr>
<th width='100'>是否首页楼层<font color='red'>*</font></th>
<td height='24'>
<input type="checkbox" id="isFloor" name="isFloor" value="1" class="ipt" lay-skin="switch" lay-filter="isFloor1" lay-text="是|否">
</td>
</tr>
<tr>
<th width='100'>楼层副标题<font color='red'> </font></th>
<td><input type='text' id='subTitle' name='subTitle' class='ipt' style='width:200px;' /></td>
</tr>
<tr>
<th width='100'>排序号<font color='red'>*</font></th>
<td><input type='text' id='catSort' name='catSort' class='ipt' style='width:60px;' onkeypress='return WST.isNumberKey(event);' onkeyup="javascript:WST.isChinese(this,1)" maxLength='10' value='0'/></td>
</tr>
</table>
</form>
</div>
{/block}

View File

@ -0,0 +1,46 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodsclassify/goodsclassify.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<input type='hidden' id="classifyId" value='{$id}'/>
<div class="wst-toolbar">
{if WSTGrant('DQGL_01')}
<button class="btn btn-primary f-right btn-mright" onclick='javascript:toEdits(0,{$id})'><i class='fa fa-plus'></i>新增</button>
{/if}
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='attrBox' style='display:none'>
<form id="attrForm">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>
<input type="hidden" id="classifyId" value='{$id}' class="ipt" />
所属商品分类<font color='red'>*</font></th>
<td id="bcat_0_box">
<select id="catId" class='ipt goodsCats' level="0" onchange="WST.ITGoodsCats({id:'bcat_0',val:this.value,isRequire:false,className:'goodsCats'});" data-rule='所属商品分类:required;' data-target="#msg_bcat_0">
<option value="">-请选择-</option>
{volist name=":WSTGoodsCats(0)" id="vo"}
<option value="{$vo['catId']}">{$vo['catName']}</option>
{/volist}
</select>
<span class='msg-box' id='msg_bcat_0' style='color:red;'>(至少选择一个商品分类)</span>
</td>
</tr>
</table>
</form>
</div>
<script>
$(function(){initcatDetailGrid();})
</script>
{/block}

View File

@ -0,0 +1,52 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodsclassify/goodsclassify.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
{$classify} : 查看活动分类页
<input type="hidden" value="{$classifyId}" id="classifyId">
<button class="btn btn-primary f-right btn-mright" onclick='javascript:toAddCats(0,{$classifyId})'><i class='fa'></i>新增活动</button>
<button class="btn btn-info f-right btn-mright" onclick='javascript:history.back()'><i class='fa'></i>返回</button>
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='attrBox' style='display:none'>
<form id="attrForm">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>
活动名称<font color='red'>*</font></th>
<td>
<input type="text" name="recomName" id="recomName" placeholder="填写分类名称" class="jipt">
</td></tr>
<tr >
<th width='150' >排序号码<font color='red'>*</font></th>
<td >
<input type="text" name="recomOrder" class="jipt" id="recomOrder" placeholder="填写排序序号" style="margin-top: 20px;">
<p>排序号越大越靠前</p>
</td>
</tr>
<tr class="wst-order-rate" >
<th width='120'>有效时间<font color='red'>*</font></th>
<td colspan='3'>
<input type='text' id='startTime' name='startTime' class='jipt laydate-icon' onclick="laydate({format: 'YYYY-MM-DD hh:mm:ss',istime:true})" data-rule="开始日期: required;datetime;"/>
<input type='text' id='endTime' name='endTime' class='jipt laydate-icon' onclick="laydate({format: 'YYYY-MM-DD hh:mm:ss',istime:true})" data-rule="结束日期: required;datetime;match(gt, startTime, datetime)"/>
</td>
</tr>
</table>
</form>
</div>
<script>
$(function(){initCatsGrid();})
</script>
{/block}

View File

@ -0,0 +1,25 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodsclassify/goodsclassify.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<input type='hidden' id="catId" value='{$id}'/>
<div class="wst-toolbar">
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initDetailGrid();})
</script>
{/block}

View File

@ -0,0 +1,494 @@
var mmg;
//获取商品总分类首页
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'商品名称', name:'goodsclassifyName', width: 160,sortable:true,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsclassifyName']+"</p></span>";
}},
{title:'排序',name:'orderby',width:100,sortale:true},
{title:'时间',name:'create_time',width:100,sortale:true},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank' href='javascript:catdetail(" + item['goodsclassifyId'] + ")'><i class='fa fa-search'></i>绑定分类</a> ";
if(WST.GRANT.DSHSP_04)h += "<a class='btn btn-blue' href='javascript:toEdit(" + item['goodsclassifyId'] + ",0)'><i class='fa fa-check'></i>修改</a> ";
if(WST.GRANT.DSHSP_04)h += "<a class='btn btn-blue' target='_blank' href='javascript:muji(" + item['goodsclassifyId'] + ")'><i class='fa fa-search'></i>设置活动页</a> ";
if(WST.GRANT.DSHSP_03)h += "<a class='btn btn-red' href='javascript:del(" + item['goodsclassifyId'] + ",0)'><i class='fa fa-trash-o'></i>删除</a>";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol:true, cols: cols,method:'POST',
url: WST.U('admin/goodsclassify/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
//-修改商品总分类---------------//
function toEdit(goodsclassifyId){
$('#attrForm').get(0).reset();
$.post(WST.U('admin/goodsclassify/get'),{goodsclassifyId:goodsclassifyId},function(data,textStatus){
var json = WST.toAdminJson(data);
WST.setValues(json);
var title =(goodsclassifyId==0)?"新增":"编辑";
var box = WST.open({title:title,type:1,content:$('#attrBox'),area: ['750px', '320px'],btn:['确定','取消'],
end:function(){$('#attrBox').hide();},yes:function(){
$('#attrForm').submit();
}});
$('#attrForm').validator({
fields: {
'goodsclassifyName': {rule:"required",msg:{required:'请输入属性名称'}},
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/'+((params.goodsclassifyId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
$('#attrBox').hide();
loadGrid();
layer.close(box);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
});
}
//删除商品总分类
function del(goodsclassifyId){
var box = WST.confirm({content:"您确定要删除该属性吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/del'),{goodsclassifyId:goodsclassifyId},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
//查看总分类下的商品分类
function catdetail(goodsclassifyId){
location.href=WST.U('admin/goodsclassify/catdetail','goodsclassifyId='+goodsclassifyId);
}
//获取商品分类的列表
function initcatDetailGrid(){
var classifyId=$('#classifyId').val();
var h = WST.pageHeight();
var cols = [
{title:'商品名称', name:'catName', width: 160,sortable:true,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['catName']+"</p></span>";
}},
{title:'时间',name:'createTime',width:100,sortale:true},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank' href='javascript:detail(" + item['catId'] + ")'><i class='fa fa-search'></i>查看</a> ";
if(WST.GRANT.DSHSP_03)h += "<a class='btn btn-red' href='javascript:catDel(" + item['catId'] + ","+classifyId+")'><i class='fa fa-trash-o'></i>删除</a>";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol:true, cols: cols,method:'POST',
url: WST.U('admin/goodsclassify/catdetailPage','classifyId='+classifyId), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
//查看总分类下的商品
function detail(catId){
location.href=WST.U('admin/goodsclassify/detail','catId='+catId);
}
//
function initDetailGrid(){
var catId=$('#catId').val();
var h = WST.pageHeight();
var cols = [
{title:'&nbsp;', name:'goodsImg', width: 30, renderer: function(val,item,rowIndex){
var thumb = item['goodsImg'];
//thumb = thumb.replace('.','_thumb.');
return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:60px;width:60px;' src='"+WST.conf.IMGURL+"/"+thumb+"/thumb80"
+"'><span class='imged' ><img style='height:180px;width:180px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'></span></span>";
}},
{title:'商品名称', name:'goodsName', width: 160,sortable:true,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsName']+"</p></span>";
}},
{title:'商品编号', name:'goodsSn' ,width:60,sortable:true},
{title:'价格', name:'shopPrice' ,width:20,sortable:true, renderer: function(val,item,rowIndex){
return '¥'+item['shopPrice'];
}},
{title:'所属店铺', name:'shopName' ,width:60,sortable:true},
{title:'所属分类', name:'goodsCatName' ,width:60,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsCatName']+"</p></span>";
}},
{title:'销量', name:'saleNum' ,width:20,sortable:true,align:'center'},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank' href='"+WST.U("home/goods/detail","id="+item['goodsId'])+"'><i class='fa fa-search'></i>查看</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-85),indexCol: true, indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/goodsclassify/detailByPage','catId='+catId), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'goodsSn',sortStatus:'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
//给商品总分类新增商品分类
function toEdits(catId,classifyId){
$('#attrForm').get(0).reset();
$.post(WST.U('admin/goodsclassify/gets'),{catId:catId,classifyId:classifyId},function(data,textStatus){
var json = WST.toAdminJson(data);
WST.setValues(json);
var title =(catId==0)?"新增":"编辑";
var box = WST.open({title:title,type:1,content:$('#attrBox'),area: ['750px', '320px'],btn:['确定','取消'],
end:function(){$('#attrBox').hide();},yes:function(){
$('#attrForm').submit();
}});
$('#attrForm').validator({
fields: {
'goodsclassifyName': {rule:"required",msg:{required:'请输入属性名称'}},
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/add_cat'),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
$('#attrBox').hide();
loadGrid();
layer.close(box);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
});
}
//删除商品总分类下的商品分类
function catDel(catId,classifyId){
var box = WST.confirm({content:"您确定要删除该属性吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/catdel'),{catId:catId,classifyId:classifyId},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
//去往设置活动页
function muji(goodsclassifyId){
location.href=WST.U('admin/goodsclassify/setdetail','goodsclassifyId='+goodsclassifyId);
}
//获取活动页列表
function initsetDetailGrid(){
var classifyId=$('#classifyId').val();
var h = WST.pageHeight();
var cols = [
{title:'商品ID',name:'goodsId',width:30,sortale:true},
{title:'商品名称', name:'goodsName', width: 180,sortable:true},
{title:'商品分类',name:'recomName',width:60,sortale:true},
{title:'排序',name:'goodsOrder',width:40,sortale:true,align:'center',renderer:function(val, item, rowIndex){
return '<span style="cursor:pointer;" ondblclick="changeSort(this,'+item["recomGoodsId"]+');">'+val+'</span>';
}},
{title:'价格',name:'shopPrice',width:50,sortale:true,align:'center'},
{title:'时间',name:'createTime',width:100,sortale:true,align:'center'},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank' href='"+WST.U("home/goods/detail","id="+item['goodsId'])+"'><i class='fa fa-search'></i>查看</a> ";
if(WST.GRANT.DSHSP_03)h += "<a class='btn btn-red' href='javascript:goodsDel(" + item['recomGoodsId'] + ")'><i class='fa fa-trash-o'></i>删除</a>";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol:true, cols: cols,method:'POST',
url: WST.U('admin/goodsclassify/setdetailPage','classifyId='+classifyId), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
function loadGrid(){
var params = WST.getParams('.j-ipt');
params.page = 1;
mmg.load(params);
}
//删除活动分类的商品
function goodsDel(recomGoodsId){
var box = WST.confirm({content:"您确定要删除该属性吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/goodsDel'),{recomGoodsId:recomGoodsId},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
//查看活动页的活动分类
function cats(classifyId){
location.href=WST.U('admin/goodsclassify/cats','classifyId='+classifyId);
}
// 查看、新增活动页的活动分类列表
function initCatsGrid(){
var classifyId=$('#classifyId').val();
var h = WST.pageHeight();
var cols = [
{title:'所属分类', name:'goodsclassifyName' ,width:60,sortable:true},
{title:'活动名称', name:'recomName', width: 60,sortable:true},
{title:'活动排序', name:'recomOrder' ,width:60,sortable:true,align:'center'},
{title:'开始时间', name:'startTime' ,width:80,sortable:true,align:'center'},
{title:'结束时间', name:'endTime' ,width:80,sortable:true,align:'center'},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank'href='javascript:toAddCats(" + item['recomId'] + ")'><i class='fa fa-check'></i>修改</a> ";
h += "<a class='btn btn-blue' target='_blank'href='javascript:catsDel(" + item['recomId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: (h-85),indexCol: true, indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/goodsclassify/catsPage','classifyId='+classifyId), fullWidthRows: true, autoLoad: true,remoteSort: true,sortName:'goodsSn',sortStatus:'desc',
plugins: [
$('#pg').mmPaginator({})
]
});
}
//添加活动页的活动分类
function toAddCats(recomId,classifyId){
var laydate = layui.laydate;
laydate.render({
elem: '#startTime',
type: 'datetime'
});
laydate.render({
elem: '#endTime',
type: 'datetime'
});
$('#attrForm').get(0).reset();
$.post(WST.U('admin/goodsclassify/getCats'),{recomId:recomId},function(data,textStatus){
var json = WST.toAdminJson(data);
WST.setValues(json);
layui.form.render();
var title =(recomId==0)?"新增":"编辑";
var box = WST.open({title:title,type:1,content:$('#attrBox'),area: ['750px', '320px'],btn:['确定','取消'],
end:function(){$('#attrBox').hide();},yes:function(){
$('#attrForm').submit();
}});
$('#attrForm').validator({
fields: {
'goodsclassifyName': {rule:"required",msg:{required:'请输入属性名称'}},
},
valid: function(form){
var params = WST.getParams('.jipt');
params.classifyId=classifyId;
params.recomId=recomId;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/'+((params.recomId==0)?"addCats":"editCats")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
$('#attrBox').hide();
loadGrid();
layer.close(box);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
});
}
//删除活动设置页的活动分类
function catsDel(recomId){
var box = WST.confirm({content:"您确定要删除该属性吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/catsDel'),{recomId:recomId},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='2'){
var con = WST.confirm({content:"此活动下有活动商品,确定连活动商品一起删除吗",yes:function(){
$.post(WST.U('admin/goodsclassify/catsDel'),{recomId:recomId,m:2},function(data,textStatus){
var js= WST.toAdminJson(data);
if(js.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(con);
loadGrid();
}else{
WST.msg(js.msg,{icon:2});
}
})
}})
}else if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
//查看设置活动页的推荐商品
function recom(goodsclassifyId){
location.href=WST.U('admin/goodsclassify/recom','goodsclassifyId='+goodsclassifyId);
}
//设置活动页、推荐商品的商品列表
function initrecomDetailGrid(){
var classifyId=$('#classifyId').val();
var h = WST.pageHeight();
var cols = [
{title:'商品ID',name:'goodsId',width:30,sortale:true},
{title:'商品名称', name:'goodsName', width: 180,sortable:true},
{title:'排序',name:'goodsOrder',width:100,sortale:true,align:'center',renderer:function(val, item, rowIndex){
return '<span style="cursor:pointer;" ondblclick="changeSort(this,'+item["recomActiveId"]+');">'+val+'</span>';
}},
{title:'价格',name:'shopPrice',width:100,sortale:true,align:'center'},
{title:'时间',name:'createTime',width:100,sortale:true,align:'center'},
{title:'操作', name:'' ,width:150, align:'center', renderer: function(val,item,rowIndex){
var h = "";
h += "<a class='btn btn-blue' target='_blank' href='"+WST.U("home/goods/detail","id="+item['goodsId'])+"'><i class='fa fa-search'></i>查看</a> ";
if(WST.GRANT.DSHSP_03)h += "<a class='btn btn-red' href='javascript:recomActiveDel(" + item['recomActiveId'] + ")'><i class='fa fa-trash-o'></i>删除</a>";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol:true, cols: cols,method:'POST',
url: WST.U('admin/goodsclassify/recomPage','classifyId='+classifyId), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
//删除活动分类的商品
function recomActiveDel(recomActiveId){
var box = WST.confirm({content:"您确定要删除该属性吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/recomActiveDel'),{recomActiveId:recomActiveId},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
//添加设置活动页的推荐商品
function mujiGoods(recomActiveId,classifyId){
var laydate = layui.laydate;
$('#goodsForm').get(0).reset();
$.post(WST.U('admin/goodsclassify/getrecomActive'),{recomActiveId:recomActiveId},function(data,textStatus){
var json = WST.toAdminJson(data);
WST.setValues(json);
var title ="新增";
var box = WST.open({title:title,type:1,content:$('#goodsBox'),area: ['750px', '320px'],btn:['确定','取消'],
end:function(){$('#goodsBox').hide();},yes:function(){
$('#goodsForm').submit();
}});
$('#goodsForm').validator({
fields: {
'goodsclassifyName': {rule:"required",msg:{required:'请输入属性名称'}},
},
valid: function(form){
var params = WST.getParams('.ipt');
params.classifyId=classifyId;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/addrecomActive'),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
$('#goodsBox').hide();
loadGrid();
layer.close(box);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
});
}
//姓曾活动设置页/活动商品
function toAddGoods(recomGoodsId){
var laydate = layui.laydate;
laydate.render({
elem: '#startTime',
type: 'datetime'
});
laydate.render({
elem: '#endTime',
type: 'datetime'
});
$('#goodsForm').get(0).reset();
$.post(WST.U('admin/goodsclassify/getGoods'),{recomGoodsId:recomGoodsId},function(data,textStatus){
var json = WST.toAdminJson(data);
WST.setValues(json);
var title ="新增";
var box = WST.open({title:title,type:1,content:$('#goodsBox'),area: ['750px', '320px'],btn:['确定','取消'],
end:function(){$('#goodsBox').hide();},yes:function(){
$('#goodsForm').submit();
}});
$('#goodsForm').validator({
fields: {
'recomId': {rule:"required",msg:{required:'请选择分类名称'}},
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsclassify/addGoods'),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
$('#attrBox').hide();
loadGrid();
layer.close(box);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
});
}

View File

@ -0,0 +1,48 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodsclassify/goodsclassify.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
{if WSTGrant('SPSX_01')}
<button class="btn btn-primary f-right" onclick="javascript:toEdit(0);"><i class='fa fa-plus'></i>新增</button>
{/if}
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='attrBox' style='display:none'>
<form id="attrForm">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>
<input type="hidden" id="goodsclassifyId" value="" class="ipt" />
商品总分类ID<font color='red'>*</font></th>
</tr>
<tr>
<th>商品总分类名称<font color='red'>*</font></th>
<td>
<input type="text" id="goodsclassifyName" name="goodsclassifyName" class="ipt" maxLength='20'/>
</td>
</tr>
<tr>
<th>商品分类序号<font>*</font></th>
<td>
<input type="text" id="orderby" name="orderby" class="ipt" maxLength='20'/>
数字越大越靠前
</td>
</tr>
</table>
</form>
</div>
<script>
$(function(){initGrid();})
</script>
{/block}

View File

@ -0,0 +1,67 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodsclassify/goodsclassify.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<input type='hidden' id="classifyId" value='{$id}'/>
<div class="wst-toolbar">
{$result} : 推荐商品详情页
<input type="text" name="goodsId" placeholder='商品ID' id="goodsId" class='j-ipt' style="width: 100px;margin-left: 20px;"/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class="fa fa-search"></i>查询</button>
{if WSTGrant('DQGL_01')}
<button class="btn btn-primary f-right btn-mright" onclick='javascript:mujiGoods(0,{$id})'><i class='fa fa-plus'></i>新增商品</button>
<button class="btn btn-info f-right btn-mright" onclick='javascript:history.back()'><i class='fa'></i>返回</button>
{/if}
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='goodsBox' style='display:none'>
<form id="goodsForm">
<table class='wst-form wst-box-top'>
<tr >
<th width='150'>填写商品ID<font color='red'>*</font></th>
<td >
<textarea type="text" name="goodsId" class="ipt" id="goodsId" placeholder="填写商品ID:批量添加商品,请用英文逗号隔开" style="margin-top: 10px;height: 100px;">
</textarea>
</td>
</tr>
</table>
</form>
</div>
<script>
var oldSort;
function changeSort(t,id){
//alert(id);
$(t).attr('ondblclick'," ");
var html = "<input type='text' id='sort-"+id+"' style='width:40px;' onblur='doneChange(this,"+id+")' value='"+$(t).html()+"' />";
$(t).html(html);
$('#sort-'+id).focus();
$('#sort-'+id).select();
oldSort = $(t).html();
}
function doneChange(t,id){
var sort = ($(t).val()=='')?0:$(t).val();
if(sort==oldSort){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
return;
}
$.post(WST.U('admin/goodsclassify/changeRecom'),{id:id,goodsOrder:sort},function(data){
var json = WST.toAdminJson(data);
if(json.status==1){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
}
});
}
$(function(){initrecomDetailGrid();})
</script>
{/block}

View File

@ -0,0 +1,86 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodsclassify/goodsclassify.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<input type='hidden' id="classifyId" value='{$id}'/>
<div class="wst-toolbar">
{$result}活动页
<select name="recomId" id="recomId" style="margin-left: 20px;" class='j-ipt'>
<option value="">请选择</option>
{volist name="classify" id="vo"}
<option value="{$vo['recomId']}">{$vo['recomName']}</option>
{/volist}
</select>
<input type="text" name="goodsId" placeholder='商品ID' id="goodsId" class='j-ipt' style="width: 100px;"/>
<button class="btn btn-primary" onclick='javascript:loadGrid(0)'><i class="fa fa-search"></i>查询</button>
{if WSTGrant('DQGL_01')}
<button class="btn btn-info f-right btn-mright" onclick='javascript:cats({$id})'><i class='fa'></i>查看/新增活动</button>
<button class="btn btn-default f-right btn-mright" onclick='javascript:recom({$id})'><i class='fa'></i>推荐商品</button>
<button class="btn btn-primary f-right btn-mright" onclick='javascript:toAddGoods()'><i class='fa fa-plus'></i>新增商品</button>
{/if}
<div style='clear:both'></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<div id='goodsBox' style='display:none'>
<form id="goodsForm">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>
选择活动<font color='red'>*</font></th>
<td>
<select name="recomId" id="recomId" class="ipt">
<option value="">请选择活动</option>
{volist name="classify" id="vo"}
<option value="{$vo.recomId}">{$vo.recomName}</option>
{/volist}
</select>
</td>
</tr>
<tr >
<th width='150'>填写商品ID<font color='red'>*</font></th>
<td >
<textarea type="text" name="goodsId" class="ipt" id="goodsId" placeholder="填写商品ID:批量添加商品,请用英文逗号隔开" style="margin-top: 10px;height: 100px;">
</textarea>
</td>
</tr>
</table>
</form>
</div>
<script>
var oldSort;
function changeSort(t,id){
//alert(id);
$(t).attr('ondblclick'," ");
var html = "<input type='text' id='sort-"+id+"' style='width:40px;' onblur='doneChange(this,"+id+")' value='"+$(t).html()+"' />";
$(t).html(html);
$('#sort-'+id).focus();
$('#sort-'+id).select();
oldSort = $(t).html();
}
function doneChange(t,id){
var sort = ($(t).val()=='')?0:$(t).val();
if(sort==oldSort){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
return;
}
$.post(WST.U('admin/goodsclassify/changeSet'),{id:id,goodsOrder:sort},function(data){
var json = WST.toAdminJson(data);
if(json.status==1){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
}
});
}
$(function(){initsetDetailGrid();})
</script>
{/block}

View File

@ -0,0 +1,57 @@
{extend name="base" /}
{block name="js"}
<script src="__ADMIN__/goodsconsult/goodsconsult.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<form id="goodsconsultForm" autocomplete="off">
<table class='wst-form wst-box-top'>
<tr>
<th width='150'>商品:</th>
<td>
<img src='__IMGURL__/{$data["goodsImg"]}' width='50' style="float:left;" />&nbsp;
<p style="float:left;height:50px;line-height:25px;width:245px;overflow:hidden;margin-left:5px;">{$data['goodsName']}</p>
</td>
</tr>
<tr>
<th>用户:</th>
<td>
{if($data['loginName']!='')}
{$data['loginName']}
{else /}
游客
{/if}
</td>
</tr>
<tr>
<th>状态:</th>
<td>
<label><input type="radio" class="ipt" id="isShow" name="isShow" value="1" <?=$data['isShow']==1?'checked':'';?> />显示</label>
<label><input type="radio" class="ipt" id="isShow" name="isShow" value="0" <?=$data['isShow']==0?'checked':'';?> />隐藏</label>
</td>
</tr>
<tr>
<th>咨询内容:</th>
<td>
<textarea style="width:300px;height:100px" id="consultContent" name="consultContent" class="ipt">{$data['consultContent']}</textarea>
</td>
</tr>
<tr>
<th>回复内容:</th>
<td>
<textarea style="width:300px;height:100px" id="reply" name="reply" class="ipt">{$data['reply']}</textarea>
</td>
</tr>
<tr>
<td colspan='2' align='center' class='wst-bottombar'>
<input type="hidden" name="id" id="id" class="ipt" value="{$data['id']+0}" />
<button type="submit" class='btn btn-primary btn-mright'><i class="fa fa-check"></i>提交</button>
<button type="button" onclick="javascript:history.go(-1)" class='btn'><i class="fa fa-angle-double-left"></i>返回</button>
</td>
</tr>
</table>
</form>
<script>
$(function(){editInit();})
</script>
{/block}

View File

@ -0,0 +1,108 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'商品主图', name:'goodsImg', width: 100, renderer: function(val,item,rowIndex){
var thumb = item['goodsImg'];
//thumb = thumb.replace('.','_thumb.');
return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:40px;width:40px;' src='"+WST.conf.IMGURL+"/"+thumb
+"'><span class='imged' style='left:45px;'><img style='height:150px;width:150px;' src='"+WST.conf.IMGURL+"/"+item['goodsImg']+"'></span></span>";
}},
{title:'商品', name:'goodsName', width: 100,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['goodsName']+"</p></span>";
}},
{title:'咨询内容', name:'consultContent', width: 100,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['consultContent']+"</p></span>";
}},
{title:'回复内容', name:'reply', width: 100,renderer: function(val,item,rowIndex){
return "<span ><p class='wst-nowrap'>"+item['reply']+"</p></span>";
}},
{title:'状态', name:'isShow', width: 100, renderer: function(val,item,rowIndex){
return (val==0)?"<span class='statu-no'><i class='fa fa-ban'></i> 隐藏</span>":"<span class='statu-yes'><i class='fa fa-check-circle'></i> 显示</span></h3>";
}},
{title:'操作', name:'' ,width:70, align:'center', renderer: function(val,item,rowIndex){
var h = "";
if(WST.GRANT.SPZX_02)h += "<a class='btn btn-blue' href='"+WST.U('admin/goodsconsult/toEdit','id='+item['id'])+"'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.SPZX_03)h += "<a class='btn btn-red' href='javascript:toDel(" + item['id'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol: true,indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/goodsconsult/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该记录吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsconsult/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function loadGrid(){
var query = WST.getParams('.query');
query.page = 1;
mmg.load(query);
}
function editInit(){
/* 表单验证 */
$('#goodsconsultForm').validator({
fields: {
consultContent: {
rule:"required;length(3~200)",
msg:{length:"评价内容为3-200个字",required:"评价内容为3-200个字"},
tip:"评价内容为3-200个字",
ok:"",
},
reply: {
rule:"required;length(3~200)",
msg:{length:"回复内容为3-200个字",required:"回复内容为3-200个字"},
tip:"回复内容为3-200个字",
ok:""
},
},
valid: function(form){
var params = WST.getParams('.ipt');
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/goodsconsult/edit'),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
location.href=WST.U('Admin/goodsconsult/index');
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
function toolTip(){
$('body').mousemove(function(e){
var windowH = $(window).height();
if(e.pageY >= windowH*0.8){
var top = windowH*0.233;
$('.imged').css('margin-top',-top);
}else{
var top = windowH*0.06;
$('.imged').css('margin-top',-top);
}
});
}

View File

@ -0,0 +1,33 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/goodsconsult/goodsconsult.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<div id="query" style="float:left;">
<select id="type" name='type' class='query'>
<option value="0">-咨询类别-</option>
{volist name=":WSTDatas('COUSULT_TYPE')" id="vo"}
<option value="{$vo['dataVal']}">{$vo['dataName']}</option>
{/volist}
</select>
<input type="text" name="consultKey" placeholder='咨询内容' id="consultKey" class="query" />
<button type="button" class='btn btn-primary btn-mright'onclick="javascript:loadGrid()" ><i class="fa fa-search"></i>查询</button>
</div>
<div style="clear:both"></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg layui-form"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){
initGrid();
});
</script>
{/block}

View File

@ -0,0 +1,234 @@
var grid;
$(function(){
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
var diff = v?113:53;
}});
grid = $("#maingrid").WSTGridTree({
url:WST.U('admin/homemenus/pageQuery'),
pageSize:10000,
pageSizeOptions:10000,
height:'99%',
width:'100%',
minColToggle:6,
delayLoad :true,
rownumbers:true,
columns: [
{ display: '菜单名称', name: 'menuName', id:"menuId", isSort: false},
{ display: '菜单Url', name: 'menuUrl', isSort: false},
{ display: '菜单类型', name: 'menuType', width:80,isSort: false,render:function(rowdata, rowindex, value){
return (rowdata['menuType']==0)?'用户菜单':'商家菜单';
}},
{ display: '是否显示', name: 'isShow', width:80,isSort: false,render :function(item, rowindex, value){
return '<input type="checkbox" '+((item.isShow==1)?"checked":"")+' class="ipt" lay-skin="switch" lay-filter="isShow" data="'+item.menuId+'" lay-text="显示|隐藏">';
}},
{ display: '排序号', name: 'menuSort', width:60,isSort: false,render:function(rowdata,rowindex,value){
return '<span class="classSort" style="cursor:pointer;color:blue;" ondblclick="changeSort(this,'+rowdata["menuId"]+');">'+rowdata['menuSort']+'</span>';
}},
{ display: '操作', name: 'op',width:230,isSort: false,render: function (rowdata, rowindex, value){
var h = "";
if(WST.GRANT.QTCD_01)h += "<a class='btn btn-blue' href='javascript:toEdit(0," + rowdata['menuId'] + ","+rowdata['menuType']+")'><i class='fa fa-plus'></i>添加子菜单</a> ";
if(WST.GRANT.QTCD_02)h += "<a class='btn btn-blue' href='javascript:getForEdit("+rowdata["parentId"]+"," + rowdata['menuId'] + ")' href='"+WST.U('admin/homemenus/toEdit','menuId='+rowdata['menuId'])+"'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.QTCD_03)h += "<a class='btn btn-red' href='javascript:toDel("+rowdata["parentId"]+"," + rowdata['menuId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
],
callback:function(){
$('.classSort').poshytip({content:'双击修改排序号',showTimeout:0,hideTimeout:1,alignX: 'center',
offsetY: 10,timeOnScreen:1000,allowTipHover: false});
layui.form.render();
}
});
layui.form.on('switch(isShow)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsShow(id, 1);
}else{
toggleIsShow(id, 0);
}
});
})
var oldSort;
function changeSort(t,id){
if(!WST.GRANT.QTCD_02)return;
$(t).attr('ondblclick'," ");
var html = "<input type='text' id='sort-"+id+"' style='width:30px;padding:2px' onblur='doneChange(this,"+id+")' value='"+$(t).html()+"' />";
$(t).html(html);
$('#sort-'+id).focus();
$('#sort-'+id).select();
}
function doneChange(t,id){
var sort = ($(t).val()=='')?0:$(t).val();
if(sort==oldSort){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
return;
}
$.post(WST.U('admin/homemenus/changeSort'),{id:id,menuSort:sort},function(data){
var json = WST.toAdminJson(data);
if(json.status==1){
$(t).parent().attr('ondblclick','changeSort(this,'+id+')');
$(t).parent().html(parseInt(sort));
}
});
}
function toDel(pid,menuId){
var box = WST.confirm({content:"删除该菜单会将下边的子菜单也一并删除,您确定要删除吗?",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/homemenus/del'),{menuId:menuId},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
grid.reload(pid);
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function edit(pid,menuId){
//获取所有参数
var params = WST.getParams('.ipt');
params.menuId = menuId;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/homemenus/'+((menuId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toggleIsShow(menuId, isShow){
if(!WST.GRANT.QTCD_02)return;
$.post(WST.U('admin/homemenus/setToggle'), {'menuId':menuId, 'isShow':isShow}, function(data, textStatus){
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
grid.reload(menuId);
}else{
WST.msg(json.msg,{icon:2});
}
})
}
function getForEdit(pid,menuId){
$('#menuForm')[0].reset();
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/homemenus/get'),{menuId:menuId},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.menuId){
WST.setValues(json);
toEdit(json.menuId,pid);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
function toEdit(menuId,parentId,tId){
var title = "编辑";
if(menuId==0){
$('#menuForm')[0].reset();
title = "新增";
WST.setValue('isShow',1);
}
if(parentId>0){
$('#menuTypes').hide();
}else{
$('#menuTypes').show();
}
if(tId==1){$('#menuType').val(1);}
layui.form.render();
var box = WST.open({title:title,type:1,content:$('#menuBox'),area: ['550px', '420px'],btn:['确定','取消'],
end:function(){$('#menuBox').hide();},yes:function(){
$('#menuForm').submit();
}});
$('#menuForm').validator({
fields: {
'menuName': {rule:"required;",msg:{required:'请输入菜单名称'}},
'menuUrl': {rule:"required;",msg:{required:'请输入菜单Url'}},
'menuSort': {rule:"required;integer",msg:{required:'请输入排序号',number:"请输入数字"}}
},
valid: function(form){
var params = WST.getParams('.ipt');
params.menuId = menuId;
params.parentId = parentId;
params.isShow = params.isShow?params.isShow:0;
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/homemenus/'+((menuId==0)?"add":"edit")),params,function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
$('#menuBox').hide();
$('#menuForm')[0].reset();
layer.close(box);
grid.reload(params.parentId);
}else{
WST.msg(json.msg,{icon:2});
}
});
}
});
}
function loadGrid(){
$("#maingrid").WSTGridTree({
url:WST.U('admin/homemenus/pageQuery',{menuType:$('#s_menuType').val()}),
pageSize:10000,
pageSizeOptions:10000,
height:'99%',
width:'100%',
minColToggle:6,
delayLoad :true,
rownumbers:true,
columns: [
{ display: '菜单名称', name: 'menuName', id:"menuId", isSort: false},
{ display: '菜单Url', name: 'menuUrl', isSort: false},
{ display: '菜单类型', name: 'menuType', width:80,isSort: false,render:function(rowdata, rowindex, value){
return (rowdata['menuType']==0)?'用户菜单':'商家菜单';
}},
{ display: '是否显示', name: 'isShow', width:80,isSort: false,render :function(item, rowindex, value){
return '<input type="checkbox" '+((item.isShow==1)?"checked":"")+' class="ipt" lay-skin="switch" lay-filter="isShow" data="'+item.menuId+'" lay-text="显示|隐藏">';
}},
{ display: '排序号', name: 'menuSort', width:60,isSort: false,render:function(rowdata,rowindex,value){
return '<span style="cursor:pointer;color:blue;" ondblclick="changeSort(this,'+rowdata["menuId"]+');">'+rowdata['menuSort']+'</span>';
}},
{ display: '操作', name: 'op',width:230,isSort: false,render: function (rowdata, rowindex, value){
var h = "";
if(WST.GRANT.QTCD_01)h += "<a class='btn btn-blue' href='javascript:toEdit(0," + rowdata['menuId'] + ","+rowdata['menuType']+")'><i class='fa fa-plus'></i>添加子菜单</a> ";
if(WST.GRANT.QTCD_02)h += "<a class='btn btn-blue' href='javascript:getForEdit("+rowdata["parentId"]+"," + rowdata['menuId'] + ")' href='"+WST.U('admin/homemenus/toEdit','menuId='+rowdata['menuId'])+"'><i class='fa fa-pencil'></i>修改</a> ";
if(WST.GRANT.QTCD_03)h += "<a class='btn btn-red' href='javascript:toDel("+rowdata["parentId"]+"," + rowdata['menuId'] + ")'><i class='fa fa-trash-o'></i>删除</a> ";
return h;
}}
],
callback:function(){
layui.form.render();
}
});
layui.form.on('switch(isShow)', function(data){
var id = $(this).attr("data");
if(this.checked){
toggleIsShow(id, 1);
}else{
toggleIsShow(id, 0);
}
});
}

View File

@ -0,0 +1,78 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/wstgridtree.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/homemenus/homemenus.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<style>.mmGrid{border-bottom:0px;}</style>
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>本功能为开发者功能,主要用于设置电脑版买家和买家菜单,普通使用者请勿随意修改,以免影响系统使用。</li>
</ul>
</div>
<div class="wst-toolbar">
<select id='s_menuType' onchange='loadGrid()'>
<option value='-1'>菜单类型</option>
<option value='0'>用户菜单</option>
<option value='1'>商家菜单</option>
</select>
{if WSTGrant('QTCD_01')}
<button class="btn btn-success f-right" onclick="javascript:toEdit(0)"><i class='fa fa-plus'></i>新增</button>
{/if}
<div style="clear:both"></div>
</div>
<div class='wst-grid'>
<div class='mmGrid layui-form' id="maingrid"></div>
</div>
<div id='menuBox' style='display:none'>
<form id='menuForm'>
<table class='wst-form wst-box-top'>
<tr>
<th>菜单名称<font color='red'>*</font></th>
<td>
<input type="text" id="menuName" name="menuName" class="ipt" maxLength='20' />
</td>
</tr>
<tr>
<th>菜单Url<font color='red'>*</font></th>
<td>
<input type="text" id="menuUrl" name="menuUrl" class="ipt" maxLength='200' style='width:300px'/>
</td>
</tr>
<tr>
<th>附加资源:</th>
<td>
<textarea id="menuOtherUrl" name="menuOtherUrl" class="ipt" style='width:80%'></textarea>
</td>
</tr>
<tr id="menuTypes">
<th>菜单类型<font color='red'>*</font></th>
<td>
<select id="menuType" class="ipt">
<option value="0">用户菜单</option>
<option value="1">商家菜单</option>
</select>
</td>
</tr>
<tr>
<th>菜单排序<font color='red'>*</font></th>
<td>
<input type="text" id="menuSort" name="menuSort" class="ipt" maxLength='20' />
</td>
</tr>
<tr>
<th>是否显示<font color='red'> </font></th>
<td class="layui-form">
<input type="checkbox" id="isShow" name="isShow" value="1" class="ipt" lay-skin="switch" lay-filter="isShow1" lay-text="显示|隐藏">
</td>
</tr>
</table>
</form>
</div>
{/block}

View File

@ -0,0 +1,25 @@
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'名称', name:'name', width: 100},
{title:'描述', name:'hookRemarks', width: 100},
{title:'对应插件', name:'addons' ,width:70, align:'center'}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol: true, cols: cols,method:'POST',
url: WST.U('admin/hooks/pageQuery'), fullWidthRows: true, autoLoad: true,
plugins: [
$('#pg').mmPaginator({})
]
});
}
//查询
function hooksQuery(){
var query = WST.getParams('.query');
query.page = 1;
mmg.load(query);
}

View File

@ -0,0 +1,26 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/hooks/hooks.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div class="wst-toolbar">
<div id="query" style="float:left;">
<input type="text" name="keyWords" placeholder="钩子名称" id="keyWords" class="j-ipt query">
<button type="button" class='btn btn-primary btn-mright' onclick="javascript:hooksQuery()" ><i class="fa fa-search"></i>查询</button>
</div>
<div style="clear:both"></div>
</div>
<div class='wst-grid'>
<div id="mmg" class="mmg"></div>
<div id="pg" style="text-align: right;"></div>
</div>
<script>
$(function(){initGrid()});
</script>
{/block}

View File

@ -0,0 +1,103 @@
function initSummary(){
var loading = WST.msg('正在获取数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/images/summary'),{rnd:Math.random()},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status==1){
json = json.data;
var html = [],tmp,i=1,divLen = 0;
for(var key in json){
if(key=='_WSTSummary_')continue;
tmp = json[key];
html.push('<tr class="mmg-body wst-grid-tree-row" height="28" align="center">'
,'<td class="wst-grid-tree-row-cell" style="width:26px;">'+(i++)+'</td>'
,'<td class="wst-grid-tree-row-cell">'+WST.blank(tmp.directory,'未知目录')+'('+key+')'+'</td>'
,'<td class="wst-grid-tree-row-cell" align="left">'+getCharts(json['_WSTSummary_'],tmp.data['1'],tmp.data['0'])+'</td>'
,'<td class="wst-grid-tree-row-cell" nowrap>'+tmp.data['1']+'/'+tmp.data['0']+'</td>'
,'<td class="wst-grid-tree-row-cell"><a class="btn btn-blue" href="'+WST.U('admin/images/lists','keyword='+key)+'"><i class="fa fa-search"></i>查看详情</a></td>');
}
$('#list').html(html.join(''));
}else{
WST.msg(json.msg,{icon:2});
}
});
$('#headTip').WSTTips({width:90,height:35,callback:function(v){}});
}
function getCharts(maxSize,size1,size2){
var w = WST.pageWidth()-400;
var tlen = (parseFloat(size1,10)+parseFloat(size2,10))*w/maxSize+1;
var s1len = parseFloat(size1,10)*w/maxSize;
var s2len = parseFloat(size2,10)*w/maxSize;
return ['<div style="width:'+tlen+'px"><div style="height:20px;float:left;width:'+s1len+'px;background:#5cb85c;"></div><div style="height:20px;float:left;width:'+s2len+'px;background:#ddd;"></div></div>'];
}
var mmg;
function initGrid(){
var h = WST.pageHeight();
var cols = [
{title:'图片', name:'imgPath', width: 50, renderer: function(val,item,rowIndex){
// return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:60px;width:60px;' src='"+WST.conf.ROOT+"/"+item['imgPath']
// +"'><span class='imged' ><img style='height:180px;width:180px;' src='"+WST.conf.ROOT+"/"+item['imgPath']+"'></span></span>";
// 修改为oss 地址 mark 20180609
return "<span class='weixin'><img id='img' onmouseout='toolTip()' onmouseover='toolTip()' style='height:60px;width:60px;' src='"+WST.conf.IMGURL+"/"+item['imgPath']+"'><span class='imged' ><img style='height:180px;width:180px;' src='"+WST.conf.IMGURL+"/"+item['imgPath']+"'></span></span>";
}},
{title:'上传者', name:'userName' ,width:250, renderer: function(val,item,rowIndex){
if(item['fromType']==1){
return "【职员】"+item['loginName'];
}else{
if(WST.blank(item['userType'])==''){
return '游客';
}else{
if(item['userType']==1){
return "【商家:"+item['shopName']+"】"+item['loginName'];
}else{
return item['loginName'];
}
}
}
}},
{title:'文件大小(M)', name:'imgSize' ,width:30},
{title:'状态', name:'isUse' ,width:30, renderer: function(val,item,rowIndex){
return (val==1)?"<span class='statu-yes'><i class='fa fa-check-circle'></i> 有效</span>":"<span class='statu-no'><i class='fa fa-ban'></i> 无效</span>";
}},
{title:'上传时间', name:'createTime' ,width:120},
{title:'操作', name:'' ,width:80, align:'center', renderer: function(val,item,rowIndex){
var h = '<a class="btn btn-blue btn-mright" href="javascript:toView('+item['imgId']+',\''+item['imgPath']+'\')"><i class="fa fa-search"></i>查看</a>';
if(WST.GRANT.TPKJ_04)h += "<button class='btn btn-red' onclick='javascript:toDel(" + item['imgId'] + ")'><i class='fa fa-trash-o'></i>删除</button> ";
return h;
}}
];
mmg = $('.mmg').mmGrid({height: h-85,indexCol: true,indexColWidth:50, cols: cols,method:'POST',
url: WST.U('admin/images/pageQuery'), fullWidthRows: true, autoLoad: false,
plugins: [
$('#pg').mmPaginator()
]
});
loadGrid();
}
function loadGrid(){
mmg.load({page:1,keyword:$('#key').val(),isUse:$('#isUse').val()});
}
function toView(id,img){
parent.showBox({title:'图片详情',type:2,content:WST.U('admin/images/checkImages','imgPath='+img),area: ['700px', '510px'],btn:['关闭']});
}
function toDel(id){
var box = WST.confirm({content:"您确定要删除该图片吗?<br/>注意:删除该图片后将不可找回!",yes:function(){
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
$.post(WST.U('admin/images/del'),{id:id},function(data,textStatus){
layer.close(loading);
var json = WST.toAdminJson(data);
if(json.status=='1'){
WST.msg("操作成功",{icon:1});
layer.close(box);
loadGrid();
}else{
WST.msg(json.msg,{icon:2});
}
});
}});
}
function toolTip(){
WST.toolTip();
}

View File

@ -0,0 +1,32 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/images/images.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<div id='alertTips' class='alert alert-success alert-tips fade in'>
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
<ul class='body'>
<li>该功能主要用于查看系统图片空间占用情况。绿色为有效图片,灰色为无效,可删除图片。</li>
</ul>
</div>
<div id="main" class='mmGrid wst-grid'>
<table class='mmg-head wst-grid-tree' width='100%' cellspacing='0' cellpadding='0'>
<thead class='mmg-headWrapper'>
<tr class='l-grid-hd-row wst-grid-tree-hd'>
<td width='30' class='wst-grid-tree-hd-cel' height='28' style="width:26px;text-align:center;font-weight:bold;">#</td>
<td width='150' class='wst-grid-tree-hd-cell' height='28' style='text-align:center;font-weight:bold;'>目录</td>
<td class='wst-grid-tree-hd-cell'height='28' style='text-align:left;font-weight:bold;'>有效图片/无效图片</td>
<td width='80' class='wst-grid-tree-hd-cell' height='28' style='text-align:center;font-weight:bold;'>M</td>
<td width='80' class='wst-grid-tree-hd-cell' height='28' style='text-align:center;font-weight:bold;'>操作</td>
</tr>
</thead>
<tbody id='list'></tbody>
</table>
</div>
<script>
$(function(){initSummary();});
</script>
{/block}

View File

@ -0,0 +1,36 @@
{extend name="base" /}
{block name="css"}
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
{/block}
{block name="js"}
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
<script src="__ADMIN__/images/images.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<form>
<div class="wst-toolbar">
<select id='key' class='ipt'>
<option value=''>所有目录</option>
{volist name="$datas" key="i" id='vo'}
<option value="{$vo['dataVal']}" {if $keyword==$vo['dataVal']}selected{/if}>{$vo['dataName']}</option>
{/volist}
</select>
<select id='isUse' class='ipt'>
<option value='-1'>全部</option>
<option value='1'>有效</option>
<option value='0'>失效</option>
</select>
</form>
<button class="btn btn-primary" type='button' onclick='javascript:loadGrid(0)'><i class='fa fa-search'></i>查询</button>
<button class="btn f-right" type='button' onclick="javascript:history.go(-1)"><i class="fa fa-angle-double-left"></i>返回</button>
</div>
<table id="mmg" class="mmg">
<tr>
<th rowspan="" colspan=""></th>
</tr>
</table>
<div id="pg" style="text-align: right;"></div>
<script>
$(function(){initGrid();})
</script>
{/block}

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,76 @@
{extend name="base" /}
{block name="js"}
<script src="__ADMIN__/images/images.js?v={$v}" type="text/javascript"></script>
{/block}
{block name="main"}
<style type="text/css">
*{ margin:0; padding:0; list-style:none;}
img{ border:none;}
.imgbox{ width:400px; height:400px; margin:0px auto;text-align:center;vertical-align:middle;display:block;position:relative;padding:5px;}
.imgbox a{display:table-cell;vertical-align:middle;width:400px; height:400px; }
.imgbox a img{max-width:400px;max-height:400px; }
.imgthumbbox{ width:100px; height:100px;text-align:center;vertical-align:middle;display:block;position:relative;border:1px solid #ddd;margin-bottom:10px;}
.imgthumbbox a{display:table-cell;vertical-align:middle;width:100px; height:100px; }
.imgthumbbox a img{max-width:100px;max-height:100px; }
.mimgbox{ width:100px; height:100px; text-align:center;vertical-align:middle;display:block;position:relative;border:1px solid #ddd;margin-bottom:10px;}
.mimgbox a{display:table-cell;vertical-align:middle;width:100px; height:100px; }
.mimgbox a img{max-width:100px;max-height:100px; }
.mimgthumbbox{ width:100px; height:100px; text-align:center;vertical-align:middle;display:block;position:relative;border:1px solid #ddd}
.mimgthumbbox a{display:table-cell;vertical-align:middle;width:100px; height:100px; }
.mimgthumbbox a img{max-width:100px;max-height:100px; }
.head{line-height:25px;height:25px;}
</style>
</head>
<body>
<table width='100%'>
<tr>
<td>
<div class='imgbox'>
{if $img}
<a href='__ROOT__/{$imgpath}' target="_blank">
<img id='img' src='__ROOT__/{$imgpath}'/>
</a>
{elseif $img_oss}
<a href='__IMGURL__/{$imgpath}' target="_blank">
<img id='img' src='__IMGURL__/{$imgpath}'/>
</a>
{else}
图片不存在!
}
{/if}
</div>
</td>
<td width='150'>
{if $thumb}
<div><div class='head'>缩略图:</div>
<div class='imgthumbbox'>
<a href='__ROOT__/{$thumbpath}' target="_blank">
<img src='__ROOT__/{$thumbpath}'/>
</a>
</div>
</div>
{/if}
<!-- {if $mimgpath !=''} -->
{if $mimg }
<div><div class='head'>移动端图片:</div>
<div class='mimgbox'>
<a href='__ROOT__/{$mimgpath}' target="_blank">
<img src='__ROOT__/{$mimgpath}'/>
</a>
</div>
</div>
{/if}
<!-- {if $mthumbpath !=''} -->
{if $mthumb }
<div><div class='head'>移动端缩略图:</div>
<div class='mimgthumbbox'>
<a href='__ROOT__/{$mthumbpath}' target="_blank">
<img src='__ROOT__/{$mthumbpath}'/>
</a>
</div>
</div>
{/if}
</td>
</tr>
</table>
{/block}

BIN
hyhproject/admin/view/img/1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
hyhproject/admin/view/img/10.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
hyhproject/admin/view/img/11.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
hyhproject/admin/view/img/12.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
hyhproject/admin/view/img/13.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
hyhproject/admin/view/img/14.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More