Index.php 60 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598
  1. <?php
  2. namespace app\admin\controller;
  3. use app\common\model\Config;
  4. use think\Db;
  5. class Index extends Auth
  6. {
  7. public function index(){
  8. $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
  9. $this->assign('menus',$menus);
  10. $userInfo = Db::name('user')
  11. ->where('id',$this->userId)
  12. ->find();
  13. $this->assign('userInfo',$userInfo);
  14. // 判断用户是否是调度
  15. $isDispatch = 0;
  16. if(check_is_dispatch($this->userId) || check_two_dispatch($this->userId)){
  17. $isDispatch = 1;
  18. }
  19. $this->assign('isDispatch',$isDispatch);
  20. $order = 0;
  21. // 判断用户是否是调度
  22. $level1 = check_is_dispatch($this->userId);
  23. $level2 = check_two_dispatch($this->userId);
  24. $level2onoff = two_dispatch_off($this->orgId);
  25. if(!$level1 && !$level2){
  26. $order = -1;
  27. }else{
  28. // 一级调度
  29. if($level1 || (!$level2onoff && $level2)){
  30. $map[] = ['org_id','=',$this->orgId];
  31. $map[] = ['del','=',0];
  32. $map[] = ['order_mode','=',1];
  33. if($level2onoff){
  34. $map[] = ['is_deal','=',0];
  35. }
  36. if(!is_admin($this->userId)){
  37. $auth = get_dispatch_auth($this->userId);
  38. if($auth){
  39. $map[] = ['work_type_mode', 'in', $auth];
  40. $where[] = ['o.work_type_mode', 'in', $auth];
  41. }else{
  42. $map[] = ['work_type_mode', '=', -1];
  43. $where[] = ['o.work_type_mode', '=', -1];
  44. }
  45. }
  46. $order = Db::name('orders')->where($map)->count();
  47. //$驳回的订单
  48. $where[] = ['o.del','=',0];
  49. $where[] = ['t.del','=',0];
  50. $bh = Db::name('orders')
  51. ->alias('o')
  52. ->join('todo t','t.order_id=o.id')
  53. ->where('t.todo_mode',4)
  54. ->where('t.org_id',$this->orgId)
  55. ->where('o.order_mode',4)
  56. ->where('o.org_id',$this->orgId)
  57. ->where($where)
  58. ->group('o.id')
  59. ->count();
  60. $order = $order + $bh;
  61. } else if($level2 && $level2onoff) { // 二级调度
  62. $rolesId = Db::name('user_roles')->where('user_id',$this->userId)->value('roles_id');
  63. if(!$rolesId){
  64. $order = 0;
  65. }else{
  66. $map[] = ['b.org_id','=',$this->orgId];
  67. $map[] = ['b.del','=',0];
  68. $map[] = ['b.order_mode','=',1];
  69. $map[] = ['b.is_deal','=',1];
  70. $map[] = ['a.roles_id','=',$rolesId];
  71. if(!is_admin($this->userId)){
  72. $auth = get_dispatch_auth($this->userId);
  73. if($auth){
  74. $map[] = ['b.work_type_mode', 'in', $auth];
  75. }else{
  76. $map[] = ['b.work_type_mode', '=', -1];
  77. }
  78. }
  79. $order = Db::name('dispatch_log')
  80. ->alias('a')
  81. ->join('orders b','b.id = a.order_id')
  82. ->where($map)
  83. ->field('a.*')
  84. ->count();
  85. }
  86. }
  87. }
  88. $complainCount = Db::name('complain')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  89. $hiddendangerCount = Db::name('hiddendanger')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  90. $endCount = $order+$complainCount+$hiddendangerCount;
  91. $this->assign('orderNums',$endCount);
  92. //今日看板
  93. $dayOrderNums1 = Db::name('orders')
  94. ->where('org_id',$this->orgId)
  95. ->where('del',0)
  96. ->where('order_mode',1)
  97. ->where('create_time','>=',date('Y-m-d').' 00:00:00')
  98. ->where('create_time','<=',date('Y-m-d').' 23:59:59')
  99. ->count();
  100. $dayOrderNums2 = Db::name('orders')
  101. ->where('org_id',$this->orgId)
  102. ->where('del',0)
  103. ->where('order_mode',4)
  104. ->where('create_time','>=',date('Y-m-d').' 00:00:00')
  105. ->where('create_time','<=',date('Y-m-d').' 23:59:59')
  106. ->count();
  107. $dayOrderNums3 = Db::name('orders')
  108. ->where('org_id',$this->orgId)
  109. ->where('del',0)
  110. ->where('order_mode',5)
  111. ->where('create_time','>=',date('Y-m-d').' 00:00:00')
  112. ->where('create_time','<=',date('Y-m-d').' 23:59:59')
  113. ->count();
  114. $dayOrderNums4 = Db::name('orders')
  115. ->where('org_id',$this->orgId)
  116. ->where('del',0)
  117. ->where('order_mode',6)
  118. ->where('create_time','>=',date('Y-m-d').' 00:00:00')
  119. ->where('create_time','<=',date('Y-m-d').' 23:59:59')
  120. ->count();
  121. $dayOrderNums5 = Db::name('orders')
  122. ->where('org_id',$this->orgId)
  123. ->where('del',0)
  124. ->where('order_mode',2)
  125. ->where('create_time','>=',date('Y-m-d').' 00:00:00')
  126. ->where('create_time','<=',date('Y-m-d').' 23:59:59')
  127. ->count();
  128. $dayOrderNums6 = Db::name('orders')
  129. ->where('org_id',$this->orgId)
  130. ->where('del',0)
  131. ->where('order_mode',3)
  132. ->where('create_time','>=',date('Y-m-d').' 00:00:00')
  133. ->where('create_time','<=',date('Y-m-d').' 23:59:59')
  134. ->count();
  135. $dayOrderCount =[
  136. 'count1'=> $dayOrderNums1,
  137. 'count2'=> $dayOrderNums2,
  138. 'count3'=> $dayOrderNums3,
  139. 'count4'=> $dayOrderNums4,
  140. 'count5'=> $dayOrderNums5,
  141. 'count6'=> $dayOrderNums6,
  142. ];
  143. $this->assign('dayOrderCount',$dayOrderCount);
  144. $notice = Db::name('notice')
  145. ->where('org_id',$this->orgId)
  146. ->where('del',0)
  147. ->where('user_id',$this->userId)
  148. ->field('id,title,create_time')
  149. ->order('id desc')
  150. ->limit(2)
  151. ->select();
  152. $this->assign('notice',$notice);
  153. //常用模块
  154. $module = Db::name('user_menu')->where('user_id',$this->userId)->order('count desc')->select();
  155. $id = 500;
  156. $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
  157. $submenus = [];
  158. foreach ($menus as $k=>$v){
  159. if($v['id'] == $id){
  160. $submenus = $v['child'];
  161. break;
  162. }
  163. }
  164. $lists11 = [];
  165. foreach ($submenus as $k=>$v){
  166. // if(!$v['url']){
  167. // $v['url'] = url('Index/submenu',['id'=>$v['id'],'t'=>1]);
  168. // }
  169. $lists11[] = $v;
  170. }
  171. $this->assign('submenus',$submenus);
  172. $limit = 6;
  173. $modules = [];
  174. foreach ($module as $k=>$v){
  175. foreach ($lists11 as $kk=>$vv){
  176. if(count($modules) == $limit){
  177. continue;
  178. }
  179. if($vv['id'] == $v['menu_id']){
  180. $v['title'] = $vv['title'];
  181. $v['url'] = $vv['url'];
  182. $v['img'] = $vv['img'];
  183. $v['des'] = $vv['des'];
  184. $modules[] = $v;
  185. break;
  186. }
  187. }
  188. }
  189. $this->assign('module',$modules);
  190. $threeMenu = model('Menu')->getMenuTree1($this->rolesId,$this->orgId,'');
  191. $userEndMenu = [];
  192. foreach ($threeMenu as $k=>$v){
  193. if($v['url']){
  194. $userEndMenu[] = $v;
  195. }
  196. }
  197. $this->assign('userEndMenu',$userEndMenu);
  198. $authMenuIds = array_column($threeMenu,'id');
  199. //固定模块
  200. $fixedModule = Db::name('menu')
  201. ->where('id',500)
  202. ->where('del',0)
  203. ->find();
  204. $fixedModule1 = Db::name('menu')
  205. ->where('id',1)
  206. ->where('del',0)
  207. ->find();
  208. $fixedModule2 = Db::name('menu')
  209. ->where('id',144)
  210. ->where('del',0)
  211. ->find();
  212. $fixedModule3 = Db::name('menu')
  213. ->where('id',163)
  214. ->where('del',0)
  215. ->find();
  216. $fixedModule4 = Db::name('menu')
  217. ->where('id',28)
  218. ->where('del',0)
  219. ->find();
  220. $fixedModuleAuth = $fixedModuleAuth1 = $fixedModuleAuth2 = $fixedModuleAuth3 = $fixedModuleAuth4 = 0 ;
  221. if(in_array($fixedModule['id'],$authMenuIds)){
  222. $fixedModuleAuth = 1 ;
  223. }
  224. if(in_array($fixedModule1['id'],$authMenuIds)){
  225. $fixedModuleAuth1 = 1 ;
  226. }
  227. if(in_array($fixedModule2['id'],$authMenuIds)){
  228. $fixedModuleAuth2 = 1 ;
  229. }
  230. if(in_array($fixedModule3['id'],$authMenuIds)){
  231. $fixedModuleAuth3 = 1 ;
  232. }
  233. if(in_array($fixedModule4['id'],$authMenuIds)){
  234. $fixedModuleAuth4 = 1 ;
  235. }
  236. $this->assign('fixedModule',$fixedModule);
  237. $this->assign('fixedModule1',$fixedModule1);
  238. $this->assign('fixedModule2',$fixedModule2);
  239. $this->assign('fixedModule3',$fixedModule3);
  240. $this->assign('fixedModule4',$fixedModule4);
  241. $this->assign('fixedModuleAuth',$fixedModuleAuth);
  242. $this->assign('fixedModuleAuth1',$fixedModuleAuth1);
  243. $this->assign('fixedModuleAuth2',$fixedModuleAuth2);
  244. $this->assign('fixedModuleAuth3',$fixedModuleAuth3);
  245. $this->assign('fixedModuleAuth4',$fixedModuleAuth4);
  246. // APP下载二维码
  247. $download = think_encrypt(url('h5/Index/download','',true,true));
  248. $this->assign('download',$download);
  249. // 小程序二维码
  250. $wxcode = Db::name('org')->where('id',$this->orgId)->value('wxqrcode');
  251. $this->assign('wxcode',$wxcode);
  252. // 陪护h5
  253. $phcode = think_encrypt(config('app.ph_url').'?orgId='.$this->orgId);
  254. $this->assign('phcode',$phcode);
  255. // 点餐h5
  256. $shopcode = think_encrypt(config('app.shop_url').'?orgId='.$this->orgId);
  257. $this->assign('shopcode',$shopcode);
  258. // 商城h5
  259. $xshopcode = think_encrypt(config('app.xshop_url').'?orgId='.$this->orgId);
  260. $this->assign('xshopcode',$xshopcode);
  261. return $this->fetch();
  262. }
  263. public function ocount(){
  264. $order = 0;
  265. // 判断用户是否是调度
  266. $level1 = check_is_dispatch($this->userId);
  267. $level2 = check_two_dispatch($this->userId);
  268. $level2onoff = two_dispatch_off($this->orgId);
  269. if(!$level1 && !$level2){
  270. $order = -1;
  271. }else{
  272. // 一级调度
  273. if($level1 || (!$level2onoff && $level2)){
  274. $map[] = ['org_id','=',$this->orgId];
  275. $map[] = ['del','=',0];
  276. $map[] = ['order_mode','=',1];
  277. if($level2onoff){
  278. $map[] = ['is_deal','=',0];
  279. }
  280. if(!is_admin($this->userId)){
  281. $auth = get_dispatch_auth($this->userId);
  282. if($auth){
  283. $map[] = ['work_type_mode', 'in', $auth];
  284. $where[] = ['o.work_type_mode', 'in', $auth];
  285. }else{
  286. $map[] = ['work_type_mode', '=', -1];
  287. $where[] = ['work_type_mode', '=', -1];
  288. }
  289. }
  290. $order = Db::name('orders')->where($map)->count();
  291. //$驳回的订单
  292. $where[] = ['o.del','=',0];
  293. $where[] = ['t.del','=',0];
  294. $bh = Db::name('orders')
  295. ->alias('o')
  296. ->join('todo t','t.order_id=o.id')
  297. ->where('t.todo_mode',4)
  298. ->where('t.org_id',$this->orgId)
  299. ->where('o.order_mode',4)
  300. ->where('o.org_id',$this->orgId)
  301. ->where($where)
  302. ->group('o.id')
  303. ->count();
  304. $order = $order + $bh;
  305. } else if($level2 && $level2onoff) { // 二级调度
  306. $rolesId = Db::name('user_roles')->where('user_id',$this->userId)->value('roles_id');
  307. if(!$rolesId){
  308. $order = 0;
  309. }else{
  310. $map[] = ['b.org_id','=',$this->orgId];
  311. $map[] = ['b.del','=',0];
  312. $map[] = ['b.order_mode','=',1];
  313. $map[] = ['b.is_deal','=',1];
  314. $map[] = ['a.roles_id','=',$rolesId];
  315. if(!is_admin($this->userId)){
  316. $auth = get_dispatch_auth($this->userId);
  317. if($auth){
  318. $map[] = ['b.work_type_mode', 'in', $auth];
  319. }else{
  320. $map[] = ['b.work_type_mode', '=', -1];
  321. }
  322. }
  323. $order = Db::name('dispatch_log')
  324. ->alias('a')
  325. ->join('orders b','b.id = a.order_id')
  326. ->where($map)
  327. ->field('a.*')
  328. ->count();
  329. }
  330. }
  331. $complainCount = Db::name('complain')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  332. $hiddendangerCount = Db::name('hiddendanger')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  333. $endCount = $order+$complainCount+$hiddendangerCount;
  334. }
  335. $this->success('成功','',['count'=>$endCount]);
  336. }
  337. public function def(){
  338. $id = 500;
  339. $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
  340. $submenus = [];
  341. foreach ($menus as $k=>$v){
  342. if($v['id'] == $id){
  343. $submenus = $v['child'];
  344. break;
  345. }
  346. }
  347. $lists = [];
  348. foreach ($submenus as $k=>$v){
  349. if(!$v['url']){
  350. // $v['url'] = url('Index/indexsub',['id'=>$v['id'],'t'=>1]);
  351. }
  352. $lists[] = $v;
  353. }
  354. $this->assign('lists',$lists);
  355. // 获取常用模块
  356. $cys = Db::name('user_menu')
  357. ->where('user_id',$this->userId)
  358. ->order('count desc,id asc')
  359. ->select();
  360. $cys = $cys?$cys:[];
  361. $ncys = [];
  362. foreach ($cys as $k=>$v){
  363. foreach ($lists as $kk=>$vv){
  364. if(count($ncys) == 5){
  365. continue;
  366. }
  367. if($vv['id'] == $v['menu_id']){
  368. $v['title'] = $vv['title'];
  369. $v['url'] = $vv['url'];
  370. $v['img'] = $vv['img'];
  371. $v['des'] = $vv['des'];
  372. $ncys[] = $v;
  373. break;
  374. }
  375. }
  376. }
  377. $this->assign('cys',$ncys);
  378. // 自定义模块
  379. $usermenus = Db::name('user_menu_group')->where('user_id',$this->userId)->order('sort asc,id asc')->select();
  380. $usermenus = $usermenus?$usermenus:[];
  381. $groupMenuList = $usermenus;
  382. $allmenus = [];
  383. foreach ($usermenus as $k=>$v){
  384. $menus = [];
  385. if($v['menus']){
  386. $menuids = explode(',',$v['menus']);
  387. $allmenus = array_merge($allmenus,$menuids);
  388. foreach ($lists as $kk=>$vv){
  389. if(in_array($vv['id'],$menuids)){
  390. $menus[] = $vv;
  391. }
  392. }
  393. }
  394. $usermenus[$k]['menus'] = $menus;
  395. }
  396. $menus = [];
  397. foreach ($lists as $kk=>$vv){
  398. if(!$allmenus || !in_array($vv['id'],$allmenus)){
  399. $menus[] = $vv;
  400. }
  401. }
  402. $usermenus[] = [
  403. 'id' => 0,
  404. 'title' => '综合模块',
  405. 'menus' => $menus
  406. ];
  407. $arr[] = [
  408. 'id'=>0,
  409. 'title'=>'综合模块',
  410. ];
  411. $this->assign('usermenusgroup',array_merge($arr,$groupMenuList));
  412. $this->assign('usermenus',$usermenus);
  413. return $this->fetch();
  414. }
  415. public function todo(){
  416. $mode = input('mode',1);
  417. $todoList = Db::name('todo')
  418. ->where('org_id',$this->orgId)
  419. ->where('del',0)
  420. ->where('work_type_mode',$mode)
  421. ->limit(11)
  422. ->order('id desc')
  423. ->select();
  424. foreach ($todoList as $k=>$v){
  425. $todoList[$k]['work_type_mode_text'] = Db::name('work_type_mode')->where('id',$v['work_type_mode'])->value('name');
  426. $todoList[$k]['to_user_name'] = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
  427. $todoList[$k]['user_name'] = Db::name('user')->where('id',$v['create_user_id'])->value('real_name');
  428. $todoList[$k]['content'] = Db::name('orders')->where('id',$v['order_id'])->value('content');
  429. $todomode = Db::name('todo_mode')->where('id',$v['todo_mode'])->find();
  430. $todoList[$k]['todo_mode_text'] = $todomode?$todomode['in_content']:'';
  431. $todoList[$k]['todo_mode_color'] = $todomode?$todomode['color']:'';
  432. }
  433. //数据返回
  434. $totalCount = count($todoList);
  435. $totalPage = 1;
  436. $result['page'] = 1;
  437. $result['total'] = $totalPage;
  438. $result['records'] = $totalCount;
  439. $result['rows'] = $todoList;
  440. return json($result);
  441. }
  442. public function attendanceCount1(){
  443. $group = Db::name('attendance_group')
  444. ->where('del',0)
  445. ->where('org_id',$this->orgId)
  446. ->select();
  447. $groupsId = [];
  448. $groupsId2 = [];
  449. $week = date('w');
  450. foreach ($group as $k=>$v){
  451. $content = json_decode($v['content'],true);
  452. if($v['type'] == 1){
  453. foreach ($content['week'] as $kk=>$vv){
  454. if($vv['week'] == $week && $vv['class_id'] > 0){
  455. $groupsId[] = $v['id'];
  456. }
  457. }
  458. }
  459. if($v['type'] == 2){
  460. $groupClass = Db::name('attendance_group_class')
  461. ->where('group_id',$v['id'])
  462. ->where('org_id',$this->orgId)
  463. ->where('day',date('Y-m-d'))
  464. ->find();
  465. if($groupClass){
  466. $groupsId2[] = $v['id'];
  467. }
  468. }
  469. }
  470. $endGroupIds = array_unique(array_merge($groupsId,$groupsId2));
  471. $userCount = Db::name('attendance_group_user')
  472. ->where('org_id',$this->orgId)
  473. ->whereIn('group_id',$endGroupIds)
  474. ->count();
  475. $userIds = Db::name('attendance_group_user')
  476. ->where('org_id',$this->orgId)
  477. ->whereIn('group_id',$endGroupIds)
  478. ->column('user_id');
  479. $attendanceNums = 0;
  480. foreach ($userIds as $k=>$v){
  481. $attendanceRecord = Db::name('attendance_record')
  482. ->where('user_id',$v)
  483. ->where('org_id',$this->orgId)
  484. // ->where('status',1)
  485. ->where('create_time','>=',date('Y-m-d').' 00:00:00')
  486. ->where('create_time','<=',date('Y-m-d').' 23:59:59')
  487. ->select();
  488. $flag = 0;
  489. if($attendanceRecord){
  490. foreach ($attendanceRecord as $kk=>$vv){
  491. if($vv['status'] == 1){
  492. }else{
  493. $flag = 1;
  494. }
  495. }
  496. if($flag == 0){
  497. $attendanceNums +=1;
  498. }
  499. }
  500. }
  501. $attendanceNums3 = $userCount-$attendanceNums;
  502. $attendanceCount1 = [
  503. 'count1' => $userCount, //总人数
  504. 'count2' => $attendanceNums, //在职人数
  505. 'count3' => $attendanceNums3>0?$attendanceNums3:0, //缺勤人数
  506. 'bl' => $userCount>0?round($attendanceNums/$userCount,2)*100:0,
  507. 'bl2' => $userCount>0?round($attendanceNums3/$userCount,2)*100:0,
  508. ];
  509. $this->success('','',$attendanceCount1);
  510. }
  511. public function changeOrg(){
  512. if(request()->isAjax()){
  513. $id = input('id/d');
  514. $info = Db::name('org')->where('id',$id)->find();
  515. if($info['type'] != 2){
  516. $this->error('管理机构不能切换');
  517. }
  518. session('orgId',$info['id']);
  519. session('orgName',$info['name']);
  520. $this->success('切换成功');
  521. }else{
  522. $tree = model('Org')->getTreeByRoles($this->rolesId,$this->userId);
  523. $this->assign('tree',$tree);
  524. return $this->fetch();
  525. }
  526. }
  527. public function order(){
  528. // 判断用户是否是调度
  529. $level1 = check_is_dispatch($this->userId);
  530. $level2 = check_two_dispatch($this->userId);
  531. $level2onoff = two_dispatch_off($this->orgId);
  532. if(!$level1 && !$level2){
  533. $this->error('不是调度');
  534. }
  535. $order = 0;
  536. // 一级调度
  537. if($level1 || (!$level2onoff && $level2)){
  538. $map[] = ['org_id','=',$this->orgId];
  539. $map[] = ['del','=',0];
  540. $map[] = ['order_mode','=',1];
  541. if($level2onoff){
  542. $map[] = ['is_deal','=',0];
  543. }
  544. if(!is_admin($this->userId)){
  545. $auth = get_dispatch_auth($this->userId);
  546. if($auth){
  547. $map[] = ['work_type_mode', 'in', $auth];
  548. $where[] = ['o.work_type_mode', 'in', $auth];
  549. }else{
  550. $map[] = ['work_type_mode', '=', -1];
  551. $where[] = ['o.work_type_mode', '=', -1];
  552. }
  553. }
  554. $order = Db::name('orders')->where($map)->count();
  555. //$驳回的订单
  556. $where[] = ['o.del','=',0];
  557. $where[] = ['t.del','=',0];
  558. $bh = Db::name('orders')
  559. ->alias('o')
  560. ->join('todo t','t.order_id=o.id')
  561. ->where('t.todo_mode',4)
  562. ->where('t.org_id',$this->orgId)
  563. ->where('o.order_mode',4)
  564. ->where('o.org_id',$this->orgId)
  565. ->where($where)
  566. ->group('o.id')
  567. ->count();
  568. $order = $order + $bh;
  569. } else if($level2 && $level2onoff) { // 二级调度
  570. $rolesId = Db::name('user_roles')->where('user_id',$this->userId)->value('roles_id');
  571. if(!$rolesId){
  572. $this->error('无订单');
  573. }
  574. $map[] = ['b.org_id','=',$this->orgId];
  575. $map[] = ['b.del','=',0];
  576. $map[] = ['b.order_mode','=',1];
  577. $map[] = ['b.is_deal','=',1];
  578. $map[] = ['a.roles_id','=',$rolesId];
  579. if(!is_admin($this->userId)){
  580. $auth = get_dispatch_auth($this->userId);
  581. if($auth){
  582. $map[] = ['b.work_type_mode', 'in', $auth];
  583. }else{
  584. $map[] = ['b.work_type_mode', '=', -1];
  585. }
  586. }
  587. $order = Db::name('dispatch_log')
  588. ->alias('a')
  589. ->join('orders b','b.id = a.order_id')
  590. ->where($map)
  591. ->field('a.*')
  592. ->count();
  593. }
  594. $complainCount = Db::name('complain')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  595. $hiddendangerCount = Db::name('hiddendanger')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  596. $endCount = $order+$complainCount+$hiddendangerCount;
  597. if(!empty($endCount)){
  598. $this->success('','',$endCount);
  599. }else{
  600. $this->error('无订单');
  601. }
  602. }
  603. public function ordersList() {
  604. $orderType = input('orderType',1);
  605. $mode = input('mode', 0);
  606. $level1 = check_is_dispatch($this->userId);
  607. $level2 = check_two_dispatch($this->userId);
  608. $turnoff = two_dispatch_off($this->orgId);
  609. if (request()->isAjax()) {
  610. //分页参数
  611. $length = input('rows', 10, 'intval'); //每页条数
  612. $page = input('page', 1, 'intval'); //第几页
  613. $start = ($page - 1) * $length; //分页开始位置
  614. //排序
  615. $sortRow = input('sidx', 'id', 'trim'); //排序列
  616. $sort = input('sord', 'desc', 'trim'); //排序方式
  617. $order = $sortRow . ' ' . $sort;
  618. if($orderType == 1){
  619. $content = input('content', '', 'trim');
  620. if ($content) {
  621. $map[] = ['content', 'like', '%' . $content . '%'];
  622. }
  623. $dep_id = input('dep_id', '', 'trim');
  624. if ($dep_id != '') {
  625. $map[] = ['dep_id', '=', $dep_id];
  626. }
  627. $order_mode = input('order_mode', 1);
  628. $map6 = [];
  629. if ($order_mode != '') {
  630. if($level1 && $turnoff && $mode != 15){ // 一级调度且二级调度开关开着,品质整改例外
  631. if ($order_mode == 1) {
  632. $map[] = ['is_deal', '=', 0];
  633. }else if ($order_mode == 4) {
  634. $map6[] = ['is_deal', '=', 1];
  635. }
  636. }
  637. if($order_mode==100){//已挂起
  638. $gq = Db::name('todo')
  639. ->where('work_type_mode',1)
  640. ->where('todo_mode',2)
  641. ->where('pause',1)
  642. ->column('order_id');
  643. if(empty($gq)){
  644. $map[] = ['id', '=', -1];
  645. }else{
  646. $map[] = ['id', 'in', $gq];
  647. }
  648. }else{
  649. $map[] = ['order_mode', '=', $order_mode];
  650. }
  651. }
  652. $b = input('start', '', 'trim');
  653. $e = input('end', '', 'trim');
  654. if ($b) {
  655. $b = date('Ymd', strtotime($b));
  656. $map[] = ['create_yyyymmdd', '>=', $b];
  657. }
  658. if ($e) {
  659. $e = date('Ymd', strtotime($e));
  660. $map[] = ['create_yyyymmdd', '<=', $e];
  661. }
  662. $map[] = ['del', '=', 0];
  663. $map[] = ['org_id', '=', $this->orgId];
  664. if($mode==-1){
  665. $map[] = ['source_type', '=', 4];
  666. }
  667. $type = input('type', '', 'trim');
  668. $oids = [];
  669. if ($type != '') {
  670. $map1[] = ['parent_id', '=', $type];
  671. $type_id = Db::name('order_type')
  672. ->where($map1)
  673. ->where('org_id', $this->orgId)
  674. ->where('enable', 1)
  675. ->column('id');
  676. if (!empty($type_id)) {
  677. $map3[] = ['type_id', 'in', $type_id];
  678. $ids = Db::name('order_repair')
  679. ->where($map3)
  680. ->column('order_id');
  681. if (!empty($ids)) {
  682. $oids = $ids;
  683. }
  684. else {
  685. $oids = [];
  686. }
  687. }
  688. else {
  689. $oids = [];
  690. }
  691. }
  692. if($level2 && $turnoff){ // 二级调度
  693. $roles_id = Db::name('user_roles')
  694. ->where('user_id', $this->userId)
  695. ->value('roles_id');
  696. $ids = Db::name('dispatch_log')
  697. ->where('roles_id', $roles_id)
  698. ->whereOr('to_user_id', $this->userId)
  699. ->column('order_id');
  700. if (empty($ids)) {
  701. $map[] = ['id', '=', -1];
  702. } else {
  703. if($type != ''){
  704. $oids = array_intersect($oids,$ids);
  705. if($oids){
  706. $map[] = ['id', 'in', $oids];
  707. }else{
  708. $map[] = ['id', '=', -1];
  709. }
  710. }else{
  711. $map[] = ['id', 'in', $ids];
  712. }
  713. }
  714. }else{
  715. if($type != ''){
  716. if($oids){
  717. $map[] = ['id', 'in', $oids];
  718. }else{
  719. $map[] = ['id', '=', 0];
  720. }
  721. }
  722. }
  723. if($mode == 15){ // 品质检查,单独处理
  724. $map[] = ['work_type_mode','=',$mode];
  725. }else{
  726. $work_type_mode = input('work_type_mode','','trim');
  727. if(!is_admin($this->userId)){
  728. $auth = get_dispatch_auth($this->userId);
  729. if($auth){
  730. $map[] = ['work_type_mode', 'in', $auth];
  731. if($mode > 0){
  732. $map[] = ['work_type_mode', '=', $mode];
  733. }else{
  734. if($work_type_mode!=''){
  735. $map[] = ['work_type_mode','=',$work_type_mode];
  736. }
  737. }
  738. }else{
  739. $map[] = ['work_type_mode', '=', -1];
  740. }
  741. }else{
  742. if($mode > 0){
  743. $map[] = ['work_type_mode', '=', $mode];
  744. }else{
  745. if($work_type_mode!=''){
  746. $map[] = ['work_type_mode','=',$work_type_mode];
  747. }
  748. }
  749. }
  750. }
  751. $map = empty($map) ? true : $map;
  752. //数据查询
  753. $lists = db('orders')->where($map)
  754. ->whereOr($map6)
  755. ->limit($start, $length)->order($order)->select();
  756. foreach ($lists as $k => $v) {
  757. $lists[$k] = model('orders')->formatOrder($v);
  758. if ($turnoff && $level1 && $v['order_mode'] == 1 && $v['is_deal'] == 1) {
  759. $lists[$k]['order_mode_text'] = '已派发';
  760. }
  761. $lists[$k]['bh_nums'] = Db::name('todo')->where('order_id',$v['id'])->where('del',0)->where('todo_mode',4)->count();
  762. $gq = Db::name('todo')
  763. ->where('order_id',$v['id'])
  764. ->where('work_type_mode',1)
  765. ->where('todo_mode',2)
  766. ->where('pause',1)
  767. ->find();
  768. $lists[$k]['gq'] = $gq?'存在挂起':'';
  769. }
  770. //数据返回
  771. $totalCount = db('orders')->where($map)->count();
  772. }elseif($orderType == 2){
  773. $map[] = ['del','=',0];
  774. $map[] = ['org_id','=',$this->orgId];
  775. $hour = (new Config())->getConfig('org_complain_hour',$this->orgId);
  776. $hour = $hour>0?$hour:0;
  777. $endTime = date('Y-m-d H:i:s',time() - $hour*60*60);
  778. $type = input('type/d',0);
  779. if($hour > 0 && $type == 1){
  780. $map[] = ['create_time','<',$endTime];
  781. $map[] = ['status','=',0];
  782. }
  783. $from = input('from', '', 'trim');
  784. if ($from!='') {
  785. $map[] = ['from','=',$from];
  786. }
  787. $map[] = ['status','=',0];
  788. $map[] = ['order_id','=',0];
  789. $map= empty($map) ? true: $map;
  790. //数据查询
  791. $lists = db('complain')->where($map)
  792. ->limit($start,$length)->order($order)->select();
  793. foreach ($lists as $k=>$v){
  794. $lists[$k]['depName'] = Db::name('dep')
  795. ->where('id',$v['dep_id'])
  796. ->value('title');
  797. // $lists[$k]['fromName'] = model('Complain')->from[$v['from']];
  798. $lists[$k]['fromName'] = '';
  799. if($v['order_id'] > 0 && $v['bus_type'] != 0){
  800. if($v['to_from']){
  801. $lists[$k]['fromName'] = '一键呼叫';
  802. }else{
  803. $lists[$k]['fromName'] = '隐患';
  804. }
  805. }
  806. $lists[$k]['worktypemode'] = '';
  807. if($v['order_id'] > 0 && in_array($v['bus_type'],[0,1])){
  808. $worktype = Db::name('orders')
  809. ->alias('o')
  810. ->join('work_type_mode w','o.work_type_mode = w.id')
  811. ->where('o.id',$v['order_id'])
  812. ->value('w.name');
  813. $lists[$k]['worktypemode'] = $worktype?$worktype:'';
  814. }
  815. if($v['hide'] == 1){
  816. $lists[$k]['realName'] = '匿名';
  817. }else{
  818. $lists[$k]['realName'] = Db::name('user')
  819. ->where('id',$v['create_user_id'])
  820. ->value('real_name');
  821. }
  822. $orderMode = 0;
  823. if($v['order_id'] > 0){
  824. $orderMode = Db::name('orders')->where('id',$v['order_id'])->value('order_mode');
  825. }
  826. $lists[$k]['statusTxt'] = model('Complain')->formatStatus($v['status'],$v['order_id'],$v['id']);
  827. $lists[$k]['order_mode'] = $orderMode;
  828. if($v['create_time'] < $endTime && $v['status']==0){
  829. $lists[$k]['statusTxt'] = $lists[$k]['statusTxt'].'<span style="color:red;">(已超时)</span>';
  830. }
  831. }
  832. //数据返回
  833. $totalCount = db('complain')->where($map)->count();
  834. }elseif ($orderType == 3){
  835. $map[] = ['del','=',0];
  836. $map[] = ['org_id','=',$this->orgId];
  837. $map[] = ['status','=',0];
  838. $map[] = ['order_id','=',0];
  839. $from = input('from', '', 'trim');
  840. if ($from!='') {
  841. $map[] = ['from','=',$from];
  842. }
  843. $map= empty($map) ? true: $map;
  844. //数据查询
  845. $lists = db('hiddendanger')->where($map)
  846. ->limit($start,$length)->order($order)->select();
  847. foreach ($lists as $k=>$v){
  848. $lists[$k]['depName'] = Db::name('dep')
  849. ->where('id',$v['dep_id'])
  850. ->value('title');
  851. // $lists[$k]['fromName'] = model('Hiddendanger')->from[$v['from']];
  852. $lists[$k]['fromName'] = '';
  853. if($v['order_id'] > 0 && $v['bus_type'] != 0){
  854. if($v['to_from']){
  855. $lists[$k]['fromName'] = '一键呼叫';
  856. }else{
  857. $lists[$k]['fromName'] = '投诉';
  858. }
  859. }
  860. $lists[$k]['worktypemode'] = '';
  861. if($v['order_id'] > 0 && in_array($v['bus_type'],[0,1])){
  862. $worktype = Db::name('orders')
  863. ->alias('o')
  864. ->join('work_type_mode w','o.work_type_mode = w.id')
  865. ->where('o.id',$v['order_id'])
  866. ->value('w.name');
  867. $lists[$k]['worktypemode'] = $worktype?$worktype:'';
  868. }
  869. $lists[$k]['realName'] = Db::name('user')
  870. ->where('id',$v['create_user_id'])
  871. ->value('real_name');
  872. // $lists[$k]['statusTxt'] = $v['status']==1?'已处理':"未处理";
  873. $orderMode = 0;
  874. if($v['order_id'] > 0){
  875. $orderMode = Db::name('orders')->where('id',$v['order_id'])->value('order_mode');
  876. }
  877. $lists[$k]['statusTxt'] = model('Hiddendanger')->formatStatus($v['status'],$v['order_id'],$v['id']);
  878. $lists[$k]['order_mode'] = $orderMode;
  879. }
  880. //数据返回
  881. $totalCount = db('hiddendanger')->where($map)->count();
  882. }elseif($orderType == 4){
  883. $order_mode = input('order_mode', 4);
  884. $map6 = [];
  885. if ($order_mode != '') {
  886. if($level1 && $turnoff && $mode != 15){ // 一级调度且二级调度开关开着,品质整改例外
  887. if ($order_mode == 1) {
  888. $map[] = ['is_deal', '=', 0];
  889. }else if ($order_mode == 4) {
  890. $map6[] = ['is_deal', '=', 1];
  891. }
  892. }
  893. if($order_mode==100){//已挂起
  894. $gq = Db::name('todo')
  895. ->where('work_type_mode',1)
  896. ->where('todo_mode',2)
  897. ->where('pause',1)
  898. ->column('order_id');
  899. if(empty($gq)){
  900. $map[] = ['id', '=', -1];
  901. }else{
  902. $map[] = ['id', 'in', $gq];
  903. }
  904. }else{
  905. $map[] = ['order_mode', '=', $order_mode];
  906. }
  907. }
  908. $map[] = ['del', '=', 0];
  909. $map[] = ['org_id', '=', $this->orgId];
  910. if($mode==-1){
  911. $map[] = ['source_type', '=', 4];
  912. }
  913. $type = input('type', '', 'trim');
  914. $oids = [];
  915. if ($type != '') {
  916. $map1[] = ['parent_id', '=', $type];
  917. $type_id = Db::name('order_type')
  918. ->where($map1)
  919. ->where('org_id', $this->orgId)
  920. ->where('enable', 1)
  921. ->column('id');
  922. if (!empty($type_id)) {
  923. $map3[] = ['type_id', 'in', $type_id];
  924. $ids = Db::name('order_repair')
  925. ->where($map3)
  926. ->column('order_id');
  927. if (!empty($ids)) {
  928. $oids = $ids;
  929. }
  930. else {
  931. $oids = [];
  932. }
  933. }
  934. else {
  935. $oids = [];
  936. }
  937. }
  938. if($level2 && $turnoff){ // 二级调度
  939. $roles_id = Db::name('user_roles')
  940. ->where('user_id', $this->userId)
  941. ->value('roles_id');
  942. $ids = Db::name('dispatch_log')
  943. ->where('roles_id', $roles_id)
  944. ->whereOr('to_user_id', $this->userId)
  945. ->column('order_id');
  946. if (empty($ids)) {
  947. $map[] = ['id', '=', -1];
  948. } else {
  949. if($type != ''){
  950. $oids = array_intersect($oids,$ids);
  951. if($oids){
  952. $map[] = ['id', 'in', $oids];
  953. }else{
  954. $map[] = ['id', '=', -1];
  955. }
  956. }else{
  957. $map[] = ['id', 'in', $ids];
  958. }
  959. }
  960. }else{
  961. if($type != ''){
  962. if($oids){
  963. $map[] = ['id', 'in', $oids];
  964. }else{
  965. $map[] = ['id', '=', 0];
  966. }
  967. }
  968. }
  969. if($mode == 15){ // 品质检查,单独处理
  970. $map[] = ['work_type_mode','=',$mode];
  971. }else{
  972. $work_type_mode = input('work_type_mode','','trim');
  973. if(!is_admin($this->userId)){
  974. $auth = get_dispatch_auth($this->userId);
  975. if($auth){
  976. $map[] = ['work_type_mode', 'in', $auth];
  977. if($mode > 0){
  978. $map[] = ['work_type_mode', '=', $mode];
  979. }else{
  980. if($work_type_mode!=''){
  981. $map[] = ['work_type_mode','=',$work_type_mode];
  982. }
  983. }
  984. }else{
  985. $map[] = ['work_type_mode', '=', -1];
  986. }
  987. }else{
  988. if($mode > 0){
  989. $map[] = ['work_type_mode', '=', $mode];
  990. }else{
  991. if($work_type_mode!=''){
  992. $map[] = ['work_type_mode','=',$work_type_mode];
  993. }
  994. }
  995. }
  996. }
  997. $orderIds = Db::name('todo')
  998. ->where('todo_mode',4)
  999. ->where('org_id',$this->orgId)
  1000. ->where('del',0)
  1001. ->group('order_id')
  1002. ->column('order_id');
  1003. $map[] = ['id','in',$orderIds];
  1004. $map = empty($map) ? true : $map;
  1005. //数据查询
  1006. $lists = db('orders')
  1007. ->where($map)
  1008. // ->whereOr($map6)
  1009. ->limit($start, $length)
  1010. ->order($order)
  1011. ->select();
  1012. foreach ($lists as $k => $v) {
  1013. $lists[$k] = model('orders')->formatOrder($v);
  1014. if ($turnoff && $level1 && $v['order_mode'] == 1 && $v['is_deal'] == 1) {
  1015. $lists[$k]['order_mode_text'] = '已派发';
  1016. }
  1017. $lists[$k]['bh_nums'] = Db::name('todo')->where('order_id',$v['id'])->where('del',0)->where('todo_mode',4)->count();
  1018. $gq = Db::name('todo')
  1019. ->where('order_id',$v['id'])
  1020. ->where('work_type_mode',1)
  1021. ->where('todo_mode',2)
  1022. ->where('pause',1)
  1023. ->find();
  1024. $lists[$k]['gq'] = $gq?'存在挂起':'';
  1025. }
  1026. //数据返回
  1027. $totalCount = db('orders')->where($map)->count();
  1028. }
  1029. $totalPage = ceil($totalCount / $length);
  1030. $result['page'] = $page;
  1031. $result['total'] = $totalPage;
  1032. $result['records'] = $totalCount;
  1033. $result['rows'] = $lists;
  1034. return json($result);
  1035. }
  1036. else {
  1037. if($mode >0){
  1038. $mode_name = $this->getTableField('work_type_mode', ['id' => $mode], 'name');
  1039. }else{
  1040. $mode_name = '';
  1041. }
  1042. $auths = [1,2,3,4,15,0];
  1043. if(!is_admin($this->userId)){
  1044. $auth = get_dispatch_auth($this->userId);
  1045. if($auth){
  1046. $auths = array_intersect($auths,$auth);
  1047. if($mode > 0){
  1048. $auths = array_intersect($auths,[$mode]);
  1049. }
  1050. }else{
  1051. $auths = [];
  1052. }
  1053. }
  1054. $this->assign('auths',$auths);
  1055. $dep_list = (new \app\common\model\Dep())->getList();
  1056. $order_type = (new \app\common\model\OrderType())->list();
  1057. $order_mode = Db::name('order_mode')
  1058. ->select();
  1059. $this->assign('dep_list', $dep_list);
  1060. $this->assign('order_type_list', $order_type);
  1061. $this->assign('m_name', $mode_name);
  1062. $this->assign('mode', $mode);
  1063. $this->assign('order_mode_list', $order_mode);
  1064. $this->assign('dispatch_type', check_two_dispatch($this->userId));
  1065. $this->assign('orderType',$orderType);
  1066. return $this->fetch('index/orders');
  1067. }
  1068. }
  1069. //调度查看订单详情
  1070. public function ordersDetail2($id) {
  1071. if (!$id) {
  1072. $this->error('参数错误');
  1073. }
  1074. $type = input('type/d',0);
  1075. $this->assign('type', $type);
  1076. $order = Db::name('orders')->where(['id' => $id])->find();
  1077. $order = model('Orders')->formatOrder($order, 1);
  1078. $order['images'] = !empty($order['images']) ? explode(',', $order['images']) : '';
  1079. $this->assign('info', $order);
  1080. $workTypeName = $this->getTableField('work_type_mode', ['id' => $order['work_type_mode']], 'name');
  1081. $this->assign('meta_title', $workTypeName . '订单详情');
  1082. $level2 = check_two_dispatch($this->userId);
  1083. $level1 = check_is_dispatch($this->userId);
  1084. $turnoff = two_dispatch_off($this->orgId);
  1085. $this->assign('level1', $level1);
  1086. $this->assign('level2', $level2);
  1087. $this->assign('turnoff', $turnoff);
  1088. $this->assign('dispatch_type', $level2);
  1089. return $this->fetch();
  1090. }
  1091. public function searchMenu(){
  1092. $menuName = input('menu_name');
  1093. $list = model('Menu')->getMenuTree1($this->rolesId,$this->orgId,$menuName);
  1094. $tlist = [];
  1095. foreach ($list as $k=>$v){
  1096. if($v['url']){
  1097. $tlist[] = $v;
  1098. }
  1099. }
  1100. $this->success('','',$tlist);
  1101. }
  1102. public function indexsub(){
  1103. $curmenu = input('curmenu',500);
  1104. $this->assign('curmenu',$curmenu);
  1105. $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
  1106. $this->assign('menus',$menus);
  1107. $userInfo = Db::name('user')
  1108. ->where('id',$this->userId)
  1109. ->find();
  1110. $this->assign('userInfo',$userInfo);
  1111. // 判断用户是否是调度
  1112. $isDispatch = 0;
  1113. if(check_is_dispatch($this->userId) || check_two_dispatch($this->userId)){
  1114. $isDispatch = 1;
  1115. }
  1116. $this->assign('isDispatch',$isDispatch);
  1117. $order = 0;
  1118. // 判断用户是否是调度
  1119. $level1 = check_is_dispatch($this->userId);
  1120. $level2 = check_two_dispatch($this->userId);
  1121. $level2onoff = two_dispatch_off($this->orgId);
  1122. if(!$level1 && !$level2){
  1123. $order = -1;
  1124. }else{
  1125. // 一级调度
  1126. if($level1 || (!$level2onoff && $level2)){
  1127. $map[] = ['org_id','=',$this->orgId];
  1128. $map[] = ['del','=',0];
  1129. $map[] = ['order_mode','=',1];
  1130. if($level2onoff){
  1131. $map[] = ['is_deal','=',0];
  1132. }
  1133. if(!is_admin($this->userId)){
  1134. $auth = get_dispatch_auth($this->userId);
  1135. if($auth){
  1136. $map[] = ['work_type_mode', 'in', $auth];
  1137. $where[] = ['o.work_type_mode', 'in', $auth];
  1138. }else{
  1139. $map[] = ['work_type_mode', '=', -1];
  1140. $where[] = ['o.work_type_mode', '=', -1];
  1141. }
  1142. }
  1143. $order = Db::name('orders')->where($map)->count();
  1144. //$驳回的订单
  1145. $where[] = ['o.del','=',0];
  1146. $where[] = ['t.del','=',0];
  1147. $bh = Db::name('orders')
  1148. ->alias('o')
  1149. ->join('todo t','t.order_id=o.id')
  1150. ->where('t.todo_mode',4)
  1151. ->where('t.org_id',$this->orgId)
  1152. ->where('o.order_mode',4)
  1153. ->where('o.org_id',$this->orgId)
  1154. ->where($where)
  1155. ->group('o.id')
  1156. ->count();
  1157. $order = $order + $bh;
  1158. } else if($level2 && $level2onoff) { // 二级调度
  1159. $rolesId = Db::name('user_roles')->where('user_id',$this->userId)->value('roles_id');
  1160. if(!$rolesId){
  1161. $order = 0;
  1162. }else{
  1163. $map[] = ['b.org_id','=',$this->orgId];
  1164. $map[] = ['b.del','=',0];
  1165. $map[] = ['b.order_mode','=',1];
  1166. $map[] = ['b.is_deal','=',1];
  1167. $map[] = ['a.roles_id','=',$rolesId];
  1168. if(!is_admin($this->userId)){
  1169. $auth = get_dispatch_auth($this->userId);
  1170. if($auth){
  1171. $map[] = ['b.work_type_mode', 'in', $auth];
  1172. }else{
  1173. $map[] = ['b.work_type_mode', '=', -1];
  1174. }
  1175. }
  1176. $order = Db::name('dispatch_log')
  1177. ->alias('a')
  1178. ->join('orders b','b.id = a.order_id')
  1179. ->where($map)
  1180. ->field('a.*')
  1181. ->count();
  1182. }
  1183. }
  1184. }
  1185. $complainCount = Db::name('complain')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  1186. $hiddendangerCount = Db::name('hiddendanger')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  1187. $endCount = $order+$complainCount+$hiddendangerCount;
  1188. $this->assign('orderNums',$endCount);
  1189. return $this->fetch();
  1190. }
  1191. public function indexsub1(){
  1192. $curmenu = input('curmenu',500);
  1193. $menuId = input('menuId',0);
  1194. $ct = input('ct',0);
  1195. $this->assign('curmenu',$curmenu);
  1196. $this->assign('menuId',$menuId);
  1197. $this->assign('ct',$ct);
  1198. $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
  1199. $this->assign('menus',$menus);
  1200. $userInfo = Db::name('user')
  1201. ->where('id',$this->userId)
  1202. ->find();
  1203. $this->assign('userInfo',$userInfo);
  1204. // 判断用户是否是调度
  1205. $isDispatch = 0;
  1206. if(check_is_dispatch($this->userId) || check_two_dispatch($this->userId)){
  1207. $isDispatch = 1;
  1208. }
  1209. $this->assign('isDispatch',$isDispatch);
  1210. $order = 0;
  1211. // 判断用户是否是调度
  1212. $level1 = check_is_dispatch($this->userId);
  1213. $level2 = check_two_dispatch($this->userId);
  1214. $level2onoff = two_dispatch_off($this->orgId);
  1215. if(!$level1 && !$level2){
  1216. $order = -1;
  1217. }else{
  1218. // 一级调度
  1219. if($level1 || (!$level2onoff && $level2)){
  1220. $map[] = ['org_id','=',$this->orgId];
  1221. $map[] = ['del','=',0];
  1222. $map[] = ['order_mode','=',1];
  1223. if($level2onoff){
  1224. $map[] = ['is_deal','=',0];
  1225. }
  1226. if(!is_admin($this->userId)){
  1227. $auth = get_dispatch_auth($this->userId);
  1228. if($auth){
  1229. $map[] = ['work_type_mode', 'in', $auth];
  1230. $where[] = ['o.work_type_mode', 'in', $auth];
  1231. }else{
  1232. $map[] = ['work_type_mode', '=', -1];
  1233. $where[] = ['o.work_type_mode', '=', -1];
  1234. }
  1235. }
  1236. $order = Db::name('orders')->where($map)->count();
  1237. //$驳回的订单
  1238. $where[] = ['o.del','=',0];
  1239. $where[] = ['t.del','=',0];
  1240. $bh = Db::name('orders')
  1241. ->alias('o')
  1242. ->join('todo t','t.order_id=o.id')
  1243. ->where('t.todo_mode',4)
  1244. ->where('t.org_id',$this->orgId)
  1245. ->where('o.order_mode',4)
  1246. ->where('o.org_id',$this->orgId)
  1247. ->where($where)
  1248. ->group('o.id')
  1249. ->count();
  1250. $order = $order + $bh;
  1251. } else if($level2 && $level2onoff) { // 二级调度
  1252. $rolesId = Db::name('user_roles')->where('user_id',$this->userId)->value('roles_id');
  1253. if(!$rolesId){
  1254. $order = 0;
  1255. }else{
  1256. $map[] = ['b.org_id','=',$this->orgId];
  1257. $map[] = ['b.del','=',0];
  1258. $map[] = ['b.order_mode','=',1];
  1259. $map[] = ['b.is_deal','=',1];
  1260. $map[] = ['a.roles_id','=',$rolesId];
  1261. if(!is_admin($this->userId)){
  1262. $auth = get_dispatch_auth($this->userId);
  1263. if($auth){
  1264. $map[] = ['b.work_type_mode', 'in', $auth];
  1265. }else{
  1266. $map[] = ['b.work_type_mode', '=', -1];
  1267. }
  1268. }
  1269. $order = Db::name('dispatch_log')
  1270. ->alias('a')
  1271. ->join('orders b','b.id = a.order_id')
  1272. ->where($map)
  1273. ->field('a.*')
  1274. ->count();
  1275. }
  1276. }
  1277. }
  1278. $complainCount = Db::name('complain')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  1279. $hiddendangerCount = Db::name('hiddendanger')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  1280. $endCount = $order+$complainCount+$hiddendangerCount;
  1281. $this->assign('orderNums',$endCount);
  1282. $id = 500;
  1283. $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
  1284. $submenus = [];
  1285. foreach ($menus as $k=>$v){
  1286. if($v['id'] == $id){
  1287. $submenus = $v['child'];
  1288. break;
  1289. }
  1290. }
  1291. $this->assign('submenus',$submenus);
  1292. return $this->fetch();
  1293. }
  1294. public function menugroup($id = 0){
  1295. if(request()->isPost()){
  1296. $res = model('UserMenuGroup')->updates($this->userId);
  1297. if($res){
  1298. $this->success('操作成功');
  1299. }else{
  1300. $this->error(model('UserMenuGroup')->getError());
  1301. }
  1302. }else{
  1303. if($id){
  1304. $info = db('user_menu_group')->where('id',$id)->find();
  1305. if($info){
  1306. $info['menus'] = $info['menus']?explode(',',$info['menus']):[];
  1307. }
  1308. $this->assign('info',$info);
  1309. }
  1310. $id = 500;
  1311. $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
  1312. $submenus = [];
  1313. foreach ($menus as $k=>$v){
  1314. if($v['id'] == $id){
  1315. $submenus = $v['child'];
  1316. break;
  1317. }
  1318. }
  1319. $this->assign('submenus',$submenus);
  1320. return $this->fetch();
  1321. }
  1322. }
  1323. public function menugroupdel(){
  1324. $id = input('id',0);
  1325. $ret = Db::name('user_menu_group')->where('id',$id)->where('user_id',$this->userId)->delete();
  1326. if($ret){
  1327. $this->success('操作成功');
  1328. }else{
  1329. $this->error('操作失败');
  1330. }
  1331. }
  1332. public function def2(){
  1333. $curmenu = input('curmenu',500);
  1334. $this->assign('curmenu',$curmenu);
  1335. $menuId = input('menuId',0);
  1336. $this->assign('menuId',$menuId);
  1337. $menus = model('Menu')->getMenuTree($this->rolesId,$this->orgId);
  1338. $this->assign('menus',$menus);
  1339. $userInfo = Db::name('user')
  1340. ->where('id',$this->userId)
  1341. ->find();
  1342. $this->assign('userInfo',$userInfo);
  1343. // 判断用户是否是调度
  1344. $isDispatch = 0;
  1345. if(check_is_dispatch($this->userId) || check_two_dispatch($this->userId)){
  1346. $isDispatch = 1;
  1347. }
  1348. $this->assign('isDispatch',$isDispatch);
  1349. $order = 0;
  1350. // 判断用户是否是调度
  1351. $level1 = check_is_dispatch($this->userId);
  1352. $level2 = check_two_dispatch($this->userId);
  1353. $level2onoff = two_dispatch_off($this->orgId);
  1354. if(!$level1 && !$level2){
  1355. $order = -1;
  1356. }else{
  1357. // 一级调度
  1358. if($level1 || (!$level2onoff && $level2)){
  1359. $map[] = ['org_id','=',$this->orgId];
  1360. $map[] = ['del','=',0];
  1361. $map[] = ['order_mode','=',1];
  1362. if($level2onoff){
  1363. $map[] = ['is_deal','=',0];
  1364. }
  1365. if(!is_admin($this->userId)){
  1366. $auth = get_dispatch_auth($this->userId);
  1367. if($auth){
  1368. $map[] = ['work_type_mode', 'in', $auth];
  1369. $where[] = ['o.work_type_mode', 'in', $auth];
  1370. }else{
  1371. $map[] = ['work_type_mode', '=', -1];
  1372. $where[] = ['o.work_type_mode', '=', -1];
  1373. }
  1374. }
  1375. $order = Db::name('orders')->where($map)->count();
  1376. //$驳回的订单
  1377. $where[] = ['o.del','=',0];
  1378. $where[] = ['t.del','=',0];
  1379. $bh = Db::name('orders')
  1380. ->alias('o')
  1381. ->join('todo t','t.order_id=o.id')
  1382. ->where('t.todo_mode',4)
  1383. ->where('t.org_id',$this->orgId)
  1384. ->where('o.order_mode',4)
  1385. ->where('o.org_id',$this->orgId)
  1386. ->where($where)
  1387. ->group('o.id')
  1388. ->count();
  1389. $order = $order + $bh;
  1390. } else if($level2 && $level2onoff) { // 二级调度
  1391. $rolesId = Db::name('user_roles')->where('user_id',$this->userId)->value('roles_id');
  1392. if(!$rolesId){
  1393. $order = 0;
  1394. }else{
  1395. $map[] = ['b.org_id','=',$this->orgId];
  1396. $map[] = ['b.del','=',0];
  1397. $map[] = ['b.order_mode','=',1];
  1398. $map[] = ['b.is_deal','=',1];
  1399. $map[] = ['a.roles_id','=',$rolesId];
  1400. if(!is_admin($this->userId)){
  1401. $auth = get_dispatch_auth($this->userId);
  1402. if($auth){
  1403. $map[] = ['b.work_type_mode', 'in', $auth];
  1404. }else{
  1405. $map[] = ['b.work_type_mode', '=', -1];
  1406. }
  1407. }
  1408. $order = Db::name('dispatch_log')
  1409. ->alias('a')
  1410. ->join('orders b','b.id = a.order_id')
  1411. ->where($map)
  1412. ->field('a.*')
  1413. ->count();
  1414. }
  1415. }
  1416. }
  1417. $complainCount = Db::name('complain')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  1418. $hiddendangerCount = Db::name('hiddendanger')->where('del',0)->where('org_id',$this->orgId)->where('status',0)->where('order_id',0)->count();
  1419. $endCount = $order+$complainCount+$hiddendangerCount;
  1420. $this->assign('orderNums',$endCount);
  1421. return $this->fetch();
  1422. }
  1423. public function umenu(){
  1424. $id = input('id/d',0);
  1425. $info = Db::name('user_menu')->where('menu_id',$id)->where('user_id',$this->userId)->find();
  1426. if($info){
  1427. Db::name('user_menu')->where('id',$info['id'])->setInc('count',1);
  1428. }else{
  1429. Db::name('user_menu')->insert([
  1430. 'user_id' => $this->userId,
  1431. 'menu_id' => $id,
  1432. 'count' => 1
  1433. ]);
  1434. }
  1435. $this->success('操作成功');
  1436. }
  1437. }