php-fastadmin教程2

1.操作列的无用按钮隐藏

1.打开www.fa.com—public—assets—js—backend—schedule.js

2.编辑代码。

formatter:function (value,row,index){
     var that = $.extend({},this);
     var table = $(that.table).clone(true);

     $(table).data("operate-edit",null);
     $(table).data("operate-del",null);

     that.table = table;
     return Table.api.formatter.operate.call(that,value,row,index);

 3.操作完成,可以看到编辑与删除按钮隐藏。

2.处理添加功能 

1.打开www.fa.com—application—admin—view—pim—add.html

2.在add.html中不想被显示的地方添加代码。

style="display: none"

3.依照上文,将开始时间、结束时间、权重、状态都进行隐藏。 只剩事务、内容和附件。

4. 修改stime提交的默认值。将stime的value值改为以下代码。

{:date('2000-01-01 00:00:01')}

5.回到schedule.js文件

在stime中的formatter中添加代码,设置完成后回到管理系统发现时间显示未开始。

{field: 'stime', title: __('Stime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,
     formatter: function (value,row){
     if(row.stime == "2000-01-01 00:00:01"){
     return "未开始"
     }else{
     return row.stime;
     }
}},

 6.将etime进行复制改为未结束

3.自定义按钮开始和结束的添加 

1. public—assets—js—bankend—pim—schedule.js控制表格以及回收站

2.修改开始终止按钮

table: table,
     buttons:[
     {
     name:'start',
     text:'',
     classname:'btn btn-xs btn-info btn-ajax btn-restoreit',
     icon:'fa fa-play',
     url:'pim/schedule/start',
     confirm:'是否开始?',
     refresh:'true',
     },
     {
     name:'finish',
     text:'',
     classname:'btn btn-xs btn-danger btn-ajax btn-restoreit',
     icon:'fa fa-stop',
     url:'pim/schedule/finish',
     confirm:'是否结束?',
     refresh:'true',
     }
     ],

3.功能     www.fa.com—application—admin—controller—pim—schedule.php

 最最下方加入代码

 /**
     * 开始事务
     */
    public function start($ids = null)
    {
        /* Step.Ⅰ 从数据库取得该条数据 */
        $row = $this->model->get($ids);
        if(!$row){
            $this->error('No results were found');
        }
        /* Step.Ⅱ 数据操作权限 */
        $adminIds = $this->getDataLimitAdminIds();
        if(is_array($adminIds)){
            if(!in_array($row[$this->dataLimitField],$adminIds)){
                $this->error('You have no permission');
            }
        }
        /* Step.Ⅲ 更新数据库 */
        if($this->request->isPost()){
            $row->status = 1;
            $row->stime = date('Y-m-d H:i:00');
            $row->save();
        }
        /* Step.Ⅳ 返回处理结果 */
        $rst = array(
            'code' => 1,
            'mag' => "事务成功开始",
            'data' => $row,
            'url' => '.',
            'wait' => 3,
        );
        return json($rst);
    }
    /**
     * 结束事务
     */
    public function finish($ids = null)
    {
        /* Step.Ⅰ 从数据库取得该条数据 */
        $row = $this->model->get($ids);
        if(!$row){
            $this->error('No results were found');
        }
        /* Step.Ⅱ 数据操作权限 */
        $adminIds = $this->getDataLimitAdminIds();
        if(is_array($adminIds)){
            if(!in_array($row[$this->dataLimitField],$adminIds)){
                $this->error('You have no permission');
            }
        }
        /* Step.Ⅲ 更新数据库 */
        if($this->request->isPost()){
            $row->status = 2;
            $row->etime = date('Y-m-d H:i:00');
            $row->save();
        }
        /* Step.Ⅳ 返回处理结果 */
        $rst = array(
            'code' => 1,
            'mag' => "事务成功结束",
            'data' => $row,
            'url' => '.',
            'wait' => 3,
        );
        return json($rst);
    }

4.可以点击开始、结束按钮,但是点击完成之后还可以继续点击,所以继续修改代码,修改schedule.js文件。

var table = $(that.table).clone(true);

    if(row.status == 0){
    $(table).data("operate-finish",null);
    }else if(row.status == 1){
    $(table).data("operate-start",null);
    }else if(row.status == 2){
    $(table).data("operate-start",null);
    $(table).data("operate-finish",null);
    }

    $(table).data("operate-edit",null);
    $(table).data("operate-del",null);    

5.view—pim—index.html

data-operate-edit="{:$auth->check('pim/schedule/edit')}"
data-operate-del="{:$auth->check('pim/schedule/del')}"
data-operate-start="{:$auth->check('pim/schedule/start')}"
data-operate-finish="{:$auth->check('pim/schedule/finish')}"

6.回到个人日程管理,可以看到开始结束。

4.增加时间消耗列,DB值计算后显示 

1.找到schedule.js,在stime和etime中添加costhours

{field: 'stime', title: __('Stime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,
    formatter: function (value,row){
    if(row.stime == "2000-01-01 00:00:01"){
    return "未开始"
    }else
    return row.stime;
    }
    }},
{field:'costhours',title:__('CostHour'),formatter:function (value,row,index){
    if( row.etime == "2000-01-01 00:00:01"){
    return "未设定"
    }else{
    etime = new Date(row.etime.toString());
    stime = new Date(row.stime.toString());

    if( (etime - stime) <0 ){
    return "开始时间或结束时间错误"
    }else{
    return((etime - stime)/(1000*60*60)).toFixed(2);
    }
    }
 }},

 2.可以看到时间的计算

3.在www.fa.com—application—admin—lang—zh-cn—schedule.php

    'Weigh'       => '权重',
    'Costhour'    => '消耗时间',
    'Unit'        => '小时'

4.改为中文消耗时间 

 {field:'costhours',title:__('CostHour') + '(' + __('Unit')+ ')',formatter:function (value,row,index){
     if( row.etime == "2000-01-01 00:00:01"){
     return "未设定"

5.开始时间或结束时间错误

if( (etime - stime) <0 ){
   return __('stime') + "或" +__('etime') +"错误";

5.添加deadline 

1.在navicat数据库中设计表添加字段,deadline

2.打开js下的schedule.js文件,在title下添加

{field: 'title', title: __('Title'),align:'left'},
{field: 'deadline', title: __('Deadline'),align:'center'},

3.在lang里设置 

    'Unit'        => '小时',
    'Deadline'    => '截止时间'

4.www.fa.com—public—assets—js—require-table.js,在datetime下增加dateonly

dateonly: function (value, row, index) {
                    var datetimeFormat = typeof this.datetimeFormat === 'undefined' ? 'YYYY-MM-DD' : this.datetimeFormat;
                    if (isNaN(value)) {
                        return value ? Moment(value).format(datetimeFormat) : __('None');
                    } else {
                        return value ? Moment(parseInt(value) * 1000).format(datetimeFormat) : __('None');
                    }
                },

5.修改deadline代码,截止日期修改成功。

{field: 'deadline', title: __('Deadline'),align:'center',formatter:Table.api.formatter.dateonly},

6.新增字段的添加编辑功能 

1. appliction—admin—view下的add.html和edit.html对应添加与编辑,在c-title下增加

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

2.打开model—pim—schedule.php,在最下方添加

    //  如果画面截止时间为空,则插入null
    public function setDeadlineAttr($value){
        if($value == '' || !insert($value)){
            return null;
        }else{
            //如果不为空,原值插入
            return $value;
        }
    }

3.编辑模块,在title下添加。

    <div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Deadline')}:</label>
        <div class="col-xs-12 col-sm-8">
            <input id="c-deadline" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[deadline]" type="text" value="{:$row.deadline?datetime($row.etime):''}">
        </div>
    </div>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值