inputAction.php 40 KB

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