ss 1 vuosi sitten
vanhempi
commit
f3be28b960

+ 419 - 256
application/admin/controller/Index.php

@@ -100,6 +100,196 @@ class Index extends Auth
 
         $this->assign('orderNums',$endCount);
 
+
+        //今日看板
+        $dayOrderNums1 = Db::name('orders')
+            ->where('org_id',$this->orgId)
+            ->where('del',0)
+            ->where('order_mode',1)
+            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
+            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
+            ->count();
+        $dayOrderNums2 = Db::name('orders')
+            ->where('org_id',$this->orgId)
+            ->where('del',0)
+            ->where('order_mode',4)
+            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
+            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
+            ->count();
+        $dayOrderNums3 = Db::name('orders')
+            ->where('org_id',$this->orgId)
+            ->where('del',0)
+            ->where('order_mode',5)
+            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
+            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
+            ->count();
+        $dayOrderNums4 = Db::name('orders')
+            ->where('org_id',$this->orgId)
+            ->where('del',0)
+            ->where('order_mode',6)
+            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
+            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
+            ->count();
+        $dayOrderNums5 = Db::name('orders')
+            ->where('org_id',$this->orgId)
+            ->where('del',0)
+            ->where('order_mode',2)
+            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
+            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
+            ->count();
+        $dayOrderNums6 = Db::name('orders')
+            ->where('org_id',$this->orgId)
+            ->where('del',0)
+            ->where('order_mode',3)
+            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
+            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
+            ->count();
+        $dayOrderCount =[
+            'count1'=> $dayOrderNums1,
+            'count2'=> $dayOrderNums2,
+            'count3'=> $dayOrderNums3,
+            'count4'=> $dayOrderNums4,
+            'count5'=> $dayOrderNums5,
+            'count6'=> $dayOrderNums6,
+        ];
+        $this->assign('dayOrderCount',$dayOrderCount);
+
+        $notice = Db::name('notice')
+            ->where('org_id',$this->orgId)
+            ->where('del',0)
+            ->where('user_id',$this->userId)
+            ->field('id,title,create_time')
+            ->order('id desc')
+            ->limit(2)
+            ->select();
+        $this->assign('notice',$notice);
+
+        //常用模块
+        $module = Db::name('user_menu')->where('user_id',$this->userId)->order('count desc')->select();
+        $id = 500;
+        $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
+        $submenus = [];
+        foreach ($menus as $k=>$v){
+            if($v['id'] == $id){
+                $submenus = $v['child'];
+                break;
+            }
+        }
+        $lists11 = [];
+        foreach ($submenus as $k=>$v){
+//            if(!$v['url']){
+//                $v['url'] = url('Index/submenu',['id'=>$v['id'],'t'=>1]);
+//            }
+            $lists11[] = $v;
+        }
+
+        $limit = 8;
+        $modules = [];
+        foreach ($module as $k=>$v){
+            foreach ($lists11 as $kk=>$vv){
+                if(count($modules) == $limit){
+                    continue;
+                }
+                if($vv['id'] == $v['menu_id']){
+                    $v['title'] = $vv['title'];
+                    $v['url'] = $vv['url'];
+                    $v['img'] = $vv['img'];
+                    $modules[] = $v;
+                    break;
+                }
+            }
+        }
+
+        $this->assign('module',$modules);
+
+        $threeMenu = model('Menu')->getMenuTree1($this->rolesId,$this->orgId,'');
+        $userEndMenu = [];
+        foreach ($threeMenu as $k=>$v){
+            if($v['url']){
+                $userEndMenu[] = $v;
+            }
+        }
+
+        $this->assign('userEndMenu',$userEndMenu);
+
+        $authMenuIds = array_column($threeMenu,'id');
+
+        //固定模块
+        $fixedModule = Db::name('menu')
+            ->where('id',500)
+            ->where('del',0)
+            ->find();
+
+
+        $fixedModule1 = Db::name('menu')
+            ->where('id',1)
+            ->where('del',0)
+            ->find();
+
+        $fixedModule2 = Db::name('menu')
+            ->where('id',144)
+            ->where('del',0)
+            ->find();
+
+        $fixedModule3 = Db::name('menu')
+            ->where('id',163)
+            ->where('del',0)
+            ->find();
+
+        $fixedModule4 = Db::name('menu')
+            ->where('id',28)
+            ->where('del',0)
+            ->find();
+        $fixedModuleAuth = $fixedModuleAuth1 = $fixedModuleAuth2 = $fixedModuleAuth3 = $fixedModuleAuth4 = 0 ;
+        if(in_array($fixedModule['id'],$authMenuIds)){
+            $fixedModuleAuth = 1 ;
+        }
+        if(in_array($fixedModule1['id'],$authMenuIds)){
+            $fixedModuleAuth1 = 1 ;
+        }
+        if(in_array($fixedModule2['id'],$authMenuIds)){
+            $fixedModuleAuth2 = 1 ;
+        }
+        if(in_array($fixedModule3['id'],$authMenuIds)){
+            $fixedModuleAuth3 = 1 ;
+        }
+        if(in_array($fixedModule4['id'],$authMenuIds)){
+            $fixedModuleAuth4 = 1 ;
+        }
+
+        $this->assign('fixedModule',$fixedModule);
+        $this->assign('fixedModule1',$fixedModule1);
+        $this->assign('fixedModule2',$fixedModule2);
+        $this->assign('fixedModule3',$fixedModule3);
+        $this->assign('fixedModule4',$fixedModule4);
+
+        $this->assign('fixedModuleAuth',$fixedModuleAuth);
+        $this->assign('fixedModuleAuth1',$fixedModuleAuth1);
+        $this->assign('fixedModuleAuth2',$fixedModuleAuth2);
+        $this->assign('fixedModuleAuth3',$fixedModuleAuth3);
+        $this->assign('fixedModuleAuth4',$fixedModuleAuth4);
+
+
+
+        // APP下载二维码
+        $download = think_encrypt(url('h5/Index/download','',true,true));
+        $this->assign('download',$download);
+        // 小程序二维码
+        $wxcode = Db::name('org')->where('id',$this->orgId)->value('wxqrcode');
+        $this->assign('wxcode',$wxcode);
+        // 陪护h5
+        $phcode = think_encrypt(config('app.ph_url').'?orgId='.$this->orgId);
+        $this->assign('phcode',$phcode);
+        // 点餐h5
+        $shopcode = think_encrypt(config('app.shop_url').'?orgId='.$this->orgId);
+        $this->assign('shopcode',$shopcode);
+
+        // 商城h5
+        $xshopcode = think_encrypt(config('app.xshop_url').'?orgId='.$this->orgId);
+        $this->assign('xshopcode',$xshopcode);
+
+
+
         return $this->fetch();
     }
 
@@ -184,277 +374,90 @@ class Index extends Auth
     }
 
     public function def(){
-        // APP下载二维码
-        $download = think_encrypt(url('h5/Index/download','',true,true));
-        $this->assign('download',$download);
-        // 小程序二维码
-        $wxcode = Db::name('org')->where('id',$this->orgId)->value('wxqrcode');
-        $this->assign('wxcode',$wxcode);
-        // 陪护h5
-        $phcode = think_encrypt(config('app.ph_url').'?orgId='.$this->orgId);
-        $this->assign('phcode',$phcode);
-        // 点餐h5
-        $shopcode = think_encrypt(config('app.shop_url').'?orgId='.$this->orgId);
-        $this->assign('shopcode',$shopcode);
-
-        // 商城h5
-        $xshopcode = think_encrypt(config('app.xshop_url').'?orgId='.$this->orgId);
-        $this->assign('xshopcode',$xshopcode);
-
-        //本月
-        $month = date('Y-m');
-        $sMonth = $month.'-1 00:00:00';
-        $eMonth = $month.'31 23:59:59';
-
-        //上月
-        $tmp_year=substr($month,0,4);
-        //切割出月份
-        $tmp_mon =substr($month,5,2);
-
-        $tmp_forwardmonth=mktime(0,0,0,$tmp_mon-1,1,$tmp_year);
-        $lastMonth=date("Y-m",$tmp_forwardmonth);
-
-        $sLastMonth = $lastMonth.'-1 00:00:00';
-        $eLastMonth = $lastMonth.'31 23:59:59';
-
-        $userNums = Db::name('user')
-            ->alias('u')
-            ->join('user_org uo','uo.user_id=u.id')
-            ->where('uo.org_id',$this->orgId)
-            ->where('u.del',0)
-            ->where('u.enable',1)
-            ->count();
-
-        $monthUserNums = Db::name('user')
-            ->alias('u')
-            ->join('user_org uo','uo.user_id=u.id')
-            ->where('uo.org_id',$this->orgId)
-            ->where('u.del',0)
-            ->where('u.enable',1)
-            ->where('u.create_time','>=',$sMonth)
-            ->where('u.create_time','<=',$eMonth)
-            ->count();
-        $lastMonthUserNums = Db::name('user')
-            ->alias('u')
-            ->join('user_org uo','uo.user_id=u.id')
-            ->where('uo.org_id',$this->orgId)
-            ->where('u.del',0)
-            ->where('u.enable',1)
-            ->where('u.create_time','>=',$sLastMonth)
-            ->where('u.create_time','<=',$eLastMonth)
-            ->count();
-
-        $userLastNums = $monthUserNums-$lastMonthUserNums;
-        $userCount = [
-            'userNums'=>$userNums,
-            'userLastNums'=>$userLastNums,
-        ];
-        $this->assign('userCount',$userCount);
-
-        $monthOrderNums = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('create_yyyymm',date('Ym'))
-            ->where('del',0)
-            ->count();
-        $lastMonthOrderNums = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('create_yyyymm',date('Ym',strtotime('-1 month')))
-            ->where('del',0)
-            ->count();
-        $orderLastNums = $monthOrderNums -$lastMonthOrderNums;
-        $orderCount = [
-            'orderNums'=>$monthOrderNums,
-            'orderLastNums'=>$orderLastNums,
-        ];
-        $this->assign('orderCount',$orderCount);
-
-        $yearOrderNums = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('create_yyyy',date('Y'))
-            ->where('del',0)
-            ->count();
-        $lastYearOrderNums = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('create_yyyy',date('Y',strtotime('-1 year')))
-            ->where('del',0)
-            ->count();
-        $endYearOrderCount = $yearOrderNums - $lastYearOrderNums;
-        if($lastYearOrderNums < 1){
-            $orderLastYearNums = 100;
-        }else{
-            $orderLastYearNums = round($endYearOrderCount/$lastYearOrderNums,2)*100;
+        $id = 500;
+        $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
+        $submenus = [];
+        foreach ($menus as $k=>$v){
+            if($v['id'] == $id){
+                $submenus = $v['child'];
+                break;
+            }
         }
-        $orderYearCount = [
-            'orderYearNums'=>$yearOrderNums,
-            'orderLastYearNums'=>$orderLastYearNums,
-        ];
-        $this->assign('orderYearCount',$orderYearCount);
-
-        $activeUserNums = Db::name('user')
-            ->alias('u')
-            ->join('user_org uo','uo.user_id=u.id')
-            ->where('uo.org_id',$this->orgId)
-            ->where('u.del',0)
-            ->where('u.enable',1)
-            ->where('u.last_login_time','>=',$sMonth)
-            ->where('u.last_login_time','<=',$eMonth)
-            ->count();
-        $lastActiveUserNums = Db::name('user')
-            ->alias('u')
-            ->join('user_org uo','uo.user_id=u.id')
-            ->where('uo.org_id',$this->orgId)
-            ->where('u.del',0)
-            ->where('u.enable',1)
-            ->where('u.last_login_time','>=',$sLastMonth)
-            ->where('u.last_login_time','<=',$eLastMonth)
-            ->count();
-        $activeUserLastNums = $activeUserNums-$lastActiveUserNums;
-        $activeUserCount = [
-            'activeUserNums'=>$activeUserNums,
-            'activeUserLastNums'=>$activeUserLastNums,
-        ];
-        $this->assign('activeUserCount',$activeUserCount);
-
-        $dayOrderNums1 = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('del',0)
-            ->where('order_mode',1)
-            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
-            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
-            ->count();
-        $dayOrderNums2 = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('del',0)
-            ->where('order_mode',4)
-            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
-            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
-            ->count();
-        $dayOrderNums3 = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('del',0)
-            ->where('order_mode',5)
-            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
-            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
-            ->count();
-        $dayOrderNums4 = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('del',0)
-            ->where('order_mode',6)
-            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
-            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
-            ->count();
-        $dayOrderNums5 = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('del',0)
-            ->where('order_mode',2)
-            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
-            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
-            ->count();
-        $dayOrderNums6 = Db::name('orders')
-            ->where('org_id',$this->orgId)
-            ->where('del',0)
-            ->where('order_mode',3)
-            ->where('create_time','>=',date('Y-m-d').' 00:00:00')
-            ->where('create_time','<=',date('Y-m-d').' 23:59:59')
-            ->count();
-        $dayOrderCount =[
-            'count1'=> $dayOrderNums1,
-            'count2'=> $dayOrderNums2,
-            'count3'=> $dayOrderNums3,
-            'count4'=> $dayOrderNums4,
-            'count5'=> $dayOrderNums5,
-            'count6'=> $dayOrderNums6,
-        ];
-        $this->assign('dayOrderCount',$dayOrderCount);
-
-        $mode = input('mode',1);
-        $todoList = Db::name('todo')
-            ->where('org_id',$this->orgId)
-            ->where('del',0)
-            ->where('work_type_mode',$mode)
-            ->limit(11)
-            ->order('id desc')
-            ->select();
-        foreach ($todoList as $k=>$v){
-            $todoList[$k]['user_name'] = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
-            $todoList[$k]['create_user_name'] = Db::name('user')->where('id',$v['create_user_id'])->value('real_name');
-            $todoList[$k]['content'] = Db::name('orders')->where('id',$v['order_id'])->value('content');
+        $lists = [];
+        foreach ($submenus as $k=>$v){
+            if(!$v['url']){
+//                $v['url'] = url('Index/indexsub',['id'=>$v['id'],'t'=>1]);
+            }
+            $lists[] = $v;
         }
+        $this->assign('lists',$lists);
 
-        $this->assign('mode',$mode);
-        $this->assign('todoList',$todoList);
-
-        $group = Db::name('attendance_group')
-            ->where('del',0)
-            ->where('org_id',$this->orgId)
+        // 获取常用模块
+        $cys = Db::name('user_menu')
+            ->where('user_id',$this->userId)
+            ->order('count desc,id asc')
             ->select();
 
-        $groupsId = [];
-        $groupsId2 = [];
-        $week = date('w');
-        foreach ($group as $k=>$v){
-            $content = json_decode($v['content'],true);
-            if($v['type'] == 1){
-                foreach ($content['week'] as $kk=>$vv){
-                    if($vv['week'] == $week && $vv['class_id'] > 0){
-                        $groupsId[] = $v['id'];
-                    }
+        $cys = $cys?$cys:[];
+        $ncys = [];
+        foreach ($cys as $k=>$v){
+            foreach ($lists as $kk=>$vv){
+                if(count($ncys) == 5){
+                    continue;
                 }
-            }
-            if($v['type'] == 2){
-                $groupClass = Db::name('attendance_group_class')
-                    ->where('group_id',$v['id'])
-                    ->where('org_id',$this->orgId)
-                    ->where('day',date('Y-m-d'))
-                    ->find();
-                if($groupClass){
-                    $groupsId2[] = $v['id'];
+                if($vv['id'] == $v['menu_id']){
+                    $v['title'] = $vv['title'];
+                    $v['url'] = $vv['url'];
+                    $v['img'] = $vv['img'];
+                    $ncys[] = $v;
+                    break;
                 }
             }
         }
-        $endGroupIds = array_unique(array_merge($groupsId,$groupsId2));
-        $userCount = Db::name('attendance_group_user')
-            ->where('org_id',$this->orgId)
-            ->whereIn('group_id',$endGroupIds)
-            ->count();
-        $userIds = Db::name('attendance_group_user')
-            ->where('org_id',$this->orgId)
-            ->whereIn('group_id',$endGroupIds)
-            ->column('user_id');
-        $attendanceNums = 0;
-        foreach ($userIds as $k=>$v){
-            $attendanceRecord = Db::name('attendance_record')
-                ->where('user_id',$v)
-                ->where('org_id',$this->orgId)
-//                ->where('status',1)
-                ->where('create_time','>=',date('Y-m-d').' 00:00:00')
-                ->where('create_time','<=',date('Y-m-d').' 23:59:59')
-                ->select();
-            $flag = 0;
-            if($attendanceRecord){
-                foreach ($attendanceRecord as $kk=>$vv){
-                    if($vv['status'] == 1){
-
-                    }else{
-                        $flag = 1;
+        $this->assign('cys',$ncys);
+
+        // 自定义模块
+        $usermenus = Db::name('user_menu_group')->where('user_id',$this->userId)->order('sort asc,id asc')->select();
+
+        $usermenus = $usermenus?$usermenus:[];
+
+        $groupMenuList = $usermenus;
+        $allmenus = [];
+        foreach ($usermenus as $k=>$v){
+            $menus = [];
+            if($v['menus']){
+                $menuids = explode(',',$v['menus']);
+                $allmenus = array_merge($allmenus,$menuids);
+                foreach ($lists as $kk=>$vv){
+                    if(in_array($vv['id'],$menuids)){
+                        $menus[] = $vv;
                     }
                 }
-                if($flag == 0){
-                    $attendanceNums +=1;
-                }
             }
-
+            $usermenus[$k]['menus'] = $menus;
         }
-        $attendanceNums3 = $userCount-$attendanceNums;
-        $attendanceCount1 = [
-            'count1' => $userCount, //总人数
-            'count2' => $attendanceNums, //在职人数
-            'count3' => $attendanceNums3>0?$attendanceNums3:0, //缺勤人数
-            'bl' => $userCount>0?round($attendanceNums/$userCount,2)*100:0,
-            'bl2' => $userCount>0?round($attendanceNums3/$userCount,2)*100:0,
+        $menus = [];
+        foreach ($lists as $kk=>$vv){
+            if(!$allmenus || !in_array($vv['id'],$allmenus)){
+                $menus[] = $vv;
+            }
+        }
+
+        $usermenus[] = [
+            'id' => 0,
+            'title' => '综合模块',
+            'menus' => $menus
         ];
 
-        $this->assign('attendanceCount1',$attendanceCount1);
+
+
+        $arr[] = [
+            'id'=>0,
+            'title'=>'综合模块',
+        ];
+
+        $this->assign('usermenusgroup',array_merge($arr,$groupMenuList));
+        $this->assign('usermenus',$usermenus);
 
 
 
@@ -1190,6 +1193,166 @@ class Index extends Auth
 
         return $this->fetch();
     }
+
+
+    public function searchMenu(){
+        $menuName = input('menu_name');
+        $list = model('Menu')->getMenuTree1($this->rolesId,$this->orgId,$menuName);
+
+        $tlist = [];
+        foreach ($list as $k=>$v){
+            if($v['url']){
+                $tlist[] = $v;
+            }
+        }
+
+        $this->success('','',$tlist);
+    }
+    public function indexsub(){
+
+        $userInfo = Db::name('user')
+            ->where('id',$this->userId)
+            ->find();
+        $this->assign('userInfo',$userInfo);
+
+
+        $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
+        $this->assign('menus',$menus);
+        $userInfo = Db::name('user')
+            ->where('id',$this->userId)
+            ->find();
+        $this->assign('userInfo',$userInfo);
+
+        // 判断用户是否是调度
+        $isDispatch = 0;
+        if(check_is_dispatch($this->userId) || check_two_dispatch($this->userId)){
+            $isDispatch = 1;
+        }
+        $this->assign('isDispatch',$isDispatch);
+
+        $order = 0;
+        // 判断用户是否是调度
+        $level1 = check_is_dispatch($this->userId);
+        $level2 = check_two_dispatch($this->userId);
+        $level2onoff = two_dispatch_off($this->orgId);
+        if(!$level1 && !$level2){
+            $order = -1;
+        }else{
+            // 一级调度
+            if($level1 || (!$level2onoff && $level2)){
+                $map[] = ['org_id','=',$this->orgId];
+                $map[] = ['del','=',0];
+                $map[] = ['order_mode','=',1];
+                if($level2onoff){
+                    $map[] = ['is_deal','=',0];
+                }
+                if(!is_admin($this->userId)){
+                    $auth = get_dispatch_auth($this->userId);
+                    if($auth){
+                        $map[] = ['work_type_mode', 'in', $auth];
+                        $where[] = ['o.work_type_mode', 'in', $auth];
+                    }else{
+                        $map[] = ['work_type_mode', '=', -1];
+                        $where[] = ['o.work_type_mode', '=', -1];
+                    }
+                }
+                $order = Db::name('orders')->where($map)->count();
+
+                //$驳回的订单
+                $where[] = ['o.del','=',0];
+                $where[] = ['t.del','=',0];
+                $bh = Db::name('orders')
+                    ->alias('o')
+                    ->join('todo t','t.order_id=o.id')
+                    ->where('t.todo_mode',4)
+                    ->where('t.org_id',$this->orgId)
+                    ->where('o.order_mode',4)
+                    ->where('o.org_id',$this->orgId)
+                    ->where($where)
+                    ->group('o.id')
+                    ->count();
+
+                $order = $order + $bh;
+
+            } else if($level2 && $level2onoff) { // 二级调度
+                $rolesId = Db::name('user_roles')->where('user_id',$this->userId)->value('roles_id');
+                if(!$rolesId){
+                    $order = 0;
+                }else{
+                    $map[] = ['b.org_id','=',$this->orgId];
+                    $map[] = ['b.del','=',0];
+                    $map[] = ['b.order_mode','=',1];
+                    $map[] = ['b.is_deal','=',1];
+                    $map[] = ['a.roles_id','=',$rolesId];
+                    if(!is_admin($this->userId)){
+                        $auth = get_dispatch_auth($this->userId);
+                        if($auth){
+                            $map[] = ['b.work_type_mode', 'in', $auth];
+                        }else{
+                            $map[] = ['b.work_type_mode', '=', -1];
+                        }
+                    }
+                    $order = Db::name('dispatch_log')
+                        ->alias('a')
+                        ->join('orders b','b.id = a.order_id')
+                        ->where($map)
+                        ->field('a.*')
+                        ->count();
+                }
+
+            }
+        }
+        $complainCount = Db::name('complain')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
+        $hiddendangerCount = Db::name('hiddendanger')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
+        $endCount = $order+$complainCount+$hiddendangerCount;
+
+        $this->assign('orderNums',$endCount);
+
+
+        return $this->fetch();
+    }
+
+    public function menugroup($id = 0){
+        if(request()->isPost()){
+            $res = model('UserMenuGroup')->updates($this->userId);
+            if($res){
+                $this->success('操作成功');
+            }else{
+                $this->error(model('UserMenuGroup')->getError());
+            }
+        }else{
+            if($id){
+                $info = db('user_menu_group')->where('id',$id)->find();
+                if($info){
+                    $info['menus'] = $info['menus']?explode(',',$info['menus']):[];
+                }
+                $this->assign('info',$info);
+            }
+
+            $id = 500;
+            $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
+            $submenus = [];
+            foreach ($menus as $k=>$v){
+                if($v['id'] == $id){
+                    $submenus = $v['child'];
+                    break;
+                }
+            }
+            $this->assign('submenus',$submenus);
+            return $this->fetch();
+        }
+    }
+
+    public function menugroupdel(){
+        $id = input('id',0);
+        $ret = Db::name('user_menu_group')->where('id',$id)->where('user_id',$this->userId)->delete();
+        if($ret){
+            $this->success('操作成功');
+        }else{
+            $this->error('操作失败');
+        }
+    }
+
 }
 
 

+ 1 - 1
application/admin/view/common/common2.html

@@ -41,7 +41,7 @@
     <button aria-hidden="true" class="close" type="button">×</button>
     <span class="alert-content"></span>
 </div>
-<div style="padding: 15px;background-color: transparent;">
+<div style="background-color: transparent;">
     {block name="main"}{/block}
 </div>
 

+ 166 - 346
application/admin/view/index/def.html

@@ -1,387 +1,207 @@
 {extend name="common/common2" /}
 {block name="main"}
+<style>
+    .gray-bg{
+        background-color:transparent!important;
+    }
+
+</style>
 <link rel="stylesheet" href="/admin/css/index.css">
 
-<div class="main-all">
-    <div class="main1">
-        <div class="row">
-            <div class="col-xs-3">
-                <div class="main1-bg1 one-bg">
-                    <div class="main1-type-title">用户统计</div>
-                    <div class="main1-type-nums">{$userCount.userNums}</div>
-                    <div class="main1-type-bottom">
-                        <span class="pull-left">较上月</span>
-                        {if($userCount.userLastNums >0)}
-                        <div class="type-bottom-right">
-                            <span>+{$userCount.userLastNums}</span>
-                            <img src="/admin/img/up.png" alt="">
-                        </div>
-                        {elseif($userCount.userLastNums < 0)}
-                        <div class="type-bottom-right">
-                            <span>{$userCount.userLastNums}</span>
-                            <img src="/admin/img/down.png" alt="">
-                        </div>
-                        {else}
-                        <div class="type-bottom-right">
-                            <span>{$userCount.userLastNums}</span>
-                            <img src="/admin/img/down.png" alt="">
-                        </div>
-                        {/if}
-                    </div>
-                </div>
-            </div>
-            <div class="col-xs-3">
-                <div class="main1-bg1 two-bg">
-                    <div class="main1-type-title">本月订单总数</div>
-                    <div class="main1-type-nums">{$orderCount.orderNums}</div>
-                    <div class="main1-type-bottom">
-                        <span class="pull-left">较上月</span>
-                        {if($orderCount.orderLastNums >0)}
-                        <div class="type-bottom-right">
-                            <span>+{$orderCount.orderLastNums}</span>
-                            <img src="/admin/img/up.png" alt="">
-                        </div>
-                        {elseif($orderCount.orderLastNums < 0)}
-                        <div class="type-bottom-right">
-                            <span>{$orderCount.orderLastNums}</span>
-                            <img src="/admin/img/down.png" alt="">
-                        </div>
-                        {else}
-                        <div class="type-bottom-right">
-                            <span>{$orderCount.orderLastNums}</span>
-                            <img src="/admin/img/down.png" alt="">
-                        </div>
-                        {/if}
-                    </div>
-                </div>
-            </div>
-            <div class="col-xs-3">
-                <div class="main1-bg1 three-bg">
-                    <div class="main1-type-title">年度订单总数</div>
-                    <div class="main1-type-nums">{$orderYearCount.orderYearNums}</div>
-                    <div class="main1-type-bottom">
-                        <span class="pull-left">同比增长率</span>
-                        {if($orderYearCount.orderLastYearNums >0)}
-                        <div class="type-bottom-right">
-                            <span>+{$orderYearCount.orderLastYearNums}%</span>
-                            <img src="/admin/img/up.png" alt="">
-                        </div>
-                        {elseif($orderYearCount.orderLastYearNums < 0)}
-                        <div class="type-bottom-right">
-                            <span>{$orderYearCount.orderLastYearNums}%</span>
-                            <img src="/admin/img/down.png" alt="">
-                        </div>
-                        {else}
-                        <div class="type-bottom-right">
-                            <span>{$orderYearCount.orderLastYearNums}%</span>
-                            <img src="/admin/img/down.png" alt="">
-                        </div>
-                        {/if}
-                    </div>
-                </div>
-            </div>
-            <div class="col-xs-3">
-                <div class="main1-bg1 four-bg">
-                    <div class="main1-type-title">本月活跃用户</div>
-                    <div class="main1-type-nums">{$activeUserCount.activeUserNums}</div>
-                    <div class="main1-type-bottom">
-                        <span class="pull-left">较上月</span>
-                        {if($activeUserCount.activeUserLastNums >0)}
-                        <div class="type-bottom-right">
-                            <span>+{$activeUserCount.activeUserLastNums}</span>
-                            <img src="/admin/img/up.png" alt="">
-                        </div>
-                        {elseif($activeUserCount.activeUserLastNums < 0)}
-                        <div class="type-bottom-right">
-                            <span>{$activeUserCount.activeUserLastNums}</span>
-                            <img src="/admin/img/down.png" alt="">
-                        </div>
-                        {else}
-                        <div class="type-bottom-right">
-                            <span>{$activeUserCount.activeUserLastNums}</span>
-                            <img src="/admin/img/down.png" alt="">
-                        </div>
-                        {/if}
-                    </div>
-                </div>
-            </div>
-        </div>
+<div class="gydef-box" id="group-menus-vueapp">
 
+    <div class="indexsub-bread-crumbs-box">
+        <a href="{:url('index/index')}" class="active">首页</a>
+        <a href="">首页</a>
+        <a href="">首页</a>
     </div>
-    <div class="main2">
-        <div class="main-all-title">
-            <div class="semicircle color2"></div>
-            <span>今日订单状态总览</span>
-        </div>
-        <div class="main2-body">
-            <div class="row">
-                <div class="col-xs-2">
-                    <div class="body-todo">
-                        <div class="nums border-right">{$dayOrderCount.count1}</div>
-                        <div class="title">待处理</div>
-                    </div>
-                </div>
-                <div class="col-xs-2">
-                    <div class="body-todo">
-                        <div class="nums border-right">{$dayOrderCount.count2}</div>
-                        <div class="title">已派发</div>
-                    </div>
-                </div>
-                <div class="col-xs-2">
-                    <div class="body-todo">
-                        <div class="nums border-right">{$dayOrderCount.count3}</div>
-                        <div class="title">已完成</div>
-                    </div>
-                </div>
-                <div class="col-xs-2">
-                    <div class="body-todo">
-                        <div class="nums border-right">{$dayOrderCount.count4}</div>
-                        <div class="title">已评价</div>
-                    </div>
-                </div>
-                <div class="col-xs-2">
-                    <div class="body-todo">
-                        <div class="nums border-right">{$dayOrderCount.count5}</div>
-                        <div class="title">用户主动撤销</div>
-                    </div>
-                </div>
-                <div class="col-xs-2">
-                    <div class="body-todo">
-                        <div class="nums">{$dayOrderCount.count6}</div>
-                        <div class="title">被调度取消</div>
-                    </div>
-                </div>
 
+    <div class="gydef-search-menu-addgropu-box">
+        <div class="menu-search-box">
+            <div class="menu-search-input">
+                <input type="text" v-model="defMenuName" id="def_menu_name" placeholder="搜索您需要的功能模块">
+            </div>
+            <div class="menu-search-img-btn">
+                <img src="/admin/img/search.png" alt="" @click="searchMenu()">
             </div>
-
         </div>
+        <div class="add-group pull-right"><a href="javascript:;" url="{:url('Index/menugroup')}" data-title="创建分组" onclick="layer_open(this,2)" style="text-decoration: none;color:inherit">创建分组</a></div>
     </div>
-    <div class="main3">
-        <div class="row">
-            <div class="col-xs-12">
-                <div class="main3-left">
-                    <div class="main3-left-title">
-                        <div class="left-semicircle"></div>
-                        <span class="tab-list {if($mode==1)}cur{/if}" data-mode="1" onclick="modeTodoClick(this)">报修工单列表</span>
-                        <span class="tab-list {if($mode==2)}cur{/if}" data-mode="2" onclick="modeTodoClick(this)">保洁工单列表</span>
-                        <span class="tab-list {if($mode==3)}cur{/if}" data-mode="3" onclick="modeTodoClick(this)">运送工单列表</span>
-                        <span class="tab-list {if($mode==4)}cur{/if}" data-mode="4" onclick="modeTodoClick(this)">应急工单列表</span>
-                    </div>
-                    <div class="main3-left-body">
-                        <table id="table" style="border-collapse: collapse"></table>
 
+    <div class="gydef-often-module-box">
+        <div class="gydef-often-module-header">常用模块 </div>
+        <div class="gydef-often-module-body">
+            <div class="gydef-often-module-body-info" v-for="(item,index) in cyList" :key="index">
+                <a href="" >
+                    <div class="gydef-menu-info-box">
+                        <div class="menu-icon">
+                            <img :src="item.img" alt="">
+                        </div>
+                        <div class="menu-name">
+                            <div class="title">{{item.title}}</div>
+                            <div class="des">{{item.des}}</div>
+                        </div>
                     </div>
-                </div>
+                </a>
             </div>
-            <!--<div class="col-xs-4">-->
-                <!--<div class="main3-right">-->
-                    <!--<div class="main-all-title">-->
-                        <!--<div class="semicircle color3"></div>-->
-                        <!--<span>项目人员考勤</span>-->
-                    <!--</div>-->
-                    <!--<div class="main3-right-body">-->
-                        <!--<div class="main3-right-body-top">-->
-
-                            <!--<div class="left-all">-->
-                                <!--<div class="left" id="onTheJobUser"></div>-->
-                                <!--<div class="percent color1">{$attendanceCount1.bl}%</div>-->
-                            <!--</div>-->
-
-                            <!--<div class="right">-->
-                                <!--<div class="title color1">在职人员</div>-->
-                                <!--<div class="nums">{$attendanceCount1.count2}人</div>-->
-                            <!--</div>-->
-                        <!--</div>-->
-                        <!--<div class="main3-right-body-top">-->
-                            <!--<div class="left-all">-->
-                                <!--<div class="left" id="absenteeism"></div>-->
-                                <!--<div class="percent color2">{$attendanceCount1.bl2}%</div>-->
-                            <!--</div>-->
-
-                            <!--<div class="right">-->
-                                <!--<div class="title color2">缺勤人员</div>-->
-                                <!--<div class="nums">{$attendanceCount1.count3}人</div>-->
-                            <!--</div>-->
-                        <!--</div>-->
-                    <!--</div>-->
-                <!--</div>-->
-            <!--</div>-->
-
         </div>
-
-
     </div>
-    <div class="main4">
-        <div class="row">
-            <div class="col-xs-3">
-                <div class="main4-left">
-                    <div class="main4-left-title">
-                        <div class="semicircle"></div>
-                        <span>软件综合信息</span>
-                    </div>
-<!--                    <div class="main4-left-body">-->
-<!--                        <div><a target="_blank" href="/doc/慧后勤SP版操作说明书-PC.pdf">慧后勤SP版操作说明书-PC端</a></div>-->
-<!--                        <div><a target="_blank" href="/doc/慧后勤SP版操作说明书-APP.pdf">慧后勤SP版操作说明书-移动端</a></div>-->
-<!--&lt;!&ndash;                        <div><a target="_blank" href="/doc/后勤操作说明书-陪护系统.pdf">慧后勤操作说明书-陪护系统</a></div>&ndash;&gt;-->
 
-<!--                    </div>-->
+    <div class="gydef-group-module-box">
+        <div class="gydef-group-module-header">
+            <div class="gydef-group-name-box">
+                <div v-for="(item,index) in groupList" :key="index" style="display: inline-block">
+                    <div v-if="item.id == curGroupId" class="name cur-group-name" @click="clickGroupName(item.id)">{{item.title}}</div>
+                    <div v-if="item.id != curGroupId" class="name" @click="clickGroupName(item.id)">{{item.title}}</div>
                 </div>
             </div>
-            <div class="col-xs-9">
-                <div class="main4-right">
-                    <!--<div class="qrcode1">-->
-                        <!--<img src="{:url('Qrcode/qrcode',['code'=>$shopcode,'type'=>1])}" alt="点餐二维码">-->
-                        <!--<div class="title">点餐二维码</div>-->
-                    <!--</div>-->
-<!--                    <div class="qrcode2">-->
-<!--                        <img src="{:url('Qrcode/qrcode',['code'=>$xshopcode,'type'=>1])}" alt="商城客户端二维码">-->
-<!--                        <div class="title">商城客户端二维码</div>-->
-<!--                    </div>-->
-<!--                    <div class="qrcode2">-->
-<!--                        <img src="{:url('Qrcode/qrcode',['code'=>$phcode,'type'=>1])}" alt="陪护客户端二维码">-->
-<!--                        <div class="title">陪护客户端二维码</div>-->
-<!--                    </div>-->
-<!--                    {notempty name="wxcode"}-->
-<!--                    <div class="qrcode2">-->
-<!--                        <img src="{$wxcode}" alt="小程序二维码">-->
-<!--                        <div class="title">小程序二维码</div>-->
-<!--                    </div>-->
-<!--                    {/notempty}-->
-                    <div class="qrcode2">
-                        <img src="{:url('Qrcode/qrcode',['code'=>$download,'type'=>1])}" alt="APP下载二维码">
-                        <div class="title">APP下载二维码</div>
-                    </div>
-                </div>
+            <div class="gydef-group-caozuo" v-if="curGroupId > 0">
+                <div class="edit"><a href="javascript:;" :url="editurl" data-title="编辑" onclick="layer_open(this,2)" style="text-decoration: none;color:inherit">编辑 </a></div>
+<!--                <div class="del"><a href="javascript:;"  :url="delurl" data-confirm="确定要删除此分组吗?" style="text-decoration: none;color:inherit" class="btn confirm ajax-get data-reload">删除</a></div>-->
+                <div class="del" @click="delGroup()">删除</div>
             </div>
         </div>
+        <div class="gydef-group-module-body">
+            <div class="gydef-often-module-body-info" v-for="(item,index) in menuList" :key="index">
+                <a :href="item.url" >
+                    <div class="gydef-menu-info-box">
+                        <div class="menu-icon">
+                            <img :src="item.img" alt="">
+                        </div>
+                        <div class="menu-name">
+                            <div class="title">{{item.title}}</div>
+                            <div class="des">{{item.des}}</div>
+                        </div>
+                    </div>
+                </a>
+            </div>
 
+        </div>
+    </div>
 
 
-
-    </div>
 </div>
 
 {/block}
 
 {block name="script"}
-<script src="/static/echarts.js"></script>
 <script>
-    function modeTodoClick(_self){
-        var mode = $(_self).attr('data-mode');
-        $('.tab-list').removeClass('cur');
-        $(_self).addClass('cur');
-        var url = '{:url("index/todo")}?mode='+mode;;
-        console.log('search',url);
-        if(url){
-            $("#table").jqGrid('setGridParam', {
-                url: url,
-                page: 1
-            }).trigger("reloadGrid");
-        }
-    }
+    var usermenusgroup = {:json_encode($usermenusgroup)};
+    var usermenus = {:json_encode($usermenus)};
+    var cys = {:json_encode($cys)};
+    new Vue({
+        el: '#group-menus-vueapp',
+        data: function() {
+            return {
+                groupList: usermenusgroup?usermenusgroup:[],
+                menuList:[],
+                cyList:cys?cys:[],
+                curGroupId:0,
+                editurl:'',
+                delurl:'',
+                defMenuName:''
+            }
+        },
+        watch: {
+
+        },
+        created(){
+            let curGroupId = this.curGroupId;
+            let newMenus = [];
+            usermenus.forEach((item) => {
+                if(curGroupId == item.id){
+                    newMenus = item.menus;
+                }
+            });
+            this.menuList = newMenus;
+        },
+        methods: {
+            clickGroupName(e){
+                const that = this;
+                that.curGroupId = e;
+                that.defMenuName = '';
+                let newMenus = [];
+                usermenus.forEach((item) => {
+                    if(e == item.id){
+                        newMenus = item.menus;
+                    }
+                });
+                that.menuList = newMenus;
+
+              that.editurl =  "{:url('Index/menugroup')}?id="+e;
+              that.delurl =  "{:url('Index/menugroupdel')}?id="+e;
+            },
 
+            delGroup(){
+                let url = this.delurl;
+                layer.confirm('是否确认删除?', {
+                    btn: ['确认', '取消'], //按钮
+                    shade: false //不显示遮罩
+                }, function() {
+                    layer.closeAll();
+                    $.post(url,{},function (res) {
+                        if(res.code==0){
+                            layer.msg(res.msg);
+                            return;
+                        }else {
+                            layer.msg(res.msg,{time:1000},function () {
+                                window.location.reload();
+                            });
+                        }
+                    },'json')
+                }, function() {
+                    layer.closeAll();
+                });
+            },
 
+            searchMenu(){
+                let defMenuName = this.defMenuName;
+                if(defMenuName){
+                    let newcyList = [];
+                    cys.forEach((item) => {
+                        if(item.title.toString().indexOf(defMenuName) != -1){
+                            newcyList.push(item);
+                        }
+                    });
 
-    $(function () {
-        // setInterval(function () {
-        //     attendanceCount1();
-        // },5*60*1000);
-        // function attendanceCount1(){
-            var url = 'attendanceCount1';
-            $.post(url,function (res) {
-                if(res.code == 1){
-                    option = {
-                        color: ['#607DFE','#EDF4F5'],
-                        legend: {
-                            top: '5%',
-                            left: 'center'
-                        },
-                        series: [
-                            {
-                                type: 'pie',
-                                radius: ['55%', '70%'],
-                                avoidLabelOverlap: false,
-                                labelLine: {
-                                    show: false
-                                },
-                                data: [
-                                    { value: res.data.count2 },
-                                    { value: res.data.count3 },
-                                ]
-                            }
-                        ]
-                    };
-                    var myChart2 = echarts.init(document.getElementById('onTheJobUser'));
-                    myChart2.setOption(option);
+                    this.cyList = newcyList;
 
-                    option2 = {
-                        color: ['#FF755B','#EDF4F5'],
-                        legend: {
-                            top: '5%',
-                            left: 'center'
-                        },
-                        series: [
-                            {
-                                type: 'pie',
-                                radius: ['55%', '70%'],
-                                avoidLabelOverlap: false,
-                                labelLine: {
-                                    show: false
-                                },
-                                data: [
-                                    { value: res.data.count3 },
-                                    { value: res.data.count2 },
-                                ]
-                            }
-                        ]
-                    };
-                    var myChart3 = echarts.init(document.getElementById('absenteeism'));
-                    myChart3.setOption(option2);
-                }
-            })
-        // }
+                    let newMenuList = [];
+                    this.menuList.forEach((item) => {
+                        if(item.title.toString().indexOf(defMenuName) != -1){
+                            newMenuList.push(item);
+                        }
+                    });
 
+                    this.menuList = newMenuList;
 
-        $(window).bind("resize",function(){
-            var width=$(".jqGrid_wrapper").width();
-            $("#table").setGridWidth(width);
-        });
-        $.jgrid.defaults.styleUI="Bootstrap";
-        $("#table").jqGrid({
-            url:"{:url('todo')}?mode={$mode}",
-            datatype: "json",
-            colModel:[
-                {label:'编号',name:'id',index:'id', sortable: false},
-                {label:'工单类型',name:'work_type_mode_text',index:'work_type_mode_text',sortable: false},
-                {label:'分单时间',name:'create_time',index:'create_time',sortable: false},
-                {label:'发起人',name:'user_name',index:'user_name',sortable: false},
-                {label:'执行人',name:'to_user_name',index:'to_user_name',sortable: false},
-                {label:'接单时间',name:'confirm_time',index:'confirm_time',sortable: false},
-                {label:'状态',name:'todo_mode_text',index:'todo_mode_text',sortable: false,formatter:function (a, b, c) {
-                        return  '<span style="color: '+c.todo_mode_color+'">'+a+'</span>'
-                    }},
-            ],
-            rowNum:11,
-            rowList:[11,20,30,50,100],
-            pager: '#pager',
-            sortname: 'id',
-            viewrecords: true,
-            autowidth:true,
-            mtype: 'post',
-            height: 'auto',
-            emptyrecords: "暂无数据",
-            sortorder: "desc",
-            caption:"",
-            loadComplete: function (xhr) {
-                if(xhr.code==0){
-                    layer.msg(xhr.msg);
-                    return false;
                 }
-            },
-        });
+            }
+        }
+    })
 
 
-    })
+    function defSearchMenu(){
+        var menu_name = $('#def_menu_name').val();
+        var url = '{:url("index/def")}';
+        $.post(url,{def_menu_name:menu_name},function (e){
+            if(e.code == 1){
+
+                // var str = '';
+                // $('#menu-list-box').html();
+                // var list = e.data;
+                // if(list.length > 0){
+                //     for (var i in list){
+                //         str +='<a href="'+list[i].url+'">';
+                //         str +='<div class="zi">'+list[i].title+'</div>';
+                //         str += '</a>';
+                //     }
+                //
+                // }
+                // $('#menu-list-box').html(str);
+            }
+        })
+    }
 
 </script>
 {/block}

+ 221 - 128
application/admin/view/index/index.html

@@ -203,25 +203,18 @@
                 <div class="gymain1">
                     <div class="menu-search-box">
                         <div class="menu-search-input">
-                            <input type="text" name="menu_name" placeholder="您想去的菜单页">
+                            <input type="text" name="menu_name" id="menu_name" placeholder="您想去的菜单页">
                         </div>
                         <div class="menu-search-img-btn">
-                            <img src="/admin/img/search.png" alt="">
+                            <img src="/admin/img/search.png" alt=""onclick="searchMenu()">
                         </div>
                     </div>
-                    <div class="menu-list-box">
-                        <a href="">
-                            <div class="zi">人员配置管理</div>
-                        </a>
-                        <a href="">
-                            <div class="zi">人员配置管理</div>
-                        </a>
-                        <a href="">
-                            <div class="zi">人员配置管理</div>
-                        </a>
-                        <a href="">
-                            <div class="zi">人员配置管理</div>
+                    <div class="menu-list-box" id="menu-list-box">
+                        {foreach $userEndMenu as $k=>$v}
+                        <a href="{$v['url']}">
+                            <div class="zi">{$v['title']}</div>
                         </a>
+                        {/foreach}
                     </div>
                     <div class="ggw-box">
                         <img src="/admin/img/guanggaowei.png" alt="">
@@ -240,14 +233,25 @@
                     <div class="qrcode-box">
                         <div class="swiper-qrcode" id="swiper-qrcode">
                             <div class="swiper-wrapper">
+                                {if $download}
+                                <div class="swiper-slide">
+                                    <div class="qrcode-title">APP下二维码</div>
+                                    <img src="{$download}">
+                                </div>
+                                {/if}
+                                {if $wxcode}
                                 <div class="swiper-slide">
-                                    <div class="qrcode-title">APP下载/小程序二维码</div>
-                                    <img src="/admin/img/screenbg.png">
+                                    <div class="qrcode-title">小程序二维码</div>
+                                    <img src="{$wxcode}">
                                 </div>
+                                {/if}
+                                {if $phcode}
                                 <div class="swiper-slide">
-                                    <div class="qrcode-title">APP下载/小程序二维码</div>
-                                    <img src="/admin/img/screenbg.png">
+                                    <div class="qrcode-title">陪护二维码</div>
+                                    <img src="{$phcode}">
                                 </div>
+                                {/if}
+
                             </div>
                             <div class="box-swiper-pagination" id="box-swiper-pagination1"></div>
                         </div>
@@ -274,149 +278,216 @@
                             <div class="col-xs-7" style="padding: 0 5px!important;">
                                 <div class="onemenu">
                                     <div class="col-xs-6">
-                                        <div class="menu-info-box">
-                                            <div class="menu-icon">
-                                                <img src="" alt="">
-                                            </div>
-                                            <div class="menu-name">
-                                                <div class="title">工作台</div>
-                                                <div class="des">功能列表</div>
+                                        <a href="{if $fixedModuleAuth ==1} {:url('index/indexsub')} {else /}javascript:void(0){/if}">
+                                            <div class="menu-info-box">
+                                                <div class="menu-icon">
+                                                    <img src="{$fixedModule.url}" alt="">
+                                                </div>
+                                                <div class="menu-name">
+                                                    <div class="title">{$fixedModule.title}</div>
+                                                    <div class="des">{$fixedModule.des}</div>
+                                                </div>
+                                               {if $fixedModuleAuth ==1} <img src="/admin/img/xiangyou1.png" alt="" class="jiantou">{/if}
                                             </div>
-                                            <img src="/admin/img/xiangyou1.png" alt="" class="jiantou">
-                                        </div>
+                                        </a>
+
                                     </div>
                                     <div class="col-xs-6">
-                                        <div class="menu-info-box">
-                                            <div class="menu-icon">
-                                                <img src="" alt="">
-                                            </div>
-                                            <div class="menu-name">
-                                                <div class="title">工作台</div>
-                                                <div class="des">功能列表</div>
+                                        <a href="javascript:void(0)">
+                                            <div class="menu-info-box">
+                                                <div class="menu-icon">
+                                                    <img src="{$fixedModule1.url}" alt="">
+                                                </div>
+                                                <div class="menu-name">
+                                                    <div class="title">{$fixedModule1.title}</div>
+                                                    <div class="des">{$fixedModule1.des}</div>
+                                                </div>
+                                                {if $fixedModuleAuth ==1}
+                                                <img src="/admin/img/xiangyou1.png" alt="" class="jiantou">
+                                                {/if}
                                             </div>
-                                            <img src="/admin/img/xiangyou1.png" alt="" class="jiantou">
-                                        </div>
+                                        </a>
                                     </div>
 
                                     <div class="col-xs-4">
-                                        <div class="menu-info-box">
-                                            <div class="menu-icon">
-                                                <img src="" alt="">
+                                        <a href="">
+                                            <div class="menu-info-box">
+                                                <div class="menu-icon">
+                                                    <img src="{$fixedModule2.url}" alt="">
+                                                </div>
+                                                <div class="menu-name">
+                                                    <div class="title">{$fixedModule2.title}</div>
+                                                    <div class="des">{$fixedModule2.des}</div>
+                                                </div>
                                             </div>
-                                            <div class="menu-name">
-                                                <div class="title">工作台</div>
-                                                <div class="des">功能列表</div>
-                                            </div>
-                                        </div>
+                                        </a>
                                     </div>
                                     <div class="col-xs-4">
-                                        <div class="menu-info-box">
-                                            <div class="menu-icon">
-                                                <img src="" alt="">
-                                            </div>
-                                            <div class="menu-name">
-                                                <div class="title">工作台</div>
-                                                <div class="des">功能列表</div>
+                                        <a href="">
+                                            <div class="menu-info-box">
+                                                <div class="menu-icon">
+                                                    <img src="{$fixedModule3.url}" alt="">
+                                                </div>
+                                                <div class="menu-name">
+                                                    <div class="title">{$fixedModule3.title}</div>
+                                                    <div class="des">{$fixedModule3.des}</div>
+                                                </div>
                                             </div>
-                                        </div>
+                                        </a>
                                     </div>
                                     <div class="col-xs-4">
-                                        <div class="menu-info-box">
-                                            <div class="menu-icon">
-                                                <img src="" alt="">
-                                            </div>
-                                            <div class="menu-name">
-                                                <div class="title">工作台</div>
-                                                <div class="des">功能列表</div>
+                                        <a href="">
+                                            <div class="menu-info-box">
+                                                <div class="menu-icon">
+                                                    <img src="{$fixedModule4.url}" alt="">
+                                                </div>
+                                                <div class="menu-name">
+                                                    <div class="title">{$fixedModule4.title}</div>
+                                                    <div class="des">{$fixedModule4.des}</div>
+                                                </div>
                                             </div>
-                                        </div>
+                                        </a>
                                     </div>
                                 </div>
                             </div>
                         </div>
                     </div>
                     <div class="gymian2-two-box" >
-                        <div class="gymian2-two-header">常用模块 <img src="/admin/img/xiangyou1.png" alt=""></div>
+                        <div class="gymian2-two-header">常用模块
+<!--                            <img src="/admin/img/xiangyou1.png" alt="">-->
+                        </div>
                        <div class="row">
+                           {foreach $module as $k=>$v}
                            <div class="col-xs-4">
-                               <div class="menu-info-box">
-                                   <div class="menu-icon">
-                                       <img src="" alt="">
-                                   </div>
-                                   <div class="menu-name">
-                                       <div class="title">工作台</div>
-                                       <div class="des">功能列表</div>
-                                   </div>
-                               </div>
-                           </div>
-                           <div class="col-xs-4">
-                               <div class="menu-info-box">
-                                   <div class="menu-icon">
-                                       <img src="" alt="">
-                                   </div>
-                                   <div class="menu-name">
-                                       <div class="title">工作台</div>
-                                       <div class="des">功能列表</div>
+                               <a href="{$v.url}" data-menu="{$v.menu_id}">
+                                   <div class="menu-info-box">
+                                       <div class="menu-icon">
+                                           <img src="{$v.img}" alt="">
+                                       </div>
+                                       <div class="menu-name">
+                                           <div class="title">{$v['title']}</div>
+                                           <div class="des">{$v['des']}</div>
+                                       </div>
                                    </div>
-                               </div>
-                           </div>
-                           <div class="col-xs-4" >
-                               <div class="menu-info-box">
-                                   <div class="menu-icon">
-                                       <img src="" alt="">
-                                   </div>
-                                   <div class="menu-name">
-                                       <div class="title">工作台</div>
-                                       <div class="des">功能列表</div>
-                                   </div>
-                               </div>
-                           </div>
-                           <div class="col-xs-4">
-                               <div class="menu-info-box">
-                                   <div class="menu-icon">
-                                       <img src="" alt="">
-                                   </div>
-                                   <div class="menu-name">
-                                       <div class="title">工作台</div>
-                                       <div class="des">功能列表</div>
-                                   </div>
-                               </div>
-                           </div>
-                           <div class="col-xs-4">
-                               <div class="menu-info-box">
-                                   <div class="menu-icon">
-                                       <img src="" alt="">
-                                   </div>
-                                   <div class="menu-name">
-                                       <div class="title">工作台</div>
-                                       <div class="des">功能列表</div>
-                                   </div>
-                               </div>
-                           </div>
-                           <div class="col-xs-4">
-                               <div class="menu-info-box">
-                                   <div class="menu-icon">
-                                       <img src="" alt="">
-                                   </div>
-                                   <div class="menu-name">
-                                       <div class="title">工作台</div>
-                                       <div class="des">功能列表</div>
-                                   </div>
-                               </div>
+                               </a>
                            </div>
+                           {/foreach}
+
                        </div>
                     </div>
                     <div class="gymian2-three-box">
-                        <div class="gymian2-three-heaader">今日看板</div>
-                        <div class="row">
-
+                        <div class="gymian2-three-header">今日看板</div>
+                        <div class="orders-box">
+                            <div class="col-xs-2">
+                                <div class="orders-status-box orders-status-bg">
+                                    <div class="title">待处理</div>
+                                    <div class="line"></div>
+                                    <div class="nums">{$dayOrderCount.count1}</div>
+                                </div>
+                            </div>
+                            <div class="col-xs-2">
+                                <div class="orders-status-box orders-status-bg1">
+                                    <div class="title">已派发</div>
+                                    <div class="line"></div>
+                                    <div class="nums">{$dayOrderCount.count2}</div>
+                                </div>
+                            </div>
+                            <div class="col-xs-2">
+                                <div class="orders-status-box orders-status-bg2">
+                                    <div class="title">已完成</div>
+                                    <div class="line"></div>
+                                    <div class="nums">{$dayOrderCount.count3}</div>
+                                </div>
+                            </div>
+                            <div class="col-xs-2">
+                                <div class="orders-status-box orders-status-bg3">
+                                    <div class="title">已评价</div>
+                                    <div class="line"></div>
+                                    <div class="nums">{$dayOrderCount.count4}</div>
+                                </div>
+                            </div>
+                            <div class="col-xs-2">
+                                <div class="orders-status-box orders-status-bg4">
+                                    <div class="title">用户撤销</div>
+                                    <div class="line"></div>
+                                    <div class="nums">{$dayOrderCount.count5}</div>
+                                </div>
+                            </div>
+                            <div class="col-xs-2">
+                                <div class="orders-status-box orders-status-bg5">
+                                    <div class="title">调度取消</div>
+                                    <div class="line"></div>
+                                    <div class="nums">{$dayOrderCount.count6}</div>
+                                </div>
+                            </div>
                         </div>
+
                     </div>
                 </div>
             </div>
-            <div class="col-xs-3">
+            <div class="col-xs-3" style="padding: 0 5px">
                 <div class="gymain3">
+                    <div class="notice-box">
+                        <div class="notice-header-box">
+                            通知公告
+                            <img src="/admin/img/xiangyou1.png" alt="" class="pull-right" style="cursor: pointer;" url="{:url('NoticeCommon/index')}"  data-title="通知列表" data-width="800px" onclick="layer_open(this,1)">
+                        </div>
+                        {notempty name="notice"}
+                        {volist name="notice" id="v"}
+                        <div class="notice-info-box">
+                            <div class="notice-info-header-box">
+                                <div class="yuandian"></div>
+                                <div class="name">{$v.title}</div>
+                                <text class="pull-right">{$v.create_time}</text>
+                            </div>
+                            <div class="notice-content">
+                                {$v.content}
+                            </div>
+                            <div class="go-notice-detail" style="cursor: pointer;" url="{:url('NoticeCommon/noticeDetail',['id'=>$v['id']])}"  data-title="通知详情" data-width="800px" onclick="layer_open(this,1)">详情</div>
+                        </div>
+                        {/volist}
+                        {else /}
+                            <div style="width: 100%;text-align: center;margin-top: 50px;font-size: 16px">暂无通知</div>
+                        {/notempty}
 
+                    </div>
+                    <div class="tj-box">
+                        <div class="tj-header-box">
+                            统计报表
+                            <img src="/admin/img/xiangyou1.png" alt="" class="pull-right">
+                        </div>
+
+                        <div class="tj-body-box">
+                            <div class="col-xs-6">
+                                <a href="">
+                                    <div class="tj-info">
+                                        报修报表
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="col-xs-6">
+                                <a href="">
+                                    <div class="tj-info1">
+                                        运送报表
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="col-xs-6">
+                                <a href="">
+                                    <div class="tj-info1">
+                                        巡更报表
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="col-xs-12" style="padding: 0 5px!important;">
+                                <a href="">
+                                    <div class="tj-info2">
+                                        视频监控
+                                    </div>
+                                </a>
+                            </div>
+                        </div>
+                    </div>
                 </div>
             </div>
         </div>
@@ -1003,6 +1074,28 @@
             },
         });
 
+        function searchMenu(){
+           var menu_name = $('#menu_name').val();
+           var url = '{:url("index/searchMenu")}';
+           $.post(url,{menu_name:menu_name},function (e){
+               if(e.code == 1){
+                   var str = '';
+                   $('#menu-list-box').html();
+                   var list = e.data;
+                   if(list.length > 0){
+                       for (var i in list){
+                           str +='<a href="'+list[i].url+'">';
+                           str +='<div class="zi">'+list[i].title+'</div>';
+                           str += '</a>';
+                       }
+
+                   }
+                   $('#menu-list-box').html(str);
+               }
+           })
+
+        }
+
     </script>
 
 </body>

+ 840 - 0
application/admin/view/index/indexsub.html

@@ -0,0 +1,840 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=0, maximum-scale=0, user-scalable=yes,shrink-to-fit=no">
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>{:get_config('web_site_title')}</title>
+    <link rel="icon" href="./favicon.png">
+    <meta name="keywords" content="" />
+    <meta name="description" content="" />
+    <link rel="shortcut icon" href="/favicon.ico">
+    <link rel="stylesheet" href="/static/hplus/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/static/hplus/css/font-awesome.min.css?v=4.4.0" />
+    <link rel="stylesheet" href="/static/hplus/css/animate.css"/>
+    <link rel="stylesheet" href="/static/hplus/css/style.css?v=4.1.0">
+    <link rel="stylesheet" href="/static/hplus/css/jquery.contextMenu.min.css"/>
+    <link rel="stylesheet" href="/static/elementui2.15.5/index.css"/>
+    <link rel="stylesheet" href="/admin/css/common.css">
+    <link rel="stylesheet" href="/admin/css/index.css">
+    <link rel="stylesheet" href="/admin/css/indexsub.css">
+    <link rel="stylesheet" href="/static/swiper4.5/css/swiper.min.css">
+
+    <script src="/static/hplus/js/jquery.min.js?v=2.1.4"></script>
+
+    <style>
+        .nav.navbar-right > li > a {
+            display: inline-block;
+        }
+        #orderNums{
+            /*vertical-align: middle;*/
+            color: red;
+            position: relative;
+            top: -3px;
+        }
+        .nn:focus, .nn:hover{
+            background-color:#fff !important;
+        }
+
+        .navbar-title{
+            display: inline-block;
+            font-size: 20px;
+            font-family: Source Han Sans CN;
+            font-weight: 500;
+            color: #284A94;
+            padding-left: 20px;
+            line-height: 60px;
+            float: left;
+        }
+        .navbar-header{
+            width: auto;
+            max-width: 310px;
+            height: 70px;
+            line-height: 70px;
+            font-size: 20px;
+            font-family: Source Han Sans CN;
+            font-weight: 500;
+            color: #284A94;
+            overflow: hidden;
+            text-overflow:ellipsis;
+            white-space: nowrap;
+        }
+        .sidebox{
+            width: 100%;
+            height: 100%;
+            position: relative;
+        }
+
+        .side-box-switch{
+            width: 28px;
+            height: 168px;
+            position: absolute;
+            z-index: 10;
+            top: 50%;
+            right: -28px;
+            /*background-color: red !important;*/
+            margin-top: -84px;
+            cursor: pointer;
+        }
+        .side-box-switch .switch-img{
+            width: 100%;
+            height: 100%;
+        }
+        .main-box-padding-left{
+            padding-left: 120px !important;
+        }
+        .main-box-padding-left1{
+            padding-left: 280px !important;
+        }
+        .main-box-padding-left3{
+            padding-left: 0px !important;
+        }
+        .menusub-box{
+            width: 100%;
+            height: 100%;
+            overflow: hidden;
+        }
+        html{
+            min-height: 100%;
+
+        }
+        body{
+            background-image: url("/admin/img/indexsub-bg.png");
+            background-repeat: no-repeat;
+            background-size: 100% 100%;
+            /*background-size: cover;*/
+        }
+        .navbar{
+            width: 100%;
+            height: 70px !important;
+            background-color:transparent!important;
+            border-bottom: 0 !important;
+            margin-bottom: 0px;
+            /*background-image: url("/admin/img/index-header-bg.png");*/
+            /*background-repeat: no-repeat;*/
+            /*background-size: 100% 100%;*/
+            /*margin-bottom: 0 !important;*/
+            /*border-bottom: none !important;*/
+        }
+        .navbar-logo{
+            width: 157px;
+            height: 40px;
+            display: inline-block;
+            float: left;
+            margin-left: 50px;
+            margin-top: 15px;
+        }
+        .navbar-logo img{
+            width: 100%;
+            height: 100%;
+        }
+        .nav>li>a:focus, .nav>li>a:hover{
+            background: none !important;
+        }
+        .nav .open > a, .nav .open > a:hover, .nav .open > a:focus{
+            background: none !important;
+        }
+        .userhead{
+            width: 41px;
+            height: 40px;
+            border-radius: 50%;
+        }
+
+
+    </style>
+</head>
+<!--<body class="fixed-sidebar full-height-layout gray-bg  fixed-nav pace-done">-->
+<body>
+
+<nav class="navbar navbar-fixed-top" role="navigation">
+    <!--    <div class="navbar-title">{:get_config('web_site_title')}</div>-->
+<!--    <div class="navbar-logo" style="margin-left: 20px!important;">-->
+<!--        <img src="/admin/img/index-logo.png" alt="">-->
+<!--    </div>-->
+    <div style="width: 100%;height: 70px">
+        <div class="navbar-header">
+            {if $userInfo.type==1}
+            <!--{:get_config('web_site_title')}&nbsp;|&nbsp;-->
+            <div data-width="60%" data-title="切换组织" url="{:url('Index/changeOrg')}" onclick="layer_open(this,2)" style="cursor: pointer;display: inline-block;height: 70px;line-height: 70px;width: 100%;text-overflow:ellipsis;
+            white-space: nowrap;overflow: hidden;">
+                {:session('orgName')} <span class="glyphicon glyphicon-menu-down" style="font-size: 16px;" aria-hidden="true"></span>
+            </div>
+            {else}
+            <!--{:get_config('web_site_title')}&nbsp;|&nbsp;-->
+            <div data-width="60%" style="display: inline-block;width: 100%;text-overflow:ellipsis;
+            white-space: nowrap;">
+                {:session('orgName')}
+            </div>
+            {/if}
+
+        </div>
+        <div class="level-menu-box">
+            {volist name="menus" id="v"}
+                <div class="menu-name-box {if $key == 0}cur-menu-style{/if}" data-id="{$v['id']}" onclick="changeMenu(this)">
+                    <text>{$v.title}</text>
+                </div>
+            {/volist}
+        </div>
+
+        <ul class="nav navbar-top-links navbar-right" style="height: 70px">
+            <img src="{$userInfo.head_image}" alt="" class="userhead">
+            <li class="dropdown" style="height: 100%">
+                <!-- {if ($isDispatch == 1)}
+                 <a href="javascript:;" id="goOrder" url="{:url('Index/ordersList')}?mode=0&order_mode=1"  onclick="layer_open_dispatch(this,2)" class="glyphicon glyphicon-bell">
+                     <text id="orderNums">{if condition="$orderNums > 0"}({$orderNums}){/if}</text>
+                 </a>
+                 <a href="javascript:;" class="nn" onclick="offNotice()" id="offNotice" >
+                     <text id="offNoticeBtn">关闭通知</text>
+                 </a>
+                 <input type="hidden" id="offNoticeVal" value="0">
+                 {/if}-->
+                <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;" style="color: #284A94;height: 100%;margin-top: 5px">欢迎,{:session('user_auth.real_name')} </a>
+                <ul class="dropdown-menu animated fadeInRight m-t-xs">
+                    <li><a class="JmenuItem" href="{:url('User/modifyPass')}">修改密码</a></li>
+                    <li><a href="{:url('Common/logout')}">安全退出</a></li>
+                </ul>
+            </li>
+        </ul>
+    </div>
+</nav>
+
+<div class="gyindexsub-menu-list-box"  style="display: none">
+
+    <div class="indexsub-bread-crumbs-box" style="margin: 70px 19px 0px;width: calc(100% - 38px)">
+        <a href="{:url('index/index')}" class="active">首页</a>
+        <a href="">首页</a>
+        <a href="">首页</a>
+    </div>
+    <div class="qsidenav">
+        <div class="qsidenav-list qsidenablistthreemenulist">
+          <!--  <div class="qsidenav-twomenu-name">设备维保</div>
+            <div class="sub">
+                <a href="">
+                    <div class="sub-list cur">设备管理</div>
+                </a>
+                <a href="">
+                    <div class="sub-list">设备管理</div>
+                </a>
+            </div>-->
+        </div>
+    </div>
+
+    <div class="gymenu-body-box" id="gy-main-iframe-menu">
+<!--        <iframe class="J_iframe" name="iframe0" width="100%" height="100%" id="gyindexsub-iframes"  frameborder="0" data-id="index_v1.html" seamless></iframe>-->
+    </div>
+</div>
+
+
+<div class="main-box main-box-h2 gongzuotaimenu" id="main-iframe">
+    <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="{:url('Index/def')}" frameborder="0" data-id="index_v1.html" seamless></iframe>
+</div>
+
+
+
+
+<script src="/static/hplus/js/bootstrap.min.js?v=3.3.7"></script>
+<script src="/static/layer3.2.0/layer.js"></script>
+<script src="/static/hplus/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
+<script src="/static/hplus/js/plugins/metisMenu/jquery.metisMenu.js"></script>
+<script src="/static/hplus/js/plugins/contextMenu/jquery.contextMenu.min.js"></script>
+<script src="/static/hplus/js/hplus.js?v=4.1.0"></script>
+
+<script type="text/javascript" src="/static/hplus/js/contabs.js"></script>
+
+<!-- 第三方插件 -->
+<script src="/static/hplus/js/plugins/pace/pace.min.js"></script>
+
+<script src="/static/elementui2.15.5/vue-2.6.14.js"></script>
+<script src="/static/elementui2.15.5/index.js"></script>
+<script src="/admin/js/common.js"></script>
+
+{if condition="is_login() and !is_admin(is_login()) and btnAuth(is_login(),'PhoneMonitor/show')"}
+<textarea style="display: none;" id="StatusArea" rows="13" name="S1" class="form-control" readonly></textarea>
+<script language="javascript" type="text/javascript" src="/static/phonejs/qnviccub.js"></script>
+<script language="javascript" type="text/javascript" src="/static/phonejs/qnvfunc.js"></script>
+<script language="javascript" type="text/javascript" src="/static/phonejs/json2.js"></script>
+<script language="javascript" type="text/javascript" src="/static/phonejs/deviceapi.js"></script>
+<script>
+    var fp;
+    $(document).ready(function(){
+        TV_Initialize();
+        getEvent(T_GetEvent);
+    });
+    $(window).unload(function(){
+        TV_Disable();
+    });
+    setInterval(function () {
+        OpenDevice(ODT_LBRIDGE,function(nResult){AppendStatus('打开设备.');});
+    },30000);
+    //离开页面
+    $(window).bind('beforeunload',function(){
+        TV_Disable();
+    });
+    function openPhone() {
+        // let gphone = "13838379499";
+        // let fp = "d:\\wyluyin\\" + getCurrentDate(3) + "_" + gphone + ".wav";
+        // check_phone(gphone,fp);
+    }
+
+    function playBtn() {
+        // let path = "d:\\wyluyin\\20220608191204_13027625915.wav";
+        // console.log('path:',path);
+        PlayFile(1,QNV_PLAY_FILE_START,0,PLAYFILE_MASK_REPEAT,path,function(id){
+            console.log('play:',id);
+        });
+    }
+
+    function check_phone(gphone,fp) {
+        fp = base64encode(fp);
+        var url = '{:url("orders/phone")}?phone=' + gphone + '&fp='+fp;
+        var title = '添加订单';
+        layer.open({
+            type: 2,
+            shade: 0.8,
+            title: title,
+            area: ['800px', '400px'],
+            fix: false, //不固定
+            maxmin: true,
+            content: url,
+            skin: 'layer-ext-moon',
+            success: function(layero, index) {
+                layer.iframeAuto(index);
+            },
+            // btn: ['取消']
+        });
+
+        return false;
+    }
+
+    function AppendStatus(szStatus)
+    {
+        // console.log(szStatus);
+        // $("#StatusArea").append(szStatus+"\r\n" );
+        // var scrollTop = $("#StatusArea")[0].scrollHeight;
+        // $("#StatusArea").scrollTop(scrollTop);
+    }
+    function AppendStatusEx(uID,szStatus)
+    {
+        uID=uID+1;
+        AppendStatus("通道"+uID+":"+szStatus);
+    }
+
+    function  T_GetEvent(uID,uEventType,uHandle,uResult,szdata)
+    {
+        // console.log(uID,uEventType,uHandle,uResult,szdata);
+        //var vValueArray=qnviccub.QNV_Event(0,2,0,"","",1024);
+        if(uEventType == -1)
+            return;
+        var vValue=" type="+uEventType+" Handle="+uHandle+" Result="+uResult+" szdata="+szdata;
+        switch(uEventType)
+        {
+            case BriEvent_PhoneHook:// 本地电话机摘机事件
+                AppendStatusEx(uID,"本地电话机摘机"+vValue);
+                TV_StartRecordFile(uID,fp);
+                break;
+            case BriEvent_PhoneDial:// 只有在本地话机摘机,没有调用软摘机时,检测到DTMF拨号
+                AppendStatusEx(uID,"本地话机拨号"+vValue);
+                break;
+            case BriEvent_PhoneHang:// 本地电话机挂机事件
+                TV_HangUpCtrl(uID);
+                AppendStatusEx(uID,"本地电话机挂机"+vValue);
+                TV_StopRecordFile(uID);
+                break;
+            case BriEvent_CallIn:// 外线通道来电响铃事件
+                AppendStatusEx(uID,"外线通道来电响铃事件"+vValue);
+                break;
+            case BriEvent_GetCallID://得到来电号码
+                AppendStatusEx(uID,"得到来电号码"+vValue);
+                fp = "d:\\wyluyin\\" + getCurrentDate(3) + "_" + szdata + ".wav";
+                check_phone(szdata,fp);
+                break;
+            case BriEvent_StopCallIn:// 对方停止呼叫(产生一个未接电话)
+                AppendStatusEx(uID,"对方停止呼叫(产生一个未接电话)"+vValue);
+                break;
+            case BriEvent_DialEnd:// 调用开始拨号后,全部号码拨号结束
+                AppendStatusEx(uID,"调用开始拨号后,全部号码拨号结束"+vValue);
+                break;
+            case BriEvent_PlayFileEnd:// 播放文件结束事件
+                AppendStatusEx(uID,"播放文件结束事件"+vValue);
+                break;
+            case BriEvent_PlayMultiFileEnd:// 多文件连播结束事件
+                AppendStatusEx(uID,"多文件连播结束事件"+vValue);
+                break;
+            case BriEvent_PlayStringEnd://播放字符结束
+                AppendStatusEx(uID,"播放字符结束"+vValue);
+                break;
+            case BriEvent_RepeatPlayFile:// 播放文件结束准备重复播放
+                AppendStatusEx(uID,"播放文件结束准备重复播放"+vValue);
+                break;
+            case BriEvent_SendCallIDEnd:// 给本地设备发送震铃信号时发送号码结束
+                AppendStatusEx(uID,"给本地设备发送震铃信号时发送号码结束"+vValue);
+                break;
+            case BriEvent_RingTimeOut://给本地设备发送震铃信号时超时
+                AppendStatusEx(uID,"给本地设备发送震铃信号时超时"+vValue);
+                break;
+            case BriEvent_Ringing://正在内线震铃
+                AppendStatusEx(uID,"正在内线震铃"+vValue);
+                break;
+            case BriEvent_Silence:// 通话时检测到一定时间的静音.默认为5秒
+                AppendStatusEx(uID,"通话时检测到一定时间的静音"+vValue);
+                break;
+            case BriEvent_GetDTMFChar:// 线路接通时收到DTMF码事件
+                AppendStatusEx(uID,"线路接通时收到DTMF码事件"+vValue);
+                break;
+            case BriEvent_RemoteHook:// 拨号后,被叫方摘机事件
+                AppendStatusEx(uID,"拨号后,被叫方摘机事件"+vValue);
+                break;
+            case BriEvent_RemoteHang://对方挂机事件
+                TV_HangUpCtrl(uID);
+                AppendStatusEx(uID,"对方挂机事件"+vValue);
+                TV_StopRecordFile(uID);
+                break;
+            case BriEvent_Busy:// 检测到忙音事件,表示PSTN线路已经被断开
+                AppendStatusEx(uID,"检测到忙音事件,表示PSTN线路已经被断开"+vValue);
+                break;
+            case BriEvent_DialTone:// 本地摘机后检测到拨号音
+                AppendStatusEx(uID,"本地摘机后检测到拨号音"+vValue);
+                break;
+            case BriEvent_RingBack:// 电话机拨号结束呼出事件。
+                AppendStatusEx(uID,"电话机拨号结束呼出事件"+vValue);
+                break;
+            case BriEvent_MicIn:// MIC插入状态
+                AppendStatusEx(uID,"MIC插入状态"+vValue);
+                break;
+            case BriEvent_MicOut:// MIC拔出状态
+                AppendStatusEx(uID,"MIC拔出状态"+vValue);
+                break;
+            case BriEvent_FlashEnd:// 拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号
+                AppendStatusEx(uID,"拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号"+vValue);
+                break;
+            case BriEvent_RefuseEnd:// 拒接完成
+                AppendStatusEx(uID,"拒接完成"+vValue);
+                break;
+            case BriEvent_SpeechResult:// 语音识别完成
+                AppendStatusEx(uID,"语音识别完成"+vValue);
+                break;
+            case BriEvent_FaxRecvFinished:// 接收传真完成
+                AppendStatusEx(uID,"接收传真完成"+vValue);
+                break;
+            case BriEvent_FaxRecvFailed:// 接收传真失败
+                AppendStatusEx(uID,"接收传真失败"+vValue);
+                break;
+            case BriEvent_FaxSendFinished:// 发送传真完成
+                AppendStatusEx(uID,"发送传真完成"+vValue);
+                break;
+            case BriEvent_FaxSendFailed:// 发送传真失败
+                AppendStatusEx(uID,"发送传真失败"+vValue);
+                break;
+            case BriEvent_OpenSoundFailed:// 启动声卡失败
+                AppendStatusEx(uID,"启动声卡失败"+vValue);
+                break;
+            case BriEvent_UploadSuccess://远程上传成功
+                AppendStatusEx(uID,"远程上传成功"+vValue);
+                break;
+            case BriEvent_UploadFailed://远程上传失败
+                AppendStatusEx(uID,"远程上传失败"+vValue);
+                break;
+            case BriEvent_EnableHook:// 应用层调用软摘机/软挂机成功事件
+                AppendStatusEx(uID,"应用层调用软摘机/软挂机成功事件"+vValue);
+                break;
+            case BriEvent_EnablePlay:// 喇叭被打开或者/关闭
+                AppendStatusEx(uID,"喇叭被打开或者/关闭"+vValue);
+                break;
+            case BriEvent_EnableMic:// MIC被打开或者关闭
+                AppendStatusEx(uID,"MIC被打开或者关闭"+vValue);
+                break;
+            case BriEvent_EnableSpk:// 耳机被打开或者关闭
+                AppendStatusEx(uID,"耳机被打开或者关闭"+vValue);
+                break;
+            case BriEvent_EnableRing:// 电话机跟电话线(PSTN)断开/接通
+                AppendStatusEx(uID,"电话机跟电话线(PSTN)断开/接通"+vValue);
+                break;
+            case BriEvent_DoRecSource:// 修改录音源
+                AppendStatusEx(uID,"修改录音源"+vValue);
+                break;
+            case BriEvent_DoStartDial:// 开始软件拨号
+                AppendStatusEx(uID,"开始软件拨号"+vValue);
+                break;
+            case BriEvent_RecvedFSK:// 接收到FSK信号,包括通话中FSK/来电号码的FSK
+                AppendStatusEx(uID,"接收到FSK信号,包括通话中FSK/来电号码的FSK"+vValue);
+                break;
+            case BriEvent_PlugOut:
+                AppendStatusEx(uID,"设备移除");
+                // alert('设备移除');
+                break;
+            case BriEvent_DevErr://设备错误
+                AppendStatusEx(uID,"设备错误"+ decodeURIComponent(vValue) );
+                // alert('设备错误');
+                break;
+            default:
+                if(uEventType < BriEvent_EndID)
+                    AppendStatusEx(uID,"忽略其它事件发生:ID=" + uEventType+ vValue);
+                break;
+        }
+
+    }
+</script>
+{/if}
+
+{if condition="$isDispatch eq 1"}
+<audio id="dingdantixing" src="/static/tixing.mp3" controls="controls" style="display: none;"></audio>
+<script>
+
+
+
+    var time1;
+    var audio = document.getElementById('dingdantixing');
+
+    $(function () {
+        var  interval = function () {
+            var url = "{:url('Index/order')}";
+            $.get(url,function (data) {
+                if(data.code == 1){
+                    var audio = document.getElementById('dingdantixing');
+                    audio.play();
+                    if(data.data > 0){
+                        document.getElementById('orderNums').innerHTML ='('+data.data +')';
+                    }
+
+                    // layer.msg('您有新的订单请及时处理',{time:3000});
+                }
+            });
+        }
+        time1 =  setInterval(interval,30000);
+
+        $("#offNoticeBtn").click(function () {
+            var off = parseInt($("#offNoticeVal").val());
+            if(off==0){
+                clearInterval(time1);
+                $("#offNoticeVal").val(1)
+                $("#offNoticeBtn").html('开启通知');
+                audio.pause();
+            }else {
+                $("#offNoticeVal").val(0)
+                time1 = setInterval(interval,30000);
+                $("#offNoticeBtn").html('关闭通知');
+
+            }
+        })
+    })
+
+
+</script>
+{/if}
+
+<script>
+    var menus = {:json_encode($menus)};
+    $(function () {
+        // $('#side-menu').slimScroll({
+        //     height: ($('.sidebar-box').height() + 40) + 'px'
+        // });
+        // $('#side-menu2').slimScroll({
+        //     height: $('.sidebar-box').height() + 'px'
+        // });
+        $('#sidebar-box-h2').removeClass('sidebar-box-h2');
+        $('#main-iframe').addClass('main-box-h2');
+        $('#menu-1').addClass('active');
+
+        // $('.sidenav .side-list a').hover(
+        //     function () {
+        //         $(this).addClass("hover");
+        //         let id = $(this).attr('data-id');
+        //         initSubMenu(id);
+        //     },
+        //     function () {
+        //         $(this).removeClass("hover");
+        //     }
+        // );
+
+        $(document).on('click','#side-menu .Jiframe',function () {
+            let id = $(this).attr('data-id');
+
+            let url = $(this).attr('data-url');
+            $('#main-iframe').removeClass('main-box-padding-left');
+            $('#main-iframe').removeClass('main-box-padding-left1');
+            $('#main-iframe').removeClass('main-box-padding-left3');
+            // var width2 = localStorage.getItem("width1");
+            // console.log(width2,'xxxxxxxxxxxxxxxx')
+            // if(width2 == 120){
+            //     $('#main-iframe').css('padding-left','120px');
+            // }
+            // if(width2 == 280){
+            //     $('#main-iframe').css('padding-left','280px');
+            // }
+
+            if(url){
+                if(id==485 || id==467 || id==488 || id==489){
+                    $('#sidebar-box-h2').removeClass('sidebar-box-h2');
+                    $('#main-iframe').addClass('main-box-h2');
+                    window.open(url);
+                }else {
+                    $('#sidebar-box-h2').removeClass('sidebar-box-h2');
+                    $('#main-iframe').addClass('main-box-h2');
+                    let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
+                    $('#main-iframe').html(str);
+                }
+
+            }else{
+                $('#sidebar-box-h2').addClass('sidebar-box-h2');
+                $('#main-iframe').removeClass('main-box-h2');
+            }
+
+
+            $(this).addClass("hover");
+            initSubMenu(id);
+
+            $('#side-menu .Jiframe').removeClass('active');
+            $(this).addClass('active');
+        });
+        $(document).on('click','#side-menu2 .Jiframe',function () {
+            $('#main-iframe').removeClass('main-box-padding-left');
+            $('#main-iframe').removeClass('main-box-padding-left1');
+            $('#main-iframe').removeClass('main-box-padding-left3');
+            let pid = $(this).attr('data-pid');
+            let url = $(this).attr('data-url');
+            let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
+            $('#main-iframe').html(str);
+            $('#side-menu2 .Jiframe').removeClass('active');
+            $(this).addClass('active');
+            // 寻找父级元素
+            $('#side-menu .Jiframe').removeClass('active');
+            $('#menu'+pid).addClass('active');
+
+        });
+
+        $(document).on('click','.JmenuItem',function () {
+            $('#main-iframe').removeClass('main-box-padding-left');
+            $('#main-iframe').removeClass('main-box-padding-left1');
+            $('#main-iframe').removeClass('main-box-padding-left3');
+            let url = $(this).attr('href');
+            let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
+            $('#main-iframe').html(str);
+            return false;
+        });
+
+    });
+
+
+    function initSubMenu(id) {
+        $('#main-iframe').removeClass('main-box-padding-left');
+        $('#main-iframe').removeClass('main-box-padding-left1');
+        $('#main-iframe').removeClass('main-box-padding-left3');
+        let submenus = [];
+        for (let o in menus){
+            if(id == menus[o].id){
+                submenus = menus[o].child;
+                break;
+            }
+        }
+        if(submenus.length > 0){
+            $('#sidebar-box-h2').addClass('sidebar-box-h2');
+            $('#main-iframe').removeClass('main-box-h2');
+        }else{
+            $('#sidebar-box-h2').removeClass('sidebar-box-h2');
+            $('#main-iframe').addClass('main-box-h2');
+        }
+
+        let str = '';
+        for (let o in submenus){
+            if(submenus[o].child.length > 0){
+                // <div class="side-group">
+                //     <div class="side-group-label">系统设置</div>
+                //     <div class="side-list">
+                //         <a class="J_iframe" href="layouts.html"><span>项目管理</span></a>
+                //     </div>
+                // </div>
+                str += '<div class="side-group">';
+                str += '<div class="side-group-label">'+submenus[o].title+'</div>';
+                let children = submenus[o].child;
+                for(let n in children){
+                    str += '<div class="side-list">';
+                    str += '<a class="Jiframe" id="menu'+children[n].id+'" data-id="'+children[n].id+'" data-pid="'+submenus[o].pid+'" data-url="'+children[n].url+'" href="javascript:;"><span>'+children[n].title+'</span></a>';
+                    str += '</div>';
+                }
+
+                str += '</div>';
+            }else{
+                // <div class="side-list">
+                //     <a class="J_iframe active" href="layouts.html"><span>权限管理</span></a>
+                // </div>
+                str += '<div class="side-list">';
+                str += '<a class="Jiframe" id="menu'+submenus[o].id+'" data-id="'+submenus[o].id+'" data-pid="'+submenus[o].pid+'" data-url="'+submenus[o].url+'" href="javascript:;"><span>'+submenus[o].title+'</span></a>';
+                str += '</div>';
+            }
+        }
+        $('#side-menu2').html(str);
+    }
+
+    function add_highlight(url){
+        console.log('url',url);
+        $('.side-list a').removeClass('active');
+        for (let o in menus){
+            if(menus[o].url && menus[o].url == url){
+                $('#menu'+menus[o].id).addClass('active');
+                break;
+            }
+            let child1 = menus[o].child;
+            let flag = false;
+            let id = 0;
+            if(child1.length > 0){
+                for (let m in child1){
+                    if(child1[m].url && child1[m].url == url){
+                        flag = true;
+                        id = child1[m].id;
+                        break;
+                    }
+                    let child2 = child1[m].child;
+                    for (let n in child2){
+                        if(child2[n].url && child2[n].url == url){
+                            flag = true;
+                            id = child2[n].id;
+                            break;
+                        }
+                    }
+                    if(flag){
+                        break;
+                    }
+                }
+            }
+            console.log('flag11',flag,id);
+            if(flag){
+                initSubMenu(menus[o].id);
+                $('#menu'+menus[o].id).addClass('active');
+                $('#menu'+id).addClass('active');
+                break;
+            }
+
+        }
+    }
+
+
+
+    function layer_open_dispatch(_self,flag){
+        var url = $(_self).attr('url');
+        var title = $(_self).attr('data-title');
+        var width = $(_self).attr('data-width')?$(_self).attr('data-width'):'90%';
+        var height = $(_self).attr('data-height')?$(_self).attr('data-height'):'90%';
+        layer.open({
+            type: 2,
+            title: title,
+            shadeClose: true,
+            shade: 0.3,
+            maxmin: true,
+            area: [width, height],
+            content: url,
+            end: function () {
+                update_order_count();
+            }
+        });
+    }
+
+    function update_order_count() {
+        let url = "{:url('Index/ocount')}";
+        $.post(url,function (res) {
+            if(res.code == 1){
+                let count = res.data.count;
+                if(count > 0){
+                    $('#orderNums').html('('+count+')');
+                }else{
+                    $('#orderNums').html('');
+                }
+            }
+        });
+    }
+
+</script>
+
+<script>
+    var menus = {:json_encode($menus)};
+    function changeMenu(_self) {
+        var menuId = $(_self).attr('data-id');
+        $('.menu-name-box').removeClass('cur-menu-style');
+        $(_self).addClass('cur-menu-style');
+        if(menuId == 500){
+            $('.gyindexsub-menu-list-box').css('display','none');
+            $('.gongzuotaimenu').css('display','block');
+        }else{
+            $('.gyindexsub-menu-list-box').css('display','block');
+            $('.gongzuotaimenu').css('display','none');
+            var newMenus = [];
+            var menuurl = '';
+            menus.forEach((item) => {
+                if(Number(menuId) == Number(item.id)){
+                    newMenus = item.child;
+                    var childList = item.child;
+                    if(childList.length >0){
+                        for (let i in childList){
+                            if(childList[0].url){
+                                menuurl = childList[0].url
+                            }else{
+                                var subChildList = childList[0].child;
+                                if(childList[0].child){
+                                    for(let o in subChildList){
+                                        if(subChildList[0].url){
+                                            menuurl = subChildList[0].url;
+                                        }
+                                    }
+                                }
+
+                            }
+                        }
+
+                    }
+                }
+            });
+
+            var str = '';
+            for (let i in newMenus){
+                var childList = newMenus[i].child;
+                if(childList.length >0){
+                    str += '<div class="qsidenav-list">';
+                    str += '<div class="qsidenav-twomenu-name">'+newMenus[i].title+'</div>';
+                    str += '<div class="sub">';
+                    if(childList.length >0){
+                        for (let o in childList){
+                            str += '<a href="javascript:;">';
+                            str += '<div class="sub-list endmenuactive" data-url="'+childList[o].url+'"  data-id="'+newMenus[i].id+'" onclick="changeEndSubMenu(this)">'+childList[o].title+'</div>';
+                            str += '</a>';
+                        }
+                    }
+                    str += '</div>';
+                    str += '</div>';
+                }else{
+                    str += '<div class="qsidenav-list">';
+                    // str += '<div class="qsidenav-twomenu-name">'+newMenus[i].title+'</div>';
+                    str += '<div class="sub">';
+                    str += '<a href="javascript:;">';
+                    str += '<div class="sub-list endmenuactive" data-url="'+newMenus[i].url+'"  data-id="'+newMenus[i].id+'" onclick="changeEndSubMenu(this)">'+newMenus[i].title+'</div>';
+                    str += '</a>';
+                    str += '</div>';
+                    str += '</div>';
+                }
+
+            }
+            $('.qsidenablistthreemenulist').html(str);
+
+
+            let menustr = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+menuurl+'" frameborder="0" data-id="'+menuurl+'" seamless></iframe>';
+            $('#gy-main-iframe-menu').html(menustr);
+        }
+
+
+
+    }
+
+    function changeEndSubMenu(_self){
+        var menuId = $(_self).attr('data-id');
+        var menuurl = $(_self).attr('data-url');
+        $('.endmenuactive').removeClass('cur');
+        $(_self).addClass('cur');
+
+        let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+menuurl+'" frameborder="0" data-id="'+menuurl+'" seamless></iframe>';
+        $('#gy-main-iframe-menu').html(str);
+        return false;
+    }
+
+</script>
+
+</body>
+</html>

+ 48 - 0
application/admin/view/index/menugroup.html

@@ -0,0 +1,48 @@
+{extend name="common/common2" /}
+{block name="main"}
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <form method="post" action="{:url('menugroup')}" class="form-horizontal">
+                    <input type="hidden" name="id" value="{$info['id']|default='0'}">
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">名称<span class="text-danger">*</span></label>
+                        <div class="col-sm-6">
+                            <input type="text" class="form-control" name="title" value="{$info.title|default=''}">
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">模块</label>
+                        <div class="col-sm-6">
+                            {:widget_view('common/multiselect',['name'=>'menus','lists' => $submenus, 'val' => isset($info)?$info['menus']:[]])}
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">排序(正序)</label>
+                        <div class="col-sm-6">
+                            <input type="number" class="form-control" name="sort" value="{$info.sort|default='10'}">
+                        </div>
+                    </div>
+                    <div class="hr-line-dashed"></div>
+                    <div class="form-group">
+                        <div class="col-sm-6 col-sm-offset-2">
+                            <button class="btn btn-primary ajax-post" data-layer="1" target-form="form-horizontal" type="submit">确 定</button>
+                        </div>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+{/block}
+{block name="script"}
+<script>
+    $(document).ready(function(){
+
+    });
+
+</script>
+{/block}

+ 126 - 0
application/admin/view/index/submenu.html

@@ -0,0 +1,126 @@
+{extend name="common/common2" /}
+{block name="main"}
+<style>
+    .subside{
+        position: fixed;
+        z-index: 10;
+        top: 15px;
+        left: 40px;
+        width: 200px;
+        bottom: 0;
+        background: #ffffff;
+        color: #333333;
+        overflow: auto;
+        padding: 10px;
+        border-right: 1px solid #e7eaec;
+    }
+    .subside .subside-title{
+        font-size: 18px;
+        padding: 0 10px;
+        font-weight: bold;
+        line-height: 50px;
+    }
+    .subside .subside-list{
+        font-size: 17px;
+        padding: 0 10px;
+        line-height: 45px;
+        height: 45px;
+        color: var(--themeColor);
+        overflow: hidden;
+        font-weight: 600;
+    }
+    .subside .subside-sublist{
+        font-size: 15px;
+        padding: 0 10px;
+        line-height: 45px;
+        cursor: pointer;
+        color: #333333;
+        height: 45px;
+        overflow: hidden;
+    }
+    .subside .subside-sublist.cur{
+        background-color: #EBF2FF;
+        border-right: 5px solid var(--themeColor);
+        color: var(--themeColor);
+    }
+    .subside .subside-sublist:hover{
+        background-color: rgba(235, 242, 255, 0.5);
+    }
+    .subside .subside-sublist.cur:hover{
+        background-color: #EBF2FF;
+    }
+    .submain{
+        position: fixed;
+        z-index: 10;
+        top: 15px;
+        left: 240px;
+        right: 15px;
+        bottom: 0;
+        background: #ffffff;
+        overflow: hidden;
+    }
+</style>
+<div class="subside">
+    <div class="subside-title">{$ptitle}</div>
+
+    {volist name="submenus" id="v"}
+    {if condition="!empty($v['child'])"}
+    <div class="subside-list">{$v.title}</div>
+    {volist name="v['child']" id="vo" key="k"}
+    {if condition="$vo['url'] eq $furl"}
+    <a class="JmenuItem" href="{$vo.url}">
+        <div class="subside-sublist cur">{$vo.title}</div>
+    </a>
+    {else /}
+    <a class="JmenuItem" href="{$vo.url}">
+        <div class="subside-sublist">{$vo.title}</div>
+    </a>
+    {/if}
+    {/volist}
+    {else /}
+    {if condition="$v['url'] eq $furl"}
+    <a class="JmenuItem" href="{$v.url}">
+        <div class="subside-sublist cur">{$v.title}</div>
+    </a>
+    {else /}
+    <a class="JmenuItem" href="{$v.url}">
+        <div class="subside-sublist">{$v.title}</div>
+    </a>
+    {/if}
+    {/if}
+
+    {/volist}
+</div>
+{if condition="$isAreaDispatch eq 1 and $seatinfo"}
+{include file="orders_dispatch/telrecord" /}
+{/if}
+<div class="submain" id="main-iframe">
+    <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="{$furl}" frameborder="0" data-id="index_v1.html" seamless></iframe>
+</div>
+{/block}
+
+{block name="script"}
+<script>
+    $(window).bind("resize",function(){
+        var width=$(".jqGrid_wrapper").width();
+        $("#table2").setGridWidth(width);
+    });
+
+
+    $(function () {
+
+        $(document).on('click','.JmenuItem',function () {
+
+            $('.subside-sublist').removeClass('cur');
+            $(this).find('.subside-sublist').addClass('cur');
+
+            let url = $(this).attr('href');
+            let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
+            $('#main-iframe').html(str);
+            return false;
+        });
+
+    });
+
+</script>
+{/block}

+ 7 - 0
application/admin/view/menu/add.html

@@ -63,6 +63,13 @@
                     </div>
 
                     <div class="form-group">
+                        <label class="col-sm-2 control-label">图标<span class="text-danger">*</span></label>
+                        <div class="col-sm-6">
+                            {:widget_view('common/upimg',['name'=>'img','multi'=>0,'val'=>isset($info)?$info['img']:''])}
+                        </div>
+                    </div>
+
+                    <div class="form-group">
                         <label class="col-sm-2 control-label">是否是按钮权限</label>
                         <div class="col-sm-4">
                             <label class="cr-inline">

+ 66 - 8
application/common/model/Menu.php

@@ -130,14 +130,14 @@ class Menu extends Base
             ->order('sort asc,id asc')
             ->select();
         $lists = $lists?$lists:[];
-        $first = [
-            'id' => -1,
-            'title' => '系统首页',
-            'url' => $this->getNavUrl('Index/def'),
-            'icons' => 'fa fa-home',
-            'pid' => 0,
-        ];
-        $arr[] = $first;
+//        $first = [
+//            'id' => -1,
+//            'title' => '系统首页',
+//            'url' => $this->getNavUrl('Index/def'),
+//            'icons' => 'fa fa-home',
+//            'pid' => 0,
+//        ];
+        $arr = [];
         foreach ($lists as $k=>$v){
             $v['url'] = $this->getNavUrl($v['url']);
             $arr[] = $v;
@@ -164,4 +164,62 @@ class Menu extends Base
         return $url;
     }
 
+
+    // 根据角色和组织获取用户菜单项
+    public function getMenuTree1($rolesId,$orgId,$search){
+        $map[] = ['enable','=',1];
+        $map[] = ['del','=',0];
+        $map[] = ['is_btn','=',0];
+        if($rolesId == 1){ // 超级管理员
+
+        }else if($rolesId == 2){ //总公司管理员
+            $auths = model('Org')->getOrgAuths($orgId,1);
+            if($auths){
+                $map[] = ['id','in',$auths];
+            }else{
+                $map[] = ['id','=',0];
+            }
+        }else{ // 项目管理员
+            $auths = model('Roles')->getRolesAuths($rolesId,1);
+            if($auths){
+                $map[] = ['id','in',$auths];
+            }else{
+                $map[] = ['id','=',0];
+            }
+        }
+        if($rolesId!=1){
+            /*3.只有admin管理员可见
+            系统设置: 菜单管理、配置管理、安卓版本管理、苹果版本管理、
+            模块管理、这些项目,在权限分配里面就不要出现了,不需要分配*/
+            $map[] = ['id','not in',[37,38,39,47,48]];
+        }
+
+        if($search !=''){
+            $map[] = ['title','like','%'.$search.'%'];
+        }
+
+        $lists = Db::name('menu')
+            ->where($map)
+            ->field('id,title,url,icons,pid')
+            ->order('sort asc,id asc')
+            ->select();
+        $lists = $lists?$lists:[];
+//        $first = [
+//            'id' => -1,
+//            'title' => '系统首页',
+//            'url' => $this->getNavUrl('Index/def'),
+//            'icons' => 'fa fa-home',
+//            'pid' => 0,
+//        ];
+//        $arr[] = $first;
+        $arr = [];
+        foreach ($lists as $k=>$v){
+            $v['url'] = $this->getNavUrl($v['url']);
+            $arr[] = $v;
+        }
+//        $tree = list_to_tree($arr, 'pid', 'child');
+        return $arr;
+    }
+
+
 }

+ 69 - 0
application/common/model/UserMenuGroup.php

@@ -0,0 +1,69 @@
+<?php
+namespace app\common\model;
+
+use think\Db;
+
+class UserMenuGroup extends Base
+{
+    public function updates($userId){
+        $data = request()->post();
+        $data['user_id'] = $userId;
+        $result = validate('UserMenuGroup')->check($data,[],'');
+        if(true !== $result){
+            $this->error = validate('UserMenuGroup')->getError();
+            return false;
+        }
+        $id = $data['id'];
+        unset($data['id']);
+
+        Db::startTrans();
+        try{
+            if($id > 0){
+                $data['update_time'] = date('Y-m-d H:i:s');
+                $ret = $this->allowField(true)->save($data,['id'=>$id]);
+            }else{
+                $data['create_time'] = date('Y-m-d H:i:s');
+                $ret = $this->allowField(true)->save($data);
+                $id = $this->id;
+            }
+            if(!$ret){
+                exception('操作失败');
+            }
+            $menus = $data['menus']?explode(',',$data['menus']):[];
+            if($menus){
+                $map[] = ['user_id','=',$data['user_id']];
+                $map[] = ['id','<>',$id];
+                $lists = Db::name('user_menu_group')->where($map)->select();
+                $lists = $lists?$lists:[];
+                foreach ($lists as $k=>$v){
+                    $omenus = $v['menus']?explode(',',$v['menus']):[];
+                    if(empty($omenus)){
+                        continue;
+                    }
+                    $nmenus = [];
+                    foreach ($omenus as $kk=>$vv){
+                        if(!in_array($vv,$menus)){
+                            $nmenus[] = $vv;
+                        }
+                    }
+                    if(count($nmenus) != count($nmenus)){
+                        $mes = $nmenus?implode(',',$nmenus):'';
+                        $res = Db::name('user_menu_group')->where('id',$v['id'])->setField('menus',$mes);
+                        if(!$res){
+                            exception('操作失败');
+                        }
+                    }
+                }
+            }
+
+            Db::commit();
+        }catch (\Exception $e){
+            Db::rollback();
+            $this->error = '操作失败';
+            return false;
+        }
+
+        return true;
+    }
+
+}

+ 33 - 0
application/common/validate/UserMenuGroup.php

@@ -0,0 +1,33 @@
+<?php
+namespace app\common\validate;
+
+use think\Db;
+use think\Validate;
+
+class UserMenuGroup extends Validate{
+
+    protected $rule = [
+        'title|名称'  =>  'require|checkUnique',
+    ];
+
+    protected $message = [
+
+    ];
+
+    protected $scene = [
+
+    ];
+
+    protected function checkUnique($value,$rule,$data=[])
+    {
+        $info = Db::name('user_menu_group')->where('title',$value)->where('user_id',$data['user_id'])->find();
+        if($data['id'] <= 0 && $info){
+            return '名称已被使用';
+        }
+        if($info && $data['id'] > 0 && $info['id'] != $data['id']){
+            return '名称已被使用';
+        }
+        return true;
+    }
+
+}

+ 9 - 356
public/admin/css/common.css

@@ -174,15 +174,20 @@ input::-ms-input-placeholder {
 
 .main-box{
     width: 100%;
-    height: 100%;
+    height: calc(100% - 70px);
+    /*width: 100%;*/
+    /*height: 772px;*/
+    margin-top: 70px;
     /*padding: 75px 15px 15px 295px;*/
-    padding: 60px 0px 0px 280px;
-    margin-left: 26px;
+    /*padding: 60px 0px 0px 280px;*/
+    /*margin-left: 26px;*/
     /*min-height: 100%;*/
+
 }
 .main-box.main-box-h2{
     /*padding: 75px 15px 15px 135px;*/
-    padding: 60px 0px 0px 120px;
+    /*padding: 60px 0px 0px 120px;*/
+    padding: 0px 19px 0px 19px;
 }
 
 .btn-primary {
@@ -213,355 +218,3 @@ input[type=checkbox], input[type=radio] {
     height: 34px!important;
 }
 
-.gymain-box{
-    width: 100%;
-    height: auto;
-    /*height: calc(100% - 70px);*/
-    /*position: fixed;*/
-    /*z-index: 10000000;*/
-    /*top: 80px;*/
-    /*left: 0;*/
-    /*right: 0;*/
-    /*bottom: 0;*/
-    margin-top: 80px;
-    padding-bottom: 10px;
-    /*margin-bottom: 10px;*/
-    /*background: red;*/
-}
-.gymain1{
-    width: 100%;
-    height: auto;
-    background: #ffffff;
-    border: 1px solid #EEEEEE;
-    border-radius: 10px;
-}
-.gymain1 .menu-search-box{
-    width: calc(100% - 20px);
-    height: 42px;
-    line-height: 42px;
-    background: #F6F9FC;
-    border-radius: 21px;
-    padding-left: 5px;
-    margin: 10px 10px 0px 10px;
-}
-.gymain1 .menu-search-input{
-    width: 80%;
-    height: 100%;
-    display: inline-block;
-    float: left;
-}
-.gymain1 .menu-search-input input{
-    width: 100%;
-    border: none;
-    background: none;
-    margin: 0;
-    padding: 0;
-}
-.gymain1 .menu-search-box .menu-search-img-btn{
-    width: 20%;
-    height: 100%;
-    display: inline-block;
-    float: left;
-}
-.gymain1 .menu-search-box .menu-search-img-btn img{
-    width: 20px;
-    height: 20px;
-}
-.gymain1 .menu-list-box{
-    width: calc(100% - 60px);
-    height: 140px;
-    margin: 10px 30px;
-    overflow: hidden;
-    overflow-y: auto;
-}
-.gymain1 .menu-list-box a{
-    text-decoration: none;
-    color: inherit;
-}
-.gymain1 .menu-list-box a div{
-    width: 100%;
-    padding: 2px 0px;
-    overflow: hidden;
-    font-size: 14px;
-    font-weight: 400;
-    color: #333333;
-}
-.gymain1 .ggw-box{
-    width: calc(100% - 20px);
-    height: 255px;
-    margin: 0 10px;
-}
-.gymain1 .ggw-box img{
-    width: 100%;
-    height: 100%;
-}
-.gymain1 .download-info-box{
-    width: calc(100% - 25px);
-    height: 80px;
-    padding-left: 25px;
-}
-.gymain1 .download-info-box .download-info-title{
-    font-size: 18px;
-    font-family: Source Han Sans CN;
-    font-weight: 500;
-    color: #333333;
-    margin-top: 15px;
-}
-.gymain1 .download-info-box .download-info-content-box{
-    width: 100%;
-    height: auto;
-    padding-top: 10px;
-}
-.gymain1 .download-info-box .download-info-content-box div{
-    width: 100%;
-}
-.gymain1 .download-info-box .download-info-content-box div span{
-    width: 80%;
-    height: 20px;
-    display: inline-block;
-    float: left;
-    overflow: hidden;
-}
-.gymain1 .download-info-box .download-info-content-box div img{
-    width: 16px;
-    height: 16px;
-    display: inline-block;
-    float: right;
-}
-.gymain1 .qrcode-box{
-    width: 100%;
-    height: 215px;
-    padding: 10px 20px;
-}
-.gymain1 .qrcode-box .swiper-qrcode{
-    width: 100%;
-    height: 100%;
-    overflow: hidden;
-    position: relative;
-}
-.gymain1 .qrcode-box .swiper-qrcode .qrcode-title{
-    width: 100%;
-    height: 30px;
-    line-height: 30px;
-    overflow: hidden;
-    text-align: center;
-}
-.gymain1 .qrcode-box .swiper-qrcode .swiper-slide img{
-    width: 100%;
-    height: calc(100% - 30px);
-}
-
-
-.gymain2{
-    width: 100%;
-    height: 100%;
-}
-.gymain2 .gymian2-one-box{
-    width: 100%;
-    height: 210px;
-}
-/*.gymain2 .gymian2-one-box .col-xs-5{*/
-/*    padding: 0 !important;*/
-/*}*/
-/*.gymain2 .gymian2-one-box .col-xs-7{*/
-/*    padding: 0 !important;*/
-/*}*/
-.gymain2 .gymian2-one-box .loginuserbox{
-    width: 100%;
-    height: 210px;
-    background-image: url("/admin/img/index-userbg.png");
-    background-repeat: no-repeat;
-    background-size: 100% 100%;
-    text-align: center;
-}
-.gymain2 .gymian2-one-box .loginuserbox img{
-    width: 49px;
-    height: 49px;
-    border-radius: 50%;
-    margin-top: 45px;
-}
-.gymain2 .gymian2-one-box .loginuserbox .loginusername{
-    margin-top: 15px;
-
-}
-.gymain2 .gymian2-one-box .loginuserbox .loginusername a{
-    font-size: 18px;
-    font-family: Source Han Sans CN;
-    font-weight: 500;
-    color: #FFFFFF;
-}
-.gymain2 .gymian2-one-box .loginuserbox .loginusername li a{
-    font-size: 16px;
-    color: #333;
-}
-
-.gymain2 .gymian2-one-box .onemenu{
-    width: 100%;
-    height: 100px;
-}
-.gymain2 .gymian2-one-box .onemenu .col-xs-6{
-    padding: 0 5px !important;
-}
-.gymain2 .gymian2-one-box .onemenu .col-xs-4{
-    padding: 0 5px !important;
-    margin-top: 10px !important;
-}
-.gymain2 .gymian2-one-box .onemenu .menu-info-box{
-    width: 100%;
-    height: 100px;
-    background: #FFFFFF;
-    border: 1px solid #EEEEEE;
-    border-radius: 10px;
-    position: relative;
-    z-index: 2;
-}
-.gymain2 .gymian2-one-box .onemenu .menu-info-box .menu-icon{
-    width: 70px;
-    height: 100px;
-    line-height: 100px;
-    display: inline-block;
-    float: left;
-    /*text-align: center;*/
-}
-.gymain2 .gymian2-one-box .onemenu .menu-info-box .menu-icon img{
-    margin-left: 20px;
-    width: 48px;
-    height: 48px;
-}
-.gymain2 .gymian2-one-box .onemenu .menu-info-box .menu-name{
-    width: calc(100% - 70px);
-    height: 100px;
-    display: inline-block;
-    float: right;
-}
-.gymain2 .gymian2-one-box .onemenu .menu-info-box .menu-name .title{
-    margin-top: 30px;
-    width: 100%;
-    height: 23px;
-    overflow: hidden;
-    font-size: 18px;
-    font-family: Source Han Sans CN;
-    font-weight: 500;
-    color: #333333;
-    padding-left: 3px;
-}
-.gymain2 .gymian2-one-box .onemenu .menu-info-box .menu-name .des{
-    width: 100%;
-    height: 23px;
-    overflow: hidden;
-    font-size: 14px;
-    font-weight: 400;
-    color: #949494;
-    padding-left: 3px;
-    margin-top: 5px;
-}
-.gymain2 .gymian2-one-box .onemenu .menu-info-box .jiantou{
-    width: 22px;
-    height: 22px;
-    position: absolute;
-    z-index: 1;
-    right: 15px;
-    top: 45%;
-}
-.gymian2-two-box{
-    /*width: 100%;*/
-    height: 290px;
-    background: #FFFFFF;
-    border: 1px solid #EEEEEE;
-    border-radius: 10px;
-    margin-top: 10px;
-    margin-left: -10px !important;
-    margin-right: -4px !important;
-    padding: 0 15px;
-}
-.gymian2-two-box .col-xs-4{
-    /*padding: 0 5px !important;*/
-}
-.gymian2-two-box .gymian2-two-header{
-    width: 100%;
-    height: 70px;
-    line-height: 70px;
-    font-size: 18px;
-    font-family: Source Han Sans CN;
-    font-weight: 500;
-    color: #333333;
-    /*padding-left: 25px;*/
-}
-.gymian2-two-box .gymian2-two-header img{
-    width: 20px;
-    height: 20px;
-    background: #DAE6FF;
-    border-radius: 50%;
-    float: right;
-    vertical-align: middle;
-    margin-top: 25px;
-    margin-right: 20px;
-}
-.gymain2 .gymian2-two-box .menu-info-box{
-    width: 100%;
-    height: 78px;
-    background: #F6F9FC;
-    border: 1px solid #EEEEEE;
-    border-radius: 10px;
-    position: relative;
-    z-index: 2;
-    margin-top: 9px;
-}
-.gymain2 .gymian2-two-box .menu-info-box .menu-icon{
-    width: 70px;
-    height: 78px;
-    line-height: 78px;
-    display: inline-block;
-    float: left;
-    text-align: center;
-}
-.gymain2 .gymian2-two-box .menu-info-box .menu-icon img{
-    /*margin-left: 20px;*/
-    width: 30px;
-    height: 30px;
-}
-.gymain2 .gymian2-two-box .menu-info-box .menu-name{
-    width: calc(100% - 70px);
-    height: 78px;
-    display: inline-block;
-    float: right;
-}
-.gymain2 .gymian2-two-box .menu-info-box .menu-name .title{
-    margin-top: 18px;
-    width: 100%;
-    height: 23px;
-    overflow: hidden;
-    font-size: 18px;
-    font-family: Source Han Sans CN;
-    font-weight: 500;
-    color: #333333;
-    padding-left: 3px;
-}
-.gymain2 .gymian2-two-box .menu-info-box .menu-name .des{
-    width: 100%;
-    height: 23px;
-    overflow: hidden;
-    font-size: 14px;
-    font-weight: 400;
-    color: #949494;
-    padding-left: 3px;
-    margin-top: 5px;
-}
-
-.gymian2-three-box{
-    height: 289px;
-    background: #FFFFFF;
-    border: 1px solid #EEEEEE;
-    border-radius: 10px;
-    margin-top: 10px;
-}
-
-
-
-
-.gymain3{
-    width: 100%;
-    height: 100%;
-    background: #fff;
-}
-

+ 215 - 0
public/admin/css/common_copy.css

@@ -0,0 +1,215 @@
+:root {
+    --themeColor: #284a94;
+}
+.bg-theme{
+    background-color: var(--themeColor) !important;
+}
+.pace .pace-progress {
+    background: var(--themeColor) !important;
+    position: fixed;
+    z-index: 2000;
+    top: 0;
+    width: 100%;
+    height: 2px;
+}
+/*解决底部有灰色区块*/
+.el-scrollbar__wrap {
+    overflow-x: hidden!important;
+    overflow-y: scroll!important;
+    margin-bottom: 0px!important;
+}
+
+/*elementui 表单元素去掉圆角*/
+.el-input__inner {
+    border-radius: 0px;
+}
+/*hplus 边框颜色*/
+.form-control:focus{
+    border-color: var(--themeColor) !important;
+    /*font-size: 13px!important;*/
+}
+.form-control{
+    width: 100%!important;
+    height: 32px;
+    color: #606266!important;
+    font-size: 13px!important;
+    padding: 5px 15px!important;
+}
+.ui-jqgrid .form-control{
+    height: auto;
+    width: auto !important;
+    padding: 0!important;
+    font-size: .9em!important;
+}
+#input_pager .form-control{
+    width: auto !important;
+}
+/*placeholder颜色设置*/
+input::-webkit-input-placeholder {
+    color: #909399!important;
+}
+input::-moz-input-placeholder {
+    color: #909399!important;
+}
+input::-ms-input-placeholder {
+    color: #909399!important;
+}
+
+.navbar{
+    background-color: #ffffff!important;
+    border-bottom: 1px solid #eee;
+}
+.navbar-header{
+    line-height: 60px!important;
+    font-size: 24px;
+    font-weight: bold;
+    padding-left: 20px;
+}
+.navbar-header:before{
+    content: '';
+    position: absolute;
+    height: 30px;
+    width: 2px;
+    background: #EDF4F5;
+    top: 15px;
+    left: 9px;
+}
+.sidebar-box{
+    position: fixed;
+    z-index: 10000000;
+    top: 61px;
+    left: 0;
+    bottom: 0;
+    width: 120px;
+    background-color: #FFFFFF!important;
+    /*overflow: hidden;*/
+}
+.sidebar-box.sidebar-box-h2{
+    width: 280px;
+}
+.sidebar-box .sidebar-box-sub{
+    position: relative;
+    width: 120px;
+    height: 100%;
+    float: left;
+}
+.sidebar-box .sidebar-box-sub .sidebar-collapse{
+    width: auto;
+    height: 100%;
+}
+
+.sidenav{
+    margin-bottom: 0;
+    height: 100%;
+}
+.sidenav .side-list{
+    height: 40px;
+    line-height: 40px;
+}
+.sidenav .side-list a{
+    display: block;
+    width: 100%;
+    height: 100%;
+    color: #effeff;
+    padding: 0 15px;
+    font-size: 14px;
+}
+.sidenav .side-list a i{
+    vertical-align: middle;
+    margin-right: 4px;
+}
+.sidenav .side-list a span{
+    vertical-align: middle;
+}
+.sidenav .side-list .active{
+    background-color: #ffffff;
+    color: #333333!important;
+}
+.sidenav .side-list a:hover,.sidenav .side-list a:focus{
+    background-color: rgba(255, 255, 255,0.2);
+}
+.sidenav .side-list .active:hover,.sidenav .side-list .active:focus{
+    background-color: #ffffff;
+    color: #333333!important;
+}
+
+.sidenavsub{
+    margin-bottom: 0;
+    padding: 0 10px;
+}
+.sidebar-box-sub2{
+    width: 160px!important;
+}
+.sidenavsub .side-group{
+    height: auto;
+    font-size: 12px;
+    color: #999999;
+    padding-top: 10px;
+}
+.sidenavsub .side-group .side-group-label{
+    /*padding: 0 15px;*/
+    padding-bottom: 5px;
+}
+.sidenavsub .side-group .side-list a{
+    /*padding-left: 25px;*/
+}
+.sidenavsub .side-list{
+    height: 40px;
+    line-height: 40px;
+    overflow: hidden;
+}
+.sidenavsub .side-list a{
+    display: block;
+    color: #333333;
+    /*padding: 0 15px;*/
+    padding-left: 10px;
+    font-size: 14px;
+}
+.sidenavsub .side-list .active{
+    background-color: #f5f5f5;
+}
+.sidenavsub .side-list a:hover,.sidenavsub .side-list a:focus{
+    color: var(--themeColor)!important;
+}
+
+.main-box{
+    width: 100%;
+    height: 100%;
+    /*padding: 75px 15px 15px 295px;*/
+    padding: 60px 0px 0px 280px;
+    margin-left: 26px;
+    /*min-height: 100%;*/
+}
+.main-box.main-box-h2{
+    /*padding: 75px 15px 15px 135px;*/
+    padding: 60px 0px 0px 120px;
+}
+
+.btn-primary {
+    background-color: var(--themeColor) !important;
+    border-color: var(--themeColor) !important;
+}
+.label-primary, .badge-primary {
+    background-color: var(--themeColor) !important;
+}
+
+#form-search .form-control{
+    width: 120px!important;
+}
+input[type=checkbox], input[type=radio] {
+    margin: 9px 0 0;
+}
+
+.multiselect-container input[type=checkbox],.multiselect-container input[type=radio]{
+    margin-top: 5px!important;
+}
+.multiselect-container .form-control{
+    height: 34px!important;
+}
+.multiselect-container .input-group-addon{
+    display: none!important;
+}
+.multiselect-container .multiselect-clear-filter{
+    height: 34px!important;
+}
+

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 771 - 263
public/admin/css/index.css


+ 109 - 0
public/admin/css/indexsub.css

@@ -0,0 +1,109 @@
+.navbar .level-menu-box{
+    width: auto;
+    height: 70px;
+    display: inline-block;
+    float: left;
+    padding-top: 20px;
+    margin-left: 10px;
+    /*position: absolute;*/
+    /*top: 0;*/
+    /*left: 25%;*/
+    /*right: 25%;*/
+}
+.navbar .level-menu-box .menu-name-box{
+    width: 120px;
+    height: 36px;
+    line-height: 36px;
+    text-align: center;
+    font-size: 18px;
+    font-family: Source Han Sans CN;
+    font-weight: 500;
+    color: #284A94;
+    display: inline-block;
+    float: left;
+    margin-left: 10px;
+    cursor: pointer;
+}
+.navbar .level-menu-box .cur-menu-style{
+    background: #284A94 !important;
+    border-radius: 10px !important;
+    color: #fff !important;
+}
+
+.gyindexsub-menu-list-box{
+    width: 100%;
+    height: calc(100% - 70px);
+    /*height: calc(100% - 128px);*/
+}
+.gyindexsub-menu-list-box .gyindexsub-three-menu-list{
+    /*width: 216px;*/
+    /*min-height: 745px;*/
+    /*background: #EDF2FD;*/
+    /*border-radius: 10px 0px 0px 10px;*/
+    /*height: auto;*/
+    /*position: fixed;*/
+    /*z-index: 10;*/
+    /*left: 18px;*/
+    /*top: 128px;*/
+}
+.qsidenav{
+    width: 216px;
+    height: 100%;
+    /*height: calc(100% - 128px);*/
+    background: #EDF2FD;
+    border-radius: 10px 0px 0px 10px;
+    display: inline-block;
+    float: left;
+    margin-top: 10px;
+    margin-left: 18px;
+    overflow-y: auto;
+    padding-bottom: 20px;
+}
+.qsidenav .qsidenav-list{
+    width: 100%;
+    height: auto;
+    padding: 0 14px;
+    overflow: hidden;
+}
+.qsidenav .qsidenav-list .qsidenav-twomenu-name{
+    width: 188px;
+    height: 60px;
+    line-height: 60px;
+    overflow: hidden;
+    padding-left: 14px;
+    font-size: 20px;
+    font-family: Source Han Sans CN;
+    font-weight: 500;
+    color: #284A94;
+}
+.qsidenav .qsidenav-list .sub{
+    width: 100%;
+    height: auto;
+    overflow: hidden;
+}
+.qsidenav .qsidenav-list .sub .sub-list{
+    width: 188px;
+    height: 60px;
+    line-height: 60px;
+    font-size: 17px;
+    font-family: Source Han Sans CN;
+    font-weight: 400;
+    color: #333333;
+    overflow: hidden;
+    padding-left: 15px;
+    padding-right: 22px;
+}
+.qsidenav .qsidenav-list .sub .cur{
+    background: #DEE6F9 !important;
+    color: #284A94 !important;
+    border-left: 2px solid #284A94;
+}
+.gymenu-body-box{
+    position: absolute;
+    z-index: 10;
+    top: 141px;
+    left: 235px;
+    right: 20px;
+    bottom: 0px;
+    background-color: #ffffff;
+}

BIN
public/admin/img/bread-crumbs-bg.png


BIN
public/admin/img/index-logo.png


BIN
public/admin/img/indexsub-bg.png


BIN
public/admin/img/status-bg.png


BIN
public/admin/img/status-bg1.png


BIN
public/admin/img/status-bg2.png


BIN
public/admin/img/status-bg3.png


BIN
public/admin/img/status-bg4.png


BIN
public/admin/img/status-bg5.png