瀏覽代碼

no commit message

雨中磐石 1 年之前
父節點
當前提交
559c388ea0
共有 100 個文件被更改,包括 2012 次插入777 次删除
  1. 3 3
      README.md
  2. 2 2
      config/version.php
  3. 22 0
      include/Action.php
  4. 108 0
      include/chajian/colorChajian.php
  5. 22 13
      include/chajian/htmlChajian.php
  6. 1 1
      include/chajian/imapChajian.php
  7. 9 11
      include/chajian/inputChajian.php
  8. 62 0
      include/chajian/rockkefuChajian.php
  9. 39 18
      include/class/mysql.php
  10. 4 6
      include/class/mysqliClass.php
  11. 3 6
      include/class/pdoClass.php
  12. 6 1
      include/class/rockClass.php
  13. 1 1
      include/rockFun.php
  14. 59 10
      js/dingwei.js
  15. 33 14
      js/js.js
  16. 12 91
      js/jswx.js
  17. 62 49
      js/reim_xina.js
  18. 263 0
      js/reim_xina_kefu.js
  19. 1 1
      mode/bootstrapplugin/jquery-bootsform.js
  20. 23 23
      mode/bootstrapplugin/jquery-bootstable.js
  21. 5 5
      mode/bootstrapplugin/jquery-bootstree.js
  22. 9 10
      mode/plugin/css/jquery-rockdatepicker.css
  23. 14 14
      mode/plugin/jquery-rockdatepicker.js
  24. 2 2
      mode/plugin/jquery-rockmodels.js
  25. 2 3
      web/res/css/chat.css
  26. 53 14
      web/res/css/webimcss.css
  27. 12 12
      web/res/js/jquery-changeuser.js
  28. 23 20
      web/res/js/notification.html
  29. 1 1
      web/res/js/notify.js
  30. 3 3
      web/res/mode/calendar/jquery-rockcalendar.js
  31. 19 13
      web/res/mode/menu/jquery-rockmenu.css
  32. 2 2
      web/res/mode/menu/jquery-rockmenu.js
  33. 45 6
      webmain/css/css.css
  34. 25 13
      webmain/css/cssm.css
  35. 240 0
      webmain/css/rock.css
  36. 6 0
      webmain/css/rockmy.css
  37. 13 1
      webmain/css/rui.css
  38. 47 4
      webmain/css/webmain.css
  39. 41 24
      webmain/flow/input/inputAction.php
  40. 2 2
      webmain/flow/input/inputjs/input_two.js
  41. 75 0
      webmain/flow/input/inputjs/mode_custprice.js
  42. 4 0
      webmain/flow/input/inputjs/mode_user.js
  43. 1 0
      webmain/flow/input/mode_collectsAction.php
  44. 48 0
      webmain/flow/input/mode_custpriceAction.php
  45. 1 1
      webmain/flow/input/mode_dailyAction.php
  46. 7 1
      webmain/flow/input/mode_userAction.php
  47. 16 6
      webmain/flow/input/rock_input_daoru.php
  48. 22 29
      webmain/flow/input/tpl_input_lu.html
  49. 3 3
      webmain/flow/input/tpl_input_lum.html
  50. 1 0
      webmain/flow/page/input_custprice.html
  51. 0 0
      webmain/flow/page/input_hrshebao.html
  52. 1 1
      webmain/flow/page/rock_page_assetm.php
  53. 2 2
      webmain/flow/page/rock_page_customer.php
  54. 3 3
      webmain/flow/page/rock_page_flowelement_script.php
  55. 1 1
      webmain/flow/page/rock_page_flowset_script.php
  56. 1 1
      webmain/flow/page/rock_page_worcword.php
  57. 3 3
      webmain/home/desktop/items_bianjian.php
  58. 1 1
      webmain/home/desktop/items_kjrko.php
  59. 3 1
      webmain/home/desktop/items_news.php
  60. 5 0
      webmain/index/indexAction.php
  61. 35 23
      webmain/index/indexscript.js
  62. 68 70
      webmain/index/tpl_index.html
  63. 15 20
      webmain/login/tpl_login.html
  64. 4 0
      webmain/main/flow/flowAction.php
  65. 21 1
      webmain/main/flow/rock_flow_course.php
  66. 1 1
      webmain/main/goods/goodsAction.php
  67. 2 2
      webmain/main/kaoqin/rock_kaoqin_geren.php
  68. 2 0
      webmain/main/salary/salaryAction.php
  69. 3 3
      webmain/model/adminModel.php
  70. 10 6
      webmain/model/flow/carmreseModel.php
  71. 54 0
      webmain/model/flow/custpriceModel.php
  72. 8 1
      webmain/model/flow/custractModel.php
  73. 0 0
      webmain/model/flow/flow.php
  74. 9 3
      webmain/model/flow/hrsalaryModel.php
  75. 3 1
      webmain/model/flow/userModel.php
  76. 1 1
      webmain/model/goodsModel.php
  77. 1 1
      webmain/model/loginModel.php
  78. 11 8
      webmain/public/upload/tpl_upload.html
  79. 13 11
      webmain/reim/index/tpl_index_xina.html
  80. 7 14
      webmain/reim/login/tpl_login_xina.html
  81. 8 15
      webmain/reim/record/tpl_record_download.html
  82. 9 6
      webmain/reim/record/tpl_record_history.html
  83. 2 1
      webmain/reim/ying/tpl_ying_daka.html
  84. 4 0
      webmain/system/cog/rock_cog_log.php
  85. 1 1
      webmain/system/cog/rock_cog_set.php
  86. 26 0
      webmain/system/cogini/coginiAction.php
  87. 32 27
      webmain/system/dept/tpl_dept.html
  88. 6 2
      webmain/system/geren/rock_geren_cog.php
  89. 2 2
      webmain/system/schedule/rock_schedule_calendar.php
  90. 7 2
      webmain/system/upgrade/rock_upgrade.php
  91. 21 0
      webmain/system/upgrade/rock_upgrade_file.php
  92. 0 0
      webmain/system/upgrade/upgradeAction.php
  93. 23 0
      webmain/task/api/kaoqinAction.php
  94. 28 0
      webmain/task/api/rockkefuAction.php
  95. 1 0
      webmain/task/api/uploadAction.php
  96. 1 1
      webmain/task/mode/modeview.js
  97. 15 19
      webmain/task/mode/tpl_mode_p.html
  98. 22 26
      webmain/task/mode/tpl_mode_x.html
  99. 9 12
      webmain/we/index/tpl_index.html
  100. 30 45
      webmain/we/login/tpl_login.html

+ 3 - 3
README.md

@@ -6,11 +6,11 @@
 官网网站:http://www.rockoa.com/  
 源码仅供学习二次开发使用,禁止二次发布,禁止用于商业用途出售等(违者必究)  
 版权:Copyright @2016-2024 信呼开发团队  
-版本整理时间:2024-08-01 23:59:59  
-版本号:V2.6.5  
+版本整理时间:2024-10-18 23:59:59  
+版本号:V2.6.6  
 
 
-### V2.6.5更新说明
+### V2.6.6更新说明
 1、完善系统安全性。  
 2、更多升级日志详见:http://www.rockoa.com/view_core.html  
 

+ 2 - 2
config/version.php

@@ -1,3 +1,3 @@
 <?php
-//版本2.6.5,2024-08-01的版本
-return '2.6.5';
+//版本20241013
+return '2.6.6';

+ 22 - 0
include/Action.php

@@ -59,6 +59,7 @@ abstract class mainAction{
 		$this->display	= true;
 		$this->initMysql();	
 		$this->initConstruct();
+		$this->getTheme();
 		$this->initProject();
 		$this->initAction();
 	}
@@ -124,6 +125,27 @@ abstract class mainAction{
 			|| $this->rock->iswebbro(2))$showheader = 0; //隐藏头部
 		if($this->get('showheader')=='true')$showheader = 1;
 		$this->assign('showheader', $showheader);
+		$nowtime = $this->getsession('nowtime');
+		if(!$nowtime || getconfig('systype')=='dev'){
+			$nowtime = time();
+			$this->rock->setsession('nowtime', $nowtime);
+		}
+		$this->assign('nowtime', $nowtime);
+	}
+	
+	//主题颜色处理
+	public function getTheme()
+	{
+		$theme	= $this->get('apptheme');
+		if($theme){
+			$this->rock->setsession('apptheme', $theme);
+		}else{
+			$theme = $this->getsession('apptheme');
+		}
+		if($theme)$theme = '#'.$theme.'';
+		if(!$theme || strlen($theme)!=7)$theme = getconfig('apptheme', '#1389D3'); //默认颜色
+		$this->assign('apptheme', $theme);
+		return substr($theme, 1);
 	}
 
 	public function setSmartyData()

+ 108 - 0
include/chajian/colorChajian.php

@@ -37,4 +37,112 @@ class colorChajian extends Chajian{
 		$h 	= floor(($n / 16)) % 16;
 		return ''.$hexch[$h].''.$hexch[$l].'';
 	}
+	
+	/**
+	*	获取颜色值
+	*/
+	public function colorTorgb($color)
+	{
+		if(!empty($color)&&(strlen($color)==7)){
+			$r=hexdec(substr($color,1,2));
+			$g=hexdec(substr($color,3,2));
+			$b=hexdec(substr($color,5));
+		}else{
+			$r=$g=$b='00';
+		}
+		return array($r, $g, $b);
+	}
+	
+	/**
+	*	获取样式的
+	*/
+	public function getApptheme($nohui=true, $ism=false)
+	{
+		$arr 		= $this->getColor();
+		$color 		= $arr['color'];
+		$colors 	= $arr['colors'];
+		$colora 	= $arr['colora'];
+		
+		$bodybgcolor	= 'rgba('.$colors.',0.03)';
+		$hgcolor  		= 'rgba('.$colors.',0.15)';
+		$vgcolor  		= 'rgba('.$colors.',0.1)';
+		$str[] = '<style type="text/css">';
+		
+		
+		//暗黑模式的var(--rgb-r),var(--rgb-g),var(--rgb-b)
+		$ishei	= false;
+		if(($color == '#333333' || $color=='#555555') && $nohui)$ishei = true;
+		
+		$str[] = 'body{';
+		$str[] = 'background:'.$bodybgcolor.';';
+		
+		$str[] = '--rgb-r:'.$colora[0].';';
+		$str[] = '--rgb-g:'.$colora[1].';';
+		$str[] = '--rgb-b:'.$colora[2].';';
+		$str[] = '--main-color:'.$color.';';
+		if($ism)$str[] = '--font-size:16px;';
+		$str[] = '--main-hgcolor:'.$hgcolor.';';
+		if(!$ishei){
+			$str[] = '--main-vgcolor:'.$vgcolor.';';
+			$str[] = '--border:0.5px rgba('.$colors.',0.1) solid;';
+			$str[] = '--main-border:rgba('.$colors.',0.1);';
+		}
+		$str[] = '}';
+		
+		if($ishei){
+			$str[] = '.rock-table .rock-table-tr:nth-child(odd){background:rgba(0,0,0,0.03);}';
+			$str[] = '.rock-table .rock-table-tr:hover{background:rgba(0,0,0,0.1);}';
+		}
+		
+		if($ishei){
+			$bgcol  	= 'rgba('.$colors.',0.9)';
+			$bgcolor  	= 'rgba('.$colors.',0.5)';
+			$str[] = 'body{background:'.$bgcol.';color:white;--main-bgcolor:'.$bgcolor.'}';
+			$str[] = 'a:link,a:visited,input{color:white;}';
+			$str[] = '.input,.textarea,.form-control,.inputs{background:'.$bgcol.';color:white}';
+			$str[] = '.input:focus,.inputs:focus,.textarea:focus,.form-control:focus{border:.5px rgba(255,255,255,0.1) solid}';
+			$str[] = '.zhu{color:white}';
+			$str[] = '.webbtn:disabled,.btn:disabled{background:var(--main-bgcolor);color:#888888}';
+			$str[] = '.webbtn-default,.webbtn-default:link,.webbtn-default:visited,.btn{background:var(--main-color);color:white;border:none;}';
+		}else{
+			$str[] = '.rockmenuli{background:rgba('.$colora[0].','.$colora[1].','.$colora[2].',0.05)}';
+		}
+		$str[] = '</style>';
+		$str[] = '<script type="text/javascript">';
+		$str[] = 'maincolor = "'.$color.'";';
+		if(!$ishei)$str[] = 'bootsSelectColor = "var(--main-hgcolor)";';
+		$str[] = '</script>';
+		$path  = 'webmain/css/rockmy.css';
+		if(file_exists($path))$str[] = '<link rel="stylesheet" type="text/css" href="'.$path.'?'.time().'" />';
+		$str[] = '';
+		return join(PHP_EOL, $str);
+	}
+	
+	/**
+	*	获取样式
+	*/
+	public function getColor()
+	{
+		$color 			= $this->getTheme();
+		$maincolora		= $this->colorTorgb($color);
+		$colors			= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
+		return array(
+			'color'	 => $color,
+			'colors' => $colors,
+			'colora' => $maincolora,
+		);
+	}
+	
+	/**
+	*	获取对应颜色
+	*/
+	public function getTheme()
+	{
+		$color 			= getconfig('apptheme','#1389D3');
+		//$apptheme		= $this->rock->get('apptheme');
+		//if(strlen($apptheme)==6)$this->rock->savecookie('apptheme', $apptheme);
+		//if(!$apptheme)$apptheme = $this->rock->cookie('apptheme');
+		//if(strlen($apptheme)==6)$color = '#'.$apptheme.'';
+		return $color;
+	}
 }

+ 22 - 13
include/chajian/htmlChajian.php

@@ -35,7 +35,7 @@ class htmlChajian extends Chajian{
 	
 	public function createtable($fields, $arr, $title='',$lx='',$bcolor='')
 	{
-		if(isempt($bcolor))$bcolor = '#cccccc';
+		if(isempt($bcolor))$bcolor = 'var(--main-border)';
 		if($lx=='print'){
 			$bcolor = '#000000';
 			$title='';
@@ -44,12 +44,13 @@ class htmlChajian extends Chajian{
 		if($title != ''){
 			$s .= '<tr><td colspan="2" align="center" style="border:1px '.$bcolor.' solid;padding:10px;font-size:16px;background:#D2E9FF;">'.$title.'</td></tr>';
 		}
+		$pstr = '';
 		foreach($fields as $fid=>$na){
 			$val = '';
 			$sty = 'padding:8px;';
 			if(isset($arr[$fid]))$val = $arr[$fid];
 			if(isset($arr[$fid.'_style']))$sty .= $arr[$fid.'_style'];
-			$s .= '<tr><td align="right" nowrap style="border:1px '.$bcolor.' solid;padding:5px 8px;">'.$na.'</td><td  style="border:1px '.$bcolor.' solid;'.$sty.'" align="left">'.$val.'</td></tr>';
+			$s .= '<tr><td align="right" nowrap style="border:1px '.$bcolor.' solid;'.$pstr.'padding:5px 8px;">'.$na.'</td><td  style="border:1px '.$bcolor.' solid;'.$pstr.''.$sty.'" align="left">'.$val.'</td></tr>';
 		}
 		$s .='</table>';
 		
@@ -84,7 +85,7 @@ class htmlChajian extends Chajian{
 			$head[]	= explode(',', $te_str);
 		}
 		$txt	 = '';
-		$style	 = "padding:3px;border:1px ".$bor." solid";
+		$style	 = "padding:3px;border:1px ".$bor." solid;border:var(--border)";
 		if($lx=='print')$style	 = "border:.5pt #000000 solid";
 		$txt	.= '<table width="100%" class="createrows" border="0" cellspacing="0" cellpadding="0" align="center" style="border-collapse:collapse;" >';
 		$txt	.= '<tr>';
@@ -95,7 +96,7 @@ class htmlChajian extends Chajian{
 				if($h==0)$stls.=';border-left:none';
 				if($h==$lens)$stls.=';border-right:none';
 			}
-			$txt.= '<td style="'.$stls.'" bgcolor="#eeeeee" align="'.$head[$h][2].'"><b>'.$head[$h][1].'</b></td>';
+			$txt.= '<td style="background:#eeeeee; background:var(--main-hgcolor);'.$stls.'"   align="'.$head[$h][2].'"><b>'.$head[$h][1].'</b></td>';
 		}
 		$txt	.= '</tr>';
 		foreach($rows as $k=>$rs){
@@ -211,15 +212,18 @@ class htmlChajian extends Chajian{
 		return $bo;
 	}
 	
+	private $importerrarr = array();
+	public function importerrda()
+	{
+		return $this->importerrarr;
+	}
 	
-	
-	
-	
-	
-	
-	
-	public function importdata($fields,$btfid='', $fid='')
+	/**
+	*	导入数据处理
+	*/
+	public function importdata($fields,$btfid='', $fid='', $lx=0)
 	{
+		$this->importerrarr = array();
 		if($fid=='')$fid='importcont';
 		$rows 	= array();
 		$val	= $this->rock->post($fid);
@@ -227,7 +231,7 @@ class htmlChajian extends Chajian{
 		$arrs 	= explode("\n", $val);
 		$farr 	= explode(',', $fields);
 		$fars 	= explode(',', $btfid);
-		foreach($arrs as $valss){
+		foreach($arrs as $xu=>$valss){
 			$dars 	= explode('	', $valss);
 			$barr 	= array();
 			foreach($farr as $k=>$fid){
@@ -236,8 +240,13 @@ class htmlChajian extends Chajian{
 			}
 			$bos 	= true;
 			foreach($fars as $fids){
-				if(isset($barr[$fids]) && isempt($barr[$fids]))$bos = false;
+				if(isset($barr[$fids]) && isempt($barr[$fids])){
+					$bos = false;
+					$this->importerrarr[$xu] = ''.$fids.'是必须的';
+					break;
+				}
 			}
+			if($lx==1)$barr['drxu'] = $xu;
 			if($bos)$rows[] = $barr;
 		}
 		return $rows;

+ 1 - 1
include/chajian/imapChajian.php

@@ -32,7 +32,7 @@
 
 class imapChajian extends Chajian
 {
-	private $supportbool = true;
+	private $supportbool = true,$marubox,$struck_tearr;
 	
 	protected function initChajian()
 	{

+ 9 - 11
include/chajian/inputChajian.php

@@ -63,7 +63,7 @@ class inputChajian extends Chajian
 			$str = '<input class="inputs" style="border:none;background:none" name="base_sericnum" value="'.$this->flow->createnum().'" readonly>';
 		}
 		if($fid=='file_content'){
-			$str = '<input name="fileid" type="hidden" id="fileidview-inputEl"><div id="view_fileidview" style="width:98%;height:auto;min-height:60px;border:1px #cccccc solid; background:white;overflow:auto"></div><div id="fileupaddbtn"><a href="javascript:;" class="blue" onclick="c.upload()"><u>+添加文件</u></a></div>';
+			$str = '<input name="fileid" type="hidden" id="fileidview-inputEl"><div id="view_fileidview" style="width:98%;flex:1;height:auto;min-height:60px;border:1px #cccccc solid;border:var(--border); background:white;background:var(--main-bgcolor);border-radius:5px;;overflow:auto"></div><div id="fileupaddbtn"><a href="javascript:;" class="blue" onclick="c.upload()"><u>+添加文件</u></a></div>';
 		}
 
 		if($fid=='删'){
@@ -202,18 +202,16 @@ class inputChajian extends Chajian
 			));
 		}
 		if($type=='selectdatafalse' || $type=='selectdatatrue'){
-			$str 	= '<table width="98%" cellpadding="0" border="0"><tr><td width="100%"><input '.$attr.''.$onblue.''.$styles.' class="inputs" style="width:99%" value="'.$val.'" readonly type="text" name="'.$fname.'"></td>';
-			$str   .= '<td nowrap>';
+			$str 	= '<div class="btn-group"><input '.$attr.''.$onblue.''.$styles.' class="inputs" style="flex:1" value="'.$val.'" readonly type="text" name="'.$fname.'">';
 			if($isbt=='0')$str   .= '<button onclick="c.selectdataclear(\''.$fname.'\',\''.$data.'\','.$iszb.')" class="webbtn" type="button">x</button>';
-			$str   .= '<button type="button" onclick="c.selectdata(\''.$data.'\','.substr($type,10).',\''.$fname.'\',\''.$fieldname.'\','.$iszb.')" class="webbtn">选</button></td></tr></table>';
+			$str   .= '<button type="button" onclick="c.selectdata(\''.$data.'\','.substr($type,10).',\''.$fname.'\',\''.$fieldname.'\','.$iszb.')" class="webbtn">选</button></div>';
 		}
 		if($type=='ditumap'){
 			$zbnae	= $data;
 			if($iszb>0)$zbnae = ''.($iszb-1).''.$leox.'';
-			$str 	= '<table width="99%" cellpadding="0" border="0"><tr><td width="100%"><input '.$attr.''.$onblue.''.$styles.''.$lenstr.' class="inputs" style="width:99%" value="'.$val.'" type="text" name="'.$fname.'"></td>';
-			$str   .= '<td nowrap>';
+			$str 	= '<div class="btn-group"><input '.$attr.''.$onblue.''.$styles.''.$lenstr.' class="inputs" style="flex:1" value="'.$val.'" type="text" name="'.$fname.'">';
 			if($isbt=='0')$str   .= '<button onclick="c.selectmapclear(\''.$fname.'\',\''.$zbnae.'\','.$iszb.')" class="webbtn" type="button">x</button>';
-			$str   .= '<button type="button" onclick="c.selectmap(\''.$fname.'\',\''.$zbnae.'\',\''.$fieldname.'\','.$iszb.')" class="webbtn">选</button></td></tr></table>';
+			$str   .= '<button type="button" onclick="c.selectmap(\''.$fname.'\',\''.$zbnae.'\',\''.$fieldname.'\','.$iszb.')" class="webbtn">选</button></div>';
 		}
 		if($type=='htmlediter'){
 			$iszhang= false;
@@ -233,12 +231,12 @@ class inputChajian extends Chajian
 		}
 		if($type=='uploadfile'){
 			$str = '<input name="'.$fname.'" value="'.$val.'" type="hidden">';
-			$str.= '<div style="display:inline-block" id="fileview_'.$fname.'"><div onclick="c.uploadfilei(\''.$fname.'\',\''.$a['attr'].'\')" style="display:;border:dashed 1px #cccccc" id="'.$fname.'_divadd" class="upload_items"><img class="imgs" src="images/jia.png"></div></div>';
+			$str.= '<div style="display:inline-block" id="fileview_'.$fname.'"><div onclick="c.uploadfilei(\''.$fname.'\',\''.$a['attr'].'\')" style="display:;border:dashed 1px rgba(0,0,0,0.1)" id="'.$fname.'_divadd" class="upload_items"><img class="imgs" src="images/jia.png"></div></div>';
 			$str.= '<div style="display:none" tsye="file" tnam="'.$fname.'" tdata="'.$data.'" id="filed_'.$fname.'"><input type="file" style="width:120px" multiple="multiple" id="filed_'.$fname.'_inp"></div>';
 		}
 		if($type=='graph'){
 			$str = '<input name="'.$fname.'" value="'.$val.'" type="hidden">';
-			$str.= '<div id="graphview_'.$fname.'" >';
+			$str.= '<div id="graphview_'.$fname.'" class="btn-group">';
 			$str.= '<button type="button" onclick="c.autograph(\''.$fname.'\',0)" class="webbtn">手写</button><button type="button" onclick="c.autograph(\''.$fname.'\',1)" class="webbtn">引入</button><button onclick="c.autograph(\''.$fname.'\',2)" class="webbtn" type="button">x</button></div>';
 		}
 		if($type=='auto'){
@@ -289,8 +287,8 @@ class inputChajian extends Chajian
 		$_vals0	= $valea[0];
 		$_vals1	= arrvalue($valea,1, $oarr['valueid']);
 		
-		$str 	= '<table width="99%" cellpadding="0" border="0"><tr><td width="100%"><input class="inputs" style="width:99%" '.$oarr['attr'].' placeholder="'.$oarr['placeholder'].'" id="change'.$fname.'" value="'.$_vals0.'" readonly type="text" name="'.$fname.'"><input name="'.$zbnae.'" value="'.$_vals1.'" id="change'.$fname.'_id" type="hidden"></td>';
-		$str   .= '<td nowrap><button onclick="js.changeclear(\'change'.$fname.'\')" class="webbtn" type="button">x</button><button id="btnchange_'.$fname.'" onclick="js.changeuser(\'change'.$fname.'\',\''.$type.'\',\''.$oarr['title'].'\' ,{changerange:\''.$oarr['changerange'].'\'})" type="button" class="webbtn">选</button></td></tr></table>';
+		$str 	= '<div class="btn-group"><input class="inputs" style="flex:1" '.$oarr['attr'].' placeholder="'.$oarr['placeholder'].'" id="change'.$fname.'" value="'.$_vals0.'" readonly type="text" name="'.$fname.'"><input name="'.$zbnae.'" value="'.$_vals1.'" id="change'.$fname.'_id" type="hidden">';
+		$str   .= '<button onclick="js.changeclear(\'change'.$fname.'\')" class="webbtn" type="button">x</button><button id="btnchange_'.$fname.'" onclick="js.changeuser(\'change'.$fname.'\',\''.$type.'\',\''.$oarr['title'].'\' ,{changerange:\''.$oarr['changerange'].'\'})" type="button" class="webbtn">选</button></div>';
 		
 		return $str;
 	}

+ 62 - 0
include/chajian/rockkefuChajian.php

@@ -0,0 +1,62 @@
+<?php 
+/**
+*	客服
+*/
+
+class rockkefuChajian extends Chajian{
+	
+	public $openkey,$updatekel,$updatekey;
+
+	protected function initChajian()
+	{
+		$url  = getconfig('rockkefu_url');
+		$urlb = getconfig('rockkefu_localurl');
+		if($urlb)$url  = $urlb;
+		$this->openkey = getconfig('rockkefu_key');
+		if(substr($url,-1)!='/')$url.='/';
+		$this->updatekel = $url;
+		$this->updatekey = $url.'api.php';
+	}
+	
+	
+	public function geturlstr($mod, $act, $can=array())
+	{
+		$url 	= $this->updatekey;
+		$url.= '?m='.$mod.'&a='.$act.'';
+		$url.= '&openkey='.md5($this->openkey).'';
+		foreach($can as $k=>$v)$url.='&'.$k.'='.$v.'';
+		return $url;
+	}
+
+	
+	/**
+	*	get获取数据
+	*/
+	public function getdata($mod, $act, $can=array())
+	{
+		$url 	= $this->geturlstr($mod, $act, $can);
+		$cont 	= c('curl')->getcurl($url);
+		if(!isempt($cont) && contain($cont, 'success')){
+			$data  	= json_decode($cont, true);
+		}else{
+			$data 	= returnerror('无法访问,'.$cont.'');
+		}
+		return $data;
+	}
+	
+	/**
+	*	post发送数据
+	*/
+	public function postdata($mod, $act, $can=array(), $cans=array())
+	{
+		$url 	= $this->geturlstr($mod, $act, $cans);
+		$cont 	= c('curl')->postcurl($url, $can);
+		if(!isempt($cont) && contain($cont, 'success')){
+			$data  	= json_decode($cont, true);
+		}else{
+			$data 	= returnerror('无法访问,'.$cont.'');
+		}
+		return $data;
+	}
+	
+}

+ 39 - 18
include/class/mysql.php

@@ -72,8 +72,8 @@ abstract class mysql{
 			$this->tranend();
 			$this->close();
 		}
-		//记录访问sql日志
-		if(getconfig('sqllog')){
+		//记录访问sql日志(2024-10-13弃用)
+		if(getconfig('sqllog') && 1==2){
 			$sql = '';
 			$filstr = 'sqllog_'.date('Y.m.d.H.i.s').'_'.$this->rock->adminid.'_'.str_shuffle('abcdefghijklmn').'.log';
 			foreach($this->sqlarr as $sql1)$sql.="\n\n$sql1;";
@@ -95,7 +95,7 @@ abstract class mysql{
 	public function fetch_array($res, $type=0){return false;}
 	public function insert_id(){return 0;}
 	
-	public function error(){return '';}
+	public function error(){return $this->errorlast;}
 	public function close(){}
 	
 	
@@ -127,13 +127,8 @@ abstract class mysql{
 		$this->sqlarr[]	= $sql;
 		$this->nowsql	= $sql;
 		$this->count 	= 0;
-		try {
-			$rsbool		= $this->querysql($sql);
-		} catch (Exception $e) {
-			$rsbool		= false;
-			$this->errormsg = $e->getMessage();
-		}
 		
+		$rsbool			= $this->querysql($sql);
 		$this->nowerror	= false;
 		if(!$rsbool)$this->nowerror = true;
 		
@@ -142,7 +137,7 @@ abstract class mysql{
 		
 		//记录错误sql
 		if(!$rsbool && $ebo){
-			$txt	= '[ERROR SQL]'.chr(10).''.$sql.''.chr(10).''.chr(10).'[Reason]'.chr(10).''.$this->error().''.chr(10).'';
+			$txt	= '[ERROR SQL]'.chr(10).$sql.chr(10).chr(10).''.$this->getError().''.chr(10).'';
 			$efile 	= $this->rock->debug($txt,''.DB_DRIVE.'_sqlerr', true);
 			$errmsg = str_replace("'",'&#39;', $this->error());
 			if(!contain($sql, $stabs)){
@@ -154,6 +149,30 @@ abstract class mysql{
 		return $rsbool;
 	}
 	
+	public $isError  	 = false;
+	private $msgerror 	 = '';
+	private $msgerrorall = '';
+	
+	/**
+	*	设置错误信息
+	*/
+	public function setError($str, $sql){
+		if(!$str)return;
+		$this->isError   = true;
+		$this->errorlast = $str;
+		$this->errormsg	 = $str;
+		$this->msgerror .= ''.$str.';';
+		$this->msgerrorall .= ''.$sql.chr(10).chr(10).$str.chr(10).chr(10).'';
+	}
+	
+	/**
+	*	获取错误
+	*/
+	public function getError()
+	{
+		return $this->msgerrorall;
+	}
+	
 	/**
 	*	返回最后错误信息
 	*/
@@ -260,12 +279,13 @@ abstract class mysql{
 		return $this->getall($sql);
 	}
 	
-	public function getall($sql)
+	public function getall($sql, $call=null)
 	{
 		$res=$this->query($sql);
 		$arr=array();
 		if($res){
 			while($row=$this->fetch_array($res)){
+				if($call != null)$row = $call($row);
 				$arr[]	= $row;
 				$this->count++;
 			}
@@ -593,15 +613,14 @@ abstract class mysql{
 	}
 	
 	/**
-		返回表所有字段
+	*	返回表所有字段,如['id','name']
 	*/	
 	public function getallfields($table)
 	{
-		$finfo 	= $this->gettablefields($table);
-		foreach ($finfo as $val) {
-			$arr[] = $val['name'];
-		}
-		return $arr;
+		$sql 	= 'SHOW FULL COLUMNS FROM `'.$table.'`';
+		return $this->getall($sql, function($row){
+			return $row['Field'];
+		});
 	}
 	
 	public function getfields($table)
@@ -614,7 +633,9 @@ abstract class mysql{
 	public function gettablefields($table, $base='',$whe='')
 	{
 		if($base=='')$base = $this->db_base;
-		$sql	= "select COLUMN_NAME as `name`,DATA_TYPE as `type`,COLUMN_COMMENT as `explain`,COLUMN_TYPE as `types`,`COLUMN_DEFAULT` as dev,`IS_NULLABLE` as isnull,`CHARACTER_MAXIMUM_LENGTH` as lens,`NUMERIC_PRECISION` as xslen1,`NUMERIC_SCALE` as xslen2 from information_schema.COLUMNS where `TABLE_NAME`='$table' and `TABLE_SCHEMA` ='$base' $whe order by `ORDINAL_POSITION`";
+		$sql	= "select COLUMN_NAME as `name`,DATA_TYPE as `type`,COLUMN_COMMENT as `explain`,COLUMN_TYPE as `types`,`COLUMN_DEFAULT` as dev,`IS_NULLABLE` as isnull,`CHARACTER_MAXIMUM_LENGTH` as lens,`NUMERIC_PRECISION` as xslen1,`NUMERIC_SCALE` as xslen2 from information_schema.COLUMNS where  `TABLE_SCHEMA` ='$base' AND `TABLE_NAME`='$table' $whe order by `ORDINAL_POSITION`";
+		//SHOW FULL COLUMNS FROM table_name
+		
 		return $this->getall($sql);
 	}
 	

+ 4 - 6
include/class/mysqliClass.php

@@ -19,7 +19,9 @@ class mysqliClass extends mysql{
 	
 	protected function querysql($sql)
 	{
-		return $this->conn->query($sql);
+		$roboll = $this->conn->query($sql);
+		if(!$roboll)$this->setError($this->conn->error, $sql);
+		return $roboll;
 	}
 	
 	public function fetch_array($result, $type = 0)
@@ -58,11 +60,7 @@ class mysqliClass extends mysql{
 		}
 		return $arr;
 	}
-		
-	public function error()
-	{
-		return 'mysqliError:'.$this->conn->error;
-	}
+	
 	
 	public function close()
 	{

+ 3 - 6
include/class/pdoClass.php

@@ -11,6 +11,7 @@ class pdoClass extends mysql{
 			$this->conn = @new PDO('mysql:host='.$this->db_host.';dbname='.$this->db_base.'', $this->db_user, $this->db_pass);
 			$this->conn->query("SET NAMES 'utf8'");
 			$this->selectdb($this->db_base);
+			$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 		} catch (PDOException $e) {
 			$this->conn 	= null;
 			$this->errormsg = $e->getMessage();
@@ -23,7 +24,7 @@ class pdoClass extends mysql{
 			$bo = $this->conn->query($sql);
 		} catch (PDOException $e) {
 			$bo = false;
-			$this->errormsg = $e->getMessage();
+			$this->setError($e->getMessage(), $sql);
 		}
 		return $bo;
 	}
@@ -53,11 +54,7 @@ class pdoClass extends mysql{
 		}
 	}
 		
-	public function error()
-	{
-		$str = $this->conn->errorInfo();
-		return 'pdoError('.$str[0].'):'.$str[2].''.$this->errormsg.'';
-	}
+	
 	
 	public function close()
 	{

+ 6 - 1
include/class/rockClass.php

@@ -84,6 +84,11 @@ final class rockClass
 		$this->adminid	= (int)$this->session('adminid',0);
 		$this->adminname= $this->session('adminname');
 		$this->adminuser= $this->session('adminuser');
+		
+		$apptheme		= $this->get('apptheme');
+		if(strlen($apptheme)==6)$this->savecookie('apptheme', $apptheme);
+		if(!$apptheme)$apptheme = $this->cookie('apptheme');
+		if(strlen($apptheme)==6)$GLOBALS['config']['apptheme']='#'.$apptheme.'';
 	}
 	
 	public function iconvsql($str,$lx=0)
@@ -251,7 +256,7 @@ final class rockClass
 		$valn	= $valarr;
 		if(!is_array($valarr))$valn=explode(',',$valarr);
 		for($i=0;$i<count($arrn);$i++){
-			setcookie(QOM.$arrn[$i],$valn[$i], $time, $path,'');
+			@setcookie(QOM.$arrn[$i],$valn[$i], $time, $path,'');
 		}
 	}
 	

+ 1 - 1
include/rockFun.php

@@ -277,7 +277,7 @@ function lang($str,$lx='')
 {
 	if(!$str)return $str;
 	$da 	= arrvalue($GLOBALS,'langdata');
-	if(!$da)return $str;
+	if(!$da || !isset($da['xuhao']))return $str;
 	$xuhao 	= $da['xuhao'];
 	$key 	= 'data'.$lx.'';
 	if(!isset($da[$key])){

+ 59 - 10
js/dingwei.js

@@ -120,17 +120,39 @@ js.dw = {
 			this.clearchao();
 			js.dw.ondwerr(msg);
 		}else{
-			this.wait('浏览器定位中...');
-			//本地虚拟定位
-			if(HOST=='127.0.0.1'){this.showPosition({coords:{latitude:24.51036967,longitude:118.178837299,accuracy:100}});return;}
-			navigator.geolocation.getCurrentPosition(this.showPosition,this.showError,{
-				enableHighAccuracy: true,
-				timeout: 19000,
-				maximumAge: 3000
-			});
+			this.liulqdw();
 		}
 	},
 	
+	liulqdw:function(){
+		this.wait('浏览器定位中...');
+		var dwrand = sessionStorage.getItem('dwrand');
+		if(dwrand){
+			sessionStorage.setItem('dwrand', '');
+			this.wait('跳转定位获取中...');
+			$.ajax({
+				url:'api.php?m=kaoqin&a=dwget&dwrand='+dwrand+'',
+				dataType:'json',
+				success:function(ret){
+					if(ret.success && ret.data){
+						js.dw.showPosition({coords:ret.data});
+					}else{
+						js.dw.showErrors('跳转定位错误:'+ret.msg);
+					}
+				},
+				error:function(){
+					js.dw.showErrors('跳转定位错误');
+				}
+			});
+			return;
+		}
+		if(HOST=='127.0.0.1'){this.showPosition({coords:{latitude:24.51036967,longitude:118.178837299,accuracy:100}});return;}//本地虚拟定位
+		navigator.geolocation.getCurrentPosition(this.showPosition,this.showError,{
+			enableHighAccuracy: true,
+			timeout: 10000,
+			maximumAge: 3000
+		});
+	},
 	
 	//微信定位
 	wxdingw:function(){
@@ -200,7 +222,20 @@ js.dw = {
 			msg="未知错误。"
 			break;
 		}
-		if(NOWURL.substr(0,5)!='https')msg+='必须使用https访问';
+		if(NOWURL.substr(0,5)!='https'){
+			msg+='必须使用https访问';
+			js.confirm('点确定继续去定位', function(jg){
+				if(jg=='yes'){
+					setTimeout('js.dw.gotodingw()',100);
+				}else{
+					js.dw.showErrors(msg);
+				}
+			});
+		}else{
+			js.dw.showErrors(msg);
+		}
+	},
+	showErrors:function(msg){
 		js.dw.timeerrbo = setTimeout(function(){
 			if(!js.dw.successbo){
 				js.msg('msg', msg);
@@ -210,7 +245,21 @@ js.dw = {
 			}
 		},1000);
 	},
-	
+	gotodingw:function(){
+		js.alert('跳转在定位中,可点确定读取定位内容。','', function(){
+			js.reload();
+		});
+		var dwrand = js.getrand();
+		$.ajax({
+			url:'api.php?m=kaoqin&a=dwurl&dwrand='+dwrand+'',
+			dataType:'json',
+			success:function(ret){
+				var da  = ret.data;
+				sessionStorage.setItem('dwrand', da.dwrand);
+				js.location(da.url);
+			}
+		});
+	},
 	showPosition:function(position){
 		js.dw.successbo = true;
 		clearTimeout(js.dw.timeerrbo);

+ 33 - 14
js/js.js

@@ -15,6 +15,7 @@ $(document).ready(function(){
 	device= js.cookie('deviceid');
 	if(device=='')device=js.now('time');
 	js.savecookie('deviceid', device, 365);
+	js.apptheme();
 	try{
 		var winobj = js.request('winobj');
 		if(nwjsgui)window.focus=function(){nw.Window.get().focus()}
@@ -104,6 +105,18 @@ function winWb(){
 js.scrolla	= function(){
 	var top	= $(document).scrollTop();
 	js.scroll(top);
+}
+js.colorTorgb = function(col){
+	var r=0,g=0,b=0;
+	if(col.length==7){
+		r = parseInt(col.substr(1,2),16);
+		g = parseInt(col.substr(3,2),16);
+		b = parseInt(col.substr(5,2),16);
+	}
+	return [r,g,b];
+}
+js.apptheme = function(){
+	
 }
 js.request=function(name,dev,url){
 	this.requestarr = {};
@@ -198,7 +211,7 @@ js.open=function(url,w,h,wina,can,wjcan){
 		if(url.substr(0,4)!='http')url=NOWURL+url;
 		var opar=nw.Window.open(url, ocsn, function(wis){
 			if(wina)js.openarr[wina]=wis;
-			if(w>=1000)wis.maximize();
+			//if(w>=1000)wis.maximize();
 		});
 	}
 	if(wina)this.openarr[wina]=opar;
@@ -283,7 +296,7 @@ js.upload=function(call,can, glx){
 	if(glx=='url')return url;
 	var s='',tit=can.title;if(!tit)tit='上传文件';
 	js.tanbody('uploadwin',tit,500,300,{
-		html:'<div style="height:280px;overflow:hidden"><iframe src="" name="winiframe" width="100%" height="100%" frameborder="0"></iframe></div>',
+		html:'<div style="height:280px;overflow:hidden;border-radius:0px 0px 5px 5px"><iframe src="" name="winiframe" width="100%" height="100%" frameborder="0"></iframe></div>',
 		bbar:'none'
 	});
 	winiframe.location.href=url;
@@ -308,7 +321,7 @@ js.winiframe=function(tit, url){
 	}
 	var wi = winWb()-150;if(wi>mxw)wi=mxw;if(wi<700)wi=700;
 	js.tanbody('winiframe',tit,wi,410,{
-		html:'<div style="height:'+hm+'px;overflow:hidden"><iframe src="" name="openinputiframe" width="100%" height="100%" frameborder="0"></iframe></div>',
+		html:'<div style="height:'+hm+'px;overflow:hidden;border-radius:0px 0px 5px 5px"><iframe src="" name="openinputiframe" width="100%" height="100%" frameborder="0"></iframe></div>',
 		bbar:'none'
 	});
 	openinputiframe.location.href=url;
@@ -627,24 +640,24 @@ js.tanbody=function(act,title,w,h,can1){
 	var s = '',mid	= ''+act+'_main',i,d;
 	var can	= js.applyIf(can1,{html:'',btn:[],bodystyle:'',showfun:function(){}});
 	if(w>winWb())w=winWb()-50;
-	var s = '<div id="'+mid+'" style="position:fixed;background-color:#ffffff;left:'+l+'px;width:'+w+'px;top:'+t+'px;box-shadow:0px 0px 10px rgba(0,0,0,0.3);border-radius:5px">';
-	s+='	<div style="-moz-user-select:none;-webkit-user-select:none;user-select:none;border-bottom:1px #eeeeee solid">';
+	var s = '<div id="'+mid+'" style="position:fixed;background-color:#ffffff;left:'+l+'px;width:'+w+'px;top:'+t+'px;box-shadow:0px 0px 10px rgba(0,0,0,0.3);border-radius:6px"><div style="background:var(--main-bgcolor);border-radius:5px;">';
+	s+='	<div style="-moz-user-select:none;-webkit-user-select:none;user-select:none;border-bottom:var(--border)">';
 	s+='		<table border="0" width="100%" style="background:none" cellspacing="0" cellpadding="0"><tr>';
-	s+='			<td height="50" style="font-size:16px; font-weight:bold;color:'+maincolor+'; padding-left:10px" width="100%" onmousedown="js.move(\''+mid+'\')" id="'+act+'_title">'+title+'</td>';
-	s+='			<td><div  id="'+act+'_spancancel1" style="padding:0px 8px;height:50px;line-height:45px;overflow:hidden;cursor:pointer;color:gray;" onclick="js.tanclose(\''+act+'\')">✖</div></td>';
+	s+='			<td height="50" style="font-size:16px; font-weight:bold;padding-left:10px" width="100%" onmousedown="js.move(\''+mid+'\')" id="'+act+'_title"  class="zhu">'+title+'</td>';
+	s+='			<td><div  id="'+act+'_spancancel1" style="padding:0px 8px;height:50px;line-height:45px;overflow:hidden;cursor:pointer;" onclick="js.tanclose(\''+act+'\')">✖</div></td>';
 	s+='		</tr></table>';
 	s+='	</div>';
 	s+='	<div id="'+act+'_body" style="'+can.bodystyle+'">'+can.html+'</div>';
-	s+='	<div id="'+act+'_bbar" style="overflow:hidden;padding:12px 10px;background:#f1f1f1;border-radius:0px 0px 5px 5px" align="right"><span id="msgview_'+act+'"></span>';
+	s+='	<div id="'+act+'_bbar" style="overflow:hidden;padding:12px 10px;background:rgba(0,0,0,0.05);border-radius:0px 0px 5px 5px" align="right"><span id="msgview_'+act+'"></span>';
 	for(i=0; i<can.btn.length; i++){
 		d = can.btn[i];
 		if(!d.bgcolor)d.bgcolor='';
 		s+='<button type="button" oi="'+i+'" style="border-radius:5px;padding:8px 15px;margin-left:10px;background:'+d.bgcolor+'" id="'+act+'_btn'+i+'" class="webbtn">'+d.text+'</button>';
 	}
-	s+='		<button type="button" id="'+act+'_spancancel" onclick="js.tanclose(\''+act+'\')" style="border-radius:5px;padding:8px 15px;background:gray;margin-left:10px" class="webbtn">取消</button>';
+	s+='		<button type="button" id="'+act+'_spancancel" onclick="js.tanclose(\''+act+'\')" style="border-radius:5px;padding:8px 15px;background:rgba(0,0,0,0.5);margin-left:10px" class="webbtn">取消</button>';
 	s+='		';
 	s+='	</div>';
-	s+='</div>';
+	s+='</div></div>';
 	var str = '<div id="amain_'+act+'" tanbodynew="'+act+'" oncontextmenu="return false" style="position:absolute;height:'+H+'px;width:'+W+'px;background:rgba(0,0,0,0.3);z-index:'+this.tanbodyindex+';left:0px;top:0px">'+s+'</div>';
 	$('body').append(str);
 	if(can.closed=='none'){
@@ -653,7 +666,7 @@ js.tanbody=function(act,title,w,h,can1){
 	}
 	if(can.bbar=='none'){
 		$('#'+act+'_bbar').remove();
-		$('#'+mid+'').append('<div style="height:5px;overflow:hidden;border-radius:0px 0px 5px 5px"></div>');
+		//$('#'+mid+'').append('<div style="height:5px;overflow:hidden;border-radius:0px 0px 5px 5px"></div>');
 	}
 	this.resizetan(act);
 	can.showfun(act);
@@ -715,7 +728,7 @@ js.getmsg  = function(txt,col){
 	var s	= '';
 	if(!txt)txt='';
 	if(txt.indexOf('...')>0){
-		s='<img src="images/loading.gif" height="16" width="16" align="absmiddle"> ';
+		s=''+this.ling(16)+' ';
 		col = '#ff6600';
 	}	
 	s+='<span style="color:'+col+'">'+txt+'</span>';
@@ -807,7 +820,7 @@ js.msg = function(lx, txt,sj){
 		return;
 	}
 	if(lx == 'wait'){
-		txt	= '<img src="images/loadings.gif" height="14" width="15" align="absmiddle"> '+txt;
+		txt	= ''+this.ling(14)+' '+txt;
 		sj	= 60;
 	}
 	if(lx=='msg')txt='<font color=red>'+txt+'</font>';var t=10;
@@ -972,7 +985,7 @@ js.changeuser=function(na, lx, tits,ocans){
 	if(typeof(bcar)=='object')for(i in bcar)can[i]=bcar[i];
 	
 	js.tanbody('changeaction',tits,w,h,{
-		html:'<div id="showuserssvie" style="height:'+h+'px"><iframe src="" name="winiframe" width="100%" height="100%" frameborder="0"></iframe></div>',
+		html:'<div id="showuserssvie" style="height:'+h+'px;border-radius:0px 0px 5px 5px"><iframe src="" name="winiframe" width="100%" height="100%" frameborder="0"></iframe></div>',
 		bbar:'none'
 	});
 	
@@ -1215,4 +1228,10 @@ js.sendevent=function(typ,na,d){
 
 function lang(ky){
 	return ky;
+}
+
+js.ling = function(w){
+	var sve = 'style="height:'+w+'px;width:'+w+'px"';
+	if(!w)sve='';
+	return '<i '+sve+' class="rock-loading"></i>';
 }

+ 12 - 91
js/jswx.js

@@ -1,50 +1,13 @@
 QOM='xinhuwx_'
 js.wx={};
 js.wx.alert=function(msg,fun,tit, cof1){
-	$('#weui_dialog_alert_div').remove();
-	var s='';
-	if(!tit)tit='系统提示';
-	s+='<div id="weui_dialog_alert_div" class="weui_dialog_alert" >';
-    s+='<div class="weui_mask"></div>';
-    s+='<div class="weui_dialog">';
-    s+='    <div class="weui_dialog_hd"><strong class="weui_dialog_title">'+tit+'</strong></div>';
-    s+='    <div class="weui_dialog_bd">'+msg+'</div>';
-    s+='    <div class="weui_dialog_ft">';
-	s+='        <a href="javascript:;" id="confirm_btn" sattr="yes" class="weui_btn_dialog primary">确定</a>';
-    if(cof1==1)s+='       <a href="javascript:;" id="confirm_btn1" sattr="no" class="weui_btn_dialog default">取消</a>';
-    s+='   </div>';
-    s+='</div>';
-	s+='</div>';
-	$('body').append(s);
-	function backl(e){
-		var jg	= $(this).attr('sattr');
-		if(typeof(fun)=='function')fun(jg,this);
-		$('#weui_dialog_alert_div').remove();
-		return false;
-	}
-	$('#confirm_btn1').click(backl);
-	$('#confirm_btn').click(backl);
+	js.alert(msg,tit, fun);
 }
 js.wx.confirm=function(msg,fun,tit){
-	this.alert(msg,fun,tit, 1);
+	js.confirm(msg,fun,tit);
 }
 js.wx.prompt=function(tit,msg,fun,nr){
-	if(!nr)nr='';
-	if(apicloud){
-		api.prompt({
-			buttons: ['确定', '取消'],
-			text:nr,title:tit,msg:msg
-		}, function(ret, err) {
-			var index = ret.buttonIndex;
-			if(index==1)fun(ret.text);
-		});
-		return;
-	}
-	function func(lx){
-		if(lx=='yes')fun(get('prompttxt').value);
-	}
-	var msg = '<div align="left">'+msg+'</div><div align="left"><input autocomplete="off" value="'+nr+'" class="r-input" id="prompttxt" type="text"></div>';
-	this.alert(msg,func,tit, 1);
+	js.prompt(tit,msg,fun,nr);
 }
 js.apiurl = function(m,a,cans){
 	var url=''+apiurl+'api.php?m='+m+'&a='+a+'';
@@ -115,61 +78,13 @@ js.ajax  = function(m,a,d,funs, mod,checs, erfs, glx){
 	}, 1000*30);
 }
 js.wx.load=function(txt){
-	this.unload();
-	if(txt=='none')return;
-	if(!txt)txt='加载中...';
-	var s='';
-	var t = winHb()-150;
-	s+='<div id="loadingToastsss" class="weui_loading_toast">'+
-    '<div class="weui_mask_transparent"></div>'+
-    '<div class="weui_toast" style="top:'+(t*0.5)+'px">'+
-    '    <div class="weui_loading">'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_0"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_1"></div>'+
-     '       <div class="weui_loading_leaf weui_loading_leaf_2"></div>'+
-      '      <div class="weui_loading_leaf weui_loading_leaf_3"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_4"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_5"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_6"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_7"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_8"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_9"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_10"></div>'+
-    '        <div class="weui_loading_leaf weui_loading_leaf_11"></div>'+
-    '    </div>'+
-    '    <p class="weui_toast_content">'+txt+'</p>'+
-    '</div>'+
-	'</div>';
-	$('body').append(s);
+	js.loading(txt);
 }
 js.wx.unload=function(){
-	$('#loadingToastsss').remove();
-}
-js.loading=function(txt){
-	this.wx.load(txt);
-}
-js.unloading=function(){
-	this.wx.unload();
+	js.unloading();
 }
 js.wx.msgok=function(txt,fun,ms){
-	$('#toastssss').remove();
-	clearTimeout(this.msgtime);
-	if(txt=='none')return;
-	if(!ms)ms=3;
-	var t = winHb()-150;
-	var s='<div id="toastssss">';
-	s+='<div class="weui_mask_transparent"></div>';
-	s+=	'<div class="weui_toast" style="top:'+(t*0.5)+'px">';
-	s+=		'<i class="weui_icon_toast"></i>';
-	s+=		'<p class="weui_toast_content">'+txt+'</p>';
-	s+=	'</div>';
-	s+='</div>';
-	$('body').append(s);
-	this.msgtime=setTimeout(function(){
-		$('#toastssss').remove();
-		if(typeof(fun)=='function')fun();
-
-	}, ms*1000);
+	js.msgok(txt,fun,ms);
 }
 
 js.showmenu=function(d){
@@ -382,4 +297,10 @@ function touchclass(cans){
 		touchnowobj.onlongclick();
 		this.onlongmenu();
 	}
+}
+
+js.ling = function(w){
+	var sve = 'style="height:'+w+'px;width:'+w+'px"';
+	if(!w)sve='';
+	return '<i '+sve+' class="rock-loading"></i>';
 }

+ 62 - 49
js/reim_xina.js

@@ -231,6 +231,10 @@ var reim={
 			}
 		},''+lx+',json', efun);
 	},
+	initloads:function(){
+		$('#mainreload').html(''+js.ling(12)+' 刷新中...');
+		this.initload(true);
+	},
 	//初始加载数据
 	initload:function(bo){
 		this.initbool = true;
@@ -238,6 +242,7 @@ var reim={
 			reim.initci++;
 			reim.showdata(ret.data);
 			if(bo)reim.reloaduser();
+			$('#mainreload').html('<i class="icon-refresh"></i> 刷新');
 		});
 	},
 	firstpid:0,
@@ -566,7 +571,7 @@ var reim={
 			}
 		}
 		var len=ds.length,d,s='',s1,lx;
-		s='<div style="padding:5px;margin-top:5px;color:#aaaaaa;border-bottom:1px #e1e1e1  solid">会话('+len+')</div>';
+		s='<div style="padding:5px;margin-top:5px;color:#aaaaaa;border-bottom:var(--border)">会话('+len+')</div>';
 		for(i=0;i<len;i++){
 			d = ds[i];
 			lx= d.type1;
@@ -658,12 +663,18 @@ var reim={
 			tit+='@'+d.subname+'';
 		}
 		var s1 = this.grouptype(d.deptid,d.type);
-		s	= '<div class="lists'+cls+'" rtype="hist" oncontextmenu="reim.historyright(this,event,\''+num+'\')" tsaid="'+d.receid+'" tsaype="'+d.type+'"  temp="hist" id="history_'+num+'" onclick="reim.openchat(\''+ty+'\',\''+d.receid+'\',\''+d.name+'\',\''+d.face+'\')">';
-		s+='<table cellpadding="0" border="0" width="100%"><tr>';
-		s+='<td style="padding-right:8px"><div style="height:30px;overflow:hidden"><img src="'+d.face+'"></div></td>';
-		s+='<td align="left" width="100%"><div title="'+tit+'" id="lname_'+num+'" class="name">'+na+''+nas+''+s1+'</div><div class="huicont">'+jm.base64decode(d.cont)+'</div></td>';
-		s+='<td align="right" nowrap><span id="'+qz+'_stotal_'+num+'" class="badge red">'+st+'</span><br><span style="color:#aaaaaa;font-size:10px">'+ops+'</span></td>';
-		s+='</tr></table>';
+		s	= '<div class="lists'+cls+'" rtype="hist" oncontextmenu="reim.historyright(this,event,\''+num+'\')" tsaid="'+d.receid+'" tsaype="'+d.type+'" style="display:flex;align-items:center;" temp="hist" id="history_'+num+'" onclick="reim.openchat(\''+ty+'\',\''+d.receid+'\',\''+d.name+'\',\''+d.face+'\')">';
+		s+='<div style="padding-right:8px"><div class="img"><img src="'+d.face+'"></div></div>';
+		s+='<div style="flex:1;overflow:hidden;">';
+		s+='	<div style="display:flex;align-items:center;">';
+		s+='		<div style="flex:1;" title="'+tit+'" id="lname_'+num+'" class="name">'+na+''+nas+''+s1+'</div>';
+		s+='		<span id="'+qz+'_stotal_'+num+'" class="badge red">'+st+'</span>';
+		s+='	</div>';
+		s+='	<div style="display:flex;align-items:center;">';
+		s+='		<div style="flex:1;padding-right:3px" class="huicont">'+strhtml(jm.base64decode(d.cont))+'</div>';
+		s+='		<div style="color:#aaaaaa;font-size:10px;white-space:nowrap">'+ops+'</div>';
+		s+='	</div>';
+		s+='</div>';
 		s+='</div>';
 		if(glx)return s;
 		if(!pad){o.append(s);}else{o.prepend(s)}
@@ -720,7 +731,7 @@ var reim={
 		if(d.tel==null)d.tel='';
 		var num = 'userinfo_'+d.id+'';
 		var s = '<div align="center"><div align="left" style="width:300px;margin-top:50px">';
-		s+='	<div style="padding-left:70px"><img id="myfacess" onclick="$(this).imgview()" src="'+d.face+'" height="100" width="100" style="border-radius:50%;border:1px #eeeeee solid"></div>';
+		s+='	<div style="padding-left:70px"><img id="myfacess" onclick="$(this).imgview()" src="'+d.face+'" height="100" width="100" style="border-radius:50%;border:var(--border)"></div>';
 		if(d.id==adminid)s+='<div style="padding-left:90px"><a href="javascript:;" id="fupbgonet" onclick="reim.upfaceobj.click()" style="font-size:12px">修改头像</a></div>';
 
 		s+='	<div style="line-height:30px;padding:10px;padding-left:20px;"><font color=#888888>姓名:</font>'+d.name+'<br><font color=#888888>部门:</font>'+d.deptallname+'<br><font color=#888888>职位:</font>'+d.ranking+'<br><font color=#888888>性别:</font>'+d.sex+'<br><font color=#888888>电话:</font>'+d.tel+'<br><font color=#888888>手机:</font>'+d.mobile+'<br><font color=#888888>邮箱:</font>'+d.email+'</div>';
@@ -779,10 +790,10 @@ var reim={
 			return;
 		}
 		var s = '<div>';
-		s+='<div id="viewtitle_'+num+'" style="height:50px;overflow:hidden;border-bottom:#dddddd solid 1px;">';
+		s+='<div id="viewtitle_'+num+'" style="height:50px;overflow:hidden;border-bottom:var(--border);">';
 		s+='</div>';
 		var hei = 206;
-		s+='<div resizeh="'+hei+'" id="viewcontent_'+num+'" style="height:'+(viewheight-hei)+'px;overflow:hidden;position:relative;"><div style="margin-top:50px" align="center"><img src="images/mloading.gif"></div></div>';
+		s+='<div resizeh="'+hei+'" id="viewcontent_'+num+'" style="height:'+(viewheight-hei)+'px;overflow:hidden;position:relative;"><div style="margin-top:50px;color:#cccccc" align="center">'+js.ling(30)+'</div></div>';
 		
 		s+='<div class="toolsliao" style="background:none" id="toolsliao_'+num+'">';
 		s+='	<span title="表情" tools="emts" class="cursor"><i class="icon-heart"></i></span>';
@@ -987,7 +998,7 @@ var reim={
 		for(ty in agedt){
 			a 	= agedt[ty];
 			len	= a.length;
-			s+='<div style="color:#aaaaaa;padding-left:20px;margin-bottom:10px;padding:5px;border-bottom:'+sodd+'px solid #eeeeee">&nbsp;&nbsp;'+ty+'</div>';
+			s+='<div style="color:#aaaaaa;padding-left:20px;margin-bottom:10px;padding:5px;border-bottom-width:'+sodd+'px;border-bottom:var(--border)">&nbsp;&nbsp;'+ty+'</div>';
 			s+='<div class="agenhclsdiv">';
 			for(i=0;i<len;i++){
 				d1 = a[i];
@@ -1033,7 +1044,7 @@ var reim={
 		this.showbadge('chat');
 		this.biaoyd('agent',d.id);
 		
-		var w = 1100,h=600,url = d.urlpc;
+		var w = screen.width-200,h=screen.height-150,url = d.urlpc;
 		if(isempt(url)){
 			url = d.urlm;
 			if(isempt(url)){
@@ -1089,7 +1100,7 @@ var reim={
 				reim.clickcogclick(d);
 			}
 		});
-		var d = [{'name':'消息记录',lx:'jl'},{'name':'刷新',lx:'sx'},{'name':'创建会话',lx:'create'},{'name':'修改密码',lx:'pass'}];
+		var d = [{'name':'消息记录',lx:'jl'},{'name':'刷新',lx:'sx'},{'name':'创建会话',lx:'create'},{'name':'修改密码',lx:'pass'},{'name':'切换主题',lx:'theme'}];
 		if(companymode)d.push({'name':'切换单位',lx:'qhqy'});
 		if(nwjsgui)d.push({'name':'下载管理器',lx:'down'});
 		d.push({'name':'设置',lx:'cog'});
@@ -1112,24 +1123,13 @@ var reim={
 				location.reload();
 			}
 		}
-		if(lx=='exit'){
-			this.exitlogin();
-		}
-		if(lx=='cog'){
-			this.cogshow();
-		}
-		if(lx=='jl'){
-			this.openrecord();
-		}
-		if(lx=='create'){
-			this.creategroup();
-		}
-		if(lx=='pass'){
-			this.editpass();
-		}
-		if(lx=='qhqy'){
-			this.changecom();
-		}
+		if(lx=='exit')this.exitlogin();
+		if(lx=='cog')this.cogshow();
+		if(lx=='jl')this.openrecord();
+		if(lx=='create')this.creategroup();
+		if(lx=='pass')this.editpass();
+		if(lx=='qhqy')this.changecom();
+		if(lx=='theme')this.changetheme();
 		if(lx=='down')js.open('?d=reim&m=record&a=download', 630,450,'downs');
 	},
 	//创建会话
@@ -1147,6 +1147,19 @@ var reim={
 		});
 		return false;
 	},
+	changetheme:function(){
+		var zys = ['#1389D3','#99cc66','#003366','#6666CC','#CC3333','#009966','#333333','#990066','#333300','#333366','#99CC99','#663366','#003399','#338899'];
+		var h 	= '<div style="padding:10px"><table height="20px" class="cursor"><tr>';
+		var nst = '';
+		for(var i=0;i<zys.length;i++){
+			nst = (zys[i]==maincolor) ? '✔':'&nbsp;';
+			h+='<td width="20px" style="color:white;font-size:12px" align="center" onclick="js.location(\'?d=reim&a=xina&apptheme='+zys[i].substr(1)+'\')" bgcolor="'+zys[i]+'">'+nst+'</td>';
+		}
+		h+='</tr></table></div>';
+		js.tanbody('color','切换主题',310,200,{
+			html:h
+		});
+	},
 	editpass:function(bt,cse){
 		if(!bt)bt='修改密码';
 		if(!cse)cse='';
@@ -1224,18 +1237,18 @@ var reim={
 		var chs= (this.getsound())?'checked':'';
 		var ch1= (this.getzhuom())?'checked':'';
 		var num = 'userinfo_cogshow';
-		var s = '<div align="center"><div align="left" style="width:300px;margin-top:50px">';
+		var s = '<div align="center"><div align="left" style="width:300px;margin-top:40px;padding:15px;background:var(--main-bgcolor);border-radius:5px;border:var(--border)">';
 		s+='	<div style="line-height:30px"><b>设置</b></div>';
-		s+='	<div style="padding:10px 0px;border-top:1px #eeeeee solid"><label><input '+ch1+' onclick="reim.setzhuom(this)" type="checkbox">新信息桌面提醒</label></div>';
-		s+='	<div style="padding:10px 0px;border-top:1px #eeeeee solid"><label><input '+chs+' onclick="reim.setsound(this)" type="checkbox">新信息声音提示</label></div>';
-		s+='	<div style="padding:10px 0px;border-top:1px #eeeeee solid">提示声音:<select onchange="reim.changesound(this)" id="changesoundid"><option value="web/res/sound/email.mp3">email.mp3</option><option value="web/res/sound/dong.mp3">dong.mp3</option><option value="web/res/sound/todo.ogg">todo.ogg</option><option value="web/res/sound/niu.mp3">niu.mp3</option><option value="web/res/sound/don1.mp3">don1.mp3</option></select></div>';
+		s+='	<div style="padding:10px 0px;border-top:var(--border)"><label><input '+ch1+' onclick="reim.setzhuom(this)" type="checkbox">新信息桌面提醒</label></div>';
+		s+='	<div style="padding:10px 0px;border-top:var(--border)"><label><input '+chs+' onclick="reim.setsound(this)" type="checkbox">新信息声音提示</label></div>';
+		s+='	<div style="padding:10px 0px;border-top:var(--border)">提示声音:<select onchange="reim.changesound(this)" id="changesoundid"><option value="web/res/sound/email.mp3">email.mp3</option><option value="web/res/sound/dong.mp3">dong.mp3</option><option value="web/res/sound/todo.ogg">todo.ogg</option><option value="web/res/sound/niu.mp3">niu.mp3</option><option value="web/res/sound/don1.mp3">don1.mp3</option></select></div>';
 		
 		chs = 'checked';
 		ch1 = '';
 		if(js.getoption('sendkuijie')=='1'){
 			ch1='checked';chs='';
 		}			
-		s+='	<div style="padding:10px 0px;border-top:1px #eeeeee solid">发送快捷键:<label><input onclick="reim.setsendkkj(0)" '+chs+' type="radio" name="sendkuijie">Enter</label>&nbsp; <label><input onclick="reim.setsendkkj(1)" '+ch1+' type="radio" name="sendkuijie">Ctrl+Enter</label></div>';
+		s+='	<div style="padding:10px 0px;border-top:var(--border)">发送快捷键:<label><input onclick="reim.setsendkkj(0)" '+chs+' type="radio" name="sendkuijie">Enter</label>&nbsp; <label><input onclick="reim.setsendkkj(1)" '+ch1+' type="radio" name="sendkuijie">Ctrl+Enter</label></div>';
 		
 		//s+='	<div style="padding:10px 0px;border-top:1px #eeeeee solid">列表列宽:<label><input onclick="reim.setchatlistw(220)" checked type="radio" name="chatlistw">正常</label>&nbsp; <label><input onclick="reim.setchatlistw(230)" type="radio" name="chatlistw">宽点</label>&nbsp; <label><input onclick="reim.setchatlistw(250)" type="radio" name="chatlistw">大宽</label></div>';
 
@@ -1243,13 +1256,13 @@ var reim={
 			var ips = nwjs.getipmac();
 			var d = nw.process.versions;
 			var json = nw.App.manifest;
-			s+='<div style="padding:10px 0px;border-top:1px #eeeeee solid">开机启动:<button type="button" class="cursor" onclick="reim.kaijistart(0)">启动</button>&nbsp;<button type="button" class="cursor" onclick="reim.kaijistart(1)">删除</button>&nbsp;<button type="button" class="cursor" onclick="reim.kaijistart(2)">快捷方式</button></div>';
-			s+='<div style="padding:10px 0px;border-top:1px #eeeeee solid">我局域网IP:'+ips.ip+'</div>';
-			s+='<div style="padding:10px 0px;border-top:1px #eeeeee solid">我的MAC地址:'+ips.mac+'</div>';
-			s+='<div style="padding:10px 0px;border-top:1px #eeeeee solid">此客户端版本:V'+json.version+',内核nwjs-'+d.nw+'</div>';
+			s+='<div style="padding:10px 0px;border-top:var(--border)">开机启动:<button type="button" class="cursor" onclick="reim.kaijistart(0)">启动</button>&nbsp;<button type="button" class="cursor" onclick="reim.kaijistart(1)">删除</button>&nbsp;<button type="button" class="cursor" onclick="reim.kaijistart(2)">快捷方式</button></div>';
+			s+='<div style="padding:10px 0px;border-top:var(--border)">我局域网IP:'+ips.ip+'</div>';
+			s+='<div style="padding:10px 0px;border-top:var(--border)">我的MAC地址:'+ips.mac+'</div>';
+			s+='<div style="padding:10px 0px;border-top:var(--border)">此客户端版本:V'+json.version+',内核nwjs-'+d.nw+'</div>';
 		}
 		
-		s+='	<div style="padding:10px 0px;border-top:1px #eeeeee solid">网络IP:'+this.myip+'</div>';
+		s+='	<div style="padding:10px 0px;border-top:var(--border)">网络IP:'+this.myip+'</div>';
 		s+='	<div style="padding-top:10px;"><input onclick="reim.closetabs(\''+num+'\')" type="button" value="关闭" class="btn btn-danger"></div>';
 		s+='</div></div>';
 		this.addtabs(num,s);
@@ -1429,7 +1442,7 @@ function chatcreate(cans){
 		var iref = (!iref)?false:true;
 		var minid= 0;
 		if(iref)minid=this.minid;
-		if(o1)$(o1).html('<img src="images/loadings.gif" height="14" width="15" align="absmiddle"> 加载中...');
+		if(o1)$(o1).html(''+js.ling(12)+' 加载中...');
 		this.boolload 	= true;
 		reim.ajax(this.getapiurl('reim','getrecord'),{type:this.type,gid:this.gid,minid:minid,loadci:this.loadci,laiyuan:'not',soulx:this.soulx,soukey:jm.base64encode(this.soukey)},function(ret){
 			js.unloading();
@@ -1587,7 +1600,7 @@ function chatcreate(cans){
 		});
 	};
 	this.showhuilist=function(){
-		var s = '<div id="showuserlist" style="height:250px;overflow:hidden;position:relative"><div align="center" style="padding:10px;"><img src="images/mloading.gif" align="absmiddle">&nbsp;加载人员...</div></div>';
+		var s = '<div id="showuserlist" style="height:250px;overflow:hidden;position:relative"><div align="center" style="padding:10px;">'+js.ling()+'&nbsp;加载人员...</div></div>';
 		js.tanbody('syscogshow','会话上人员('+this.usershu+')',480,100,{html:s});
 		if(!this.userlistarr){
 			reim.ajax(this.getapiurl('reim','getgroupuser'),{type:this.type,gid:this.gid},function(ret){
@@ -1602,7 +1615,7 @@ function chatcreate(cans){
 		var sad = this.showtableda(a);
 		$('#showuserlist').html(sad[0]);
 		$('#showuserlist').perfectScrollbar();
-		$('#msgview_syscogshow').html('<span style="font-size:12px;color:#888888">右键人名可以@TA,'+sad[1]+'人在线</span>');
+		$('#msgview_syscogshow').html('<span style="font-size:12px;">右键人名可以@TA,'+sad[1]+'人在线</span>');
 		$('#showuserlist').find('div[xuh]').contextmenu(function(e){
 			me.atright(this,e);
 			return false;
@@ -1623,7 +1636,7 @@ function chatcreate(cans){
 				d1=reim.nowonlinearr;
 				if(d1 && d1.reim==1)zx++;
 			}
-			s+='<td width="20%"><div style="padding:5px" align="center"><div><img style="height:34px;width:34px;border-radius:50%" onclick="$.imgview({url:this.src})" src="'+a[i].face+'"></div><div xuh="'+i+'" style="color:#888888">'+a[i].name+''+s1+'</div></div></td>';
+			s+='<td width="20%"><div style="padding:5px" align="center"><div><img style="height:34px;width:34px;border-radius:50%" onclick="$.imgview({url:this.src})" src="'+a[i].face+'"></div><div xuh="'+i+'">'+a[i].name+''+s1+'</div></div></td>';
 			if(oi%5==0)s+='</tr><tr>';
 		}
 		if(len<5)for(i=0;i<5-len;i++)s+='<td width="20%"></td>';
@@ -1845,7 +1858,7 @@ function chatcreate(cans){
 	};
 	this.getemts=function(o){
 		if(!get('aemtsdiv')){
-			var s = '<div id="aemtsdiv" style="width:400px;height:200px;overflow:hidden;border:1px #cccccc solid;background:white;box-shadow:0px 0px 5px rgba(0,0,0,0.3);left:3px;top:5px;position:absolute;display:none;z-index:6">';
+			var s = '<div id="aemtsdiv" style="width:400px;height:200px;overflow:hidden;border:var(--border);background:var(--main-bgcolor);left:3px;top:5px;position:absolute;display:none;z-index:6;border-radius:5px" class="box">';
 			s+='<div style="padding:5px">';
 			s+=this.getemtsbq('qq',0, 104, 11, 24);
 			s+='</div>';
@@ -2099,13 +2112,13 @@ function chatcreate(cans){
 		var str = '';
 		var d = ret.wdarr;
 		if(d.length>0){
-			str+='<div style="padding:5px 10px;border-bottom:1px solid #eeeeee;font-size:12px;color:gray">未读'+d.length+'人</div>';
+			str+='<div style="padding:5px 10px;border-bottom:var(--border);font-size:12px;color:gray">未读'+d.length+'人</div>';
 			var sad = this.showtableda(d);
 			str+=sad[0];
 		}
 		d = ret.ydarr;
 		if(d.length>0){
-			str+='<div style="padding:5px 10px;border-bottom:1px solid #eeeeee;font-size:12px;color:gray">已读'+d.length+'人</div>';
+			str+='<div style="padding:5px 10px;border-bottom:var(--border);font-size:12px;color:gray">已读'+d.length+'人</div>';
 			var sad = this.showtableda(d);
 			str+=sad[0];
 		}
@@ -2162,7 +2175,7 @@ function chatcreate(cans){
 			s+='</div>';
 		}
 		s+='';
-		if(s2)s2='<div style="display:inline-block;border-bottom:1px #eeeeee solid;width:100%">'+s2+'</div>';
+		if(s2)s2='<div style="display:inline-block;border-bottom:var(--border);width:100%">'+s2+'</div>';
 		$('#showstarlist').html(s2+s);
 		$('#showstarlist').perfectScrollbar();
 		$('#msgview_sysshowstar').html('<a onclick="'+this.objstr+'.showstarshu(this)" href="javascript:;">刷新</a>');

+ 263 - 0
js/reim_xina_kefu.js

@@ -0,0 +1,263 @@
+/**
+*	信呼在线客服使用
+*	caratename:雨中磐石(rainrock)
+*	caratetime:2021-11-01 21:40:00
+*	homepage:www.rockoa.com
+*/
+
+reim.kefu = {
+	arrobj:{},
+	loaddata:function(){
+		if(!get('centshow3'))return;
+		this.initreload();
+	},
+	initreload:function(){
+		reim.ajax(reim.getapiurl('reim','rockkefu'),{}, function(ret){
+			if(ret.data=='ok')reim.kefu.reload();
+		});
+	},
+	reload:function(o1){
+		$('#changetabs3').show();
+		if(o1)$(o1).html(''+js.ling(12)+' 刷新中...');
+		reim.ajax(reim.getapiurl('rockkefu','index'),{}, function(ret){
+			reim.kefu.showdata(ret.data);
+		});
+	},
+	showdata:function(da){
+		this.arrobj={};
+		if(!this.socketob && da.config)this.linkwebsocket(da.config,0);
+		this.showlishi(da.history,da.zixunarr);
+		this.showwait(da.waitarr);
+	},
+	linkwebsocket:function(conf,lx){
+		this.reimconf = conf;
+		clearTimeout(this.webtimes);
+		if(this.ws)this.ws.close();
+		if(!conf.wsurl)return;
+		this.ws 	= new WebSocket(jm.base64decode(conf.wsurl));
+		var me  	= this;
+		this.myid 	= conf.id;
+		this.ws.onopen = function(){
+			this.send('{"from":"'+conf.recid+'","adminid":"'+conf.id+'","atype":"connect","sendname":"'+conf.name+'"}');
+			me.socketob = true;
+			if(lx==1)me.linkwebsocket(conf,2);
+		};
+		this.ws.onerror = function(e){
+			me.socketob = false;
+			me.reloadWebSocket(false);
+		};
+		this.ws.onmessage = function (evt){
+			var ds = JSON.parse(evt.data);
+			me.onmessage(ds);
+		};
+		this.ws.onclose = function(e){
+			me.socketob = false;
+			me.reloadWebSocket(false);
+		};
+	},
+	reloadWebSocket:function(bo){
+		clearTimeout(this.webtimes);
+		if(!bo){
+			this.webtimes=setTimeout('reim.kefu.reloadWebSocket(true)', 5*1000);
+		}else{
+			if(!this.socketob)this.linkwebsocket(this.reimconf,1);
+		}
+	},
+	showonline:function(ty,id){
+		var bh = ''+ty+'_'+id+'';
+		var d1 = this.arrobj[bh];
+		var id1 = 'lname_'+bh+'';
+		if(d1 && get(id1) && d1.online==1)get(id1).style.fontWeight='bold';
+	},
+	showoffline:function(ty,id){
+		var bh = ''+ty+'_'+id+'';
+		var d1 = this.arrobj[bh];
+		var id1 = 'lname_'+bh+'';
+		if(d1 && get(id1))get(id1).style.fontWeight='';
+		if(d1)d1.online=0;
+	},
+	showlishi:function(da,das){
+		var ds = [],i,d1,id1,bh;
+		for(i=0;i<da.length;i++){
+			d1 = da[i];
+			d1.receid = d1.id;
+			if(d1.type=='zixun'){
+				this.arrobj[''+d1.type+'_'+d1.receid+''] = d1;
+			}
+		}
+		for(i=0;i<das.length;i++){
+			d1 = das[i];
+			d1.type = 'zixun';
+			d1.receid = d1.id;
+			bh = ''+d1.type+'_'+d1.receid+'';
+			if(!this.arrobj[bh])this.arrobj[bh] = d1;
+		}
+		for(d1 in this.arrobj)ds.push(this.arrobj[d1]);
+		js.setoption('kefulist', JSON.stringify(ds));
+		reim.showhistory(reim.maindata.harr);
+		for(i=0;i<ds.length;i++){
+			d1  = ds[i];
+			id1 = 'lname_'+d1.type+'_'+d1.id+'';
+			if(get(id1) && d1.online==1)get(id1).style.fontWeight='bold';
+		}
+	},
+	onmessage:function(d){
+		console.log(d);
+		var lx=d.type;
+		if(lx=='chehui'){
+			$('#qipaocont_mess_'+d.messid+'').html(js.getmsg(jm.base64decode(d.mess),'green'));
+			this.reload();
+		}
+		if(lx=='zixun' || lx=='rewait'){
+			this.reload();
+			if(d.title){
+				var d1 = {
+					gid:d.sendid,
+					title:jm.base64decode(d.title),
+					gname:d.gname,
+					cont:d.mess,
+					type:'zixun',
+					face:d.face,
+					sound:'web/res/sound/todo.ogg'
+				};
+				reim.receivechat(d1);
+			}
+		}
+		if(lx=='zxoff'){
+			this.showoffline('zixun', d.zixunid);
+		}
+		if(lx=='kftokf'){
+			this.reload();
+			var d1 = {
+				gid:d.zxid,
+				title:jm.base64decode(d.title),
+				gname:d.gname,
+				cont:d.mess,
+				type:'zixun',
+				face:d.face,
+				sound:'web/res/sound/todo.ogg'
+			};
+			reim.receivechat(d1);
+		}
+	},
+	showwait:function(ds){
+		var i,s,d1;
+		$('#kefulistwait').html('');
+		for(i=0;i<ds.length;i++){
+			d1 = {
+				'name':ds[i].name,
+				'type':'wait',
+				'receid':ds[i].id,
+				'cont':ds[i].cont,
+				'face':ds[i].face,
+				'online':ds[i].online,
+				'subname':ds[i].subname,
+				'qian':'wait',
+				'stotal':ds[i].stotal
+			}
+			this.arrobj[''+d1.type+'_'+d1.receid+''] = d1;
+			s = reim.showhistorys(d1,false, false, true);
+			$('#kefulistwait').append(s);
+			if(d1.online==1)this.showonline(d1.type,d1.receid);
+		}
+		$('#kefulistwait').append('<div align="center" style="padding:10px;"><a onclick="reim.kefu.reload(this)" style="font-size:12px;color:#bbbbbb" href="javascript:;"><i class="icon-refresh"></i> 刷新咨询</a></div>');
+		reim.showbadge('wait');
+	},
+	openwait:function(d){
+		var str = ''+d.name+'';
+		if(d.subname)str+='<span style="color:'+maincolor+';font-size:10px">@'+d.subname+'</span>';
+		js.confirm('确定要解答“'+str+'”此用户问题吗?', function(jg){
+			if(jg=='yes')reim.kefu.openwaits(d);
+		});
+	},
+	openwaits:function(d){
+		$('#history_wait_'+d.receid+'').remove();
+		this.arrobj[''+d.type+'_'+d.receid+''] = false;
+		reim.showbadge('wait');
+		js.loading('加入中...');
+		reim.ajax(reim.getapiurl('rockkefu','addzixun'),{sid:d.receid}, function(ret){
+			reim.kefu.reload();
+			js.unloading();
+			reim.changetabs(0);
+			reim.showbadge('wait');
+			reim.openchat('zixun',d.receid,d.name,d.face);
+		});
+	},
+	showuser:function(sid){
+		this.nowsid = sid;
+		js.tanbody('zhuandivkefu','咨询人员信息',350,200,{
+			html:'<div id="zhuandivkefu" style="height:300px;overflow:hidden;position:relative"><div align="center" style="padding:50px"><img src="images/mloading.gif"></div></div>'
+		});
+		reim.ajax(reim.getapiurl('rockkefu','getzxinfo'),{sid:this.nowsid},function(ret){
+			reim.kefu.showzxinfo(ret.data);
+		});
+	},
+	showzxinfo:function(ret){
+		var str = '<table style="margin:10px">',k,v,s1;
+		this.prinfo = ret.prinfo;
+		this.prfies = ret.prfies;
+		for(k in ret.prfies){
+			v = ret.prinfo[k];
+			if(v==null)v='';
+			s1 = '<a onclick="reim.kefu.dbleditstr(\''+k+'\')" style="font-size:13px" class="hui">'+ret.prfies[k]+'</a>';
+			if(k=='web'||k=='ip'||k=='adddt'||k=='zxdt'||k=='agentna'||k=='kefu')s1=ret.prfies[k];
+			str+='<tr valign="top"><td nowrap class="cursor" style="color:gray;text-align:right;padding:4px 0px">'+s1+':</td><td style="padding:4px 0px" fields="'+k+'" class="wrap">'+v+'</td></tr>';
+		}
+		str+='</table>';
+		$('#zhuandivkefu').html(str);
+		$('#zhuandivkefu').perfectScrollbar();
+		js.resizetan('confirm');
+	},
+	shareuser:function(sid, slx){
+		changkfid = 0;
+		this.nowsid = sid;
+		var nae = '转给其他客服';
+		if(slx==1)nae = '加更多客服';
+		js.confirm('<div id="zhuandivkefu"><img src="images/mloading.gif"></div>',function(jg){
+			if(jg=='yes')reim.kefu.savezhuan(slx);
+		},'',nae);
+		this.zshouwku(false);
+	},
+	dbleditstr:function(fid){
+		var v = this.prinfo[fid],nam=this.prfies[fid];
+		if(v==null)v='';
+		js.prompt('请填写内容:','填写“'+nam+'”的值',function(jg,txt,act){
+			if(jg=='yes'){
+				reim.kefu.saveval(fid,txt,'zhuandivkefu');
+				return false;
+			}
+		},v);
+	},
+	saveval:function(fid,val,act){
+		js.setmsg('保存中...','','msgview_'+act+'');
+		reim.ajax(reim.getapiurl('rockkefu','savezixun'),{fid:fid,val:val,sid:this.nowsid},function(ret){
+			reim.kefu.prinfo[fid] = val;
+			$('#zhuandivkefu').find('td[fields="'+fid+'"]').html(val);
+			js.setmsg('','','msgview_'+act+'');
+		},'post');
+	},
+	zshouwku:function(d){
+		if(!d){
+			reim.ajax(reim.getapiurl('rockkefu','getkefu'),{sid:this.nowsid},function(ret){reim.kefu.zshouwku(ret.data);});
+		}else{
+			this.kefuarr = d;
+			var i,len=d.length,a1,str='';
+			for(i=0;i<len;i++){
+				str+='<label><input type="radio" name="qhkefu" onclick="changkfid=this.value" value="'+d[i].id+'"><img src="'+d[i].face+'" align="absmiddle" width="20" height="20" style="border-radius:50%">'+d[i].name+'';
+				if(d[i].ranking)str+='<font color=gray>('+d[i].ranking+')</font>';
+				str+='</label>&nbsp;&nbsp;';
+			}
+			$('#zhuandivkefu').html(str);
+			js.resizetan('confirm');
+		}
+	},
+	savezhuan:function(slx){
+		if(changkfid==0)return;
+		js.loading('处理中...');
+		reim.ajax(reim.getapiurl('rockkefu','savekefu'),{sid:this.nowsid,tid:changkfid,slx:slx},function(ret){
+			js.msgok(ret.data);
+		},'get',function(err){
+			js.msgerror(err.msg);
+		});
+	}
+}

+ 1 - 1
mode/bootstrapplugin/jquery-bootsform.js

@@ -152,7 +152,7 @@
 			s+='</table>';
 			s+='</form>';
 			s+='</div>';
-			s+='<div style="padding:8px 10px;background:#eeeeee;line-height:30px" align="right"><span id="msgview_'+rand+'"></span>&nbsp;';
+			s+='<div style="padding:8px 10px;background:rgba(0,0,0,0.05);line-height:30px" align="right"><span id="msgview_'+rand+'"></span>&nbsp;';
 			s+='	<button type="button" class="btn btn-'+can.saveCls+'" disabled id="save_'+rand+'"><i class="icon-save"></i>&nbsp;'+can.saveText+'</button>';
 			if(can.cancelbtn)s+='&nbsp; <button type="button" class="btn btn-default" id="cancel_'+rand+'"><i class="icon-remove"></i>&nbsp;取消</button>';
 			s+='</div>';

+ 23 - 23
mode/bootstrapplugin/jquery-bootstable.js

@@ -77,12 +77,12 @@
 		this._create	= function(){
 			var a	= can.columns;
 			var s 	= '',i,len=a.length,val,s1,s2='',cols,s3='',s4='',s5='',le,st,ov,j,j1,na,attr,sty='',hs='',dis,dlen=this.data.length,mcol;
-			s+='<table id="tablemain_'+rand+'" class="table table-striped table-bordered table-hover" style="margin:0px">';
+			s+='<table id="tablemain_'+rand+'" class="rock-table table table-striped table-bordered table-hover" style="margin:0px">';
 			if(!can.hideHeaders){
 				mcol = window['maincolor'];
 				if(!mcol)mcol='#3399FF';
-				s+='<thead><tr><th width="40" thxu="-1"></th>';
-				if(can.checked)s+='<th width="40"><div align="center"><input id="seltablecheck_'+rand+'" type="checkbox"></div></th>';
+				s+='<thead><tr><th width="40" thxu="-1" class="rock-table-th"></th>';
+				if(can.checked)s+='<th width="40" class="rock-table-th"><div align="center"><input id="seltablecheck_'+rand+'" type="checkbox"></div></th>';
 				var nstr = js.getoption(this.tablekeymd5()),nda={};
 				if(nstr)nda = JSON.parse(nstr);
 				for(i=0;i<len;i++){
@@ -96,7 +96,7 @@
 					if(a[i].width)attr+=' width="'+a[i].width+'"';
 					if(a[i].tooltip)attr+=' title="'+a[i].tooltip+'"';
 					if(cols && cols>1)attr+=' colspan="'+cols+'"';
-					s+='<th nowrap '+attr+' thxu="'+i+'"><div style="'+hs+'" align="'+a[i].align+'" lfields="'+na+'">';
+					s+='<th nowrap '+attr+' thxu="'+i+'" class="rock-table-th"><div style="'+hs+'" align="'+a[i].align+'" lfields="'+na+'">';
 					if(can.celleditor&&a[i].editor)s+='<i class="icon-pencil"></i>&nbsp;';
 					s+=a[i].text;
 					if(a[i].sortable){
@@ -184,13 +184,13 @@
 			if(ov.trbgcolor)trsty+='background:'+ov.trbgcolor+';';
 			if(ov.trstyle)trsty+=''+ov.trstyle+';';
 			if(trsty)trsty='style="'+trsty+'"';
-			s='<tr clickbo="false" oi="'+j+'" dataid="'+ov.id+'" '+s3+' '+trsty+'>';
+			s='<tr class="rock-table-tr" clickbo="false" oi="'+j+'" dataid="'+ov.id+'" '+s3+' '+trsty+'>';
 			xu = ov.trxu;if(!xu)xu=j+1+can.pageSize*(this.page-1);
-			s+='<td '+s5+' align="right" width="40">'+xu+'</td>';
+			s+='<td '+s5+' align="right" width="40" class="rock-table-td">'+xu+'</td>';
 			if(can.checked){
 				dis = '';
 				if(ov.checkdisabled)dis='disabled';
-				s+='<td align="center" width="40"><input oi="'+j+'" name="tablecheck_'+rand+'" '+dis+' value="'+ov.id+'" type="checkbox"></td>';
+				s+='<td align="center" class="rock-table-td" width="40"><input oi="'+j+'" name="tablecheck_'+rand+'" '+dis+' value="'+ov.id+'" type="checkbox"></td>';
 			}
 			for(i=0;i<len;i++){
 				na	= a[i].dataIndex;
@@ -227,10 +227,10 @@
 					s3 = a[i].renderattr(val, ov, j);
 					if(!isempt(s3))attr+=' '+s3+'';
 				}
-				s+='<td align="'+a[i].align+'" '+attr+' style="'+sty+'" row="'+j+'" cell="'+i+'">'+s2+''+s1+'</td>';
+				s+='<td class="rock-table-td" align="'+a[i].align+'" '+attr+' style="'+sty+'" row="'+j+'" cell="'+i+'">'+s2+''+s1+'</td>';
 			}
 			s+='</tr>';
-			if(s4)s+='<tr><td colspan="'+(len+1)+'">'+s4+'</td></tr>';
+			if(s4)s+='<tr class="rock-table-tr"><td  class="rock-table-td" colspan="'+(len+1)+'">'+s4+'</td></tr>';
 			return s;
 		};
 		this._tredat={};
@@ -300,7 +300,7 @@
 				var off = obj.offset();
 				var a = can.columns,s='',i,len=a.length,w1,o2;
 				if(!get('headerla_'+rand+'')){
-					s = '<div style="position:fixed;left:'+(off.left)+'px;top:'+(off.top)+'px;width:100%;height:34px;overflow:hidden; background:rgba(255,255,255,0.5);border-bottom:1px #dddddd solid;z-index:2" id="headerla_'+rand+'"></div>';
+					s = '<div style="position:fixed;left:'+(off.left)+'px;top:'+(off.top)+'px;width:100%;overflow:hidden; background:rgba(255,255,255,0.5);border-bottom:0px #dddddd solid;z-index:2" id="headerla_'+rand+'"></div>';
 					obj.append(s);
 				}
 				var o1 = $('#headerla_'+rand+'');
@@ -308,14 +308,14 @@
 				o1.css({left:''+(off.left)+'px',top:''+(off.top)+'px',width:''+($('#tablemain_'+rand+'').width())+'px'});
 				if(o1.html()==''){
 					s = '';
-					s+='<table class="table table-striped table-bordered" style="margin:0px" width="100%">';
-					s+='<tr style="background:white"><th width="40"></th>';
-					if(can.checked)s+='<th width="40"></th>';
+					s+='<table class="rock-table table table-striped table-bordered" style="margin:0px" width="100%">';
+					s+='<tr><th width="40" class="rock-table-th"></th>';
+					if(can.checked)s+='<th width="40" class="rock-table-th"></th>';
 					for(i=0;i<len;i++){
 						o2 = obj.find("div[lfields='"+a[i].dataIndex+"']");
 						w1 = o2[0].clientWidth-1;
 						w1 = 'width:'+w1+'px';
-						s+='<th><div style="'+w1+'" align="'+a[i].align+'">'+o2.html()+'</div></th>';
+						s+='<th class="rock-table-th"><div style="'+w1+'" align="'+a[i].align+'">'+o2.html()+'</div></th>';
 					}
 					s+='</tr>';
 					s+='</table>';
@@ -339,8 +339,8 @@
 			$('#edittable_'+rand+'').remove();
 			if(b.editorbefore && !b.editorbefore(a))return;
 			if(!b.textmsg)b.textmsg='';
-			var s	= '<div id="edittable_'+rand+'" style="position:absolute;z-index:2;left:'+(l.left)+'px;top:'+(l.top+h)+'px">';
-			s+='<div style="border:1px #cccccc solid;background:white;padding:10px;box-shadow:0px 0px 10px rgba(0,0,0,0.3); border-radius:10px">';
+			var s	= '<div id="edittable_'+rand+'" style="position:absolute;z-index:2;left:'+(l.left)+'px;top:'+(l.top+h)+'px; background:white;border-radius:15px">';
+			s+='<div style="border:var(--border);background:var(--main-bgcolor);padding:10px;box-shadow:0px 0px 10px rgba(0,0,0,0.3);border-radius:10px">';
 			s+='	<div>&nbsp;<b>'+b.text+'</b>:&nbsp;<span id="msgteita_'+rand+'">'+b.textmsg+'</span></div>';
 			s+='	<div class="blank10"></div>';
 			var wss = 200;
@@ -555,7 +555,7 @@
 			this.page = p;
 			var o1 = $('#tablebody_'+rand+'');
 			var h= o1.height()-2,w= o1.width()-2;
-			s='<div id="modeshow_'+rand+'" style="filter:Alpha(opacity=20);opacity:0.2;height:'+h+'px;width:'+w+'px;overflow:hidden;z-index:3;position:absolute;left:1px;line-height:'+h+'px;top:1px;background:#000000;color:white" align="center"><img src="images/mloading.gif"  align="absmiddle">&nbsp;加载中...</div>';
+			s='<div id="modeshow_'+rand+'" style="height:'+h+'px;width:'+w+'px;overflow:hidden;z-index:3;position:absolute;left:1px;line-height:'+h+'px;top:1px;background:rgba(0,0,0,0.2);color:white" align="center">'+js.ling(20)+'&nbsp;加载中...</div>';
 			o1.append(s);
 			can.beforeload();
 			this.bool = true;
@@ -773,7 +773,7 @@
 		};
 		this._fanye	= function(){
 			var s = '';
-			s='<div style="margin-top:10px" class="btn-toolbar" role="toolbar">'+
+			s='<div style="margin-top:10px;display:flex;align-items:center;">'+
 				'<div class="btn-group">'+
 					'<button id="shouye_'+rand+'" type="button" data-toggle="tooltip" data-placement="top" title="首页"  class="btn btn-default">&laquo;</button>'+
 					'<button id="shang_'+rand+'" data-toggle="tooltip" data-placement="top" title="上一页" type="button" disabled class="btn btn-default">&lt;</button>'+
@@ -781,13 +781,13 @@
 					'<button id="next_'+rand+'" type="button" data-toggle="tooltip" data-placement="top" title="下一页" disabled class="btn btn-default">&gt;</button>'+
 					'<button id="lastye_'+rand+'" type="button" data-toggle="tooltip" data-placement="top" title="尾页" disabled class="btn btn-default">&raquo;</button>'+
 				'</div> '+ 
-				'<div class="btn-group">'+
+				'<div style="margin-left:10px">'+
 				'	 <button id="refresh_'+rand+'" type="button" data-toggle="tooltip" data-placement="top" title="刷新"  class="btn btn-default"><i class="icon-refresh"></i></button>'+ 
 				'</div> '+ 
-				'<div class="btn-group" id="bottomtishi_'+rand+'"></div>'+
-				'<div class="btn-group" style="float:right; padding-top:3px">'+
+				'<div style="flex:1;margin:0px 10px" id="bottomtishi_'+rand+'"></div>'+
+				'<div style="">'+
 					'<span>共记录<span id="zjilu_'+rand+'">0</span>条</span> &nbsp;'+ 
-					'每页<input maxlength="3" onblur="js.number(this)" onfocus="js.focusval=this.value" id="pagesize_'+rand+'" type="number" value="'+can.pageSize+'" style="width:40px;text-align:center;height:24px;border:1px #dddddd solid;margin:0px 2px;font-size:12px">条&nbsp;'+
+					'每页<input maxlength="3" onblur="js.number(this)" onfocus="js.focusval=this.value" id="pagesize_'+rand+'" type="number" value="'+can.pageSize+'" style="width:40px;text-align:center;height:24px;border:var(--border);margin:0px 2px;font-size:12px;border-radius:5px;background:var(--main-bgcolor)">条&nbsp;'+
 				'</div>'+
 			'</div>';
 
@@ -926,7 +926,7 @@
 		5、setparams({key:''},true);//设置参数并搜索
 		6、geturlparams();获取当前Url地址参数,订阅时用到的
 	*/
-	if(typeof(bootsSelectColor)!='string')bootsSelectColor= '';
+	if(typeof(bootsSelectColor)!='string')bootsSelectColor= 'rgba(0,0,0,0.1)';
 	$.fn.bootstable	= function(options){
 		var defaultVal = {
 			columns:[],		//表头

+ 5 - 5
mode/bootstrapplugin/jquery-bootstree.js

@@ -31,7 +31,7 @@
 				if(typeof(a.align)=='undefined')can.columns[i].align='center';
 				if(a.xtype=='treecolumn')can.columns[i].align='left';
 			}
-			s='<div style="position:relative;border:1px #dddddd solid;" class="bootstree" id="treebody_'+rand+'"></div>';
+			s='<div style="position:relative;border:var(--border);" class="bootstree" id="treebody_'+rand+'"></div>';
 			obj.html(s);
 		};
 		this._create	= function(){
@@ -42,7 +42,7 @@
 			this.changedata = false;
 			if(!can.hideHeaders){
 				s+='<div>';
-				s+='<ul style="border-bottom:1px #dedede solid;border-top-width:0px;margin:0">';
+				s+='<ul style="border-bottom:var(--border);border-top-width:0px;margin:0">';
 				if(can.checked)s+='<li style="width:40px;text-align:center"><input id="seltablecheck_'+rand+'" type="checkbox"></li>';
 				for(i=0;i<len;i++){
 					hs = '';
@@ -189,7 +189,7 @@
 			var h= obj.height()-2,
 			w= obj.width()-2,
 			s = '';
-			s='<div id="modeshow_'+rand+'" style="filter:Alpha(opacity=20);opacity:0.2;height:'+h+'px;width:'+w+'px;overflow:hidden;z-index:3;position:absolute;left:0px;line-height:'+h+'px;top:0px;background:#000000;color:white" align="center"><img src="images/mloading.gif"  align="absmiddle"></div>';
+			s='<div id="modeshow_'+rand+'" style="height:'+h+'px;width:'+w+'px;overflow:hidden;z-index:3;position:absolute;left:0px;line-height:'+h+'px;top:0px;background:rgba(0,0,0,0.1);color:#555555" align="center">'+js.ling(30)+'</div>';
 			$('#treebody_'+rand+'').append(s);
 			this.bool = true;
 			var parm = can.params;
@@ -257,10 +257,10 @@
 		};
 	};
 	
-	
+	if(typeof(bootsSelectColor)!='string')bootsSelectColor= 'rgba(0,0,0,0.1)';
 	$.fn.bootstree	= function(options){
 		var defaultVal = {
-			data:[],rand:'',columns:[],hideHeaders:false,selectColor:'#DFF0D8',method:'GET',
+			data:[],rand:'',columns:[],hideHeaders:false,selectColor:bootsSelectColor,method:'GET',
 			itemdblclick:function(){},checked:false,autoLoad:true,url:'',params:{},
 			itemclick:function(da, index, e){},load:function(){}
 		};

+ 9 - 10
mode/plugin/css/jquery-rockdatepicker.css

@@ -1,20 +1,19 @@
 /*时间选择器插件样式*/
-.rockdatepicker{z-index:9999;box-shadow:2px 2px 2px #cccccc;border:1px #cccccc solid; background-color:#ffffff; left:0px; top:0px; padding:0px}
+.rockdatepicker{z-index:9999;box-shadow:2px 2px 2px rgba(0,0,0,0.1);background:white; left:0px; top:0px; padding:0px;border:0.5px rgba(0,0,0,0.2) solid}
 .rockdatepicker td{cursor:pointer}
-.rockdatepicker td.td00:hover,.rockdatepicker td.td01{background:#dedede}
-.rockdatepicker_table td{border:1px #eeeeee solid;}
-.rockdatepicker .a{cursor:pointer;border:none;padding:2px 5px;color:#555555}
+.rockdatepicker td.td00:hover,.rockdatepicker td.td01{background:rgba(0,0,0,0.1)}
+.rockdatepicker_table td{border:var(--border);}
+.rockdatepicker .a{cursor:pointer;border:none;padding:2px 5px;}
 .rockdatepicker .a:hover{color:red}
 .rockdatepicker_span{padding:1px 3px;margin:0px 2px;}
 
-.rockdatepicker_fudong{ position:absolute;padding:2px;border:1px #cccccc solid;  background-color:#f8f8f8;z-index:2;box-shadow:2px 2px 2px #cccccc;overflow:auto}
+.rockdatepicker_fudong{ position:absolute;padding:2px;border:var(--border); background-color:var(--main-bgcolor);z-index:2;box-shadow:2px 2px 2px rgba(0,0,0,0.1);overflow:auto}
 .rockdatepicker_fudong div{padding:0px 5px;cursor:pointer;height:24px;overflow:hidden;line-height:24px}
-.rockdatepicker_fudong div:hover{background:#cccccc}
-.rockdatepicker_fudong .div01{background:#aaaaaa;color:white}
+.rockdatepicker_fudong div:hover{background:rgba(0,0,0,0.1)}
+.rockdatepicker_fudong .div01{background:rgba(0,0,0,0.2)}
 
-.rockdatepicker .a02:link,.rockdatepicker .a02:visited{padding:2px 5px;color:#555555}
-.rockdatepicker .a02:hover{color:#000000;background:#dddddd}
-.rockdatepicker .a03:link,.rockdatepicker .a03:visited{padding:2px 5px;color:#000000;background:#dddddd}
+.rockdatepicker .a02:link,.rockdatepicker .a02:visited{padding:2px 5px;color:inherit}
+.rockdatepicker .a03:link,.rockdatepicker .a03:visited{padding:2px 5px;background:rgba(0,0,0,0.2);color:inherit}
 
 .rockdatepicker .not:link,.rockdatepicker .not:visited,.rockdatepicker .not{color:#cccccc}
 .rockdatepicker .not:hover{background:#ffffff}

+ 14 - 14
mode/plugin/jquery-rockdatepicker.js

@@ -121,7 +121,7 @@
 			
 			var s= '',oi=0,w=270,h=278;
 			if(can.view!='time'){
-				s+='	<div style="background:#eeeeee;height:30px;overflow:hidden">';
+				s+='	<div style="background:rgba(0,0,0,0.3);height:30px;overflow:hidden">';
 				s+='	<table border="0" width="100%" cellspacing="0" cellpadding="0"><tr>';
 				s+='		<td style="padding:0px 4px" class="td00" tdaddclick="-y" title="上一年">〈<td>';
 				s+='		<td height="30" style="padding:0px 5px" nowrap><span class="rockdatepicker_span" id="rockdatepicker_year'+rand+'">2014</span>年<td>';
@@ -137,7 +137,7 @@
 				
 				s+='	<div style="height:188px;overflow:hidden" id="rockdatepicker_table'+rand+'" >';
 				s+='	<table border="0" class="rockdatepicker_table"  style="border-collapse:collapse" width="100%" cellspacing="0" cellpadding="0">';
-				s+='	<tr height="30" bgcolor="#dedede">';
+				s+='	<tr height="30" style="background:rgba(0,0,0,0.2)">';
 				for(var d=0; d<7; d++){
 					s+='<td align="center" width="14.28%">'+this.weekarr[d]+'</td>';
 				}
@@ -158,12 +158,12 @@
 				w = 220;h=200;
 			}
 			
-			s+='	<div style="line-height:30px">&nbsp; <font color="#888888">选择:</font><span id="rockdatepicker_span'+rand+'"></span>';
-			s+='		<span><input min="0" max="23" onfocus="js.focusval=this.value"  onblur="js.number(this)" id="rockdatepicker_input_h'+rand+'" style="width:24px;text-align:center;height:20px;line-height:16px;border:1px #cccccc solid;background:none" value="00" maxlength="2"></span>:';
-			s+='		<span><input min="0" max="59" onfocus="js.focusval=this.value"  onblur="js.number(this)" id="rockdatepicker_input_i'+rand+'" style="width:24px;text-align:center;height:20px;line-height:16px;border:1px #cccccc solid;background:none" value="00" maxlength="2"></span>:';
-			s+='		<span><input min="0" max="59" onfocus="js.focusval=this.value"  onblur="js.number(this)" id="rockdatepicker_input_s'+rand+'" style="width:24px;text-align:center;height:20px;line-height:16px;border:1px #cccccc solid;background:none" value="00" maxlength="2"></span>';
+			s+='	<div style="line-height:30px">&nbsp; 选择:<span id="rockdatepicker_span'+rand+'"></span>';
+			s+='		<span><input min="0" max="23" onfocus="js.focusval=this.value"  onblur="js.number(this)" id="rockdatepicker_input_h'+rand+'" style="width:24px;text-align:center;height:20px;line-height:16px;border:var(--border);background:none" value="00" maxlength="2"></span>:';
+			s+='		<span><input min="0" max="59" onfocus="js.focusval=this.value" onblur="js.number(this)" id="rockdatepicker_input_i'+rand+'" style="width:24px;text-align:center;height:20px;line-height:16px;border:var(--border);background:none" value="00" maxlength="2"></span>:';
+			s+='		<span><input min="0" max="59" onfocus="js.focusval=this.value"  onblur="js.number(this)" id="rockdatepicker_input_s'+rand+'" style="width:24px;text-align:center;height:20px;line-height:16px;border:var(--border);background:none" value="00" maxlength="2"></span>';
 			s+=		'</div>';
-			s+='	<div style="height:30px;overflow:hidden;text-align:right;background:#eeeeee;line-height:28px">';
+			s+='	<div style="height:30px;overflow:hidden;text-align:right;background:rgba(0,0,0,0.1);line-height:28px">';
 			s+='		<a href="javascript:;" class="a" id="rockdatepicker_clear'+rand+'">清空</a>&nbsp; ';
 			s+='		<a href="javascript:;" class="a" id="rockdatepicker_now'+rand+'">现在</a>&nbsp; ';
 			s+='		<a href="javascript:;" class="a" id="rockdatepicker_queding'+rand+'">确定</a>&nbsp; ';
@@ -172,7 +172,7 @@
 			
 			
 			var oac	= this.createbasic(w,h);
-			oac.html(s);
+			oac.html('<div style="background:var(--main-bgcolor)">'+s+'</div>');
 			
 			this.objtd	= oac.find("td[temp='nr']");
 			oac.find("td[tdaddclick]").click(function(){
@@ -493,7 +493,7 @@
 			var ma	= parseFloat(o1.attr('max'));
 			o.select();
 			$('#rockdatepicker_spanselfaei'+rand+'').remove();
-			var s='<div style="bottom:52px;position:absolute;right:1px;padding:2px;border:1px #cccccc solid;background-color:#ffffff;font-size:14px;text-align:left" id="rockdatepicker_spanselfaei'+rand+'">';
+			var s='<div style="bottom:52px;position:absolute;right:1px;padding:2px;background-color:var(--main-bgcolor);text-align:left;cursor:pointer;border:var(--border)" id="rockdatepicker_spanselfaei'+rand+'">';
 			this.inputhis=o;
 			for(var a=mi;a<=ma;a++){
 				var ai	= this.sa(a);
@@ -519,20 +519,20 @@
 			var oac	= this.createbasic(w,270);
 			var	s	= '';
 			s+='<table border="0" width="100%" id="rockdatepicker_table'+rand+'" cellspacing="0" cellpadding="0"><tr valign="top">';
-			s+=' <td width="'+w1+'"><div align="center" style="line-height:30px;background:#eeeeee"><a href="javascript:" id="rockdatepicker_yearshang'+rand+'" onclick="return false" class="a02">←</a>&nbsp; 年份&nbsp; <a href="javascript:" id="rockdatepicker_yearxia'+rand+'" onclick="return false" class="a02">→</a> </div><div id="rockdatepicker_yearlist'+rand+'" style="line-height:30px;height:180px;overflow:hidden" align="center"></div></td>';
+			s+=' <td width="'+w1+'"><div align="center" style="line-height:30px;background:rgba(0,0,0,0.3)"><a href="javascript:" id="rockdatepicker_yearshang'+rand+'" onclick="return false" class="a02">←</a>&nbsp; 年份&nbsp; <a href="javascript:" id="rockdatepicker_yearxia'+rand+'" onclick="return false" class="a02">→</a> </div><div id="rockdatepicker_yearlist'+rand+'" style="line-height:30px;height:180px;overflow:hidden" align="center"></div></td>';
 			if(lx == 1){
 				s+=' <td width="2" bgcolor="#cccccc"></td>';
-				s+=' <td width="109"><div align="center" style="line-height:30px;background:#eeeeee">月份</div><div id="rockdatepicker_monthlist'+rand+'" style="line-height:30px" align="center"></div></td>';
+				s+=' <td width="109"><div align="center" style="line-height:30px;background:rgba(0,0,0,0.3)">月份</div><div id="rockdatepicker_monthlist'+rand+'" style="line-height:30px" align="center"></div></td>';
 			}
 			s+='</tr></table>';
-			s+='<div style="line-height:30px">&nbsp; <font color="#888888">选择:</font><span id="rockdatepicker_span'+rand+'">'+this.now.Y+'-0'+this.now.d+'</span></div>';
-			s+='<div style="height:30px;overflow:hidden;text-align:right;background:#eeeeee;line-height:28px">';
+			s+='<div style="line-height:30px">&nbsp; 选择:<span id="rockdatepicker_span'+rand+'">'+this.now.Y+'-0'+this.now.d+'</span></div>';
+			s+='<div style="height:30px;overflow:hidden;text-align:right;background:rgba(0,0,0,0.2);line-height:28px">';
 			s+='	<a href="javascript:" onclick="return false" class="a" id="rockdatepicker_clear'+rand+'">清空</a>';
 			s+='	<a href="javascript:" onclick="return false" class="a" id="rockdatepicker_now'+rand+'">现在</a>';
 			s+='	<a href="javascript:" onclick="return false" class="a" id="rockdatepicker_queding'+rand+'">确定</a>';
 			s+='	<a href="javascript:" onclick="return false" class="a" id="rockdatepicker_close'+rand+'">关闭</a>';
 			s+='</div>';
-			oac.html(s);
+			oac.html('<div style="background:var(--main-bgcolor)">'+s+'</div>');
 			$('#rockdatepicker_close'+rand+'').click(function(){
 				me.hidemenu();
 			});

+ 2 - 2
mode/plugin/jquery-rockmodels.js

@@ -15,10 +15,10 @@
 		js.msg('none');
 		if(!fun)fun=function(){};
 		if(lx=='none')return;
-		var s = '<div id="rockmodelmsg" onclick="$(this).remove()" align="center" style="position:fixed;left:45%;top:30%;z-index:9999;border-radius:10px; background:rgba(0,0,0,0.7);color:white;font-size:18px;min-width:80px"><div style="padding:30px;">';
+		var s = '<div id="rockmodelmsg" onclick="$(this).remove()" align="center" style="position:fixed;left:45%;top:30%;z-index:9999;border-radius:10px; background:rgba(0,0,0,0.5);color:white;min-width:80px"><div style="padding:30px;">';
 		if(lx=='wait'){
 			if(!txt)txt='处理中...';
-			s+='<div><img src="images/mloading.gif"></div>';
+			s+='<div><i style="height:35px;width:35px" class="rock-loading"></i></div>';
 			s+='<div style="padding-top:5px">'+txt+'</div>';
 			if(!sj)sj= 60;
 		}

+ 2 - 3
web/res/css/chat.css

@@ -29,12 +29,11 @@
 	margin-top:5px;
 	border-width:8px;
     border-style:solid;
-    border-color:transparent #e5e5e5 transparent transparent;
+    border-color:transparent rgba(0,0,0,0.05) transparent transparent;
 	z-index:1;
 }
 .qipao .qipaocontleft{
-	background:#e5e5e5;
-	border:0px #e5e5e5 solid;
+	background:rgba(0,0,0,0.05);
 }
 
 

+ 53 - 14
web/res/css/webimcss.css

@@ -1,6 +1,18 @@
-*{font-family:微软雅黑,Verdana, Geneva, sans-serif;list-style-type:none;padding:0px;margin:0px;word-wrap:break-word;word-break:break-all;}
-body{color:#000000;margin:0px;border:0;font-size:14px;}
-body{--main-color:#1389D3}
+*{font-family:Verdana, Geneva, sans-serif;list-style-type:none;padding:0px;margin:0px;word-wrap:break-word;word-break:break-all;}
+
+body{
+	--main-color:#1389D3;
+	--font-size:14px;
+	--border:0.5px rgba(0,0,0,0.1) solid;
+	--main-bgcolor:white;
+	--main-hgcolor:white;
+	--main-border:rgba(0,0,0,0.1);
+	--rgb-r:0;
+	--rgb-g:0;
+	--rgb-b:0;
+}
+
+body{color:#000000;margin:0px;border:0;font-size:var(--font-size);}
 a,.cursor{cursor:pointer;}
 p{text-indent:24pt; margin:5px 0px}
 input,textarea,a,button{resize: none;outline:none}
@@ -31,7 +43,7 @@ a.a:hover{TEXT-DECORATION:underline;color:red;}
 a.white:link,a.white:visited{color:white;TEXT-DECORATION:none;}
 a.white:hover{TEXT-DECORATION:underline;color:white;}
 
-.blank1{ height:1px; overflow:hidden; border-bottom:1px #dddddd solid}
+.blank1{ height:1px; overflow:hidden; border-bottom:var(--border)}
 .blank10{ height:10px; overflow:hidden}
 .blank20{ height:20px; overflow:hidden;line-height:20px}
 .blank5{ height:5px; overflow:hidden}
@@ -43,7 +55,7 @@ ul,li,a{ list-style-type:none}
 .h2{ font-size:20px;font-weight:bold;}
 
 
-.inputs{height:28px; line-height:24px; border:1px #cccccc solid;padding:0px 2px; overflow:hidden;}
+.inputs{height:28px; line-height:24px; border:var(--border);padding:0px 2px; overflow:hidden;}
 input.checkbox,input.radio{ border:none;padding:0;margin-right:5px; width:16px; height:16px}
 .icons{ height:16px; width:16px; padding-right:3px}
 .icons:hover{box-shadow:0px 0px 5px rgba(0,0,0,0.3);}
@@ -51,7 +63,7 @@ input.checkbox,input.radio{ border:none;padding:0;margin-right:5px; width:16px;
 .barinput{padding:0px 2px;width:150px;height:23px}
 .icon{ height:16px; width:16px;margin-right:5px}
 
-.input,.select,.textarea{height:30px; line-height:28px; border:1px #cccccc solid; padding:0px 5px;font-size:14px;}
+.input,.select,.textarea{height:30px; line-height:28px; border:var(--border); padding:0px 5px;font-size:14px;}
 .input:focus{box-shadow:0px 0px 5px rgba(0,0,0,0.3); border:1px #1389D3 solid; border:1px var(--main-color) solid;color:#000000}
 
 .btn{height:30px;line-height:30px; background-color:#1389D3; background-color:var(--main-color);border:none;color:#f1f1f1;padding:0px 20px; cursor:pointer;opacity:0.9;border-radius:5px;}
@@ -61,7 +73,7 @@ input.checkbox,input.radio{ border:none;padding:0;margin-right:5px; width:16px;
 
 .webbtn:link,.webbtn:visited,.webbtn{color:#f1f1f1; opacity:1;background-color:#1389D3;background-color:var(--main-color); padding:3px 8px; border:none; cursor:pointer}
 .webbtn:hover{opacity:0.8;color:#ffffff;}
-
+.box{box-shadow:0px 0px 5px rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.3);}
 
 
 .alert{ padding:3px 10px; border-radius:0px; text-align:center; }
@@ -69,7 +81,7 @@ input.checkbox,input.radio{ border:none;padding:0;margin-right:5px; width:16px;
 .alert_success{ background-color:#e3f6d1;border:0px #78b146 solid;color:green}
 .alert_wait{ background-color:#f8f8f8;border:0px #cccccc solid;color:#555555}
 
-.title{height:40px;line-height:40px;overflow:hidden;font-size:14px;text-align:left;border-bottom:1px #cccccc solid;color:#55555;font-weight:bold; background-color:#545e6a}
+.title{height:40px;line-height:40px;overflow:hidden;text-align:left;border-bottom:var(--border);color:#55555;font-weight:bold; background-color:#545e6a}
 .title li{height:40px;line-height:40px;float:left; }
 .title li.more{text-align:right;float:right;font-size:12px;font-weight:100}
 
@@ -103,8 +115,8 @@ input.checkbox,input.radio{ border:none;padding:0;margin-right:5px; width:16px;
 .msousou::-moz-input-placeholder{color:#dddddd}
 .msousou:focus{background-color:white;color:#333333;-webkit-animation:mymove 0.3s;-moz-animation:mymove 0.3s;width:170px;}
 
-.lists{padding:8px; border-bottom:0px #f1f1f1 solid;cursor:pointer;}
-.lists img{height:30px;width:30px;border-radius:5px}
+.lists{padding:10px;cursor:pointer;}
+.lists img,.lists .img{height:30px;width:30px;border-radius:5px;overflow:hidden}
 .lists .close{position:absolute;right:3px;top:5px;display:none;color:#aaaaaa}
 .lists .bqs{position:absolute;right:3px;top:5px;}
 .lists.active{background-color:rgba(0,0,0,0.1)}
@@ -112,16 +124,16 @@ input.checkbox,input.radio{ border:none;padding:0;margin-right:5px; width:16px;
 .lists:hover .close{display:block}
 .lists:hover .bqs{display:none}
 
-.lists .name{height:24px;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:135px;}
+.lists .name{height:24px;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
 .huicont{color:#888888;font-size:12px;height:20px;line-height:20px; overflow:hidden;word-wrap:break-word;word-break:break-all;white-space:normal;}
 
 
 
-.content{width:100%;height:100%;border:none;overflow:auto;padding:0px;font-size:14px;}
+.content{width:100%;height:100%;border:none;overflow:auto;padding:0px;color:inherit}
 .content:focus{border:0px #dddddd solid}
 
 .chattitbtn{color:#aaaaaa;cursor:pointer}
-.toolsliao{height:34px; background-color:#ecf5fc;overflow:hidden;border-top:#dddddd solid 1px;color:#aaaaaa;line-height:34px;font-size:16px;padding:0px 10px}
+.toolsliao{height:34px;overflow:hidden;border-top:var(--border);color:#aaaaaa;line-height:34px;font-size:16px;padding:0px 10px}
 .toolsliao span{margin-right:10px}
 .toolsliao span:hover,.chattitbtn:hover{color:#1389D3;color:var(--main-color)}
 
@@ -157,4 +169,31 @@ input.checkbox,input.radio{ border:none;padding:0;margin-right:5px; width:16px;
 .lefticons{position:relative;line-height:50px;height:50px;overflow:hidden;font-size:20px;color:#cccccc}
 .lefticons span{position:absolute;right:1px;top:1px}
 
-.showblanks{padding:10px;color:#aaaaaa;font-size:12px;text-align:center}
+.showblanks{padding:10px;color:#aaaaaa;font-size:12px;text-align:center}
+
+.rock-loading {
+  display: inline-block;
+  height:16px;
+  width:16px;
+  vertical-align: middle;
+  -webkit-mask: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A") 0 0 no-repeat;
+  mask-size: cover;
+  -webkit-mask-size: cover;
+  mask-size: cover;
+  background-color: currentColor;
+}
+
+::-webkit-scrollbar{
+  width: 8px;
+  height: 8px;
+  background-color: transparent;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 5px;
+  background-color: rgba(0, 0, 0, 0.2);
+}
+
+::-webkit-scrollbar-track:hover {
+  background-color: rgba(0, 0, 0, 0.1);
+  border-radius: 5px;
+}

+ 12 - 12
web/res/js/jquery-changeuser.js

@@ -9,7 +9,7 @@
 (function ($) {
 	
 	function _getstyles(){
-		var s='<style>.changeuserlist div.listsss{padding:10px; background:white;border-bottom:1px #eeeeee solid;cursor:default}.changeuserlist td{color:#333333}.changeuserlist div:active{ background:#f1f1f1}.changeuserbotton{height:30px;width:50px; background:#d9534f;color:white;font-size:14px;border:none;padding:0px;margin:0px;line-height:20px;cursor:default;opacity:1;outline:none;border-radius:5px}.changeuserbotton:active{color:white;border:none;opacity:0.8}.changeuserxuan span{background:white;border:1px #cccccc solid;padding:3px;border-radius:5px;font-size:12px;margin-left:5px;cursor:pointer}</style>';
+		var s='<style>.changeuserlist div.listsss{padding:10px; background:white;border-bottom:var(--border);cursor:default}.changeuserlist td{color:#333333}.changeuserlist div:active{ background:rgba(0,0,0,0.1)}.changeuserbotton{height:30px;width:50px; background:#d9534f;color:white;border:none;padding:0px;margin:0px;line-height:20px;cursor:default;opacity:1;outline:none;border-radius:5px}.changeuserbotton:active{color:white;border:none;opacity:0.8}.changeuserxuan span{background:white;border:var(--border);padding:3px;border-radius:5px;font-size:12px;margin-left:5px;cursor:pointer;color:black}</style>';
 		return s;
 	}
 	
@@ -59,13 +59,13 @@
 				hei = $('#'+this.showview+'').height();
 				atts='';
 			}
-			var s='<div style="'+atts+'z-index:100;width:100%;height:100%;overflow:hidden;left:0px;top:0px; background:white" id="changeuser_'+rand+'">';
+			var s='<div style="'+atts+'z-index:100;width:100%;height:100%;overflow:hidden;left:0px;top:0px; background:white;border-radius:0px 0px 5px 5px" id="changeuser_'+rand+'">';
 			if(this.titlebool){
-				s+='<div style="height:50px;line-height:50px;text-align:center; background:white;border-bottom:1px #cccccc solid"><b>'+this.title+'</b></div>';
+				s+='<div style="height:50px;line-height:50px;text-align:center; background:white;border-bottom:var(--border)"><b>'+this.title+'</b></div>';
 				jhei+=50;
 			}
 			if(this.changetype.indexOf('user')>=0){
-				s+='<div style="height:50px;overflow:hidden;border-bottom:1px #cccccc solid"><table width="100%" style="background:none"><tr><td width="100%" height="50" style="background:none"><input id="changekey_'+this.rand+'" placeholder="部门/姓名/职位" style="height:30px;border:none;background:none;width:100%;margin:0px 10px;outline:none"></td><td><button style="background:none;border:none;color:#666666" class="changeuserbotton" id="changesoubtn_'+this.rand+'" type="button" >查找</button></td></tr></table></div>';
+				s+='<div style="height:50px;overflow:hidden;border-bottom:var(--border)"><table width="100%" style="background:none"><tr><td width="100%" height="50" style="background:none"><input id="changekey_'+this.rand+'" placeholder="部门/姓名/职位" style="height:30px;border:none;background:none;width:100%;margin:0px 10px;outline:none;color:black"></td><td><button style="background:none;border:none;color:#666666" class="changeuserbotton" id="changesoubtn_'+this.rand+'" type="button" >查找</button></td></tr></table></div>';
 				jhei+=50;
 			}
 			s+='<div style="-webkit-overflow-scrolling:touch;height:'+(hei-jhei)+'px;overflow:auto; background:#f1f1f1" class="changeuserlist">';
@@ -83,10 +83,10 @@
 				s3+='</select>';
 			}
 			if(type=='checkbox'){
-				s+='<div class="changeuserxuan" style="padding:5px;border-right:1px #cccccc solid;border-top:1px #cccccc solid;line-height:30px;position:absolute;bottom:49px;background:white;"><font style="cursor:pointer" id="yixuanbtn_'+rand+'">∨</font><font id="yixuan_'+rand+'"></font></div>';
+				s+='<div class="changeuserxuan" style="padding:5px;border-right:var(--border);border-top:var(--border);line-height:30px;position:absolute;bottom:49px;background:white;color:black;"><font style="cursor:pointer" id="yixuanbtn_'+rand+'">∨</font><font id="yixuan_'+rand+'"></font></div>';
 			}
 			var cold = window['maincolor'];if(!cold)cold='#1389D3';
-			s+='<div style="height:50px;line-height:50px;border-top:1px #cccccc solid" align="right"><table width="100%" style="background:none"><tr><td width="10" nowrap>&nbsp;</td><td width="80%">'+s3+'</td><td><button style="width:70px;border:none" type="button" id="changereload_'+rand+'" class="changeuserbotton" >刷新数据</button></td><td width="10" nowrap>&nbsp;</td><td><button class="changeuserbotton" type="button" id="changecancl_'+rand+'" >取消</button></td><td width="10" nowrap>&nbsp;</td><td height="50"><button style="background:'+cold+';" id="changeok_'+rand+'" type="button" class="changeuserbotton">确定</button></td><td width="10" nowrap>&nbsp;</td></tr></table></div>';
+			s+='<div style="height:50px;line-height:50px;border-top:var(--border)" align="right"><table width="100%" style="background:none"><tr><td width="10" nowrap>&nbsp;</td><td width="80%">'+s3+'</td><td><button style="width:70px;border:none" type="button" id="changereload_'+rand+'" class="changeuserbotton" >刷新数据</button></td><td width="10" nowrap>&nbsp;</td><td><button class="changeuserbotton" type="button" id="changecancl_'+rand+'" >取消</button></td><td width="10" nowrap>&nbsp;</td><td height="50"><button style="background:'+cold+';" id="changeok_'+rand+'" type="button" class="changeuserbotton">确定</button></td><td width="10" nowrap>&nbsp;</td></tr></table></div>';
 			s+=_getstyles();
 			s+='</div>';
 			if(atts==''){
@@ -379,7 +379,7 @@
 		
 		this._loaddata=function(){
 			var o1 = $('#showdiv'+rand+'_0'),url;
-			o1.html('<div align="center" style="padding:30px"><img src="images/mloading.gif"></div>');
+			o1.html('<div align="center" style="padding:30px;color:#333333">'+js.ling(30)+'</div>');
 			var url = 'index.php?a=deptuserjson&m=dept&d=system&ajaxbool=true&changerange='+this.changerange+'&changerangeno='+this.changerangeno+'&gtype=change';
 			$.getJSON(url, function(ret){
 				if(ret.code==200){
@@ -469,11 +469,11 @@
 			if(this.ismobile)ws='90%';
 			var cold = window['maincolor'];if(!cold)cold='#1389D3';
 			var s='<div style="width:100%;height:100%;overflow:hidden;left:0px;top:0px; background:rgba(0,0,0,0.3);position:fixed;z-index:11" id="selectdata_'+rand+'">';
-			s+='<div tsid="main" id="mints_'+rand+'" style="position:absolute;top:30%; background:white;width:'+ws+';box-shadow:0px 0px 10px rgba(0,0,0,0.3);border-radius:5px">';
-			s+='	<div onmousedown="js.move(\'mints_'+rand+'\')" style="line-height:50px;color:'+cold+';font-size:16px;border-bottom:1px #eeeeee solid;font-weight:bold;"> &nbsp; &nbsp;'+this.title+'</div>';
-			s+='	<div style="height:40px;overflow:hidden;border-bottom:1px #cccccc solid;"><table width="100%" style="background:none"><tr><td><select id="selxuan_'+this.rand+'" style="width:120px;border:none;background:none;display:none"><option value="">选择所有</option></select></td><td width="100%" height="40"><input id="changekey_'+this.rand+'" placeholder="搜索关键词" style="height:30px;border:none;background:none;width:100%;margin:0px 10px;outline:none"></td><td><button style="background:none;color:#666666;" class="changeuserbotton" id="changesoubtn_'+this.rand+'" type="button" >查找</button></td></tr></table></div>';
+			s+='<div tsid="main" id="mints_'+rand+'" style="position:absolute;top:30%; background:white;width:'+ws+';box-shadow:0px 0px 10px rgba(0,0,0,0.3);border-radius:5px;color:black">';
+			s+='	<div onmousedown="js.move(\'mints_'+rand+'\')" style="line-height:50px;color:'+cold+';font-size:16px;border-bottom:var(--border);font-weight:bold;"> &nbsp; &nbsp;'+this.title+'</div>';
+			s+='	<div style="height:40px;overflow:hidden;border-bottom:var(--border);"><table width="100%" style="background:none"><tr><td><select id="selxuan_'+this.rand+'" style="width:120px;border:none;background:none;display:none"><option value="">选择所有</option></select></td><td width="100%" height="40"><input id="changekey_'+this.rand+'" placeholder="搜索关键词" style="height:30px;border:none;background:none;width:100%;margin:0px 10px;outline:none;color:black"></td><td><button style="background:none;color:#666666;" class="changeuserbotton" id="changesoubtn_'+this.rand+'" type="button" >查找</button></td></tr></table></div>';
 			s+='	<div style="-webkit-overflow-scrolling:touch;height:300px;overflow:auto; background:#f1f1f1" id="selectlist_'+rand+'" class="changeuserlist"></div>';
-			s+='	<div style="height:50px;line-height:50px;border-top:1px #cccccc solid;" align="right"><table width="100%" style="background:none"><tr><td width="10" nowrap>&nbsp;</td><td width="80%"><font color="#888888" tsid="count"></font></td><td><button type="button" id="changereload_'+rand+'" class="changeuserbotton">刷新</button></td><td width="10" nowrap>&nbsp;</td><td><button class="changeuserbotton" type="button" id="changecancl_'+rand+'">取消</button></td><td width="10" nowrap>&nbsp;</td><td height="50"><button style="background:'+cold+';" id="changeok_'+rand+'" type="button" class="changeuserbotton">确定</button></td><td width="10" nowrap>&nbsp;</td></tr></table></div>';
+			s+='	<div style="height:50px;line-height:50px;border-top:var(--border);" align="right"><table width="100%" style="background:none"><tr><td width="10" nowrap>&nbsp;</td><td width="80%"><font color="#888888" tsid="count"></font></td><td><button type="button" id="changereload_'+rand+'" class="changeuserbotton">刷新</button></td><td width="10" nowrap>&nbsp;</td><td><button class="changeuserbotton" type="button" id="changecancl_'+rand+'">取消</button></td><td width="10" nowrap>&nbsp;</td><td height="50"><button style="background:'+cold+';" id="changeok_'+rand+'" type="button" class="changeuserbotton">确定</button></td><td width="10" nowrap>&nbsp;</td></tr></table></div>';
 			s+='</div>';
 			s+='</div>';
 			s+=_getstyles();
@@ -637,7 +637,7 @@
 			if(url=='')return;
 			url+='&page='+this.page+'';
 			url+='&limit='+this.maxshow+'';
-			$('#selectlist_'+rand+'').html('<div align="center" style="margin-top:30px"><img src="images/mloading.gif"></div>');
+			$('#selectlist_'+rand+'').html('<div align="center" style="margin-top:30px;color:#333333">'+js.ling(30)+'</div>');
 			$.ajax({
 				type:'get',dataType:'json',url:url,
 				success:function(ret){

+ 23 - 20
web/res/js/notification.html

@@ -8,7 +8,7 @@
 <style>
 body,html{padding:0px;margin:0px;font-size:14px}
 .close{height:20px;width:20px;display:block;text-align:center;line-height:18px;cursor:pointer;font-size:16px}
-.close:hover{background:#ff1118;color:white}
+.close:hover{background:#ff1118;color:white;border-radius:10px}
 table {
   border-spacing: 0;
   border-collapse: collapse;
@@ -17,7 +17,7 @@ table {
 <script>
 $(document).ready(function(){
 	winobj = nw.Window.get();
-	winobj.moveTo(screen.width-355,screen.height-170);
+	winobj.moveTo(screen.width-360,screen.height-150);
 	winobj.show();
 	var nr = localStorage.getItem('xinhuoa_notification');
 	if(nr){
@@ -39,25 +39,28 @@ function clickbody(){
 }
 </script>
 </head>
-<body style="overflow:hidden;cursor:pointer" >
-<div style="position:absolute;right:2px;top:2px;-webkit-app-region:no-drag;z-index:5">
-<span onclick="winclose();" title="关闭" class="close">×</span>
-</div>
-<div style="height:10px"></div>
-<table border="0" style="margin:0px 8px" onclick="clickbody()">
-<tr valign="top">
-<td>
-<div style="width:80px;height:80px;overflow:hidden;margin:5px" align="center">
-<img src="../../../images/logo.png" id="logodiv" height="80px" width="80px">
-</div>
-</td>
-<td style="padding-left:5px">
-<div id="titlediv" style="font-size:16px;font-size:bold;line-height:20px;height:20px;overflow:hidden;margin-top:12px"></div>
-<div id="messdiv" style="font-size:14px;color:gray;line-height:20px;height:40px;overflow:hidden;margin-top:8px"></div>
-</td>
-</tr>
-</table>
+<body style="overflow:hidden;cursor:pointer; " >
+<div style="border-radius:10px;background:white;border:rgba(0,0,0,0.1) 0.5px solid;margin:1px;box-shadow:0px 5px 10px 1px rgba(0,0,0,0.05);margin:5px">
+	<div style="padding:8px">
+	<div style="position:absolute;right:8px;top:7px;-webkit-app-region:no-drag;z-index:5">
+	<span onclick="winclose();" class="close">×</span>
+	</div>
+	<table border="0" width="100%" onclick="clickbody()">
+	<tr valign="top">
+	<td width="60px">
+	<div style="width:70px;height:70px;overflow:hidden;margin:5px" align="center">
+	<img src="../../../images/logo.png" style="border-radius:10px;" id="logodiv" height="70px" width="70px">
+	</div>
+	</td>
+	<td style="padding-left:5px" align="left">
+	<div id="titlediv" style="font-size:16px;font-size:bold;line-height:20px;height:20px;overflow:hidden;margin-top:10px"></div>
+	<div id="messdiv" style="font-size:14px;color:gray;line-height:18px;height:40px;overflow:hidden;margin-top:5px"></div>
+	</td>
+	</tr>
+	</table>
 
 
+	</div>
+</div>
 </body>
 </html>

+ 1 - 1
web/res/js/notify.js

@@ -76,7 +76,7 @@ function notifyClass(opts){
 			this.close();
 			var url =NOWURL+'web/res/js/notification.html?'+Math.random()+'';
 			localStorage.setItem('xinhuoa_notification', JSON.stringify({icon:can.icon,title:can.title,body:can.body}));
-			var canss={"frame": false,title:"消息提醒","width": 350,resizable:false,'always_on_top':true,show:false,"height": 110,"show_in_taskbar":false}
+			var canss={"frame": false,title:"消息提醒","width": 350,resizable:false,'always_on_top':true,show:false,"height": 110,"show_in_taskbar":false,"transparent":true}
 			nw.Window.open(url,canss,function(wis){
 				me.notification = wis;
 				wis.on('close',function(){

+ 3 - 3
web/res/mode/calendar/jquery-rockcalendar.js

@@ -74,7 +74,7 @@
 				s+='<tr>';
 				for(var i=0;i<7;i++){
 					x++;
-					s+='<td align="'+can.align+'" height="'+(h/6)+'px" valign="'+can.valign+'" width="'+w+'%" class="tdtext" id="calcontabc'+x+'_'+id+'" temp="'+x+'"></td>';
+					s+='<td align="'+can.align+'" height="'+((h/6)-2)+'px" valign="'+can.valign+'" width="'+w+'%" class="tdtext" id="calcontabc'+x+'_'+id+'" temp="'+x+'"></td>';
 				}
 				s+='</tr>';
 			} 
@@ -413,10 +413,10 @@
 			this.changemonth(a[0], a[1]);
 		}
 	}
-
+	if(typeof(bootsSelectColor)!='string')bootsSelectColor= 'rgba(0,0,0,0.1)';
 	$.fn.rockcalendar = function(options){
 		var defaultVal = {
-			height:400,selbgcolor:'#D3FFF6',month:'',
+			height:400,selbgcolor:bootsSelectColor,month:'',
 			fillot:true,renderer:function(){return ''},align:'left',valign:'top',
 			changemonth:function(){},boofan:true,onclick:function(){},jierixiuxi:'',jierishangban:'',headerbgcolor:'',
 			bordercolor:'',

+ 19 - 13
web/res/mode/menu/jquery-rockmenu.css

@@ -1,22 +1,28 @@
-.rockmenu{ position:absolute;display:none; z-index:9999}
-.rockmenuli{border:1px #eeeeee solid;
- background-color:#ffffff; left:0px; top:0px; background:rgba(255,255,255,0.9);
- box-shadow:0px 0px 5px rgba(0,0,0,0.3);color:#555555
+.rockmenu{ position:absolute;display:none; z-index:9999;background:white;border-radius:5px}
+.rockmenuli{
+	border:var(--border);left:0px; top:0px; 
+	background:var(--main-bgcolor);
+	box-shadow:0px 0px 5px rgba(0,0,0,0.3);
+	box-shadow:0px 0px 5px rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.3);
+	border-radius:5px;
 }
 .rockmenulijt{ padding:0px; text-align:center}
 .rockmenu ul{padding:0px;margin:0px}
-.rockmenu li{ list-style-type:none; padding:8px 12px; cursor:pointer; text-align:left; border-bottom:1px #eeeeee dotted;}
-.rockmenu li.li01{ background-color:#eeeeee;}
+.rockmenu li{ list-style-type:none; padding:10px 12px; cursor:pointer; text-align:left; border-bottom:var(--border);}
+.rockmenu li.li01{ 
+	background-color:rgba(0,0,0,0.05);
+	background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.05);
+}
 .rockmenu li span{ font-size:10px; }
 .rockmenu li.li01 span{}
 .rockmenuli li img.iconsa{ vertical-align:middle; width:16px; height:16px; margin-right:8px}
 
 .rockmenu .arrow-up{
-width: 0;
-height: 0;
-border-left: 10px solid transparent; /* 左边框的宽 */
-border-right: 10px solid transparent; /* 右边框的宽 */
-border-bottom: 10px solid #cccccc; /* 下边框的长度|高,以及背景色 */
-font-size: 0;
-line-height: 0;
+	width: 0;
+	height: 0;
+	border-left: 10px solid transparent; /* 左边框的宽 */
+	border-right: 10px solid transparent; /* 右边框的宽 */
+	border-bottom: 10px solid #cccccc; /* 下边框的长度|高,以及背景色 */
+	font-size: 0;
+	line-height: 0;
 } 

+ 2 - 2
web/res/mode/menu/jquery-rockmenu.js

@@ -44,8 +44,8 @@ var rockmenuobj	= null;
 			}
 			var len	= json.length;
 			var str	= '<div class="rockmenu" id="rockmenu_'+rand+'">';
-			if(can.arrowup)str+='<div class="arrow-up"></div>';
-			str+='<div style="background:'+can.background+';"  id="rockmenuli_'+rand+'" class="rockmenuli '+can.maincls+'"><ul>';
+			//if(can.arrowup)str+='<div class="arrow-up"></div>';
+			str+='<div id="rockmenuli_'+rand+'" class="rockmenuli '+can.maincls+'"><ul>';
 			var s	= '',ys='',col,va;
 			for(var i=0; i<len; i++){
 				ys= '',

+ 45 - 6
webmain/css/css.css

@@ -1,10 +1,22 @@
-*{font-family:微软雅黑,Verdana, Geneva, sans-serif;padding:0px;margin:0px;}
+*{font-family:Verdana, Geneva, sans-serif;padding:0px;margin:0px;}
 html{
 	font-family: sans-serif;
 }
 button,.cursor{cursor:pointer}
 body{
-	font-size:14px; background-color:white;--main-color:#1389D3;--main-border:#888888
+	--main-color:#1389D3;
+	--font-size:14px;
+	--border:0.5px rgba(0,0,0,0.1) solid;
+	--main-bgcolor:white;
+	--main-hgcolor:white;
+	--main-border:rgba(0,0,0,0.1);
+	--rgb-r:0;
+	--rgb-g:0;
+	--rgb-b:0;
+}
+body{
+	font-size:var(--font-size); 
+	background-color:white;
 }
 table {
   border-spacing: 0;
@@ -71,14 +83,14 @@ a.white:link,a.white:visited{color:white;}
 
 .box{box-shadow:0px 0px 5px rgba(0,0,0,0.3); border:1px var(--main-color) solid; }
 
-.inputs{height:28px;line-height:24px; border:1px #cccccc solid;padding:0px 2px; overflow:hidden;}
+.inputs{height:28px;line-height:24px; border:1px #cccccc solid;border:var(--border);padding:0px 2px; overflow:hidden;}
 .btn{width:100%;height:44px;line-height:44px;opacity:0.8; background-color:#1389D3; background-color:var(--main-color);border:none;color:white;font-size:14px; cursor:pointer}
 .btn:active,.btn:hover{opacity:1;color:white;TEXT-DECORATION:none;}
 .btn:disabled{ background-color:#cccccc;color:#888888}
 a.btn{padding:5px 8px}
 
-.input{ height:34px; line-height:30px; border:1px #cccccc solid;padding:0px 5px; overflow:hidden; border-radius:0px}
-.select{border-radius:0px; background-color:#ffffff;border:1px #cccccc solid; height:34px; line-height:30px}
+.input{ height:34px; line-height:30px; border:1px #cccccc solid;border:var(--border);padding:0px 5px; overflow:hidden; border-radius:0px}
+.select{border-radius:0px; background-color:#ffffff;border:1px #cccccc solid;border:var(--border); height:34px; line-height:30px}
 .textarea{height:100px; width:97%;padding:5px;border-radius:0px; border:1px #cccccc solid;}
 .input:hover,.inputs:hover,.textarea:hover,.select:hover,.input_hover,.textareas,.input:focus,.inputs:focus,.textarea:focus{box-shadow:0px 0px 5px rgba(0,0,0,0.3); border:1px #1389D3 solid; border:1px var(--main-color) solid; color:#000000}
 
@@ -102,4 +114,31 @@ a.webbtn:link,a.webbtn:visited,.webbtn{color:#ffffff; background-color:#1389D3;b
 .r-tabs .r-tabs-item:not(:first-child):not(:last-child){border-radius:0}
 .r-tabs .r-tabs-item.r-tabs-item.active{color:#1389D3;color:var(--main-color);}
 
-.list-itemv:hover{color:var(--main-color);cursor:pointer}
+.list-itemv:hover{color:var(--main-color);cursor:pointer}
+
+.rock-loading {
+  display: inline-block;
+  height:16px;
+  width:16px;
+  vertical-align: middle;
+  -webkit-mask: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A") 0 0 no-repeat;
+  mask-size: cover;
+  -webkit-mask-size: cover;
+  mask-size: cover;
+  background-color: currentColor;
+}
+
+::-webkit-scrollbar{
+  width: 8px;
+  height: 8px;
+  background-color: transparent;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 5px;
+  background-color: rgba(0, 0, 0, 0.2);
+}
+
+::-webkit-scrollbar-track:hover {
+  background-color: rgba(0, 0, 0, 0.1);
+  border-radius: 5px;
+}

+ 25 - 13
webmain/css/cssm.css

@@ -1,16 +1,28 @@
 @charset "UTF-8";
 
-*{font-family:微软雅黑,Verdana, Geneva, sans-serif;list-style-type:none;padding:0px;margin:0px;}
+*{font-family:Verdana, Geneva, sans-serif;list-style-type:none;padding:0px;margin:0px;-webkit-tap-highlight-color: transparent;}
 
 html{
 	font-family: sans-serif;
 }
-body{--main-color:#1389D3;color:#000000;margin:0px;border:0;font-size:14px; background-color:white}
+body{
+	--main-color:#1389D3;
+	--font-size:14px;
+	--border:0.5px rgba(0,0,0,0.1) solid;
+	--main-bgcolor:white;
+	--main-hgcolor:rgba(0,0,0,0.15);
+	--main-vgcolor:rgba(0,0,0,0.1);
+	--main-border:rgba(0,0,0,0.1);
+	--rgb-r:0;
+	--rgb-g:0;
+	--rgb-b:0;
+}
+body{color:#000000;margin:0px;border:0;font-size:var(--font-size); background-color:white}
 .mbody{background-color: #f1f1f1;}
-td,button{ font-size:14px}
+td,button{ font-size:var(--font-size)}
 a,.cursor{cursor:pointer;}
 p{text-indent:24pt; margin:12px 0px;line-height:25px}
-input,textarea,select,button{resize: none;outline:none;font-size:14px;}
+input,textarea,select,button{resize: none;outline:none;font-size:var(--font-size);}
 .zhu{ color:#1389D3;color:var(--main-color)}
 .hui{ color:#888888}
 .red{ color:#ff0000}
@@ -47,21 +59,21 @@ ul,li,a{ list-style-type:none}
 .h1{ font-size:24px;font-weight:bold;}
 .h2{ font-size:20px;font-weight:bold;}
 
-.input,.inputs,.textarea{height:30px;line-height:25px;background-color:white;padding:2px;width:95%;border:0.5px #dddddd solid;border-radius:2px}
+.input,.inputs,.textarea{height:34px;line-height:25px;background-color:white;padding:5px;width:94%;border:var(--border);border-radius:5px}
 
-.inputb{height:30px;line-height:20px;background-color:white;padding:2px;border:0.5px #cccccc solid;border-radius:2px}
-.inputb:focus,.inputs:focus,.textarea:focus{border:0.5px var(--main-color) solid;box-shadow:0px 0px 5px rgba(0,0,0,0.3);}
+.inputb{height:34px;line-height:20px;background-color:white;padding:5px;border:var(--border);border-radius:5px}
+.inputb:focus,.inputs:focus,.textarea:focus{border:0.5px var(--main-color) solid;}
 
-.title{height:40px;line-height:40px;overflow:hidden;font-size:18px;text-align:left;border-bottom:1px #cccccc solid;color:#55555;font-weight:bold; background-color:var(--main-color)}
+.title{height:40px;line-height:40px;overflow:hidden;font-size:18px;text-align:left;border-bottom:var(--border);color:#55555;font-weight:bold; background-color:var(--main-color)}
 
 .inputs[readonly]{ background-color:#f1f1f1;box-shadow:none}
 
-.btn{width:100%;height:44px;line-height:44px;opacity:0.8; background-color:var(--main-color);border:none;color:white;font-size:14px; cursor:pointer}
+.btn{width:100%;height:44px;line-height:44px;opacity:0.8; background-color:var(--main-color);border:none;color:white;font-size:var(--font-size); cursor:pointer}
 .btn:active,.btn:hover{opacity:1;color:white;TEXT-DECORATION:none;}
 .btn:disabled{ background-color:#cccccc;color:#888888}
 a.btn{padding:5px 8px}
 
-.header{height:50px; overflow:hidden;line-height:50px; text-align:center; border-bottom:0.5px #cccccc solid;font-size:18px; position:fixed;width:100%;top:0px;left:0px; background:white;z-index:8}
+.header{height:50px; overflow:hidden;line-height:50px; text-align:center; border-bottom:var(--border);font-size:18px; position:fixed;width:100%;top:0px;left:0px; background:white;z-index:8}
 .header .back{position:absolute;top:5px;left:5px}
 .header .back img{height:24px;width:24px}
 .header-back{width:50px;height:50px;display:block; background:url(../../images/back.png) no-repeat 7px 7px;position:absolute;left:0px;bottom:0px; cursor:default}
@@ -74,14 +86,14 @@ a.btn{padding:5px 8px}
 
 .tdinpu{text-align:right;color:#555555;}
 .tdinput{padding:8px 5px}
-.inborder{border:1px #cccccc solid;}
+.inborder{border:var(--border);}
 
-a.webbtn:link,a.webbtn:visited,.webbtn{color:#ffffff;opacity:1; background-color:var(--main-color); padding:8px 10px; border:none; cursor:pointer;font-size:14px}
+a.webbtn:link,a.webbtn:visited,.webbtn{color:#ffffff;opacity:1; background-color:var(--main-color); padding:8px 10px; border:none; cursor:pointer;font-size:var(--font-size)}
 .webbtn:disabled{background-color:#aaaaaa; color:#eeeeee}
 .webbtn:hover{box-shadow:0px 0px 5px rgba(0,0,0,0.3);opacity:0.8}
 .radius5{border-radius:5px;}
 
-.upload_items{border:1px #cccccc solid;height:60px;overflow:hidden;float:left;margin-top:5px;margin-bottom:5px;margin-right:10px;cursor:pointer;position:relative}
+.upload_items{border:var(--border);height:60px;overflow:hidden;float:left;margin-top:5px;margin-bottom:5px;margin-right:10px;cursor:pointer;position:relative}
 .upload_items:active{border:1px var(--main-color) solid}
 .upload_items img.imgs{width:50px;height:50px;margin:5px}
 .upload_items_items{padding:5px;text-align:center}

+ 240 - 0
webmain/css/rock.css

@@ -0,0 +1,240 @@
+/**
+*	最新版的css样式
+*	开发者:雨中磐石
+*	地址:www.rockoa.com
+*	日期:2024-10-10
+*/
+
+*{font-family:Verdana, Geneva, sans-serif;padding:0px;margin:0px;-webkit-tap-highlight-color: transparent;list-style-type:none}
+
+body{
+	--main-color:#1389D3;
+	--font-size:14px;
+	--border:0.5px rgba(0,0,0,0.1) solid;
+	--main-bgcolor:white;
+	--main-hgcolor:rgba(0,0,0,0.15);
+	--main-vgcolor:rgba(0,0,0,0.1);
+	--main-border:rgba(0,0,0,0.1);
+	--input-height:34px;
+	--btn-height:36px;
+	--rgb-r:0;
+	--rgb-g:0;
+	--rgb-b:0;
+}
+
+body{font-size:var(--font-size)}
+table{border-spacing:0;border-collapse: collapse;}
+button,.cursor,a{cursor:pointer}
+a:link,a:visited{color:var(--main-color);TEXT-DECORATION:none;font-size:var(--font-size)}
+a:hover{TEXT-DECORATION:underline;color:red;}
+input,button,textarea,select{resize:none;outline:none;font-size:var(--font-size)}
+
+::placeholder{color:#999999;}
+.wrap{word-wrap:break-word;word-break:break-all;white-space:normal;}
+
+.input,.inputs,.form-control{border:var(--border);padding:0px 5px;overflow:hidden;border-radius:5px;background:white;height:34px;height:var(--input-height)}
+.textarea{line-height:20px; border:var(--border);padding:5px; border-radius:5px;overflow:auto}
+.input:focus,.textarea:focus,.form-control:focus,.inputs:focus{border:.5px var(--main-color) solid;}
+.input:disabled,.inputs:disabled,.textarea:disabled,.form-control:disabled{cursor:not-allowed;opacity:0.8}
+.input[readonly],.inputs[readonly],.textarea[readonly],.form-control[readonly]{background-color:rgba(0,0,0,0.1);}
+
+.webbtn,.webbtn:link,.webbtn:visited,.btn,.btn:link,.btn:visited{color:#ffffff;background-color:var(--main-color);padding:6px 10px;border:none; cursor:pointer;border-radius:5px;white-space:nowrap;height:36px;height:var(--btn-height)}
+.webbtn:active,.webbtn:hover,.btn:hover{box-shadow:0px 0px 5px rgba(0,0,0,0.3);box-shadow:0px 0px 5px rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.3);opacity:0.9;TEXT-DECORATION:none}
+.webbtn:disabled,.btn:disabled{background-color:#dddddd;color:#888888;cursor:not-allowed}
+.webbtn:disabled:hover,.btn:disabled:hover{background-color:none;box-shadow:none;opacity:1}
+.webbtn-default,.webbtn-default:link,.webbtn-default:visited,.btn-default{background-color:white;color:black;border:var(--border);}
+.webbtn-main,.webbtn-main:link,.webbtn-main:visited{background-color:white;color:black;border:.5px var(--main-color) solid;}
+
+.btn-danger{background-color:#d9534f}
+.form-control{width:98%}
+textarea.form-control{overflow:auto;padding-top:5px;padding-bottom:5px}
+.box{box-shadow:0px 0px 5px rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.3);}
+
+.hover:hover,.active{
+	background-color:rgba(0,0,0,0.1);
+	cursor:pointer;
+}
+.border{border:var(--border)}
+.mainbody{background:var(--main-bgcolor);border:var(--border);}
+.btn-xs,.btn-xs:link,.btn-xs:visited{padding:3px 5px;font-size:12px;height:26px}
+
+.zhu{color:var(--main-color)}
+.hui{color:#888888}
+.blank10{height:10px;overflow:hidden}
+.blank20{height:20px;overflow:hidden}
+.blank30{height:30px;overflow:hidden}
+.notsel{-moz-user-select: none;-o-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:default;}
+
+.btn-group{display: flex;align-items: center;}
+.btn-group .btn{float:left}
+.btn-group>.active{box-shadow: inset 0 3px 5px rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b), .125);}
+
+.btn-group :first-child:not(:last-child),
+.input-group :first-child:not(:last-child){
+	border-top-right-radius:0px;
+	border-bottom-right-radius:0px;
+}
+.btn-group :last-child:not(:first-child),
+.input-group :last-child:not(:first-child){
+	border-top-left-radius:0px;
+	border-bottom-left-radius:0px;
+}
+.btn-group :not(:last-child):not(:first-child){
+	border-radius:0px;
+}
+.btn-group :not(:first-child){
+	border-left-width:0px;
+}
+.input-group-btn{
+	display:flex;
+}
+.input-group-btn .btn:first-child{
+	border-top-left-radius:0px;
+	border-bottom-left-radius:0px;
+	border-left-width:0px;
+}
+
+.rock-loading {
+  display: inline-block;
+  vertical-align: middle;
+  height:16px;
+  width:16px;
+  -webkit-mask: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A") 0 0 no-repeat;
+  mask-size: cover;
+  -webkit-mask-size: cover;
+  mask-size: cover;
+  background-color: currentColor;
+  opacity:0.2;
+}
+
+::-webkit-scrollbar{
+  width: 8px;
+  height: 8px;
+  background-color: transparent;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 5px;
+  background-color: rgba(0, 0, 0, 0.2);
+}
+
+::-webkit-scrollbar-track:hover {
+  background-color: rgba(0, 0, 0, 0.1);
+  border-radius: 5px;
+}
+
+.badge {
+  display: inline-block;min-width: 10px; padding: 3px 5px;font-size: 12px;line-height: 1;color: #fff;
+  text-align: center;white-space: nowrap;vertical-align: baseline;background-color:red;border-radius: 12px;
+}
+.badge:empty {display: none;}
+
+
+
+.rock-table{
+	width:100%;
+	background:var(--main-bgcolor)
+}
+
+.rock-table .rock-table-th{
+	height:40px;
+	border:var(--border);
+	background:var(--main-hgcolor);
+	padding:3px;
+}
+
+.rock-table .rock-table-td{
+	height:36px;
+	border:var(--border);
+	padding:3px;
+	min-width:35px;
+	word-wrap:break-word;word-break:break-all;white-space:normal;
+}
+
+.rock-table thead{}
+
+.rock-table .rock-table-tr{}
+
+.rock-table .rock-table-tr:nth-child(odd){
+	background:rgba(0,0,0,0.03);
+	background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.03);
+}
+
+.rock-table .rock-table-tr:hover{
+	background:rgba(0,0,0,0.1);
+	background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.1);
+}
+
+.rock-table-edit{
+	border:var(--border);
+	background:var(--main-bgcolor);
+	padding:10px;
+	box-shadow:0px 0px 10px rgba(0,0,0,0.3);
+	box-shadow:0px 0px 10px rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.3);
+	border-radius:5px;
+}
+
+.rock-table-list{
+	padding:8px 10px;
+	border:var(--border);
+	border-radius:5px;
+	margin:10px;
+	background:white
+}
+.rock-table-list:active{
+	background:rgba(0,0,0,0.05);
+	background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.05);
+}
+
+.jquery-calendar .tdtext{border:var(--border);padding:3px}
+.jquery-calendar .tdtext:hover{background-color:rgba(0,0,0,0.1);background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.1);}
+.jquery-calendar .thtext{border:var(--border); background-color:rgba(0,0,0,0.1); background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.1);height:34px}
+
+.list-group,.panel{background:var(--main-bgcolor);border:var(--border);margin-bottom:20px;border-radius:5px;}
+.list-group-item{display:block;padding:12px;}
+.list-group>a:hover{
+	background-color:rgba(0,0,0,0.1);
+	background-color:var(--main-vgcolor);
+	color:inherit;
+}
+
+.list-group .list-group-item:not(:last-child){
+	border-bottom:var(--border);
+}
+.list-group .list-group-item:first-child,.panel-heading{
+	padding:12px;
+	background:var(--main-hgcolor);
+	border-top-right-radius:5px;
+	border-top-left-radius:5px;
+}
+
+.nav{ display:flex}
+.nav li{padding:10px 15px;}
+.nav .active{background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1)}
+
+.input-group{display: flex}
+.floats{display: flex}
+.floats30{flex:1;text-align:right}
+.floats50{flex:0.5;}
+.tishi{color:#888888;padding:10px 0px}
+
+.tdinput{padding:5px 0px;text-align:left;padding-right:15px}
+.inputtitle{line-height:34px;text-align:center;background-color:var(--main-hgcolor)}
+
+.upload_items{border:var(--border);height:60px;overflow:hidden;float:left;margin-top:5px;margin-bottom:5px;margin-right:10px;cursor:pointer;position:relative}
+.upload_items:active{border:1px var(--main-color) solid}
+.upload_items img.imgs{width:50px;height:50px;margin:5px}
+.upload_items_items{padding:5px;text-align:center}
+.upload_items_meng{ background:rgba(0,0,0,0.5);position:absolute;left:0px;top:0px;height:60px;overflow:hidden;line-height:60px;text-align:center;width:100%;color:white}
+
+.bootstree ul{height:36px;overflow:hidden;border-top:var(--border)}
+.bootstree ul li{height:35px;overflow:hidden;line-height:35px;float:left;border-right:var(--border)}
+.bootstree ul li:last-child{border-right-width:0px}
+.bootstree ul:nth-of-type(even) {background-color:rgba(0,0,0,0.03);background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.03);}
+.bootstree ul:hover{background-color:rgba(0,0,0,0.1);background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1);}
+
+.panel-footer{padding:10px;background-color:var(--main-bgcolor);border-top:var(--border)}
+
+.select-list .div01{padding:8px 10px;border-bottom:var(--border)}
+.select-list .div01:hover{background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1);}
+.select-list .div02{padding:8px 10px;border-bottom:var(--border);background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1)}
+.list-itemv:hover{color:var(--main-color);cursor:pointer;background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1)}

+ 6 - 0
webmain/css/rockmy.css

@@ -0,0 +1,6 @@
+/**
+*	这个文件就自定义写文件,在线更新不会覆盖的
+*	开发者:雨中磐石
+*	地址:www.rockoa.com
+*	日期:2024-10-10
+*/

+ 13 - 1
webmain/css/rui.css

@@ -171,4 +171,16 @@ a:link,a:visited{TEXT-DECORATION:none;color:var(--main-color)}
 
 .webbtn{color:#ffffff;opacity:1; background-color:#336699;background-color:var(--main-color); padding:5px 10px; border:none; cursor:pointer;font-size:14px;border-radius:5px;white-space:nowrap;text-overflow:ellipsis;}
 .webbtn:hover,.webbtn:active{box-shadow:0px 0px 5px rgba(0,0,0,0.3);opacity:0.8}
-.input:focus{box-shadow:0px 0px 5px rgba(0,0,0,0.3); border:1px #0887CC solid;border:1px var(--main-color) solid; color:#000000}
+.input:focus{box-shadow:0px 0px 5px rgba(0,0,0,0.3); border:1px #0887CC solid;border:1px var(--main-color) solid; color:#000000}
+
+.rock-loading {
+  display: inline-block;
+  height:16px;
+  width:16px;
+  vertical-align: middle;
+  -webkit-mask: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A") 0 0 no-repeat;
+  mask-size: cover;
+  -webkit-mask-size: cover;
+  mask-size: cover;
+  background-color: currentColor;
+}

+ 47 - 4
webmain/css/webmain.css

@@ -1,12 +1,28 @@
 *{font-family:微软雅黑,Verdana, Geneva, sans-serif;padding:0px;margin:0px;}
-body{--main-color:#1389D3;color:#222222;margin:0px;border:0;font-size:14px;-webkit-overflow-scrolling:touch;overflow-scrolling:touch;}
+body{
+	color:#222222;
+	margin:0px;border:0;
+	font-size:14px;
+	-webkit-overflow-scrolling:touch;
+	overflow-scrolling:touch;
+	--main-color:#1389D3;
+	--border:0.5px rgba(0,0,0,0.1) solid;
+	--main-bgcolor:white;
+	--main-hgcolor:white;
+	--font-size:14px;
+	--main-border:rgba(0,0,0,0.1);
+	--rgb-r:0;
+	--rgb-g:0;
+	--rgb-b:0;
+}
+
 td,button{ font-size:14px}
 a,c,.cursor{cursor:pointer;}
 p{text-indent:24pt;margin:10px 0px}
 ul,li,a{ list-style-type:none;}
 ul,li{padding:0px;margin:0px}
 .relative{position:relative}
-.zhu{ color:#ffffff}
+.zhu{color:#1389D3;color:var(--main-color)}
 img{border:0}
 label{font-weight:normal}
 
@@ -24,7 +40,7 @@ a.blue:hover{TEXT-DECORATION:underline;color:red;}
 
 a.red:link,a.red:visited{color:red;TEXT-DECORATION:underline;}
 a.red:hover{TEXT-DECORATION:underline;color:red;}
-
+.hover:hover{background-color:rgba(0,0,0,0.1);}
 .tishi{color:#888888;padding:10px 0px}
 
 .basetable td{padding:3px 5px; text-align:center}
@@ -193,4 +209,31 @@ a.webbtn-mini:link,a.webbtn-mini:visited,.webbtn-mini{font-size:12px;padding:3px
 a.webbtn-red:link,a.webbtn-red:visited,.webbtn-red{background-color:#d9534f}
 a.webbtn-white:link,a.webbtn-white:visited,.webbtn-white{background-color:white;border:1px #cccccc solid;color:black}
 .webbtn:disabled{background-color:#aaaaaa; color:#eeeeee}
-.webbtn:hover{box-shadow:0px 0px 5px rgba(0,0,0,0.3);opacity:0.8}
+.webbtn:hover{box-shadow:0px 0px 5px rgba(0,0,0,0.3);opacity:0.8}
+
+.rock-loading {
+  display: inline-block;
+  height:16px;
+  width:16px;
+  vertical-align: middle;
+  -webkit-mask: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A") 0 0 no-repeat;
+  mask-size: cover;
+  -webkit-mask-size: cover;
+  mask-size: cover;
+  background-color: currentColor;
+}
+
+::-webkit-scrollbar{
+  width: 8px;
+  height: 8px;
+  background-color: transparent;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 5px;
+  background-color: rgba(0, 0, 0, 0.2);
+}
+
+::-webkit-scrollbar-track:hover {
+  background-color: rgba(0, 0, 0, 0.1);
+  border-radius: 5px;
+}

+ 41 - 24
webmain/flow/input/inputAction.php

@@ -941,41 +941,56 @@ class inputAction extends Action
 		$fields = substr($fields, 1);
 		if($fieldss!='')$fieldss = substr($fieldss,1);
 		
-		$data  	= c('html')->importdata($fields, $fieldss); //获取提交过来要导入的数据库
-		if(!$data)return returnerror('没有可导入的数据,注意*是必填的哦');
-		
-		$msgstr = '';
-		
+		$hobj	= c('html');
+		$data  	= $hobj->importdata($fields, $fieldss,'', 1); //获取提交过来要导入的数据库
+		$errdata= $hobj->importerrda();
+		if(!$data)return returnerror('没有可导入的数据,注意*是必填的哦',201, array('errdata'=>$errdata));
+
 		//保存前判断
 		if(method_exists($flow,'flowdaorubefore')){
-			$data = $flow->flowdaorubefore($data);
-			if(is_string($data))return returnerror($data);
+			$data = $flow->flowdaorubefore($data, $errdata);
+			if(is_string($data))return returnerror($data, 201, array('errdata'=>$errdata));
 		}
 		
 		//判断是否有重复
 		$ldata 	= array();
-		foreach($data as $k=>$rs){
-			$bos 	= true;
-			foreach($onlyfield as $onid){
-				$val = arrvalue($rs, $onid);
-				if(!isempt($val)){
-					$tos = $flow->rows("`$onid`='$val'");
-					if($tos>0){
-						$bos = false;
-						$msgstr.='行'.($k+1).'的字段'.$onid.'存在重复;';
-						break;
+		if($onlyfield){
+			foreach($data as $k=>$rs){
+				$bos 	= true;
+				foreach($onlyfield as $onid){
+					$val = arrvalue($rs, $onid);
+					if(!isempt($val)){
+						$tos = $flow->rows("`$onid`='$val'");
+						if($tos>0){
+							$bos = false;
+							$errdata[$rs['drxu']] = '字段('.$onid.':'.$val.')存在重复';
+							break;
+						}
 					}
 				}
+				if($bos)$ldata[] = $rs;
 			}
-			if($bos)$ldata[] = $rs;
+		}else{
+			$ldata = $data;
 		}
-		if(!$ldata)return returnerror('没有可导入的数据'.$msgstr.'');
+		
+		if(!$ldata)return returnerror('没有可导入的数据',201, array('errdata'=>$errdata));
 		$allfields = $this->db->getallfields('[Q]'.$flow->mtable.'');
 		
 		$oi 	= 0;
 		$dorudat= array();
 		foreach($ldata as $k=>$rs){
-		
+			$drerr	= '';
+			if(isset($rs['drerr'])){
+				$drerr = $rs['drerr'];
+				if($drerr){
+					$errdata[$rs['drxu']] = $drerr;
+					continue;
+				}
+			}
+			unset($rs['drxu']);
+			unset($rs['drerr']);
+			
 			$id 	= (int)arrvalue($rs,'id','0');
 			$where 	= '';
 			if($id>0){
@@ -1019,20 +1034,22 @@ class inputAction extends Action
 					$na = ($isturn=='1') ? '提交' : '保存';
 					$flow->submit($na);
 				}
-				
+				$errdata[$drxu] = 'ok';
 			}else{
-				$msgstr.='行'.($k+1).'保存数据库错误;';
+				$errdata[$drxu] = '数据库错误:'.$this->db->error().'';
 			}
 		}
 		
-		if($oi==0)return returnerror('导入数据为0条'.$msgstr.'');
+		if($oi==0)return returnerror('导入数据为0条', 201, array('errdata'=>$errdata));
 		
 		//保存后判断
 		if(method_exists($flow,'flowdaoruafter')){
 			$flow->flowdaoruafter($dorudat);
 		}
 
-		return returnsuccess('成功导入'.$oi.'条数据'.$msgstr.'');
+		$bcarr = returnsuccess('成功导入'.$oi.'条数据');
+		$bcarr['errdata'] = $errdata;
+		return $bcarr;
 	}
 	
 	//读取导入的excel数据

+ 2 - 2
webmain/flow/input/inputjs/input_two.js

@@ -471,7 +471,7 @@ var inputtwo={
 		if(!da || da.length==0)return;
 		var o2 = $(o1),lefta=o2.offset(),i,len=da.length,ds=[],zl=10,j=0;
 		$('#completelist').remove();
-		var str= '<div id="completelist" style="position:absolute;z-index:9;left:'+lefta.left+'px;top:'+(lefta.top+29)+'px;background:white;border:1px var(--main-color) solid;box-shadow: 0px 0px 5px rgb(0,0,0,0.3)"></div>';
+		var str= '<div id="completelist" style="position:absolute;z-index:9;left:'+lefta.left+'px;top:'+(lefta.top+29)+'px;background:white;border:1px var(--main-color) solid;border-radius:5px;box-shadow: 0px 0px 5px rgb(0,0,0,0.3)"></div>';
 		var val= strreplace(o1.value);
 		if(val){
 			for(i=0;i<len;i++)if(da[i].name.indexOf(val)>-1 || (da[i].subname && da[i].subname.indexOf(val)>-1)){
@@ -497,7 +497,7 @@ var inputtwo={
 			if(j>=zl)break;
 		}
 		if(len>zl){
-			str+='<div style="padding:5px 10px;background:#eeeeee">总记录'+len+'条';
+			str+='<div style="padding:5px 10px;background:rgba(0,0,0,0.1)">总记录'+len+'条';
 			if(p>1)str+='&nbsp;<a href="javascript:;" class="zhu" onclick="c.autocompleteshows(\''+zl+'\','+(p-1)+')">&lt;上页</a>';
 			if(j==zl)str+='&nbsp;<a href="javascript:;" class="zhu" onclick="c.autocompleteshows(\''+zl+'\','+(p+1)+')">下页&gt;</a>';
 			str+='</div>';

+ 75 - 0
webmain/flow/input/inputjs/mode_custprice.js

@@ -0,0 +1,75 @@
+//流程模块【custprice.报价单】下录入页面自定义js页面,初始函数
+function initbodys(){
+	
+	//记录原来选择的
+	c.daossdts=[];
+	c.onselectdatabefore=function(){
+		this.daossdts = this.getsubdata(0);
+	}
+	
+	//这个是很复杂的叠加关系,时间久了谁也不知道是干嘛用的
+	c.onselectdataall=function(fid,seld,sna,sid){
+		if(!seld || !sna)return;
+		var da = [];
+		if(!seld[0]){
+			da[0]=seld;
+		}else{
+			da = seld;
+		}
+		var nam = this.getxuandoi(fid),snua;
+		var dao=this.daossdts,i,j,bo,d,oi=parseFloat(nam[1]),oii=-1;
+		for(i=0;i<da.length;i++){
+			d  = da[i];
+			bo = false;
+			for(j=0;j<dao.length;j++)if(dao[j].aid==d.value)bo=true;
+			oii++;
+			if(!bo){
+				if(oii>0){
+					snua= ''+nam[3]+''+nam[0]+'_'+(oi+oii)+'';
+					if(!form(snua) || form(snua).value!=''){
+						nam = this.insertrow(0,{},true);
+					}else{
+						nam[1]=parseFloat(nam[1])+1;
+					}
+				}
+				this.setrowdata(nam[0],nam[1],{
+					unit:d.unit,
+					price:d.price,
+					temp_aid:d.name,
+					aid:d.value
+				});
+				
+			}else{
+				oii--;
+				if(i==0){
+					this.setrowdata(nam[0],nam[1],{
+						unit:'',
+						price:'0',
+						temp_aid:'',
+						aid:'0'
+					});
+				}
+			}	
+		}
+	}
+	
+	
+}
+
+function changesubmit(){
+	if(get('tablesub0')){
+		var da = c.getsubdata(0),d1;
+		for(var i=0;i<da.length;i++){
+			d1 = da[i];
+			if(!d1.aid)return '行['+(i+1)+']必须选择物品';
+			if(d1.count<=0)return '行['+(i+1)+']数量必须大于0';
+		}
+	}
+}
+
+
+function eventaddsubrows(xu,oj){
+	c.setrowdata(xu,oj,{
+		aid:'0'
+	});
+}

+ 4 - 0
webmain/flow/input/inputjs/mode_user.js

@@ -13,4 +13,8 @@ function changesubmit(d){
 		if(!d.rankings)len2=0;
 		if(len2!=len1)return '多部门和多职位的数量不一致';
 	}
+	
+	js.setoption('userjson','');
+	js.setoption('deptjson','');
+	js.setoption('groupjson','');
 }

+ 1 - 0
webmain/flow/input/mode_collectsAction.php

@@ -43,6 +43,7 @@ class mode_collectsClassAction extends inputAction{
 		return $arr;
 	}
 	
+	private $zdarr,$zdobj;
 	public function collectstotal_before()
 	{
 		$mid = (int)$this->get('mid','0');

+ 48 - 0
webmain/flow/input/mode_custpriceAction.php

@@ -0,0 +1,48 @@
+<?php
+/**
+*	此文件是流程模块【custxiao.销售】对应控制器接口文件。
+*/ 
+class mode_custpriceClassAction extends inputAction{
+	
+	private $sssaid;
+	protected function savebefore($table, $arr, $id, $addbo){
+		$data = $this->getsubtabledata(0);
+		if(count($data)==0)return '至少要有一行记录';
+		$this->sssaid = '0';
+		foreach($data as $k=>$rs){
+			$this->sssaid.=','.$rs['aid'].'';
+			if(isset($rs['aid']))foreach($data as $k1=>$rs1){
+				if($k!=$k1){
+					if($rs['aid']==$rs1['aid'])
+						return '行'.($k1+1).'的物品已在行'.($k+1).'上填写,不要重复填写';
+				}
+			}
+		}
+		
+		
+		$rows['type'] = '6';//一定要是6,不能去掉
+		return array(
+			'rows'=>$rows
+		);
+	}
+	
+		
+	protected function saveafter($table, $arr, $id, $addbo){
+		
+	}
+	
+	//读取物品
+	public function getgoodsdata()
+	{
+		return m('goods')->getgoodsdata(2);
+	}
+	
+	//读取我的客户
+	public function getmycust()
+	{
+		$rows = m('crm')->getmycust($this->adminid, $this->rock->arrvalue($this->rs, 'custid'));
+		return $rows;
+	}
+	
+}	
+			

+ 1 - 1
webmain/flow/input/mode_dailyAction.php

@@ -1,7 +1,7 @@
 <?php
 class mode_dailyClassAction extends inputAction{
 	
-	public $months;
+	public $months,$ztdt;
 	protected function savebefore($table, $arr, $id, $addbo){
 		
 		$type 	= arrvalue($arr, 'type');

+ 7 - 1
webmain/flow/input/mode_userAction.php

@@ -4,6 +4,7 @@
 */ 
 class mode_userClassAction extends inputAction{
 	
+	private $depta;
 	
 	protected function savebefore($table, $cans, $id, $addbo){
 		if(getconfig('systype')=='demo' && $id>0)return '演示请勿编辑';
@@ -89,7 +90,12 @@ class mode_userClassAction extends inputAction{
 	//组数据源
 	public function groupdata()
 	{
-		return m('sjoin')->getgrouparrs();
+		$data = m('sjoin')->getgrouparrs();
+		if(!$data)$data[] = array(
+			'value'=> '0',
+			'name' => '无组选择'
+		);
+		return $data;
 	}
 	
 	//生成列表页,数据读取后处理

+ 16 - 6
webmain/flow/input/rock_input_daoru.php

@@ -5,18 +5,19 @@ $(document).ready(function(){
 	var modenum = params.modenum;
 	var c={
 		headers:'',
+		yscss:'style="border:var(--border);padding:3px 5px"',
 		yulan:function(){
 			var cont = mobjs.val(),s='',a,a1,i,j,oi=0;
-			s+='<table class="basetable" border="1">';
-			s+='<tr><td></td>'+this.headers+'</tr>';
+			s+='<table border="0">';
+			s+='<tr style="background:rgba(0,0,0,0.1)"><td '+this.yscss+'></td><td '+this.yscss+'>导入结果</td>'+this.headers+'</tr>';
 			a = cont.split('\n');
 			for(i=0;i<a.length;i++){
 				if(a[i]){
 					oi++;
 					a1 = a[i].split('	');
 					s+='<tr>';
-					s+='<td>'+oi+'</td>';
-					for(j=0;j<a1.length;j++)s+='<td>'+a1[j]+'</td>';
+					s+='<td '+this.yscss+'>'+oi+'</td><td '+this.yscss+' id="runstate_'+modenum+'_'+oi+'"></td>';
+					for(j=0;j<a1.length;j++)s+='<td '+this.yscss+'>'+a1[j]+'</td>';
 					s+='</tr>';
 				}
 			}
@@ -37,12 +38,12 @@ $(document).ready(function(){
 			var i,len=ret.length,d;
 			for(i=0;i<len;i++){
 				d=ret[i];
-				this.headers+='<td>';
+				this.headers+='<td '+this.yscss+'>';
 				if(d.isbt=='1'){
 					this.bitian+=','+d.fields+'';
 					this.headers+='<font color=red>*</font>';
 				}
-				this.headers+=''+d.name+'</td>';
+				this.headers+=''+d.name+'('+d.fields+')</td>';
 			}
 			this.yulan();
 		},
@@ -68,11 +69,20 @@ $(document).ready(function(){
 					js.setmsg(ds.msg+'','red', vis);
 					o1.disabled=false;
 				}
+				if(ds.errdata)c.showerrdata(ds.errdata);
 			},'post,json',function(s){
 				js.setmsg(s,'red', vis);
 				o1.disabled=false;
 			});
 		},
+		showerrdata:function(ed){
+			var xu,str,col;
+			for(xu in ed){
+				str = ed[xu];
+				col = (str=='ok') ? 'green' : 'red';
+				$('#runstate_'+modenum+'_'+(parseFloat(xu)+1)+'').html('<font color='+col+'>'+str+'</font>');
+			}
+		},
 		downxz:function(){
 			var url = '?m=input&a=daoruexcel&d=flow&modenum='+modenum+'';
 			js.open(url);

+ 22 - 29
webmain/flow/input/tpl_input_lu.html

@@ -3,63 +3,56 @@
 <head>
 <meta charset="utf-8">
 <title><?=$da['title']?></title>
-<link rel="stylesheet" href="<?=$da['p']?>/css/css.css" />
+<link rel="stylesheet" href="<?=$da['p']?>/css/rock.css" />
 <link rel="stylesheet" type="text/css" href="mode/plugin/css/jquery-rockdatepicker.css"/>
 <link rel="shortcut icon" href="favicon.ico" />
 <script type="text/javascript" src="js/jquery.js"></script>
-<script type="text/javascript" src="js/js.js"></script>
+<script type="text/javascript" src="js/js.js?<?=$nowtime?>"></script>
 <script type="text/javascript" src="js/base64-min.js"></script>
 <script type="text/javascript" src="mode/plugin/jquery-rockdatepicker.js"></script>
-<script type="text/javascript" src="<?=$da['p']?>/flow/input/inputjs/input.js?<?=$da['logintime']?>"></script>
-<script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
-<script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
+<script type="text/javascript" src="<?=$da['p']?>/flow/input/inputjs/input.js?<?=$nowtime?>"></script>
+<script type="text/javascript" src="web/res/js/jquery-changeuser.js?<?=$nowtime?>"></script>
+<script type="text/javascript" src="mode/plugin/jquery-rockmodels.js?<?=$nowtime?>"></script>
 <script type="text/javascript">
+var editor,arr=<?=$da['fieldsjson']?>,moders=<?=json_encode($da['moders'])?>,gongsiarr=<?=json_encode($da['gongsiarr'])?>,subfielsa=<?=json_encode($da['subfielsa'])?>,zbnamearr=<?=json_encode($da['zbnamearr'])?>,isedit=0,mid='<?=$da['mid']?>',isinput=1,data={},tempdata='<?=$tempdata?>';
+</script>
 <?php
-$maincolor = getconfig('apptheme','#1389D3');
+echo c('color')->getApptheme();
 ?>
-var editor,arr=<?=$da['fieldsjson']?>,moders=<?=json_encode($da['moders'])?>,gongsiarr=<?=json_encode($da['gongsiarr'])?>,subfielsa=<?=json_encode($da['subfielsa'])?>,zbnamearr=<?=json_encode($da['zbnamearr'])?>,isedit=0,mid='<?=$da['mid']?>',isinput=1,data={},maincolor='<?=$maincolor?>',tempdata='<?=$tempdata?>';
-</script>
 <style>
 <?php
-$maincolora= c('image')->colorTorgb($maincolor);
-$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
-echo 'body{--main-color:'.$maincolor.';--main-border:rgba('.$maincolors.',0.2)}';
+$colarr = c('color')->getColor();
+$maincolors= $colarr['colors'];
 ?>
-.tdcont{padding:0px 0px;font-size:14px;}
-.tdcont *{font-size:14px;}
-.tdcont a{color:blue;}
-.ys0{border:1px #888888 solid;border:1px var(--main-border) solid}
-.ys1{padding:5px 5px;border:1px #888888 solid; border:1px var(--main-border) solid;color:#555555;}
-.ys2{padding:5px 5px;border:1px #888888 solid;border:1px var(--main-border) solid;}
+.ys1{padding:5px 5px;color:#666666}
+.ys2{padding:5px 5px;}
 
-.inputs{width:95%;font-size:14px;}
+.inputs,.textarea{flex:1;width:95%;margin:3px 0px}
 .cionsss{padding:4px; background-color:#dddddd}
 .datesss{background:url(mode/icons/date.png) no-repeat right;cursor:pointer}
 
 .status{position: absolute;right:5px;top:10px;display:none;width:80px;height:80px;overflow:hidden; border:3px red solid;border-radius:50%;font-size:20px;text-align:center;line-height:80px;color:red;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);filter:progid:DXImagetransform.Microsoft.Matrix(M11=0.707,M12=-0.707,M21=0.707,M22=0.707,SizingMethod='auto expand');}
 
-.tablesub td{height:25px;text-align:center;border-bottom:1px var(--main-border) solid;border-right:1px var(--main-border) solid;}
-.tablesub .inputs{border:none}
+.tablesub td{height:25px;text-align:center;border:var(--border);}
+.tablesub .inputs,.tablesub .textarea{border:none;background:none;border-radius:0;margin:0;width:100%;padding:0;}
+.tablesub .inputs[readonly]{background-color:rgba(0,0,0,0.1);}
 
 .course{padding:8px; background-color:rgba(<?=$maincolors?>,0.2);border:1px rgba(<?=$maincolors?>,0.3) solid;margin-right:10px;text-align:center;border-radius:5px}
 .coursejt{height:8px;overflow:hidden;width:30px;background-color:rgba(<?=$maincolors?>,0.2)}
 .coursejts{width:0px;  height:0px; overflow:hidden;border-width:8px;border-style:solid;border-color:transparent transparent transparent rgba(<?=$maincolors?>,0.2);}
 .tishi{color:#888888;font-size:12px;padding:3px}
-.btn-default{background-color:#1389D3;}
-.btn-danger{background-color:#d9534f;}
-.btn:hover{opacity:1;color:#ffffff}
 .ke-icon-crop{background-image: url(mode/icons/crop.png);width: 16px;height: 16px;}
 .xuhao{text-align:center;}
 .xuhao[readonly]{background:none}
 </style>
 </head>
-<body style="background:white">
+<body>
 <div align="center">
 	<div class="blank10"></div>
-	<div style="min-width:650px; position:relative;max-width:<?=$da['inputwidth']?>px;margin:0px 10px">
+	<div style="min-width:650px; position:relative;max-width:<?=$da['inputwidth']?>px;margin:0px 10px;">
 		<div onclick="$(this).remove()" class="status"></div>
 		<div style="padding-bottom:15px;"><span id="inputtitle" onclick="location.reload()" style="font-size:24px"><?=$da['title']?></span></div>
-		<div class="tdcont" align="left">
+		<div class="tdcont border" style="background:var(--main-bgcolor);padding:10px;border-radius:5px" align="left">
 			<form name="myform" autocomplete="off">
 			<input name="id" type="hidden" value="<?=$da['mid']?>">
 			<input name="sxuanfileid" type="hidden" value="">
@@ -127,15 +120,15 @@ echo 'body{--main-color:'.$maincolor.';--main-border:rgba('.$maincolors.',0.2)}'
 			</form>
 		</div>
 		<?php echo $coursestr;?>
-		<div style="height:60px; overflow:hidden"></div>
 	</div>
-	<div align="right" style="background:#eeeeee;border-top:1px #aaaaaa solid;padding:10px 0px; position:fixed;width:100%;bottom:0px;left:0px;z-index:10">
+	<div style="height:70px; overflow:hidden"></div>
+	<div align="right" style="background:var(--main-bgcolor);border-top:var(--border);padding:10px 0px; position:fixed;width:100%;bottom:0px;left:0px;z-index:10">
 		<span id="msgview"></span>&nbsp; 
 		<span id="AltSspan" style="display:none" >
 		<?php
 		if($da['isflow']>0)echo '<label><input onclick="c.changeturn(this)" value="1" checked type="checkbox" id="sysisturn">直接提交</label>&nbsp;';
 		?>
-		<a class="hui" id="Altzhan" style="margin-right:10px;display:none" onclick="return c.savezhan()" href="javascript:;">暂存</a><input id="AltS" type="button" style="border-radius:5px" onclick="return c.save()" value="提交" class="webbtn"></span>&nbsp; &nbsp; 
+		<a class="hui" id="Altzhan" style="margin-right:10px;display:none" onclick="return c.savezhan()" href="javascript:;">暂存</a><input id="AltS" type="button" onclick="return c.save()" value="提交" class="webbtn"></span>&nbsp; &nbsp; 
 	</div>
 </div>
 <script>

+ 3 - 3
webmain/flow/input/tpl_input_lum.html

@@ -10,13 +10,13 @@
 <link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/cssm.css">
 <link rel="stylesheet" type="text/css" href="mode/plugin/css/jquery-rockdatepicker.css"/>
 <script type="text/javascript" src="js/jquery.js"></script>
-<script type="text/javascript" src="js/js.js"></script>
+<script type="text/javascript" src="js/js.js?<?=$nowtime?>"></script>
 <script type="text/javascript" src="js/base64-min.js"></script>
 <script type="text/javascript" src="mode/plugin/jquery-rockdatepicker.js"></script>
 <script type="text/javascript" src="mode/plugin/jquery-rockdatepicker-mobile.js"></script>
 <script type="text/javascript" src="web/res/js/jquery-rockupload.js"></script>
-<script type="text/javascript" src="<?=$da['p']?>/flow/input/inputjs/input.js?<?=$da['logintime']?>"></script>
-<script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
+<script type="text/javascript" src="<?=$da['p']?>/flow/input/inputjs/input.js?<?=$nowtime?>"></script>
+<script type="text/javascript" src="web/res/js/jquery-changeuser.js?<?=$nowtime?>"></script>
 <script type="text/javascript" src="web/res/js/jquery-imgview.js"></script>
 <script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
 <script type="text/javascript">

+ 1 - 0
webmain/flow/page/input_custprice.html

@@ -0,0 +1 @@
+<table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">*^custname^</td><td width="35%" class="ys2">{custname}{custid}</td><td height="34" width="15%" align="right" class="ys1">*^applydt^</td><td width="35%" class="ys2">{applydt}</td></tr><tr><td class="ys2" style="background-color:#CCCCCC;" colspan="4"><strong>报价内容</strong></td></tr><tr><td class="ys0" colspan="4"><table class="tablesub ke-zeroborder" id="tablesub0" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>*物品</td><td>*数量</td><td>单位</td><td>单价</td><td width="5%">操作</td></tr><tr><td>[xuhao0,0]</td><td>[temp_aid0,0][aid0,0]</td><td>[count0,0]</td><td>[unit0,0]</td><td>[price0,0]</td><td>{删,0}</td></tr></tbody></table><div style="background-color:#F1F1F1;">{新增,0}</div></td></tr><tr><td height="34" width="15%" align="right" class="ys1">^discount^</td><td width="35%" class="ys2">{discount}</td><td height="34" width="15%" align="right" class="ys1">^money^</td><td width="35%" class="ys2">{money}</td></tr><tr><td height="34" align="right" class="ys1">^explain^</td><td colspan="3" class="ys2">{explain}</td></tr><tr><td height="34" align="right" class="ys1">^file_content^</td><td colspan="3" class="ys2">{file_content}</td></tr><tr><td height="34" align="right" class="ys1">^base_name^</td><td class="ys2">{base_name}</td><td align="right" class="ys1">^base_deptname^</td><td class="ys2">{base_deptname}</td></tr></tbody></table>

文件差異過大導致無法顯示
+ 0 - 0
webmain/flow/page/input_hrshebao.html


+ 1 - 1
webmain/flow/page/rock_page_assetm.php

@@ -23,7 +23,7 @@ if(pnum=='all'){
 	bootparams.checked=true; //开启复选框
 	bootparams.autoLoad=false;
 
-	var shtm = '<table width="100%"><tr valign="top"><td><div style="border:1px #cccccc solid;width:220px"><div id="optionview_{rand}" style="height:400px;overflow:auto;"></div></div></td><td width="8" nowrap><div style="width:8px;overflow:hidden"></div></td><td width="95%"><div id="view'+modenum+'_{rand}"></div></td></tr></table>';
+	var shtm = '<table width="100%"><tr valign="top"><td><div style="border:var(--border);width:220px"><div id="optionview_{rand}" style="height:400px;overflow:auto;"></div></div></td><td width="8" nowrap><div style="width:8px;overflow:hidden"></div></td><td width="95%"><div id="view'+modenum+'_{rand}"></div></td></tr></table>';
 	$('#view'+modenum+'_{rand}').after(shtm).remove();
 	c.stable = 'assetm'; //模块的主表
 	c.optionview = 'optionview_{rand}';

+ 2 - 2
webmain/flow/page/rock_page_customer.php

@@ -47,11 +47,11 @@ if(pnum=='' || pnum=='all'){
 		}
 		setTimeout(function(){js.getuser(cans);},10);
 	}
-	$('#tdright_{rand}').append('&nbsp; '+c.getbtnstr('客户转移','move'));
+	$('#tdright_{rand}').append('&nbsp;'+c.getbtnstr('客户转移','move'));
 }
 
 if(atype=='my'){
-	$('#tdright_{rand}').append('&nbsp; '+c.getbtnstr('共享','shates'));
+	$('#tdright_{rand}').append('&nbsp;'+c.getbtnstr('共享','shates'));
 	c.shates=function(){
 		var s= a.getchecked();
 		if(s==''){js.msg('msg','没有选择记录');return;}

+ 3 - 3
webmain/flow/page/rock_page_flowelement_script.php

@@ -1,7 +1,7 @@
 //<script>
 
 c.optalign = 'left';
-c.opttype = '<button type="button" class="btn btn-default" style="padding:3px 5px;font-size:12px">操作</button>';
+c.opttype = '<button type="button" class="btn btn-default btn-xs" style="padding:3px 5px;font-size:12px">操作</button>';
 var editarr = ['islu','isbt','iszs','islb','ispx','issou','isonly','isdr','istj'],mkid=0,mknum=modenum;
 for(var i=0;i<editarr.length;i++)c.setcolumns(editarr[i],{type:'checkbox'});
 bootparams.fanye = false;
@@ -51,7 +51,7 @@ c.clickwin=function(o1,lx){
 
 $('#tools'+modenum+'_{rand}').find('td[tdlx="sou"]').hide();
 
-var strss = '<div class="btn-group" style="margin-right:10px">';
+var strss = '<div class="btn-group">';
 strss+='<button class="btn btn-default" click="inputs,0" type="button">PC端录入页布局</button>';
 strss+='<button class="btn btn-default" click="zhanshi,0" type="button">PC端展示</button>';
 strss+='<button class="btn btn-default" click="zhanshi,1" type="button">手机展示</button>';
@@ -61,7 +61,7 @@ strss+='<button class="btn btn-default" click="lulu,1" type="button">手机录
 strss+='<button class="btn btn-default" click="changelieb" type="button">生成列表页</button>';
 strss+='</div>';
 
-$('#tdcenter_{rand}').prepend(''+strss+'');
+$('#tdcenter_{rand}').before('<td style="padding-left:10px">'+strss+'</td>');
 
 c.inputs=function(){
 	if(!this.xuanmoxbo())return;

+ 1 - 1
webmain/flow/page/rock_page_flowset_script.php

@@ -1,7 +1,7 @@
 //<script>
 
 c.optalign = 'left';
-c.opttype = '<button type="button" class="btn btn-default" style="padding:3px 5px;font-size:12px">操作</button>';
+c.opttype = '<button type="button" class="btn btn-default btn-xs" style="padding:3px 5px;font-size:12px">操作</button>';
 bootparams.statuschange = true;
 bootparams.checked = true;
 var editarr = ['pctx','status','emtx','mctx','wxtx','ddtx','istxset','ispl','islu','isup','ishz'];

+ 1 - 1
webmain/flow/page/rock_page_worcword.php

@@ -265,7 +265,7 @@ $(document).ready(function(){
 <table width="100%">
 <tr valign="top">
 <td width="220">
-	<div style="border:1px #cccccc solid;width:220px">
+	<div style="border:var(--border);width:220px">
 	  <div id="optionview_{rand}" style="height:400px;overflow:auto;"></div>
 	  <div  class="panel-footer">
 		<a href="javascript:" title="分区管理" click="openglfe" onclick="return false"><i class="icon-cog"></i></a>&nbsp; &nbsp;

+ 3 - 3
webmain/home/desktop/items_bianjian.php

@@ -16,9 +16,9 @@ defined('HOST') or die ('not access');
  <div class="list-group-item" style="padding:0">
 	<table width="100%">
 	<tr valign="top">
-	<td><div style="width:350px;height:290px" id="bianjian_view"></div></td>
+	<td><div style="width:350px;height:300px" id="bianjian_view"></div></td>
 	<td width="100%">
-	<div align="center" style="line-height:40px;background:#f1f1f1"><span id="bianjianmonth"></span></div>
+	<div align="center" style="line-height:40px;background:var(--main-bgcolor)"><span id="bianjianmonth"></span></div>
 	<div style="padding:5px" id="bianqianlists"></div>
 	<div style="color:#cccccc;margin-top:40px" id="bianqianlists22" align="center">无便笺内容</div>
 	
@@ -54,7 +54,7 @@ homeobject.bianjian_init=function(){
 	}
 	
 	this.bianjianobjmb = $('#bianjian_view').rockcalendar({
-		height:280,
+		height:250,
 		changemonth:function(y, m,o1){
 			$('#bianjianmonth').html('<font onclick="homeobject.bianjianobjmb.fanmonth(-1)"><i class="icon-double-angle-left"></i></font> <font onclick="homeobject.bianjianobjmb.nowmonth()">'+y+'年'+xy10(m)+'月</font> <font  onclick="homeobject.bianjianobjmb.fanmonth(1)"><i class="icon-double-angle-right"></i></font>');
 			homeobject.bianjiangetdata(o1.dayobj[1].day,o1.dayobj[42].day);

+ 1 - 1
webmain/home/desktop/items_kjrko.php

@@ -15,7 +15,7 @@ homeobject.showicons=function(a){
 		cols = a[i].color;
 		if(homestyle=='2')cols=maincolor;
 		s='';
-		s+='<div onclick="opentabsshowshwo('+i+')" align="center" style="cursor:pointer;width:135px;float:left;margin:10px 15px;background:'+cols+';border:none" onmouseover="this.style.opacity=0.8" onmouseout="this.style.opacity=1" class="thumbnail">';
+		s+='<div onclick="opentabsshowshwo('+i+')" align="center" style="cursor:pointer;width:135px;float:left;margin:10px 15px;background:'+cols+';border:none;border-radius:5px;" onmouseover="this.style.opacity=0.8" onmouseout="this.style.opacity=1" class="thumbnail">';
 		s+='	<div style="position:relative;padding:15px 0px">';
 		s+='		<div style="color:white;font-size:36px"><i class="icon-'+a[i].icons+'"></i></div>';
 		s+='		<a style="TEXT-DECORATION:none;color:white" id="'+a[i].num+'_text">'+a[i].name+'</a>';

+ 3 - 1
webmain/home/desktop/items_news.php

@@ -30,7 +30,7 @@ homeobject.clicknewstabs=function(oi,na){
 	o1.find('li[tab="'+oi+'"]').addClass('active');
 	var das = this.newsrows[oi];
 	if(typeof(das)=='undefined'){
-		$('#newstabs_{rand}').after('<div id="losnew{rand}" style="margin:10px" align="center"><img src="images/mloading.gif"></div>');
+		$('#newstabs_{rand}').after('<div id="losnew{rand}" style="margin:10px" align="center">'+js.ling(30)+'</div>');
 		js.ajax(publicmodeurl('news','getnews'),{typename:na},function(ret){
 			homeobject.newsrows[oi]=ret;
 			homeobject.shownewsss(ret);
@@ -62,6 +62,8 @@ homeobject.shownewsss=function(das){
 }
 </script>
 
+
+
 <div class="panel panel-danger">
   <div class="panel-heading">
 	<h3  class="panel-title"><i class="icon-globe"></i> <?=$itemnowname?>

+ 5 - 0
webmain/index/indexAction.php

@@ -100,6 +100,11 @@ class indexClassAction extends Action{
 		}
 	}
 	
+	public function oldAction()
+	{
+		$this->defaultAction();
+	}
+	
 	public function newAction()
 	{
 		$this->homestylebool = true;

+ 35 - 23
webmain/index/indexscript.js

@@ -23,6 +23,8 @@ function initbody(){
 			name:'<i class="icon-bell"></i> 提醒信息',num:'todo','icon':'bell',url:'system,geren,todo',names:'提醒信息'
 		},{
 			name:'<i class="icon-picture"></i> 修改头像',num:'face','icon':'picture'
+		},{
+			name:'<i class="icon-adjust"></i> 切换主题',num:'theme','icon':'adjust'
 		},{
 			name:'<i class="icon-laptop"></i> 新版首页1',num:'jiu','icon':'laptop'
 		},{
@@ -53,6 +55,10 @@ function initbody(){
 					js.location('?a=new');
 					return;
 				}
+				if(d.num=='theme'){
+					changetheme();
+					return;
+				}
 				if(d.num=='user')return;
 				addtabs({num:d.num,url:d.url,name:d.names,icons:d.icon});
 			}
@@ -91,22 +97,27 @@ function initbody(){
 		});
 	}catch(e){}
 	
-	/*
-	var o1 = $('#index-navbar-center');
-	var hei = $('#index-navbar-left').width()+$('#index-navbar-right').width();
-	var wid = winWb()-hei;
-	if(o1.width()>wid){
-		o1.css({width:''+(wid-30)+'px',height:''+$('#index-navbar-right').height()+'px'});
-		$('#index-navbar-right').prepend('<li><a href="javascript:;" onclick="openmobile()"><i class="icon-chevron-down"></i></a></li>');
-	}*/
 }
 
+function changetheme(){
+	var zys = ['#1389D3','#99cc66','#003366','#6666CC','#CC3333','#009966','#333333','#990066','#333300','#333366','#99CC99','#663366','#003399','#338899'];
+	var h 	= '<div style="padding:10px"><table height="20px" class="cursor"><tr>';
+	var nst = '';
+	for(var i=0;i<zys.length;i++){
+		nst = (zys[i]==maincolor) ? '✔':'&nbsp;';
+		h+='<td width="20px" style="color:white;font-size:12px" align="center" onclick="js.location(\'?apptheme='+zys[i].substr(1)+'\')" bgcolor="'+zys[i]+'">'+nst+'</td>';
+	}
+	h+='</tr></table></div>';
+	js.tanbody('color','切换主题',310,200,{
+		html:h
+	});
+}
 
 function _searchmenus(){
 	js.prompt('搜索菜单','请输入搜索菜单名:',function(jg,txt){
 		if(jg=='yes' && txt){
 			$('#menulisttop').html('搜索结果');
-			$('#menulist').html('<div style="padding:30px;" align="center"><img src="images/mloading.gif"></div>');
+			$('#menulist').html('<div style="padding:30px;" align="center">'+js.ling(30)+'</div>');
 			js.ajax(js.getajaxurl('getmenusou','index'),{key:txt}, function(da){
 				showmenula(da);
 			},'post,json');
@@ -123,7 +134,7 @@ function loadmenu(o){
 	if(ico)s1='<i class="icon-'+ico+'"></i> '+s1+'';
 	$('#menulisttop').html(s1);
 	showmenupid = id;
-	$('#menulist').html('<div style="padding:30px;" align="center"><img src="images/mloading.gif"></div>');
+	$('#menulist').html('<div style="padding:30px;" align="center">'+js.ling(30)+'</div>');
 	js.ajax(js.getajaxurl('getmenu','index'),{pid:id,loadci:loadmenuci}, function(da){
 		if(da.menutopid)menutopid=da.menutopid;
 		showmenula(da.menuarr);
@@ -135,27 +146,27 @@ function showmenula(a){
 	hongbadge={};
 	for(i=0; i<a.length; i++){
 		o   = a[i];
-		css1='border-radius:0px;border-left:none;border-right:none;cursor:pointer;TEXT-DECORATION:none';
-		s+='<a class="list-group-item" onClick="clickmenu(this,'+i+',-1,-1)" style="'+css1+'"><i class="icon-'+o.icons+'"></i> '+o.name+'';
+		css1='cursor:pointer;TEXT-DECORATION:none;padding:15px 10px';
+		s+='<div class="hover" onClick="clickmenu(this,'+i+',-1,-1)" style="'+css1+'"><i class="icon-'+o.icons+'"></i> '+o.name+'';
 		if(o.bh && o.stotal==0)s+=' <span class="badge" badge="'+o.bh+'" style="float:none;display:none;background:red;color:white"></span>';
 		if(o.stotal>0)s+='<font color="red" id="hongdian_'+o.num+'" style="display:none">●</font><span style="float:right" id="menu_down_isons_'+o.num+'" class="icon-caret-down"></span>';
-		s+='</a>';
+		s+='</div>';
 		if(o.stotal>0){
 			child = o.children;
 			for(j=0; j<child.length; j++){
 				o = child[j];
-				s+='<a downmenu="'+i+'_'+j+'" class="list-group-item" style="'+css1+';padding-left:30px;background:rgba(0,0,0,0.05);display:none" id="menu_list_'+o.num+'" onClick="clickmenu(this,'+i+','+j+',-1)"><i class="icon-'+o.icons+'"></i> '+o.name+'';
+				s+='<div downmenu="'+i+'_'+j+'" class="hover" style="'+css1+';padding-left:30px;background:rgba(0,0,0,0.05);background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.05);display:none" id="menu_list_'+o.num+'" onClick="clickmenu(this,'+i+','+j+',-1)"><i class="icon-'+o.icons+'"></i> '+o.name+'';
 				if(o.bh){
 					hongbadge[o.bh]=a[i].num;
 					s+=' <span class="badge" badge="'+o.bh+'" style="float:none;display:none;background:red;color:white"></span>';
 				}
 				if(o.stotal>0)s+='<span style="float:right" id="menu_down_isons_'+o.num+'" class="icon-caret-down"></span>';
-				s+='</a>';
+				s+='</div>';
 				if(o.stotal>0){
 					hhild = o.children;
 					for(k=0; k<hhild.length; k++){
 						o = hhild[k];
-						s+='<a downmenu="'+i+'_'+j+'_'+k+'" class="list-group-item" style="'+css1+';padding-left:60px;background:rgba(0,0,0,0.02);display:none" id="menu_list_'+o.num+'" onClick="clickmenu(this,'+i+','+j+','+k+')"><i class="icon-'+o.icons+'"></i> '+o.name+'</a>';
+						s+='<div downmenu="'+i+'_'+j+'_'+k+'" class="hover" style="'+css1+';padding-left:60px;background:rgba(0,0,0,0.02);background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.02);display:none" id="menu_list_'+o.num+'" onClick="clickmenu(this,'+i+','+j+','+k+')"><i class="icon-'+o.icons+'"></i> '+o.name+'</div>';
 					}
 				}	
 			}
@@ -220,7 +231,7 @@ function resizewh(){
 	var h = winHb(),_ht=0;
 	if(get('topheaderid'))_ht=get('topheaderid').offsetHeight;
 	viewwidth = w; 
-	viewheight = h-_ht-44;
+	viewheight = h-_ht-50;
 	$('#indexcontent').css({width:''+viewwidth+'px',height:''+(viewheight)+'px'});
 	$('#tabsindexm').css({width:''+viewwidth+'px'});
 	var nh = h-_ht;
@@ -256,15 +267,15 @@ function clickmenu(o, i, j,k){
 		$('#hongdian_'+a.num+'').hide();//隐藏红点
 		if(j>-1){
 			dxu+=''+j+'_';
-			$('a[downmenu^="'+dxu+'"]').toggle();
+			$('div[downmenu^="'+dxu+'"]').toggle();
 		}
 		var o1	= get('menu_down_isons_'+a.num+'');
 		if(o1.className.indexOf('down')>0){
 			o1.className='icon-caret-up';
-			if(j==-1)$('a[downmenu^="'+dxu+'"]').show();
+			if(j==-1)$('div[downmenu^="'+dxu+'"]').show();
 		}else{
 			o1.className='icon-caret-down';
-			if(j==-1)$('a[downmenu^="'+dxu+'"]').hide();
+			if(j==-1)$('div[downmenu^="'+dxu+'"]').hide();
 		}
 	}else{
 		addtabs(a);
@@ -415,7 +426,7 @@ function addtabs(a){
 	var s = '<td temp="tabs" oncontextmenu="tabsright(\''+num+'\',event);return false;"; nowrap onclick="changetabs(\''+num+'\',1)" id="tabs_'+num+'" class="active"><font>';
 	if(a.icons)s+='<i class="icon-'+a.icons+'"></i>  ';
 	s+=a.name+'</font>';
-	if(!a.hideclose)s+='<span onclick="closetabs(\''+num+'\')"><img src="images/del.png" width="12" height="12"></span>';
+	if(!a.hideclose)s+='<span onclick="closetabs(\''+num+'\')">x</span>';
 	s+='</td>';
 	objtabs.append(s);
 	_changhhhsv(num);
@@ -438,10 +449,10 @@ function addtabs(a){
 		urlpms += ",'"+nus[0]+"':'"+nus[1]+"'";
 	}
 	if(urlpms!='')urlpms = urlpms.substr(1);
-	var bgs = '<div id="mainloaddiv" style="width:'+viewwidth+'px;height:'+viewheight+'px;overflow:hidden;background:#000000;color:white;filter:Alpha(opacity=20);opacity:0.2;z-index:3;position:absolute;left:0px;line-height:'+viewheight+'px;top:0px;" align="center"><img src="images/mloading.gif"  align="absmiddle">&nbsp;加载中...</div>';
+	var bgs = '<div id="mainloaddiv" style="width:'+viewwidth+'px;height:'+viewheight+'px;overflow:hidden;background:#000000;color:white;filter:Alpha(opacity=20);opacity:0.2;z-index:3;position:absolute;left:0px;line-height:'+viewheight+'px;top:0px;" align="center">'+js.ling(30)+'&nbsp;加载中...</div>';
 	$('#indexcontent').append(bgs);
 	a.urlpath = url+'.php';
-	objcont.append('<div temp="content" id="content_'+num+'"></div>');
+	objcont.append('<div temp="content" style="margin:10px;" id="content_'+num+'"></div>');
 	$.ajax({
 		url:'?m=index&a=getshtml&surl='+jm.base64encode(url)+'&num='+num+'&menuname='+jm.base64encode(a.name)+'&urlpms='+jm.base64encode(urlpms)+'',
 		type:'get',
@@ -455,6 +466,7 @@ function addtabs(a){
 				s = s.replace(/\{dir\}/gi, dir);
 				s = s.replace(/\{params\}/gi, "var params={"+urlpms+"};");
 			var obja = $('#content_'+num+'');
+			if(num!='home')s='<div style="background:var(--main-bgcolor);overflow:auto;border-radius:5px"><div style="padding:10px">'+s+'</div></div>';
 			obja.html(s);
 		},
 		error:function(){

+ 68 - 70
webmain/index/tpl_index.html

@@ -3,24 +3,19 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title><?=$da['title']?></title>
-<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/webmain.css"/>
-<link rel="stylesheet" type="text/css" id="mainstylecss" href="<?=$da['stylecss']?>"/>
+<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/rock.css?<?=$nowtime?>"/>
 <link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
-<!--[if IE 7 ]><link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome-ie7.min.css"><![endif]-->
 <link rel="stylesheet" type="text/css" href="web/res/mode/menu/jquery-rockmenu.css"/>
 <link rel="stylesheet" type="text/css" href="mode/plugin/css/jquery-rockdatepicker.css"/>
 <link rel="shortcut icon" href="<?=$da['icon']?>" />
 <script type="text/javascript" src="web/res/js/jquery.1.9.1.min.js"></script>
-<script type="text/javascript" src="js/js.js"></script>
+<script type="text/javascript" src="js/js.js?<?=$nowtime?>"></script>
 <script type="text/javascript" src="js/worker.js"></script>
 <script type="text/javascript" src="js/base64-min.js"></script>
 <script type="text/javascript" src="<?=$da['p']?>/<?=$da['d']?><?=$da['m']?>/<?=$da['m']?>public.js"></script>
-<script type="text/javascript" src="<?=$da['p']?>/<?=$da['d']?><?=$da['m']?>/<?=$da['m']?>script.js"></script>
+<script type="text/javascript" src="<?=$da['p']?>/<?=$da['d']?><?=$da['m']?>/<?=$da['m']?>script.js?<?=$nowtime?>"></script>
 <script type="text/javascript" src="web/res/mode/menu/jquery-rockmenu.js"></script>
 <script type="text/javascript">
-<?php 
-$maincolor = getconfig('apptheme','#1389D3');
-?>
 js.servernow	= '<?=$da['now']?>';
 PROJECT			= '<?=$da['p']?>';
 adminip			= '<?=$da['ip']?>';
@@ -38,62 +33,66 @@ function globalbody(){
 	adminranking= '<?=$da['my']['ranking']?>';
 }
 datesss = 'background:url(mode/icons/date.png) no-repeat right';
-js.winiframewidth = '<?=$da['tanwidth']?>';
-maincolor = '<?=getconfig('apptheme','#1389D3')?>';
+js.winiframewidth = '<?=arrvalue($da, 'tanwidth')?>';
 homestyle = 0;
 </script>
-<style>
 <?php
-$maincolora= c('image')->colorTorgb($maincolor);
-$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
-echo 'body{--main-color:'.$maincolor.'}';
+$colobj = c('color');
+echo $colobj->getApptheme(true, false, true);
+$colorarr = $colobj->getColor();
+$maincolor= $colorarr['color'];
+$height = '60px';
 ?>
+<style>
+.meiheight{align-items:center;height:<?=$height?>;}
+
+.tabsindex div:hover,.tabsindex td:hover{}
+.tabsindex td{height:50px;overflow:hidden;line-height:50px;padding:0px 20px;cursor:pointer;position:relative;}
+.tabsindex span{font-size:12px;color:#aaaaaa;position:absolute;top:2px;right:2px;display:inline-block;height:16px;width:16px;line-height:14px;text-align:center;}
+.tabsindex span:hover{background-color:rgba(0,0,0,0.1);color:white;border-radius:50%}
+.tabsindex .active{background-color:rgba(0,0,0,0.05);}
+.jtcls{height:50px;line-height:50px;overflow:hidden;width:14px;text-align:center;position:absolute;z-index:8;top:50px; background-color:rgba(0,0,0,0.1);right:0px;font-size:12px;cursor:pointer;color:#888888;display:none;top:0px}
+.jtcls:hover{background-color:rgba(0,0,0,0.2);}
+.navindex li{padding:0px 10px;height:<?=$height?>;align-items:center;display:flex}
+.navindex li:hover{background-color:rgba(0,0,0,0.05)}
+#indexmenu .hover:hover{background:var(--main-vgcolor)}
+.navindex a{color:white;TEXT-DECORATION:none;}
 </style>
 </head>
-<body style="padding:0px;margin:0px; overflow:hidden;" scroll="no">
+<body style="padding:0px;margin:0px;overflow:hidden;" scroll="no">
+
 <?php if(isempt($da['homeurl'])){?>
 
-<div id="topheaderid">
-<nav class="navbar navbar-<?=$da['styledev']?> navbar-static-top" id="navtopheader" style="margin:0px;z-index:0">
-	<div>
-		<div class="navbar-header" id="index-navbar-left">
-			<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
-				<span class="sr-only">Toggle</span>
-				<span class="icon-bar"></span>
-				<span class="icon-bar"></span>
-				<span class="icon-bar"></span>
-			</button>
-			<a class="navbar-brand" href="">
-			   <img src="<?=$da['logo']?>" style="display:inline;" align="absmiddle" height="24" width="24"> <?=$da['title']?>
-			</a>
-		</div>
-		<div class="collapse navbar-collapse" id="app-navbar-collapse">
-			<ul class="nav navbar-nav" id="index-navbar-center" style="overflow:hidden;">
-				<?php foreach($da['topmenu'] as $k=>$rs){
-					$str = '<li pmenuid="'.$rs['id'].'" title="'.lang($rs['name'],'menu').'" icon="'.$rs['icons'].'"><a>';
-					if($rs['icons'])$str.='<i class="icon-'.$rs['icons'].'"></i> ';
-					$str.=''.lang($rs['name'],'menu').'</a></li>';
-					echo $str;
-				}
-				?>
-			</ul>
-			<ul class="nav navbar-nav navbar-right" id="index-navbar-right">
-				<?php 
-				if(getconfig('mobile_show',true))echo '<li><a href="javascript:;" onclick="openmobile()"><i class="icon-tablet"></i> '.lang('手机版').'</a></li>';
-				if(getconfig('reim_show', true))echo '<li><a href="javascript:;" onclick="openreim(this)"><span><i class="icon-comments-alt"></i> REIM <font class="badge red" id="reim_stotal" style="font-size:12px;background:red;color:white"></font></span></a></li>';
-				?>
-				<li id="indexuserl">
-					<a href="javascript:;">
-						<div style="padding-right:10px">
-						<img style="width:18px;height:18px;border-radius:50%" id="myface" src="<?=$da['face']?>" align="absmiddle">
-						<?=$da['adminname']?><span class="caret"></span>
-						</div>
-					</a>
-				</li>
-			</ul>
-		</div>
+<div id="topheaderid" class="meiheight" style="background:<?=$maincolor?>;background:var(--main-color);color:white;display:flex;cursor:pointer">
+	<div onclick="js.reload()" style="padding:0px 10px;height:24px;overflow:hidden">
+		<img src="<?=$da['logo']?>" height="24" width="24"> 
 	</div>
-</nav>
+	<div onclick="js.reload()" style="padding-right:15px;font-size:18px">
+		<?=$da['title']?>
+	</div>
+	<div style="flex:1">
+		<ul id="index-navbar-center" class="navindex" style="overflow:hidden;display:flex;">
+			<?php foreach($da['topmenu'] as $k=>$rs){
+				$str = '<li pmenuid="'.$rs['id'].'" title="'.lang($rs['name'],'menu').'" icon="'.$rs['icons'].'"><a>';
+				if($rs['icons'])$str.='<i class="icon-'.$rs['icons'].'"></i> ';
+				$str.=''.lang($rs['name'],'menu').'</a></li>';
+				echo $str;
+			}
+			?>
+		</ul>
+	</div>
+	<ul style="display:flex;align-items:center" class="navindex">
+		<?php 
+		if(getconfig('mobile_show',true))echo '<li onclick="openmobile()"><i class="icon-tablet"></i>手机版</li>';
+		if(getconfig('reim_show', true))echo '<li  onclick="openreim(this)"><span><i class="icon-comments-alt"></i>REIM <font class="badge red" id="reim_stotal" style="font-size:12px;background:red;color:white"></font></span></li>';
+		?>
+		<li id="indexuserl" >
+			<div>
+			<img style="width:18px;height:18px;border-radius:50%" id="myface" src="<?=$da['face']?>" align="absmiddle">
+			<?=$da['adminname']?> <i class="icon-caret-down"></i>
+			</div>
+		</li>
+	</ul>
 </div>
 <?php }?>
 
@@ -104,20 +103,19 @@ echo 'body{--main-color:'.$maincolor.'}';
 	<td >
 		
 	<div id="indexmenu" style="width:200px;overflow:hidden;">
-		<ul class="list-group" style="margin:0">
-			<li style="border-radius:0px;border-left:none;border-right:none;border-top:none;cursor:pointer;border-bottom:0px" class="list-group-item list-group-item-info"><b id="menulisttop">基本</b>
+		<ul style="height:50px;line-height:50px;padding:0px 10px;background:var(--main-hgcolor)">
+			<li style="border-radius:0px;border-left:none;border-right:none;border-top:none;cursor:pointer;border-bottom:0px"><b id="menulisttop">基本</b>
 			<span style="float:right"><i id="indesearchmenu" class="icon-search"></i>&nbsp; &nbsp;<i id="reordershla" class="icon-reorder cursor"></i></span>
 			</li>
 		</ul>
-		<div style="overflow:auto;height:200px;" id="menulist">
-			<ul class="list-group" style="margin:0" id="menushow">
-			</ul>
+		<div style="overflow:auto;height:200px;background:var(--main-bgcolor)" id="menulist">
+			<div id="menushow"></div>
 		</div>
 	</div>
-	<div id="indexmenuss" style="display:none;background:rgba(0,0,0,0.3)" class="menulistbg cursor"><i class="icon-reorder"></i><br>打<br>开<br>导<br>航</div>
+	<div id="indexmenuss" style="display:none;background:rgba(0,0,0,0.1);text-align:center;padding:5px 2px" class="cursor"><i class="icon-reorder"></i><br>打<br>开<br>导<br>航</div>
 	</td>
 	<td>
-		<div id="indexsplit" style="overflow:hidden;width:5px;background:rgba(0,0,0,0.1)"></div>
+		<div id="indexsplit" style="overflow:hidden;width:5px;background:rgba(0,0,0,0.05)"></div>
 	</td>
 	<?php }?>
 	<td width="100%">
@@ -125,21 +123,21 @@ echo 'body{--main-color:'.$maincolor.'}';
 			<div class="jtcls" id="jtcls_left" onclick="_changesrcool(1)">&gt;</div>
 			<div class="jtcls" id="jtcls_right" onclick="_changesrcool(-1)" style="left:0px">&lt;</div>
 			
-			<div class="panel panel-default" style="border:none;border-radius:0;margin-bottom:0">
-			<div id="tabsindexm" class="panel-heading tabsindex" style="border:none;border-radius:0;padding:0px;overflow:hidden;">
-			<table border="0" cellspacing="0" cellpadding="0"><tr id="tabs_title"></tr></table>
-			</div>
+			<div style="border:none;background:var(--main-hgcolor);height:50px;overflow:hidden">
+				<div id="tabsindexm" class="tabsindex" style="border:none;border-radius:0;padding:0px;overflow:hidden;">
+				<table border="0" cellspacing="0" cellpadding="0"><tr id="tabs_title"></tr></table>
+				</div>
 			</div>
+			
 			<div id="indexcontent" style="overflow:auto;position:relative;">
-				<div id="content_allmainview" style="margin:10px;"></div>
+				<div id="content_allmainview"></div>
 			</div>
 		</div>
 	</td>
 </tr>
 </table>
-<script src="mode/bootstrap3.3/bootstrap.min.js"></script>
-<script type="text/javascript" src="mode/bootstrapplugin/jquery-bootstable.js"></script><!--表格插件-->
-<script type="text/javascript" src="mode/bootstrapplugin/jquery-bootsform.js"></script><!--表单插件-->
+<script type="text/javascript" src="mode/bootstrapplugin/jquery-bootstable.js?<?=$nowtime?>"></script><!--表格插件-->
+<script type="text/javascript" src="mode/bootstrapplugin/jquery-bootsform.js?<?=$nowtime?>"></script><!--表单插件-->
 <script type="text/javascript" src="mode/bootstrapplugin/jquery-bootstree.js"></script><!--表格树形插件-->
 <script type="text/javascript" src="mode/plugin/jquery-rockdatepicker.js"></script><!--日期选择插件-->
 <script type="text/javascript" src="web/res/js/jquery-imgview.js"></script><!--图片预览-->

+ 15 - 20
webmain/login/tpl_login.html

@@ -1,23 +1,19 @@
 <!DOCTYPE html>
 <html lang="zh-CN">
 <head>
-<!--<meta http-equiv="X-UA-Compatible" content="IE=edge">-->
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title><?=$da['title']?></title>
-<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/css.css"/>
+<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/rock.css"/>
 <link rel="shortcut icon" href="favicon.ico" />
 <script type="text/javascript" src="js/jquery.js"></script>
 <script type="text/javascript" src="js/js.js"></script>
 <script type="text/javascript" src="js/base64-min.js"></script>
 <script type="text/javascript" src="<?=$da['p']?>/<?=$da['d']?><?=$da['m']?>/<?=$da['m']?>script.js"></script>
-<style>
-<?php 
-$maincolor = getconfig('apptheme','#1389D3');
-$maincolora= c('image')->colorTorgb($maincolor);
-$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
-echo 'body{--main-color:'.$maincolor.';background:rgba('.$maincolors.',0.05)}';
+<?php
+echo c('color')->getApptheme();
 ?>
-.lmaisft{width:450px;border-radius:10px;text-align:left;background:white;border:1px #dddddd solid;}
+<style>
+.lmaisft{width:450px;border-radius:10px;text-align:left;background:var(--main-bgcolor);border:var(--border);}
 .box{box-shadow:0px 5px 15px 1px rgba(0,0,0,0.1);}
 .btn-danger{background-color:#d9534f;}
 </style>
@@ -25,14 +21,13 @@ echo 'body{--main-color:'.$maincolor.';background:rgba('.$maincolors.',0.05)}';
 
 
 <body>
-
 <div align="center" style="position:absolute;width:100%">
-	<div id="topheih" class="blank40"></div>
+	<div id="topheih" style="height:40px"></div>
 
 	<div style="font-size:30px"><b><?=$da['title']?></b></div>
-	<div class="blank30"></div>
+	<div style="height:30px"></div>
 	<div class="lmaisft box">
-		<div class="blank20"></div>
+		<div style="height:20px"></div>
 		<div id="mainlogin">
 		
 		<div  align="center"><img title="<?=URL?>" class="box" onclick="location.reload()" style="border-radius:50%;border:1px #ffffff solid; background:white" src="images/logo.png" id="imglogo" align="absmiddle" height="100" width="100"><b style="font-size:22px"></b></div>
@@ -46,7 +41,7 @@ echo 'body{--main-color:'.$maincolor.';background:rgba('.$maincolors.',0.05)}';
 					<div><input type="text" style="height:40px;width:300px;border-radius:5px" class="input" onKeyUp="if(event.keyCode==13)getpassobj().focus()" value="<?=$da['ca_adminuser']?>"  placeholder="请输入用户名/姓名/手机号/邮箱" name="adminuser" ></div>
 				</div>
 
-				<div class="blank30"></div>
+				<div style="height:30px"></div>
 				<div>
 					<div><input  style="height:40px;width:300px;border-radius:5px" class="input"  onKeyUp="if(event.keyCode==13)loginsubmit()" value="<?php if($da['ca_rempass']=='1')echo $da['ca_adminpass'];?>"   type="password" placeholder="请输入密码"></div>
 				</div>
@@ -69,17 +64,17 @@ echo 'body{--main-color:'.$maincolor.';background:rgba('.$maincolors.',0.05)}';
 				<div>
 					<input type="text" style="height:40px;width:300px;border-radius:5px" class="input" onKeyUp="if(event.keyCode==13)form('adminmobileyzm').focus()" maxlength="11" value=""  placeholder="请输入手机号" name="adminmobile" >
 				</div>
-				<div class="blank30"></div>
+				<div style="height:30px"></div>
 				<div>
 					<table><tr>
-					<td><input type="text" style="height:40px;width:200px;border-top-left-radius:5px;border-bottom-left-radius:5px" class="input" onKeyUp="" maxlength="6" placeholder="请输入验证码" name="adminmobileyzm" ></td>
-					<td><input type="button" onclick="getyzm(this)" style="height:42px;width:100px;border-top-right-radius:5px;border-bottom-right-radius:5px" value="获取验证码" class="webbtn" ></td>
+					<td><input type="text" style="border-radius:0;height:40px;width:200px;border-top-left-radius:5px;border-bottom-left-radius:5px" class="input" onKeyUp="" maxlength="6" placeholder="请输入验证码" name="adminmobileyzm" ></td>
+					<td><input type="button" onclick="getyzm(this)" style="height:42px;width:100px;border-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px" value="获取验证码" class="webbtn" ></td>
 					</tr></table>
 				</div>
 			</div>
 			
 
-			<div class="blank20"></div>
+			<div style="height:20px"></div>
 
 			<div align="left">
 				<button type="button" onClick="loginsubmit()" style="padding:10px 30px;border-radius:5px" class="webbtn" name="button">登录</button>&nbsp;<span id="msgview"><?php if(getconfig('regbool'))echo '<a class="zhu" href="?m=reg">注册</a>';?></span>
@@ -92,8 +87,8 @@ echo 'body{--main-color:'.$maincolor.';background:rgba('.$maincolors.',0.05)}';
 
 
 
-	<div class="blank20"></div>
-	<div align="center" style="height:30px;line-height:30px;color:#555555">
+	<div style="height:20px"></div>
+	<div align="center" style="height:30px;line-height:30px;color:#888888">
 		Copyright &copy;<?=date('Y')?> <?=$da['title']?>v<?=VERSION?> &nbsp; - &nbsp; 
 		版权所有:<a href="<?=URLY?>" class="zhu" target="_blank">信呼开发团队</a>
 		<?php 

+ 4 - 0
webmain/main/flow/flowAction.php

@@ -1050,6 +1050,9 @@ class mode_'.$modenum.'ClassAction extends inputAction{
 		if(!$mrs)return '模块不存在';
 		$num 	= $mrs['num'];
 		if($num!='demo' && $mrs['type']=='系统')return '系统类型模块不能删除清空';
+		
+		/*
+		//防止误删2024-09-11已弃用
 		$flow	= m('flow')->initflow($num);
 		$table 	= $mrs['table'];
 		$where 	= $mrs['where'];
@@ -1066,6 +1069,7 @@ class mode_'.$modenum.'ClassAction extends inputAction{
 			$flow->loaddata($ssid, false);
 			$flow->deletebill('清空模块数据', false);
 		}
+		*/
 		
 		$name 	= $mrs['name'];
 		if($dm){

+ 21 - 1
webmain/main/flow/rock_flow_course.php

@@ -295,6 +295,26 @@ $(document).ready(function(){
 });
 </script>
 
+<style>
+/*图形样式*/
+.rf{position:absolute;background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.2);border:var(--border);text-align:center;max-width:150px;min-width:100px;border-radius:5px}
+.rf_nei{padding:5px 10px}
+.rf_ract{}
+.rf_yuan{border-radius:20%}
+.rf-text{font-size:14px;word-wrap:nowrap;height:20px;line-height:20px;overflow:hidden}
+.rf-texts{font-size:12px;word-wrap:nowrap;height:20px;line-height:20px;overflow:hidden}
+
+.rf-txt{position:absolute;color:var(--main-color)}
+.rf-active{background-color:#60C2F7}
+
+/*箭头的*/
+.rf_shu{position:absolute;height:100px;border:none;width:12px;overflow:hidden;transform-origin:0px 0px;-webkit-transform-origin:0px 0px;-ms-transform-origin:0px 0px;-moz-transform-origin:0px 0px;}
+.rf_shu1{width:6px;height:94px;background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.2);margin-left:3px}
+.rf_shu2{width:0px;height:0px; overflow:hidden;border-width:6px;border-style:solid;border-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.2) transparent transparent transparent;}
+
+.rf_shus{position:absolute;height:100px;border:none;width:6px;overflow:hidden;background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.1)}
+.rf_hens{position:absolute;height:6px;border:none;width:100px;overflow:hidden;background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.1)}
+</style>
 
 <table width="100%">
 <tr valign="top">
@@ -341,7 +361,7 @@ $(document).ready(function(){
 	
 	<div id="view_{rand}"></div>
 	<div class="blank10"></div>
-	<div id="mainvss{rand}" style="background:#f1f1f1;border:1px #dddddd solid;border-radius:5px;padding:10px;display:none;">
+	<div id="mainvss{rand}" style="background:rgba(0,0,0,0.1);border:var(--border);border-radius:5px;padding:10px;display:none;">
 	<div oncontextmenu="return false" id="mainv{rand}" class="notsel" style="position:relative;height:auto;"></div>
 	</div>
 </td>

+ 1 - 1
webmain/main/goods/goodsAction.php

@@ -305,7 +305,7 @@ class goodsClassAction extends Action
 		}
 		$where .= m('admin')->getcompanywhere(1,'a.');
 		return array(
-			'where' => 'and a.`status`=1 and a.`state`<>1 '.$where.'',
+			'where' => 'and a.`status`=1 and a.`type`<>6 and a.`state`<>1 '.$where.'',
 			'table' => '`[Q]'.$table.'` a left join `[Q]flow_bill` b on a.id=b.mid and b.`table`=\''.$table.'\'',
 			'fields' => 'a.id,a.applydt,a.optdt,a.`explain`,a.`state`,a.`type`,b.uname,b.sericnum,b.udeptname'
 		);

+ 2 - 2
webmain/main/kaoqin/rock_kaoqin_geren.php

@@ -18,7 +18,7 @@ $(document).ready(function(){
 				var d1,s='';
 				for(d1 in da){
 					s=da[d1];
-					if(s!='')$('#s'+d1+'_{rand}').html('<div style="border-top:1px #eeeeee solid;margin-top:3px;">'+s+'</div>');
+					if(s!='')$('#s'+d1+'_{rand}').html('<div style="border-top:var(--border);margin-top:3px;">'+s+'</div>');
 				}
 				s='';var toarr = da['total'];
 				for(d1 in toarr)s+=','+d1+':'+toarr[d1]+'';
@@ -73,5 +73,5 @@ $(document).ready(function(){
 	</table>
 </div>
 <div class="blank10"></div>
-<div style="height:30px;line-height:30px;border-top:1px #dddddd solid">&nbsp;统计:<span id="total_{rand}"></span></div>
+<div style="height:30px;line-height:30px;border-top:var(--border)">&nbsp;统计:<span id="total_{rand}"></span></div>
 <div id="veiw_{rand}"></div>

+ 2 - 0
webmain/main/salary/salaryAction.php

@@ -58,6 +58,8 @@ class salaryClassAction extends Action
 	
 	public function xinziafter($table, $rows)
 	{
+		$heji = 0;
+		
 		return array(
 			'rows' => $rows,
 			'isdaochu' => m('view')->isdaochu($this->flow->modeid, $this->adminid)

+ 3 - 3
webmain/model/adminModel.php

@@ -794,15 +794,15 @@ class adminClassModel extends Model
 	
 	public function getcompanyid($uid=0)
 	{
-		$comid = (int)$this->rock->session('companyid','0');
-		if($comid==0)$comid = $this->getcompanyinfo($uid,2);
+		//$comid = (int)$this->rock->session('companyid','0');
+		$comid = $this->getcompanyinfo($uid,2);
 		if(!$comid)$comid=1;
 		return $comid;
 	}
 	
 	public function setcompanyid($comid)
 	{
-		$this->rock->setsession('companyid', $comid);
+		//$this->rock->setsession('companyid', $comid);
 		return $comid;
 	}
 	

+ 10 - 6
webmain/model/flow/carmreseModel.php

@@ -32,14 +32,18 @@ class flow_carmreseClassModel extends flowModel
 	//可预定的车辆
 	public function getcardata()
 	{
-		$where= $this->adminmodel->getcompanywhere(1);
-		$rows = m('carm')->getall("`ispublic`=1 and `state`=1 ".$where."",'carnum as name,id as value');
-		$arrs = $this->db->getrows('[Q]carmrese','`status`=1 group by carid','max(kmend)kmend,carid');
-		$arrsa= array();
-		foreach($arrs as $k=>$rs)$arrsa[$rs['carid']]=$rs['kmend'];
+		$where	= $this->adminmodel->getcompanywhere(1);
+		$rows 	= m('carm')->getall("`ispublic`=1 and `state`=1 ".$where."",'carnum as name,id as value');
+		$db 	= m('carmrese');
 		//读取车辆最后公里数
 		foreach($rows as $k=>$rs){
-			$rows[$k]['kmstart'] = $this->rock->arrvalue($arrsa, $rs['value']);
+			$onrs = $db->getone("`status`=1 and `carid`=".$rs['value']." and ifnull(`kmend`,'')<>''", '`kmend`,`kmstart`','`kmend` desc');
+			$km   = '';
+			if($onrs){
+				$km = $onrs['kmend'];
+				if(isempt($km))$km = $onrs['kmstart'];
+			}
+			$rows[$k]['kmstart'] = $km;
 		}
 		return $rows;
 	}

+ 54 - 0
webmain/model/flow/custpriceModel.php

@@ -0,0 +1,54 @@
+<?php
+class flow_custpriceClassModel extends flowModel
+{
+	public $minwidth	= 600;//子表最小宽
+
+	public $goodsobj;
+	
+	public function initModel()
+	{
+		$this->goodsobj 	= m('goods');
+	}
+	
+	public function flowxiangfields(&$fields)
+	{
+		$fields['base_name'] 	= '报价人';
+		$fields['base_deptname'] = '报价人部门';
+		$fields['base_sericnum'] = '报价单号';
+		return $fields;
+	}
+	
+	public function flowsearchfields()
+	{
+		$arr[] = array('name'=>'报价人...','fields'=>'uid');
+		return $arr;
+	}
+	
+	
+	
+	//子表数据替换处理
+	protected function flowsubdata($rows, $lx=0){
+		$db = m('goods');
+		foreach($rows as $k=>$rs){
+			$one = $db->getone($rs['aid']);
+			if($one){
+				$name = $one['name'];
+				if(!isempt($one['xinghao']))$name.='('.$one['xinghao'].')';
+				if($lx==1)$rows[$k]['aid'] = $name; //1展示时
+				$rows[$k]['temp_aid'] = $name;
+			}
+		}
+		return $rows;
+	}
+	
+	//$lx,0默认,1详情展示,2列表显示
+	public function flowrsreplace($rs, $lx=0)
+	{
+		//读取物品
+		if($lx==2){
+			$rs['wupinlist'] = $this->goodsobj->getgoodninfo($rs['id'], 1);
+		}
+		return $rs;
+	}
+
+}

+ 8 - 1
webmain/model/flow/custractModel.php

@@ -111,7 +111,14 @@ class flow_custractClassModel extends flowModel
 				$arr['type'] 	= $this->rs['type'];
 				$arr['explain'] = $arrs['sm'];
 				$arr['money'] 	= $money;
-				m('custfina')->insert($arr);
+				$newid = m('custfina')->insert($arr);
+				
+				if($this->rs['type']=='0'){
+					m('flow')->submit('custfina', $newid, '提交');
+				}else{
+					m('flow')->submit('custfinb', $newid, '提交');
+				}
+				
 			}
 		}
 	}

文件差異過大導致無法顯示
+ 0 - 0
webmain/model/flow/flow.php


+ 9 - 3
webmain/model/flow/hrsalaryModel.php

@@ -219,7 +219,7 @@ class flow_hrsalaryClassModel extends flowModel
 	}
 	
 	//导入之前判断
-	public function flowdaorubefore($rows)
+	public function flowdaorubefore($rows, &$errdata)
 	{
 		$inarr	= array();
 		$uarra	= array();
@@ -231,10 +231,16 @@ class flow_hrsalaryClassModel extends flowModel
 			
 			$arr 	= $rs;
 			$urs 	= $this->adminmodel->getone("`name`='$name'");
-			if(!$urs)continue;
+			if(!$urs){
+				$errdata[$rs['drxu']] = '('.$name.')用户不存在';
+				continue;
+			}
 			
 			$to 	= $this->rows("`xuid`='".$urs['id']."' and `month`='$month'");
-			if($to>0)continue;//已经存在了
+			if($to>0){
+				$errdata[$rs['drxu']] = '('.$name.'的'.$month.')已经存在了';
+				continue;//已经存在了
+			}
 			
 			$arr['month'] = $month;
 			$arr['xuid'] = $urs['id'];

+ 3 - 1
webmain/model/flow/userModel.php

@@ -205,7 +205,9 @@ class flow_userClassModel extends flowModel
 			//读取部门Id
 			$deptarr 	= $this->getdeptid($rs['deptname'], $dbs);
 			
-			if($deptarr['deptid']==0)return '行'.($k+1).'找不到顶级部门['.$rs['deptname'].'],请写完整部门路径如:'.$dname.'/'.$rs['deptname'].'';
+			if($deptarr['deptid']==0){
+				$arr['drerr'] = '找不到顶级部门['.$rs['deptname'].'],请写完整部门路径如:'.$dname.'/'.$rs['deptname'].'';
+			}
 			
 			foreach($deptarr as $k1=>$v1)$arr[$k1]=$v1;
 			

+ 1 - 1
webmain/model/goodsModel.php

@@ -52,7 +52,7 @@ class goodsClassModel extends Model
 	public function getdaishu()
 	{
 		$where = m('admin')->getcompanywhere(1);
-		return $this->db->rows('`[Q]goodm`','`status`=1 and `state`<>1 '.$where.'');
+		return $this->db->rows('`[Q]goodm`','`status`=1 and `type`<>6 and `state`<>1 '.$where.'');
 	}
 	
 	//判断是否存在相同库存

+ 1 - 1
webmain/model/loginModel.php

@@ -26,7 +26,7 @@ class loginClassModel extends Model
 		$yanzm = $this->rock->request('yanzm');//验证码
 		$ltype = (int)$this->rock->request('ltype',0);//登录类型,1是手机+验证码
 		if(!isempt($yanzm) && strlen($yanzm)!=6)return '验证码必须是6位数字';
-		$cfroar= explode(',', 'pc,reim,weixin,appandroid,mweb,webapp,nppandroid,nppios,nppiosnew');
+		$cfroar= explode(',', 'pc,reim,weixin,appandroid,mweb,webapp,nppandroid,nppios,nppiosnew,androidapp');
 		if(!in_array($cfrom, $cfroar))return 'not found cfrom['.$cfrom.']';
 		if($user=='')return '用户名不能为空';
 		if($pass==''&&strlen($token)<8 && $ltype==0)return '密码不能为空';

+ 11 - 8
webmain/public/upload/tpl_upload.html

@@ -3,6 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <script language="javascript" src="js/jquery.js"></script>
 <script language="javascript" src="js/js.js"></script>
+<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/rock.css"/>
 <title><?=$da['title']?></title>
 <script language="javascript">
 var callback= '<?=$params['callback']?>',
@@ -333,11 +334,10 @@ document.ondrop=function(e){e.preventDefault();};
 $maincolor = getconfig('apptheme','#1389D3');
 ?>
 .alert{ padding:1px 5px; border:1px #996 solid; background-color:#ffffff; color:<?=$maincolor?>}
-*{ font-size:14px;}
-.mdiv{ border-bottom:1px #cccccc solid;display:inline-block;width:100%}
+.mdiv{ border-bottom:var(--border);display:inline-block;width:100%}
 .mdiv div{ float:left; line-height:22px; overflow:hidden; padding:5px 3px}
-.div01{ width:55%;text-align:left;border-right:1px #cccccc solid;}
-.div02{ width:15%; text-align:center;border-right:1px #cccccc solid;}
+.div01{ width:55%;text-align:left;border-right:var(--border);}
+.div02{ width:15%; text-align:center;border-right:var(--border);}
 .div03{ width:25%;text-align:left}
 #prou{overflow:hidden; background-color:#ffffff; margin:5px 0px; border:1px #666 solid;padding:0px; text-align:left;font-size:12px; position:relative; height:18px;line-height:18px}
 #prou span{ left:5px; position:absolute; top:2px}
@@ -345,24 +345,27 @@ $maincolor = getconfig('apptheme','#1389D3');
 button{ cursor:pointer}
 #footmsg{ text-align:left; padding:3px}
 .quebntha{position:fixed;right:10px;bottom:10px;}
-.webbtn{color:#ffffff;opacity:0.8; background-color:<?=$maincolor?>; padding:5px 8px; border:none; cursor:pointer;font-size:14px;outline:none;border-radius:5px}
-.webbtn:disabled{background-color:#aaaaaa; color:#eeeeee}
-.webbtn:hover{box-shadow:0px 0px 5px rgba(0,0,0,0.3);opacity:1}
+.webbtn{height:34px}
 </style>
+<?php
+echo c('color')->getApptheme();
+?>
 </head>
 <body style="padding:1px" onLoad="up.init()">
 <center>
 <form name="myform" style="display:none"><input type="file" name="inputfile" id="inputfileid" <?php if($params['maxup']!=1)echo 'multiple';?> onChange="up.change(this)"></form>
 <div align="left" style="padding:3px"></div>
+<div style="padding:0px 5px">
 <table width="100%" border="0" cellspacing="0" cellpadding="0">
   <tr>
     <td align="left"><button type="button" class="webbtn" id="addbtn" onClick="up.add()">+添加文件</button>&nbsp; <button type="button" class="webbtn" id="clearbtn" onClick="up.clear()">-清除所有文件</button>&nbsp; <button type="button" class="webbtn" onClick="up.closeaa()">关闭</button></td>
     <td align="right"><button type="button" class="webbtn" id="startbtn" onClick="up.upload()">开始上传</button></td>
   </tr>
 </table>
+</div>
 <div style="overflow:hidden; height:5px"></div>
 <div id="prou" style="display:none"><div id="proudiv"></div><span id="proushow">等待上传...</span></div>
-<div class="mdiv" style="background-color:#eeeeee">
+<div class="mdiv" style="background-color:var(--main-bgcolor);border-top:var(--border)">
 <div class="div01">文件名</div>
 <div class="div02">大小</div>
 <div class="div03">状态</div>

+ 13 - 11
webmain/reim/index/tpl_index_xina.html

@@ -36,14 +36,16 @@
 .lefticons:hover{background: rgba(0,0,0,0.05);}
 .leftactive {background: rgba(0,0,0,0.1);}
 <?php
-$col = getconfig('apptheme','#1389D3');
-$cola= c('image')->colorTorgb($col);
-echo 'body{--main-color:'.$col.'}.leftcls{background:'.$col.'}.webbtn{background:'.$col.'}.qipao .qipaocontright{background:rgba('.$cola[0].','.$cola[1].','.$cola[2].',0.4)}.qipao .qipaoright{border-color: transparent transparent transparent rgba('.$cola[0].','.$cola[1].','.$cola[2].',0.4)}';
+$cola= c('color')->getColor();
+$cols= $cola['colors'];
+echo '.qipao .qipaocontright{background:rgba('.$cols.',0.4)}.qipao .qipaoright{border-color: transparent transparent transparent rgba('.$cols.',0.4)}';
 ?>
 </style>
+<?php
+echo c('color')->getApptheme();
+?>
 <script>
 companynum 		= '<?=COMPANYNUM?>';
-maincolor 		= '<?=$col?>';
 js.servernow	= '<?=$da['now']?>';
 PROJECT			= '<?=$da['p']?>';
 adminip			= '<?=$da['ip']?>';
@@ -67,7 +69,7 @@ function winfocus(){
 </script>
 </head>
 
-<body style="background:#f5f5f5;border:0px rgba(0,0,0,0.2) solid;overflow:hidden" oncontextmenu="return false" scroll="no">
+<body style="overflow:hidden" oncontextmenu="return false" scroll="no">
 
 <div class="cursor lefticons" align="center" id="reimcog" style="position:fixed;bottom:0px;left:0px;width:60px;line-height:50px;height:50px;color:#ffffff;font-size:16px;"><i class="icon-reorder"></i></div>
 
@@ -75,7 +77,7 @@ function winfocus(){
 
 	<table style="width:100%;" height="100%">
 	<tr valign="top">
-	<td height="100%" style="border-right:0px #dddddd solid" width="60" class="leftcls">
+	<td height="100%" style="background:var(--main-color)" width="60" class="leftcls">
 		<div align="center" style="width:60px;overflow:hidden">
 			<div style="margin-top:20px"><img title="<?=$da['adminname']?>" onclick="reim.openmyinfo()" src="images/noface.png" id="myface" style="border-radius:50%;" align="absmiddle" height="40" width="40">
 			</div>
@@ -103,8 +105,8 @@ function winfocus(){
 			</div>
 		</div>
 	</td>
-	<td width="220px" id="maincenter" bgcolor="#ebebeb" style="border-right:1px #dddddd solid">
-		<div style="height:60px;overflow:hidden" align="center"><input id="reim_keysou" placeholder="搜索联系人/会话/应用" style="border:none;background-color:#d4d6d9; width:150px;height:30px;border-radius:5px;margin-top:13px;padding:0px 10px" type="text"> &nbsp;&nbsp;<span class="cursor" id="homeplus" style="color:#999999"><i class="icon-plus"></i></span></div>
+	<td width="220px" id="maincenter" style="border-right:var(--border);background:rgba(<?=$cols?>,0.03)">
+		<div style="height:60px;overflow:hidden" align="center"><input id="reim_keysou" placeholder="搜索联系人/会话/应用" style="border:none;background-color:rgba(0,0,0,0.1); width:150px;height:30px;border-radius:5px;margin-top:13px;padding:0px 10px" type="text"> &nbsp;&nbsp;<span class="cursor" id="homeplus" style="color:#999999"><i class="icon-plus"></i></span></div>
 		
 		<div id="centlist" style="height:300px;overflow:hidden;position:relative;width:220px">
 			<div id="centshow0">
@@ -114,10 +116,10 @@ function winfocus(){
 				</div>
 			</div>
 			<div id="centshow1" style="display:none">
-				<div style="padding:5px;color:#aaaaaa;border-bottom:1px #e1e1e1 solid">组织结构</div>
+				<div style="padding:5px;color:#aaaaaa;border-bottom:var(--border)">组织结构</div>
 				<div id="showdept"></div>
 				<div id="showgroup"></div>
-				<div align="center" style="padding:10px;"><a onclick="reim.initload(true)" style="font-size:12px;color:#bbbbbb" href="javascript:;"><i class="icon-refresh"></i> 刷新</a></div>
+				<div align="center" style="padding:10px;"><a onclick="reim.initloads()" id="mainreload" style="font-size:12px;color:#bbbbbb" href="javascript:;"><i class="icon-refresh"></i> 刷新</a></div>
 			</div>
 			<?php if(getconfig('rockkefu_url')){?>
 			<div id="centshow3" style="display:none">
@@ -131,7 +133,7 @@ function winfocus(){
 	</td>
 	<td>
 		<div id="viewzhulist" style="height:300px;overflow:hidden;">
-			<div align="center" tabs="home" id="tabs_home" style="margin-top:150px;font-size:150px;color:#e8e8e8">
+			<div align="center" tabs="home" id="tabs_home" style="margin-top:150px;font-size:150px;color:rgba(0,0,0,0.05);">
 				<i class="icon-comments-alt"></i>
 			</div>	
 		</div>

+ 7 - 14
webmain/reim/login/tpl_login_xina.html

@@ -9,7 +9,7 @@
 <meta name="format-detection" content="telephone=no"/>
 <meta name="format-detection" content="email=no"/>
 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"/>
-<link rel="stylesheet" type="text/css" href="web/res/css/webimcss.css"/>
+<link rel="stylesheet" type="text/css" href="webmain/css/rock.css?<?=time()?>"/>
 <link rel="shortcut icon" id="icon_show" href="favicon.ico" />
 <script type="text/javascript" src="js/jquery.js"></script>
 <script type="text/javascript" src="js/js.js"></script>
@@ -19,12 +19,11 @@
 .lmaisft{text-align:center;-webkit-app-region:no-drag;}
 .close{height:20px;width:20px;display:block;text-align:center;line-height:18px;cursor:pointer;font-size:16px}
 .close:hover{background:#ff1118;color:white}
-.inputlog{height:40px;width:220px;border-radius:5px}
-<?php
-$col = getconfig('apptheme','#1389D3');
-echo 'body{--main-color:'.$col.'}';
-?>
+.inputlog{height:40px;width:220px;border-radius:5px;}
 </style>
+<?php 
+echo c('color')->getApptheme();
+?>
 <script>
 CFROM = 'reim';
 var temp_token='';
@@ -268,7 +267,7 @@ function changlogin(){
 }
 </script>
 </head>
-<body style="overflow:hidden;background:#f5f5f5">
+<body style="overflow:hidden">
 
 <div >
 
@@ -303,18 +302,12 @@ function changlogin(){
 				<input type="hidden" name="logintype" value="1">
 			<?php }?>
 			
-				
 				<div>
 					<input type="text" class="input inputlog" onKeyUp="if(event.keyCode==13)get('adminmobileyzm').focus()" maxlength="11" name="adminmobile" placeholder="请输入手机号">
 				</div>
 				<div class="blank20"></div>
 				<div align="center">
-					<table><tr>
-					<td>
-					<input class="input" style="height:40px;width:130px;border-top-left-radius:5px;border-bottom-left-radius:5px" name="adminmobileyzm" id="adminmobileyzm" onKeyUp="if(event.keyCode==13)loginsubmit(1)" maxlength="6" placeholder="请输入验证码">
-					</td>
-					<td><input type="button" onclick="getyzm(this)" style="height:40px;width:90px;border-top-right-radius:5px;border-bottom-right-radius:5px" value="获取验证码" class="webbtn" ></td>
-					</tr></table>
+					<input class="input" style="height:40px;width:130px;border-radius:5px 0px 0px 5px;" name="adminmobileyzm" id="adminmobileyzm" onKeyUp="if(event.keyCode==13)loginsubmit(1)" maxlength="6" placeholder="请输入验证码"><input type="button" onclick="getyzm(this)" style="height:40px;width:90px;border-radius:0px 5px 5px 0px" value="获取验证码" class="webbtn" >
 				</div>
 				
 			

+ 8 - 15
webmain/reim/record/tpl_record_download.html

@@ -10,20 +10,14 @@
 <script type="text/javascript" src="web/res/js/jquery.1.9.1.min.js"></script>
 <script type="text/javascript" src="js/js.js"></script>
 <script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
-<link rel="stylesheet" type="text/css" href="web/res/perfectscrollbar/perfect-scrollbar.css"/>
-<script type="text/javascript" src="web/res/perfectscrollbar/perfect-scrollbar.js"></script>
-<script type="text/javascript" src="web/res/perfectscrollbar/jquery.mousewheel.js"></script>
 <style>
-<?php
-$col = getconfig('apptheme','#1389D3');
-echo 'body{--main-color:'.$col.'}';
-?>
-
-.list{padding:10px 10px;border-top:1px #eeeeee solid}
-.list:hover{background:#f1f1f1}
+.list{padding:10px 10px;border-bottom:var(--border)}
+.list:hover{background:rgba(0,0,0,0.05)}
 </style>
+<?php 
+echo c('color')->getApptheme();
+?>
 <script>
-maincolor='<?=$col?>';
 function initbody(){
 	c.init();
 }
@@ -32,7 +26,6 @@ var c = {
 		this.getsese();
 		$(window).resize(c.getsese);
 		if(nwjsgui)this.showdata();
-		$('#downlist').perfectScrollbar();
 	},
 	getsese:function(){
 		var he = winHb()-50;
@@ -139,11 +132,11 @@ var c = {
 </head>
 
 
-<body style="overflow:hidden;background:white">
-<div id="downlist" style="height:100px;overflow:hidden;position:relative">
+<body style="overflow:hidden;">
+<div id="downlist" style="height:100px;overflow:auto;position:relative">
 
 </div>
-<div style="height:50px;padding:0px 10px;text-align:right;line-height:50px;background:#f1f1f1;border-top:1px #cccccc solid">
+<div style="height:50px;padding:0px 10px;text-align:right;line-height:50px;background:var(--main-vgcolor);border-top:var(--border)">
 	<!--<a class="zhu" title="新增下载" onclick="c.add()"><i class="icon-plus"></i></a>&nbsp;&nbsp;-->
 	<a class="zhu" onclick="js.reload()"><i class="icon-refresh"></i> 刷新</a>&nbsp;&nbsp;
 	<a class="zhu" onclick="c.clearall()"><i class="icon-trash"></i> 清空下载项</a>&nbsp;

+ 9 - 6
webmain/reim/record/tpl_record_history.html

@@ -27,13 +27,16 @@
 <script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
 <style>
 <?php
-$col = getconfig('apptheme','#1389D3');
-$cola= c('image')->colorTorgb($col);
-echo 'body{--main-color:'.$col.'}.leftcls{background:'.$col.'}.webbtn{background:'.$col.'}.qipao .qipaocontright{background:rgba('.$cola[0].','.$cola[1].','.$cola[2].',0.4)}.qipao .qipaoright{border-color: transparent transparent transparent rgba('.$cola[0].','.$cola[1].','.$cola[2].',0.4)}';
+$cola= c('color')->getColor();
+$cols= $cola['colors'];
+echo 'body{.qipao .qipaocontright{background:rgba('.$cols.',0.4)}.qipao .qipaoright{border-color: transparent transparent transparent rgba('.$cols.',0.4)}';
 ?>
 </style>
+<?php
+echo c('color')->getApptheme();
+?>
 <script>
-maincolor='<?=$col?>',adminname='',adminface='',video_bool=false,companynum='';
+adminname='',adminface='',video_bool=false,companynum='';
 date = js.now('Y-m-d');
 function initbody(){
 	reim.outgroup.outunum = js.getoption('outunum');
@@ -88,10 +91,10 @@ function reshow(type,reid){
 </head>
 
 
-<body style="overflow:hidden;background:#f5f5f5">
+<body style="overflow:hidden;">
 <table width="100%">
 <tr>
-	<td bgcolor="#ebebeb" style="border-right:1px #dddddd solid"><div style="width:220px;overflow:hidden;height:200px;position:relative" id="historylist"></div></td>
+	<td style="border-right:var(--border)"><div style="width:220px;overflow:hidden;height:200px;position:relative" id="historylist"></div></td>
 	<td width="100%"><div id="viewzhulist" style="height:100px;overflow:hidden"></div></td>
 </tr>
 </table>

+ 2 - 1
webmain/reim/ying/tpl_ying_daka.html

@@ -10,7 +10,8 @@
 <script type="text/javascript" src="web/res/js/nwjs.js"></script>
 <style>
 <?php
-$col = getconfig('apptheme','#1389D3');
+$cola 	= c('color')->getColor();
+$col	= $cola['color'];
 echo 'body{--main-color:'.$col.'}';
 ?>
 </style>

+ 4 - 0
webmain/system/cog/rock_cog_log.php

@@ -74,6 +74,9 @@ $(document).ready(function(){
 		},
 		loginji:function(){
 			addtabs({name:'登录记录',num:'loginjl',url:'system,cog,login',icons:'legal'});
+		},
+		phperr:function(){
+			js.open('?m=cogini&a=phperr&d=system');
 		}
 	};
 	js.initbtn(c);
@@ -101,6 +104,7 @@ $(document).ready(function(){
 		<button class="btn btn-default" click="loginji" type="button">查看登录记录</button>&nbsp;
 		<button class="btn btn-default" click="qingkong,1" type="button">仅清空异步队列</button>&nbsp;
 		<button class="btn btn-default" click="qingkong,0" type="button">清空全部</button>&nbsp;
+		<button class="btn btn-danger"  click="phperr" type="button">PHP错误信息</button>&nbsp;
 		<button class="btn btn-danger" id="del_{rand}" click="delss" type="button"><i class="icon-trash"></i> 删除</button>
 	</td>
 </tr>

+ 1 - 1
webmain/system/cog/rock_cog_set.php

@@ -266,7 +266,7 @@ $(document).ready(function(){
 		
 		<tr>
 			<td  align="right">PC后端默认主题:</td>
-			<td class="tdinput"><select id="defstype_{rand}" style="width:80px"></select>&nbsp;必须去<a href="<?=URLY?>view_themes.html" target="_blank">下载主题包</a>,否则不能使用</td>
+			<td class="tdinput">(已弃用)<select id="defstype_{rand}" style="width:80px"></select>&nbsp;必须去<a href="<?=URLY?>view_themes.html" target="_blank">下载主题包</a>,否则不能使用</td>
 			
 			<td  align="right">记录用户操作:</td>
 			<td class="tdinput"><select id="useropt_{rand}"  class="form-control"><option value="">不记录</option><option value="1">记录到日志里</option></select></td>

+ 26 - 0
webmain/system/cogini/coginiAction.php

@@ -65,4 +65,30 @@ class coginiClassAction extends Action
 	}
 	
 	
+	
+	public function phperrAction()
+	{
+		echo '<title>PHP错误信息查看</title>';
+		$path = @ini_get('error_log');
+		if(!$path)return '未设置记录php错误路径,去<a href="'.URLY.'view_phperr.html">看看</a>如何设置。';
+		$cont = '无内容';
+		if(file_exists($path) && getconfig('systype')!='demo'){
+			$cont = @file_get_contents($path);
+			$str  = '';
+			if($cont){
+				$arr = explode("\n", $cont);
+				$len = count($arr);
+				for($i=0;$i<$len;$i++){
+					$str1 = $arr[$i];
+					$str2 = str_replace('\\','/', $str1);
+					if(contain($str2, ROOT_PATH)){
+						if($str)$str.='<hr>';
+						$str.=$str1;
+					}
+				}
+			}
+			$cont = $str;
+		}
+		return $cont;
+	}
 }

+ 32 - 27
webmain/system/dept/tpl_dept.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>选择人员</title>
-<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/css.css"/>
+<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/rock.css"/>
 <script type="text/javascript" src="js/jquery.js"></script>
 <script type="text/javascript" src="js/js.js"></script>
 <script type="text/javascript">
@@ -49,14 +49,14 @@ var c = {
 		});
 	},
 	resets:function(lx){
-		var he = winHb()-80;
+		var he = winHb()-90;
 		$('#zxuandiv').css('height',''+he+'px');
 		$('#xuandiv').css('height',''+he+'px');
 		$('#showtype').css('height',''+he+'px');
 	},
 	loaddata:function(iscs){
 		var url = js.getajaxurl('deptuserjson','dept','system',{'changerange':this.changerange,'gtype':'change'});
-		$('#showdiv_0').html('<div align="center" style="margin-top:30px"><img src="images/mloading.gif"></div>')
+		$('#showdiv_0').html('<div align="center" style="margin-top:30px">'+js.ling(30)+'</div>')
 		$.get(url,function(ret){
 			var d = js.decode(ret);
 			ret = d.data;
@@ -278,32 +278,35 @@ var c = {
 	}
 };
 </script>
+<?php 
+echo c('color')->getApptheme(false);
+?>
 <style>
 *{font-size:14px}
-.headers{line-height:30px; background-color:#dddddd;color:#1389D3;font-size:14px;height:30px;overflow:hidden}
-.lists{line-height:34px; background-color:white;font-size:14px;padding-left:5px;border-bottom:1px #eeeeee solid;color:#888888;height:34px;overflow:hidden}
-.active{ background-color:#eeeeee;color:#000000;font-weight:bold}
+.headers{line-height:30px; background-color:var(--main-hgcolor);color:var(--main-color);height:30px;overflow:hidden}
+.lists{line-height:34px; background-color:white;font-size:14px;padding-left:5px;border-bottom:var(--border);color:#888888;height:34px;overflow:hidden}
+.active{background-color:#eeeeee;font-weight:bold;color:#000000}
 
-.listsss{padding:8px; background:white;border-bottom:1px #eeeeee solid;cursor:default;font-size:14px}
-.listsss:hover{background-color:#f1f1f1}
+.listsss{padding:8px; background:white;border-bottom:var(--border);cursor:default;font-size:14px}
+.listsss:hover{background-color:rgba(0,0,0,0.05)}
 
-.listss{background:white;border-bottom:1px #eeeeee solid;cursor:default;font-size:14px;padding:0px 5px}
-.listss:hover{background-color:#f1f1f1}
+.listss{background:white;border-bottom:var(--border);cursor:default;font-size:14px;padding:0px 5px}
+.listss:hover{background-color:rgba(0,0,0,0.05)}
 
 .listhui{color:#888888}
 .listhui img{opacity:0.5}
 
-.changeuserbotton{height:30px;width:50px; background:#d9534f;color:white;font-size:14px;border:none;padding:0px;margin:0px;line-height:20px;cursor:pointer;opacity:1;outline:none;border-radius:5px}
-.changeuserbotton:hover{color:white;border:none;opacity:0.8}
-.label{font-size:12px;background:#1389D3;color:white;padding:1px 3px;border-radius:5px}
-.tract{ background-color:#d6edf9;}
-.tract:hover{background-color:#d6edf9;}
+
+.label{font-size:12px;background:var(--main-color);color:white;padding:1px 3px;border-radius:5px}
+.tract{ background-color:var(--main-hgcolor);}
+.tract:hover{background-color:var(--main-hgcolor);}
 </style>
+
 </head>
-<body style="padding:0px;margin:0px; overflow:hidden;" scroll="no">
+<body style="padding:0px;margin:0px; overflow:hidden; background:white" scroll="no">
 <table height="100%" width="100%">
 <tr>
-	<td  valign="top" width="35%" style="border:1px #eeeeee solid">
+	<td  valign="top" width="35%" style="border:var(--border)">
 		<div class="headers">&nbsp;选择部门/组</div>
 		<div style="height:300px;overflow:auto" id="zxuandiv">
 			<div class="lists active">根据部门选择 v</div>
@@ -312,7 +315,7 @@ var c = {
 			<div id="groupshow"></div>
 		</div>
 	</td>
-	<td  valign="top" width="30%" style="border:1px #eeeeee solid">
+	<td  valign="top" width="30%" style="border:var(--border)">
 		<div class="headers">&nbsp;选择人员</div>
 		<div style="height:300px;overflow:auto" id="showtype"></div>
 	</td>
@@ -323,25 +326,27 @@ var c = {
 		<div><input type="button" onclick="$('#xuandiv').html('')" value="清空"></div>
 	
 	</td>
-	<td  valign="top" width="35%" style="border:1px #eeeeee solid">
+	<td  valign="top" width="35%" style="border:var(--border)">
 		<div class="headers">&nbsp;√已选择</div>
 		<div style="height:300px;overflow:auto" id="xuandiv"></div>
 	</td>
 </tr>
 <tr>
-	<td  style="background-color:#dddddd" colspan="5">
+	<td  style="background-color:var(--main-vgcolor)" colspan="5">
 	
 	<table width="100%">
 	<tr>
-	<td height="50" width="10" nowrap>&nbsp;</td>
+	<td height="60" width="10" nowrap>&nbsp;</td>
 	<td width="100%">
-		<input type="text" id="keywords" style="border:1px #cccccc solid;height:26px;padding:2px;width:180px" placeholder="关键词搜索人员"><input onclick="c._searchkey(true)" type="button" value="搜索" style="background:#888888" class="changeuserbotton">
+		<div class="btn-group">
+		<input type="text" id="keywords" style="width:180px" placeholder="关键词搜索人员" class="input"><input onclick="c._searchkey(true)" type="button" value="搜索" class="webbtn webbtn-default">
+		</div>
 	</td>
-	<td><input style="width:70px;border:none" type="button" onclick="c.loaddata()" class="changeuserbotton" value="刷新数据" ></td>
-	<td width="20" nowrap>&nbsp;</td>
-	<td><input class="changeuserbotton" type="button" onclick="c.cancel()" value="取消" ></td>
-	<td width="20" nowrap>&nbsp;</td>
-	<td height="50"><input style="background:#1389D3;" onclick="c.queding()" type="button" value="确定" class="changeuserbotton"></td>
+	<td><input type="button" onclick="c.loaddata()" class="webbtn btn-danger" value="刷新数据"  /></td>
+	<td width="20" nowrap>&nbsp;&nbsp;</td>
+	<td><input class="webbtn btn-danger" type="button" onclick="c.cancel()" value="取消" /></td>
+	<td width="20" nowrap>&nbsp;&nbsp;</td>
+	<td height="60"><input onclick="c.queding()" type="button" value="确定"  class="webbtn" /></td>
 	<td width="10" nowrap>&nbsp;</td>
 	</tr>
 	</table>

+ 6 - 2
webmain/system/geren/rock_geren_cog.php

@@ -207,6 +207,10 @@ $(document).ready(function(){
 	}
 	
 	$("input[name='_stylechange']").click(function(){
+		if(!get('mainstylecss')){
+			js.msg('success','最新已弃用');
+			return;
+		}
 		var val = parseFloat(this.value);
 		valchange=val;
 		var sear = ysarr.split(',')
@@ -245,7 +249,7 @@ $(document).ready(function(){
 </script>
 <div style="padding:10px">
 	
-	<ul id="tagsl{rand}" class="nav nav-tabs">
+	<ul id="tagsl{rand}" style="display:flex" class="nav nav-tabs">
 	  
 	  <li click="tesgs,0" class="active">
 		<a style="TEXT-DECORATION:none"><i class="icon-cog"></i> 基本设置</a>
@@ -255,7 +259,7 @@ $(document).ready(function(){
 	  </li>
 	
 	 <li click="tesgs,2">
-		<a style="TEXT-DECORATION:none"><i class="icon-magic"></i> 切换主题皮肤</a>
+		<a style="TEXT-DECORATION:none"><i class="icon-magic"></i> 切换主题皮肤(弃用了)</a>
 	  </li>
 	  <li click="tesgs,3">
 		<a style="TEXT-DECORATION:none"><i class="icon-edit"></i> 签名图片</a>

+ 2 - 2
webmain/system/schedule/rock_schedule_calendar.php

@@ -19,9 +19,9 @@ $(document).ready(function(){
 				for(var d1 in da){
 					var s='',s1,d=da[d1],i;
 					for(i=0;i<d.length;i++){
-					s+='<div onclick="openreng_{rand}('+d[i].id+')" style="height:20px;line-height20px;overflow:hidden;cursor:pointer">'+(i+1)+'.['+d[i].time.substr(11,5)+']'+d[i].title+'</div>';
+					s+='<div onclick="openreng_{rand}('+d[i].id+')" style="height:20px;line-height:20px;overflow:hidden;cursor:pointer;">'+(i+1)+'.['+d[i].time.substr(11,5)+']'+d[i].title+'</div>';
 					}
-					$('#s'+d1+'_{rand}').html('<div style="border-top:1px #eeeeee solid;margin-top:3px;">'+s+'</div>');
+					$('#s'+d1+'_{rand}').html('<div style="border-top:var(--border);margin-top:3px;">'+s+'</div>');
 				}
 			},'json');
 		},

+ 7 - 2
webmain/system/upgrade/rock_upgrade.php

@@ -27,7 +27,7 @@ $(document).ready(function(){
 				if(v==2)s='<button onclick="upsho{rand}(2,'+d.id+',\''+d.key+'\')" class="btn btn-danger btn-sm" type="button">升级</button>';
 				if(v==0)s='<button onclick="upsho{rand}(0,'+d.id+',\''+d.key+'\')" class="btn btn-info btn-sm"  type="button">安装</button>';
 				if(v==0||v==2){
-					if(d.price=='0')s+='&nbsp;<a href="javascript:;" onclick="downup{rand}('+d.id+',\''+d.name+'\')">文件对比</a>';
+					if(d.price=='0')s+='&nbsp;<a href="javascript:;" onclick="downup{rand}('+d.id+',\''+d.name+'\')">文件对比</a>&nbsp;<a href="javascript:;" onclick="opt{rand}.hulue('+d.id+')">忽略</a>';
 					$('#shiw_{rand}').html('有系统模块需要升级/安装!');
 				}
 				if(d.id=='1'){
@@ -142,6 +142,11 @@ $(document).ready(function(){
 		},
 		lianwcs:function(){
 			js.open('?m=index&a=testnet');
+		},
+		hulue:function(_id){
+			js.ajax(js.getajaxurl('hulueup','{mode}','{dir}'),{id:_id},function(s){
+				a.reload();
+			});
 		}
 	};
 	upsho{rand}=function(lx,id,kes){
@@ -152,7 +157,7 @@ $(document).ready(function(){
 		addtabs({num:'upgradefile'+id+'','url':'system,upgrade,file,id='+id+'','name':'['+na+']文件对比'});
 	}
 	js.initbtn(c);
-	
+	opt{rand} = c;
 	upfetwontbu=function(lx, o){
 		if(ISDEMO){js.msg('msg','演示系统不要操作');return;}
 		if(!istongbu && lx!=3){

+ 21 - 0
webmain/system/upgrade/rock_upgrade_file.php

@@ -21,6 +21,7 @@ $(document).ready(function(){
 		},{
 			text:'',dataIndex:'ishui',renderer:function(v, d){
 				var s='<font color="green">可更新</font>';
+				s+='&nbsp;<button type="button" onclick="upgradefile.upfile(this,'+d.id+')" class="btn btn-default btn-xs">更新</button>';
 				if(v==1)s='已忽略';
 				if(d.ting=='1')s='不同步更新模块';
 				return s;
@@ -41,10 +42,30 @@ $(document).ready(function(){
 			js.ajax(js.getajaxurl('hullue','{mode}','{dir}'),{sid:sid,id:id,lx:lx},function(s){
 				a.reload();
 			},'post','','处理中...,处理完成');
+		},
+		upfile:function(o1, fid){
+			o1.disabled = true;
+			$(o1).html(js.getmsg('更新中...'));
+			var ad = {};
+			ad.id = id;
+			ad.fileid = fid;
+			ad.oii = 1;
+			ad.lens = 0;
+			ad.ban = '';
+			js.ajax(js.getajaxurl('shengjianss','{mode}','{dir}'),ad,function(s){
+				if(s=='ok'){
+					$(o1).html('更新成功');
+				}else{
+					$(o1).html(s);
+				}
+			},'post',function(s){
+				$(o1).html('失败');
+			});
 		}
 	};
 
 	js.initbtn(c);
+	upgradefile = c;
 	
 	
 });

文件差異過大導致無法顯示
+ 0 - 0
webmain/system/upgrade/upgradeAction.php


+ 23 - 0
webmain/task/api/kaoqinAction.php

@@ -52,6 +52,29 @@ class kaoqinClassAction extends apiAction
 		$this->showreturn($barr);
 	}
 	
+	/**
+	*	获取定位的URL
+	*/
+	//private $dwurl = 'http://127.0.0.1/app/rockfile/index.php?m=dingwei';
+	private $dwurl = 'aHR0cHM6Ly9maWxlLnJvY2tvYS5jb20vaW5kZXgucGhwP209ZGluZ3dlaQ::';
+	public function dwurlAction()
+	{
+		$dwrand 	= $this->get('dwrand');
+		return returnsuccess(array(
+			'url' 	 => $this->jm->base64decode($this->dwurl).'&dwrand='.$dwrand.'',
+			'dwrand' => $dwrand
+		));
+	}
+	
+	public function dwgetAction()
+	{
+		$dwrand 	= $this->get('dwrand');
+		$url 		= $this->jm->base64decode($this->dwurl).'&a=getdw&dwrand='.$dwrand.'';
+		$cont 		= c('curl')->getcurl($url);
+		if(!$cont)$cont = returnerror('无法获取');
+		return $cont;
+	}
+	
 
 	
 	/**

+ 28 - 0
webmain/task/api/rockkefuAction.php

@@ -0,0 +1,28 @@
+<?php
+/**
+*	客服
+*/
+
+class rockkefuClassAction extends apiAction
+{
+	
+	public function initAction()
+	{
+		parent::initAction();
+		$type   = @$_SERVER['REQUEST_METHOD'];
+		$cans	= $_GET;
+		$cans['user'] = $this->userrs['user'];
+		unset($cans['m']);
+		unset($cans['a']);
+		
+		$url 	= c('rockkefu')->geturlstr('openkefu',A, $cans);
+		if($type=='POST'){
+			$result = c('curl')->postcurl($url, $_POST);
+		}else{
+			$result = c('curl')->getcurl($url);
+		}
+		if(!$result)$result = json_encode(returnerror('无法访问'));
+		echo $result;
+		exit;
+	}
+}

+ 1 - 0
webmain/task/api/uploadAction.php

@@ -276,6 +276,7 @@ class uploadClassAction extends apiAction
 		return $this->fileinfoShow($fileid, $type, $ismobile);
 	}
 	
+	private $frs,$loadyuan;
 	public function fileinfoShow($fileid, $type, $ismobile)
 	{
 		$fobj 	= m('file');

+ 1 - 1
webmain/task/mode/modeview.js

@@ -56,7 +56,7 @@ function initbody(){
 		$('body').append(s);
 	}
 	
-	$('#contentshow img[onclick=""]').click(function(){c.showviews(this)});
+	$('#contentshow img').click(function(){c.showviews(this)});
 	c.addwater();
 }
 function showchayue(opt, st){

+ 15 - 19
webmain/task/mode/tpl_mode_p.html

@@ -8,12 +8,11 @@
 <title><?=$da['pagetitle']?></title>
 <link rel="shortcut icon" href="favicon.ico" />
 <?php
-$maincolor = getconfig('apptheme','#1389D3');
 if($stype==''){
 	$jqurl = 'js/jquery.js';
 	if(arrvalue($da['arr']['flowinfor'],'ischeck')==1)$jqurl='web/res/js/jquery.1.9.1.min.js';
 ?>
-<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/css.css">
+<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/css.css?<?=$nowtime?>">
 <script type="text/javascript" src="<?=$jqurl?>"></script>
 <script type="text/javascript" src="js/js.js"></script>
 <script type="text/javascript" src="js/base64-min.js"></script>
@@ -22,20 +21,17 @@ if($stype==''){
 <script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
 
 <script>
-var mid = '<?=$da['arr']['mid']?>',adminname='<?=$da['adminname']?>',modenum='<?=$da['arr']['modenum']?>',ismobile=0,receiptrs=<?=json_encode($da['arr']['receiptrs'])?>,isinput=0,maincolor='<?=$maincolor?>',watertype='<?=getconfig('watertype')?>';
+var mid = '<?=$da['arr']['mid']?>',adminname='<?=$da['adminname']?>',modenum='<?=$da['arr']['modenum']?>',ismobile=0,receiptrs=<?=json_encode($da['arr']['receiptrs'])?>,isinput=0,watertype='<?=getconfig('watertype')?>';
 </script>
 <?php 
 }
 $cheikbo = false;
 ?>
-<style>
 <?php
-$maincolora= c('image')->colorTorgb($maincolor);
-$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
-echo 'body{--main-color:'.$maincolor.'}';
-//$da['bordercolor'] = 'rgba('.$maincolors.',0.2)';
+echo c('color')->getApptheme(false);
 ?>
-.stitle{padding:5px;border-bottom:1px #cccccc solid;font-size:14px;}
+<style>
+.stitle{padding:5px;border-bottom:var(--border);font-size:14px;}
 .ydullist{display:inline-block;width:100%;}
 .ydullist li{float:left;width:10%;text-align:center;padding:5px 0px;font-size:12px;display:block;line-height:25px;padding-top:10px}
 .ydullist li:active{ background-color:#eeeeee}
@@ -44,13 +40,13 @@ echo 'body{--main-color:'.$maincolor.'}';
 
 .faces{margin-right:10px}
 .ptitle{text-align:center;font-size:20px;padding-top:15px;padding-bottom:10px;width:450px}
-.tabled2 td{padding:5px;border:1px #e5e5e5 solid;text-align:center}
-td.tdys1{border:1px #e5e5e5 solid;text-align:center;padding:0px 5px}
+.tabled2 td{padding:5px;border:var(--border);text-align:center}
+td.tdys1{border:1px #e5e5e5 solid;border:var(--border);text-align:center;padding:0px 5px}
 .createtable{width:90%}
 .menulls{position:absolute;left:1px;top:10px}
-.menullss{position:absolute;left:1px;top:32px; background-color:white; border:1px #cccccc solid;border-bottom:0px;display:none}
+.menullss{position:absolute;left:1px;top:32px; background-color:white; border:var(--border);border-bottom:0px;display:none}
 .menullss ul{list-style-type:none}
-.menullss li{padding:5px 10px;border-bottom:1px #dddddd solid;cursor:pointer}
+.menullss li{padding:5px 10px;border-bottom:var(--border);cursor:pointer}
 .menullss li:hover{ background-color:#f1f1f1}
 .pcont{line-height:27px;}
 .pcont p{text-indent:2em;margin:10px 0px}
@@ -59,9 +55,9 @@ li p{text-indent:0em !important;}
 .status{position: absolute;right:20px;top:10px;display:}
 
 .ke-zeroborder{border-spacing: 0;border-collapse: collapse;}
-.ys0{border:1px <?=$da['bordercolor']?> solid}
-.ys1{padding:5px 5px; border:1px <?=$da['bordercolor']?> solid;color:#555555;}
-.ys2{padding:5px 5px; border:1px <?=$da['bordercolor']?> solid;}
+.ys0{border:var(--border)}
+.ys1{padding:5px 5px; border:var(--border);color:#555555;}
+.ys2{padding:5px 5px; border:var(--border);}
 .datesss{background:url(mode/icons/date.png) no-repeat right;cursor:pointer;width:50%}
 .inputs{width:95%}
 .statustext{position: absolute;right:40px;top:10px;width:80px;height:80px;overflow:hidden; border:3px red solid;border-radius:50%;font-size:20px;text-align:center;line-height:80px;color:red;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);filter:progid:DXImagetransform.Microsoft.Matrix(M11=0.707,M12=-0.707,M21=0.707,M22=0.707,SizingMethod='auto expand');}
@@ -80,7 +76,7 @@ if($stype!=''){
 <?php }?>
 </style>
 </head>
-<body style="background:white">
+<body style="background:white;color:#000000">
 <div align="center">
 <div style="width:<?=$da['xiangwidth']?>px;position:relative;background:white" id="maindiv" align="left">
 	<?php if($stype==''){?>
@@ -178,7 +174,7 @@ if($stype!=''){
 		</div>
 		<div id="showrecord0" style="display:<?php if(getconfig('xiangrecord')!='1')echo 'none';?>">
 			<table border="0"  class="tabled2" style="border-collapse:collapse;" width="100%" cellspacing="0" cellpadding="0">
-				<tr bgcolor="#E1F4F0">
+				<tr style="background:#E1F4F0; background:var(--main-hgcolor)">
 					<td>序号</td>
 					<td>动作</td>
 					<td>处理人</td>
@@ -213,7 +209,7 @@ if($stype!=''){
 			<div align="center">
 			<form name="myform" autocomplete="off">
 			<table border="0" width="90%" class="tabled1" style="border-collapse:collapse;" cellspacing="0" cellpadding="0">
-			<tr height="40" bgcolor="#E1F4F0">
+			<tr height="40" style="background:#E1F4F0; background:var(--main-hgcolor)">
 				<td width="130" class="tdys1"><div align="right" style="color:#555555">状态</div></td>
 				<td class="tdys1"><div align="left"><?=$flowinfor['nstatustext']?></div></td>
 			</tr>

+ 22 - 26
webmain/task/mode/tpl_mode_x.html

@@ -42,14 +42,11 @@ function initApp(){
 	js.setapptitle('详情');
 }
 </script>
-<style>
 <?php
-$maincolor = getconfig('apptheme','#1389D3');
-$maincolora= c('image')->colorTorgb($maincolor);
-$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
-echo 'body{--main-color:'.$maincolor.';}';
+echo c('color')->getApptheme(false);
 ?>
-.stitle{padding:10px;border-bottom:0.5px #dddddd solid;font-size:16px;}
+<style>
+.stitle{padding:10px;border-bottom:var(--border);font-size:16px;}
 .ydullist{display:inline-block;width:100%;}
 .ydullist li{float:left;width:16.6%;text-align:center;padding:5px 0px;font-size:12px;display:block;line-height:25px;padding-top:10px}
 .ydullist li:active{ background-color:#eeeeee}
@@ -59,12 +56,12 @@ echo 'body{--main-color:'.$maincolor.';}';
 .pinglun td{padding:10px 0px}
 .pinglun .dt,.pinglun .act{font-size:12px;color:#888888;padding-top:5px}
 .pinglun .name{color:#555555}
-.pinglun tr{border-bottom: 1px solid #eeeeee;}
+.pinglun tr{border-bottom:var(--border);}
 .pinglun .sm{padding-top:8px;font-size:14px}
 .faces{margin-right:10px}
 .createtable{width:98%}
 .status{position: absolute;left:5px;top:5px;display:}
-td.tdys1{border:0.5px #e5e5e5 solid;text-align:center;padding:0px 5px}
+td.tdys1{border:var(--border);text-align:center;padding:0px 5px}
 .divinput{padding:0px}
 .datesss{background:url(mode/icons/date.png) no-repeat right;cursor:pointer;}
 
@@ -72,6 +69,10 @@ td.tdys1{border:0.5px #e5e5e5 solid;text-align:center;padding:0px 5px}
 
 .btn-danger{background-color:#d9534f;}
 #contentshow img{max-width:100%}
+body{
+background:#f1f1f1;
+--border:0.5px rgba(0,0,0,0.2) solid;
+}
 </style>
 
 </head>
@@ -84,7 +85,7 @@ if($showheader==1)echo '<div class="header" style="padding-top:'.$cenghei.'px" i
 
 if($da['arr']['isdefaultview']==1)echo '<div onclick="c.changeshow(0)" class="r-subtitle">&nbsp;&nbsp;'.$da['arr']['modename'].'</div>';
 ?>
-<div id="contentshow" class="padding10<?php if($da['arr']['isdefaultview']==1) echo ' r-border-t';?>" style="position:relative; background:white">
+<div id="contentshow" class="padding10" style="position:relative; background:white;border-bottom:var(--border);<?php if($da['arr']['isdefaultview']==1) echo 'border-top:var(--border)';?>">
 	<?php
 	if($da['arr']['isflow']>0){
 		echo '<div class="statustext" style="color:'.$da['arr']['statuscolor'].';border-color:'.$da['arr']['statuscolor'].'">'.$da['arr']['statustext'].'</div>';
@@ -92,7 +93,6 @@ if($da['arr']['isdefaultview']==1)echo '<div onclick="c.changeshow(0)" class="r-
 	echo $da['arr']['contview']
 	?>
 </div>
-<div class="r-border-t"></div>
 <?php
 if($da['arr']['optmenu']){
 	$opsts = '<div class="padding10" align="center">';
@@ -113,9 +113,9 @@ if($da['spagepath']!=''){
 if($da['arr']['isplview']=='1'){
 ?>
 <div class="r-subtitle">&nbsp;&nbsp;评论</div>
-<div class="r-border-t" style="background:white" >
+<div style="background:white;border-top:var(--border);border-bottom:var(--border)" >
 <div align="left" class="padding10">
-	<div align="left"><textarea class="inputs" id="pinglun_explain" style="width:98%;height:60px" placeholder="请输入评论内容"></textarea></div>
+	<div align="left" style="display:flex"><textarea class="inputs" id="pinglun_explain" style="flex:1;height:60px" placeholder="请输入评论内容"></textarea></div>
 	<div style="padding-top:5px">
 	<button class="webbtn" style="border-radius:5px" onclick="c.pinglun(this)" id="check_btn" type="button">
 	提交评论</button>
@@ -123,7 +123,6 @@ if($da['arr']['isplview']=='1'){
 	</div>	
 </div>	
 </div>
-<div class="r-border-t"></div>
 
 <?php
 }
@@ -134,12 +133,12 @@ if($da['arr']['isplview']=='1'){
 		$flowinfor = $da['arr']['flowinfor'];
 	?>
 	<div class="r-subtitle">&nbsp;&nbsp;流程信息</div>
-	<div class="r-border-t" style="background:white" >
+	<div style="background:white;border-top:var(--border)" >
 	
 		<div class="padding10" align="center">
 		<form name="myform" autocomplete="off">
 		<table border="0" width="100%" class="tabled1" style="border-collapse:collapse;" cellspacing="0" cellpadding="0">
-		<tr height="40" bgcolor="#E1F4F0">
+		<tr height="40" style="background:#E1F4F0; background:var(--main-hgcolor)">
 			<td class="tdys1"><div align="right" style="color:#555555">状态</div></td>
 			<td class="tdys1"><div align="left"><?=$flowinfor['nstatustext']?></div></td>
 		</tr>
@@ -219,8 +218,8 @@ if($da['arr']['isplview']=='1'){
 		?>
 		<tr style="display:none" id="tuihuidiv" height="40">
 			<td class="tdys1" nowrap><div align="right" style="color:#555555"><font color=red>*</font><?=$tuiname?>退回</div></td>
-			<td class="tdys1"><div align="left">
-			<select class="inputb" name="check_tuiid" style="width:99%"><option value="0">退回到提交人</option>
+			<td class="tdys1"><div align="left" style="display:flex">
+			<select class="inputb" name="check_tuiid" style="flex:1"><option value="0">退回到提交人</option>
 			<?php 
 			if($flowinfor['tuicourse']){
 				$tstr = '<optgroup label="退回到步骤">';
@@ -277,7 +276,7 @@ if($da['arr']['isplview']=='1'){
 		
 		<tr>
 			<td class="tdys1"><div  align="right" style="color:#555555"><?php if($smlx==1)echo '<font color=red>*</font>';?>说明</div></td>
-			<td class="tdys1" style="padding:5px"><div align="left"><textarea class="inputb" name="check_explain" style="width:95%;height:60px;"></textarea></div></td>
+			<td class="tdys1" style="padding:5px"><div align="left" style="display:flex"><textarea class="inputb" name="check_explain" style="flex:1;height:60px;"></textarea></div></td>
 		</tr>
 		
 		<?php
@@ -289,7 +288,7 @@ if($da['arr']['isplview']=='1'){
 			<td class="tdys1" nowrap><div  align="right" style="color:#555555"><?php if($wjlx==1)echo '<font color=red>*</font>';?>相关文件</div></td>
 			<td class="tdys1" style="padding:5px"><div align="left">
 				<input name="fileid" type="hidden">
-				<div id="filedivview" style="height:60px;overflow:auto;width:96%" class="inputb"></div>
+				<div style="display:flex"><div id="filedivview" style="height:60px;overflow:auto;flex:1;" class="inputb"></div></div>
 				<div id="filedivviewfile"><input style="width:150px" onchange="f.change(this)" type="file"></div>
 			</div></td>
 		</tr>
@@ -323,8 +322,8 @@ if($da['arr']['isplview']=='1'){
 	if($logarr && $da['arr']['isgbjl']==0){
 	$logcount= count($logarr);
 	?>
-	<div onclick="c.changeshow(0)" class="r-subtitle">&nbsp;&nbsp;处理记录(<?=$logcount?>) <img align="absmiddle" height="16" width="16" src="images/xiangyou1.png"> </div>
-	<div id="showrecord0" class="pinglun r-border-t" style="background:white;display:<?php if(getconfig('xiangrecord')!='1')echo 'none';?>">
+	<div onclick="c.changeshow(0)" class="r-subtitle" style="border-bottom:var(--border);">&nbsp;&nbsp;处理记录(<?=$logcount?>) <img align="absmiddle" height="16" width="16" src="images/xiangyou1.png"> </div>
+	<div id="showrecord0" class="pinglun" style="border-bottom:var(--border);background:white;display:<?php if(getconfig('xiangrecord')!='1')echo 'none';?>">
 	<table width="100%">
 	<?php 
 	foreach($logarr as $k=>$rs){
@@ -341,7 +340,6 @@ if($da['arr']['isplview']=='1'){
 	?>
 	</table>
 	</div>
-	<div class="r-border-t"></div>
 
 	<?php 
 	}
@@ -352,25 +350,23 @@ if($da['arr']['isplview']=='1'){
 	
 	?>
 	<div onclick="location.reload()"  class="r-subtitle">&nbsp;&nbsp;查阅记录(<?=count($da['arr']['readarr'])?>)</div>
-	<div class="r-border-t" style="background:white"><ul class="ydullist"><?php
+	<div style="background:white;border-top:var(--border);border-bottom:var(--border)"><ul class="ydullist"><?php
 		foreach($da['arr']['readarr'] as $k=>$rs){
 			echo '<li onclick="showchayue(\''.$rs['optdt'].'\',\''.$rs['stotal'].'\')"><img src="'.$rs['face'].'" align="absmiddle"><br><span>'.$rs['name'].'</span></li>';
 		}
 	?></ul></div>
-	<div class="r-border-t"></div>
 	
 	<?php 
 		if($da['arr']['readunarr']){
 	?>
 	
 	<div onclick="location.reload()" class="r-subtitle">&nbsp;&nbsp;未查阅人员(<?=count($da['arr']['readunarr'])?>)</div>
-	<div class="r-border-t" style="background:white"><ul class="ydullist"><?php
+	<div style="background:white;border-top:var(--border);border-bottom:var(--border)"><ul class="ydullist"><?php
 		foreach($da['arr']['readunarr'] as $k=>$rs){
 			if($k>=30)break;//最多显示30人
 			echo '<li ><img src="'.$rs['face'].'" align="absmiddle"><br><span>'.$rs['name'].'</span></li>';
 		}
 	?></ul></div>
-	<div class="r-border-t"></div>
 	
 	<?php 
 	}}

+ 9 - 12
webmain/we/index/tpl_index.html

@@ -9,25 +9,19 @@
 <link rel="shortcut icon" href="favicon.ico" />
 <script type="text/javascript" src="js/jquery.js"></script>
 <script type="text/javascript" src="js/js.js"></script>
-<script type="text/javascript" src="js/jswx.js"></script>
+<script type="text/javascript" src="js/jswx.js?<?=time()?>"></script>
 <script type="text/javascript" src="js/base64-min.js"></script>
 <script type="text/javascript" src="js/jsmain.js"></script>
 <script type="text/javascript" src="webmain/we/index/tpl_index.mini.js?<?=time()?>"></script>
 <link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
 <style>
-html,body{overflow:hidden;background-color:#f1f1f1}
-<?php 
-$maincolor = getconfig('apptheme','#1389D3');
-$maincolora= c('image')->colorTorgb($maincolor);
-$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
-echo 'body{--main-color:'.$maincolor.';}';
-?>
+html,body{overflow:hidden;font-size:var(--font-size)}
 .weui_tabbar_icon{text-align:center;color:#888888;font-size:20px;overflow:hidden;;height:28px}
 .weui_tabbar_item{padding-top:2px;margin-bottom:5px;position:relative}
 .weui_media_box{padding:10px 15px}
 .weui_media_box.weui_media_appmsg .weui_media_hd {height:40px;width:40px;line-height:40px}
 .weui_media_box .weui_media_desc{height:20px;line-height:20px;padding-right:20px}
-.weui_bar_item_on .weui_tabbar_icon{color:<?=$maincolor?>}
+.weui_bar_item_on .weui_tabbar_icon{color:var(--main-color)}
 .weui_grid_icon{width:26px;height:26px;text-align:center;}
 .weui_grid_icon img{border-radius:6px}
 .weui_grid_icon i{font-size:26px}
@@ -47,12 +41,14 @@ echo 'body{--main-color:'.$maincolor.';}';
 .weui_daohang .jiantou{padding:0px;font-size:12px;color:#cccccc}
 .weui_grid_label{height:20px;overflow:hidden}
 </style>
-</head>
+<?php
+echo c('color')->getApptheme(false, true);
+?>
 <script>
 xhauthkey = '<?=$xhauthkey?>';
-maincolor = '<?=$maincolor?>';
 </script>
-<body scroll="no" style="overflow:hidden;user-select:none">
+</head>
+<body scroll="no" style="overflow:hidden;user-select:none;background:#f1f1f1">
 <?php if($showheader==1){?>
 <div>
 	<div class="r-header">
@@ -223,5 +219,6 @@ maincolor = '<?=$maincolor?>';
 <script type="text/javascript" src="mode/plugin/jquery-rockdoupull.js"></script>
 <script type="text/javascript" src="mode/plugin/jquery-rocksilder.js"></script>
 <script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
+<script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
 </body>
 </html>

+ 30 - 45
webmain/we/login/tpl_login.html

@@ -4,25 +4,19 @@
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
 <title>登录</title>
-<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
-<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
+<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/rock.css?<?=time()?>"/>
 <link rel="shortcut icon" href="favicon.ico" />
 <script type="text/javascript" src="js/jquery.js"></script>
 <script type="text/javascript" src="js/js.js"></script>
-<script type="text/javascript" src="js/jswx.js"></script>
+<script type="text/javascript" src="js/jswx.js?<?=time()?>"></script>
 <script type="text/javascript" src="js/base64-min.js"></script>
+<script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
 <?php
 if($iskj==3)echo '<script type="text/javascript" src="js/jsdd.js"></script>';
 ?>
-<style>
-body,html{overflow:hidden;}
-body{background-color:#fbf9fe}
-.page_desc{text-align:center;color:#888;font-size:14px}
-.hd{padding:2em 0; text-align:center}
-.hd img{height:100px;width:100px;border-radius:50px}
-.weui_label{width:80px;}
-.weui_btn:disabled{background:#888888}
-</style>
+<?php
+echo c('color')->getApptheme(false, true);
+?>
 <script>
 var temp_token='';
 function initbody(){
@@ -193,6 +187,7 @@ function dingdlogn(code){
 	});	
 }
 
+/*
 function reimplatlogin(){
 	js.wx.load('登录中...');
 	js.ajax('login','reimplatlogin',false, function(ret){
@@ -204,6 +199,7 @@ function reimplatlogin(){
 		js.wx.alert(str);
 	});	
 }
+*/
 
 
 function changlogin(o1){
@@ -263,24 +259,20 @@ function dshitime(sj,o1){
 
 <body>
 
-<div class="hd">
-	<div><img id="myface" onclick="location.reload()" src="images/logo.png"></div>
+<div align="center">
+	<div style="height:100px;overflow:hidden;margin-top:40px"><img style="height:100px;width:100px;border-radius:50%" id="myface" onclick="location.reload()" src="images/logo.png"></div>
 </div>
-<div class="weui_cells weui_cells_form">
+<div style="background-color:var(--main-bgcolor);border-top:var(--border);margin-top:30px;border-bottom:var(--border);">
 	<?php if($loginyzm!=3){?>
 	<div id="loginview0">
-		<div class="weui_cell">
-			<div class="weui_cell_hd"><label class="weui_label">用户名</label></div>
-			<div class="weui_cell_bd weui_cell_primary">
-				<input class="weui_input" type="text" id="adminuser" placeholder="请输入用户名/姓名/手机号"/>
-			</div>
+		<div style="align-items:center;padding:15px;display:flex;">
+			<div align="right" style="margin-right:10px;width:70px;">帐号</div>
+			<input style="flex:1;background:none;border:none;line-height:30px;" class="input" type="text" id="adminuser" placeholder="请输入用户名/姓名/手机号"/>
 		</div>
 		
-		<div class="weui_cell">
-			<div class="weui_cell_hd"><label class="weui_label">密码</label></div>
-			<div class="weui_cell_bd weui_cell_primary">
-				<input class="weui_input" id="adminpass" type="password" placeholder="请输入密码"/>
-			</div>
+		<div style="align-items:center;padding:15px;display:flex;border-top:var(--border)">
+			<div align="right" style="margin-right:10px;width:70px;">密码</div>
+			<input style="flex:1;background:none;border:none;line-height:30px;" class="input" id="adminpass" type="password" placeholder="请输入密码"/>
 		</div>
 	</div>
 	<div id="loginview1" style="display:none">
@@ -289,40 +281,33 @@ function dshitime(sj,o1){
 	<div id="loginview1">
 		<input type="hidden" id="logintype" value="1">
 	<?php }?>
-		<div class="weui_cell">
-			<div class="weui_cell_hd"><label class="weui_label">手机号</label></div>
-			<div class="weui_cell_bd weui_cell_primary">
-				<input class="weui_input" type="text" id="adminmobile" maxlength="11" placeholder="请输入手机号"/>
-			</div>
+		<div style="align-items:center;padding:15px;display:flex;">
+			<div align="right" style="margin-right:10px;width:70px;">手机号</div>
+			<input style="flex:1;background:none;border:none;line-height:30px;" class="input" type="text" id="adminmobile" placeholder="请输入手机号"/>
 		</div>
-		
-		<div class="weui_cell">
-			<div class="weui_cell_hd"><label class="weui_label">验证码</label></div>
-			<div class="weui_cell_bd weui_cell_primary">
-				<input class="weui_input" id="adminmobileyzm" maxlength="6" placeholder="请输入验证码"/>
-			</div>
-			<div class="weui_cell_ft">
-                <input class="weui_btn weui_btn_mini weui_btn_primary" onclick="getyzm(this)" type="button"  value="获取">
-            </div>
+		<div style="align-items:center;padding:15px;display:flex;border-top:var(--border)">
+			<div align="right" style="margin-right:10px;width:70px;">验证码</div>
+			<input style="flex:1;background:none;border:none;line-height:30px;" class="input" id="adminmobileyzm" maxlength="6" placeholder="请输入验证码"/>
+			<input class="webbtn webbtn-default" onclick="getyzm(this)" type="button"  value="获取">
 		</div>
 		
 	</div>
 </div>
 
-<div class="weui_btn_area">
-	<input class="weui_btn weui_btn_primary" type="button" onclick="loginsubmit(0)" value="登录" id="btn0">
+<div align="center" style="padding:20px">
+	<input class="webbtn" style="width:150px;height:44px" type="button" onclick="loginsubmit(0)" value="登录" id="btn0">
 </div>
 <?php 
 if($iskj>0){
 	if($iskj==3){
-		echo '<div onclick="dingdengl()" style="text-align:center;padding-top:10px;color:#1389D3">钉钉快捷登录</div>';
+		echo '<div onclick="dingdengl()" style="text-align:center;padding-top:10px;color:var(--main-color)">钉钉快捷登录</div>';
 	}else{
-		echo '<div onclick="yanzdengl('.$iskj.')" style="text-align:center;padding-top:10px;color:#1389D3">'.(($iskj==2 || $iskj==5)?'企业':'').'微信'.(($iskj==4)? '公众号':'快捷').'登录</div>';
+		echo '<div onclick="yanzdengl('.$iskj.')" style="text-align:center;padding-top:10px;color:var(--main-color)">'.(($iskj==2 || $iskj==5)?'企业':'').'微信'.(($iskj==4)? '公众号':'快捷').'登录</div>';
 	}
 }
-if($da['platsign'])echo '<div onclick="reimplatlogin(this)" style="text-align:center;padding-top:10px;color:#336699">快捷登录</div>';
+//if($da['platsign'])echo '<div onclick="reimplatlogin(this)" style="text-align:center;padding-top:10px;color:#336699">快捷登录</div>';
 
-if($loginyzm>0 && $loginyzm!=3)echo '<div class="weui_extra_area" onclick="changlogin(this)" style="text-align:center;color:#888888;padding-bottom:10px">验证码登录</div>';
+if($loginyzm>0 && $loginyzm!=3)echo '<div onclick="changlogin(this)" style="text-align:center;color:#888888;padding:15px">验证码登录</div>';
 ?>
 
 

部分文件因文件數量過多而無法顯示

粤ICP备19079148号