zoukankan      html  css  js  c++  java
  • fastadmin管理后台--带个人日程管理功能

    按照国际惯例先放效果图

     核心代码:

    schedule.js

    define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
    
        var Controller = {
            index: function () {
                // 初始化表格参数配置
                Table.api.init({
                    extend: {
                        index_url: 'pim/schedule/index' + location.search,
                        add_url: 'pim/schedule/add',
                        edit_url: 'pim/schedule/edit',
                        del_url: 'pim/schedule/del',
                        multi_url: 'pim/schedule/multi',
                        table: 'pim_schedule',
                    }
                });
    
                var table = $("#table");
    
                // 初始化表格
                table.bootstrapTable({
                    url: $.fn.bootstrapTable.defaults.extend.index_url,
                    pk: 'id',
                    sortName: 'id',
                    columns: [
                        [
                            {checkbox: true},
                            {field: 'id', title: __('Id')},
                            {field: 'admin_id', title: __('Admin_id')},
                            {field: 'operate', title: __('Operate'),
                                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,
                                    }
                                ],
                                events: Table.api.events.operate,
                                // formatter: Table.api.formatter.operate
                                formatter: function(value,row,index){
                                    var that = $.extend({}, this);
                                    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);
    
                                    that.table = table;
                                    return Table.api.formatter.operate.call(that,value,row,index);
                                }
                            },
                            {field: 'title', title: __('Title'), align: 'left'},
                            {field: 'deadline', title: __('DeadLine'), align: 'center', formatter: Table.api.formatter.dateonly},
                            {field: 'stime', title: __('Stime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                            {field: 'etime', title: __('Etime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                            {field: 'costhours', title: __('CostHours') + '(' + __('Unit') + ')', formatter: function(value,row,index){
                                etime = new Date(row.etime.toString());
                                stime = new Date(row.stime.toString());
    
                                if(etime - stime < 0){
                                    return __('Stime') + '或' + __('Etime') + '有误';
                                }else{
                                    return ((etime - stime)/(1000*60*60)).toFixed(1);
                                }
    
                            }},
                            {field: 'attachfile', title: __('Attachfile'),
                                formatter:function(value,row,index){
                                    if(row.attachfile == ''){
                                        return '';
                                    }else{
                                        return "<a href='" + row.attachfile + "' target='_blank'>" + __('View') + "</a>";
                                    }
                                }
                            },
                            {field: 'status', title: __('Status'), searchList: {"0":__('Status 0'),"1":__('Status 1'),"2":__('Status 2'),"9":__('Status 9')}, formatter: Table.api.formatter.status},
                            {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: 'weight', title: __('Weight')},
                        ]
                    ]
                });
    
                // 为表格绑定事件
                Table.api.bindevent(table);
            },
            recyclebin: function () {
                // 初始化表格参数配置
                Table.api.init({
                    extend: {
                        'dragsort_url': ''
                    }
                });
    
                var table = $("#table");
    
                // 初始化表格
                table.bootstrapTable({
                    url: 'pim/schedule/recyclebin' + location.search,
                    pk: 'id',
                    sortName: 'id',
                    columns: [
                        [
                            {checkbox: true},
                            {field: 'id', title: __('Id')},
                            {field: 'title', title: __('Title'), align: 'left'},
                            {
                                field: 'deletetime',
                                title: __('Deletetime'),
                                operate: 'RANGE',
                                addclass: 'datetimerange',
                                formatter: Table.api.formatter.datetime
                            },
                            {
                                field: 'operate',
                                width: '130px',
                                title: __('Operate'),
                                table: table,
                                events: Table.api.events.operate,
                                buttons: [
                                    {
                                        name: 'Restore',
                                        text: __('Restore'),
                                        classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
                                        icon: 'fa fa-rotate-left',
                                        url: 'pim/schedule/restore',
                                        refresh: true
                                    },
                                    {
                                        name: 'Destroy',
                                        text: __('Destroy'),
                                        classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
                                        icon: 'fa fa-times',
                                        url: 'pim/schedule/destroy',
                                        refresh: true
                                    }
                                ],
                                formatter: Table.api.formatter.operate
                            }
                        ]
                    ]
                });
    
                // 为表格绑定事件
                Table.api.bindevent(table);
            },
            add: function () {
                Controller.api.bindevent();
            },
            edit: function () {
                Controller.api.bindevent();
            },
            api: {
                bindevent: function () {
                    Form.api.bindevent($("form[role=form]"));
                }
            }
        };
        return Controller;
    });

    controller--schedule.php

    <?php
    
    namespace appadmincontrollerpim;
    
    use appcommoncontrollerBackend;
    
    /**
     * 个人日程管理
     *
     * @icon fa fa-circle-o
     */
    class Schedule extends Backend
    {
        
        /**
         * Schedule模型对象
         * @var appadminmodelpimSchedule
         */
        protected $model = null;
    
        protected $dataLimit = true;
        protected $dataLimitField = 'admin_id';
    
        public function _initialize()
        {
            parent::_initialize();
            $this->model = new appadminmodelpimSchedule;
            $this->view->assign("statusList", $this->model->getStatusList());
        }
        
        /**
         * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
         * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
         * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
         */
    
        /**
         * 开始事务
         */
        public function start($ids = null){
            /* step1 从数据库里取得该条数据 */
            $row = $this->model->get($ids);
            if(!$row){
                $this->error(__("No results were found"));
            }
    
            /* step2 数据操作权限 */
            $adminIds = $this->getDataLimitAdminIds();
            if(is_array($adminIds)){
                if(!in_array($row[$this->dataLimitField], $adminIds)){
                    $this->error(__("You have no permission"));
                }
            }
    
            /* step3 更新数据库 */
            if($this->request->isPost()){
                $row->status = 1;
                $row->stime = date('Y-m-d H:i:00');
                $row->save();
            }
    
            /* step4 返回处理结果 */
            $rst = array(
                'code' => 1,
                'msg' => '事务成功开始。',
                'data' => $row,
                'url' => '.',
                'wait' => 3
            );
            return json($rst);
        }
    
        /**
         * 结束事务
         */
        public function finish($ids = null){
            /* step1 从数据库里取得该条数据 */
            $row = $this->model->get($ids);
            if(!$row){
                $this->error(__("No results were found"));
            }
    
            /* step2 数据操作权限 */
            $adminIds = $this->getDataLimitAdminIds();
            if(is_array($adminIds)){
                if(!in_array($row[$this->dataLimitField], $adminIds)){
                    $this->error(__("You have no permission"));
                }
            }
    
            /* step3 更新数据库 */
            if($this->request->isPost()){
                $row->status = 2;
                $row->etime = date('Y-m-d H:i:00');
                $row->save();
            }
    
            /* step4 返回处理结果 */
            $rst = array(
                'code' => 1,
                'msg' => '事务成功结束。',
                'data' => $row,
                'url' => '.',
                'wait' => 3
            );
            return json($rst);
        }
        
    
    }

     新增数据表 fa_pim_schedule

    完整源码+QQ:965794175

  • 相关阅读:
    程序猿编程,软件设计都干什么?
    工作流——来龙去脉
    开发编码流程
    我的spring-boot开发环境
    JSR 303
    项目中java异常处理
    学习交流,一些数据结构和算法实现!
    C运算符
    js锚点
    玻璃工艺学笔记
  • 原文地址:https://www.cnblogs.com/chenyingying0/p/13512253.html
Copyright © 2011-2022 走看看