雨中磐石 2 лет назад
Родитель
Сommit
8c2983b577
63 измененных файлов с 1365 добавлено и 158 удалено
  1. 3 3
      README.md
  2. 2 2
      config/version.php
  3. 3 1
      include/chajian/inputChajian.php
  4. 116 9
      include/chajian/langChajian.php
  5. 0 15
      include/chajian/lang_en_USChajian.php
  6. 0 15
      include/chajian/lang_zh_CNChajian.php
  7. 17 0
      include/class/rockClass.php
  8. 2 0
      include/langlocal/langphp/lang.php
  9. 2 0
      include/langlocal/langphp/langbase.php
  10. 2 0
      include/langlocal/langphp/langmenu.php
  11. 31 0
      include/langlocal/langtxt/lang.txt
  12. 2 0
      include/langlocal/langtxt/lang_onlyjs.txt
  13. 1 0
      include/langlocal/langtxt/langbase_onlyphp.txt
  14. 3 0
      include/langlocal/langtxt/langmenu_onlyphp.txt
  15. 16 12
      include/rockFun.php
  16. 4 0
      js/js.js
  17. 9 0
      js/lang.js
  18. 21 1
      web/res/js/jquery-changeuser.js
  19. 6 4
      webmain/flow/input/inputAction.php
  20. 56 0
      webmain/flow/input/inputjs/mode_flowelement.js
  21. 4 0
      webmain/flow/input/inputjs/mode_flowmenu.js
  22. 4 0
      webmain/flow/input/inputjs/mode_flowset.js
  23. 114 0
      webmain/flow/input/mode_flowelementAction.php
  24. 52 0
      webmain/flow/input/mode_flowmenuAction.php
  25. 40 0
      webmain/flow/input/mode_flowsetAction.php
  26. 21 1
      webmain/flow/input/mode_userinfoAction.php
  27. 1 1
      webmain/flow/input/tpl_input_lu.html
  28. 1 1
      webmain/flow/input/tpl_input_lum.html
  29. 0 0
      webmain/flow/page/input_flowelement.html
  30. 1 0
      webmain/flow/page/input_flowmenu.html
  31. 0 0
      webmain/flow/page/input_flowset.html
  32. 0 0
      webmain/flow/page/input_gong.html
  33. 45 16
      webmain/flow/page/rock_page.php
  34. 15 14
      webmain/flow/page/rock_page_aas.php
  35. 6 6
      webmain/flow/page/rock_page_caigou.php
  36. 102 0
      webmain/flow/page/rock_page_flowelement_script.php
  37. 58 0
      webmain/flow/page/rock_page_flowmenu_script.php
  38. 171 0
      webmain/flow/page/rock_page_flowset_script.php
  39. 6 6
      webmain/flow/page/rock_page_gong.php
  40. 23 1
      webmain/flow/page/rock_page_userinfo.php
  41. 28 0
      webmain/flow/page/view_flowset_0.html
  42. 3 3
      webmain/home/desktop/items_apply.php
  43. 2 2
      webmain/home/desktop/items_kjrk.php
  44. 1 1
      webmain/home/desktop/items_kjrko.php
  45. 1 0
      webmain/home/index/indexAction.php
  46. 1 0
      webmain/index/indexAction.php
  47. 6 5
      webmain/index/tpl_index.html
  48. 4 1
      webmain/main/flow/flowAction.php
  49. 1 1
      webmain/main/yingyong/rock_yingyong.php
  50. 13 0
      webmain/model/agent/custfinaModel.php
  51. 13 0
      webmain/model/agent/custfkdModel.php
  52. 1 1
      webmain/model/finaModel.php
  53. 0 0
      webmain/model/flow/flow.php
  54. 77 0
      webmain/model/flow/flowelementModel.php
  55. 52 0
      webmain/model/flow/flowmenuModel.php
  56. 87 0
      webmain/model/flow/flowsetModel.php
  57. 28 17
      webmain/model/modeModel.php
  58. 1 1
      webmain/system/cog/cogAction.php
  59. 15 0
      webmain/system/cog/rock_cog_moreset.php
  60. 9 3
      webmain/system/cog/rock_cog_set.php
  61. 11 0
      webmain/system/cogini/coginiAction.php
  62. 24 0
      webmain/system/menu/menuAction.php
  63. 27 15
      webmain/system/menu/rock_menu.php

+ 3 - 3
README.md

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

+ 2 - 2
config/version.php

@@ -1,3 +1,3 @@
 <?php
-//版本2.5.6的
-return '2.5.6';
+//版本2.5.7的版本
+return '2.5.7';

+ 3 - 1
include/chajian/inputChajian.php

@@ -81,6 +81,7 @@ class inputChajian extends Chajian
 		$type 	= $a['fieldstype'];
 		$placeholder 	= arrvalue($a, 'placeholder');
 		$isbt 	= arrvalue($a, 'isbt');
+		$zdsm 	= arrvalue($a, 'zdsm');
 		$data 	= $a['data'];
 		$val 	= $a['dev'];
 		if(isset($a['value']))$val=$a['value'];
@@ -221,7 +222,7 @@ class inputChajian extends Chajian
 		if($type=='checkbox'){
 			$chk = '';
 			if($val=='1'||$val=='true')$chk='checked';
-			$str = '<input name="'.$fname.'" '.$chk.' '.$attr.''.$styles.' type="checkbox" value="1"> ';
+			$str = '<label><input name="'.$fname.'" '.$chk.' '.$attr.''.$styles.' type="checkbox" value="1">'.$placeholder.'</label> ';
 		}
 		if($type=='uploadimg'){
 			$str1= '<a href="javascript:;" onclick="c.uploadfileis(\''.$fname.'\',1)">库中选</a>&nbsp;';
@@ -248,6 +249,7 @@ class inputChajian extends Chajian
 				}
 			}
 		}
+		if(!isempt($zdsm))$str.='<br><font color="#888888">'.$zdsm.'</font>';
 		if($iszb>0)return $str;
 		if($isasm==1){
 			$lx  = 'span';if($ism==1)$lx='div';

+ 116 - 9
include/chajian/langChajian.php

@@ -5,8 +5,9 @@
 class langChajian extends Chajian{
 	
 	//支持的语言包
-	private $langArray	= array('zh-CN','en-US','zh-TW','jp');
-	private $locallang	= 'zh-CN'; //默认的语言包
+	public $langArray	= array('zh-CN','zh-FT','en-US');
+	public $langArraycn	= array('简体中文','繁体中文','英文');
+	public $locallang	= 'zh-CN'; //默认的语言包
 	
 	/**
 	*	初始化语言包
@@ -17,14 +18,120 @@ class langChajian extends Chajian{
 		$lang = $this->rock->get('locallang', $moren);
 		if(!in_array($lang, $this->langArray))$lang = $moren;
 		if(!defined('LANG'))define('LANG', $lang);
-		$langs 	= str_replace('-','_', $lang);
-		$langr 	= str_replace('-','_', $moren);
+		$xuhao= 0;
+		foreach($this->langArray as $k=>$v){
+			if($v==$lang)$xuhao = $k;
+		}
+		$GLOBALS['langdata'] = array(
+			'lang' 		=> $lang,
+			'xuhao' 	=> $xuhao
+		);
+	}
+	
+	public function getLocal()
+	{
+		return array(
+			'arr' 	=> $this->langArray,
+			'arrcn' => $this->langArraycn,
+		);
+	}
+	
+	/**
+	*	生成语言包文件
+	*/
+	public function createlocal()
+	{
+		$bar = glob('include/langlocal/langtxt/*.txt');
+		$path= 'include/langlocal/langphp/lang.php';
+		$pats= 'include/langlocal/langphp/langjs.php';
+		$sss = $ssb = '';
+		if(is_array($bar))foreach($bar as $k=>$fil1){
+			$str = $this->getcontarr($fil1);
+			if($str){
+				$isph = 1;
+				$isjs = 0;
+				if(contain($fil1,'_onlyjs')){
+					$isph = 0;
+					$isjs = 1;
+				}
+				if(contain($fil1,'_onlyphp')){
+					$isph = 0;
+				}
+				if($isph==1){
+					if($sss)$sss.=',';
+					$sss.=''.$str.'';
+				}
+				if($isjs==1){
+					if($ssb)$ssb.=',';
+					$ssb.=''.$str.'';
+				}
+				if($isph==0 && $isjs==0){
+					$fname = str_replace('_onlyphp.txt','.php',str_replace('include/langlocal/langtxt/','',$fil1));
+					$spath = 'include/langlocal/langphp/'.$fname.'';
+					$this->rock->createtxt($spath, '<?php'.chr(10).'return array('.$str.');');
+				}
+			}
+		}
+		$str = '<?php'.chr(10).'return array('.$sss.');';
+		$this->rock->createtxt($path, $str);
+		
 		
-		$obj  	= c('lang_'.$langs.'');
-		$objmr  = c('lang_'.$langr.'');
-		$data[$moren] 	= method_exists($objmr, 'getLang') ? $objmr->getLang() : array();
-		$data[$lang] 	= method_exists($obj, 'getLang') ? $obj->getLang() : $data[$moren];
-		$GLOBALS['langdata'] = $data;
+		$str = '<?php'.chr(10).'return array('.$ssb.');';
+		$this->rock->createtxt($pats, $str);
+		
+		$nrs = require($pats);
+		$nrs = 'var rocklang = \'\',rocklangxu=0,langdata = '.json_encode($nrs).';';
+		$ss1 = '';
+		foreach($this->langArray as $k=>$v){
+			$ss1.='if(rocklang==\''.$v.'\')rocklangxu='.$k.';';
+		}
+$nrs.="
+function lang(ky){
+	if(!rocklang){rocklang = $('html').attr('lang');if(!rocklang)rocklang='".$this->locallang."';".$ss1."}
+	var d = langdata[ky];
+	if(!d)return ky;
+	var str = d[rocklangxu];
+	if(!str)str = ky;
+	return str;
+}";
+		$this->rock->createtxt('js/lang.js', $nrs);
+		unlink($pats);
+		return returnsuccess();
 	}
 	
+	public function getcontarr($file,$lx=0)
+	{
+		if(!file_exists($file))return '';
+		$cont = file_get_contents($file);
+		$arra = explode("\n", $cont);
+		$str  = '';
+		$ssb  = '';
+		foreach($arra as $k=>$strb){
+			if(!$strb)continue;
+			$strb = str_replace(array('^M',"\n","\r"),'', $strb);
+			$arrx = explode('|', $strb);
+			if($k>0){
+				$str.=',';
+				$ssb.=',';
+			}
+			$keys= $arrx[0];
+			$v001= '';
+			if(contain($keys,'::')){
+				$arr1 = explode('::', $keys);
+				$keys = $arr1[0];
+				$v001 = $arr1[1];
+			}
+			$str.='\''.$keys.'\'=>array(\''.$v001.'\'';
+			$ssb.='"'.$keys.'":["'.$v001.'"';
+			$len = count($arrx);
+			foreach($arrx as $k1=>$v1)if($k1>0){
+				$str.=',\''.$v1.'\'';
+				$ssb.=',"'.$v1.'"';
+			}
+			$str.=')';
+			$ssb.=']';
+		}
+		if($lx==0)return $str;
+		if($lx==1)return $ssb;
+	}
 }

+ 0 - 15
include/chajian/lang_en_USChajian.php

@@ -1,15 +0,0 @@
-<?php
-/**
-*	语言包(英文),需要自行翻译
-*/
-class lang_en_USChajian extends Chajian{
-	
-	
-	public function getLang()
-	{
-		$da = array(
-			
-		);
-		return $da;
-	}
-}

+ 0 - 15
include/chajian/lang_zh_CNChajian.php

@@ -1,15 +0,0 @@
-<?php
-/**
-*	语言包
-*/
-class lang_zh_CNChajian extends Chajian{
-	
-	
-	public function getLang()
-	{
-		$da = array(
-			
-		);
-		return $da;
-	}
-}

+ 17 - 0
include/class/rockClass.php

@@ -682,4 +682,21 @@ final class rockClass
 		if(substr($path,0,4)!='http')$path = ''.$url.''.$path.'';
 		return $path;
 	}
+	
+	/**
+	*	根据value获取name
+	*/
+	public function valtoname($arr, $val, $fid1='',$fid2='')
+	{
+		if($fid1=='')$fid1='value';
+		if($fid2=='')$fid2='name';
+		$nval = $val;
+		foreach($arr as $k=>$rs){
+			if($rs[$fid1]==$val){
+				$nval = $rs[$fid2];
+				break;
+			}
+		}
+		return $nval;
+	}
 }

+ 2 - 0
include/langlocal/langphp/lang.php

@@ -0,0 +1,2 @@
+<?php
+return array('新增'=>array('','','add'),'更多'=>array('','','more'),'我的申请'=>array('','我的申請','My Apply'),'刷新'=>array('','','Refresh'),'刷新统计中'=>array('','刷新統計中','RefreshTotaling'),'编辑'=>array('','編輯','edit'),'删除'=>array('','刪除','delete'),'菜单'=>array('','菜單','menu'),'评论'=>array('','評論','pinglun'),'编号'=>array('','編号','num'),'状态'=>array('','狀態','state'),'申请人'=>array('','申請人','Apply'),'申请人部门'=>array('','申請人部門','color'),'单号'=>array('','單号','level'),'搜索'=>array('','','Search'),'关键字'=>array('','關鍵字','keyword'),'提交人'=>array('','','Turn'),'包含'=>array('','','contain'),'等于'=>array('','等瘀','equal to'),'小于'=>array('','小瘀','less than'),'大于'=>array('','大瘀','greater than'),'请选择'=>array('','請選擇','Please select'),'不包含'=>array('','','not contain'),'已审核'=>array('','乙審核',''),'待处理'=>array('','待處理',''),'不同意'=>array('','不同逸',''),'已作废'=>array('','乙作廢',''),'退回'=>array('','','back'),'流程'=>array('','','Flow'),'授权查看'=>array('','授權查看',''),'经我处理'=>array('','經我處理',''));

+ 2 - 0
include/langlocal/langphp/langbase.php

@@ -0,0 +1,2 @@
+<?php
+return array('notcolumns'=>array('列表页没设置好,数据无法显示,没有可切换选择卡,去看帮助设置','列表頁沒設置好,數據無法顯示,沒友可切换選擇卡,去看幫助設置',''));

+ 2 - 0
include/langlocal/langphp/langmenu.php

@@ -0,0 +1,2 @@
+<?php
+return array('个人办公'=>array('','個人辦公',''),'任务资源'=>array('','任務資塬',''),'学校'=>array('','學校',''));

+ 31 - 0
include/langlocal/langtxt/lang.txt

@@ -0,0 +1,31 @@
+新增||add
+更多||more
+我的申请|我的申請|My Apply
+刷新||Refresh
+刷新统计中|刷新統計中|RefreshTotaling
+编辑|編輯|edit
+删除|刪除|delete
+菜单|菜單|menu
+评论|評論|pinglun
+编号|編号|num
+状态|狀態|state
+申请人|申請人|Apply
+申请人部门|申請人部門|color
+单号|單号|level
+搜索||Search
+关键字|關鍵字|keyword
+提交人||Turn
+包含||contain
+等于|等瘀|equal to
+小于|小瘀|less than
+大于|大瘀|greater than
+请选择|請選擇|Please select
+不包含||not contain
+已审核|乙審核|
+待处理|待處理|
+不同意|不同逸|
+已作废|乙作廢|
+退回||back
+流程||Flow
+授权查看|授權查看|
+经我处理|經我處理|

+ 2 - 0
include/langlocal/langtxt/lang_onlyjs.txt

@@ -0,0 +1,2 @@
+编辑|編輯|edit
+删除|刪除|delete

+ 1 - 0
include/langlocal/langtxt/langbase_onlyphp.txt

@@ -0,0 +1 @@
+notcolumns::列表页没设置好,数据无法显示,没有可切换选择卡,去看帮助设置|列表頁沒設置好,數據無法顯示,沒友可切换選擇卡,去看幫助設置|

+ 3 - 0
include/langlocal/langtxt/langmenu_onlyphp.txt

@@ -0,0 +1,3 @@
+个人办公|個人辦公|
+任务资源|任務資塬|
+学校|學校|

+ 16 - 12
include/rockFun.php

@@ -273,19 +273,23 @@ function getparams($key, $dev='')
 /**
 *	多语言返回
 */
-function lang($key)
+function lang($str,$lx='')
 {
-	$data = arrvalue($GLOBALS,'langdata');
-	$val  = '';
-	if(!$data)return $val;
-	if(strpos($key,'.')>0){
-		$skad = explode('.', $key);
-		$key1 = $skad[0];
-		$key2 = $skad[1];
-		$sdat = arrvalue($data[LANG], $key1);
-		if($sdat)$val = arrvalue($sdat, $key2);
+	if(!$str)return $str;
+	$da 	= arrvalue($GLOBALS,'langdata');
+	if(!$da)return $str;
+	$xuhao 	= $da['xuhao'];
+	$key 	= 'data'.$lx.'';
+	if(!isset($da[$key])){
+		$path	= ''.ROOT_PATH.'/include/langlocal/langphp/lang'.$lx.'.php';
+		$data   = array();
+		if(file_exists($path))$data = require($path);
+		$GLOBALS['langdata'][$key] = $data;
 	}else{
-		$val = arrvalue($data[LANG], $key);
+		$data 	= $da[$key];
 	}
-	return $val;
+	if(!isset($data[$str]))return $str;
+	$nstr 	= arrvalue($data[$str], $xuhao);
+	if(!$nstr)$nstr = $str;
+	return $nstr;
 }

+ 4 - 0
js/js.js

@@ -1180,4 +1180,8 @@ js.sendevent=function(typ,na,d){
 	d.opttype=typ;
 	if(!na)na='xinhuhome';
 	if(api.sendEvent)api.sendEvent({name: na,extra:d});
+}
+
+function lang(ky){
+	return ky;
 }

+ 9 - 0
js/lang.js

@@ -0,0 +1,9 @@
+var rocklang = '',rocklangxu=0,langdata = {"\u7f16\u8f91":["","\u7de8\u8f2f","edit"],"\u5220\u9664":["","\u522a\u9664","delete"]};
+function lang(ky){
+	if(!rocklang){rocklang = $('html').attr('lang');if(!rocklang)rocklang='zh-CN';if(rocklang=='zh-CN')rocklangxu=0;if(rocklang=='zh-FT')rocklangxu=1;if(rocklang=='en-US')rocklangxu=2;}
+	var d = langdata[ky];
+	if(!d)return ky;
+	var str = d[rocklangxu];
+	if(!str)str = ky;
+	return str;
+}

+ 21 - 1
web/res/js/jquery-changeuser.js

@@ -186,15 +186,23 @@
 			}
 			return ssu;
 		};
+		this._showdeptci = 0;
 		this._showdept=function(pid,oi,s1,type,sel,dob,uob){
-			var a,len,i,wwj,s2='',s='';
+			var a,len,i,wwj,s2='',s='',zs;
 			a=this.deptarr;
 			len=a.length;
+			this._showdeptci++;
 			for(i=0;i<len;i++){
+				//if(this._showdeptci==1)this._showdepticons(i);
 				if(a[i].pid==pid || sel=='2'){
 					this.fid = a[i].id;
 					wjj= 'images/files.png';
 					if(a[i].ntotal=='0' && uob)wjj= 'images/file.png';
+					if(this.changetype=='changedept' || this.changetype=='changedeptcheck'){
+						//zs = a[i].dtotal;
+						//wjj= 'images/files.png';
+						//if(zs==0)wjj= 'images/file.png';
+					}
 					s2 = '<input name="changeuserinput_'+rand+'" xls="d" xname="'+a[i].name+'" xu="'+i+'" value="'+a[i].id+'" style="width:18px;height:18px;" onclick="rchanguserclick(this)" type="'+type+'">';
 					if(dob)s2='';
 					if(s2!='' && !this._isdeptcheck(a[i]))s2='';
@@ -206,6 +214,18 @@
 			}
 			return s;
 		};
+		this._showdepticons=function(xu){
+			var a,len,i,d,zs=0;
+			a=this.deptarr;
+			len=a.length;
+			d = a[xu];
+			if(!isempt(d.dtotal))return zs;
+			for(i=0;i<len;i++){
+				if(a[i].pid==d.id)zs++;
+			}
+			this.deptarr[xu].dtotal=zs;
+			return zs;
+		};
 		this._showgorup=function(type){
 			var a,len,i,ssu='',s1;
 			a=this.grouparr;

+ 6 - 4
webmain/flow/input/inputAction.php

@@ -629,7 +629,7 @@ class inputAction extends Action
 				}
 				foreach($courses as $k=>$rs1){
 					$na = $rs1['name'];
-					if(!$this->isempt($rs1['explain']))$na.= '<br><span style="font-size:12px">('.$rs1['explain'].')</span>';
+					//if(!$this->isempt($rs1['explain']))$na.= '<br><span style="font-size:12px">('.$rs1['explain'].')</span>';
 					$rs1['name'] = $na;
 					$rs1['k'] 	 = $k;
 					$rs1['isnow']= $rs1['id']==$nowcourseid;
@@ -829,22 +829,23 @@ class inputAction extends Action
 			$this->atypearr[] = array(
 				'id'	=> 0,
 				'num'	=> 'grant',
-				'name'  => ''.$this->flow->modename.'授权查看',
+				'name'  => ''.$this->flow->modename.''.lang('授权查看').'',
 			);
 		}else if($this->loadci==1 && $this->adminid>0){
 			$this->atypearr = m('where')->getmywhere($this->modeid, $this->adminid, $pnum);
+			if(LANG!='zh-CN' && $this->atypearr)foreach($this->atypearr as $k1=>$rs1)$this->atypearr[$k1]['name'] = $this->flow->lang($rs1['name']);
 			if(isempt($pnum)){
 				$mors = $this->flow->moders;
 				if((int)arrvalue($mors,'iscs','0')>0)$this->atypearr[] = array(
 					'id'	=> 0,
 					'num'	=> 'chaos',
-					'name'  => ''.$mors['name'].'抄送给我',
+					'name'  => ''.$mors['name'].''.lang('抄送给我').'',
 				);
 				if($mors['isflow']>0){
 					$this->atypearr[] = array(
 						'id'	=> 0,
 						'num'	=> 'mychuli',
-						'name'  => ''.$mors['name'].'经我处理',
+						'name'  => ''.$mors['name'].''.lang('经我处理').'',
 					);
 				}
 			}
@@ -903,6 +904,7 @@ class inputAction extends Action
 		$souarr 	= array();
 		$this->input= c('input');
 		$this->flow = $flow;
+		$this->input->flow = $flow;
 		foreach($flow->fieldsarra as $k=>$rs){
 			
 			if($rs['issou']==1){

+ 56 - 0
webmain/flow/input/inputjs/mode_flowelement.js

@@ -0,0 +1,56 @@
+//流程模块【flowelement.表单元素管理】下录入页面自定义js页面,初始函数
+function initbodys(){
+	c.fieldshide('xiaoshu');
+	if(mid==0){
+		form('mid').value = js.request('mkid');
+		if(!form('mid').value){
+			js.msgerror('没有选择模块,无法新增');
+			c.formdisabled();
+			return;
+		}
+	}
+	form('attr').readOnly=false;
+	form('fields').readOnly=false;
+	form('dev').readOnly=false;
+	
+	c.onselectdata['attr']=function(sav,sna,sid){
+		form('attr').value = sid;
+	}
+	c.onselectdata['fields']=function(sav,sna,sid){
+		if(sav.subname)form('name').value = sav.subname;
+	}
+	$(form('fieldstype')).change(function(){
+		c.changetypes();
+	});
+}
+
+c.onselectdatabefore=function(fid){
+	if(fid=='fields')return {mkid:form('mid').value,iszb:form('iszb').value};
+}
+c.changetypes=function(){
+	var val = form('fieldstype').value;
+	if(val=='number'){
+		c.fieldsshow('xiaoshu');
+	}else{
+		c.fieldshide('xiaoshu');
+	}
+}
+
+function changesubmit(d){
+	if(d.fieldstype.indexOf('change')==0){
+		if(d.data=='' || d.data==d.fields)return '此字段元素类型时,数据源必须填写用来存储选择来的Id,请填写为:'+d.fields+'id';
+	}
+	if(d.islu=='1' && d.fields=='id')return 'id字段是不可以做录入项字段';
+}
+
+c.xuanchangs=function(){
+	var val = form('fieldstype').value;
+	if(val.indexOf('change')==0){
+		var cans1 = {
+			idobj:form('gongsi')
+		};
+		js.changeuser('AltS', 'deptusercheck', '选择范围', cans1);
+	}else{
+		js.msg('msg','元素类型不是选择人员部门的');
+	}
+}

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

@@ -0,0 +1,4 @@
+//流程模块【flowmenu.菜单管理】下录入页面自定义js页面,初始函数
+function initbodys(){
+	
+}

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

@@ -0,0 +1,4 @@
+//流程模块【flowset.流程模块列表】下录入页面自定义js页面,初始函数
+function initbodys(){
+	
+}

+ 114 - 0
webmain/flow/input/mode_flowelementAction.php

@@ -0,0 +1,114 @@
+<?php
+/**
+*	此文件是流程模块【flowelement.表单元素管理】对应控制器接口文件。
+*/ 
+class mode_flowelementClassAction extends inputAction{
+	
+	public $pobj;
+	protected function savebefore($table, $arr, $id, $addbo){
+		include_once('webmain/main/flow/flowAction.php');
+		$this->pobj = new flowClassAction();
+		$strs= $this->pobj->elemensavefieldsbefore($table, $arr, $id);
+		if($strs)return $strs;
+		
+		$rows = array();
+		if($arr['zdsm'])$rows['zdsm'] 	= htmlspecialchars_decode($arr['zdsm']);
+		return array(
+			'rows' => $rows
+		);
+	}
+	
+	protected function saveafter($table, $arr, $id, $addbo){
+		$this->pobj->elemensavefields($table, $arr);
+	}
+	
+	
+	public function iszbdata()
+	{
+		$mkid  = (int)$this->get('mkid','0');
+		$mid   = (int)$this->get('mid','0');
+		$mkrs  = array();
+		$talbe = '';
+		if($mid>0){
+			$mkid = m('flow_element')->getmou('mid', $mid);
+		}
+		if($mkid){
+			$mkrs = m('flow_set')->getone($mkid);
+			$talbe = $mkrs['table'];
+		}
+		$arr[] = array('value'=>'0','name'=>'主表('.$talbe.')字段');
+		if($mkrs){
+			$tables = $mkrs['tables'];
+			$names  = $mkrs['names'];
+			if(!isempt($tables)){
+				$tablesa = explode(',', $tables);
+				$namesa  = explode(',', $names);
+				foreach($tablesa as $k=>$v)$arr[] = array('value'=>$k+1,'name'=>'第个'.($k+1).'子表('.arrvalue($namesa, $k).'.'.$v.')字段');
+			}
+		}
+		return $arr;
+	}
+	
+	public function attrdata()
+	{
+		$arr[] = array('value'=>'readonly','name'=>'只读');
+		$arr[] = array('value'=>'onlyen','name'=>'不能有中文');
+		$arr[] = array('value'=>'onlycn','name'=>'必须包含中文');
+		$arr[] = array('value'=>'maxhang','name'=>'布局占整行');
+		$arr[] = array('value'=>'email','name'=>'邮件格式');
+		$arr[] = array('value'=>'mobile','name'=>'中文手机号');
+		$arr[] = array('value'=>'number','name'=>'必须是数字');
+		$arr[] = array('value'=>'date','name'=>'必须是日期格式如2020-02-02');
+		return $arr;
+	}
+	
+	public function devdata()
+	{
+		$arr[] = array('value'=>'admin','name'=>'{admin}','subname'=>'当前用户姓名');
+		$arr[] = array('value'=>'deptname','name'=>'{deptname}','subname'=>'当前用户部门');
+		$arr[] = array('value'=>'uid','name'=>'{uid}','subname'=>'当前用户ID');
+		$arr[] = array('value'=>'date','name'=>'{date}','subname'=>'当前日期');
+		$arr[] = array('value'=>'optdt','name'=>'{optdt}','subname'=>'当前时间');
+		$arr[] = array('value'=>'ranking','name'=>'{urs.ranking}','subname'=>'当前用户职位');
+		$arr[] = array('value'=>'urs','name'=>'{urs.mobile}','subname'=>'当前用户其他信息字段,mobile改成需要字段名');
+		return $arr;
+	}
+	
+	
+	protected function storeafter($table, $rows)
+	{
+		$mkid = (int)$this->post('mkid','0');
+		$mkrs = false;
+		if($mkid>0)$mkrs = m('flow_set')->getone($mkid);
+		if($this->loadci>1)return array(
+			'rows' => $rows,
+			'mkrs' => $mkrs,
+		);
+		
+		return array(
+			'rows' 		=> $rows,
+			'modearr' 	=> m('mode')->getmodearr(),
+			'mkrs' => $mkrs,
+		);
+	}
+	
+	public function fieldsstore()
+	{
+		$mkid  = (int)$this->get('mkid','0');
+		$iszb  = (int)$this->get('iszb','0');
+		$mkrs  = m('flow_set')->getone($mkid);
+		$table  = $mkrs['table'];
+		$tables = $mkrs['tables'];
+		if($iszb>0 && !isempt($tables)){
+			$tablesa = explode(',', $tables);
+			$table   = $tablesa[$iszb-1];
+		}
+		$farrs = array();
+		$farr	= $this->db->gettablefields('[Q]'.$table.'');
+		foreach($farr as $k=>$rs){
+			$farrs[]= array('value'=>$rs['name'],'name'=>$rs['name'],'subname'=>$rs['explain']);
+		}
+		return $farrs;
+	}
+}	
+			

+ 52 - 0
webmain/flow/input/mode_flowmenuAction.php

@@ -0,0 +1,52 @@
+<?php
+/**
+*	此文件是流程模块【flowmenu.菜单管理】对应控制器接口文件。
+*/ 
+class mode_flowmenuClassAction extends inputAction{
+	
+	
+	protected function savebefore($table, $arr, $id, $addbo){
+		
+	}
+	
+		
+	protected function saveafter($table, $arr, $id, $addbo){
+		
+	}
+	
+	public $alldata = array();
+	protected function storeafter($table, $rows)
+	{
+		$pid = (int)$this->post('pid','0');
+		if($pid>0){
+			$this->showgetmenu($rows,0,1,1);
+			$rows = $this->alldata;
+		}
+		
+		return array(
+			'rows' => $rows
+		);
+	}
+	
+	private function showgetmenu($rows,$pid, $oi, $zt)
+	{
+		$zh = 0;
+		foreach($rows as $k=>$rs){
+			if($pid==$rs['pid']){
+				$zh++;
+				$rs['level']	= $oi;
+				$zthui			= $rs['status'];
+				if($zt==0){
+					$rs['ishui']=1;
+					$zthui = 0;
+				}
+				$this->alldata[] 	= $rs;
+				$len = count($this->alldata)-1;
+				$cd  = $this->showgetmenu($rows,$rs['id'], $oi+1, $zthui);
+				$this->alldata[$len]['stotal']=$cd;
+			}
+		}
+		return $zh;
+	}
+}	
+			

+ 40 - 0
webmain/flow/input/mode_flowsetAction.php

@@ -0,0 +1,40 @@
+<?php
+/**
+*	此文件是流程模块【flowset.流程模块列表】对应控制器接口文件。
+*/ 
+class mode_flowsetClassAction extends inputAction{
+	
+	public $pobj;
+	protected function savebefore($table, $arr, $id, $addbo){
+		include_once('webmain/main/flow/flowAction.php');
+		$this->pobj = new flowClassAction();
+		return $this->pobj->flowsetsavebefore($table, $arr);
+	}
+	
+		
+	protected function saveafter($table, $arr, $id, $addbo){
+		$this->pobj->flowsetsaveafter($table, $arr);
+	}
+	
+	public function typedata()
+	{
+		$arr = array();
+		$rows = $this->db->getall('select `type` from `[Q]flow_set` group by `type` order by `sort`');
+		foreach($rows as $k=>$rs)$arr[] = array('value'=>'','name'=>$rs['type']);
+		return $arr;
+	}
+	
+	public function getothernrAjax()
+	{
+		$mkid 	= (int)$this->get('mkid','0');
+		$ind  	= (int)$this->get('ind','0');
+		$bh   	= 'flowelement';
+		$atype  = 'all'; 
+			
+		//读取数据
+		$flow  = m('flow')->initflow($bh);//初始化模块
+		$cont  = $flow->getrowstable($atype, 'and `mid`='.$mkid.'', 100,'name,fields,fieldstype,islu,isbt,iszb');//读取表格数据
+		return $cont;
+	}
+}	
+			

+ 21 - 1
webmain/flow/input/mode_userinfoAction.php

@@ -38,12 +38,32 @@ class mode_userinfoClassAction extends inputAction{
 	
 	public function storeafter($table, $rows)
 	{
+		$deptdata = false;
+		if($this->loadci==1 && $this->post('showdept')=='1'){
+			$drows = m('dept')->getall('1=1','`id`,`name`,`pid`');
+			$deptdata = $this->depttreeshu($drows, '0', '0');
+		}
 		return array(
 			'statearr' => $this->flow->statearrs,
-			'isadd'    => false
+			'isadd'    => false,
+			'deptdata'    => $deptdata,
 		);
 	}
 	
+	//组织结构活动得到树形数据
+	private function depttreeshu($rows, $pid, $fids)
+	{
+		$barr = array();
+		foreach($rows as $k=>$rs){
+			if($rs['pid']==$pid){
+				$rs['children'] = $this->depttreeshu($rows, $rs['id'], $fids);
+				$rs['expanded'] = $pid==$fids;
+				$barr[] = $rs;
+			}
+		}
+		return $barr;
+	}
+	
 	//人员状态切换保存后处理
 	public function userstateafter($table, $cans, $id)
 	{

+ 1 - 1
webmain/flow/input/tpl_input_lu.html

@@ -96,7 +96,7 @@ echo 'body{--main-color:'.$maincolor.';--main-border:rgba('.$maincolors.',0.2)}'
 					$stsp = '<div style="padding-top:20px"><table width="100%"><tr><td width="15%" nowrap height="30" align="right">';
 					if($firstrs['checktype']=='change'){
 						$stsp.='<font color=red>*</font>';
-						$placeholder = '必须指定人员';
+						$placeholder = '必须指定人员'.arrvalue($firstrs,'explain').'';
 						$firstrs['isbt'] = 1;
 					}
 					$stsp.= ''.$firstrs['name'].':</td>';

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

@@ -152,7 +152,7 @@ if($showheader==1)echo '<div id="header_title" style="padding-top:'.$cenghei.'px
 				$stsp.= '<td class="lurim" nowrap>';
 				if($firstrs['checktype']=='change'){
 					$stsp.='<font color=red>*</font>';
-					$placeholder = '必须指定人员';
+					$placeholder = '必须指定人员'.arrvalue($firstrs,'explain').'';
 					$firstrs['isbt'] = 1;
 				}
 				$stsp.= ''.$firstrs['name'].':</td>';

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
webmain/flow/page/input_flowelement.html


+ 1 - 0
webmain/flow/page/input_flowmenu.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">*^name^</td><td width="35%" class="ys2">{name}</td><td height="34" width="15%" align="right" class="ys1">^num^</td><td width="35%" class="ys2">{num}</td></tr><tr><td height="34" align="right" class="ys1">^url^</td><td colspan="3" class="ys2">{url}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">*^pid^</td><td width="35%" class="ys2">{pid}</td><td height="34" width="15%" align="right" class="ys1">^icons^</td><td width="35%" class="ys2">{icons}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^status^</td><td width="35%" class="ys2">{status}</td><td height="34" width="15%" align="right" class="ys1">^ispir^</td><td width="35%" class="ys2">{ispir}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^ishs^</td><td width="35%" class="ys2">{ishs}</td><td height="34" width="15%" align="right" class="ys1">^sort^</td><td width="35%" class="ys2">{sort}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^color^</td><td width="35%" class="ys2">{color}</td><td height="34" width="15%" align="right" class="ys1">^type^</td><td width="35%" class="ys2">{type}</td></tr></tbody></table>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
webmain/flow/page/input_flowset.html


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
webmain/flow/page/input_gong.html


+ 45 - 16
webmain/flow/page/rock_page.php

@@ -1,5 +1,6 @@
 //<script>	
 	var c = {
+		optalign:'',
 		reload:function(){
 			a.reload();
 		},
@@ -49,7 +50,7 @@
 		searchuname:function(d){
 			js.getuser({
 				type:'deptusercheck',
-				title:'搜索'+d.name,
+				title:'<?=lang('搜索')?>'+d.name,
 				changevalue:this.search_value,
 				callback:function(sna,sid){
 					c.searchunames(d,sna,sid);
@@ -94,7 +95,7 @@
 			this.initpage();
 			this.soudownobj = $('#downbtn_{rand}').rockmenu({
 				width:120,top:35,donghua:false,
-				data:[{name:'高级搜索',lx:0}],
+				data:[{name:'<?=lang('高级搜索')?>',lx:0}],
 				itemsclick:function(d, i){
 					if(d.lx==0)c.searchhigh();
 					if(d.lx==1)c.printlist();
@@ -133,7 +134,7 @@
 		loaddata:function(d){
 			this.setdownsodata(d.souarr);
 			if(d.modeid)modeid = d.modeid;
-			if(modeid>101 && d.loadci==1 && (!d.atypearr || d.atypearr.length==0))js.confirm('列表页没设置好,数据无法显示,没有可切换选择卡,去看帮助设置',function(){window.open('<?=URLY?>view_columns.html')});
+			if(modeid>101 && d.loadci==1 && (!d.atypearr || d.atypearr.length==0))js.confirm('<?=lang('notcolumns','base')?>',function(){window.open('<?=URLY?>view_columns.html')});
 			if(!d.atypearr)return;
 			get('addbtn_{rand}').disabled=(d.isadd!=true);
 			get('daobtn_{rand}').disabled=(d.isdaochu!=true);
@@ -148,14 +149,14 @@
 			js.initbtn(c);
 		},
 		setdownsodata:function(darr){
-			var ddata = [{name:'高级搜索',lx:0}],dsd,i;
+			var ddata = [{name:'<?=lang('高级搜索')?>',lx:0}],dsd,i;
 			if(darr)for(i=0;i<darr.length;i++){
 				dsd = darr[i];
 				dsd.lx=3;
 				ddata.push(dsd);
 			}
-			if(admintype==1)ddata.push({name:'自定义列显示',lx:2});
-			ddata.push({name:'打印',lx:1});
+			if(admintype==1)ddata.push({name:'<?=lang('自定义列显示')?>',lx:2});
+			ddata.push({name:'<?=lang('打印')?>',lx:1});
 			this.soudownobj.setData(ddata);
 		},
 		setcinfo:{},
@@ -176,18 +177,19 @@
 		},
 		daoru:function(){
 			window['managelist'+modenum+''] = a;
-			addtabs({num:'daoru'+modenum+'',url:'flow,input,daoru,modenum='+modenum+'',icons:'plus',name:'导入'+modename+''});
+			addtabs({num:'daoru'+modenum+'',url:'flow,input,daoru,modenum='+modenum+'',icons:'plus',name:'<?=lang('导入')?>'+modename+''});
 		},
 		initcolumns:function(bots){
-			var num = 'columns_'+modenum+'_'+pnum+'',d=[],d1,d2={},i,len=fieldsarr.length,bok,sa=[{name:'默认搜索',fields:'','inputtype':'dev'}];
+			var num = 'columns_'+modenum+'_'+pnum+'',d=[],d1,d2={},i,len=fieldsarr.length,ebo,bok,sa=[{name:'<?=lang('默认搜索')?>',fields:'','inputtype':'dev'}];
 			var nstr= fieldsselarr[num];if(!nstr)nstr='';
 			if(nstr)nstr=','+nstr+',';
 			if(nstr=='' && isflow>0){
-				var nes = chufarr.base_name;if(!nes)nes='申请人';
+				var nes = chufarr.base_name;if(!nes)nes='<?=lang('申请人')?>';
 				d.push({text:nes,dataIndex:'base_name',sortable:true});
-				nes = chufarr.base_deptname;if(!nes)nes='申请人部门';
+				nes = chufarr.base_deptname;if(!nes)nes='<?=lang('申请人部门')?>';
 				d.push({text:nes,dataIndex:'base_deptname',sortable:true});
 			}
+			var celleditor = 0;
 			for(i=0;i<len;i++){
 				d1 = fieldsarr[i];
 				bok= false;
@@ -197,11 +199,24 @@
 					if(nstr.indexOf(','+d1.fields+',')>=0)bok=true;
 				}
 				if(bok){
+					ebo = 0;
 					d2={text:d1.name,dataIndex:d1.fields};
 					if(d1.ispx=='1')d2.sortable=true;
 					if(d1.width)d2.width=d1.width;
 					if(d1.isalign=='1')d2.align='left';
 					if(d1.isalign=='2')d2.align='right';
+					if(d1.iseditlx=='1')ebo=1;
+					if(d1.iseditlx=='2' && admintype=='1')ebo=1;
+					if(d1.iseditlx=='3' && admintype=='1' && adminid=='1')ebo=1;
+					if(ebo==1){
+						d2.editor = true;
+						celleditor= 1;
+						d2.type   = d1.fieldstype;
+						if(d1.fieldstype=='select' || d1.fieldstype=='rockcombo'){
+							d2.type='select';
+							d2.store=this.editorstore(d1.store);
+						}
+					}
 					d.push(d2);
 				}
 				if(d1['issou']=='1'){
@@ -209,10 +224,14 @@
 					sa.push(d2);
 				}
 			}
-			if(isflow>0)d.push({text:'流程状态',dataIndex:'statustext'});
-			if(nstr=='' || nstr.indexOf(',caozuo,')>=0)d.push({text:'',dataIndex:'caozuo',callback:'opegs{rand}'});
+			if(isflow>0)d.push({text:'<?=lang('流程')?><?=lang('状态')?>',dataIndex:'statustext'});
+			if(nstr=='' || nstr.indexOf(',caozuo,')>=0){
+				d1 = {text:'',dataIndex:'caozuo',callback:'opegs{rand}'};
+				(this.optalign=='left')?d.unshift(d1):d.push(d1);
+			}
 			for(i=0;i<d.length;i++)if(this.setcinfo[d[i].dataIndex])d[i] = js.apply(d[i],this.setcinfo[d[i].dataIndex]);
 			d = this.oncolumns(d);
+			if(celleditor==1)a.setCans({celleditor:true});
 			bootparams.columns = d;
 			if(bots)a.setColumns(d);
 			d1 = this.fieldzarr;
@@ -227,6 +246,11 @@
 			this.changefields();
 			return d;
 		},
+		editorstore:function(d){
+			var d1=[],i;
+			if(d)for(i=0;i<d.length;i++)d1.push([d[i].value,d[i].name]);
+			return d1;
+		},
 		changefields:function(){
 			var o1 = get('fields_{rand}');
 			if(!o1)return;
@@ -251,7 +275,7 @@
 				$('#selkey_{rand}').show();
 				o2.value='1';
 				var o3 = get('selkey_{rand}');
-				$(o3).html('<option value="">-请选择-</option>');
+				$(o3).html('<option value="">-<?=lang('请选择')?>-</option>');
 				js.setselectdata(o3,xa.store,'value');
 			}else{
 				$('#keygj_{rand}').show();
@@ -277,10 +301,15 @@
 			}
 			window.open('?d=public&m=print&table='+rnd+'&modenum='+modenum+'&modename='+jm.base64encode(modename)+'');
 		},
-		getbtnstr:function(txt, click, ys, ots){
+		getbtnstr:function(txt, click, ys, ots,alx){
 			if(!ys)ys='default';
 			if(!ots)ots='';
-			return '<button class="btn btn-'+ys+'" id="btn'+click+'_{rand}" click="'+click+'" '+ots+' type="button">'+txt+'</button>';
+			var str='<button class="btn btn-'+ys+'" id="btn'+click+'_{rand}" click="'+click+'" '+ots+' type="button">'+txt+'</button>';
+			if(alx=='right')this.addrightbtn(str);
+			return str;
+		},
+		addrightbtn:function(str){
+			$('#tdright_{rand}').prepend(str+'&nbsp;&nbsp;');
 		},
 		setfieldslist:function(){
 			new highsearchclass({
@@ -304,7 +333,7 @@
 		fanye:true,modenum:modenum,listcreate:true,modename:modename,statuschange:false,tablename:jm.base64decode(listname),
 		url:c.storeurl(),storeafteraction:'storeaftershow',storebeforeaction:'storebeforeshow',optobj:c,syspnum:pnum,
 		params:{atype:atype},
-		columns:[{text:"字段",dataIndex:"face"},{
+		columns:[{text:"fields",dataIndex:"face"},{
 			text:'',dataIndex:'caozuo',callback:'opegs{rand}'
 		}],
 		itemdblclick:function(){

+ 15 - 14
webmain/flow/page/rock_page_aas.php

@@ -5,7 +5,7 @@
 */
 defined('HOST') or die ('not access');
 $modenum = arrvalue($pageparams,'bh');
-if(!$modenum)exit('没有参数bh');
+if(!$modenum)exit('404 modenum is empty');
 
 $flow 	= m('flow:'.$modenum.'')->initbase($modenum);
 $isflow = $flow->isflow;
@@ -25,8 +25,8 @@ $(document).ready(function(){
 	$path = 'webmain/flow/page/rock_page_'.$modenum.'_script.php';
 	if(file_exists($path))include_once($path);
 	
-	$shoukey = '关键字';
-	if($flow->isflow>0)$shoukey = '关键字/申请人/单号';
+	$shoukey = lang('关键字');
+	if($flow->isflow>0)$shoukey = ''.lang('关键字').'/'.lang('申请人').'/'.lang('单号').'';
 	?>
 	
 
@@ -40,13 +40,13 @@ $(document).ready(function(){
 <!--SCRIPTend-->
 <!--HTMLstart-->
 <div>
-	<table width="100%">
+	<table width="100%" id="tools<?=$modenum?>_{rand}">
 	<tr>
-		<td style="padding-right:10px;" id="tdleft_{rand}" nowrap><button id="addbtn_{rand}" class="btn btn-primary" click="clickwin,0" disabled type="button"><i class="icon-plus"></i> 新增</button></td>
+		<td style="padding-right:10px;" id="tdleft_{rand}" nowrap><button id="addbtn_{rand}" class="btn btn-primary" click="clickwin,0" disabled type="button"><i class="icon-plus"></i> <?=lang('新增')?></button></td>
 		
-		<td><select class="form-control" style="width:110px;border-top-right-radius:0;border-bottom-right-radius:0;padding:0 2px" id="fields_{rand}"></select></td>
-		<td><select class="form-control" style="width:60px;border-radius:0px;border-left:0;padding:0 2px" id="like_{rand}"><option value="0">包含</option><option value="1">等于</option><option value="2">大于等于</option><option value="3">小于等于</option><option value="4">不包含</option></select></td>
-		<td><select class="form-control" style="width:130px;border-radius:0;border-left:0;display:none;padding:0 5px" id="selkey_{rand}"><option value="">-请选择-</option></select><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px" id="keygj_{rand}" placeholder="关键词"><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;" id="key_{rand}" placeholder="<?=$shoukey?>">
+		<td tdlx="sou"><select class="form-control" style="width:110px;border-top-right-radius:0;border-bottom-right-radius:0;padding:0 2px" id="fields_{rand}"></select></td>
+		<td tdlx="sou"><select class="form-control" style="width:60px;border-radius:0px;border-left:0;padding:0 2px" id="like_{rand}"><option value="0"><?=lang('包含')?></option><option value="1"><?=lang('等于')?></option><option value="2"><?=lang('大于')?><?=lang('等于')?></option><option value="3"><?=lang('小于')?><?=lang('等于')?></option><option value="4"><?=lang('不包含')?></option></select></td>
+		<td tdlx="sou"><select class="form-control" style="width:130px;border-radius:0;border-left:0;display:none;padding:0 5px" id="selkey_{rand}"><option value="">-<?=lang('请选择')?>-</option></select><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px" id="keygj_{rand}" placeholder="<?=lang('关键字')?>"><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;" id="key_{rand}" placeholder="<?=$shoukey?>">
 		</td>
 		<?php 
 		$lbztxs = $flow->moders['lbztxs'];
@@ -56,25 +56,26 @@ $(document).ready(function(){
 		if($lbztxs==2)$showzt = false;
 		if($showzt){
 			$ztarr	= $flow->getstatusarr();
-			$zthtml = '<td><select class="form-control" style="width:120px;border-left:0;border-radius:0;" id="selstatus_{rand}"><option value="">-全部状态-</option>';
+			$zthtml = '<td><select class="form-control" style="width:120px;border-left:0;border-radius:0;" id="selstatus_{rand}"><option value="">-'.lang('全部').''.lang('状态').'-</option>';
 			foreach($ztarr as $zt=>$ztv){
 				if($isflow==0 && $zt==23)continue;
-				$zthtml .= '<option style="color:'.arrvalue($ztv, 1).'" value="'.$zt.'">'.$ztv[0].'</option>';
+				$vals = str_replace('?','', $ztv[0]);
+				$zthtml .= '<option style="color:'.arrvalue($ztv, 1).'" value="'.$zt.'">'.lang($vals).'</option>';
 			}
 			$zthtml .= '</select></td>';
 			$zthtml	 = str_replace('?','', $zthtml);
 			echo $zthtml;
 		}
 		?>
-		<td>
+		<td tdlx="sou">
 			<div style="white-space:nowrap">
-			<button style="border-right:0;border-radius:0;border-left:0" class="btn btn-default" click="searchbtn" type="button">搜索</button><button class="btn btn-default" id="downbtn_{rand}" type="button" style="padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0"><i class="icon-angle-down"></i></button> 
+			<button style="border-right:0;border-radius:0;border-left:0" class="btn btn-default" click="searchbtn" type="button"><?=lang('搜索')?></button><button class="btn btn-default" id="downbtn_{rand}" type="button" style="padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0"><i class="icon-angle-down"></i></button> 
 			</div>
 		</td>
-		<td  width="90%" style="padding-left:10px"><div id="changatype{rand}" class="btn-group"></div></td>
+		<td id="tdcenter_{rand}" width="90%" style="padding-left:10px"><div id="changatype{rand}" class="btn-group"></div></td>
 	
 		<td align="right" id="tdright_{rand}" nowrap>
-			<span style="display:none" id="daoruspan_{rand}"><button class="btn btn-default" click="daoru,1" type="button">导入</button>&nbsp;&nbsp;&nbsp;</span><button class="btn btn-default" style="display:none" id="daobtn_{rand}" disabled click="daochu" type="button">导出 <i class="icon-angle-down"></i></button> 
+			<span style="display:none" id="daoruspan_{rand}"><button class="btn btn-default" click="daoru,1" type="button"><?=lang('导入')?></button>&nbsp;&nbsp;&nbsp;</span><button class="btn btn-default" style="display:none" id="daobtn_{rand}" disabled click="daochu" type="button"><?=lang('导出')?> <i class="icon-angle-down"></i></button> 
 		</td>
 	</tr>
 	</table>

+ 6 - 6
webmain/flow/page/rock_page_caigou.php

@@ -44,22 +44,22 @@ if(pnum=='all'){
 <div>
 	<table width="100%">
 	<tr>
-		<td style="padding-right:10px;" id="tdleft_{rand}" nowrap><button id="addbtn_{rand}" class="btn btn-primary" click="clickwin,0" disabled type="button"><i class="icon-plus"></i> 新增</button></td>
+		<td style="padding-right:10px;" id="tdleft_{rand}" nowrap><button id="addbtn_{rand}" class="btn btn-primary" click="clickwin,0" disabled type="button"><i class="icon-plus"></i> <?=lang('新增')?></button></td>
 		
 		<td><select class="form-control" style="width:110px;border-top-right-radius:0;border-bottom-right-radius:0;padding:0 2px" id="fields_{rand}"></select></td>
-		<td><select class="form-control" style="width:60px;border-radius:0px;border-left:0;padding:0 2px" id="like_{rand}"><option value="0">包含</option><option value="1">等于</option><option value="2">大于等于</option><option value="3">小于等于</option><option value="4">不包含</option></select></td>
-		<td><select class="form-control" style="width:130px;border-radius:0;border-left:0;display:none;padding:0 5px" id="selkey_{rand}"><option value="">-请选择-</option></select><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px" id="keygj_{rand}" placeholder="关键词"><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;" id="key_{rand}" placeholder="关键字/申请人/单号">
+		<td><select class="form-control" style="width:60px;border-radius:0px;border-left:0;padding:0 2px" id="like_{rand}"><option value="0"><?=lang('包含')?></option><option value="1"><?=lang('等于')?></option><option value="2"><?=lang('大于')?><?=lang('等于')?></option><option value="3"><?=lang('小于')?><?=lang('等于')?></option><option value="4"><?=lang('不包含')?></option></select></td>
+		<td><select class="form-control" style="width:130px;border-radius:0;border-left:0;display:none;padding:0 5px" id="selkey_{rand}"><option value="">-<?=lang('请选择')?>-</option></select><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px" id="keygj_{rand}" placeholder="<?=lang('关键字')?>"><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;" id="key_{rand}" placeholder="<?=lang('关键字')?>/<?=lang('申请人')?>/<?=lang('单号')?>">
 		</td>
-		<td><select class="form-control" style="width:120px;border-left:0;border-radius:0;" id="selstatus_{rand}"><option value="">-全部状态-</option><option style="color:blue" value="0">待处理</option><option style="color:green" value="1">已审核</option><option style="color:red" value="2">不同意</option><option style="color:#888888" value="5">已作废</option><option style="color:#17B2B7" value="23">退回</option></select></td>
+		<td><select class="form-control" style="width:120px;border-left:0;border-radius:0;" id="selstatus_{rand}"><option value="">-<?=lang('全部')?><?=lang('状态')?>-</option><option style="color:blue" value="0"><?=lang('待处理')?></option><option style="color:green" value="1"><?=lang('已审核')?></option><option style="color:red" value="2"><?=lang('不同意')?></option><option style="color:#888888" value="5"><?=lang('已作废')?></option><option style="color:#17B2B7" value="23"><?=lang('退回')?></option></select></td>
 		<td>
 			<div style="white-space:nowrap">
-			<button style="border-right:0;border-radius:0;border-left:0" class="btn btn-default" click="searchbtn" type="button">搜索</button><button class="btn btn-default" id="downbtn_{rand}" type="button" style="padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0"><i class="icon-angle-down"></i></button> 
+			<button style="border-right:0;border-radius:0;border-left:0" class="btn btn-default" click="searchbtn" type="button"><?=lang('搜索')?></button><button class="btn btn-default" id="downbtn_{rand}" type="button" style="padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0"><i class="icon-angle-down"></i></button> 
 			</div>
 		</td>
 		<td  width="90%" style="padding-left:10px"><div id="changatype{rand}" class="btn-group"></div></td>
 	
 		<td align="right" id="tdright_{rand}" nowrap>
-			<span style="display:none" id="daoruspan_{rand}"><button class="btn btn-default" click="daoru,1" type="button">导入</button>&nbsp;&nbsp;&nbsp;</span><button class="btn btn-default" style="display:none" id="daobtn_{rand}" disabled click="daochu" type="button">导出 <i class="icon-angle-down"></i></button> 
+			<span style="display:none" id="daoruspan_{rand}"><button class="btn btn-default" click="daoru,1" type="button"><?=lang('导入')?></button>&nbsp;&nbsp;&nbsp;</span><button class="btn btn-default" style="display:none" id="daobtn_{rand}" disabled click="daochu" type="button"><?=lang('导出')?> <i class="icon-angle-down"></i></button> 
 		</td>
 	</tr>
 	</table>

+ 102 - 0
webmain/flow/page/rock_page_flowelement_script.php

@@ -0,0 +1,102 @@
+//<script>
+
+c.optalign = 'left';
+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;
+
+c.initpage=function(){
+	$('#tdleft_{rand}').after('<td ><select style="width:180px;"  class="form-control" id="modeid_{rand}" ></select></td>');
+	$('#modeid_{rand}').change(function(){
+		c.changemodeid(this);
+	});
+}
+
+c.onloadbefore=function(d){
+	if(d.modearr){
+		var s = '<option value="0">-选择模块-</option>',len=d.modearr.length,i,csd,types='';
+		for(i=0;i<len;i++){
+			csd = d.modearr[i];
+			if(types!=csd.type){
+				if(types!='')s+='</optgroup>';
+				s+='<optgroup label="'+csd.type+'">';
+			}
+			s+='<option value="'+csd.id+'">'+csd.name+'</option>';
+			types = csd.type;
+		}
+		s+='</optgroup>';
+		$('#modeid_{rand}').html(s);
+	}
+	if(d.mkrs)mknum = d.mkrs.num;
+}
+c.changemodeid=function(o1){
+	var val = o1.value;
+	if(val=='0')return;
+	mkid = val;
+	a.setparams({mkid:mkid},true);
+}
+c.xuanmoxbo = function(){
+	if(mkid=='0'){
+		js.msgerror('请先选择模块');
+		return false;
+	}
+	return true;
+}
+
+c.clickwin=function(o1,lx){
+	if(!this.xuanmoxbo())return;
+	openinput(modename,modenum,'0&mkid='+mkid+'','opegs{rand}');
+} 
+
+$('#tools'+modenum+'_{rand}').find('td[tdlx="sou"]').hide();
+
+var strss = '<div class="btn-group" style="margin-right:10px">';
+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>';
+strss+='<button class="btn btn-default" click="zhanshi,2" type="button">打印布局</button>';
+strss+='<button class="btn btn-default" click="lulu,0" type="button">PC录入页</button>';
+strss+='<button class="btn btn-default" click="lulu,1" type="button">手机录入页</button>';
+strss+='<button class="btn btn-default" click="changelieb" type="button">生成列表页</button>';
+strss+='</div>';
+
+$('#tdcenter_{rand}').prepend(''+strss+'');
+
+c.inputs=function(){
+	if(!this.xuanmoxbo())return;
+	var url='?m=flow&d=main&a=input&setid='+mkid+'&atype=0';
+	js.open(url,980,530);
+}
+
+c.zhanshi=function(o1,lx){
+	if(!this.xuanmoxbo())return;
+	var url='?m=flow&d=main&a=inputzs&setid='+mkid+'&atype='+lx+'';
+	js.open(url,980,530);
+}
+c.lulu=function(o1,lx){
+	if(!this.xuanmoxbo())return;
+	if(lx==1){
+		var url = js.getajaxurl('@lum','input','flow',{num:mknum});
+		js.open(url, 380,500);
+	}else{
+		var url = js.getajaxurl('@lu','input','flow',{num:mknum});
+		js.open(url, 800,450);
+	}
+}
+c.changelieb=function(){
+	if(!this.xuanmoxbo())return;
+	js.ajax(js.getajaxurl('changelieb','flow','main'),{modeid:mkid},function(s){
+		js.msg('success','生成成功路径:'+s+'');
+	},'get','','生成中...,生成成功');
+}
+c.getbtnstr('旧版','oldban','','','right');
+c.getbtnstr('刷新排序','rexuhao','','','right');
+c.rexuhao=function(){
+	if(!this.xuanmoxbo())return;
+	js.ajax(js.getajaxurl('rexuhao','flow','main'),{modeid:mkid},function(){
+		a.reload();
+	},'get','','刷新中...,刷新成功');
+}
+c.oldban=function(){
+	addtabs({'name':'表单元素管理(旧版)',url:'main,flow,element',num:'flowelementold','icons':'check'});
+}

+ 58 - 0
webmain/flow/page/rock_page_flowmenu_script.php

@@ -0,0 +1,58 @@
+//<script>
+
+bootparams.statuschange = true;
+$('#tools'+modenum+'_{rand}').find('td[tdlx="sou"]').hide();
+bootparams.fanye = false;
+bootparams.tree = true;
+c.getbtnstr('旧版','oldban','','','right');
+c.getbtnstr('加下级菜单','jiaxiaji','','disabled','right');
+
+c.setcolumns('url',{
+	type:'textarea',
+	renderstyle:function(v,d){
+		return 'word-wrap:break-word;word-break:break-all;white-space:normal;width:180px';
+	}
+});
+
+if(ISDEMO){
+	c.setcolumns('status',{
+		editor:false
+	});
+}
+
+c.oldban=function(){
+	addtabs({'name':'菜单管理(旧版)',url:'system,menu',num:'menuold','icons':'list-ul'});
+}
+
+c.jiaxiaji=function(){
+	openinput(modename,modenum,'0&def_pid='+a.changeid+'','opegs{rand}');
+}
+
+function anbtsenb(bo){
+	get('btnjiaxiaji_{rand}').disabled=bo;
+}
+
+bootparams.itemclick=function(){
+	anbtsenb(false);
+}
+bootparams.beforeload=function(){
+	anbtsenb(true);
+}
+
+c.initpage=function(){
+	$('#tdleft_{rand}').after('<td style="padding-right:10px"><select style="width:150px;"  class="form-control" id="modeid_{rand}" ><option value="0">请选择菜单</option></select></td>');
+	$('#modeid_{rand}').change(function(){
+		a.setparams({pid:this.value},true);
+	});
+}
+
+c.changemodeid=function(){
+	
+}
+
+var boodes = false;
+c.onloadbefore=function(d){
+	if(boodes)return;
+	js.setselectdata(get('modeid_{rand}'),d.rows,'id');
+	boodes = true;
+}

+ 171 - 0
webmain/flow/page/rock_page_flowset_script.php

@@ -0,0 +1,171 @@
+//<script>
+
+c.optalign = 'left';
+bootparams.statuschange = true;
+bootparams.checked = true;
+var editarr = ['pctx','status','emtx','mctx','wxtx','ddtx','istxset','ispl','islu','isup','ishz'];
+for(var i=0;i<editarr.length;i++)c.setcolumns(editarr[i],{type:'checkbox'});
+
+c.getbtnstr('旧版','oldban','','','right');
+
+<?php if(getconfig('rockinzip'))echo "c.getbtnstr('生成安装包','shengsheng','','','right');"; ?>
+c.getbtnstr('重新匹配流程','pipei','','','right');
+c.getbtnstr('复制','fuzhi','','disabled','right');
+c.getbtnstr('生成所有列表页','allcreate','','','right');
+c.getbtnstr('模块开发管理 <i class="icon-angle-down"></i>','downbtn','primary','disabled','right');
+
+if(ISDEMO){
+	c.setcolumns('status',{
+		editor:false,
+		type:'checkbox'
+	});
+}
+
+c.shengsheng=function(){
+	var sid = a.getchecked();
+	addtabs({'name':'创建安装包',url:'main,flow,createinstall,sid='+jm.base64encode(sid)+'',num:'createinstall'});
+}
+
+c.oldban=function(){
+	addtabs({'name':'流程模块列表(旧版)',url:'main,flow,set',num:'flowsetold','icons':'th-list'});
+}
+
+c.pipei=function(){
+	js.ajax(js.getajaxurl('reloadpipei','flow','main'),{},function(s){
+		js.msg('success', s);
+	},'get',false,'匹配中...,匹配完成');
+}
+c.fuzhi=function(){
+	if(a.changeid==0)return;
+	js.prompt('输入新模块编号','将会从模块['+a.changedata.name+']复制主表子表和表单元素字段的!', function(jg,txt){
+		if(jg=='yes' && txt)c.copys(txt);
+	});
+}
+c.copys=function(txt){
+	js.ajax(js.getajaxurl('copymode','flow','main'),{id:a.changeid,name:txt},function(s){
+		if(s=='ok'){
+			a.reload();
+		}else{
+			js.msg('msg',s);
+		}
+	},'post',false,'复制中...,复制成功:还是要做其他很多事的,具体请到官网看模块开发视频。');
+}
+c.downbtn=function(){}
+
+function anbtsenb(bo){
+	get('btnfuzhi_{rand}').disabled=bo;
+	get('btndownbtn_{rand}').disabled=bo;
+}
+
+bootparams.itemclick=function(){
+	anbtsenb(false);
+}
+bootparams.beforeload=function(){
+	anbtsenb(true);
+}
+
+c.allcreate=function(){
+	js.ajax(js.getajaxurl('allcreate','flow','main'),{},function(s){
+		js.msg('success', s);
+	},'get',false,'生成中...');
+}
+
+$('#btndownbtn_{rand}').rockmenu({
+	width:170,top:35,donghua:false,
+	data:[{
+		name:'主表管理',lx:0
+	},{
+		name:'清空此模块数据',lx:2
+	},{
+		name:'同步到单位数据',lx:3
+	},{
+		name:'同步菜单到单位数据',lx:4
+	}],
+	itemsclick:function(d, i){
+		var id = a.changedata.id;
+		if(!id)return;
+		if(d.lx==0)c.biaoge();
+		if(d.lx==2)c.clearalldata(id);
+		if(d.lx==3)c.tongbudanwu();
+		if(d.lx==4)c.tongbumenu();
+	}
+});
+
+c.biaoge=function(){
+	this.showtalbe(a.changedata.table);
+}
+c.showtalbe=function(table){
+	if(!table)return;
+	var name='<?=PREFIX?>'+table+'';
+	addtabs({num:'tablefields'+name+'',url:'system,table,fields,table='+name+'',name:'['+name+']字段管理'});
+}
+
+c.clearalldata=function(id){
+	if(a.changedata.type=='系统'){
+		js.msgerror('系统类型模块不能清空');
+		return;
+	}
+	js.confirm('确定要清空此['+a.changedata.name+']模块所有数据嘛?<b style="color:red">慎重慎重慎重慎重!</b>',function(ssal){
+		if(ssal=='yes')c.clearalldatas(id);
+	});
+}
+c.clearalldatas=function(id){
+	js.ajax(js.getajaxurl('clearallmode','flow','main'),{id:id},function(s){
+		if(s=='ok'){
+			a.reload();
+		}else{
+			js.msg('msg',s);
+		}
+	},'post',false,'清空中...,清空成功');
+}
+c.tongbudanwu=function(){
+	var sid = a.getchecked();
+	if(!sid){
+		js.msgerror('复选框中没有选中模块');return;
+	}
+	this.xuandanwefe(sid,0);
+}
+c.xuandanwefe=function(sid,lx){
+	js.tanbody('senddw','同步到单位数据里', 350, 200, {
+		html:'<form name="sendform"><div style="padding:10px;" id="senddwdiv"><img src="images/mloading.gif"></div></form>',
+		btn:[{text:'确定同步'}]
+	});
+	
+	js.ajax(js.getajaxurl('getcompanydata','flow','main'),{},function(ret){
+		var str = '',da=ret.data;
+		for(var i=0;i<da.length;i++){
+			str+='<div><label><input type="checkbox" name="xuanzhe[]" value="'+da[i].id+'">'+da[i].name+'</label></div>';
+		}
+		if(!str)str=ret.msg;
+		$('#senddwdiv').html(str);
+	},'get,json');
+	
+	$('#senddw_btn0').click(function(){
+		c.sendgongwenjsok(sid,lx);
+	});
+},
+
+c.sendgongwenjsok=function(id1,lx){
+	var da = js.getformdata('sendform');
+	if(!da.xuanzhe){
+		js.msgerror('请选择单位');
+		return;
+	}
+	da.modeids = id1;
+	da.lx 	   = lx;
+	js.loading('同步中...');
+	js.tanclose('senddw');
+	js.ajax(publicmodeurl('company','anaymodedata'),da,function(ret){
+		js.msgok(ret.data);
+	},'post,json');
+},
+c.tongbumenu=function(){
+	$.selectdata({
+		title:'选择需要同步的菜单',
+		url:js.getajaxurl('getmenu','upgrade','system',{glx:1}),
+		checked:true,maxshow:500,
+		onselect:function(d1,sna,sid){
+			if(sid)c.xuandanwefe(sid, 1)
+		}
+	});
+}

+ 6 - 6
webmain/flow/page/rock_page_gong.php

@@ -9,7 +9,7 @@ defined('HOST') or die ('not access');
 <script>
 $(document).ready(function(){
 	{params}
-	var modenum = 'gong',modename='通知公告',isflow=0,modeid='1',atype = params.atype,pnum=params.pnum,modenames='多行子表名称',listname='aW5mb3I:';
+	var modenum = 'gong',modename='通知公告',isflow=0,modeid='1',atype = params.atype,pnum=params.pnum,modenames='投票项目',listname='aW5mb3I:';
 	if(!atype)atype='';if(!pnum)pnum='';
 	var fieldsarr = [],fieldsselarr= [],chufarr= [];
 	
@@ -55,22 +55,22 @@ c.setcolumns('appxs',{
 <div>
 	<table width="100%">
 	<tr>
-		<td style="padding-right:10px;" id="tdleft_{rand}" nowrap><button id="addbtn_{rand}" class="btn btn-primary" click="clickwin,0" disabled type="button"><i class="icon-plus"></i> 新增</button></td>
+		<td style="padding-right:10px;" id="tdleft_{rand}" nowrap><button id="addbtn_{rand}" class="btn btn-primary" click="clickwin,0" disabled type="button"><i class="icon-plus"></i> <?=lang('新增')?></button></td>
 		
 		<td><select class="form-control" style="width:110px;border-top-right-radius:0;border-bottom-right-radius:0;padding:0 2px" id="fields_{rand}"></select></td>
-		<td><select class="form-control" style="width:60px;border-radius:0px;border-left:0;padding:0 2px" id="like_{rand}"><option value="0">包含</option><option value="1">等于</option><option value="2">大于等于</option><option value="3">小于等于</option><option value="4">不包含</option></select></td>
-		<td><select class="form-control" style="width:130px;border-radius:0;border-left:0;display:none;padding:0 5px" id="selkey_{rand}"><option value="">-请选择-</option></select><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px" id="keygj_{rand}" placeholder="关键词"><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;" id="key_{rand}" placeholder="关键字">
+		<td><select class="form-control" style="width:60px;border-radius:0px;border-left:0;padding:0 2px" id="like_{rand}"><option value="0"><?=lang('包含')?></option><option value="1"><?=lang('等于')?></option><option value="2"><?=lang('大于')?><?=lang('等于')?></option><option value="3"><?=lang('小于')?><?=lang('等于')?></option><option value="4"><?=lang('不包含')?></option></select></td>
+		<td><select class="form-control" style="width:130px;border-radius:0;border-left:0;display:none;padding:0 5px" id="selkey_{rand}"><option value="">-<?=lang('请选择')?>-</option></select><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px" id="keygj_{rand}" placeholder="<?=lang('关键字')?>"><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;" id="key_{rand}" placeholder="<?=lang('关键字')?>">
 		</td>
 		
 		<td>
 			<div style="white-space:nowrap">
-			<button style="border-right:0;border-radius:0;border-left:0" class="btn btn-default" click="searchbtn" type="button">搜索</button><button class="btn btn-default" id="downbtn_{rand}" type="button" style="padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0"><i class="icon-angle-down"></i></button> 
+			<button style="border-right:0;border-radius:0;border-left:0" class="btn btn-default" click="searchbtn" type="button"><?=lang('搜索')?></button><button class="btn btn-default" id="downbtn_{rand}" type="button" style="padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0"><i class="icon-angle-down"></i></button> 
 			</div>
 		</td>
 		<td  width="90%" style="padding-left:10px"><div id="changatype{rand}" class="btn-group"></div></td>
 	
 		<td align="right" id="tdright_{rand}" nowrap>
-			<span style="display:none" id="daoruspan_{rand}"><button class="btn btn-default" click="daoru,1" type="button">导入</button>&nbsp;&nbsp;&nbsp;</span><button class="btn btn-default" style="display:none" id="daobtn_{rand}" disabled click="daochu" type="button">导出 <i class="icon-angle-down"></i></button> 
+			<span style="display:none" id="daoruspan_{rand}"><button class="btn btn-default" click="daoru,1" type="button"><?=lang('导入')?></button>&nbsp;&nbsp;&nbsp;</span><button class="btn btn-default" style="display:none" id="daobtn_{rand}" disabled click="daochu" type="button"><?=lang('导出')?> <i class="icon-angle-down"></i></button> 
 		</td>
 	</tr>
 	</table>

+ 23 - 1
webmain/flow/page/rock_page_userinfo.php

@@ -66,7 +66,29 @@ if(atype=='all'){
 		get('btnbianjila_{rand}').disabled=true;
 	}
 	
-	$('#viewuserinfo_{rand}').after('<div class="tishi">添加人员档案请到[用户管理]那添加,删除档案,需要先删除用户在删除档案。</div>');
+	c.initpage=function(){
+		a.settishi('<div class="tishi">添加人员档案请到[用户管理]那添加,删除档案,需要先删除用户在删除档案。</div>');
+	}
+	
+	var showdept = false;//是否显示左边部门
+	
+	if(showdept){
+		bootparams.params.showdept='1';
+		var shtm = '<table width="100%"><tr valign="top"><td><div style="border:1px #cccccc solid;width:220px"><div id="optionview_{rand}" style="height:'+(viewheight-90)+'px;overflow:auto;"></div></div></td><td width="8" nowrap><div style="width:8px;overflow:hidden"></div></td><td width="95%"><div id="viewuserinfo_{rand}"></div></td></tr></table>';
+		$('#viewuserinfo_{rand}').after(shtm).remove();
+		var at = $('#optionview_{rand}').bootstree({
+			url:false,autoLoad:false,
+			columns:[{
+				text:'部门',dataIndex:'name',align:'left',xtype:'treecolumn'
+			}],
+			itemdblclick:function(d){
+				a.setparams({'search_value':'d'+d.id+'','search_fields':'id'}, true);
+			}
+		});
+		c.onloadbefore=function(d){
+			if(d.deptdata)at.loadData(d.deptdata);
+		}
+	}
 }
 $('#tdleft_{rand}').hide();
 

+ 28 - 0
webmain/flow/page/view_flowset_0.html

@@ -0,0 +1,28 @@
+<div class="r-tabs" tabid="a" style="margin-left:34px">
+	<div index="0" class="r-tabs-item active">模块详情</div>
+	<div index="1"  custid="{id}" class="r-tabs-item">字段信息</div>
+</div>
+
+<!--第一个内容,固定默认的详情变量-->
+<div tabitem="0" tabid="a">
+$contview$
+</div>
+
+<div class="ys0" tabitem="1" tabid="a" style="display:none">字段信息</div>
+
+<script>
+var loadbo = [];
+js.ontabsclicks=function(ind,tid,o,ho){
+	if(ind>=1 && !loadbo[ind]){
+		var custid = o.attr('custid');
+		ho.html('<img src="images/mloading.gif">');
+		js.ajax(geturlact('getothernr'),{
+			'mkid':custid,
+			'ind':ind
+		},function(ret){
+			ho.html(ret);
+		});
+	}
+	loadbo[ind] = true;
+}
+</script>

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

@@ -7,7 +7,7 @@ defined('HOST') or die ('not access');
 ?>
 <script>
 moemyapplylist=function(){
-	addtabs({num:'applymy',url:'main,fwork,bill,atype=my',icons:'align-left',name:'我的申请'});
+	addtabs({num:'applymy',url:'main,fwork,bill,atype=my',icons:'align-left',name:'<?=lang($itemnowname)?>'});
 }
 homeobject.show_apply_list=function(a){
 	var s='',a1,i;
@@ -22,7 +22,7 @@ homeobject.show_apply_list=function(a){
 </script>
 <div align="left" id="myapplylist" style="min-width:300px" class="list-group">
 <div class="list-group-item  list-group-item-info">
-	<i class="icon-align-left"></i> <?=$itemnowname?>(<span id="myapplylisttotal">0</span>)
-	<a style="float:right;TEXT-DECORATION:none" onclick="moemyapplylist()">更多&gt;&gt;</a>
+	<i class="icon-align-left"></i> <?=lang($itemnowname)?>(<span id="myapplylisttotal">0</span>)
+	<a style="float:right;TEXT-DECORATION:none" onclick="moemyapplylist()"><?=lang('更多')?>&gt;&gt;</a>
 </div>
 </div>

+ 2 - 2
webmain/home/desktop/items_kjrk.php

@@ -8,7 +8,7 @@ defined('HOST') or die ('not access');
 <script>
 homeobject.showicons=function(a){
 	if(a.length%2!=0)a.push({name:'none'});
-	a.push({name:'刷新统计中...',icons:'refresh',num:'refresh',color:'#888888'});
+	a.push({name:'<?=lang('刷新统计中')?>...',icons:'refresh',num:'refresh',color:'#888888'});
 	this.menuarr = a;
 	var o = $('#kuailistdonw'),s='<table width="100%"><tr>',a1,oi=0,s1t='';
 	for(var i=0; i<a.length-1;i++){
@@ -42,7 +42,7 @@ opentabsshowshwo=function(oi,o1){
 <div class="panel panel-default">
 	<div class="panel-heading">
 		<div style="font-size:14px"><i class="icon-refresh"></i> <?=$itemnowname?>
-		<a style="float:right;TEXT-DECORATION:none" click="refresh" id="refresh_text">刷新</a>
+		<a style="float:right;TEXT-DECORATION:none" click="refresh" id="refresh_text"><?=lang('刷新')?></a>
 		</div>
 	</div>
 	<div id="kuailistdonw"></div>

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

@@ -7,7 +7,7 @@ defined('HOST') or die ('not access');
 ?>
 <script>
 homeobject.showicons=function(a){
-	a.push({name:'刷新统计中...',icons:'refresh',num:'refresh',color:'#888888'});
+	a.push({name:'<?=lang('刷新统计中')?>...',icons:'refresh',num:'refresh',color:'#888888'});
 	this.menuarr = a;
 	var o = $('.rowaaaa'),s='',cols='';
 	o.html('');

+ 1 - 0
webmain/home/index/indexAction.php

@@ -11,6 +11,7 @@ class indexClassAction extends Action{
 			$where	= ' and `id` in('.$caids.')';
 		}
 		$mrows = m('menu')->getrows("`ishs`=1 and `status`=1 $where ", "`id`,`num`,`name`,`url`,`color`,`icons`",'`sort`');
+		if(LANG!='zh-CN')foreach($mrows as $k=>$rs)$mrows[$k]['name'] = lang($rs['name'],'menu');
 		return $mrows;
 	}
 	

+ 1 - 0
webmain/index/indexAction.php

@@ -209,6 +209,7 @@ class indexClassAction extends Action{
 			}else{
 				$rs['stotal']	= 0;
 			}
+			$rs['name'] = lang($rs['name'],'menu');
 			$rows[] = $rs;
 		}
 		return $rows;

+ 6 - 5
webmain/index/tpl_index.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="zh-CN">
+<html lang="<?=LANG?>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title><?=$da['title']?></title>
@@ -69,17 +69,17 @@ echo 'body{--main-color:'.$maincolor.'}';
 		<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="'.$rs['name'].'" icon="'.$rs['icons'].'"><a>';
+					$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.=''.$rs['name'].'</a></li>';
+					$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> 手机版</a></li>';
-				if(getconfig('reim_show', true))echo '<li><a href="javascript:;" onclick="openreim(this)"><span title="REIM即时通信"><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>';
+				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:;">
@@ -150,5 +150,6 @@ echo 'body{--main-color:'.$maincolor.'}';
 <script type="text/javascript" src="js/option.js"></script><!--数据选项-->
 <script type="text/javascript" src="web/res/js/notify.js"></script><!--通知提醒插件-->
 <script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script><!--弹出提示插件-->
+<script type="text/javascript" src="js/lang.js"></script><!--语言包-->
 </body>
 </html>

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

@@ -112,6 +112,7 @@ class flowClassAction extends Action
 			}
 		}
 		$rows['tables']= $tabs;
+		if($cans['where'])$rows['where'] = htmlspecialchars_decode($cans['where']);
 		return array(
 			'rows' => $rows
 		);
@@ -167,8 +168,9 @@ PRIMARY KEY (`id`),KEY `mid` (`mid`)
 				$addsts[]	= $tabsas;
 			}
 		}
-		
+		$noarray = array('menu','flow_set','flow_element','flow_menu','flow_bill','flow_extent','flow_where');
 		if(isempt($tab))return;
+		if(in_array($tab, $noarray))return;
 		if(!$alltabls)$alltabls 	= $this->db->getalltable();
 		if($isflow==0){
 			if(!in_array(''.PREFIX.''.$tab.'', $alltabls)){
@@ -1377,6 +1379,7 @@ class mode_'.$modenum.'ClassAction extends inputAction{
 		$file = '';
 		$hurs = $this->getfiles();
 		$hurs[] = ''.P.'/flow/page/rock_page_{bh}.php';
+		$hurs[] = ''.P.'/flow/page/rock_page_{bh}_script.php';
 		foreach($rows as $k=>$rs){
 			$ids.=','.$rs['id'].'';
 			$table.=','.$rs['table'].'';

+ 1 - 1
webmain/main/yingyong/rock_yingyong.php

@@ -2,7 +2,7 @@
 <script >
 $(document).ready(function(){
 	var a = $('#view_{rand}').bootstable({
-		tablename:'im_group',where:'and type=2',celleditor:true,
+		tablename:'im_group',where:'and type=2',celleditor:(!ISDEMO),
 		modenum:'yingyong',storeafteraction:'yingyongafter',storebeforeaction:'yingyongbefore',modedir:'{mode}:{dir}',
 		columns:[{
 			text:'图标',dataIndex:'face',align:'left',renderer:function(v,d){

+ 13 - 0
webmain/model/agent/custfinaModel.php

@@ -17,4 +17,17 @@ class agent_custfinaClassModel extends agentModel
 		return $rows;
 	}
 	
+	public function gettotal()
+	{
+		$stotal	= $this->getwdtotal($this->adminid);
+		$titles	= '';
+		return array('stotal'=>$stotal,'titles'=> $titles);
+	}
+		
+	private function getwdtotal($uid)
+	{
+		$where	= '`uid`='.$uid.' and `type`=0 and `ispay`=0';
+		$stotal	= m('custfina')->rows($where);
+		return $stotal;
+	}	
 }

+ 13 - 0
webmain/model/agent/custfkdModel.php

@@ -18,4 +18,17 @@ class agent_custfkdClassModel extends agentModel
 		return $rows;
 	}
 	
+	public function gettotal()
+	{
+		$stotal	= $this->getwdtotal($this->adminid);
+		$titles	= '';
+		return array('stotal'=>$stotal,'titles'=> $titles);
+	}
+		
+	private function getwdtotal($uid)
+	{
+		$where	= '`uid`='.$uid.' and `type`=1 and `ispay`=0';
+		$stotal	= m('custfina')->rows($where);
+		return $stotal;
+	}	
 }

+ 1 - 1
webmain/model/finaModel.php

@@ -90,7 +90,7 @@ class finaClassModel extends Model
 		$arr  = array();
 		foreach($rows as $k=>$rs){
 			$name = $rs['name'];
-			if(!isempt($rs['banknum']))$name.='(**'.substr($rs['banknum'],-4).')';
+			if(!isempt($rs['banknum']))$name.='(**'.mb_substr($rs['banknum'],-4).')';
 			$arr[] = array(
 				'value' => $rs['id'],
 				'name' => $name,

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
webmain/model/flow/flow.php


+ 77 - 0
webmain/model/flow/flowelementModel.php

@@ -0,0 +1,77 @@
+<?php
+//表单元素管理
+class flow_flowelementClassModel extends flowModel
+{
+	protected $flowcompanyidfieds	= 'none'; 
+	
+	
+	public function iseditqx()
+	{
+		if($this->adminid==1)return true;
+		return parent::iseditqx();
+	}
+	
+	public function isdeleteqx()
+	{
+		if($this->adminid==1)return true;
+		return parent::isdeleteqx();
+	}
+	
+	
+	public function isaligndata()
+	{
+		$arr[] = array('value'=>'0','name'=>'居中');
+		$arr[] = array('value'=>'1','name'=>'居左');
+		$arr[] = array('value'=>'2','name'=>'居右');
+		return $arr;
+	}
+	
+	public function iseditlxdata()
+	{
+		$arr[] = array('value'=>'0','name'=>'不可编辑');
+		$arr[] = array('value'=>'1','name'=>'所有人');
+		$arr[] = array('value'=>'2','name'=>'仅管理员');
+		$arr[] = array('value'=>'3','name'=>'仅admin');
+		return $arr;
+	}
+	
+	public $checkarr = array('islu','isbt','iszs','islb','ispx','issou','isonly','isdr');
+	public function flowrsreplace($rs,$lx=0)
+	{
+		if($rs['iszb']=='0'){
+			$rs['iszb'] = '<font color=#ff6600>主表</font>';
+		}else{
+			$rs['iszb'] = '第'.$rs['iszb'].'个子表';
+		}
+		$rs['isalign'] = $this->rock->valtoname($this->isaligndata(), $rs['isalign']);
+		if($rs['iseditlx']=='0'){
+			$rs['iseditlx'] = '';
+		}else{
+			$rs['iseditlx'] = $this->rock->valtoname($this->iseditlxdata(), $rs['iseditlx']);
+		}
+		
+		/*
+		if($lx==0)foreach($this->checkarr as $fid){
+			if(isset($rs[$fid])){
+				if($rs[$fid]=='1'){
+					$rs[$fid]='√';
+				}else{
+					$rs[$fid]='';
+				}
+			}
+		}
+		*/
+		return $rs;
+	}
+	
+	public function flowbillwhere($uid, $lx)
+	{
+		$where 	= 'and 1=2';
+		$mkid = (int)$this->rock->post('mkid','0');
+		if($mkid>0)$where='and `mid`='.$mkid.'';
+		return array(
+			'order' => '`iszb`,`sort`',
+			'where' => $where
+		);
+	}
+}

+ 52 - 0
webmain/model/flow/flowmenuModel.php

@@ -0,0 +1,52 @@
+<?php
+//菜单管理
+class flow_flowmenuClassModel extends flowModel
+{
+	protected $flowcompanyidfieds	= 'none'; 
+	
+	
+	public function iseditqx()
+	{
+		if($this->adminid==1)return true;
+		return parent::iseditqx();
+	}
+	
+	public function isdeleteqx()
+	{
+		if(getconfig('systype')=='demo')return false;
+		if($this->adminid==1)return true;
+		return parent::isdeleteqx();
+	}
+	
+	public function flowdeletebillbefore($sm)
+	{
+		if($this->rows('`pid`='.$this->id.'')>0)return '有下级菜单不能删除';
+	}
+	
+	
+	public function flowbillwhere($uid, $lx)
+	{
+		$where 	= '';
+		$pid = (int)$this->rock->post('pid','0');
+		$where='and `pid`='.$pid.'';
+		if($pid>0){
+			$pids = $pid;
+			$arows= $this->getall('`pid`='.$pid.'');
+			foreach($arows as $k=>$rs)$pids.=','.$rs['id'].'';
+			$where=' and (`id`='.$pid.' or `pid`='.$pid.' or `pid` in(select `id` from `[Q]menu` where `pid` in('.$pid.')))';
+		}
+		return array(
+			'order' => '`sort`',
+			'where' => $where
+		);
+	}
+	
+	//下级需要验证,那上级也必须验证的
+	private function updatepirss()
+	{
+		$rows 	= $this->db->getall('select `pid` from `[Q]menu` where `pid`>0 and `ispir`=1 group by `pid`');
+		$sid 	= '0';
+		foreach($rows as $k=>$rs)$sid.=','.$rs['pid'].'';
+		if($sid!='')m('menu')->update('`ispir`=1', "`id` in($sid)");
+	}
+}

+ 87 - 0
webmain/model/flow/flowsetModel.php

@@ -0,0 +1,87 @@
+<?php
+//流程模块列表
+class flow_flowsetClassModel extends flowModel
+{
+	protected $flowcompanyidfieds	= 'none'; 
+	public $modedata = array();
+	public function initModel()
+	{
+		$this->modedata = array('','顺序流程','顺序前置流程','自由流程','选择流程','自定义流程');
+	}
+	
+	public function iseditqx()
+	{
+		if(getconfig('systype')=='demo')return false;
+		if($this->adminid==1)return true;
+		return parent::iseditqx();
+	}
+	
+	public function isdeleteqx()
+	{
+		if(getconfig('systype')=='demo')return false;
+		if($this->rs['type']=='系统')return false;
+		if($this->adminid==1)return true;
+		return parent::isdeleteqx();
+	}
+	
+	public function flowmodedata()
+	{
+		$arr[] = array('value'=>'0','name'=>'无流程');
+		$arr[] = array('value'=>'1','name'=>'顺序流程(按照预设好的步骤一步一步审核)');
+		$arr[] = array('value'=>'2','name'=>'顺序前置流程(出现重复人审核自动跳过)');
+		if($this->isshouquan()){
+			$arr[] = array('value'=>'3','name'=>'自由流程(每步都需要由申请人指定哪个步骤)');
+			$arr[] = array('value'=>'4','name'=>'选择流程(当下一步出现多步骤需要指定哪个步骤)');
+			$arr[] = array('value'=>'5','name'=>'自定义流程(由申请人自己定义审批人员)');
+		}
+		return $arr;
+	}
+	
+	public function isflowlxdata()
+	{
+		$arr[] = array('value'=>'0','name'=>'在原来流程上');
+		$arr[] = array('value'=>'1','name'=>'重头走审批');
+		return $arr;
+	}
+	
+	public function iscsdata()
+	{
+		$arr[] = array('value'=>'0','name'=>'不开启');
+		$arr[] = array('value'=>'1','name'=>'开启(可选抄送对象)');
+		$arr[] = array('value'=>'2','name'=>'开启(必须选择抄送对象)');
+		return $arr;
+	}
+	
+	public function lbztxsdata()
+	{
+		$arr[] = array('value'=>'0','name'=>'默认');
+		$arr[] = array('value'=>'1','name'=>'必须显示');
+		$arr[] = array('value'=>'2','name'=>'不要显示');
+		return $arr;
+	}
+	
+	private function isshouquan()
+	{
+		$key = getconfig('authorkey');
+		if(!isempt($key) && $this->rock->isjm($key)){
+			return true;
+		}else{
+			return false;
+		}
+	}
+	
+	
+	public function flowrsreplace($rs,$lx=0)
+	{
+		if($rs['isflow']==0){
+			$rs['isflow']='';
+		}else{
+			$rs['isflow']= arrvalue($this->modedata, $rs['isflow']);
+		}
+		$rs['isflowlx'] = $this->rock->valtoname($this->isflowlxdata(), $rs['isflowlx']);
+		$rs['iscs'] 	= $this->rock->valtoname($this->iscsdata(), $rs['iscs']);
+		$rs['lbztxs'] 	= $this->rock->valtoname($this->lbztxsdata(), $rs['lbztxs']);
+		
+		return $rs;
+	}
+}

+ 28 - 17
webmain/model/modeModel.php

@@ -12,6 +12,7 @@ class modeClassModel extends Model
 		$arr 	= $this->getall($where,'`id`,`num`,`name`,`table`,`type`,`isflow`,`status`','sort');
 		$typea = array();
 		foreach($arr as $k=>$rs){
+			if(LANG!='zh-CN')$rs['name'] = lang($rs['name'],'mode');
 			$arr[$k]['name'] = ''.$rs['id'].'.'.$rs['name'].'('.$rs['num'].')';
 			$typea[$rs['type']][] = $arr[$k];
 		}
@@ -33,6 +34,10 @@ class modeClassModel extends Model
 	{
 		$where	= m('admin')->getjoinstr('receid', $uid);
 		$arr 	= $this->getall("`status`=1 and `type`<>'系统' $sww $where",'`id`,`num`,`name`,`table`,`type`,`isflow`,`isscl`','`sort`');
+		if(LANG!='zh-CN')foreach($arr as $k=>$rs){
+			$arr[$k]['name'] = lang($rs['name'],'mode');
+			$arr[$k]['type'] = lang($rs['type'],'mode');
+		}
 		return $arr;
 	}
 	
@@ -42,6 +47,10 @@ class modeClassModel extends Model
 		if($whe!='')$where = $whe;
 		if($uid>0)$where = m('admin')->getjoinstr('receid', $uid);
 		$arr = $this->getall('status=1 and isflow>0 '.$where.'','`id`,`name`,`type`','sort');
+		if(LANG!='zh-CN')foreach($arr as $k=>$rs){
+			$arr[$k]['name'] = lang($rs['name'],'mode');
+			$arr[$k]['type'] = lang($rs['type'],'mode');
+		}
 		return $arr;
 	}
 	
@@ -78,14 +87,16 @@ class modeClassModel extends Model
 		$showzt	= false;
 
 		
-		$farr[] = array('name'=>arrvalue($chufarr, 'base_name', '申请人'),'fields'=>'base_name');
-		$farr[] = array('name'=>arrvalue($chufarr, 'base_deptname', '申请人部门'),'fields'=>'base_deptname');
-		$farr[] = array('name'=>arrvalue($chufarr, 'base_sericnum', '单号'),'fields'=>'sericnum');
-		$farrs 	= m('flow_element')->getall("`mid`='$modeid'",'`fields`,`name`,`fieldstype`,`ispx`,`isalign`,`iszb`,`islb`,`issou`,`data`,`width`','`iszb`,`sort`');
+		$farr[] = array('name'=>arrvalue($chufarr, 'base_name', lang('申请人')),'fields'=>'base_name');
+		$farr[] = array('name'=>arrvalue($chufarr, 'base_deptname', lang('申请人部门')),'fields'=>'base_deptname');
+		$farr[] = array('name'=>arrvalue($chufarr, 'base_sericnum', lang('单号')),'fields'=>'sericnum');
+		$farrs 	= m('flow_element')->getall("`mid`='$modeid'",'`fields`,`name`,`fieldstype`,`ispx`,`isalign`,`iszb`,`islb`,`issou`,`data`,`width`,`iseditlx`','`iszb`,`sort`');
 		$inpub  = c('input');
+		$inpub->flow = $flow;
 		$zbarr	= $zbnamea = array();
 		if(!isempt($mors['names']))$zbnamea = explode(',', $mors['names']);
 		foreach($farrs as $k=>$rs){
+			if(LANG!='zh-CN')$rs['name'] = $flow->lang($rs['name']);
 			if($glx==1 && $rs['issou']=='1' && ($rs['fieldstype']=='select' || $rs['fieldstype']=='rockcombo')){
 				$rs['store'] =$inpub->getdatastore($rs['fieldstype'],$inrs,$rs['data']);
 			}
@@ -112,7 +123,7 @@ class modeClassModel extends Model
 		//$isdaoru 	= m('flow_element')->rows("`mid`='$modeid' and `isdr`=1");
 		$drstrbtn	= '';
 		//if($isdaoru>0){
-			$drstrbtn	= "<span style=\"display:none\" id=\"daoruspan_{rand}\"><button class=\"btn btn-default\" click=\"daoru,1\" type=\"button\">导入</button>&nbsp;&nbsp;&nbsp;</span>";
+			$drstrbtn	= "<span style=\"display:none\" id=\"daoruspan_{rand}\"><button class=\"btn btn-default\" click=\"daoru,1\" type=\"button\"><?=lang('导入')?></button>&nbsp;&nbsp;&nbsp;</span>";
 		//}
 		
 		//读取流程模块的条件
@@ -123,19 +134,19 @@ class modeClassModel extends Model
 		if($lbztxs==2)$showzt = false;
 		if($showzt){
 			$ztarr	= $flow->getstatusarr();
-			$zthtml = '<td><select class="form-control" style="width:120px;border-left:0;border-radius:0;" id="selstatus_{rand}"><option value="">-全部状态-</option>';
+			$zthtml = '<td><select class="form-control" style="width:120px;border-left:0;border-radius:0;" id="selstatus_{rand}"><option value="">-<?=lang(\'全部\')?><?=lang(\'状态\')?>-</option>';
 			foreach($ztarr as $zt=>$ztv){
 				if($isflow==0 && $zt==23)continue;
-				$zthtml .= '<option style="color:'.arrvalue($ztv, 1).'" value="'.$zt.'">'.$ztv[0].'</option>';
+				$vals = str_replace('?','', $ztv[0]);
+				$zthtml .= '<option style="color:'.arrvalue($ztv, 1).'" value="'.$zt.'"><?=lang(\''.$vals.'\')?></option>';
 			}
 			$zthtml .= '</select></td>';
-			$zthtml	 = str_replace('?','', $zthtml);
 		}
 		$fselarr	= array();
 		$bear		= $this->db->getrows('[Q]option',"`num` like 'columns_".$num."_%'",'`num`,`value`');
 		foreach($bear as $k2=>$rs2)$fselarr[$rs2['num']]=$rs2['value'];
-		$placeholder= '关键字';
-		if($isflow>0)$placeholder= '关键字/申请人/单号';
+		$placeholder= '<?=lang(\'关键字\')?>';
+		if($isflow>0)$placeholder= '<?=lang(\'关键字\')?>/<?=lang(\'申请人\')?>/<?=lang(\'单号\')?>';
 		if($glx==1){
 			return array(
 				'isflow' => $isflow,
@@ -144,31 +155,31 @@ class modeClassModel extends Model
 				'fieldzarr' => $zbarr,
 				'fieldsselarr' => $fselarr,
 				'chufarr' => $chufarr,
-				'modename' => $name,
+				'modename' => $flow->lang($name),
 				'modetable'=> $this->rock->jm->encrypt($mors['table']),
-				'modenames' => $this->rock->repempt($mors['names']),
+				'modenames' => $flow->lang($this->rock->repempt($mors['names'])),
 			);
 		}
 $html= "".$hstart."
 <div>
 	<table width=\"100%\">
 	<tr>
-		<td style=\"padding-right:10px;\" id=\"tdleft_{rand}\" nowrap><button id=\"addbtn_{rand}\" class=\"btn btn-primary\" click=\"clickwin,0\" disabled type=\"button\"><i class=\"icon-plus\"></i> 新增</button></td>
+		<td style=\"padding-right:10px;\" id=\"tdleft_{rand}\" nowrap><button id=\"addbtn_{rand}\" class=\"btn btn-primary\" click=\"clickwin,0\" disabled type=\"button\"><i class=\"icon-plus\"></i> <?=lang('新增')?></button></td>
 		
 		<td><select class=\"form-control\" style=\"width:110px;border-top-right-radius:0;border-bottom-right-radius:0;padding:0 2px\" id=\"fields_{rand}\"></select></td>
-		<td><select class=\"form-control\" style=\"width:60px;border-radius:0px;border-left:0;padding:0 2px\" id=\"like_{rand}\"><option value=\"0\">包含</option><option value=\"1\">等于</option><option value=\"2\">大于等于</option><option value=\"3\">小于等于</option><option value=\"4\">不包含</option></select></td>
-		<td><select class=\"form-control\" style=\"width:130px;border-radius:0;border-left:0;display:none;padding:0 5px\" id=\"selkey_{rand}\"><option value=\"\">-请选择-</option></select><input class=\"form-control\" style=\"width:130px;border-radius:0;border-left:0;padding:0 5px\" id=\"keygj_{rand}\" placeholder=\"关键词\"><input class=\"form-control\" style=\"width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;\" id=\"key_{rand}\" placeholder=\"".$placeholder."\">
+		<td><select class=\"form-control\" style=\"width:60px;border-radius:0px;border-left:0;padding:0 2px\" id=\"like_{rand}\"><option value=\"0\"><?=lang('包含')?></option><option value=\"1\"><?=lang('等于')?></option><option value=\"2\"><?=lang('大于')?><?=lang('等于')?></option><option value=\"3\"><?=lang('小于')?><?=lang('等于')?></option><option value=\"4\"><?=lang('不包含')?></option></select></td>
+		<td><select class=\"form-control\" style=\"width:130px;border-radius:0;border-left:0;display:none;padding:0 5px\" id=\"selkey_{rand}\"><option value=\"\">-<?=lang('请选择')?>-</option></select><input class=\"form-control\" style=\"width:130px;border-radius:0;border-left:0;padding:0 5px\" id=\"keygj_{rand}\" placeholder=\"<?=lang('关键字')?>\"><input class=\"form-control\" style=\"width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;\" id=\"key_{rand}\" placeholder=\"".$placeholder."\">
 		</td>
 		$zthtml
 		<td>
 			<div style=\"white-space:nowrap\">
-			<button style=\"border-right:0;border-radius:0;border-left:0\" class=\"btn btn-default\" click=\"searchbtn\" type=\"button\">搜索</button><button class=\"btn btn-default\" id=\"downbtn_{rand}\" type=\"button\" style=\"padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0\"><i class=\"icon-angle-down\"></i></button> 
+			<button style=\"border-right:0;border-radius:0;border-left:0\" class=\"btn btn-default\" click=\"searchbtn\" type=\"button\"><?=lang('搜索')?></button><button class=\"btn btn-default\" id=\"downbtn_{rand}\" type=\"button\" style=\"padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0\"><i class=\"icon-angle-down\"></i></button> 
 			</div>
 		</td>
 		<td  width=\"90%\" style=\"padding-left:10px\">$whtml</td>
 	
 		<td align=\"right\" id=\"tdright_{rand}\" nowrap>
-			".$drstrbtn."<button class=\"btn btn-default\" style=\"display:none\" id=\"daobtn_{rand}\" disabled click=\"daochu\" type=\"button\">导出 <i class=\"icon-angle-down\"></i></button> 
+			".$drstrbtn."<button class=\"btn btn-default\" style=\"display:none\" id=\"daobtn_{rand}\" disabled click=\"daochu\" type=\"button\"><?=lang('导出')?> <i class=\"icon-angle-down\"></i></button> 
 		</td>
 	</tr>
 	</table>

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

@@ -369,7 +369,7 @@ return array(
 		if(getconfig('systype')=='demo')return '演示不要改';
 		$stype = (int)$this->post('stype','0');
 		$msg  = 'ok';
-		if($stype==0)$msg = $this->saveconfig('title,imgcompress,watertype,video_bool,flowchehuitime,saasmode,hoemtimeout,usercache,xiangrecord,beianhao',',video_bool,');
+		if($stype==0)$msg = $this->saveconfig('title,imgcompress,watertype,video_bool,flowchehuitime,saasmode,hoemtimeout,usercache,xiangrecord,beianhao,locallang',',video_bool,');
 	
 		return $msg;
 	}

+ 15 - 0
webmain/system/cog/rock_cog_moreset.php

@@ -109,6 +109,9 @@ $(document).ready(function(){
 				}
 				o1.disabled=false;
 			},'post');
+		},
+		shengclang:function(){
+			js.open('?m=cogini&a=langcog&d=system',900,600);
 		}
 	};
 	js.initbtn(c);
@@ -175,6 +178,18 @@ $(document).ready(function(){
 			</td></tr>
 			<tr><td height="10"></td></tr>
 			
+			<tr><td align="right" style="color:gray">系统语言:</td><td><select style="width:200px" name="locallang" class="form-control">
+			<?php 
+			$arrd = c('lang')->getLocal();
+			foreach($arrd['arr'] as $k1=>$v1){
+				$sel = (LANG == $v1)?'selected':'';
+				echo '<option value="'.$v1.'" '.$sel.'>'.$arrd['arrcn'][$k1].'('.$v1.')</option>';
+			}
+			?>
+			</select>
+			<button click="shengclang" style="display:" class="btn btn-default btn-xs">语言包管理</button></td></tr>
+			<tr><td height="10"></td></tr>
+			
 			<tr>
 				<td  align="right"></td>
 				<td align="left"><button click="savecog,0" class="btn btn-success" type="button"><i class="icon-save"></i>&nbsp;保存</button>&nbsp;<span id="msgview0_{rand}"></span>

+ 9 - 3
webmain/system/cog/rock_cog_set.php

@@ -94,6 +94,9 @@ $(document).ready(function(){
 		},
 		setphpini:function(){
 			js.open('?m=cogini&a=phpini&d=system');
+		},
+		shengclang:function(){
+			js.open('?m=cogini&a=langcog&d=system',900,600);
 		}
 	};
 	js.initbtn(c);
@@ -134,7 +137,8 @@ $(document).ready(function(){
 		</tr>
 		
 		<tr>
-			<td  colspan="4" class="tdinput" ><div align="center" style="line-height:30px">系统版本:<b  id="benquan_{rand}" style="font-size:20px"><font color=red>开源版</font></b><input id="isshou_{rand}" type="hidden" class="form-control">&nbsp;&nbsp;<button click="auther" class="btn btn-success btn-xs">系统签授</button>&nbsp;&nbsp;<button click="moreset" style="display:" class="btn btn-default btn-xs">更多设置</button></div></td>
+			<td  colspan="4" class="tdinput" ><div align="center" style="line-height:30px">系统版本:<b  id="benquan_{rand}" style="font-size:20px"><font color=red>开源版</font></b><input id="isshou_{rand}" type="hidden" class="form-control">&nbsp;&nbsp;<button click="auther" class="btn btn-success btn-xs">系统签授</button>&nbsp;&nbsp;<button click="moreset" style="display:" class="btn btn-default btn-xs">更多设置</button>
+			</div></td>
 		</tr>
 	
 		<tr>
@@ -151,7 +155,7 @@ $(document).ready(function(){
 			
 			<td  align="right"><a target="_blank" href="<?=URLY?>">信呼官网</a>key:</td>
 			<td class="tdinput"><input id="xinhukey_{rand}" class="form-control">
-			<font color="#888888">用于在线升级使用,看<a target="_blank" href="<?=URLY?>view_xhkey.html">[帮助]</a>获取</font></td>
+			<font color="#888888">用于在线升级使用,看<a target="_blank" href="<?=URLY?>view_xhkey.html">[帮助]</a>获取</font>,<a href="javascript:;" onclick="$.imgview({url:'http://www.rockoa.com/images/keyhelp.png'})">[怎么获取?]</a></td>
 		</tr>
 		
 		<tr>
@@ -186,7 +190,9 @@ $(document).ready(function(){
 			</td>
 			
 			<td  align="right">php.ini设置:</td>
-			<td class="tdinput"><button click="setphpini" class="btn btn-default" type="button">去设置php.ini</button>&nbsp;<font color=#888888>设置上传大小</font></td>
+			<td class="tdinput"><button click="setphpini" class="btn btn-default" type="button">去设置php.ini</button>&nbsp;<font color=#888888>设置上传大小</font>
+			<button click="shengclang" style="display:" class="btn btn-default btn-xs">语言包管理</button>
+			</td>
 			
 		</tr>
 	

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

@@ -53,4 +53,15 @@ class coginiClassAction extends Action
 		}
 		return '';
 	}
+	
+	
+	
+	public $publicfile = 'include/langlocal/langtxt/';
+	public function langcogAction()
+	{
+		
+		return '授权版可用';
+	}
+	
+	
 }

+ 24 - 0
webmain/system/menu/menuAction.php

@@ -90,4 +90,28 @@ class menuClassAction extends Action
 		m('menu')->delete($id);
 		return returnsuccess();
 	}
+	
+	public function createmenuAjax()
+	{
+		$pid = (int)$this->get('menuid','0');
+		$where  =' and (`id`='.$pid.' or `pid`='.$pid.' or `pid` in(select `id` from `[Q]menu` where `pid`='.$pid.'))';
+		$rows 	= $this->db->getall('select *,(select count(1)from `[Q]menu` where `pid`=a.id '.$where.')stotal from `[Q]menu` a where 1=1 '.$where.' order by pid,`sort`');
+		$str = '';
+		$ors = m('menu')->getone($pid);
+		foreach($rows as $k=>$rs){
+			if($k>0)$str.=''.chr(10).'ROCKSPLIT'.chr(10).'';
+			$str.="INSERT INTO `[Q]menu` (`id`,`name`,`pid`,`sort`,`url`,`num`,`icons`,`type`,`ispir`) select '".$rs['id']."','".$rs['name']."','".$rs['pid']."','".$rs['sort']."',".$this->seveslst($rs['url']).",".$this->seveslst($rs['num']).",".$this->seveslst($rs['icons']).",'".$rs['type']."','".$rs['ispir']."' from `[Q]menu` WHERE `id`=1 and NOT EXISTS(SELECT 1 FROM `[Q]menu` where `id`='".$rs['id']."');";
+			//$str.=''.chr(10).'ROCKSPLIT'.chr(10).'';
+			//$str.="update `[Q]menu` set `name`='".$rs['name']."',`status`=1,`url`=".$this->seveslst($rs['url']).",`pid`='".$rs['pid']."',`sort`='".$rs['sort']."' where `id`='".$rs['id']."';";
+		}
+		$bh  = $ors['num'];
+		if(isempt($bh))$bh=$ors['id'];
+		$num = 'menu'.$bh.'';
+		$this->rock->createtxt('upload/data/'.$num.'.txt', $str);
+	}
+	public function seveslst($v)
+	{
+		if($v===null)return 'null';
+		return "'".$v."'";
+	}
 }

+ 27 - 15
webmain/system/menu/rock_menu.php

@@ -5,7 +5,7 @@ $(document).ready(function(){
 		tablename:'menu',url:js.getajaxurl('data','{mode}','{dir}'),method:'get',loadtree:false,
 		tree:true,celleditor:!ISDEMO,bodyStyle:'height:'+(viewheight-70)+'px;overflow:auto',
 		columns:[{
-			text:'菜单名称',dataIndex:'name',align:'left',editor:true,renderstyle:function(v,d){
+			text:'名称',dataIndex:'name',align:'left',editor:true,renderstyle:function(v,d){
 				return 'min-width:220px';
 			}
 		},{
@@ -61,6 +61,7 @@ $(document).ready(function(){
 	var c = {
 		changed:function(){
 			a.setparams({pid:this.value},true);
+			if(get('editss_{rand}'))get('editss_{rand}').disabled = (this.value=='0')
 		},
 		del:function(){
 			a.del({url:js.getajaxurl('delmenu','{mode}','{dir}')});
@@ -75,30 +76,30 @@ $(document).ready(function(){
 		clickwin:function(o1,lx){
 			if(ISDEMO){js.msg('success','演示站点禁止操作');return;}
 			var h = $.bootsform({
-				title:'菜单',height:500,width:400,
+				title:lang('菜单'),height:500,width:400,
 				tablename:'menu',isedit:lx,
 				params:{int_filestype:'ispir,status,sort,pid,ishs'},
 				submitfields:'num,name,url,icons,ispir,status,sort,pid,ishs,color',
 				items:[{
-					labelText:'编号',name:'num',repEmpty:true
+					labelText:lang('编号'),name:'num',repEmpty:true
 				},{
-					labelText:'菜单名称',name:'name',required:true
+					labelText:lang('菜单')+lang('名称'),name:'name',required:true
 				},{
-					labelText:'URL地址',name:'url',repEmpty:true
+					labelText:'URL'+lang('地址')+'',name:'url',repEmpty:true
 				},{
-					labelText:'图标',name:'icons',repEmpty:true
+					labelText:lang('图标'),name:'icons',repEmpty:true
 				},{
-					labelText:'上级ID',name:'pid',required:true,value:'0',type:'number'
+					labelText:''+lang('上级')+'ID',name:'pid',required:true,value:'0',type:'number'
 				},{
-					name:'status',labelBox:'启用',type:'checkbox',checked:true
+					name:'status',labelBox:lang('启用'),type:'checkbox',checked:true
 				},{
 					name:'ispir',labelBox:'验证(未√就是任何人可使用菜单)',type:'checkbox',checked:true
 				},{
-					name:'ishs',labelBox:'显示在首页',type:'checkbox'
+					name:'ishs',labelBox:lang('显示在首页'),type:'checkbox'
 				},{
-					labelText:'颜色',name:'color',repEmpty:true
+					labelText:lang('颜色'),name:'color',repEmpty:true
 				},{
-					labelText:'序',name:'sort',type:'number',value:'0'
+					labelText:lang('序'),name:'sort',type:'number',value:'0'
 				}],
 				success:function(){
 					a.reload();
@@ -107,6 +108,12 @@ $(document).ready(function(){
 			if(lx==1)h.setValues(a.changedata);
 			h.getField('name').focus();
 			if(lx==2)h.setValue('pid', a.changedata.id);
+		},
+		createsql:function(){
+			js.loading('创建中...');
+			js.ajax(js.getajaxurl('createmenu','{mode}','{dir}'),{menuid:get('soupid_{rand}').value},function(){
+				js.msgok('创建成功');
+			});
 		}
 	};
 	js.initbtn(c);
@@ -121,10 +128,10 @@ $(document).ready(function(){
 	<td nowrap>
 		<button class="btn btn-primary" click="clickwin,0" type="button"><i class="icon-plus"></i> 新增顶级</button> &nbsp; 
 		<button class="btn btn-success" click="clickwin,2" id="down_{rand}" disabled type="button"><i class="icon-plus"></i> 新增下级</button>&nbsp; 
-		<button class="btn btn-default" click="reload" type="button">刷新</button>
+		<button class="btn btn-default" click="reload" type="button"><?=lang('刷新')?></button>
 	</td>
 
-	<td  style="padding-left:10px">
+	<td  style="padding-left:10px" nowrap>
 		<select class="form-control" style="width:150px" id="soupid_{rand}" >
 		<option value="0">-所有的菜单-</option>
 		</select>
@@ -135,12 +142,17 @@ $(document).ready(function(){
 				<button class="btn btn-default" click="search" type="button"><i class="icon-search"></i></button>
 			</span>
 		</div>-->
+		<?php 
+		if(getconfig('systype')=='dev')echo ' &nbsp; <button class="btn btn-default" id="editss_{rand}" click="createsql" disabled type="button">生成菜单文件</button>';
+		?>
 	</td>
 	
 	<td width="80%"></td>
 	<td align="right" nowrap>
-		<button class="btn btn-danger" id="del_{rand}" click="del" disabled type="button"><i class="icon-trash"></i> 删除</button> &nbsp; 
-		<button class="btn btn-info" id="edit_{rand}" click="clickwin,1" disabled type="button"><i class="icon-edit"></i> 编辑 </button>
+		<button class="btn btn-danger" id="del_{rand}" click="del" disabled type="button"><i class="icon-trash"></i> <?=lang('删除')?></button> &nbsp; 
+		<button class="btn btn-info" id="edit_{rand}" click="clickwin,1" disabled type="button"><i class="icon-edit"></i> <?=lang('编辑')?> </button>
+		
+		
 	</td>
 </tr>
 </table>

Некоторые файлы не были показаны из-за большого количества измененных файлов

粤ICP备19079148号