开发业务(10)——fastadmin常见开发例子

场景1—— A页面的搜索结果需要跳转到B页面去(主要省去B页面重新输入字段的重复操作)
比如A表里面有个B关联的字段,现在需要直接从A跳转到B的列表页面去,具备直接查看的效果。例如从班级表里面有个功能,需要查看该班的学生,而该班的学生全部在另外一张表里面

                         {
                                name: 'xuesheng',
                                text: '班级学生',
                                title: function (table, row) {
                                    return "班级学生管理";
                                },
                                extend: 'data-toggle="tooltip"',
                                classname: 'btn btn-xs btn-info btn-addtabs',
                                url: function (table, row, j) {
                                    var url = '/pays?ref=addtabs&banji_id=' + table.id;
                                    return Fast.api.fixurl(url);
                                }
                            } 

其实只要在任意链接里面拼接我们需要的参数,会自动筛选 (用处非常广泛,适合页面跳来跳去的交互逻辑),大幅度提升交互系统后台的交互能力。

场景2:用户发表动态,选择视频的时候,隐藏图片,选择图片的时候,隐藏视频。
也是非常广泛的场景,选择A会导致B被隐藏,数据表里面填写的是A相关的值,选择B会隐藏A,填写的是B的值。这种需求基本是最普遍的需求之一,包括banner点击如果是放大图片,需要放入高清图,如果是链接,会隐藏需要放入的高清图,选择放入链接。其实使用jquery判断某个值即可。根据不同的值触发显示不同的数据。
首先需要将隐藏的俩个div 模块定义俩个变量,然后绑定jquery的change事件,每次变动值,都会触发显示的不同。

<script src="/assets/libs/jquery/dist/jquery.min.js"></script>
<script>
    window.onload = function () {
        //根据不同的值
        $('#c-vtype').change(function(){
            var vtype = $("#c-vtype").val();
            if(vtype == 1){
                $("#hfile").hide(); // 隐藏
                $("#himages").show();
            }else{
                $("#himages").hide(); // 隐藏
                $("#hfile").show(); // 隐藏
            }
        })
    }
</script>

场景3: 用户从一个新绑定的页面 跳到了B页面 绑定了一个参数,同时该参数对应了一个新的绑定 从课表那绑定了班级,在编辑班级页面的时候,也要一并把课表的信息传递过来

    <div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Grade_ids')}:</label>
        <div class="col-xs-12 col-sm-8">
            <input id="c-grade_ids" data-rule="required" data-source="grade/getGradeByBanji?banji_id={$banji_id}" data-multiple="true" class="form-control selectpage" name="row[grade_ids]" type="text" value="">
        </div>
    </div>

解决办法,将该页面用到了绑定参数的变量全部替换成绑定的参数新链接即可。
data-source=“grade/getGradeByBanji?banji_id={$banji_id}”
这样就限定了在当前页面数据可能存在的不一致性,直接定位data-source 替换掉对应的URL
好处是简单,但是无法实现二级联动(主要该页面绑定了一个唯一二级参数,不给二级联动),所以可以简化数据的获取

          //标签的弹窗相关数据
                            {
                                    name: 'xslist',
                                    text: '学生查看',
                                    title: function (table, row) {
                                        return "学生查看";
                                    },
                                    extend: 'data-toggle="tooltip"',
                                    classname:"btn btn-xs btn-danger btn-dialog",
                                    url: function (table, row, j) {
                                        var url = 'pays?ref=addtabs&banji_id=' + table.id;
                                        return Fast.api.fixurl(url);
                                    }
                                }

场景4: 拉取的时候,变更任意字段读取 可能有时候需要读取手机号 有时候需要读取nickname 有时候需要读取其他字段

    <div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
        <div class="col-xs-12 col-sm-8">
            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="realname" class="form-control selectpage" name="row[user_id]" type="text" value="">
        </div>
    </div>

这样很方便切换对应的需要显示的字段信息

场景5: 当前时间的格式是 2024-08-01 12:00:53 需要将其格式变成 2024-08-01
默认情况下 date 格式可以满足要求,但是如果是中途变更 不能再次进行生成 需要手动格式化前端页面
{field: ‘endtime’, title: __(‘Endtime’), operate:‘RANGE’, addclass:‘datetimerange’, autocomplete:false,formatter: Table.api.formatter.datetime, datetimeFormat:‘YYYY-MM-DD’}, 最后的字段 可以直接定位输入的格式

如果在页面对时间格式调整 data-date-format 处可以对时间格式进行调整

<div class="form-group">  
    <label class="control-label col-xs-12 col-sm-2">{:__('Starttime')}:</label>  
    <div class="col-xs-12 col-sm-8">    
        <input id="c-starttime" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[starttime]" type="text" value="{:date('Y-m-d H:i:s')}">  
    </div></div>

场景6: 默认与非默认 修改默认值 (切换选项按钮)

{foreach name="statusList" item="vo"}
            <label for="row[status]-{$key}"><input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="2"}checked{/in} /> {$vo}</label> 
            {/foreach}

修改循环的列表信息:

<div class="radio">
                        <label for="row[pay_status]-1"><input id="row[pay_status]-1" name="row[pay_status]" type="radio" value="1"> 待付款</label>
                        <label for="row[pay_status]-2"><input id="row[pay_status]-2" name="row[pay_status]" type="radio" value="2" checked=""> 已付款</label>
                        <label for="row[pay_status]-3"><input id="row[pay_status]-3" name="row[pay_status]" type="radio" value="3"> 已退款</label>
                        </div>

如果不想后台进行控制了,直接写死在前端。
如果是后端想要重新控制:

    $this->view->assign("payStatusList", $this->model->getPayStatusList()); //控制前端的列表变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大梁来了

千山万水总是情,打赏一块行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值