瀏覽代碼

发布v2.7.1版本

雨中磐石 2 周之前
父節點
當前提交
60f759a90c

+ 3 - 3
README.md

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

+ 2 - 2
config/version.php

@@ -1,3 +1,3 @@
 <?php
-//版本20250718
-return '2.7.0';
+//版本20251224的
+return '2.7.1';

+ 28 - 0
include/chajian/inputChajian.php

@@ -325,6 +325,11 @@ class inputChajian extends Chajian
 			}
 		}
 		
+		//20250722从模块中读取做数据源
+		if(substr($datanum,0,5)=='rmod:'){
+			return $this->modestore($datanum);
+		}
+		
 		//2021-02-26新增新的数据源,开头
 		if(substr($datanum,0,1)==','){
 			return $this->sqlstore($datanum);
@@ -436,6 +441,29 @@ class inputChajian extends Chajian
 		return $rows;
 	}
 	
+	/**
+	*	模块数据 20250722添加
+	*/
+	public function modestore($act)
+	{
+		$rows = array();
+		if(!$act)return $rows;
+		$acta = explode(',',substr($act,5));
+		$cana = explode('|',$acta[0]);
+		$flow = m('flow')->initflow($cana[0]);
+		$rowd = $flow->getflowrows($this->adminid, $cana[1], -1);
+		if($rowd)foreach($rowd as $k=>$rs){
+			$sname = '';
+			if(isset($cana[4]))$sname = $this->rock->reparr($cana[4], $rs);
+			$rows[] = array(
+				'value' => $rs[$cana[3]],
+				'name'	=> $this->rock->reparr($cana[2], $rs),
+				'subname' => $sname
+			);
+		}
+		return $rows;
+	}
+	
 	/**
 	*	创建签名图片生成的
 	*/

+ 6 - 1
include/class/mysqliClass.php

@@ -19,7 +19,12 @@ class mysqliClass extends mysql{
 	
 	protected function querysql($sql)
 	{
-		$roboll = $this->conn->query($sql);
+		$roboll = false;
+		try{
+			$roboll = $this->conn->query($sql);
+		} catch (mysqli_sql_exception $e) {
+			//echo "SQL 错误: " . $e->getMessage();
+		}
 		if(!$roboll)$this->setError($this->conn->error, $sql);
 		return $roboll;
 	}

+ 1 - 1
mode/plugin/jquery-rockselect.js

@@ -48,7 +48,7 @@
 		}
 		
 		this.loaddata = function(key){
-			if(!key)key='';
+			if(!key)key='';if(!this.url)return;
 			$.ajax({
 				type:'get',data:{key:jm.base64encode(key)},
 				url:this.url,dataType:'json',

+ 5 - 2
webmain/css/rock.css

@@ -66,7 +66,7 @@ textarea.form-control{overflow:auto;padding-top:5px;padding-bottom:5px}
 .blank30{height:30px;overflow:hidden}
 .notsel{-moz-user-select: none;-o-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:default;}
 
-.btn-group{display: flex;align-items: center;}
+.btn-group,.flex{display: flex;align-items: center;}
 .btn-group .btn{float:left}
 .btn-group>.active{box-shadow: inset 0 3px 5px rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b), .125);}
 
@@ -245,4 +245,7 @@ textarea.form-control{overflow:auto;padding-top:5px;padding-bottom:5px}
 
 .label{border-radius:5px;padding:2px 3px}
 .label-success{background:green;color:white}
-.label-default{background:#aaaaaa;color:white}
+.label-default{background:#aaaaaa;color:white}
+
+.progress{border:var(--border);text-align:left;border-radius:5px;}
+.progress-bar-success{background:green;color:white;font-size:12px;border-radius:5px;text-align:center}

+ 8 - 0
webmain/flow/input/inputAction.php

@@ -787,12 +787,20 @@ class inputAction extends Action
 		$actstr = $this->jm->base64decode($this->get('actstr'));
 		$acta 	= explode(',', $actstr);
 		$where  = arrvalue($acta, 2);
+		
+		//20250722
+		if(substr($actstr,0,5)=='rmod:'){
+			return c('input')->modestore($actstr);
+		}
+		
 		if(isempt($act)){
 			if($actstr){
 				$rows 	 = c('input')->sqlstore($actstr);
 			}
 			return $rows;
 		}
+
+		
 		//用:读取model上的数据
 		if(!isempt($act) && contain($act,':')){
 			$acta = explode(':', $act);

+ 121 - 1
webmain/flow/input/inputjs/mode_flowelement.js

@@ -22,6 +22,8 @@ function initbodys(){
 	$(form('fieldstype')).change(function(){
 		c.changetypes();
 	});
+	var s = '<button type="button" onclick="setdatabtn()" class="webbtn btn-danger btn-xs">设置数据源</button>';
+	$('#div_data').append(s);
 }
 
 c.onselectdatabefore=function(fid){
@@ -38,7 +40,10 @@ c.changetypes=function(){
 
 function changesubmit(d){
 	if(d.fieldstype.indexOf('change')==0){
-		if(d.data=='' || d.data==d.fields)return '此字段元素类型时,数据源必须填写用来存储选择来的Id,请填写为:'+d.fields+'id';
+		if(d.data=='' || d.data==d.fields){
+			form('data').value = ''+d.fields+'id';
+			return '此字段元素类型时,数据源必须填写用来存储选择来的Id,请填写为:'+d.fields+'id';
+		}
 	}
 	if(d.islu=='1' && d.fields=='id')return 'id字段是不可以做录入项字段';
 }
@@ -53,4 +58,119 @@ c.xuanchangs=function(){
 	}else{
 		js.msg('msg','元素类型不是选择人员部门的');
 	}
+}
+
+
+var cmode = false;
+function setdatabtn(){
+	var lx = form('fieldstype').value;
+	var fid = form('fields').value;
+	if(!lx){
+		js.msg('msg','请先选择“字段元素类型”');
+		return;
+	}
+	if(lx.indexOf('change')==0){
+		if(!fid){
+			js.msg('msg','请先输入“对应字段”');
+			return;
+		}
+		form('data').value = ''+fid+'id';
+		return;
+	}
+	cmode = false;
+	var shjyx = ',text,select,selectdatafalse,selectdatatrue,radio,checkboxall,textarea,';
+	if(shjyx.indexOf(','+lx+',')==-1){
+		js.msg('msg','此字段类型,无需设置数据源,或者可直接输入');
+		return;
+	}
+	
+	var s = '<div class="flex"><div style="width:100px" align="right">数据源模块:</div><input readonly onclick="xuanmode(this)" style="flex:1" placeholder="-请选择模块V-" class="input"></div>';
+	s+='<div class="flex" style="margin-top:15px"><div style="width:100px" align="right">数据源条件:</div><select id="modewhere" style="flex:1" class="input"><option value="">-选择条件-</option></select></div>';
+	s+='<div class="flex" style="margin-top:15px"><div style="width:100px" align="right">显示内容:</div><input style="flex:1" id="modeshowname" placeholder="如:{title}" class="input"></div>';
+	s+='<div class="flex"><div style="width:100px" align="right"></div><div style="flex:1" id="modeshownamediv"></div></div>';
+	s+='<div class="flex" style="margin-top:15px"><div style="width:100px" align="right">存储主键字段:</div><input style="flex:1" placeholder="默认的id,不用去改" readonly ondblclick="this.readOnly=false" value="" class="input" id="modeshowval"></div>';
+	s+='<div class="flex" style="margin-top:15px"><div style="width:100px" align="right">子内容显示:</div><input style="flex:1" placeholder="留空就好了" value="" class="input" id="modeshownames"  readonly ondblclick="this.readOnly=false"></div>';
+	js.tanbody('databody','使用模块数据做数据源',400,300,{
+		html:'<div style="overflow:auto;max-height:450px"><div style="padding:15px"><form autocomplete="off" name="dataform">'+s+'</form></div></div>',
+		btn:[{text:'确定选择'}]
+	});
+	$('#databody_btn0').click(function(){
+		setdatabtnok();
+	});
+}
+
+function setdatabtnok(){
+	if(!cmode)return;
+	var tj = get('modewhere').value;
+	if(!tj){
+		js.msg('msg','请选择数据源条件');
+		return;
+	}
+	var zd = get('modeshowname').value;
+	if(!zd){
+		js.msg('msg','请输入显示内容字段');
+		return;
+	}
+	var acta = form('data').value.split(',');
+	var vzd = get('modeshowval').value;
+	if(!vzd)vzd='id';
+	var s = 'rmod:'+cmode.num+'|'+tj+'|'+zd+'|'+vzd+'';
+	vzd = get('modeshownames').value;
+	if(vzd)s+='|'+vzd+'';
+	if(acta[1])s+=','+acta[1]+'';
+	form('data').value = s;
+	js.tanclose('databody');
+}
+
+function xuanmode(o1){
+	js.selectmode(o1, o1, function(sna,val,d){
+		cmode = d;
+		changeflowwhere(d.id);
+	});
+}
+
+function changeflowwhere(id1){
+	var o1 = get('modewhere');
+	o1.length = 1;
+	$('#modeshownamediv').html('');
+	js.ajax(geturlact('modewhere'),{modeid:id1},function(ret){
+		js.setselectdata(o1, ret.wheredata, 'num');
+		var farr = ret.fieldsarr,s='';
+		for(var i=0;i<farr.length;i++){
+			s+='<label><input type="checkbox" onclick="changeziduansv(this)" name="selfieldsabc" value="{'+farr[i].fields+'}">'+farr[i].name+'('+farr[i].fields+')</label>&nbsp;&nbsp;';
+		}
+		$('#modeshownamediv').html(s);
+		js.resizetan('databody');
+	}, 'get,json');
+}
+
+function changeziduansv(){
+	var val = js.getchecked('selfieldsabc');
+	val = val.replace(/[\,]/gi,'');
+	get('modeshowname').value = val;
+}
+
+js.selectmode = function(obj, naobj, fun){
+	this.chajian('rockselect', {
+		viewobj:obj,
+		num:'getmodearr',limit:20,
+		url:js.getajaxurl('getmodearr','flow','main'),
+		onitemclick:function(sna,val,d){fun(sna,val,d)},
+		ondatachuli:function(da){
+			var len=da.length,i,csd,types='',ds=[],dt=[];
+			for(i=0;i<len;i++){
+				csd = da[i];
+				if(types!=csd.type){
+					ds.push({name:csd.type,style:'font-weight:bold',disabled:true});
+					dt.push({name:csd.type,value:csd.type,type:csd.type});
+				}
+				types = csd.type;
+				csd.padding='24';
+				ds.push(csd);
+			}
+			this.setSelectData(dt,'所有分类', 'type');
+			return ds;
+		},
+		nameobj:naobj
+	});
 }

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

@@ -110,5 +110,17 @@ class mode_flowelementClassAction extends inputAction{
 		}
 		return $farrs;
 	}
+	
+	public function modewhereAjax()
+	{
+		$modeid  = (int)$this->get('modeid','0');
+		
+		$rows 	 = m('flow_where')->getall("`setid`=".$modeid." AND ifnull(`num`,'')<>''", 'num,name','`sort` asc');
+		$farr	 = m('flow_element')->getall("`mid`=".$modeid." and `iszb`=0", 'fields,name','`sort` asc');
+		return array(
+			'wheredata'=>$rows,
+			'fieldsarr'=> $farr
+		);
+	}
 }	
 			

+ 27 - 25
webmain/install/rockxinhu.sql

@@ -10,7 +10,7 @@ Target Server Type    : MYSQL
 Target Server Version : 50610
 File Encoding         : 65001
 
-Date: 2025-07-18 14:40:13
+Date: 2025-12-24 10:03:01
 */
 
 SET FOREIGN_KEY_CHECKS=0;
@@ -71,11 +71,11 @@ CREATE TABLE `xinhu_admin` (
 -- ----------------------------
 -- Records of xinhu_admin
 -- ----------------------------
-INSERT INTO `xinhu_admin` VALUES ('1', 'A001', 'admin', '管理员', 'e10adc3949ba59abbe56e057f20f883e', '6497', '1', '1', '男', '0592-1234569', 'upload/face/1.jpg', '2', '开发部', null, null, null, '信呼开发团队/开发部', '5', '磐石', '项目主管', '1', '[1],[2]', '[5]', '1,3,4', '15800000023', '1', '2016-06-01', null, '2017-03-08 09:52:30', null, null, null, '0', 'guanliyuan', null, '1', '0', null, '1', null, null, '0', '1');
+INSERT INTO `xinhu_admin` VALUES ('1', 'A001', 'admin', '管理员', 'e10adc3949ba59abbe56e057f20f883e', '6542', '1', '1', '男', '0592-1234569', 'upload/face/1.jpg', '2', '开发部', null, null, null, '信呼开发团队/开发部', '5', '磐石', '项目主管', '1', '[1],[2]', '[5]', '1,3,4', '15800000023', '1', '2016-06-01', null, '2017-03-08 09:52:30', null, null, null, '0', 'guanliyuan', null, '1', '1', '2025-12-24 10:02:39', '1', null, null, '0', '1');
 INSERT INTO `xinhu_admin` VALUES ('2', null, 'diaochan', '貂蝉', 'e10adc3949ba59abbe56e057f20f883e', '246', '1', '0', '女', '0592-123456', null, '3', '财务部', null, null, null, '信呼开发团队/财务部', '5', '磐石', '财务总监', '1', '[1],[3]', '[5]', '1,3', '15800000007', '1', '2016-08-09', null, null, null, null, null, '0', 'diaochan', null, '2', '0', null, '1', null, null, '0', '1');
 INSERT INTO `xinhu_admin` VALUES ('3', null, 'xiaoqiao', '小乔', 'e10adc3949ba59abbe56e057f20f883e', '382', '1', '0', '女', null, null, '3', '财务部', null, null, null, '信呼开发团队/财务部', '2', '貂蝉', '出纳', '1', '[1],[3]', '[5],[2]', '1', '15800000001', '1', '2017-05-02', null, '2016-08-30 20:34:23', null, null, null, '0', 'xiaoqiao', null, '2', '0', null, '1', null, null, '0', '1');
 INSERT INTO `xinhu_admin` VALUES ('4', null, 'daqiao', '大乔', 'e10adc3949ba59abbe56e057f20f883e', '585', '1', '0', '女', null, null, '4', '行政人事部', '3', '财务部', '会计', '信呼开发团队/行政人事部', '5', '磐石', '人事主管', '1', '[1],[4],[3]', '[5]', '1,3', '15800000002', '1', '2017-07-01', null, '2016-10-20 22:27:51', null, null, null, '0', 'daqiao', null, '2', '0', null, '1', null, null, '0', '1');
-INSERT INTO `xinhu_admin` VALUES ('5', null, 'rock', '磐石', 'e10adc3949ba59abbe56e057f20f883e', '527', '1', '0', '男', '158000000000', null, '5', '管理层', null, null, null, '信呼开发团队/管理层', null, null, '董事长', '0', '[1],[5]', null, '2,3', '15800000003', '1', '2015-11-01', null, null, null, null, null, '0', 'panshi', null, '1', '0', null, '1', null, '1,2,3,4', '0', '1');
+INSERT INTO `xinhu_admin` VALUES ('5', null, 'rock', '磐石', 'e10adc3949ba59abbe56e057f20f883e', '527', '1', '0', '男', null, null, '5', '管理层', null, null, null, '信呼开发团队/管理层', null, null, '董事长', '0', '[1],[5]', null, '2,3', '15800000003', '1', '2015-11-01', null, null, null, null, null, '0', 'panshi', null, '1', '0', null, '1', null, '1,2,3,4', '0', '1');
 INSERT INTO `xinhu_admin` VALUES ('6', null, 'zhangfei', '张飞', 'e10adc3949ba59abbe56e057f20f883e', '297', '1', '0', '男', null, null, '2', '开发部', null, null, null, '信呼开发团队/开发部', '7', '赵子龙', '程序员', '100', '[1],[2]', '[5],[1],[7]', '1', '15800000004', '1', '2017-07-01', null, '2016-11-01 20:15:52', null, null, null, '0', 'zhangfei', null, '1', '0', null, '1', null, null, '0', '0');
 INSERT INTO `xinhu_admin` VALUES ('7', null, 'zhaozl', '赵子龙', 'e10adc3949ba59abbe56e057f20f883e', '416', '1', '0', '男', null, null, '2', '开发部', null, null, null, '信呼开发团队/开发部', '1', '管理员', '高级程序员', '100', '[1],[2]', '[5],[1]', '1', '15800000005', '1', '2016-07-01', null, '2017-06-28 15:34:26', null, null, null, '0', 'zhaozilong', null, '1', '0', null, '1', null, null, '0', '0');
 INSERT INTO `xinhu_admin` VALUES ('8', null, 'xinhu', '信呼客服', '6846860684f05029abccc09a53cd66f1', '500', '1', '1', '女', null, null, '2', '开发部', null, null, null, '信呼开发团队/开发部', '1', '管理员', '客服', '200', '[1],[2]', '[5],[1]', '1,4', '15800000006', '1', '2018-12-12', null, null, null, 'rainrock829', null, '0', 'xinhukefu', null, '1', '0', null, '1', null, '2', '0', '1');
@@ -375,7 +375,7 @@ CREATE TABLE `xinhu_chargems` (
 -- ----------------------------
 -- Records of xinhu_chargems
 -- ----------------------------
-INSERT INTO `xinhu_chargems` VALUES ('2', '1', '1', '2016-12-28 15:21:14', '2025-07-18 14:40:04', null, '0');
+INSERT INTO `xinhu_chargems` VALUES ('2', '1', '1', '2016-12-28 15:21:14', '2025-12-24 10:01:55', null, '0');
 
 -- ----------------------------
 -- Table structure for `xinhu_city`
@@ -2307,7 +2307,7 @@ INSERT INTO `xinhu_flow_element` VALUES ('752', '71', '姓名', 'applyname', 'ch
 INSERT INTO `xinhu_flow_element` VALUES ('753', '23', '申请人', 'applyname', 'changeuser', '0', '{admin}|{uid}', '1', 'uid', '1', '0', null, '0', '0', null, null, '0', null, '0', '0', '0', '0', '0', null, null, '0', '0', '0', null, '0', null);
 INSERT INTO `xinhu_flow_element` VALUES ('754', '6', '申请人', 'uname', 'changeuser', '1', '{admin}|{uid}', '1', 'uid', '1', '0', null, '0', '0', null, null, '0', null, '0', '0', '0', '0', '0', null, null, '0', '0', '0', null, '0', null);
 INSERT INTO `xinhu_flow_element` VALUES ('755', '51', '申请人', 'uname', 'changeuser', '0', '{admin}|{uid}', '1', 'uid', '1', '0', null, '0', '0', null, null, '0', null, '0', '0', '0', '0', '0', null, null, '0', '0', '0', null, '0', null);
-INSERT INTO `xinhu_flow_element` VALUES ('756', '72', '测试字段', 'testfirs', 'checkboxall', '15', null, '0', '我是,他是,大家都是', '1', '1', null, '0', '0', null, null, '50', null, '0', '0', '0', '0', '0', null, null, '0', '0', '0', null, '0', null);
+INSERT INTO `xinhu_flow_element` VALUES ('756', '72', '测试字段', 'testfirs', 'checkboxall', '15', null, '0', '字段1,我的内容', '1', '1', null, '0', '0', null, null, '50', null, '0', '0', '0', '0', '0', null, null, '0', '0', '0', null, '0', null);
 INSERT INTO `xinhu_flow_element` VALUES ('757', '80', '对应模块编号', 'modenum', 'text', '0', null, '1', null, '1', '0', 'readonly', '0', '0', null, null, '0', null, '0', '0', '0', '0', '0', null, null, '0', '0', '0', null, '0', null);
 INSERT INTO `xinhu_flow_element` VALUES ('758', '80', '模块名称', 'modename', 'text', '1', null, '1', null, '1', '1', 'readonly', '0', '0', null, null, '0', null, '1', '0', '0', '1', '0', null, null, '0', '0', '0', null, '0', null);
 INSERT INTO `xinhu_flow_element` VALUES ('759', '80', '对应主表', 'table', 'hidden', '2', null, '0', null, '0', '0', null, '0', '0', null, null, '0', null, '0', '0', '0', '0', '0', null, null, '0', '0', '0', null, '0', null);
@@ -3036,7 +3036,7 @@ CREATE TABLE `xinhu_flow_log` (
   `iszb` tinyint(1) DEFAULT '0' COMMENT '是否转办记录',
   PRIMARY KEY (`id`),
   KEY `table` (`table`,`mid`)
-) ENGINE=MyISAM AUTO_INCREMENT=5179 DEFAULT CHARSET=utf8 COMMENT='单据操作记录';
+) ENGINE=MyISAM AUTO_INCREMENT=5192 DEFAULT CHARSET=utf8 COMMENT='单据操作记录';
 
 -- ----------------------------
 -- Records of xinhu_flow_log
@@ -3597,8 +3597,8 @@ INSERT INTO `xinhu_flow_log` VALUES ('5014', 'carmrese', '1', '1', '已归还',
 INSERT INTO `xinhu_flow_log` VALUES ('5015', 'flow_element', '1839', '1', null, '提交', '0', '2025-03-28 19:35:35', null, '127.0.0.1', 'Chrome', '管理员', '1', '159', null, '1', '0', null, '0');
 INSERT INTO `xinhu_flow_log` VALUES ('5013', 'meet', '12', '0', null, '停用会议', '0', '2025-02-07 20:03:21', null, '127.0.0.1', 'Chrome', '管理员', '1', '2', 'gray', '1', '0', null, '0');
 INSERT INTO `xinhu_flow_log` VALUES ('5026', 'flow_element', '1840', '1', null, '提交', '0', '2025-05-01 11:16:31', null, '127.0.0.1', 'Chrome', '管理员', '1', '159', null, '1', '0', null, '0');
-INSERT INTO `xinhu_flow_log` VALUES ('5168', 'wordxie', '10', '1', null, '提交', '0', '2025-06-23 10:11:48', null, '127.0.0.1', 'Chrome', '管理员', '1', '86', null, '1', '0', null, '0');
-INSERT INTO `xinhu_flow_log` VALUES ('5172', 'wordxie', '11', '1', null, '提交', '0', '2025-06-27 14:55:51', null, '127.0.0.1', 'Chrome', '管理员', '1', '86', null, '1', '0', null, '0');
+INSERT INTO `xinhu_flow_log` VALUES ('5184', 'wordxie', '12', '1', null, '提交', '0', '2025-08-05 19:53:47', null, '127.0.0.1', 'Chrome', '管理员', '1', '86', null, '1', '0', null, '0');
+INSERT INTO `xinhu_flow_log` VALUES ('5187', 'wordxie', '13', '1', null, '提交', '0', '2025-08-05 20:03:01', null, '127.0.0.1', 'Chrome', '管理员', '1', '86', null, '1', '0', null, '0');
 INSERT INTO `xinhu_flow_log` VALUES ('5101', 'flow_element', '1841', '1', null, '提交', '0', '2025-05-24 10:19:40', null, '127.0.0.1', 'Chrome', '管理员', '1', '159', null, '1', '0', null, '0');
 INSERT INTO `xinhu_flow_log` VALUES ('5165', 'kqinfo', '170', '1', null, '提交', '0', '2025-06-18 09:32:40', null, '127.0.0.1', 'Chrome', '管理员', '1', '5', null, '1', '0', null, '0');
 
@@ -5471,13 +5471,13 @@ CREATE TABLE `xinhu_im_history` (
 -- ----------------------------
 -- Records of xinhu_im_history
 -- ----------------------------
-INSERT INTO `xinhu_im_history` VALUES ('1', 'group', '2', '2', '8', '2025-07-18 14:28:53', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
-INSERT INTO `xinhu_im_history` VALUES ('2', 'group', '2', '7', '8', '2025-07-18 14:28:53', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
-INSERT INTO `xinhu_im_history` VALUES ('3', 'group', '2', '6', '8', '2025-07-18 14:28:53', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
-INSERT INTO `xinhu_im_history` VALUES ('4', 'group', '2', '8', '8', '2025-07-18 14:28:53', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
-INSERT INTO `xinhu_im_history` VALUES ('5', 'group', '2', '5', '8', '2025-07-18 14:28:53', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
-INSERT INTO `xinhu_im_history` VALUES ('6', 'group', '2', '1', '8', '2025-07-18 14:28:53', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
-INSERT INTO `xinhu_im_history` VALUES ('7', 'group', '2', '4', '8', '2025-07-18 14:28:53', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
+INSERT INTO `xinhu_im_history` VALUES ('1', 'group', '2', '2', '8', '2025-12-24 09:39:10', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
+INSERT INTO `xinhu_im_history` VALUES ('2', 'group', '2', '7', '8', '2025-12-24 09:39:10', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
+INSERT INTO `xinhu_im_history` VALUES ('3', 'group', '2', '6', '8', '2025-12-24 09:39:10', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
+INSERT INTO `xinhu_im_history` VALUES ('4', 'group', '2', '8', '8', '2025-12-24 09:39:10', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
+INSERT INTO `xinhu_im_history` VALUES ('5', 'group', '2', '5', '8', '2025-12-24 09:39:10', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
+INSERT INTO `xinhu_im_history` VALUES ('6', 'group', '2', '1', '8', '2025-12-24 09:39:10', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
+INSERT INTO `xinhu_im_history` VALUES ('7', 'group', '2', '4', '8', '2025-12-24 09:39:10', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '1', null, null, '0');
 
 -- ----------------------------
 -- Table structure for `xinhu_im_menu`
@@ -5729,7 +5729,7 @@ CREATE TABLE `xinhu_im_mess` (
 -- ----------------------------
 -- Records of xinhu_im_mess
 -- ----------------------------
-INSERT INTO `xinhu_im_mess` VALUES ('1', '2025-07-18 14:28:53', '1', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '8', '2', '2,7,6,8,5,1,4', 'group', null, '0', null);
+INSERT INTO `xinhu_im_mess` VALUES ('1', '2025-12-24 09:39:10', '1', '5aSn5a625pyJ5ZWl6Zeu6aKY6L!Z6YeM6K!05ZWK77yB', '8', '2', '2,7,6,8,5,1,4', 'group', null, '0', null);
 
 -- ----------------------------
 -- Table structure for `xinhu_im_messzt`
@@ -5812,7 +5812,7 @@ CREATE TABLE `xinhu_infor` (
 -- ----------------------------
 INSERT INTO `xinhu_infor` VALUES ('1', '欢迎使用信呼工作台', '2018-04-26 17:27:10', '通知公告', '<p>\n	欢迎使用,有任何问题可以随时联系我们,帮你解答哦。&nbsp;\n</p>\n<p>\n	信呼是一款开源免费的工作台软件,可添加应用,管理,pc上,app都可以使用,我们的代码全部开放,可自由使用。\n</p>', null, null, null, '1', '管理员', null, null, '信呼开发团队', '2016-08-01', '1', null, '0', '0', '0', '0', null, null, '0', '0', '0');
 INSERT INTO `xinhu_infor` VALUES ('2', '关于写日报制度说明', '2019-04-13 19:54:43', '规则制度', '<p>\n	1、每个人工作日在下班后必须写工作日报,全天请假可不用写,只要有上班就需要写,即使你上班1分钟。\n</p>\n<p>\n	2、也可以隔天写。\n</p>\n<p>\n	<strong>未写处罚</strong> \n</p>\n<p>\n	1、未写一次扣五块,累计加倍。\n</p>', null, 'u1,u2,u3,u4,u5,u6,u7,u8,u9', null, '1', '管理员', null, null, '人力行政部', '2016-08-01', '1', 'images/kqbanner1.jpg', '0', '0', '0', '0', null, null, '0', '0', '0');
-INSERT INTO `xinhu_infor` VALUES ('6', '信呼更新发布V2.7.0版本(必看)', '2025-07-18 11:39:04', '通知公告', '<p>\n	版本添加了发布如下功能啊。\n</p>\n<p>\n	1、系统功能完善。\n</p>\n<p>\n	2、更新了很多,自己看<a href=\"http://www.rockoa.com/view_core.html\" target=\"_blank\">升级日志</a>。\n</p>\n<p>\n	3、系统默认有测试数据,可到:系统→系统工具→初始化备份,下初始化删除测试数据。\n</p>', 'http://www.rockoa.com/view_down.html', 'd1', '信呼开发团队', '1', '管理员', null, null, '信呼开发团队', '2025-07-18', '1', 'images/logo.png', '0', '0', '0', '1', null, null, '1', '1', '0');
+INSERT INTO `xinhu_infor` VALUES ('6', '信呼更新发布V2.7.1版本(必看)', '2025-12-24 08:59:12', '通知公告', '<p>\n	版本添加了发布如下功能啊。\n</p>\n<p>\n	1、系统功能完善。\n</p>\n<p>\n	2、更新了很多,自己看<a href=\"http://www.rockoa.com/view_core.html\" target=\"_blank\">升级日志</a>。\n</p>\n<p>\n	3、系统默认有测试数据,可到:系统→系统工具→初始化备份,下初始化删除测试数据。\n</p>', 'http://www.rockoa.com/view_down.html', 'd1', '信呼开发团队', '1', '管理员', null, null, '信呼开发团队', '2025-12-24', '1', 'images/logo.png', '0', '0', '0', '1', null, null, '1', '1', '0');
 INSERT INTO `xinhu_infor` VALUES ('9', '你们觉得这个系统如何?', '2019-06-03 13:17:05', '通知公告', '开始投票拉。', null, 'd1', '信呼开发团队', '1', '管理员', '2018-08-31 12:42:00', '2017-08-26 12:42:00', '开发部', '2017-08-26', '1', null, '1', '1', '0', '0', '2019-04-15', null, '1', '0', '0');
 
 -- ----------------------------
@@ -7001,7 +7001,7 @@ CREATE TABLE `xinhu_option` (
   PRIMARY KEY (`id`),
   KEY `num` (`num`),
   KEY `pid` (`pid`)
-) ENGINE=MyISAM AUTO_INCREMENT=943 DEFAULT CHARSET=utf8 COMMENT='系统选项';
+) ENGINE=MyISAM AUTO_INCREMENT=941 DEFAULT CHARSET=utf8 COMMENT='系统选项';
 
 -- ----------------------------
 -- Records of xinhu_option
@@ -7407,6 +7407,7 @@ INSERT INTO `xinhu_option` VALUES ('591', '类型一', '0', '590', null, null, '
 INSERT INTO `xinhu_option` VALUES ('592', '类型二', '0', '590', null, null, '0', null, '1', null, '0', null, null, null, '0');
 INSERT INTO `xinhu_option` VALUES ('594', '会议申请短信模版编号', '0', '62', 'meetsmstpl', null, '0', null, '1', null, '0', null, null, '如使用阿里短信这个就要设置,申请时。', '0');
 INSERT INTO `xinhu_option` VALUES ('595', '会议取消短信模版编号', '0', '62', 'meetsmstplqx', null, '0', null, '1', null, '0', null, null, '如使用阿里短信这个就要设置', '0');
+INSERT INTO `xinhu_option` VALUES ('940', null, '0', '-102', '565a422403fa778aa771', 'MjAyNS0xMi0zMQ::', '0', null, '1', '2025-12-24 10:02:08', '1', null, null, null, '1');
 INSERT INTO `xinhu_option` VALUES ('729', '投标项目状态', '0', '574', 'xiangmutbstate', null, '0', null, '1', null, '0', null, null, null, '0');
 INSERT INTO `xinhu_option` VALUES ('931', '已竣工', '0', '582', null, '4', '0', null, '1', null, '0', null, null, null, '0');
 INSERT INTO `xinhu_option` VALUES ('732', '失标', '0', '729', null, '2', '2', null, '1', null, '0', null, null, null, '0');
@@ -7687,11 +7688,12 @@ CREATE TABLE `xinhu_reads` (
   PRIMARY KEY (`id`),
   UNIQUE KEY `table_2` (`table`,`mid`,`optid`),
   KEY `table` (`table`,`mid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='单据浏览记录表';
+) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='单据浏览记录表';
 
 -- ----------------------------
 -- Records of xinhu_reads
 -- ----------------------------
+INSERT INTO `xinhu_reads` VALUES ('1', 'kqinfo', '170', '1', '2025-12-24 10:02:24', null, null, '2025-12-24 10:02:24', '1');
 
 -- ----------------------------
 -- Table structure for `xinhu_receipt`
@@ -8046,7 +8048,7 @@ CREATE TABLE `xinhu_task` (
 INSERT INTO `xinhu_task` VALUES ('1', '流程从新匹配', '系统', 'flow,pipei', 'd,d', '00:10:00,12:10:00', '每天0,12点', '1', '0', null, null, '0', null, null, null, null, null);
 INSERT INTO `xinhu_task` VALUES ('2', '数据备份', '系统', 'sys,beifen', 'd', '00:20:00', '每天凌晨00:20', '1', '0', null, null, '0', null, null, null, null, null);
 INSERT INTO `xinhu_task` VALUES ('3', '系统升级提醒', '系统', 'sys,upgtx', 'd', '00:25:00', '每天凌晨00:25', '0', '0', null, null, '0', null, null, null, '1,8', '管理员,信呼客服');
-INSERT INTO `xinhu_task` VALUES ('4', '5分钟运行1次', '系统', 'minute5,run', 'i5', '00', '每5分钟运行一次', '1', '0', null, null, '0', null, null, '这个是必须的,不可删除停用', null, null);
+INSERT INTO `xinhu_task` VALUES ('4', '5分钟运行1次', '系统', 'minute5,run', 'i5', '00', '每5分钟运行一次', '1', '1', '2025-12-24 09:45:00', null, '0', null, 'success', '这个是必须的,不可删除停用', null, null);
 INSERT INTO `xinhu_task` VALUES ('5', '考勤信息提醒', '考勤', 'kaoqin,todo', 'd', '09:25:00', '每天9点', '1', '0', null, null, '21', null, null, '在模块【考勤信息】下设置提醒到哪些平台。', null, null);
 INSERT INTO `xinhu_task` VALUES ('6', '用户数据更新', '用户', 'sys,dataup', 'd', '00:10:00', '每天', '1', '0', null, null, '1', null, null, null, null, null);
 INSERT INTO `xinhu_task` VALUES ('7', '考勤分析', '考勤', 'kaoqin,anay', 'd', '02:15:00', '每天2点', '1', '0', null, null, '22', null, null, '分析全体人员昨天的考勤', null, null);
@@ -8164,7 +8166,7 @@ CREATE TABLE `xinhu_userinfo` (
 -- ----------------------------
 -- Records of xinhu_userinfo
 -- ----------------------------
-INSERT INTO `xinhu_userinfo` VALUES ('1', '管理员', 'A001', '开发部', null, '信呼开发团队/开发部', '项目主管', null, '*', null, '1', '男', '0592-1234569', '15800000023', '2016-06-01', 'admin@rockoa.com', null, '1', '0', '1992-02-15', '博士后', '0', '汉', '未婚', '福建', '福建厦门', '厦门', '2016-10-01', '2016-10-02', '厦门银行', '6225****', 'images/face.jpg', '350202199901013526', '磐石', '10086', '1', '1', null, null, null);
+INSERT INTO `xinhu_userinfo` VALUES ('1', '管理员', 'A001', '开发部', null, '信呼开发团队/开发部', '项目主管', null, '*', null, '1', '男', '0592-1234569', '15800000023', '2016-06-01', 'admin@rockoa.com', null, '1', '0', '2025-08-11', '博士后', '0', '汉', '未婚', '福建', '福建厦门', '厦门', '2016-10-01', '2016-10-02', '厦门银行', '6225****', 'images/face.jpg', '350202199901013526', '磐石', '10086', '1', '1', null, null, null);
 INSERT INTO `xinhu_userinfo` VALUES ('2', '貂蝉', null, '财务部', null, '信呼开发团队/财务部', '财务总监', null, null, null, '1', '女', '0592-123456', '15800000007', '2016-08-09', null, null, '1', '0', '1990-04-01', '本科', '0', '汉', '未婚', '福建', '不知道', '不知道', null, null, null, null, 'images/daiban.png', null, null, null, '1', '2', null, null, null);
 INSERT INTO `xinhu_userinfo` VALUES ('3', '小乔', null, '财务部', null, '信呼开发团队/财务部', '出纳', null, null, null, '1', '女', null, '15800000001', '2017-05-02', null, null, '1', '0', null, null, '0', null, null, null, null, null, null, null, null, null, null, null, null, null, '1', '2', null, null, null);
 INSERT INTO `xinhu_userinfo` VALUES ('4', '大乔', null, '行政人事部', '财务部', '信呼开发团队/行政人事部', '人事主管', '会计', null, null, '1', '女', null, '15800000002', '2017-07-01', null, null, '1', '0', '1990-06-11', '本科', '0', '汉族', '未婚', '厦门', '厦门', '厦门', '2018-06-01', '2018-06-01', null, null, null, null, null, null, '1', '2', null, null, null);
@@ -8179,7 +8181,7 @@ INSERT INTO `xinhu_userinfo` VALUES ('8', '信呼客服', null, '开发部', nul
 DROP TABLE IF EXISTS `xinhu_userinfos`;
 CREATE TABLE `xinhu_userinfos` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
-  `mid` smallint(6) DEFAULT '0' COMMENT '对应主表userinfo.id',
+  `mid` int(11) DEFAULT '0' COMMENT '对应主表userinfo.id',
   `sort` smallint(6) DEFAULT '0' COMMENT '排序号',
   `startdt` date DEFAULT NULL COMMENT '开始日期',
   `enddt` date DEFAULT NULL COMMENT '截止日期',
@@ -8491,7 +8493,7 @@ CREATE TABLE `xinhu_wordxie` (
   `isgk` tinyint(4) DEFAULT '0' COMMENT '是否可让他人选择',
   `tplvar` varchar(500) DEFAULT NULL COMMENT '模版中变量',
   PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='文档协作';
+) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='文档协作';
 
 -- ----------------------------
 -- Records of xinhu_wordxie
@@ -8499,8 +8501,8 @@ CREATE TABLE `xinhu_wordxie` (
 INSERT INTO `xinhu_wordxie` VALUES ('1', '信呼开发团队介绍', null, 'pptx', '管理员', '1', '2019-03-09 20:35:22', '行政人事部,开发部', 'd4,d2', '信呼开发团队', 'd1', '1', '3', null, '0', '0', null);
 INSERT INTO `xinhu_wordxie` VALUES ('2', '信呼使用文档', null, 'docx', '管理员', '1', '2019-08-18 19:16:51', '开发部', 'd2', '信呼开发团队', 'd1', '1', '4', null, '1', '0', null);
 INSERT INTO `xinhu_wordxie` VALUES ('4', '嗯的呢测试', null, 'xlsx', '张飞', '6', '2023-06-11 18:02:18', null, null, null, null, '1', '7', null, '1', '0', null);
-INSERT INTO `xinhu_wordxie` VALUES ('10', '202506月份工资表', null, 'xlsx', '管理员', '1', '2025-06-27 14:23:54', null, null, null, null, '1', '5', null, '1', '0', null);
-INSERT INTO `xinhu_wordxie` VALUES ('11', '工作简历', null, 'docx', '管理员', '1', '2025-06-27 14:57:13', null, null, null, null, '1', '9', null, '1', '0', null);
+INSERT INTO `xinhu_wordxie` VALUES ('12', '这是一个文档', null, 'docx', '管理员', '1', '2025-08-05 20:02:47', null, null, null, null, '1', '5', null, '1', '0', null);
+INSERT INTO `xinhu_wordxie` VALUES ('13', '2025年7月工资', null, 'xlsx', '管理员', '1', '2025-08-11 11:20:37', null, null, null, null, '1', '8', null, '1', '0', null);
 
 -- ----------------------------
 -- Table structure for `xinhu_work`

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


+ 4 - 0
webmain/model/flow/hrkaohemModel.php

@@ -40,6 +40,10 @@ class flow_hrkaohemClassModel extends flowModel
 			foreach($zbdata as $k1=>$rs1)$str.=''.$rs1['pfname'].'('.$rs1['pfweight'].'%);';
 			$rs['temp_pfren'] = $str;
 		}
+		if($rs['enddt']<$this->rock->date){
+			$rs['ishui']=1;
+			$rs['enddt'].='(已截止)';
+		}
 		return $rs;
 	}
 

+ 7 - 0
webmain/model/flow/userModel.php

@@ -126,6 +126,13 @@ class flow_userClassModel extends flowModel
 		if($uarr)$dbs->update($uarr, $id);
 	}
 	
+	//删除前判断
+	protected function flowdeletebillbefore()
+	{
+		$rs = m('flowbill')->getone('`uid`='.$this->id.' and `status`=0');
+		if($rs)return '此用户申请的['.$rs['modename'].']流程还未完成,不能删除,可以先停用';
+	}
+	
 	//导入数据的测试显示
 	public function flowdaorutestdata()
 	{

+ 3 - 3
webmain/model/flowbillModel.php

@@ -156,8 +156,8 @@ class flowbillClassModel extends Model
 				$rers 		= $this->db->getone('[Q]'.$rs['table'].'', $rs['mid']);
 				if($rers){
 					$tihsrs  = $flow->rsreplace($rers, 2, null, 1);
-					$comidname = $tihsrs['comidname'];
-					$summary = $this->rock->reparr($mors['summary'], $tihsrs);
+					$comidname = arrvalue($tihsrs,'comidname');
+					$summary   = $this->rock->reparr($mors['summary'], $tihsrs);
 					$summarx = $this->rock->reparr($mors['summarx'], $tihsrs);
 	
 					$ztarr 	 = $flow->getstatus($rers, $mors['statusstr'], $rs['nowcheckname']);
@@ -323,7 +323,7 @@ class flowbillClassModel extends Model
 					$tihsrs  = $flow->rsreplace($rers, 2, null, 1);
 					$summary = $this->rock->reparr($mors['summary'], $tihsrs);
 					
-					$comidname	 = $tihsrs['comidname'];//所属单位
+					$comidname	 = arrvalue($tihsrs,'comidname');//所属单位
 					$nowsets	 = $rs['nowcheckname']; //当前审核人
 					$ztarr 		 = $flow->getstatus($rers, $mors['statusstr'], $nowsets);
 					$statustext  = $ztarr[0];

+ 1 - 1
webmain/model/flowcourseModel.php

@@ -113,7 +113,7 @@ class flowcourseClassModel extends Model
 	//获取显示数据
 	public function getTreedata($setid)
 	{
-		$drows = $this->db->getall("select *,(select count(1) from `[Q]flow_course` where `mid`=a.id)as stotal from `[Q]flow_course` a where a.`setid`='$setid' order by a.`sort`");
+		$drows = $this->db->getall("select *,(select count(1) from `[Q]flow_course` where `setid`=".$setid." and `mid`=a.id)as stotal from `[Q]flow_course` a where a.`setid`='$setid' order by a.`sort`");
 		$this->getTreedatada = array();
 		$this->getTreedatada[] = array(
 			'name'  	=> '提交',

+ 1 - 0
webmain/system/sysfile/sysfileAction.php

@@ -165,6 +165,7 @@ class sysfileClassAction extends Action
 		if($str=$this->iscaozuo())return $str;
 		$path = $this->jm->base64decode($this->get('path'));
 		if(isempt($path))return '无效文件';
+		$path  = str_replace('../','',$path);
 		$isdel = 0;
 		foreach($this->isdelmu as $sdif)if(strpos($path, $sdif)===0)$isdel=1;
 		if($isdel==0)return '此文件禁止删除';

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

粤ICP备19079148号