自定义关闭事件
parent.window.$(".layui-layer-iframe").find(".layui-layer-close").on('click',function () { console.log('asdasd') //这里执行你的逻辑 Fast.api.close("1"); });
子查询 分组再排序 加统计 $sql = $model ->where($where) ->where('status','gt',0) ->where('nl_id','gt',0) ->order('allocation_time desc,order_id desc') ->buildSql(); $list=Db::table($sql.' a') ->order($sort, $order) ->field('count(`order_id`) as count,a.order_id,a.er_id,a.status,b.*') ->join((new \app\admin\model\kz\EngravedEp())->getTable().' b','a.er_id = b.er_id','LEFT') ->group('a.er_id') ->paginate($limit);
查询日期的时候 值按照指定的时间格式查询
{field: 'createtime', title: __('Createtime'), operate:'=', addclass:'datetimepicker', autocomplete:false, formatter: Table.api.formatter.datetime , data: 'data-date-format="YYYY-MM"' },
自定义表单事件 Form.api.bindevent($("form[role=form]"), function(data, ret){ //这里是表单提交处理成功后的回调函数,接收来自php的返回数据 //Fast.api.close(data); 关闭弹窗 }, function(data, ret){ //PHP返回失败时处理 }, function(success, error){ console.log('123123') //bindevent的第三个参数为提交前的回调 //如果我们需要在表单提交前做一些数据处理,则可以在此方法处理 //注意如果我们需要阻止表单,可以在此使用return false;即可 //如果我们处理完成需要再次提交表单则可以使用submit提交,如下 //Form.api.submit(this, success, error); return false; });
自定义确定按钮事件 把确认按钮的submit改为button
$("#submitbtn").on("click", function(){ var that = this; Layer.confirm('确认提交吗', { btn: ['确认','取消'] //按钮 }, function(){ $(that).closest("form").trigger("submit"); return true; }, function(){ return false; }); });
//动态隐藏操作按钮
formatter:function(value,row,index){ var that = $.extend({},this);//将this赋值给that, var table = $(that.table).clone(true);//通过that去引用table中的信息 if(Config.isRegionAdmin && row.user_id > 0) { $(table).data("operate-edit",null);//隐藏操作中的编辑按钮, } /*$(table).data("operate-del",null);//隐藏操作中的删除按钮, $(table).data("operate-dragsort",null);//隐藏操作中的移动按钮,*/ that.table = table; return Table.api.formatter.operate.call(that,value,row,index);//展示信息 },
同一个页面多个导入
$("#btn-import-zd-file").click( function(res){
console.log(res)
require(['upload'], function (Upload) {
Upload.api.plupload($("#btn-import-zd-file"), function (data, ret) {
console.log(data,ret);
/* Fast.api.ajax({
url: "/admin/food_composition/importlimit",
data: {path: data.url},
}, function (data, ret) {
console.log(JSON.stringify(data));
});*/
});
});
});
//toggle自定义颜色数值 以及获取不到pk问题
{field: 'status', title: __('Status'),yes: '1',
no: '-1', formatter: Table.api.formatter.toggle,table:table},
//在添加页面 被动追加表单框使用下拉
//参考资料
fastadmin-fieldllist,设置下拉框及修改默认值_fastadmin fieldlist 默认值_咦!小妮子吖的博客-CSDN博客
<div class="form-group row">
<label class="control-label col-xs-12 col-sm-2">{:__('Goods_food')}:</label>
<div class="col-xs-12 col-sm-8">
<dl class="fieldlist" data-template="eventtpl" data-name="row[food]">
<dd>
<ins style="width: 200px">{:__('食材')}</ins>
<ins>{:__('重量g')}</ins>
</dd>
<dd><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></dd>
</dl>
<script id="eventtpl" type="text/html">
<dd class="form-inline " >
<ins style="width: 200px"><input type="text" name="<%=name%>[<%=index%>][food_id]" class="form-control selectpage sel_food_name"
data-source="bcp/bcpgoods/selectfood" data-field="name"
data-primary-key="food_id"
value="<%=row.food_id%>" placeholder="请选择食材" size="20" /></ins>
<ins><input type="text" name="<%=name%>[<%=index%>][weight]" class="form-control" value="<%=row.weight%>" placeholder=""/></ins>
<!--下面的两个按钮务必保留-->
<span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span>
<span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span>
</dd>
</script>
</div>
</div>
add: function () {
$(document).on("fa.event.appendfieldlist", "#add-form .btn-append", function (e, obj) {
Form.events.selectpage(obj);
});
Controller.api.bindevent();
},
//页面渲染完成 添加大小
table.on('post-body.bs.table',function(){
$(".btn-editone").data("area",["90%","90%"]);
})
$('.btn-add').attr('data-area','["90%","90%"]')
$('.btn-edit').attr('data-area','["90%","90%"]')
extend:'data-area=["100%","100%"]',
Fast.api.open("http://xxx","这是标题",{area:['500px', '300px']})
$zanCount = !empty($zanInfo)?Db::raw('zan_count - 1'):Db::raw('zan_count + 1');
Thinkphp whereor 查询方式
$condition = [
'status' => School::STATUS_NORMAL
];
if(!empty($schoolName))
{
$conditionor['name'] = ['like','%'.$schoolName.'%'];
$conditionor['alias_name'] = ['like','%'.$schoolName.'%'];
}else{
$conditionor = [];
}
$schoolModel = new School();
$schoolList = $schoolModel->field('sc_id,name,web_buygoods_bindst,need_bind_mobile,need_st_headimg')
->where(function ($query) use ($conditionor){
$query->whereor($conditionor);
})->where($condition)
->order('sc_id desc')
->select();
Where 和 where里面的wehereor
$modelObj->where(function ($query) use ($id) {
$query->whereOr('parent_id','in',function ($query) use ($id){
$query->table('fa_admin')->where([
'parent_id' => $id
])->field('id');
})->whereOr(['parent_id' => $id]);
});
modelObj->where($condition)
Fastadmin 行内可编辑 Fastadmin后台管理之表格行内编辑requireJS加载x-editable.js_fastadmin 实现表格数据可编辑_甄齐才的博客-CSDN博客
Editable属性,字段可直接编辑
Fastadmin 使用find_in_set删除
$where = [
['EXP',Db::raw('FIND_IN_SET("'.$st_id.'",st_id)')]
];
表单多字段合并
formatter:function(value,row,index){return value + " " + row.detailed_address; }
子查询
$list = $this->model
->where('adv_id', 'IN', function ($query) use ($params) {
$query->table('hyjf_adv')->where([
'adv_addr_id' => $params['adv_addr_id'],
'real_type' => $params['real_type'],
'real_id' => $params['real_id']
])->order('adv_id desc')->field('adv_id');
})
->select();
选择
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('选择对应学生')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-service_shop_id" data-source="school/student/index" data-field="name"
data-params='{"custom[sc_id]":"{$SC_ID}"}' data-primary-key="st_id"
data-searchField="st_id,name"
data-multiple="false" class="form-control selectpage" name="row[st_id]"
type="text" value="">
</div>
</div>
后台图片渲染 点击放大
{field: 'pimg', title: __('Pimg'), formatter: Table.api.formatter.image, events: Table.api.events.image
},
table.on('post-body.bs.table', function (e, json) {
$("tbody tr[data-index]", this).each(function () {
var checkIndex = selIdsArr.indexOf(parseFloat($("td:eq(1)", this).text()));
if (checkIndex > -1) {
$("input[type=checkbox]", this).prop("checked", true);
}
});
});
table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function (e, row) {
if (e.type == 'check') {
if(selIdsArr.indexOf(row.id) == -1)
{
selIdsArr.push(row.id);
}
}else if( e.type == 'uncheck')
{
var index = selIdsArr.indexOf(row.id);
if(index > -1)
{
selIdsArr.splice(index,1);
}
}else if(e.type == 'check-all')
{
//选中全部
row.forEach((item,index)=>{
if(selIdsArr.indexOf(item.id) == -1)
{
selIdsArr.push(item.id);
}
})
}else if(e.type == 'uncheck-all')
{
//取消当页已选中的全部
row.forEach((item,index)=>{
var checkIndex = selIdsArr.indexOf(item.id);
if(checkIndex > -1)
{
selIdsArr.splice(checkIndex,1);
}
})
}
showSelectCount(selIdsArr);
});
queryParams:function(res){
var search = res.search?encodeURIComponent(res.search):'';
var filter = res.filter?encodeURIComponent(res.filter):'';
var op = res.op?encodeURIComponent(res.op):'';
var createGpsUrl = 'cmwater/cmwater_user_upload_log/mapuploadlog?search='+search+'&filter='+filter+'&op='+op;
$('#btn-create-gps').attr('href',createGpsUrl)
var exportUrl = 'cmwater_user_upload_log/export?search='+search+'&filter='+filter+'&op='+op;
$('#btn-export-file').attr('href',exportUrl)
return res;
},
$base64 = preg_replace('#^data:image/[^;]+;base64,#', '', $base64);
或者 $img = preg_replace('#data:image/[^;]+;base64,#', '', $s['image']);
{field: 'headimg', title: __('Headimg'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, 自动裁剪超长文字
设定默认传值
$params = $this->request->post('row/a'); $params['md5key'] = $this->model->createMd5Key($params['username'],$params['idcard']); $this->request->post([ 'row' => $params ]);