文档地址:https://doc.fastadmin.net/docs/index.html
/** * 无需登录的方法,同时也就不需要鉴权了 * @var array */
protected $noNeedLogin = [];
/** * 无需鉴权的方法,但需要登录 * @var array */
protected $noNeedRight = [];
获取配置信息的方法get_addon_config();
关闭弹窗:
sendmulti: function () {
Controller.api.bindevent();
},
权限问题:插件名.php 文件
'name' => 'user/rule',
'title' => '会员规则',
'icon' => 'fa fa-circle-o',
'remark' => '管理会员显示的不同页面',
'ismenu' => 1,
'sublist' => [
['name' => 'user/rule/index', 'title' => '查看'], 权限问题
['name' => 'user/rule/add', 'title' => '添加'],
['name' => 'user/rule/edit', 'title' => '修改'],
['name' => 'user/rule/del', 'title' => '删除'],
['name' => 'user/rule/multi', 'title' => '批量更新'],
]
<div class="panel panel-default panel-intro">
<div class="panel-heading">
<ul class="nav nav-tabs">
<li class="active"><a href="#one" data-toggle="tab">{:__('All')}</a></li>
<li><a href="#two" data-toggle="tab">{:__('Cancer_category')}</a></li>
</ul>
</div>
<div class="panel-body">
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade active in" id="one">
<div class="widget-body no-padding">
<div id="toolbar1" class="toolbar">
{:build_toolbar()}
<div class="dropdown btn-group {:$auth->check('shop/ads/multi')?'':'hide'}">
<a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
<ul class="dropdown-menu text-left" role="menu">
<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
</ul>
</div>
</div>
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
data-operate-edit="{:$auth->check('shop/ads/edit')}"
data-operate-del="{:$auth->check('shop/ads/del')}"
width="100%">
</table>
</div>
</div>
<div class="tab-pane fade" id="two">
<div class="widget-body no-padding">
<div id="toolbar2" class="toolbar">
{:build_toolbar()}
<div class="dropdown btn-group {:$auth->check('shop/ads/multi')?'':'hide'}">
<a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
<ul class="dropdown-menu text-left" role="menu">
<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
</ul>
</div>
</div>
<table id="table2" class="table table-striped table-bordered table-hover table-nowrap"
data-operate-edit="{:$auth->check('shop/ads/edit')}"
data-operate-del="{:$auth->check('shop/ads/del')}"
width="100%">
</table>
</div>
</div>
</div>
</div>
</div>
define(['jquery', 'bootstrap', 'frontend', 'form', 'template', 'fast', 'jqzoom'], function ($, undefined, Frontend, Form, Template) {
var Controller = {
index: function () { //购物车
// 增加数量
$("#cartTable").delegate(".increase", "click", function () {
var $quantity = $(this).parent().find("input");
var quantity = $quantity.val();
if (/^\d*[1-9]\d*$/.test(quantity)) {
$quantity.val(parseInt(quantity) + 1);
} else {
$quantity.val(1);
}
subtotal($quantity)
});
// 减少数量
$("#cartTable").delegate(".decrease", "click", function () {
var $quantity = $(this).parent().find("input");
var quantity = $quantity.val();
if (/^\d*[1-9]\d*$/.test(quantity) && parseInt(quantity) > 1) {
$quantity.val(parseInt(quantity) - 1);
} else {
$quantity.val(1);
}
subtotal($quantity);
});
$.ajax({
url: Config.upload.cdnurl + '/cart/index',
type: "post",
dataType: "json",
success: function (data) {
$("#cartBtnTop em").text(data.total);
var trStr = "";
var data = data.rows;
var total = 0;
var totalScore = 0;
if(data.length > 0){
$(".cart_bottom").show();
for (var i = 0; i < data.length; i++) {
var small_price = (new Number(data[i].specs.price)).toFixed(2);
var goodImg=""
if(data[i].goods.image ==null || data[i].goods.image == ""){
goodImg=Config.upload.cdnurl + "/assets/addons/shop/img/default_large.jpg";
}else{
goodImg=data[i].goods.image;
}
trStr += '<tr cartId="' + data[i].cart_id + '">' +
'<td><img src="' + goodImg + '" >' +
'<a href="'+urlPublic+'/goods/index?sn='+data[i].goods.sn+'" title="' + data[i].goods.name + '" target="_blank">' + data[i].goods.name + ' </a></td>'+
'<td><span>' + data[i].specs.sn + '</span></td>' +
'<td><span>[' + data[i].specs.specification_values[0].value + ']</span></td>' +
'<td class="cart_jmprice" data_price="' + small_price + '">¥' + small_price + '</td>' +
'<td class="reward_point">' + data[i].specs.reward_point + '</td>' +
'<td class="quantity" style="min-width:70px;">' +
'<span class="decrease">-</span>' +
'<input type="text" name="quantity" value="' + data[i].num + '" maxlength="4" onpaste="return false;">' +
'<span class="increase">+</span></td>' +
'<td width="140"><span class="subtotal" data_samll="' + small_price * data[i].num + '">¥' + (small_price * data[i].num).toFixed(2) + '</span></td>' +
'<td>[<a href="javascript:;" class="delete" onclick="deleteGoods($(this))">'+__('Delete')+'</a>]</td>' +
'</tr>';
total += small_price * data[i].num;//商品总额
totalScore += data[i].specs.reward_point * data[i].num;//赠送总积分
}
}else{
trStr +='<tr><td colspan="7"><p class="cart_null">'+__("Shopping cart is still empty. Let's go to see our favorite products. Go shopping")+'></p></td></tr>';
$(".cart_bottom").hide();
}
$(".cartTable tbody").html(trStr);
$("#effectivePrice").text("¥" + total.toFixed(2));
$("#effectiveRewardPoint").text(totalScore);
}
});
}
};
return Controller;
});
//小计
function subtotal($quantity) {
var quantity = $quantity.val();
var cart_jmprice = $quantity.parents("tr").find(".cart_jmprice").attr("data_price");
var smallTotal = Number(cart_jmprice) * Number(quantity)
$quantity.parents("tr").find(".subtotal").html("¥" + smallTotal + "");
$quantity.parents("tr").find(".subtotal").attr("data_samll", smallTotal);
var total = 0;
var totalScore = 0;
$(".cartTable tbody tr").each(function () {
total += Number($(this).find(".subtotal").attr("data_samll"));
totalScore += Number($(this).find(".reward_point").text()) * Number(quantity);
});
$("#effectivePrice").text("¥" + total + __('Origin'));
$("#effectiveRewardPoint").text(totalScore);
var cartId = $quantity.parents("tr").attr("cartId");
$.ajax({
url: Config.upload.cdnurl + '/cart/edit',
type: "post",
data: {cart_id: cartId,num:quantity},
dataType: "json",
success: function (data) {
if(data.code==true){
}
}
});
}
//删除商品
function deleteGoods(obj) {
var cartId = obj.parents("tr").attr("cartId");
layer.confirm(__('Are you sure you want to delete the product')+'?', {
btn: [__('Sure'), __('Cancel')] //按钮
}, function (index) {
$.ajax({
url: Config.upload.cdnurl + '/cart/delete',
type: "post",
data: {cart_id: cartId},
dataType: "json",
success: function (data) {
if(data.code==true){
layer.msg(data.msg);
setTimeout(function(){
window.location.reload();
}, 1000);
}
}
});
});
}
//清空购物车
function deleteCart() {
layer.confirm(__('Are you sure you want to clear the shopping cart')+'?', {
btn: [__('Sure'), __('Cancel')] //按钮
}, function (index) {
$.ajax({
url: Config.upload.cdnurl + '/cart/clear',
type: "post",
dataType: "json",
success: function (data) {
if(data.code==true){
layer.msg(data.msg);
setTimeout(function(){
window.location.reload();
}, 1000);
}
}
});
});
}
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
// 初始化表格参数配置
Table.api.init();
//绑定事件
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var panel = $($(this).attr("href"));
if (panel.size() > 0) {
Controller.table[panel.attr("id")].call(this);
$(this).on('click', function (e) {
$($(this).attr("href")).find(".btn-refresh").trigger("click");
});
}
//移除绑定的事件
$(this).unbind('shown.bs.tab');
});
//必须默认触发shown.bs.tab事件
$('ul.nav-tabs li.active a[data-toggle="tab"]').trigger("shown.bs.tab");
},
table: {
one: function () {
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: 'shop/ads/index',
extend: {
index_url: 'shop/ads/index',
add_url: 'shop/ads/add',
edit_url: 'shop/ads/edit',
del_url: 'shop/ads/del',
import_url: 'shop/ads/import',
multi_url: 'shop/ads/multi',
table: 'ads',
},
pk: 'id',
sortName: 'weigh',
toolbar: '#toolbar1',
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'name', title: __('Name')},
{field: 'thumb', title: __('Thumb')},
{field: 'open_mode', title: __('Open_mode'), searchList: {"0": __('Open_mode 0'), "1": __('Open_mode 1')}, formatter: Table.api.formatter.normal},
{field: 'path_url', title: __('Path_url'), formatter: Table.api.formatter.url},
{field: 'adsposition.position', title: __('Position'),sortable: true,formatter: Table.api.formatter.search},
{field: 'starttime', title: __('Starttime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
{field: 'endtime', title: __('Endtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
{field: 'weigh', title: __('Weigh')},
{field: 'status', title: __('Status'), searchList: {"0": __('Status 0'), "1": __('Status 1')}, formatter: Table.api.formatter.status},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
});
// 为表格绑定事件
Table.api.bindevent(table);
},
two: function () {
var table2 = $("#table2");
// 初始化表格
table2.bootstrapTable({
url: 'shop/adsposition/index',
extend: {
index_url: 'shop/adsposition/index',
add_url: 'shop/adsposition/add',
edit_url: 'shop/adsposition/edit',
del_url: 'shop/adsposition/del',
import_url: 'shop/adsposition/import',
multi_url: 'shop/adsposition/multi',
table: 'ads_position',
},
pk: 'id',
sortName: 'weigh',
toolbar: '#toolbar2',
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'name', title: __('Name')},
{field: 'position', title: __('Position')},
{field: 'createtime', title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
{field: 'updatetime', title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
{field: 'weigh', title: __('Weigh')},
{field: 'status', title: __('Status'), searchList: {"0": __('Status 0'), "1": __('Status 1')}, formatter: Table.api.formatter.status},
{field: 'operate', title: __('Operate'), table: table2, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
});
// 绑定TAB事件
// 为表格绑定事件
Table.api.bindevent(table2);
}
},
add: function () {
Controller.api.bindevent();
}
,
edit: function () {
Controller.api.bindevent();
}
,
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
}
}
}
;
return Controller;
});