瀏覽代碼

视频监控后台摄像头增删改查修改

任敬轩 3 年之前
父節點
當前提交
daffbc93bd

+ 5 - 2
Modules/Camera/Enum/CameraEnum.php

@@ -61,7 +61,7 @@ class CameraEnum
     const REQUEST_TYPE_LOCAL = 'local';  //本地请求
 
     //摄像头来源
-    const CAMERA_SOURCE_1 = 1;  //视频录像机
+    const CAMERA_SOURCE_1 = 1;  //硬盘录像机
     const CAMERA_SOURCE_2 = 2;  //视频服务器
     const CAMERA_SOURCE_3 = 3;  //内网摄像头
 
@@ -81,7 +81,7 @@ class CameraEnum
         self::VIDEO_RECORDER_HK => '海康',
         self::VIDEO_RECORDER_DH => '大华',
         self::VIDEO_RECORDER_YS => '宇视',
-        self::VIDEO_RECORDER_TD => '天地伟业',
+//        self::VIDEO_RECORDER_TD => '天地伟业',
     ];
 
     //乐橙接口url
@@ -146,4 +146,7 @@ class CameraEnum
 
     //天地伟业token缓存key
     const TDWY_TOKEN_CACHE = 'tdwy_token';
+
+    //后台摄像头列表每页显示条数
+    const PAGE_SIZE = 7;
 }

+ 1 - 1
Modules/Camera/Http/Controllers/Api/TdwyController.php

@@ -126,7 +126,7 @@ class TdwyController extends BaseController
         $parentOrgIds  = Input::get('parentOrgIds', []);
         $params = [
             'querySingleType'  => true,
-            'needPage'  => true,
+            'needPage'  => false,
             'currentPage'  => 1,
             'pageSize'  => 10,
             'parentOrgIds'  => $parentOrgIds,

+ 153 - 27
Modules/Camera/Http/Controllers/CameraController.php

@@ -107,6 +107,10 @@ class CameraController extends BaseController
             $camera_list = $camera_list->where('camera_list.camera_type', $request->input('camera_type'));
         }
 
+        if ($request->has('camera_source') && $request->input('camera_source')) {
+            $camera_list = $camera_list->where('camera_list.camera_source', $request->input('camera_source'));
+        }
+
         $camera_list = $camera_list->select(
             'camera_list.id',
             'camera_list.camera_url',
@@ -114,10 +118,11 @@ class CameraController extends BaseController
             'camera_list.revert_id',
             'camera_list.sort',
             'camera_list.camera_type',
+            'camera_list.camera_source',
             'camera_list.is_show',
             'mine_list.title',
             'mine_list.degree'
-        )->paginate(50);
+        )->paginate(CameraEnum::PAGE_SIZE);
 
         foreach ($camera_list as $key => $val) {
             $camera_list[$key]->parent_title = MineList::where('id', explode('|', $val->degree)[0])->value('title');
@@ -125,10 +130,11 @@ class CameraController extends BaseController
 
         $tableObj             = new TableAuxiliary('camera/list', $camera_list);
 
-        $tableObj->search('input', 'mine_name', '矿区名称');
-        $tableObj->search('input', 'area_name', '区域名称');
+//        $tableObj->search('input', 'mine_name', '矿区名称');
+//        $tableObj->search('input', 'area_name', '区域名称');
         $tableObj->search('input', 'camera_name', '摄像头名称');
         $tableObj->search('select', 'camera_type', '摄像头类型', CameraEnum::CAMERA_TYPE_EXCHANGE);
+        $tableObj->search('select', 'camera_source', '摄像头来源', CameraEnum::CAMERA_SOURCE_EXCHANGE);
         $tableObj->topActions = ['add', 'import', 'importTemplate'];
         $tableObj->column('parent_title', '矿区名称');
         $tableObj->column('title', '区域名称');
@@ -136,12 +142,16 @@ class CameraController extends BaseController
         $tableObj->column('camera_type', '摄像头类型', function ($camera_type) {
             return CameraEnum::CAMERA_TYPE_EXCHANGE[$camera_type];
         });
+        $tableObj->column('camera_source', '摄像头来源', function ($camera_source) {
+            return CameraEnum::CAMERA_SOURCE_EXCHANGE[$camera_source];
+        });
 //        $tableObj->column('revert_id', '流媒体id');
 //        $tableObj->column('camera_url', '链接');
         $tableObj->column('is_show', '是否显示', function ($is_show, $item) {
             return '<span class="layui-form"><input type="checkbox" name="is_show" data-href="camera/list/edit?type=show&id=' . $item['id'] . '" lay-skin="switch" lay-text="是|否" ' . ($is_show == CameraEnum::IS_SHOW_YES ? 'checked' : '') . '></span>';
         });
         $tableObj->column('sort', '排序');
+        $data['pagesize']           = ceil($camera_list->total()/CameraEnum::PAGE_SIZE);
         $data['path']           = $tableObj->path;
         $data['items']          = $tableObj->items;
         $data['columns']        = $tableObj->columns;
@@ -197,10 +207,93 @@ class CameraController extends BaseController
 
     //摄像头管理区域列表ajax
     public function cameraUpdate(){
-        $camera_list = DB::table('camera_list')->where('mine_id',$_GET['id'])->get();
-        foreach($camera_list as $k=>$v){
-            $v->camera_type =   CameraEnum::CAMERA_TYPE_EXCHANGE[$v->camera_type];
+//        $camera_list = DB::table('camera_list')->where('mine_id',$_GET['id'])->get();
+//        foreach($camera_list as $k=>$v){
+//            $v->camera_type =   CameraEnum::CAMERA_TYPE_EXCHANGE[$v->camera_type];
+//        }
+        $camera_list = CameraList::join(
+            'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
+        )->orderBy('camera_list.sort', 'desc');
+
+        if ($_GET['mine_id'] != '' && $_GET['mine_id'] != null) {
+            $camera_list = $camera_list->where('camera_list.mine_id', $_GET['mine_id']);
+        }
+
+        if ($_GET['camera_name'] != '' && $_GET['camera_name'] != null) {
+            $camera_list = $camera_list->where('camera_list.camera_name', 'like', '%' . $_GET['camera_name'] . '%');
+        }
+
+        if ($_GET['camera_type'] != 0) {
+            $camera_list = $camera_list->where('camera_list.camera_type', $_GET['camera_type']);
+        }
+
+        if ($_GET['camera_source'] != 0) {
+            $camera_list = $camera_list->where('camera_list.camera_source', $_GET['camera_source']);
+        }
+
+        $camera_list = $camera_list->select(
+            'camera_list.id',
+            'camera_list.camera_url',
+            'camera_list.camera_name',
+            'camera_list.revert_id',
+            'camera_list.sort',
+            'camera_list.camera_type',
+            'camera_list.camera_source',
+            'camera_list.is_show',
+            'mine_list.title',
+            'mine_list.degree'
+        )->paginate(CameraEnum::PAGE_SIZE);
+
+        foreach ($camera_list as $key => $val) {
+            $camera_list[$key]->parent_title = MineList::where('id', explode('|', $val->degree)[0])->value('title');
+            $val->camera_type =   CameraEnum::CAMERA_TYPE_EXCHANGE[$val->camera_type];
+            $val->camera_source =   CameraEnum::CAMERA_SOURCE_EXCHANGE[$val->camera_source];
+        }
+
+        return $camera_list;
+    }
+
+    //摄像头管理区域列表ajax
+    public function camerapage(){
+        $camera_list = CameraList::join(
+            'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
+        )->orderBy('camera_list.sort', 'desc');
+
+        if ($_GET['mine_id'] != '' && $_GET['mine_id'] != null) {
+            $camera_list = $camera_list->where('camera_list.mine_id', $_GET['mine_id']);
+        }
+
+        if ($_GET['camera_name'] != '' && $_GET['camera_name'] != null) {
+            $camera_list = $camera_list->where('camera_list.camera_name', 'like', '%' . $_GET['camera_name'] . '%');
+        }
+
+        if ($_GET['camera_type'] != 0) {
+            $camera_list = $camera_list->where('camera_list.camera_type', $_GET['camera_type']);
+        }
+
+        if ($_GET['camera_source'] != 0) {
+            $camera_list = $camera_list->where('camera_list.camera_source', $_GET['camera_source']);
+        }
+
+        $camera_list = $camera_list->select(
+            'camera_list.id',
+            'camera_list.camera_url',
+            'camera_list.camera_name',
+            'camera_list.revert_id',
+            'camera_list.sort',
+            'camera_list.camera_type',
+            'camera_list.camera_source',
+            'camera_list.is_show',
+            'mine_list.title',
+            'mine_list.degree'
+        )->paginate(CameraEnum::PAGE_SIZE);
+
+        foreach ($camera_list as $key => $val) {
+            $camera_list[$key]->parent_title = MineList::where('id', explode('|', $val->degree)[0])->value('title');
+            $val->camera_type =   CameraEnum::CAMERA_TYPE_EXCHANGE[$val->camera_type];
+            $val->camera_source =   CameraEnum::CAMERA_SOURCE_EXCHANGE[$val->camera_source];
         }
+
         return $camera_list;
     }
 
@@ -248,7 +341,6 @@ class CameraController extends BaseController
             'mine_list.title',
             'mine_list.degree'
         )->first();
-
         //工作面列表
         $working_surface = WorkingSurfaceCamera::join(
             'working_surface', 'working_surface_camera.surface_id', '=', 'working_surface.id'
@@ -256,8 +348,8 @@ class CameraController extends BaseController
 
         $camera_list->parent_title    = MineList::where('id', explode('|', $camera_list->degree)[0])->value('title');
         $camera_list->working_surface = $working_surface;
-
         $tableObj = new TableAuxiliary('', $camera_list);
+
         $tableObj->column('parent_title', '矿区名称');
         $tableObj->column('title', '区域名称');
         $tableObj->column('camera_name', '摄像头名称');
@@ -270,19 +362,50 @@ class CameraController extends BaseController
         $tableObj->column('video_recorder', '视频服务器来源', function ($video_recorder) {
             return CameraEnum::VIDEO_RECORDER_EXCHANGE[$video_recorder];
         });
-        $tableObj->column('revert_id', '流媒体id');
-        $tableObj->column('user_name', '用户名');
-        $tableObj->column('password', '密码');
-        $tableObj->column('ip', 'ip地址');
-        $tableObj->column('port', '端口');
-        $tableObj->column('com_number', '通道号');
-        $tableObj->column('camera_url', '链接');
-        $tableObj->column('sort', '排序');
-        $tableObj->column('working_surface', '所属矿区区域');
-        $tableObj->column('cover_picture', '封面图片', function($cover_picture) {
-            return '<img src="'.$cover_picture.'">';
-        });
-        $tableObj->title = '摄像头链接详情';
+
+        if($camera_list->revert_id != '' && $camera_list->revert_id != null){
+            $tableObj->column('revert_id', '流媒体id');
+        }
+
+        if($camera_list->user_name != '' && $camera_list->user_name != null){
+            $tableObj->column('user_name', '用户名');
+        }
+
+        if($camera_list->password != '' && $camera_list->password != null){
+            $tableObj->column('password', '密码');
+        }
+
+        if($camera_list->ip != '' && $camera_list->ip != null){
+            $tableObj->column('ip', 'ip地址');
+        }
+
+        if($camera_list->port != '' && $camera_list->port != null){
+            $tableObj->column('port', '端口');
+        }
+
+        if($camera_list->com_number != '' && $camera_list->com_number != null){
+            $tableObj->column('com_number', '通道号');
+        }
+
+        if($camera_list->camera_url != '' && $camera_list->camera_url != null){
+            $tableObj->column('camera_url', '链接');
+        }
+
+        if($camera_list->sort != '' && $camera_list->sort != null){
+            $tableObj->column('sort', '排序');
+        }
+
+        if($camera_list->working_surface != '' && $camera_list->working_surface != null){
+            $tableObj->column('working_surface', '所属矿区区域');
+        }
+
+        if($camera_list->cover_picture != '' && $camera_list->cover_picture != null){
+            $tableObj->column('cover_picture', '封面图片', function($cover_picture) {
+                return '<img src="'.$cover_picture.'">';
+            });
+        }
+
+        $tableObj->title = '摄像头详情';
         return $this->tableView($tableObj);
     }
 
@@ -292,9 +415,12 @@ class CameraController extends BaseController
         $mineService = new MineServices();
         $mineService->initMineList();
         $titleList = $mineService->getTierList();
-
         $formObj = new FromAuxiliary('camera/list/add');
-        $formObj->tree_select('mine_id', '矿区单位', $titleList);
+        if(isset($_GET['mine_id']) && $_GET['mine_id'] != ''){
+            $formObj->tree_select('mine_id', '所属区域', $titleList,$_GET['mine_id']);
+        }else{
+            $formObj->tree_select('mine_id', '所属区域', $titleList);
+        }
         $formObj->input('camera_name', '摄像头名称');
         $formObj->select('camera_type', '摄像头类型', CameraEnum::CAMERA_TYPE_EXCHANGE, CameraEnum::CAMERA_TYPE_NORMAL);
         $formObj->select('camera_source', '摄像头来源', CameraEnum::CAMERA_SOURCE_EXCHANGE, CameraEnum::CAMERA_SOURCE_1);
@@ -308,7 +434,7 @@ class CameraController extends BaseController
         $formObj->select('code_stream', '视频码流', CameraEnum::CODE_STREAM_EXCHANGE, CameraEnum::CODE_STREAM_SUB);
         $formObj->input('sort', '排序', CameraEnum::DEFAULT_SORT);
         $formObj->uploadImg('cover_picture', '封面图片', '/admin/camera/upload/cover_picture', '');
-        $formObj->title = '添加请求链接';
+        $formObj->title = '添加摄像头';
         return $this->from($formObj);
     }
 
@@ -387,7 +513,7 @@ class CameraController extends BaseController
         $default_surface = WorkingSurfaceCamera::where('camera_id', $id)->value('surface_id');
 
         $formObj = new FromAuxiliary('camera/list/edit', $camera_list);
-        $formObj->tree_select('mine_id', '矿区单位', $titleList);
+        $formObj->tree_select('mine_id', '所属区域', $titleList);
         $formObj->input('camera_name', '摄像头名称');
         $formObj->select('camera_type', '摄像头类型', CameraEnum::CAMERA_TYPE_EXCHANGE);
         $formObj->select('camera_source', '摄像头来源', CameraEnum::CAMERA_SOURCE_EXCHANGE);
@@ -402,7 +528,7 @@ class CameraController extends BaseController
         $formObj->input('sort', '排序');
         $formObj->select('surface_id', '所属矿区区域', $surface_arr, $default_surface);
         $formObj->uploadImg('cover_picture', '封面图片', '/admin/camera/upload/cover_picture', $camera_list->cover_picture);
-        $formObj->title = '编辑请求链接';
+        $formObj->title = '编辑摄像头';
         return $this->from($formObj);
     }
 
@@ -410,7 +536,7 @@ class CameraController extends BaseController
     public function cameraListEditPost(Request $request)
     {
         if (!$request->input('mine_id')) {
-            return $this->error(1, '请选择矿区单位');
+            return $this->error(1, '请选择所属区域');
         }
 
         if (!$request->input('camera_type')) {

File diff suppressed because it is too large
+ 141 - 58
Modules/Camera/Resources/views/camera_add.blade.php


File diff suppressed because it is too large
+ 266 - 26
Modules/Camera/Resources/views/camera_list.blade.php


+ 1 - 1
Modules/Camera/Resources/views/mine_add.blade.php

@@ -854,7 +854,7 @@
     @endforeach
 
     <div class="layui-form-item" id="user_name">
-        <label class="layui-form-label">矿区单位</label>
+        <label class="layui-form-label">区域名称</label>
         <div class="layui-input-block">
             <input class="layui-input" type="text" name="title" value="{{ $item['title'] ?? (old('title') ?? ($column['default'] ?? '')) }}"/>
         </div>

+ 2 - 1
Modules/Camera/Routes/web.php

@@ -25,7 +25,8 @@ Route::prefix('admin')->group(function() {
     Route::get('/camera/list/importTemplate', 'CameraController@cameraListTemplate');
     Route::post('/camera/upload/cover_picture', 'CameraController@cameraUploadCpicture');
     Route::get('/camera/mine/list', 'CameraController@mineList');//摄像头管理区域列表ajax
-    Route::get('/camera/update', 'CameraController@cameraUpdate');//摄像头管理区域列表ajax
+    Route::get('/camera/update', 'CameraController@cameraUpdate');//摄像头列表更新ajax
+    Route::get('/camera/camerapage', 'CameraController@camerapage');//摄像头列表分页ajax
 
     //摄像头链接生成字段管理
 //    Route::get('/camera/field_list', 'CameraController@fieldList');

+ 7 - 7
Modules/Mine/Http/Controllers/MineController.php

@@ -32,7 +32,7 @@ class MineController extends BaseController
 
         $list = MineServices::getAdminMineList();
         $tableObj = new TreeAuxiliary('mine/list', $list);
-        $tableObj->column('title', '矿区单位名称');
+        $tableObj->column('title', '区域名称');
         $tableObj->column('sort', '排序');
         $tableObj->column('ip', 'ip');
         $tableObj->column('port', 'port');
@@ -50,8 +50,8 @@ class MineController extends BaseController
         $titleList = $mineService->getTierList();
 
         $formObj = new FromAuxiliary('mine/list/add');
-        $formObj->tree_select('parent_id', '父级矿区单位', $titleList);
-        $formObj->input('title', '矿区单位');
+        $formObj->tree_select('parent_id', '父级区域', $titleList);
+        $formObj->input('title', '区域名称');
         $formObj->input('sort', '排序', 1);
         $formObj->radio('is_hak', '视频服务器类型', [MineEnum::IS_HAK_YES => '海康',MineEnum::IS_HAK_TD => '天地伟业',MineEnum::IS_HAK_NO => '其它', ], 1);
         $formObj->input('ip', 'ip地址');
@@ -60,7 +60,7 @@ class MineController extends BaseController
         $formObj->input('secret', '请求secret');
         $formObj->input('sOrgId', '设备ID');
 //        $formObj->radio('show', '是否显示', [1 => '是', 0 => '否'], 1);
-        $formObj->title = '添加矿区单位';
+        $formObj->title = '添加区域';
         return $this->from($formObj);
     }
 
@@ -113,8 +113,8 @@ class MineController extends BaseController
         $titleOne  = MineServices::getAdminMineOne($request->input('id'));
 
         $formObj = new FromAuxiliary('mine/list/edit', $titleOne);
-        $formObj->tree_select('parent_id', '父级矿区单位', $titleList, $titleOne->parent_id);
-        $formObj->input('title', '矿区单位名称');
+        $formObj->tree_select('parent_id', '父级区域', $titleList, $titleOne->parent_id);
+        $formObj->input('title', '区域名称');
         $formObj->input('sort', '排序', 10);
         $formObj->radio('is_hak', '视频服务器类型', [MineEnum::IS_HAK_YES => '海康',MineEnum::IS_HAK_TD => '天地伟业',MineEnum::IS_HAK_NO => '其它', ], 0);
         $formObj->input('ip', 'id地址');
@@ -122,7 +122,7 @@ class MineController extends BaseController
         $formObj->input('key', '请求key');
         $formObj->input('secret', '请求secret');
         $formObj->input('sOrgId', '设备ID');
-        $formObj->title = '修改矿区单位';
+        $formObj->title = '修改区域';
         return $this->from($formObj);
     }
 

+ 10 - 10
Modules/Mine/Http/Controllers/SurfaceController.php

@@ -40,10 +40,10 @@ class SurfaceController extends BaseController
 
         $tableObj = new TableAuxiliary('surface/list', $list);
         $tableObj->column('title', '矿区单位名称');
-        $tableObj->column('working_area', '矿区区域类型', function ($working_area) {
+        $tableObj->column('working_area', '工作面类型', function ($working_area) {
             return SurfaceEnum::WORKING_AREA_LIST[$working_area];
         });
-        $tableObj->column('surface_name', '矿区区域名称');
+        $tableObj->column('surface_name', '工作面名称');
         return $this->tableList($tableObj);
     }
 
@@ -61,10 +61,10 @@ class SurfaceController extends BaseController
 
         $tableObj = new TableAuxiliary('surface/list/view', $list);
         $tableObj->column('title', '矿区单位名称');
-        $tableObj->column('working_area', '矿区区域类型', function ($working_area) {
+        $tableObj->column('working_area', '工作面类型', function ($working_area) {
             return SurfaceEnum::WORKING_AREA_LIST[$working_area];
         });
-        $tableObj->column('surface_name', '矿区区域名称');
+        $tableObj->column('surface_name', '工作面名称');
         return $this->tableView($tableObj);
     }
 
@@ -79,9 +79,9 @@ class SurfaceController extends BaseController
 
         $formObj = new FromAuxiliary('surface/list/add');
         $formObj->select('mine_id', '矿区单位', $titleArr);
-        $formObj->select('working_area', '矿区区域类型', SurfaceEnum::WORKING_AREA_LIST);
-        $formObj->input('surface_name', '矿区区域名称');
-        $formObj->title = '添加矿区区域';
+        $formObj->select('working_area', '工作面类型', SurfaceEnum::WORKING_AREA_LIST);
+        $formObj->input('surface_name', '工作面名称');
+        $formObj->title = '添加工作面';
         return $this->from($formObj);
     }
 
@@ -118,9 +118,9 @@ class SurfaceController extends BaseController
 
         $formObj = new FromAuxiliary('surface/list/edit', $surface);
         $formObj->select('mine_id', '矿区单位', $titleArr);
-        $formObj->select('working_area', '矿区区域类型', SurfaceEnum::WORKING_AREA_LIST);
-        $formObj->input('surface_name', '矿区区域名称');
-        $formObj->title = '编辑矿区区域';
+        $formObj->select('working_area', '工作面类型', SurfaceEnum::WORKING_AREA_LIST);
+        $formObj->input('surface_name', '工作面名称');
+        $formObj->title = '编辑工作面';
         return $this->from($formObj);
     }
 

File diff suppressed because it is too large
+ 51 - 3
public/static/js/fuelux.tree.min.js


+ 145 - 0
public/static/js/xlPaging.js

@@ -0,0 +1,145 @@
+;(function ($, window, document, undefined) {
+    'use strict';
+    function Paging(element, options) {
+        this.element = element;
+        this.options = {
+            nowPage: options.nowPage || 1, // 当前页码
+            pageNum: options.pageNum, // 总页码
+            buttonNum: (options.buttonNum>=5?options.buttonNum:5) || 7,// 页面显示页码数量
+            callback: options.callback // 回调函数
+        };
+        this.init();
+    }
+    Paging.prototype =  {
+        constructor : Paging,
+        init : function() {
+            this.createHtml();
+            this.bindClickEvent();
+            this.disabled();
+        },
+        createHtml : function(){
+            var me = this;
+            var nowPage = this.options.nowPage;
+            var pageNum = this.options.pageNum;
+            var buttonNum = this.options.buttonNum;
+            var content = [];
+            content.push("<ul>");
+            content.push("<li class='xl-prevPage'>上一页</li>");
+            //页面总数小于等于当前要展示页数总数,展示所有页面
+            if(pageNum <= buttonNum){
+                for(var i=1; i<=pageNum; i++){
+                    if (nowPage !== i) {
+                        content.push("<li>"+i+"</li>");
+                    } else {
+                        content.push("<li class='xl-active'>"+i+"</li>");
+                    }
+                }
+            }else if(nowPage <= Math.floor(buttonNum / 2)){
+                //当前页面小于等于展示页数总数的一半(向下取整),从1开始
+                for(var i=1;i<= buttonNum-2;i++){
+                    if (nowPage !== i) {
+                        content.push("<li>"+i+"</li>");
+                    } else {
+                        content.push("<li class='xl-active'>"+i+"</li>");
+                    }
+                }
+                content.push("<li class='xl-disabled'>...</li>");
+                content.push("<li>" + pageNum + "</li>");
+            }else  if(pageNum - nowPage <= Math.floor(buttonNum / 2)){
+                //当前页面大于展示页数总数的一半(向下取整)
+                content.push("<li>"+1+"</li>");
+                content.push("<li class='xl-disabled'>...</li>");
+                for(var i=pageNum-buttonNum+3; i<=pageNum; i++){
+                    if (nowPage !== i) {
+                        content.push("<li>"+i+"</li>");
+                    } else {
+                        content.push("<li class='xl-active'>"+i+"</li>");
+                    }
+                }
+            }else{
+                //前半部分页码
+                if(nowPage - Math.floor(buttonNum / 2) <= 0){
+                    for(var i=1;i<= Math.floor(buttonNum / 2);i++){
+                        if (nowPage !== i) {
+                            content.push("<li>"+i+"</li>");
+                        } else {
+                            content.push("<li class='xl-active'>"+i+"</li>");
+                        }
+                    }
+                }else{
+                    content.push("<li>"+1+"</li>");
+                    content.push("<li class='xl-disabled'>...</li>");
+                    for(var i=nowPage-Math.floor(buttonNum / 2)+(buttonNum % 2 == 0 ? 3: 2); i<=nowPage; i++){
+                        if (nowPage !== i) {
+                            content.push("<li>"+i+"</li>");
+                        } else {
+                            content.push("<li class='xl-active'>"+i+"</li>");
+                        }
+                    }
+
+                }
+                //后半部分页码
+                if(pageNum - nowPage <= 0){
+                    for(var i=nowPage+1;i<=pageNum;i++){
+                        content.push("<li>" + i + "</li>");
+                    }
+                }else{
+                    for(var i=nowPage+1; i<=nowPage+Math.floor(buttonNum / 2)-2; i++){
+                        content.push("<li>"+i+"</li>");
+                    }
+                    content.push("<li class='xl-disabled'>...</li>");
+                    content.push("<li>" + pageNum + "</li>");
+                }
+            }
+            content.push("<li class='xl-nextPage'>下一页</li>");
+            content.push("</ul>");
+            me.element.html(content.join(''));
+             // DOM重新生成后每次调用是否禁用button
+            setTimeout(function () {
+                me.disabled();
+            }, 20);
+            
+        },
+        bindClickEvent: function(){
+            var me = this;
+            me.element.off('click', 'li');
+            me.element.on('click', 'li', function () {
+                var cla = $(this).attr('class');
+                var num = parseInt($(this).html());
+                var nowPage = me.options.nowPage;
+                if( $(this).hasClass('xl-disabled')){
+                    return ;
+                }
+                if (cla === 'xl-prevPage') {
+                    if (nowPage !== 1) {
+                        me.options.nowPage -= 1;
+                    }
+                } else if (cla === 'xl-nextPage') {
+                    if (nowPage !== me.options.pageNum) {
+                        me.options.nowPage += 1;
+                    }
+                }else {
+                    me.options.nowPage = num;
+                }
+                me.createHtml();
+                if (me.options.callback) {
+                    me.options.callback(me.options.nowPage);
+                }
+            });
+
+        },
+        disabled: function () {
+            var me = this;
+            var nowPage = me.options.nowPage;
+            var pageNum = me.options.pageNum;
+            if (nowPage === 1) {
+                me.element.children().children('.xl-prevPage').addClass('xl-disabled');
+            } else if (nowPage === pageNum) {
+                me.element.children().children('.xl-nextPage').addClass('xl-disabled');
+            }
+        }
+    }
+    $.fn.paging = function (options) {
+        return new Paging($(this), options);
+    }
+})(jQuery, window, document);