程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Fastadmin记录

发布于2021-12-05 19:12     阅读(1448)     评论(0)     点赞(29)     收藏(0)



前言

最近的一个项目后台要处理的东西比较多,正好整理在这里方便以后使用


一、JS方面的处理

在后台处理编辑删除 还需要设置其他按钮 来进行操作
文档链接 ------》 传送门 《---------
见文档中 15.自定义按钮

自定义按钮

  1. 发送ajax
{
    name: 'ajax',
     title: __('冻结'),
     text: __('冻结'),
     classname: 'btn btn-xs btn-danger btn-ajax',
     icon: 'fa fa-minus-circle',
     confirm: '确认冻结?',
     url: 'user/disable',
     success: function (data, ret) {
         Layer.alert(ret.msg);
         //成功之后刷新table
         table.bootstrapTable('refresh', {});
     },
     error: function (data, ret) {
         console.log(data, ret);
         Layer.alert(ret.msg);
         return false;
     },
     hidden:function (row) {
         if (row.status == '-1'){
             return true;
         }
     }
 },
  1. 弹窗打开
{
   name: 'detail',
    title: __('查看'),
    text: __('查看'),
    classname: 'btn btn-xs btn-primary btn-dialog',
    icon: 'fa fa-list',
    url: 'user/team_order',
    extend:'data-area=\'["90%;","80%"]\'',
    /*callback: function (data) {
        Layer.alert("接收到回传数据:" + JSON.stringify(data), {title: "回传数据"});
    }*/
}

高级进阶(一)
自定义打开窗口内容 我这里需要的是一个可以输入金额的弹框

{
     name: 'no',
     title: __('修改余额'),
     text: __('修改余额'),
     classname: 'btn btn-xs btn-info btn-click',
     icon: 'fa fa-cny',

     click: function (data, row) {
     	//当点击的时候出发 appwhy 并携带参数 id
         appWhy(row.id);
     }
 },

appWhy 追加在js最后就可以

function appWhy(id) {
    var str = "<div  style='width:80%;margin-left:auto;margin-right:auto'>" +
        "<select class=\"form-control\" name=\"type\" id=\"more-template-select\" style=\"width: 80px;margin-right:5px;\">\n" +
        "      <option value=\"+\" selected=\"\">增加</option>\n" +
        "      <option value=\"-\">减少</option>\n" +
        "</select>" +
        "<input type=\"text\" class=\"form-control\" style=\"display: block;margin-top: 20px;\" id=\"input-user_money\" name=\"user_money\" value=\"0\" placeholder=\"\" οnkeyup=\"if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\\D/g,'')}\" onafterpaste=\"if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\\D/g,'')}\"></div>";

    var table = $("#table");

    var openPage = Layer.open({
        title: __('修改余额'), //页面标题
        content: str,
        area: ['400px', '230px'], //自定义文本域宽高
        btn: ['确定', '取消'],
        //到这里已经触发并弹框了
        yes: function (e, value) {
            var zj = $("#more-template-select").val();
            var money = $("#input-user_money").val();
            var user_id = id;
            //这里是我发送ajax 处理参数  可以根据 实际情况处理
            Fast.api.ajax({
                    url: 'user/handle_balance',
                    data: {zj: zj, money: money, user_id: id}
                }, function (data, ret) {
                    //成功的回调
                    Layer.close(openPage);
                    table.bootstrapTable('refresh', {});
                }, function (data, ret) {
                    //失败的回调
                    return false;
                }
            );

        }, btn2: function () {
            return 0;
        }
    })
}

高级进阶(二)
按钮携带参数打开其他页面 用途:如查看指定用户的订单

按钮代码
特别注意url参数

{
      name: 'detail',
      title: __('查看订单'),
      text: __('查看订单'),
      classname: 'btn btn-xs btn-primary btn-dialog',
      icon: 'fa fa-list',
      //注意一下这个url 为 订单的页面的index
      url: 'order/index',
      extend:'data-area=\'["90%;","80%"]\'',
      /*callback: function (data) {
          Layer.alert("接收到回传数据:" + JSON.stringify(data), {title: "回传数据"});
      }*/
  },

在订单控制器要处理穿过来的参数 也就是ids 因为Fastadmin是先渲染的页面然后通过ajax获取的参数 如果直接修改where条件 ajax请求的时候 ids获取不到 所以要 先把ids渲染到页面 再ajax请求回来

控制器中的处理
$ this->assignconfig(‘ids’,$this->request->param(“ids”));

 public function index()
    {
        //当前是否为关联查询
        $this->relationSearch = true;
        //设置过滤方法
        $this->request->filter(['strip_tags', 'trim']);
        if ($this->request->isAjax()) {
            //如果发送的来源是Selectpage,则转发到Selectpage
            if ($this->request->request('keyField')) {
                return $this->selectpage();
            }
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
            $wheres = [];
            if ($this->request->param("ids")!==NULL) {
                $wheres['user_id'] = $this->request->param("ids");
            }

            $list = $this->model
                    ->with(['auctiongoods','user'])
                    ->where($where)
                    ->where($wheres)
                    ->order($sort, $order)
                    ->paginate($limit);

            $money = 0;
            foreach ($list as $row) {
                $row->visible(['id', 'order_sn', 'pay_money', 'total_money', 'status', 'is_transfer', 'pay_type', 'pay_time', 'examine_time', 'pay_img', 'create_time']);
                $row->visible(['auctiongoods']);
                $row->getRelation('auctiongoods')->visible(['goods_name']);
                $row->visible(['user']);
                $row->getRelation('user')->visible(['nick_name']);
                $money += intval($row['total_money']*100);
            }

            $result = array("total" => $list->total(), "rows" => $list->items(), "extend" => ['money' =>$money/100]);

            return json($result);
        }

        $this->assignconfig('ids',$this->request->param("ids"));
        return $this->view->fetch();
    }

ids通过渲染之后 在js中需要在携带请求
在初始化表格的时候携带

 queryParams: function (params) {
      //自定义搜索条件
       var filter = params.filter ? JSON.parse(params.filter) : {}; //判断当前是否还有其他高级搜索栏的条件
       var op = params.op ? JSON.parse(params.op) : {};  //并将搜索过滤器 转为对象方便我们追加条件
       //注意要做一下判断 不然不带参数访问不到
       if(Config.ids){
           filter.user_id = Config.ids;     //将透传的参数 Config.ids,追加到搜索条件中
       }
       op.user_id = "=";  
       params.filter = JSON.stringify(filter); //将搜索过滤器和操作方法 都转为JSON字符串
       params.op = JSON.stringify(op);
       //如果希望忽略搜索栏搜索条件,可使用
       //params.filter = JSON.stringify({url: 'login'});
       //params.op = JSON.stringify({url: 'like'});
       return params;

   },

时间格式的转换

后台生成后 时间格式是:**YYYY-MM-DD HH:mm:ss** 但是有时候我们只需要 年-月-日就够了 **datetimeFormat** 声明了时间格式为年月日
{
    field: 'time',
    title: __('时间'),
    operate: 'RANGE',
    addclass: 'datetimerange',
    autocomplete: false,
    datetimeFormat: "YYYY-MM-DD",
    formatter: Table.api.formatter.datetime,
},

自定义搜索功能时间搜索格式更换


 {
     field: 'today_time',
     title: __('时间'),
     operate: 'RANGE',
     addclass: 'datetimerange',
     autocomplete: false,
     datetimeFormat: "YYYY-MM-DD",
     formatter: Table.api.formatter.datetime,
     data: 'data-date-format="YYYY-MM-DD"'
 },

总结

未完待续…

原文链接:https://blog.csdn.net/weixin_43866089/article/details/119006425




所属网站分类: 技术文章 > 博客

作者:Hggh

链接:http://www.qianduanheidong.com/blog/article/248490/abdf5aed90b7bc5a0f18/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)