inputAction.php 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187
  1. <?php
  2. class inputAction extends Action
  3. {
  4. public $mid = 0;
  5. public $flow;
  6. public $rs = array();
  7. public function initAction()
  8. {
  9. /*
  10. $aid = (int)$this->get('adminid');
  11. $token = $this->get('token');
  12. $uid = m('login')->autologin($aid, $token);
  13. $this->getlogin();
  14. $this->loginnot();*/
  15. }
  16. private $fieldarr = array();
  17. private $ismobile = 0;
  18. protected $moders = array();
  19. //保存前处理,主要用于判断是否可以保存
  20. protected function savebefore($table,$arr, $id, $addbo){}
  21. //保存后处理,主要用于判断是否可以保存
  22. protected function saveafter($table,$arr, $id, $addbo){}
  23. //生成列表页,数据读取前处理
  24. protected function storebefore($table){}
  25. //生成列表页,数据读取后处理
  26. protected function storeafter($table, $rows){}
  27. //过滤html代码
  28. private function xxsstolt($uaarr)
  29. {
  30. foreach($uaarr as $k=>$v){
  31. $vss = strtolower($v);
  32. if(contain($vss, '<script')){
  33. $uaarr[$k] = str_replace(array('<','>'),array('&lt;','&gt;'), $v);
  34. }
  35. }
  36. return $uaarr;
  37. }
  38. /**
  39. * 录入的保存
  40. */
  41. public function saveAjax()
  42. {
  43. $id = (int)$this->request('id');
  44. $modenum = $this->request('sysmodenum');
  45. $uid = $this->adminid;
  46. $this->flow = m('flow')->initflow($modenum);
  47. $this->moders = $this->flow->moders;
  48. $modeid = $this->moders['id'];
  49. $isflow = (int)$this->moders['isflow'];
  50. $flownum = $this->moders['num'];
  51. $table = $this->moders['table'];
  52. $sysisturn = (int)$this->post('istrun','1');
  53. $this->checkobj = c('check');
  54. if($this->isempt($table))$this->backmsg('模块未设置表名');
  55. $fieldsarr = array();
  56. $fiexar = $this->flow->flowfieldarr($this->flow->fieldsarra, 2);
  57. foreach($fiexar as $k2=>$rs2)if($rs2['islu']==1)$fieldsarr[]=$rs2;
  58. if(!$fieldsarr)$this->backmsg('没有录入元素');
  59. $db = m($table);$subna = '提交';$addbo = false;$where = "`id`='$id'"; $oldrs = false;
  60. $this->mdb = $db;
  61. if($id==0){
  62. $where = '';
  63. $addbo = true;
  64. $isadd = m('view')->isadd($modeid, $uid);
  65. if(!$isadd)$this->backmsg('无权添加['.$this->moders['name'].']的数据1;');
  66. }else{
  67. $oldrs = $db->getone($id);
  68. if(!$oldrs)$this->backmsg('记录不存在');
  69. $this->flow->loaddata($id);
  70. if(!$this->flow->iseditqx())
  71. $this->backmsg('无权编辑['.$this->moders['name'].']的数据;');
  72. if($isflow>0){
  73. if($oldrs['uid']==$uid || $oldrs['optid']==$uid || $this->flow->floweditother){
  74. }else{
  75. //$this->backmsg('不是你提交/申请的单据,不允许编辑');
  76. }
  77. if($oldrs['status']==1)$this->backmsg('单据已审核完成,不允许编辑');
  78. }
  79. $subna = '编辑';
  80. }
  81. if($oldrs)$this->rs = $oldrs;
  82. $uaarr = $farrs = array();
  83. $lvls = array('text','textarea','ditumap');
  84. foreach($fieldsarr as $k=>$rs){
  85. $fid = $rs['fields'];
  86. $fi1 = substr($fid, 0, 5);
  87. if($fi1=='temp_' || $fi1=='base_')continue;
  88. $val = $this->post($fid);
  89. if($rs['isbt']==1 && isempt($val))$this->backmsg(''.$rs['name'].'不能为空');
  90. $msy = $this->attrcheck($val, arrvalue($rs, 'attr'), $this->checkobj);
  91. if($msy)$this->backmsg(''.$rs['name'].''.$msy.'');
  92. if(in_array($rs['fieldstype'], $lvls))$val = htmlspecialchars($val);
  93. $uaarr[$fid] = $val;
  94. $farrs[$fid] = array('name' => $rs['name']);
  95. }
  96. //人员选择保存的
  97. foreach($fieldsarr as $k=>$rs){
  98. if(substr($rs['fieldstype'],0,6)=='change'){
  99. if(!$this->isempt($rs['data'])){
  100. $fid = $rs['data'];
  101. if(isset($uaarr[$fid]))continue;
  102. $val = $this->post($fid);
  103. if($rs['isbt']==1&&$this->isempt($val))$this->backmsg(''.$rs['name'].'id不能为空');
  104. $uaarr[$fid] = $val;
  105. $farrs[$fid] = array('name' => $rs['name'].'id');
  106. }
  107. }
  108. if($rs['fieldstype']=='num'){
  109. $fid = $rs['fields'];
  110. if($this->flow->rows("`$fid`='{$uaarr[$fid]}' and `id`<>$id")>0)$uaarr[$fid]=$this->flow->createbianhao($rs['data'], $fid);
  111. }
  112. if($rs['fieldstype']=='uploadfile'){
  113. $_val= arrvalue($uaarr, $rs['fields']);
  114. if(!isempt($_val))$this->otherfileid.=','.$_val.'';
  115. }
  116. if($rs['fieldstype']=='graph'){
  117. $_val= arrvalue($uaarr, $rs['fields']);
  118. if($_val)$uaarr[$rs['fields']] = c('input')->createqianming($_val);
  119. }
  120. }
  121. //默认字段保存
  122. $allfields = $this->db->getallfields('[Q]'.$table.'');
  123. if(in_array('optdt', $allfields))$uaarr['optdt'] = $this->now;
  124. if(in_array('optid', $allfields))$uaarr['optid'] = $this->adminid;
  125. if(in_array('optname', $allfields))$uaarr['optname'] = $this->adminname;
  126. if(in_array('uid', $allfields) && $addbo){
  127. $uaarr['uid'] = $this->post('uid', $this->adminid);
  128. }
  129. if(isset($uaarr['uid'])){
  130. $urs = $this->flow->adminmodel->getone($uaarr['uid']);
  131. in_array('applyname', $allfields) and $uaarr['applyname'] = $urs['name'];
  132. in_array('applydeptname', $allfields) and $uaarr['applydeptname'] = $urs['deptname'];
  133. }
  134. if(in_array('applydt', $allfields) && $id==0)
  135. $uaarr['applydt'] = $this->post('applydt', $this->date);
  136. if($addbo){
  137. if(in_array('createdt', $allfields))$uaarr['createdt'] = $this->now;
  138. if(in_array('adddt', $allfields))$uaarr['adddt'] = $this->now;
  139. if(in_array('createid', $allfields))$uaarr['createid'] = $this->adminid;
  140. if(in_array('createname', $allfields))$uaarr['createname'] = $this->adminname;
  141. }
  142. //保存公司的
  143. if(in_array('comid', $allfields)){
  144. if($addbo)$uaarr['comid'] = m('admin')->getcompanyid();
  145. if(arrvalue($oldrs,'comid')=='0')$uaarr['comid'] = m('admin')->getcompanyid();
  146. }
  147. if($isflow>0){
  148. $uaarr['status']= '0';
  149. if($sysisturn==0){
  150. $uaarr['isturn']= '0';
  151. $subna = '保存';
  152. }
  153. }else{
  154. if(in_array('status', $allfields))$uaarr['status'] = (int)$this->post('status', '1');
  155. if(in_array('isturn', $allfields))$uaarr['isturn'] = (int)$this->post('isturn', '1');
  156. }
  157. //保存条件的判断
  158. foreach($fieldsarr as $k=>$rs){
  159. $ss = '';
  160. if(isset($uaarr[$rs['fields']]))$ss = $this->flow->savedatastr($uaarr[$rs['fields']], $rs, $uaarr);
  161. if($ss!='')$this->backmsg($ss);
  162. }
  163. //判断保存前的
  164. $ss = '';
  165. $befa = $this->savebefore($table, $this->getsavenarr($uaarr, $oldrs), $id, $addbo);
  166. $notsave= array();//不保存的字段
  167. if(is_string($befa)){
  168. $ss = $befa;
  169. }else{
  170. if(isset($befa['msg']))$ss=$befa['msg'];
  171. if(isset($befa['rows'])){
  172. if(is_array($befa['rows']))foreach($befa['rows'] as $bk=>$bv)$uaarr[$bk]=$bv;
  173. }
  174. if(isset($befa['notsave'])){
  175. $notsave=$befa['notsave'];
  176. if(is_string($notsave))$notsave = explode(',', $notsave);
  177. }
  178. }
  179. if(!$this->isempt($ss))$this->backmsg($ss);
  180. //不保存字段过滤掉
  181. if(is_array($notsave))foreach($notsave as $nofild)if(isset($uaarr[$nofild]))unset($uaarr[$nofild]);
  182. $uaarr = $this->xxsstolt($uaarr);//过滤特殊文字
  183. foreach($uaarr as $kf=>$kv){
  184. if(!in_array($kf, $allfields)){
  185. $this->backmsg('模块主表['.$this->flow->mtable.']上字段['.$kf.']不存在');
  186. }
  187. }
  188. //isonly唯一值的判断
  189. foreach($fieldsarr as $k=>$rs){
  190. $fiesd = $rs['fields'];
  191. if($rs['isonly']=='1' && isset($uaarr[$fiesd])){
  192. $dval = $uaarr[$fiesd];
  193. if(!isempt($dval)){
  194. if($db->rows("`id`<>'$id' and `$fiesd`='$dval'")>0)$this->backmsg(''.$rs['name'].'['.$dval.']已存在了');
  195. }
  196. }
  197. }
  198. //判断子表的
  199. $tabless = $this->moders['tables'];
  200. $tablessa = array();
  201. if(!isempt($tabless))$tablessa = explode(',', $tabless);
  202. if($tablessa)foreach($tablessa as $zbx=>$zbtab){
  203. if($zbtab){
  204. $this->getsubtabledata($zbx);
  205. if($this->subtabledata_msg)$this->backmsg($this->subtabledata_msg);
  206. }
  207. }
  208. $bo = $db->record($uaarr, $where);;
  209. if(!$bo)$this->backmsg($this->db->lasterror());
  210. if($id==0)$id = $this->db->insert_id();
  211. m('file')->addfile($this->post('fileid'), $table, $id, $modenum);
  212. if($this->otherfileid!='')m('file')->addfile(substr($this->otherfileid,1), '', $id, $modenum);
  213. $newrs = $db->getone($id);
  214. $this->companyid = isset($newrs['companyid']) ? (int)$newrs['companyid'] : (int)arrvalue($newrs, 'comid', '0');
  215. if($this->companyid==0)$this->companyid = m('admin')->getcompanyid();
  216. //保存多行子表
  217. if($tablessa)foreach($tablessa as $zbx=>$zbtab){
  218. if($zbtab)$this->savesubtable($zbtab, $id, $zbx, $addbo);
  219. }
  220. //保存后处理
  221. $this->saveafter($table,$this->getsavenarr($uaarr, $oldrs), $id, $addbo);
  222. if($addbo)c('cache')->del('tempdata_'.$modenum.'_'.$this->adminid.'');//删除暂存
  223. //保存修改记录
  224. $editcont = '';
  225. if($oldrs){
  226. $newrs = $db->getone($id);
  227. $editcont = m('edit')->recordsave($farrs, $table, $id, $oldrs, $newrs);
  228. }
  229. $msg = '';
  230. $this->flow->editcont = $editcont;
  231. $this->flow->loaddata($id, false);
  232. $this->flow->submit($subna);
  233. $this->backmsg('', $subna, $id);
  234. }
  235. //格式的判断
  236. private function attrcheck($val, $attr, $checkobj)
  237. {
  238. if(!isempt($val) && !isempt($attr)){
  239. if(contain($attr, 'email') && !$checkobj->isemail($val))return '必须是邮箱格式';
  240. if(contain($attr, 'mobile') && !$checkobj->iscnmobile($val))return '必须是11位手机号';
  241. if(contain($attr, 'onlyen') && $checkobj->isincn($val))return '不能有中文';
  242. if(contain($attr, 'onlycn') && !$checkobj->isincn($val))return '必须包含中文';
  243. if(contain($attr, 'number') && !$checkobj->isnumber($val))return '必须是数字';
  244. if(contain($attr, 'date') && !$checkobj->isdate($val))return '必须是日期格式如2020-02-02';
  245. }
  246. return '';
  247. }
  248. private function getsavenarr($nsrr, $bos=false)
  249. {
  250. if(!is_array($bos))$bos = array();
  251. if($nsrr)foreach($nsrr as $k=>$v)$bos[$k]=$v;
  252. return $bos;
  253. }
  254. private $subtabledata = array();
  255. private $subtabledata_msg = '';
  256. private $otherfileid = '';
  257. public function getsubtabledata($xu)
  258. {
  259. $this->subtabledata_msg = '';
  260. if(isset($this->subtabledata[$xu]))return $this->subtabledata[$xu];
  261. $arr = array();
  262. $oi = (int)$this->post('sub_totals'.$xu.'');
  263. if($oi<=0)return $arr;
  264. $modeid = $this->moders['id'];
  265. $iszb = $xu+1;
  266. $farr = m('flow_element')->getrows("`mid`='$modeid' and `islu`=1 and `iszb`=$iszb",'`name`,`fields`,`isbt`,`fieldstype`,`savewhere`,`dev`,`data`,`attr`','`sort`');
  267. $sort = 0;
  268. for($i=0; $i<$oi; $i++){
  269. $sid = (int)$this->post('sid'.$xu.'_'.$i.'');
  270. $bos = true;
  271. $uaarr['id'] = $sid;
  272. foreach($farr as $k=>$rs){
  273. $fid= $rs['fields'];
  274. $flx= $rs['fieldstype'];
  275. if(substr($fid,0,5)=='temp_')continue;
  276. $na = ''.$fid.''.$xu.'_'.$i.'';
  277. if(!isset($_POST[$na]))$bos=false;
  278. if($bos){
  279. $val= $this->post($na);
  280. if($rs['isbt']==1 && isempt($val))$bos=false;
  281. }
  282. if($bos){
  283. $msy = $this->attrcheck($val,$rs['attr'], $this->checkobj);
  284. if($msy){
  285. $msy='第'.$iszb.'子表行'.($sort+1).'的'.$rs['name'].''.$msy.'';
  286. $this->subtabledata_msg = $msy;
  287. return $arr;
  288. }
  289. $uaarr[$fid] = $val;
  290. if(substr($flx,0,6)=='change' && !isempt($rs['data'])){
  291. $na = ''.$rs['data'].''.$xu.'_'.$i.'';
  292. $val= $this->post($na);
  293. $uaarr[$rs['data']] = $val;
  294. }
  295. if($flx=='uploadfile'){
  296. if($val)$this->otherfileid.=','.$val.'';
  297. }
  298. }
  299. if(!$bos)break;
  300. }
  301. if(!$bos)continue;
  302. $uaarr['sort'] = $sort;
  303. $sort++;
  304. $arr[] = $uaarr;
  305. }
  306. $this->subtabledata[$xu] = $arr;
  307. return $arr;
  308. }
  309. //多行子表的保存
  310. private function savesubtable($tables, $mid, $xu, $addbo)
  311. {
  312. $dbs = m($tables);
  313. $data = $this->getsubtabledata($xu);
  314. $len = count($data);
  315. $idss = '0';
  316. $whes = '';
  317. $allfields = $this->db->getallfields('[Q]'.$tables.'');
  318. $oarray = array();
  319. if(in_array('optdt', $allfields))$oarray['optdt'] = $this->now;
  320. if(in_array('optid', $allfields))$oarray['optid'] = $this->adminid;
  321. if(in_array('optname', $allfields))$oarray['optname'] = $this->adminname;
  322. if(in_array('uid', $allfields) && $addbo)$oarray['uid'] = $this->post('uid', $this->adminid);
  323. if(in_array('applydt', $allfields) && $addbo)$oarray['applydt'] = $this->post('applydt', $this->date);
  324. if(in_array('status', $allfields))$oarray['status'] = 0;
  325. if(in_array('sslx', $allfields)){
  326. $oarray['sslx'] = $xu;
  327. $whes = ' and `sslx`='.$xu.'';
  328. }
  329. if(in_array('comid', $allfields))$oarray['comid'] = $this->companyid;
  330. if($data)foreach($data as $k=>$uaarr){
  331. $sid = $uaarr['id'];
  332. $where = "`id`='$sid'";
  333. $uaarr['mid'] = $mid;
  334. if($sid==0)$where = '';
  335. foreach($oarray as $k1=>$v1)$uaarr[$k1]=$v1;
  336. if($k==0){
  337. foreach($uaarr as $k2=>$v2){
  338. if(!in_array($k2, $allfields)){
  339. $this->backmsg('第'.($xu+1).'个子表['.$tables.']上字段['.$k2.']不存在');
  340. break;
  341. }
  342. }
  343. }
  344. unset($uaarr['id']);
  345. $dbs->record($uaarr, $where);
  346. if($sid==0)$sid = $this->db->insert_id();
  347. $idss.=','.$sid.'';
  348. }
  349. $delwhere = "`mid`='$mid'".$whes." and `id` not in($idss)";
  350. $dbs->delete($delwhere);
  351. }
  352. //获取数据
  353. public function getdataAjax()
  354. {
  355. $flownum = $this->request('flownum');
  356. $id = (int)$this->request('mid');
  357. $arr = m('flow')->getdataedit($flownum, $id);
  358. $this->backmsg('', '', $arr);
  359. }
  360. public function lumAction()
  361. {
  362. $ybarr = $this->option->authercheck();
  363. if(is_string($ybarr))return $ybarr;
  364. $this->ismobile = 1;
  365. $this->luactions();
  366. }
  367. public function luAction()
  368. {
  369. $this->ismobile = 0;
  370. $this->luactions();
  371. }
  372. public function lumoAction()
  373. {
  374. $ybarr = $this->option->authercheck();
  375. if(is_string($ybarr))return $ybarr;
  376. $this->ismobile = 1;
  377. $this->luactions();
  378. }
  379. public function lusAction()
  380. {
  381. $this->ismobile = 1;
  382. $menuid = (int)$this->get('menuid');
  383. $fields = m('flow_menu')->getmou('fields', $menuid);
  384. if(isempt($fields))exit('sorry;');
  385. $fields = str_replace(',',"','", $fields);
  386. $stwhe = "and `fields` in('$fields')";
  387. $this->luactions(1, $stwhe);
  388. }
  389. //高级搜索显示框
  390. public function highsouAction()
  391. {
  392. $this->displayfile = ''.P.'/flow/input/tpl_input_lus.html';
  393. $this->ismobile = 1;
  394. $this->luactions(0, '', 1);
  395. }
  396. //$lutype=1高级搜索用的
  397. private function luactions($slx=0, $stwhe='', $lutype=0)
  398. {
  399. $this->tpltype = 'html';
  400. $uid = $this->adminid;
  401. $num = $this->jm->gettoken('num');
  402. $mid = (int)$this->jm->gettoken('mid');
  403. $this->mid = $mid;
  404. $this->rs = array();
  405. $this->flow = m('flow')->initflow($num);
  406. $moders = $this->flow->moders;
  407. $modename = $moders['name'];
  408. if($moders['status']=='0')exit('模块['.$modename.']已停用了;');
  409. $apaths = ''.P.'/flow/input/mode_'.$moders['num'].'Action.php';
  410. if(!file_exists($apaths))exit('没有创建布局录入页面,无法打开,请到【流程模块→表单元素管理】下的点按钮“PC端录入页面布局”,更多查看'.c('xinhu')->helpstr('bwb3mf').'。');
  411. $isflow = (int)$moders['isflow'];
  412. $this->smartydata['moders'] = array(
  413. 'num' => $moders['num'],
  414. 'id' => $moders['id'],
  415. 'name' => $moders['name'],
  416. 'names' => $moders['names'],
  417. 'isflow'=> $isflow,
  418. 'iscs' => $moders['iscs'],
  419. 'isbxs' => $moders['isbxs'],
  420. );
  421. $this->smartydata['chao'] = $this->flow->getcsname($mid);
  422. $modeid = $moders['id'];
  423. if($mid==0 && $lutype==0){
  424. $isadd = m('view')->isadd($modeid, $uid);
  425. if(!$isadd)exit('无权添加['.$modename.']的数据,请到[流程模块→流程模块权限]下添加权限');
  426. }
  427. $content = '';
  428. $oldrs = m($moders['table'])->getone($mid);
  429. $this->rs = $oldrs;
  430. $this->gongsiarr = array();
  431. $fieldarr = m('flow_element')->getrows("`mid`='$modeid' and `iszb`=0 $stwhe",'*','`sort`');
  432. $fieldarr = $this->flow->flowfieldarr($fieldarr, $this->ismobile);
  433. $modelu = '';
  434. $fieldstypearr = array();
  435. $fmoddfarr = array();
  436. foreach($fieldarr as $k=>$rs){
  437. if($slx==1 && $oldrs){
  438. $rs['value'] = $oldrs[$rs['fields']];
  439. }
  440. if($lutype==1){
  441. $rs['isbt'] = 0;
  442. if($rs['issou']==1)$modelu.='{'.$rs['fields'].'}';
  443. }else{
  444. if($rs['islu'] || $stwhe!=''){
  445. $fmoddfarr[] = $rs;
  446. $modelu.='{'.$rs['fields'].'}'; //手机端字段布局
  447. }
  448. if(!isempt($rs['gongsi']) && contain($rs['gongsi'],'{'))$this->gongsiarr[] = array(
  449. 'iszb' => 0,
  450. 'fields' => $rs['fields'],
  451. 'gongsi' => $rs['gongsi'],
  452. );
  453. }
  454. $this->fieldarr[$rs['fields']] = $rs;
  455. if($rs['islu']==1)$fieldstypearr[] = $rs['fieldstype'];
  456. }
  457. $this->smartydata['fieldsjson'] = json_encode($fieldarr);
  458. $this->moders = $moders;
  459. $zbshu = 0;
  460. $tableas = false;
  461. if(!isempt($moders['tables'])){
  462. $tableas = explode(',', $moders['tables']);
  463. $zbshu = count($tableas);
  464. }
  465. $path = ''.P.'/flow/page/input_'.$num.'.html';
  466. if(COMPANYNUM){
  467. $path1 = ''.P.'/flow/page/input_'.$num.'_'.COMPANYNUM.'.html';
  468. if(file_exists($path1))$path = $path1;
  469. }
  470. $pclucont = '';
  471. if(file_exists($path))$pclucont = file_get_contents($path);
  472. $isupfile = 0;
  473. $nameaas = explode(',', $moders['names']); //子表名
  474. //PC端
  475. if($this->ismobile==0){
  476. $content = $pclucont;
  477. }else{
  478. $content = $this->mobileautov($modelu, $fmoddfarr);
  479. if($tableas && $slx==0){
  480. foreach($tableas as $k1=>$tableass){
  481. $zbstr = m('input')->getsubtable($modeid,$k1+1,1,1, $zbzdshu);
  482. if($zbzdshu>2 && $this->flow->minwidth<300)$this->flow->minwidth = $zbzdshu*180;
  483. if($zbstr!=''){
  484. $zbnam = arrvalue($nameaas, $k1);
  485. $zbstr = str_replace('{subzbname'.$k1.'}', $zbnam, $zbstr);
  486. $content.= '<tr><td colspan="2">';
  487. //if(!getconfig('inputm_view'))$content.='<div><b>'.$zbnam.'</b></div>';
  488. if($this->flow->minwidth>300 && $this->rock->ismobile() && 1==2){
  489. $content.='<div tmp="mobilezbiao" style="width:280px;overflow:auto;"><div
  490. style="min-width:'.$this->flow->minwidth.'px">'.$zbstr.'</div></div>';
  491. }else{
  492. $content.='<div>'.$zbstr.'</div>';
  493. }
  494. $content.= '</td></tr>';
  495. }
  496. }
  497. }
  498. $isupfile = contain($pclucont, '{file_content}') ? 1 : 0;
  499. }
  500. if($content=='')exit('未设置录入页面,请到[流程模块→表单元素管理]下设置');
  501. $content = $this->flow->flowinputtpl($content, $this->ismobile);
  502. $this->actclss = $this;
  503. $pathss = ''.P.'/flow/input/mode_'.$num.'Action.php';
  504. if(file_exists($pathss)){
  505. include_once($pathss);
  506. $clsnam = 'mode_'.$num.'ClassAction';
  507. $this->actclss = new $clsnam();
  508. $this->actclss->flow = $this->flow;
  509. $this->actclss->mid = $this->mid;
  510. $this->actclss->rs = $this->rs;
  511. $this->actclss->ismobile= $this->ismobile;
  512. }
  513. //初始表单插件元素
  514. $this->fieldarrall = $this->fieldarr;
  515. $this->inputobj = c('input');
  516. $this->inputobj->ismobile = $this->ismobile;
  517. $this->inputobj->fieldarr = $this->fieldarr;
  518. $this->inputobj->flow = $this->flow;
  519. $this->inputobj->mid = $this->mid;
  520. $this->inputobj->initUser($this->adminid);
  521. $chufarr= array();
  522. if(method_exists($this->flow, 'flowxiangfields'))$chufarr = $this->flow->flowxiangfields($chufarr);
  523. $this->fieldarrall['base_sericnum'] = array('name'=>arrvalue($chufarr,'base_sericnum','单号'));
  524. $this->fieldarrall['base_name'] = array('name'=>arrvalue($chufarr,'base_name','申请人'));
  525. $this->fieldarrall['base_deptname'] = array('name'=>arrvalue($chufarr,'base_deptname','申请人部门'));
  526. $this->fieldarrall['file_content'] = array('name'=>arrvalue($chufarr,'file_content','相关文件'));
  527. preg_match_all('/\{(.*?)\}/', $content, $list);
  528. foreach($list[1] as $k=>$nrs){
  529. $str = $this->inputobj->getfieldcont($nrs, $this->actclss);
  530. $content = str_replace('{'.$nrs.'}', $str, $content);
  531. }
  532. $this->subfielsa = array();
  533. $content = $this->pisubduolie($content, $modeid, $nameaas);//多列子表匹配的是[]
  534. $content = str_replace('*','<font color=red>*</font>', $content);
  535. //替换字段名^^
  536. preg_match_all('/\^(.*?)\^/', $content, $list);
  537. foreach($list[1] as $k=>$nrs){
  538. $fzdrs = arrvalue($this->fieldarrall, $nrs);
  539. if($fzdrs)$content = str_replace('^'.$nrs.'^', $fzdrs['name'], $content);
  540. }
  541. $course = array();
  542. $nowcourseid = 0;
  543. if($isflow>0 && $lutype==0){
  544. $course[]= array('name'=>'提交','id'=>0);
  545. $courses = $this->flow->getflowpipei($this->adminid);
  546. if($mid>0){
  547. $nowcourseid = $this->flow->billmodel->getmou('nowcourseid',"`table`='".$this->flow->mtable."' and `mid`='$mid'");
  548. }
  549. foreach($courses as $k=>$rs1){
  550. $na = $rs1['name'];
  551. if(!$this->isempt($rs1['explain']))$na.= '<br><span style="font-size:12px">('.$rs1['explain'].')</span>';
  552. $rs1['name'] = $na;
  553. $rs1['k'] = $k;
  554. $rs1['isnow']= $rs1['id']==$nowcourseid;
  555. if(arrvalue($moders,'isflowlx')=='1'){
  556. $rs1['isnow'] = $k==0; //如果走重头审批第一步就是第一步的
  557. }
  558. //读取上次选择的2019-03-06 23:10:00添加
  559. $cuid = $name = '';
  560. if($rs1['isnow'] && $rs1['checktype']=='change' && $mid>0){
  561. $cheorws= $this->flow->checksmodel->getall("`table`='".$this->flow->mtable."' and `mid`='$mid' and `courseid`=".$rs1['id']."",'checkid,checkname');
  562. if($cheorws){
  563. foreach($cheorws as $k3=>$rs3){
  564. $cuid.=','.$rs3['checkid'].'';
  565. $name.=','.$rs3['checkname'].'';
  566. }
  567. if($cuid != ''){
  568. $cuid = substr($cuid, 1);
  569. $name = substr($name, 1);
  570. }
  571. }
  572. }
  573. $rs1['sysnextoptid']= $cuid;
  574. $rs1['sysnextopt'] = $name;
  575. $course[]=$rs1;
  576. }
  577. $course[]= array('name'=>'结束','id'=>-1);
  578. }
  579. $this->title = $this->flow->inputtitle();//录入页面的标题
  580. $this->smartydata['content'] = $content;
  581. $this->smartydata['gongsiarr'] = $this->gongsiarr;
  582. $this->smartydata['subfielsa'] = $this->subfielsa;
  583. $this->smartydata['mid'] = $mid;
  584. $this->smartydata['isflow'] = $isflow;
  585. $this->smartydata['showtype'] = $this->get('showtype');
  586. $this->smartydata['zbnamearr'] = $nameaas;
  587. $this->smartydata['zbshu'] = $zbshu;//子表数
  588. $this->smartydata['isupfile'] = $isupfile;//是否有上传
  589. $this->assign('inputobj', c('input'));
  590. $this->smartydata['course'] = $course;
  591. $inpwhere = $this->flow->inputwidth;
  592. if($inpwhere<200)$inpwhere = $this->option->getval('inputwidth', 750);
  593. $this->smartydata['inputwidth'] = $inpwhere;
  594. $this->assign('fieldstypearr', $fieldstypearr);
  595. $otherfile = 'webmain/flow/input/tpl_input_luother_'.$this->ismobile.'.html';
  596. if(!file_exists($otherfile))$otherfile = '';
  597. $this->assign('otherfile', $otherfile);
  598. $tempdata = ($mid==0) ? c('cache')->get('tempdata_'.$num.'_'.$this->adminid.'') : '';
  599. $this->assign('tempdata', $tempdata);
  600. }
  601. //2022-06-15添加分组显示
  602. private function mobileautov($str, $farr)
  603. {
  604. if(!$farr)return $str;
  605. $fzuar = array();
  606. foreach($farr as $k=>$rs){
  607. $ftype = arrvalue($rs, 'ftype');
  608. if(isempt($ftype))$ftype = 'defv';
  609. if(!isset($fzuar[$ftype]))$fzuar[$ftype] = '';
  610. $fzuar[$ftype].= '{'.$rs['fields'].'}';
  611. }
  612. $str = '';
  613. foreach($fzuar as $fl=>$fstr){
  614. if($fl!='defv')$str.='<tr><td colspan="2" style="line-height:35px;color:#888888;font-size:12px;padding-left:10px">'.$fl.'</td></tr>';
  615. $str.=$fstr;
  616. }
  617. return $str;
  618. }
  619. //多行子表内替换
  620. private function pisubduolie($content, $modeid, $nameaas)
  621. {
  622. $fieldarr = m('flow_element')->getrows("`mid`='$modeid' and `iszb`>0",'*','`sort`');
  623. if(!$fieldarr)return $content;
  624. $this->fieldarr = array();
  625. foreach($fieldarr as $k=>$rs){
  626. $oi = $rs['iszb']-1;
  627. $this->fieldarr['xuhao'.$oi.''] = array(
  628. 'fields' => 'xuhao'.$oi.'',
  629. 'fieldstype'=> 'xuhao',
  630. 'data' => '',
  631. 'attr' => ' readonly temp="xuhao"',
  632. 'dev' => '1',
  633. 'isbt' => '0',
  634. 'fieldss' => 'sid'.$oi.''
  635. );
  636. $this->fieldarr[$rs['fields'].''.$oi.''] = $rs;
  637. if(!isempt($rs['gongsi']))$this->gongsiarr[] = array(
  638. 'iszb' => $rs['iszb'],
  639. 'fields' => $rs['fields'],
  640. 'gongsi' => $rs['gongsi'],
  641. );
  642. if($rs['isbt']=='1'){
  643. $this->subfielsa[] = array(
  644. 'name' => $rs['name'],
  645. 'fields' => $rs['fields'],
  646. 'type' => $rs['fieldstype'],
  647. 'isbt' => $rs['isbt'],
  648. 'iszb' => (int)$rs['iszb'],
  649. 'zbname'=> arrvalue($nameaas, $oi)
  650. );
  651. }
  652. }
  653. $this->inputobj->fieldarr = $this->fieldarr;
  654. preg_match_all('/\[(.*?)\]/', $content, $list);
  655. foreach($list[1] as $k=>$nrs){
  656. if(!$this->isempt($nrs)){
  657. $fida= explode(',', $nrs);$xu0='0';
  658. if(isset($fida[1]))$xu0=$fida[1];
  659. $iszb = floatval(substr($fida[0],-1))+1;//第几个子表如果超过第10个子表就麻烦了
  660. $str = $this->inputobj->getfieldcont($fida[0], $this->actclss,'_'.$xu0.'', $iszb);
  661. $content = str_replace('['.$nrs.']', $str, $content);
  662. }
  663. }
  664. return $content;
  665. }
  666. public function getselectdataAjax()
  667. {
  668. $rows = array();
  669. $act = $this->get('act');
  670. $modenum= $this->get('sysmodenum');
  671. $actstr = $this->get('actstr');
  672. if(isempt($act)){
  673. if($actstr){
  674. $actstr1 = $this->jm->base64decode($actstr);
  675. $rows = c('input')->sqlstore($actstr1);
  676. }
  677. return $rows;
  678. }
  679. //用:读取model上的数据
  680. if(!isempt($act) && contain($act,':')){
  681. $acta = explode(':', $act);
  682. $objs = m($acta[0]);
  683. $tacs = $acta[1];
  684. if(method_exists($objs, $tacs)){
  685. $rows = $objs->$tacs();
  686. }
  687. }
  688. if(!$rows && !isempt($act) && method_exists($this, $act)){
  689. $rows = $this->$act();
  690. }
  691. //从Model上读取
  692. if(!$rows && !isempt($modenum)){
  693. $this->flow = m('flow')->initflow($modenum);
  694. if(method_exists($this->flow, $act)){
  695. $rows = $this->flow->$act();
  696. }
  697. }
  698. //从数据选项读取
  699. if(!$rows && $actstr){
  700. $acta = explode(',', $this->jm->base64decode($actstr));
  701. if(count($acta)<=3){
  702. $sarr = m('option')->getmnum($acta[0]);
  703. if($sarr){
  704. $vas = arrvalue($acta,2, 'value');
  705. foreach($sarr as $k=>$rs){
  706. $rows[] = array(
  707. 'name' => $rs['name'],
  708. 'value' => $rs[$vas],
  709. );
  710. }
  711. }
  712. }
  713. }
  714. return $rows;
  715. }
  716. /**
  717. * 公共读取数据之前处理
  718. */
  719. public function storebeforeshow($table)
  720. {
  721. $this->atypearr = false;
  722. $this->modeid = (int)arrvalue($this->flow->moders, 'id', $this->get('modeid','0'));
  723. $pnum = $this->get('pnum');
  724. if($this->post('atype')=='grant'){
  725. $this->atypearr = array();
  726. $this->atypearr[] = array(
  727. 'id' => 0,
  728. 'num' => 'grant',
  729. 'name' => ''.$this->flow->modename.'授权查看',
  730. );
  731. }else if($this->loadci==1 && $this->adminid>0){
  732. $this->atypearr = m('where')->getmywhere($this->modeid, $this->adminid, $pnum);
  733. if(isempt($pnum)){
  734. $mors = $this->flow->moders;
  735. if((int)arrvalue($mors,'iscs','0')>0)$this->atypearr[] = array(
  736. 'id' => 0,
  737. 'num' => 'chaos',
  738. 'name' => ''.$mors['name'].'抄送给我',
  739. );
  740. if($mors['isflow']>0){
  741. $this->atypearr[] = array(
  742. 'id' => 0,
  743. 'num' => 'mychuli',
  744. 'name' => ''.$mors['name'].'经我处理',
  745. );
  746. }
  747. }
  748. }
  749. return $this->storebefore($table);
  750. }
  751. /**
  752. * 公共读取数据之后处理,展示列数
  753. */
  754. public function storeaftershow($table, $rows)
  755. {
  756. $barr['rows'] = $rows;
  757. $barr['atypearr'] = $this->atypearr;
  758. if($this->loadci==1){
  759. $vobj = m('view');
  760. $barr['isadd'] = $vobj->isadd($this->modeid, $this->adminid); //判断是否可添加
  761. $barr['isdaoru'] = $vobj->isdaoru($this->modeid, $this->adminid); //判断是否可导入
  762. $barr['isdaochu'] = $vobj->isdaochu($this->modeid, $this->adminid); //判断是否可导入
  763. $barr['listinfo'] = m('mode')->createlistpage($this->flow->moders,0,1,$this);
  764. }
  765. $barr['souarr'] = $this->flow->flowsearchfields();
  766. $rows = $this->flow->viewjinfields($rows);//禁看字段处理
  767. $farrl = array();
  768. foreach($this->flow->fieldsarra as $k2=>$rs2){
  769. if($rs2['fieldstype']=='uploadimg')$farrl[$rs2['fields']]=$rs2['fieldstype'];
  770. }
  771. if($rows)foreach($rows as $k1=>$rs1){
  772. foreach($farrl as $fid=>$flx){
  773. if(isset($rs1[$fid])){
  774. $val = $rs1[$fid];
  775. if($flx=='uploadimg'){
  776. $val = $this->rock->gethttppath($val);
  777. $rows[$k1][$fid] = $val;
  778. //if($this->flow->modeid>92)$val='<img src="'.$val.'" height="60">';
  779. }
  780. }
  781. }
  782. }
  783. $barr['modeid'] = $this->modeid;
  784. $barr['loadci'] = $this->loadci;
  785. $barr['rows'] = $rows;
  786. $scarr = $this->storeafter($table, $rows, $barr);
  787. if(is_array($scarr))foreach($scarr as $k=>$v)$barr[$k]=$v;
  788. return $barr;
  789. }
  790. //获取可搜索列表
  791. public function getcolumnsAjax()
  792. {
  793. $modeid = (int)$this->get('modeid');
  794. $modenum = $this->get('modenum');
  795. $flow = m('flow')->initflow($modenum);
  796. $souarr = array();
  797. $this->input= c('input');
  798. $this->flow = $flow;
  799. foreach($flow->fieldsarra as $k=>$rs){
  800. if($rs['issou']==1){
  801. $rs['store'] = $this->input->getdatastore($rs['fieldstype'], $this, $rs['data']);
  802. $souarr[] = $rs;
  803. }
  804. }
  805. $this->returnjson($souarr);
  806. }
  807. //初始化导入
  808. public function initdaoruAjax()
  809. {
  810. $modenum = $this->get('modenum');
  811. $flow = m('flow')->initflow($modenum);
  812. $rows = m('flow_element')->getall('mid='.$flow->modeid.' and `isdr`=1 and `iszb`=0','name,isbt,fields','`sort`,`id`');
  813. return $rows;
  814. }
  815. //确定导入数据
  816. public function daorudataAjax()
  817. {
  818. $modenum = $this->post('modenum');
  819. $flow = m('flow')->initflow($modenum);
  820. $rows = m('flow_element')->getall('mid='.$flow->modeid.' and `isdr`=1 and `iszb`=0','name,isbt,fields,isonly','`sort`,`id`');
  821. $fields = $fieldss = '';
  822. if(!$rows)return returnerror('没有导入的字段');
  823. $onlyfield = array();
  824. foreach($rows as $k=>$rs){
  825. $fields.=','.$rs['fields'].'';
  826. if($rs['isbt']=='1')$fieldss.=','.$rs['fields'].'';
  827. if($rs['isonly']=='1')$onlyfield[] = $rs['fields']; //唯一字段
  828. }
  829. $fields = substr($fields, 1);
  830. if($fieldss!='')$fieldss = substr($fieldss,1);
  831. $data = c('html')->importdata($fields, $fieldss); //获取提交过来要导入的数据库
  832. if(!$data)return returnerror('没有可导入的数据,注意*是必填的哦');
  833. $msgstr = '';
  834. //保存前判断
  835. if(method_exists($flow,'flowdaorubefore')){
  836. $data = $flow->flowdaorubefore($data);
  837. if(is_string($data))return returnerror($data);
  838. }
  839. //判断是否有重复
  840. $ldata = array();
  841. foreach($data as $k=>$rs){
  842. $bos = true;
  843. foreach($onlyfield as $onid){
  844. $val = arrvalue($rs, $onid);
  845. if(!isempt($val)){
  846. $tos = $flow->rows("`$onid`='$val'");
  847. if($tos>0){
  848. $bos = false;
  849. $msgstr.='行'.($k+1).'的字段'.$onid.'存在重复;';
  850. break;
  851. }
  852. }
  853. }
  854. if($bos)$ldata[] = $rs;
  855. }
  856. if(!$ldata)return returnerror('没有可导入的数据'.$msgstr.'');
  857. $allfields = $this->db->getallfields('[Q]'.$flow->mtable.'');
  858. $oi = 0;
  859. $dorudat= array();
  860. foreach($ldata as $k=>$rs){
  861. $id = (int)arrvalue($rs,'id','0');
  862. $where = '';
  863. if($id>0){
  864. if($flow->rows($id)>0){
  865. $where='`id`='.$id.'';
  866. }else{
  867. $id = 0;
  868. }
  869. }
  870. if($id==0){
  871. if(!isset($rs['createid']) && in_array('createid', $allfields))$rs['createid'] = $this->adminid;
  872. if(!isset($rs['createname']) && in_array('createname', $allfields))$rs['createname'] = $this->adminname;
  873. if(!isset($rs['adddt']) && in_array('adddt', $allfields))$rs['adddt'] = $this->now;
  874. if(!isset($rs['createdt']) && in_array('createdt', $allfields))$rs['createdt'] = $this->now;
  875. if(!isset($rs['comid']) && in_array('comid', $allfields))$rs['comid'] = m('admin')->getcompanyid();
  876. }
  877. if(!isset($rs['uid']) && in_array('uid', $allfields))$rs['uid'] = $this->adminid;
  878. if(!isset($rs['optid']) && in_array('optid', $allfields))$rs['optid'] = $this->adminid;
  879. if(!isset($rs['optname']) && in_array('optname', $allfields))$rs['optname'] = $this->adminname;
  880. if(!isset($rs['optdt']) && in_array('optdt', $allfields))$rs['optdt'] = $this->now;
  881. if(!isset($rs['applydt']) && in_array('applydt', $allfields))$rs['applydt'] = $this->date;
  882. if($id==0){
  883. $bo = $flow->insert($rs);
  884. }else{
  885. $bo = $id;
  886. $flow->update($rs, $where);
  887. }
  888. if($bo){
  889. $rs['id'] = $bo;
  890. $dorudat[]= $rs;
  891. $oi++;
  892. //有流程的模块就要提交操作
  893. $status = arrvalue($rs,'status','0'); //状态
  894. $isturn = arrvalue($rs,'isturn','1'); //默认是提交的
  895. if($flow->isflow>0 && $status=='0'){
  896. $flow->loaddata($rs['id'], false);
  897. $na = ($isturn=='1') ? '提交' : '保存';
  898. $flow->submit($na);
  899. }
  900. }else{
  901. $msgstr.='行'.($k+1).'保存数据库错误;';
  902. }
  903. }
  904. if($oi==0)return returnerror('导入数据为0条'.$msgstr.'');
  905. //保存后判断
  906. if(method_exists($flow,'flowdaoruafter')){
  907. $flow->flowdaoruafter($dorudat);
  908. }
  909. return returnsuccess('成功导入'.$oi.'条数据'.$msgstr.'');
  910. }
  911. //读取导入的excel数据
  912. public function readxlsAjax()
  913. {
  914. $fileid = (int)$this->get('fileid','0');
  915. $fpath = m('file')->getmou('filepath', $fileid);
  916. if(isempt($fpath))return returnerror('文件不存在了');
  917. $phpexcel = c('PHPExcelReader');
  918. $rows = $phpexcel->reader($fpath);
  919. if(is_string($rows))return returnerror('无法读取Excel文件('.$rows.')');
  920. $modenum= $this->get('modenum');
  921. $flow = m('flow')->initflow($modenum);
  922. $dtarr = array();//日期读取需要判断
  923. $xuha = -1;
  924. foreach($flow->fieldsarra as $k2=>$rs2){
  925. if($rs2['isdr']=='1' && $rs2['iszb']=='0'){
  926. $xuha++;
  927. if(in_array($rs2['fieldstype'], array('date','datetime'))){
  928. $dtarr[$phpexcel->A[$xuha]] = $rs2['fieldstype'];
  929. }
  930. }
  931. }
  932. $str = '';
  933. foreach($rows as $k=>$rs){
  934. $str1 = '';
  935. $xi = 0;
  936. foreach($rs as $k1=>$v1){
  937. if($xi>0)$str1.=' ';
  938. if(isset($dtarr[$k1]) && is_numeric($v1)){
  939. $v1 = $phpexcel->ExcelToDate($dtarr[$k1], $v1);
  940. }
  941. $v1 = str_replace("\n", '[XINHUBR]', $v1); //有\n转
  942. $str1.=''.$v1.'';
  943. $xi++;
  944. }
  945. if($k>0)$str.="\n";
  946. $str.=$str1;
  947. }
  948. return returnsuccess($str);
  949. }
  950. //下载导入的模版
  951. public function daoruexcelAction()
  952. {
  953. $this->display = false;
  954. $modenum = $this->get('modenum');
  955. $flow = m('flow')->initflow($modenum);
  956. $rows = m('flow_element')->getall('mid='.$flow->modeid.' and `isdr`=1 and `iszb`=0','name,isbt,fields','`sort`,`id`');
  957. if(!$rows)return '对应模块没有设置导入字段';
  958. $testdata = $texdata = array();
  959. if(method_exists($flow,'flowdaorutestdata')){
  960. $testdata = $flow->flowdaorutestdata();
  961. }
  962. m('file')->fileheader(''.$modenum.'import.xls');
  963. $str1 = '';
  964. $str2 = '';
  965. $col = 0;
  966. $headArr = array();
  967. foreach($rows as $k=>$rs){
  968. $col++;
  969. $xi = $rs['isbt']=='1'? '<font color=red>*</font>' : '';
  970. $x1 = $rs['isbt']=='1'? '*' : '';
  971. $str1.='<td style="border:.5pt #000000 solid; background:#cdf79e" height="30" align="center">'.$xi.'<b>'.$rs['name'].'('.$rs['fields'].')</b></td>';
  972. $headArr[$rs['fields']] = ''.$x1.''.$rs['name'].'('.$rs['fields'].')';
  973. }
  974. if($testdata){
  975. $texdata = $testdata;
  976. if(!isset($testdata[0]))$texdata = array($testdata);
  977. foreach($texdata as $j=>$jrs){
  978. $str2.='<tr>';
  979. foreach($rows as $k=>$rs){
  980. $val = arrvalue($jrs, $rs['fields']);
  981. $str2.='<td style="border:.5pt #000000 solid;" height="30" align="center">'.$val.'</td>';
  982. }
  983. $str2.='</tr>';
  984. }
  985. }
  986. $str = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  987. <table style="border-spacing: 0;border-collapse: collapse;"><tr bgcolor="#f1f1f1">'.$str1.'</tr>'.$str2.'';
  988. for($i=1;$i<=100;$i++){
  989. $str.='<tr>';
  990. for($j=1;$j<=$col; $j++){
  991. $str.='<td style="border:.5pt #000000 solid" height="30" align="center"></td>';
  992. }
  993. $str.='</tr>';
  994. }
  995. $str.= '</table>';
  996. $pexecl = c('PHPExcel');
  997. if($pexecl->isBool()){
  998. $pexecl->title = ''.$modenum.'_import';
  999. $pexecl->titlebool = false;
  1000. $pexecl->borderbool = false;
  1001. $pexecl->headArr = $headArr;
  1002. $pexecl->rows = $texdata;
  1003. $pexecl->display('xls', 'down');
  1004. }else{
  1005. return $str;
  1006. }
  1007. }
  1008. public function getuinfoAjax()
  1009. {
  1010. $uid = $this->post('uid', $this->adminid);
  1011. $rs = m('admin')->getone($uid,'id,name,deptname,deptid,deptallname,ranking,workdate,pingyin');
  1012. $unrs= m('userinfo')->getone($uid, 'syenddt,positivedt');
  1013. if($unrs)foreach($unrs as $k=>$v)$rs[$k] =$v;
  1014. return $rs;
  1015. }
  1016. public function upimagepathAjax()
  1017. {
  1018. $fileid = (int)$this->get('fileid');
  1019. $fid = $this->get('fid');
  1020. $frs = m('file')->getone($fileid);
  1021. $path = '';
  1022. if(!isempt($frs['thumbplat'])){
  1023. $path = str_replace('_s.','.',$frs['thumbplat']);
  1024. }
  1025. $filepathout = arrvalue($frs,'filepathout');
  1026. if($filepathout)$path = $filepathout;
  1027. return returnsuccess(array(
  1028. 'path' => $path,
  1029. 'fid' => $fid,
  1030. ));
  1031. }
  1032. public function saveoptionAction()
  1033. {
  1034. $num = $this->post('num');
  1035. $name = $this->post('name');
  1036. if($name && $num){
  1037. $pid = $this->option->getpids($num);
  1038. if($pid>0){
  1039. $this->option->insert(array(
  1040. 'pid' => $pid,
  1041. 'name' => $name,
  1042. 'optdt' => $this->now,
  1043. 'optid' => $this->adminid,
  1044. ));
  1045. }
  1046. }
  1047. return 'ok';
  1048. }
  1049. /**
  1050. * 暂存7天
  1051. */
  1052. public function savezhanAjax()
  1053. {
  1054. $flownum = $this->post('flownum');
  1055. $contstr = $this->post('contstr');
  1056. $key = 'tempdata_'.$flownum.'_'.$this->adminid.'';
  1057. if($contstr){
  1058. c('cache')->set($key, $contstr, 3600*24*7);
  1059. }else{
  1060. c('cache')->del($key);
  1061. }
  1062. return returnsuccess();
  1063. }
  1064. }
  1065. class inputClassAction extends inputAction{}
粤ICP备19079148号