| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665 |
- <?php
- class flowClassAction extends Action
- {
- private $modeid,$moders,$isflow;
-
- public function loaddataAjax()
- {
- $id = (int)$this->get('id');
- $data = m('flow_set')->getone($id);
- $arr = array(
- 'data' => $data
- );
- echo json_encode($arr);
- }
-
- public function modeafter($table, $rows)
- {
- return array(
- 'qian' => PREFIX
- );
- }
-
- public function modebefore($table)
- {
- $where = '';
- $key = $this->post('key');
- if(!isempt($key)){
- $where = "and (`type`='$key' or `name` like '%$key%' or `table` like '$key%' or `num` like '$key%' or `sericnum` like '$key%')";
- }
- return $where;
- }
-
- public function getcompanydataAjax()
- {
- $rows = array();
- $msg = '';
- if(!getconfig('platdwnum')){
- $msg = '当前不是SAAS模式不需要操作';
- }else{
- if(!COMPANYNUM){
- $rows = m('company')->getall('`iscreate`=1','id,name');
- if(!$rows)$msg='没有创建过任何单位';
- }else{
- $msg = '请在管理模式下操作';
- }
- }
- return returnsuccess($rows, $msg);
- }
-
- public function flowwheresave_before($table,$das)
- {
- $str = m('where')->checkwhere($das['setid'], $das['wheresstr']);
- if($str)return $str;
- }
-
- public function flowmenusave_before($table,$das)
- {
- $str = m('where')->checkwhere($das['setid'], $das['wherestr']);
- if($str)return $str;
- }
-
- private function getwherelist($setid)
- {
- return m('flow_where')->getall('setid='.$setid.'','id,name','sort');
- }
-
- public function loaddatacourseAjax()
- {
- $id = (int)$this->get('id');
- $setid = (int)$this->get('setid');
- $data = m('flow_course')->getone($id);
- $arr = array(
- 'data' => $data,
- 'wherelist' => $this->getwherelist($setid),
- 'statusstr' => m('flow_set')->getmou('statusstr', $setid)
- );
- echo json_encode($arr);
- }
-
- public function loaddatawhereAjax()
- {
- $id = (int)$this->get('id');
- $data = m('flow_where')->getone($id);
- $arr = array(
- 'data' => $data,
- );
- echo json_encode($arr);
- }
-
- public function flowsetsavebefore($table, $cans)
- {
- $tab = $cans['table'];
- $tabs= trim($cans['tables']);
- $names= trim($cans['names']);
- $name= $this->rock->xssrepstr($cans['name']);
- $num = strtolower($cans['num']);
- $cobj= c('check');
- if(!$cobj->iszgen($tab))return '表名格式不对';
- $bobg = preg_replace("/[a-zA-Z0-9_]/",'', $tab);
- if($bobg)return '表名禁用:'.$bobg.'';
- if($cobj->isnumber($num))return '编号不能为数字';
- if(strlen($num)<4)return '编号至少要4位';
- if($cobj->isincn($num))return '编号不能包含中文';
- if(contain($num,'-'))return '编号不能有-';
-
- $bobg = preg_replace("/[a-zA-Z0-9_]/",'', $num);
- if($bobg)return '模块编号禁用:'.$bobg.'';
-
- if($cans['isflow']>0 && isempt($cans['sericnum'])) return '有流程必须有写编号规则,请参考其他模块填写';
- $rows['num']= $this->rock->xssrepstr($num);
- $rows['name']= $name;
- if(!isempt($tabs)){
- if($cobj->isincn($tabs))return '多行子表名不能包含中文';
- $bobg = preg_replace("/[a-zA-Z0-9_,]/",'', $tabs);
- if($bobg)return '子表名禁用:'.$bobg.'';
- $tabsa = explode(',', $tabs);
- $namea = explode(',', $names);
- foreach($tabsa as $k1=>$tabsas){
- if(isempt($tabsas))return '多行子表名('.$tabs.')不规范';
- if(isempt(arrvalue($namea, $k1)))return '第'.($k1+1).'个多行子表名称必须填写';
- }
- }
- $rows['tables']= $tabs;
- if($cans['where'])$rows['where'] = htmlspecialchars_decode($cans['where']);
- return array(
- 'rows' => $rows
- );
- }
-
- private function setsubtsta($tabs, $alltabls, $tab, $slxbo, $ssm)
- {
- if(isempt($tabs))return;
- if(!in_array(''.PREFIX.''.$tabs.'', $alltabls)){
- $sql = "CREATE TABLE `[Q]".$tabs."` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `mid` int(11) DEFAULT '0' COMMENT '对应主表".$tab.".id',
- `sort` int(11) DEFAULT '0' COMMENT '排序号',
- `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id',
- PRIMARY KEY (`id`),KEY `mid` (`mid`)
- ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;";
- $bo = $this->db->query($sql);
- }else{
- $fields = $this->db->getallfields(''.PREFIX.''.$tabs.'');
- $str = '';
- if(!in_array('mid', $fields))$str.=",add `mid` int(11) DEFAULT '0' COMMENT '对应主表".$tab.".id'";
- if(!in_array('sort', $fields))$str.=",add `sort` int(11) DEFAULT '0' COMMENT '排序号'";
- if(!in_array('comid', $fields))$str.=",add `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id'";
- if($slxbo && !in_array('sslx', $fields)){
- $ssma = explode(',', $ssm);
- $ss1 = '';
- foreach($ssma as $k=>$ssmas)$ss1.=','.$k.''.$ssmas.'';
- if($ss1!='')$ss1 = substr($ss1, 1);
- $str.=",add `sslx` tinyint(1) DEFAULT '0' COMMENT '".$ss1."'";
- }
- if($str!=''){
- $sql = 'alter table `'.PREFIX.''.$tabs.'` '.substr($str,1).'';
- $this->db->query($sql);
- }
- }
- }
-
- public function flowsetsaveafter($table, $cans)
- {
- $isflow = $cans['isflow'];
- $name = $cans['name'];
- $tab = $cans['table'];
- $tabs = $cans['tables'];
- $alltabls = array();
- //创建保存多行子表
- if(!isempt($tabs)){
- $alltabls = $this->db->getalltable();
- $tabsa = explode(',', $tabs);
- $addsts = array();
- foreach($tabsa as $tabsas){
- $this->setsubtsta($tabsas, $alltabls, $tab, in_array($tabsas, $addsts), $cans['names']);
- $alltabls[] = ''.PREFIX.''.$tabsas.'';
- $addsts[] = $tabsas;
- }
- }
- $noarray = array('menu','flow_set','flow_element','flow_menu','flow_bill','flow_extent','flow_where');
- if(isempt($tab))return;
- if(in_array($tab, $noarray))return;
- if(!$alltabls)$alltabls = $this->db->getalltable();
- if($isflow==0){
- if(!in_array(''.PREFIX.''.$tab.'', $alltabls)){
- $sql = "CREATE TABLE `[Q]".$tab."` (`id` int(11) NOT NULL AUTO_INCREMENT,`comid` smallint(6) DEFAULT '0' COMMENT '对应单位id',`uid` int(11) DEFAULT '0',`optid` int(11) DEFAULT '0' COMMENT '操作人id',`optname` varchar(20) DEFAULT NULL COMMENT '操作人',`optdt` datetime DEFAULT NULL COMMENT '操作时间',PRIMARY KEY (`id`))ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='$name';";
- $bo = $this->db->query($sql);
- }else{
- $fields = $this->db->getallfields(''.PREFIX.''.$tab.'');
- $str = '';
- if(!in_array('comid', $fields) && !in_array('companyid', $fields))$str.=",add `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id'";
- if($str!=''){
- $sql = 'alter table `'.PREFIX.''.$tab.'` '.substr($str,1).'';
- $this->db->query($sql);
- }
- }
- return;
- }
-
- if(!in_array(''.PREFIX.''.$tab.'', $alltabls)){
- $sql = "CREATE TABLE `[Q]".$tab."` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `uid` int(11) DEFAULT '0',
- `optdt` datetime DEFAULT NULL COMMENT '操作时间',
- `optid` int(11) DEFAULT '0',
- `optname` varchar(20) DEFAULT NULL COMMENT '操作人',
- `applydt` date DEFAULT NULL COMMENT '申请日期',
- `explain` varchar(500) DEFAULT NULL COMMENT '说明',
- `status` tinyint(1) DEFAULT '1' COMMENT '状态',
- `isturn` tinyint(1) DEFAULT '1' COMMENT '是否提交',
- `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id',
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='$name';";
- $bo = $this->db->query($sql);
- }else{
- $fields = $this->db->getallfields(''.PREFIX.''.$tab.'');
- $str = '';
- if(!in_array('uid', $fields))$str.=",add `uid` int(11) DEFAULT '0'";
- if(!in_array('optdt', $fields))$str.=",add `optdt` datetime DEFAULT NULL COMMENT '操作时间'";
- if(!in_array('optid', $fields))$str.=",add `optid` int(11) DEFAULT '0'";
- if(!in_array('optname', $fields))$str.=",add `optname` varchar(20) DEFAULT NULL COMMENT '操作人'";
- if(!in_array('applydt', $fields))$str.=",add `applydt` date DEFAULT NULL COMMENT '申请日期'";
- if(!in_array('explain', $fields))$str.=",add `explain` varchar(500) DEFAULT NULL COMMENT '说明'";
- if(!in_array('status', $fields))$str.=",add `status` tinyint(1) DEFAULT '1' COMMENT '状态'";
- if(!in_array('isturn', $fields))$str.=",add `isturn` tinyint(1) DEFAULT '1' COMMENT '是否提交'";
- if(!in_array('comid', $fields) && !in_array('companyid', $fields))$str.=",add `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id'";
- if($str!=''){
- $sql = 'alter table `'.PREFIX.''.$tab.'` '.substr($str,1).'';
- $this->db->query($sql);
- }
- }
- }
-
- public function elementafter($table, $rows)
- {
- $moders = m('flow_set')->getone($this->mid);
- $farrs = array();
- if($this->mid>0){
- $tass = $moders['table'];
- $tasss = $moders['tables'];
- $farr = $this->db->gettablefields('[Q]'.$tass.'');
- $farrs[]= array('id'=>'','name'=>'————↓以下主表('.$tass.')的字段————');
- foreach($farr as $k=>$rs){
- $farrs[]= array('id'=>$rs['name'],'name'=>'['.$rs['name'].']'.$rs['explain'].'');
- }
- if(!isempt($tasss)){
- $tasssa = explode(',', $tasss);
- foreach($tasssa as $k=>$tasss){
- $farr = $this->db->gettablefields('[Q]'.$tasss.'');
- $farrs[]= array('id'=>'','name'=>'————↓以下第'.($k+1).'个多行子表('.$tasss.')的字段————');
- foreach($farr as $k=>$rs){
- $farrs[]= array('id'=>$rs['name'],'name'=>'['.$rs['name'].']'.$rs['explain'].'');
- }
- }
- }
- }
- return array(
- 'flowarr'=>$this->getmodearr(),
- 'moders'=>$moders,
- 'fieldsarr' => $farrs,
- 'fieldstypearr'=> $this->option->getdata('flowinputtype')
- );
- }
-
- public $mid;
- public function elementbefore($table)
- {
- $mid = (int)$this->post('mid');
- $this->mid = $mid;
- return array(
- 'where' => 'and `mid`='.$mid.'',
- 'order' => 'iszb,sort,id'
- );
- }
-
- //模块多模版
- public function modetpl_before($table)
- {
- $mid = (int)$this->post('mid');
- $this->mid = $mid;
- return array(
- 'where' => 'and `setid`='.$mid.'',
- 'order' => 'sort,id'
- );
- }
- public function modetpl_after($table, $rows)
- {
- return array(
- 'flowarr'=>$this->getmodearr(' and `istpl`=1')
- );
- }
- public function modetpledit_before($table)
- {
- $mid = (int)$this->post('mid');
- $this->mid = $mid;
- return array(
- 'where' => 'and `mid`='.$mid.' and `iszb`=0',
- 'order' => 'sort,id'
- );
- }
- public function modetpledit_after($table, $rows)
- {
- $sid = (int)$this->post('sid');
- $data = false;
- $fieldsluru = $fieldsbitian = '';
- if($sid>0){
- $data = m('flow_modetpl')->getone($sid);
- $fieldsluru = $data['fieldsluru'];
- $fieldsbitian = $data['fieldsbitian'];
- foreach($rows as $k=>$rs){
- if(!isempt($fieldsluru)){
- $islu = 0;
- if(contain(','.$fieldsluru.',',','.$rs['fields'].','))$islu=1;
- $rows[$k]['islu'] = $islu;
- }
- if(!isempt($fieldsbitian)){
- $isbt = 0;
- if(contain(','.$fieldsbitian.',',','.$rs['fields'].','))$isbt=1;
- $rows[$k]['isbt'] = $isbt;
- }
- }
- }
- return array(
- 'data' => $data,
- 'rows' => $rows,
- );
- }
- public function modetpl_savefieldsbefore($table, $cans)
- {
- $tplnum = $cans['tplnum'];
- if(c('check')->isincn($tplnum))return '编号不能包含中文';
- $id = (int)$this->post('id');
- if(m($table)->rows("`tplnum`='$tplnum' and `id`<>'$id'")>0)return '编号已经存在';
- }
- public function modetpl_savefieldsafter($table, $cans)
- {
- $mid = $cans['setid'];
- $tab = m('mode')->getmou('`table`',$mid);
- if(!isempt($tab)){
- $fields = $this->db->getallfields(''.PREFIX.''.$tab.'');
- $str = '';
- if(!in_array('mtplid', $fields))$str.=",add `mtplid` int(11) DEFAULT '0' COMMENT '对应多模版flow_modetpl.id'";
- if($str!=''){
- $sql = 'alter table `'.PREFIX.''.$tab.'` '.substr($str,1).'';
- $this->db->query($sql);
- }
- }
- }
-
- //单据操作菜单
- public function flowmenubefore($table)
- {
- $mid = (int)$this->post('mid');
- $this->mid = $mid;
- return 'and `setid`='.$mid.'';
- }
-
- public function flowmenuafter($table, $rows)
- {
-
- return array(
- 'flowarr'=>$this->getmodearr()
- );
- }
-
- //条件where
- public function flowwhereafter($table, $rows)
- {
- return array(
- 'flowarr'=> $this->getmodearr()
- );
- }
- public function flowwherebefore($table)
- {
- return array(
- 'table' => '`[Q]'.$table.'` a left join `[Q]flow_set` b on a.setid=b.id',
- 'fields'=> 'a.*,b.num as modenum,b.name as modename'
- );
- }
-
- //单据通知设置
- public function flowtodobefore($table)
- {
- $mid = (int)$this->post('mid');
- $this->mid = $mid;
- $where = '';
- if($mid>0)$where = 'and `setid`='.$mid.'';
- return array(
- 'where' => $where,
- 'table' => '`[Q]'.$table.'` a left join `[Q]flow_set` b on a.setid=b.id',
- 'fields'=> 'a.*,b.name as modename'
- );
- }
-
- public function flowtodoafter($table, $rows)
- {
- $fielslist = m('flow_element')->getrows("mid='$this->mid' and iszb=0 and islu=1",'fields,name','sort');
- foreach($fielslist as &$v){
- $v['name'] = ''.$v['fields'].'.'.$v['name'].'';
- }
-
- $courselist = m('flow_course')->getrows("setid='$this->mid' and `status`=1",'id,name','pid,sort');
- foreach($courselist as &$v1){
- $v1['name'] = ''.$v1['id'].'.'.$v1['name'].'';
- }
- $dbss = m('remind');
- foreach($rows as $k=>$rs){
- $whereid = '';
- if($rs['whereid']>'0')$whereid = $this->db->getmou('[Q]flow_where','name', $rs['whereid']);
-
- $rows[$k]['whereidstr'] = $whereid;
-
- if($rs['botask']=='1'){
- $rows[$k]['remindrs'] = $dbss->getremindrs('flow_todo', $rs['id']);
- }
- }
-
- return array(
- 'flowarr' => $this->getmodearr(),
- 'wherelist' => $this->getwherelist($this->mid),
- 'fielslist' => $fielslist,
- 'courselist' => $courselist,
- 'rows' => $rows
- );
- }
-
-
- private function getmodearr($whe='')
- {
- return m('mode')->getmodearr($whe);
- }
-
-
-
- public function inputzsAction()
- {
- $setid = $this->get('setid');
- $atype = (int)$this->get('atype','0');
- $rs = m('flow_set')->getone("`id`='$setid'");
- if(!$rs)exit('sorry!');
- $this->smartydata['rs'] = $rs;
- $atypea = array('PC端','手机端','PC端打印');
- $this->title = $rs['name'].'_'.$atypea[$atype].'展示页面设置';
- $fleftarr = m('flow_element')->getrows("`mid`='$setid' and `iszb`=0",'`fields`,`name`','`iszb`,`sort`');
- $modenum = $rs['num'];
- $fleft[]= array('base_name', '申请人',0);
- $fleft[]= array('base_deptname', '申请部门',0);
- $fleft[]= array('base_sericnum', '单号',0);
- $fleft[] = array('file_content', '相关文件',0);
- $iszb = 0;
- foreach($fleftarr as $k=>$brs){
- $fleft[]= array($brs['fields'], $brs['name'], $iszb);
- }
- if(!isempt($rs['tables'])){
- $tablea = explode(',', $rs['tables']);
- $namesa = explode(',', $rs['names']);
- $fleft[]= array('', '<font color=#ff6600>↓多行子表</font>', 0);
- foreach($tablea as $k=>$rs1){
- $fleft[]= array('subdata'.$k.'', $namesa[$k], 0);
- }
- }
- if($rs['isflow']>0){
- $fleft[]= array('', '<font color=#ff6600>↓流程审核步骤</font>', 0);
- $rows = m('flow_course')->getrows('setid='.$setid.' and `status`=1','id,name','pid,sort');
- foreach($rows as $k=>$rs){
- $fleft[]= array('course'.$rs['id'].'_all', ''.$rs['name'].'处理意见', 0);
- $fleft[]= array('course'.$rs['id'].'_name', ''.$rs['name'].'处理人', 0);
- $fleft[]= array('course'.$rs['id'].'_zt', ''.$rs['name'].'处理状态', 0);
- $fleft[]= array('course'.$rs['id'].'_dt', ''.$rs['name'].'处理时间', 0);
- $fleft[]= array('course'.$rs['id'].'_sm', ''.$rs['name'].'处理说明', 0);
- }
- }
-
- $this->smartydata['fleft'] = $fleft;
- $this->smartydata['atype'] = $atype;
- $path = ''.P.'/flow/page/view_'.$modenum.'_'.$atype.'.html';
- $bianhao = $modenum;
- if(COMPANYNUM){
- $path1 = ''.P.'/flow/page/view_'.$modenum.'_'.COMPANYNUM.'_'.$atype.'.html';
- if(file_exists($path1)){
- $path = $path1;
- $bianhao.='_'.COMPANYNUM.'';
- }
- }
-
- $content = '';
- if(file_exists($path)){
- $content = file_get_contents($path);
- }
- $this->smartydata['content'] = $content;
- $this->smartydata['bianhao'] = $bianhao;
- }
-
-
-
- public $setinputid = 0;
- public function inputAction()
- {
- $setid = (int)$this->get('setid','0');
- if($this->setinputid>0)$setid = $this->setinputid;
- $atype = $this->get('atype');
-
- $rs = m('flow_set')->getone("`id`='$setid'");
- if(!$rs)exit('sorry!');
- $rs['zibiaoshu'] = count(explode(',', (string)$rs['tables']));
- $this->smartydata['rs'] = $rs;
- $this->title = $rs['name'].'_录入页面设置';
- $fleftarr = m('flow_element')->getrows("`mid`='$setid'",'*','`iszb`,`sort`');
- $modenum = $rs['num'];
- $fleft[]= array('base_name', '申请人',0);
- $fleft[]= array('base_deptname', '申请部门',0);
- $fleft[]= array('base_sericnum', '单号',0);
- $fleft[] = array('file_content', '相关文件',0);
- $iszb = 0;
- foreach($fleftarr as $k=>$brs){
- $bt='';
- if($brs['isbt']==1)$bt='*';
- $iszbs = $brs['iszb'];
- if($iszbs>0&&$iszb != $iszbs){
- $fleft[]= array('', '<font color=#ff6600>—第'.$iszbs.'个多行子表—</font>', $iszbs);
- $fleft[]= array('xuhao', '序号', $iszbs);
- }
- $iszb = $iszbs;
- $fleft[]= array($brs['fields'], $bt.$brs['name'], $iszb);
- }
-
- $this->smartydata['fleft'] = $fleft;
- $bianhao = $modenum;
- $path = ''.P.'/flow/page/input_'.$modenum.'.html';
- if(COMPANYNUM){
- $path1 = ''.P.'/flow/page/input_'.$modenum.'_'.COMPANYNUM.'.html';
- if(file_exists($path1)){
- $bianhao.='_'.COMPANYNUM.'';
- $path = $path1;
- }
- }
- $content = '';
- if(file_exists($path)){
- $content = file_get_contents($path);
- }
- $this->smartydata['bianhao'] = $bianhao;
- $this->smartydata['content'] = $content;
- $apaths = ''.P.'/flow/input/inputjs/mode_'.$modenum.'.js';
- if(!file_exists($apaths)){
- $stra='//流程模块【'.$modenum.'.'.$rs['name'].'】下录入页面自定义js页面,初始函数
- function initbodys(){
-
- }';
- $this->rock->createtxt($apaths, $stra);
- }
-
- $apaths = ''.P.'/flow/input/mode_'.$modenum.'Action.php';
- $apath = ''.ROOT_PATH.'/'.$apaths.'';
- if(!file_exists($apath)){
- $stra = '<?php
- /**
- * 此文件是流程模块【'.$modenum.'.'.$rs['name'].'】对应控制器接口文件。
- */
- class mode_'.$modenum.'ClassAction extends inputAction{
-
- /**
- * 重写函数:保存前处理,主要用于判断是否可以保存
- * $table String 对应表名
- * $arr Array 表单参数
- * $id Int 对应表上记录Id 0添加时,大于0修改时
- * $addbo Boolean 是否添加时
- * return array(\'msg\'=>\'错误提示内容\',\'rows\'=> array()) 可返回空字符串,或者数组 rows 是可同时保存到数据库上数组
- */
- protected function savebefore($table, $arr, $id, $addbo){
-
- }
-
- /**
- * 重写函数:保存后处理,主要保存其他表数据
- * $table String 对应表名
- * $arr Array 表单参数
- * $id Int 对应表上记录Id
- * $addbo Boolean 是否添加时
- */
- protected function saveafter($table, $arr, $id, $addbo){
-
- }
- }
- ';
- $this->rock->createtxt($apaths, $stra);
-
- }
- if(!file_exists($apath))echo '<div style="background:red;color:white;padding:10px">无法创建文件:'.$apaths.',会导致录入数据无法保存,请手动创建!代码内容如下:</div><div style="background:#caeccb"><?php<br>class mode_'.$modenum.'ClassAction extends inputAction<br>{<br>}</div>';
- }
-
- private function geuolvstr($str)
- {
- $str = str_replace(array('<?php','$_POST','exec','system') ,'', $str);
- return $str;
- }
-
- private function geuolvstra($str)
- {
- $str = str_replace(array('../','.','/') ,'', $str);
- return $str;
- }
-
- public function pagesaveAjax()
- {
- $content = $this->geuolvstr($this->post('content'));
- $num = $this->geuolvstra($this->post('num'));
- if(m('flow_set')->rows("`num`='$num'")==0)return;
- $path = ''.P.'/flow/page/input_'.$num.'.html';
- if(COMPANYNUM)$path = ''.P.'/flow/page/input_'.$num.'_'.COMPANYNUM.'.html';
- $bo = $this->rock->createtxt($path, $content);
- if(!$bo){
- echo '无法写入文件:'.$path.'';
- }else{
- echo 'success';
- }
- }
-
- public function viewsaveAjax()
- {
- $content = $this->geuolvstr($this->post('content'));
- $num = $this->geuolvstra($this->post('num'));
- if(m('flow_set')->rows("`num`='$num'")==0)return;
- $atype = (int)$this->post('atype','0');
- $path = ''.P.'/flow/page/view_'.$num.'_'.$atype.'.html';
- if(COMPANYNUM){
- $path = ''.P.'/flow/page/view_'.$num.'_'.COMPANYNUM.'_'.$atype.'.html';
- }
-
- if(isempt($content)){
- @unlink($path);
- return 'success';
- }
- $bo = $this->rock->createtxt($path, $content);
- if(!$bo){
- echo '无法写入文件:'.$path.'';
- }else{
- echo 'success';
- }
- }
-
- public function getinputAjax()
- {
- $num = $this->post('num');
- $path = ''.P.'/flow/page/input_'.$num.'.html';
- $cont = '';
- if(file_exists($path)){
- $cont = file_get_contents($path);
- $cont = str_replace('*','', $cont);
- }
- echo $cont;
- }
-
-
-
- public function getsubtableAjax()
- {
- $iszb = (int)$this->post('iszb');
- $hang = (int)$this->post('hang');
- $modeid = (int)$this->post('modeid');
- $str = m('input')->getsubtable($modeid, $iszb, $hang);
- if($str=='')$this->backmsg('没有设置第'.$iszb.'个多行子表');
- $this->backmsg('','ok', $str);
- }
-
- //一键布局录入页
- public $yinruonearr = false;
- public function yinruoneAjax()
- {
-
- if($this->yinruonearr){
- $modeid = $this->yinruonearr['modeid'];
- $xgwj = (int)arrvalue($this->yinruonearr, 'xgwj');
- $base = (int)arrvalue($this->yinruonearr, 'base');
- }else{
- $modeid = (int)$this->post('modeid');
- $xgwj = (int)$this->post('xgwj');
- $base = (int)$this->post('base');
- }
-
- $mrs = m('mode')->getone($modeid);
- $rowsa = m('flow_element')->getall('mid='.$modeid.' and `iszb`=0 and `islu`=1','*','sort,id');
- $yczd = '';
- $rows = array();
- $fzuar = array();
- foreach($rowsa as $k1=>$rs1){
- if($rs1['fieldstype']=='hidden' || $rs1['fieldstype']=='fixed'){
- $yczd.='{'.$rs1['fields'].'}';
- }else{
- $rows[] = $rs1;
- $ftype = arrvalue($rs1, 'ftype');
- if(isempt($ftype))$ftype = 'defv';
- if(!isset($fzuar[$ftype]))$fzuar[$ftype] = array();
- $fzuar[$ftype][]= $rs1;
- }
- }
-
- $xichu = 0;
- $s = '';
- foreach($fzuar as $fl=>$fstra){
- $xichu++;
- if($xichu>1){
- $s.='</tbody></table>';
- }
- if($fl!='defv'){
- $s.='<br><div><b>'.$fl.'</b></div>';
- }
- $str1 = $this->yubustsin($fstra, $yczd);
- $s.=$str1;
- $yczd = '';
- }
- $tables = $mrs['tables'];
- if(!isempt($tables)){
- $tablesa = explode(',', $tables);
- $tablesn = explode(',', $mrs['names']);
- foreach($tablesa as $k=>$tab){
- $str = m('input')->getsubtable($modeid, $k+1, 1);
- $s.='<tr ><td class="ys2 zbtitle" colspan="4"><strong>'.arrvalue($tablesn, $k).'</strong></td></tr>';
- $s.='<tr><td class="ys0" colspan="4">'.$str.'</td></tr>';
- }
- }
- if($xgwj==1)$s.='<td height="34" align="right" class="ys1">^file_content^</td><td colspan="3" class="ys2"> {file_content}</td>';
- if($base==1)$s.='<tr><td height="34" align="right" class="ys1">^base_name^</td><td class="ys2" >{base_name}</td><td align="right" class="ys1" >^base_deptname^</td><td class="ys2" >{base_deptname}</td></tr>';
- $s.='</tbody></table>';
- return $s;
- }
-
-
- public function yubustsin($rows, $yczd)
- {
- $zhang = array('textarea','htmlediter','uploadfile','uploadimg','changedeptusercheck');
- $s = '<table width="100%" border="0"><tbody><tr class="autoyijianview">';
- $xuo = 0;
-
- $zlen= count($rows)-1;
- foreach($rows as $k=>$rs){
- $xuo++;
- $name = '^'.$rs['fields'].'^';
- if($rs['isbt']=='1')$name='*'.$name.'';
- if(in_array($rs['fieldstype'], $zhang) || contain($rs['attr'],'maxhang')){
- if($xuo==2)$s.='<td height="34" align="right" class="ys1"></td><td class="ys2"></td></tr><tr>';
- $s.='<td height="34" align="right" class="ys1">'.$name.'</td><td colspan="3" class="ys2">{'.$rs['fields'].'}'.$yczd.'</td>';
- if($xuo==1)$xuo=2;
- }else{
- $s.='<td height="34" width="15%" align="right" class="ys1">'.$name.'</td><td width="35%" class="ys2">{'.$rs['fields'].'}'.$yczd.'</td>';
- }
- $yczd='';
- if($xuo==2){
- $s.='</tr>';
- if($k<$zlen)$s.='<tr>';
- $xuo=0;
- }
- if($xuo==1 && $k==$zlen){
- $s.='<td height="34" align="right" class="ys1"></td><td class="ys2"></td></tr>';
- }
- }
- return $s;
- }
-
-
- public function getmodearrAjax()
- {
- $arr = $this->getmodearr();
- $this->backmsg('','ok', $arr);
- }
-
-
-
-
- public function viewshowbefore($table)
- {
- $this->modeid = (int)$this->post('modeid');
- if($this->modeid==0){
- return 'and 1=2';
- }
- $this->moders = m('flow_set')->getone($this->modeid);
- $this->isflow = $this->moders['isflow'];
- $table = $this->moders['table'];
- $where = $this->moders['where'];
- if(!isempt($where)){
- $where = $this->rock->covexec($where);
- $where = "and $where";
- }
- return array(
- 'table' => '[Q]'.$table,
- 'where' => $where
- );
- }
-
- public function viewshowafter($table, $rows)
- {
- $arr = array();
- if($rows){
- $flow = m('flow')->initflow($this->moders['num']);
- $mbil = m('flowbill');
- $mcom = m('company');
- foreach($rows as $k=>$rs){
- $zt = '';
- if(isset($rs['status']))$zt = $rs['status'];
- $narr['id'] = $rs['id'];
- $narr['ishui'] = ($zt=='5')?1:0;
- $narr['optname'] = arrvalue($rs,'optname');
- $narr['modenum'] = $this->moders['num'];
- $narr['modename'] = $this->moders['name'];
- $narr['table'] = $this->moders['table'];
- $narr['optdt'] = arrvalue($rs,'optdt');
- $nors = $flow->rsreplace($rs, 2, null, 1);
- $narr['summary'] = $this->rock->reparr($this->moders['summary'], $nors);
- $otehsr = '';
- if($flow->isflow>0){
- $billrs = $flow->billmodel->getone("`table`='$flow->mtable' and `mid`='".$rs['id']."'");
- $otehsr = arrvalue($billrs, 'nowcheckname');
- $narr['udeptname'] = arrvalue($billrs, 'udeptname');
- $narr['optname'] = arrvalue($billrs, 'uname');
- }else{
- $uid = arrvalue($rs,'uid');
- if(!$uid)$uid = arrvalue($rs,'optid');
- if($uid){
- $urs = $flow->adminmodel->getXinxi($uid);
- if($urs){
- $narr['udeptname'] = $urs['deptname'];
- $narr['optname'] = $urs['name'];
- }
- }
- }
- $narr['status'] = $flow->getstatus($rs,'',$otehsr,1);
- $narr['chushu'] = $flow->flogmodel->rows("`table`='".$flow->mtable."' and `mid`='".$rs['id']."'");
- $comid = arrvalue($rs,'comid');
- $narr['comid'] = $comid;
- if($comid){
- $cmrs = $mcom->getXinxi($rs['comid']);
- if($cmrs)$narr['comid'] = $cmrs['id'].'.'.$cmrs['name'];
- }
-
-
- $arr[] = $narr;
- }
- }
- return array('rows'=>$arr);
- }
-
- public function viewlogshowbefore($table)
- {
- $where = "and `table`='".$this->post('num')."' and `mid`='".$this->post('mid')."'";
- return array(
- 'where' => $where
- );
- }
-
- //删除单据,用户=1不需要权限判断
- public function delmodeshujuAjax()
- {
- $this->modeid = (int)$this->post('modeid');
- $mid = (int)$this->post('mid');
- $modenum = $this->post('modenum');
- if($this->modeid>0){
- $this->moders = m('flow_set')->getone($this->modeid);
- if(!$this->moders)backmsg('sorry!');
- $modenum = $this->moders['num'];
- }
- if(isempt($modenum))backmsg('操作有误');
-
- $msg = m('flow')->deletebill($modenum, $mid, '', $this->adminid!=1);
- if($msg=='ok')$msg='';
- backmsg($msg);
- }
-
- //元素保存之前判断
- public function elemensavefieldsbefore($table, $cans, $id)
- {
- $iszb = (int)$cans['iszb'];
- $fields = $cans['fields'];
- $type = $cans['fieldstype'];
- $data = $cans['data'];
- if(c('check')->isincn($fields))return '对应字段不能有汉字';
- if(c('check')->isnumber($fields))return '对应字段不能是数字';
- if($type=='selectdatafalse' || $type=='selectdatatrue'){
- if(isempt($data))return '此类型数据源必须设置如写:'.$fields.'store';
- if(contain(','.$data.',',',id,'))return '数据源不能包含,id';
- }
-
- $mid = $cans['mid'];
- $this->mmoders = m('flow_set')->getone($mid);
- $tablessa = explode(',', $this->mmoders['tables']);
- if($iszb>0){
- $tabsss = $this->rock->arrvalue($tablessa, $iszb-1);
- if(isempt($tabsss))return '模块没有设置第'.$iszb.'个多行子表';
- }
- if(m($table)->rows("`mid`='$mid' and `iszb`='$iszb' and `fields`='$fields' and `id`<>'$id'")>0){
- return '字段['.$fields.']已存在了';
- }
- }
-
- //保存字段判断,自动创建字段
- public function elemensavefields($table, $cans)
- {
- $fields = $cans['fields'];
- $name = $cans['name'];
- $mid = $cans['mid'];
- $type = $cans['fieldstype'];
- $lens = $cans['lens'];
- $dev = $cans['dev'];
- $data = $cans['data'];
- $iszb = (int)$cans['iszb'];
- $this->xiaoshu = (int)arrvalue($cans,'xiaoshu','-1');
-
- $mrs = $this->mmoders;
- $tables = $mrs['table'];
- if($iszb>0){
- $tables = '';
- $tablessa = explode(',', $mrs['tables']);
- if(isset($tablessa[$iszb-1]))$tables = $tablessa[$iszb-1];
- }
- $fiesss = substr($fields,0,5);
- if($fiesss == 'base_' || $fiesss == 'temp_')return;
- if(!isempt($tables) && $cans['islu']==1){
- $_fieldsa = $this->db->gettablefields('[Q]'.$tables.'');$allfields = array();$this->rock->debugs($_fieldsa,'fields');
- foreach($_fieldsa as $k2=>$rs2)$allfields[$rs2['name']] = $rs2;
- $this->createfields($allfields, $tables, $fields, $type, $lens, $dev, $name);
- if(substr($type,0,6)=='change' && !isempt($data)){
- if($type=='changeuser' || $type=='changedept'){
- $type='number';
- }
- $this->createfields($allfields, $tables, $data, $type, $lens, '', $name.'的ID');
- }
- }
- }
-
- //创建字段
- private function createfields($allfields, $tables, $fields, $type, $lens, $dev, $name)
- {
- if(isempt($lens))$lens='0';
- $lens = (int)$lens;
- if(!isset($allfields[$fields])){
- $str = "ALTER TABLE `[Q]".$tables."` ADD `$fields` ";
- if($type=='date' || $type=='datetime' || $type=='time'){
- $str .= ' '.$type.'';
- }else if($type=='number'){
- if($this->xiaoshu>0){
- if($lens<6)$lens = 6;
- $str .= ' decimal('.$lens.', '.$this->xiaoshu.')';
- }else if($lens>6){
- $str .= ' int('.$lens.')';
- }else{
- $str .= ' smallint(6)';
- }
- }else if($type=='checkbox'){
- $str .= ' tinyint(1)';
- }else if($type=='textarea'){
- $str .= ' varchar(2000)';
- }else{
- if($lens=='0')$lens='50';
- $str .= ' varchar('.$lens.')';
- }
- if(!isempt($dev) && !contain($dev,'{'))$str.= " DEFAULT '$dev'";
- $str.= " COMMENT '$name'";
- $this->db->query($str);
- }else{
- $farr = $allfields[$fields];
- $ustr = '';
- $len = (int)$farr['lens'];
- $xslen1 = (int)arrvalue($farr,'xslen1','0');
- $xslen2 = (int)arrvalue($farr,'xslen2','0');
-
- if($farr['type']=='varchar'){
- if($lens>$len)$ustr='varchar('.$lens.')';
- }
- if($farr['type']=='smallint' || $farr['type']=='int'){
- if($lens>6 && $lens>$len)$ustr='int('.$lens.')';
- }
-
- if($farr['type']=='decimal'){
- if($lens>$xslen1)$ustr= 'decimal('.$lens.', '.$xslen2.')';
- }
-
- if($type=='date' || $type=='datetime'){
- if($farr['type']!=$type){
- $ustr= ''.$type.'';
- }
- }
-
- if($type=='number'){
- if($lens<6)$lens = $xslen1;
- if($lens<6)$lens = 6;
- if($this->xiaoshu>0){
- $ustr= 'decimal('.$lens.', '.$this->xiaoshu.')';
- }
- }
-
- if($ustr!=''){
- if(!isempt($dev) && !contain($dev,'{'))$ustr.= " DEFAULT '$dev'";
- $ustr= "ALTER TABLE `[Q]".$tables."` MODIFY column `$fields` ".$ustr." COMMENT '$name'";
- $this->db->query($ustr);
- }
- }
- }
-
-
-
-
-
-
- public function reloadpipeiAjax()
- {
- $mid = (int)$this->post('mid');
- $whe = '';
- if($mid>0)$whe=' and id='.$mid.'';
- echo m('flow')->repipei($whe);
- }
-
- public function setwherelistafter($table, $rows)
- {
- $dbs = m('flow_where');
- foreach($rows as $k=>$rs){
- $shu = $dbs->rows("`setid`='".$rs['id']."'");
- if($shu>0)$rows[$k]['shu'] = $shu;
- }
- return array('rows'=>$rows);
- }
-
- public function setcourselistafter($table, $rows)
- {
- $dbs = m('flow_course');
- foreach($rows as $k=>$rs){
- $shu = $dbs->rows("`setid`='".$rs['id']."'");
- if($shu>0)$rows[$k]['shu'] = $shu;
- }
- return array('rows'=>$rows);
- }
-
- public function setcourselistbefore($table)
- {
- $where = '';
- $key = $this->post('key');
- if(!isempt($key)){
- $where = "and (`type`='$key' or `name` like '%$key%' or `table` like '$key%' or `num` like '$key%' or `sericnum` like '$key%')";
- }
- return $where;
- }
-
-
- //删除模块
- public function delmodeAjax()
- {
- $id = (int)$this->post('id','0');
- return $this->delmode($id, true);
- }
-
- private function delmode($id, $dm=false)
- {
- if($this->getsession('isadmin')!='1')return '非管理员不能操作';
- $mrs = m('flow_set')->getone($id);
- if(!$mrs)return '模块不存在';
- $num = $mrs['num'];
- if($num!='demo' && $mrs['type']=='系统')return '系统类型模块不能删除清空';
-
- /*
- //防止误删2024-09-11已弃用
- $flow = m('flow')->initflow($num);
- $table = $mrs['table'];
- $where = $mrs['where'];
- if(!isempt($where)){
- $where = $this->rock->covexec($where);
- $where = "and $where";
- }else{
- $where = '';
- }
-
- $rows = m($table)->getrows('1=1 '.$where.'');
- foreach($rows as $k=>$rs){
- $ssid = $rs['id'];
- $flow->loaddata($ssid, false);
- $flow->deletebill('清空模块数据', false);
- }
- */
-
- $name = $mrs['name'];
- if($dm){
- m('flow_set')->delete("`id`='$id'");
- m('flow_course')->delete("`setid`='$id'");
- m('flow_element')->delete("`mid`='$id'");
- m('flow_extent')->delete("`modeid`='$id'");
- m('flow_where')->delete("`setid`='$id'");
- m('flow_menu')->delete("`setid`='$id'");
- m('flow_todo')->delete("`setid`='$id'");
- m('flow_todos')->delete("`modenum`='$num'");
-
- m('log')->addlog('模块','删除模块['.$name.']');
- }else{
- m('log')->addlog('模块','清空模块['.$name.']的数据');
- }
-
- //$this->db->query("alter table `[Q]$table` AUTO_INCREMENT=1");
- return 'ok';
- }
-
- //清空模块上数据
- public function clearallmodeAjax()
- {
- $id = (int)$this->post('id','0');
- return $this->delmode($id, false);
- }
-
- //刷新序号
- public function rexuhaoAjax()
- {
- $mid = (int)$this->get('modeid');
- $db = m('flow_element');
-
- $rows = $db->getall('mid='.$mid.' and iszb=0','id','sort asc,id asc');
- foreach($rows as $k=>$rs)$db->update('sort='.$k.'',$rs['id']);
-
- $rows = $db->getall('mid='.$mid.' and iszb=1','id','sort asc,id asc');
- foreach($rows as $k=>$rs)$db->update('sort='.$k.'',$rs['id']);
-
- $rows = $db->getall('mid='.$mid.' and iszb=2','id','sort asc,id asc');
- foreach($rows as $k=>$rs)$db->update('sort='.$k.'',$rs['id']);
-
- $rows = $db->getall('mid='.$mid.' and iszb=3','id','sort asc,id asc');
- foreach($rows as $k=>$rs)$db->update('sort='.$k.'',$rs['id']);
- }
-
- public function flowcourselistbefore($rows)
- {
- return array('order'=>'pid,sort');
- }
-
- //流程步骤显示
- public function flowcourselistafter($table, $rows)
- {
- $arr = array();$pid = -1;$maxpid = -1;
- foreach($rows as $k=>$rs){
- if($rs['pid'] != $pid){
- $recename = $this->rock->arrvalue($rs, 'recename');
- if(isempt($recename))$recename = '全体人员';
- $arr[] = array(
- 'name' => '流程'.($rs['pid']+1).',适用:'.$recename.'',
- 'level' => 1,
- 'stotal'=> 1,
- 'status'=> 1,
- 'iszf' => 0,
- 'id' => $rs['id'],
- 'pid' => $rs['pid'],
- 'sort' => 0,
- 'recename' => '',
- );
- }
- $rs['level'] = 2;
- $rs['stotal'] = 0;
- $arr[] = $rs;
- $pid = $rs['pid'];
- $maxpid = $pid;
- }
- return array(
- 'rows' => $arr,
- 'maxpid' => $maxpid+1,
- );
- }
-
-
-
-
-
-
- //生成列表页面
- public function changeliebAjax()
- {
- $modeid = (int)$this->post('modeid');
- $path = m('mode')->createlistpage($modeid);
- if($path=='')$path = '无法生成,可能没权限写入'.P.'/flow/page目录';
- echo $path;
- }
-
- //生成所有
- public function allcreateAjax()
- {
- $dbs = m('mode');
- $rows = $dbs->getall("`status`=1");
- $oi = 0;
- $msg = '';
- foreach($rows as $k=>$rs){
- $path = $dbs->createlistpage($rs,1);
- if($path=='none')continue;
- if($path==''){
- if($path=='')$msg = '无法生成,可能没权限写入'.P.'/flow/page目录';
- break;
- }else{
- $oi++;
- }
- }
- if($msg=='')$msg='已生成'.$oi.'个模块,可到'.P.'/flow/page下查看';
- echo $msg;
- }
-
- public function savecolunmsAjax()
- {
- $num = $this->post('num');
- $modeid = (int)$this->post('modeid');
- $str = $this->post('str');
- if($str){
- $this->option->setval($num.'@'.(-1*$modeid-1000), $str,'模块列定义');
- }else{
- $this->option->delete("`num`='$num'");
- }
- //$path = m('mode')->createlistpage($modeid);
- $msg = 'ok';
- //if($path=='')$msg='已保存,但无法从新生成列表页,自定义列将不能生效';
- echo $msg;
- }
-
-
- //选择人员组
- public function getcnameAjax()
- {
- $arr = array();
- $rows = m('flow_cname')->getall("`pid`=0 and `num` is not null",'num,name','`sort`');
- foreach($rows as $k=>$rs)$arr[] = array('name'=>$rs['name'],'value'=>$rs['num']);
- return $arr;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- //图形的流程管理
- public function courseflowinitAjax()
- {
- $setid = (int)$this->get('setid','0');
-
- return m('flowcourse')->getCoursedata($setid);
- }
-
- public function courseflowdelAjax()
- {
- $id = (int)$this->get('id','0');
-
- m('flowcourse')->delete($id);
- }
- public function coursesavebefore($table, $arr)
- {
- $mid = (int)arrvalue($arr,'mid','0');
- $setid = (int)arrvalue($arr,'setid','0');
- $nid = (int)arrvalue($arr,'nid','0');
- if($mid>0 && m($table)->rows("`setid`='$setid' and `id`='$mid'")==0)return '上级步骤ID['.$mid.']不存在';
- if($nid>0 && m($table)->rows("`setid`='$setid' and `id`='$nid'")==0)return '下级步骤ID['.$nid.']不存在';
-
- $str = m('where')->checkwhere($setid, $arr['where']);
- if($str)return $str;
- }
-
- public function getfieldsAjax()
- {
- $setid = (int)$this->get('setid','0');
- $rows = m('flow_element')->getrows('`mid`='.$setid.' and `iszb`=0','name,fields,data,fieldstype','`sort`');
- $arr = array();
- foreach($rows as $k=>$rs){
- //$arr[] = array(
- // 'name' => $rs['name'].'('.$rs['fields'].')',
- // 'value' => $rs['fields'],
- //);
- $fieldstype = $rs['fieldstype'];
- if(in_array($fieldstype, array('changeuser','changeusercheck')) && !isempt($rs['data'])){
- $arr[] = array(
- 'name' => $rs['name'].'('.$rs['data'].')',
- 'value' => $rs['data'],
- );
- }
- }
- return $arr;
- }
-
- public function savebeforecname($table, $arr, $id)
- {
- $num = $arr['num'];
- $to = m('flowcname')->rows("`id`<>'$id' and `num`='$num'");
- if($to>0)return '编号['.$num.']已存在';
- }
-
- /**
- * 复制模块
- */
- public function copymodeAjax()
- {
- $id = (int)$this->post('id','0');
- $bhnu = strtolower(trim($this->post('name')));
- if(isempt($bhnu))return '新模块编号不能为空';
- if(is_numeric($bhnu))return '模块编号不能用数字';
- if(strlen($bhnu)<4)return '编号至少要4位';
- if(c('check')->isincn($bhnu))return '编号不能包含中文';
-
- $dbs = m('mode');
- if($dbs->rows("`num`='$bhnu'")>0)return '模块编号['.$bhnu.']已存在';
- $mrs = $dbs->getone($id);
- if(!$mrs)return '模块不存在';
- $ars = $mrs;
- $name = $mrs['name'].'复制';
- $biaom = $bhnu;
- $obha = $mrs['num'];
- unset($ars['id']);
- $ars['name'] = $name;
- $ars['num'] = $bhnu;
- $ars['table']= $biaom;
- $tablea[] = $mrs['table'];
- $tables = '';
- if(!isempt($ars['tables'])){
- $staba = explode(',', $ars['tables']);
- foreach($staba as $kz=>$zb1){
- $tables.=','.$biaom.'zb'.($kz+1).'';
- if(!in_array($zb1, $tablea))$tablea[]=$zb1;
- }
- $tables = substr($tables, 1);
- }
- $ars['tables'] = $tables;
- $modeid = $dbs->insert($ars);
-
- //复制表
- foreach($tablea as $kz=>$tabs){
- $sqla = $this->db->getall('show create table `[Q]'.$tabs.'`');
- $createsql = $sqla[0]['Create Table'];
- $biaom1 = ''.PREFIX.''.$biaom.'';
- if($kz>0)$biaom1 = ''.PREFIX.''.$biaom.'zb'.$kz.'';
- $createsql = str_replace('`'.PREFIX.''.$tabs.'`','`'.$biaom1.'`',$createsql);
- $this->db->query($createsql);
- $this->db->query('alter table `'.$biaom1.'` AUTO_INCREMENT=1');
- }
- //复制表单元素
- $db1 = m('flow_element');
- $rows = $db1->getall('mid='.$id.'');
- foreach($rows as $k1=>$rs1){
- $rs2 = $rs1;
- unset($rs2['id']);
- $rs2['mid'] = $modeid;
- $db1->insert($rs2);
- }
- //复制相关布局文件
- $hurs = $this->getfiles();
-
- foreach($hurs as $k=>$file){
- $from = str_replace('{bh}',$obha,$file);
- $to = str_replace('{bh}',$bhnu,$file);
- if(file_exists($from)){
- if($k<=1){
- $fstr = file_get_contents($from);
- if($k==0)$fstr = str_replace('flow_'.$obha.'ClassModel','flow_'.$bhnu.'ClassModel',$fstr);
- if($k==1)$fstr = str_replace('mode_'.$obha.'ClassAction','mode_'.$bhnu.'ClassAction',$fstr);
- $this->rock->createtxt($to, $fstr);
- }else{
- @copy($from, $to);
- }
- }
- }
-
- echo 'ok';
- }
-
- public function getfiles()
- {
- $hurs[] = ''.P.'/model/flow/{bh}Model.php'; //模块接口文件
- $hurs[] = ''.P.'/flow/input/mode_{bh}Action.php'; //模块控制器
- $hurs[] = ''.P.'/flow/input/inputjs/mode_{bh}.js'; //模块录入js文件
- $hurs[] = ''.P.'/flow/page/input_{bh}.html'; //PC录入模版
- $hurs[] = ''.P.'/flow/page/view_{bh}_0.html'; //PC展示模版
- $hurs[] = ''.P.'/flow/page/view_{bh}_1.html'; //手机展示模版
- $hurs[] = ''.P.'/flow/page/view_{bh}_2.html'; //打印布局
- $hurs[] = ''.P.'/flow/page/viewpage_{bh}.html'; //子模版展示
- $hurs[] = ''.P.'/flow/page/viewpage_{bh}_0.html';//子模版PC展示
- $hurs[] = ''.P.'/flow/page/viewpage_{bh}_1.html';//子模版手机展示
- return $hurs;
- }
-
-
- public function loadmodeinfoAjax()
- {
- if(getconfig('systype')=='demo')return returnerror('演示不要操作');
- if(!getconfig('rockinzip'))return returnerror('系统未开启此功能');
- $sid = $this->get('sid');
- $rows = m('flow_set')->getall('`id` in('.$sid.')','*','sort asc');
- $ids = '';
- $mname= '';
- $table= '';
- $file = '';
- $hurs = $this->getfiles();
- $hurs[] = ''.P.'/flow/page/rock_page_{bh}.php';
- $hurs[] = ''.P.'/flow/page/rock_page_{bh}_script.php';
- foreach($rows as $k=>$rs){
- $ids.=','.$rs['id'].'';
- $table.=','.$rs['table'].'';
- if(!isempt($rs['tables']))$table.=','.$rs['tables'].'';
- $mname.=''.$rs['name'].'('.$rs['num'].') ';
-
- foreach($hurs as $k=>$wj){
- $wjs = str_replace('{bh}',$rs['num'],$wj);
- if(file_exists($wjs))$file.=','.$wjs.'';
- }
- }
- if($ids)$ids = substr($ids,1);
- if($table)$table = substr($table,1);
- if($file)$file = substr($file,1);
- $barr['mode'] = $ids;
- $barr['mname'] = $mname;
- $barr['table'] = $table;
- $barr['file'] = $file;
-
- return returnsuccess($barr);
- }
-
- public function loadoteinAjax()
- {
- if(getconfig('systype')=='demo')return returnerror('演示不要操作');
- if(!getconfig('rockinzip'))return returnerror('系统未开启此功能');
- $lx = $this->post('lx');
- $sid = $this->post('sid');
- $barr = array();
- $stsa = explode(',', $sid);
- if($lx==1){
- $alltabls = $this->db->getalltable();
- foreach($stsa as $tab){
- if(!in_array(''.PREFIX.$tab.'', $alltabls))return returnerror(''.$tab.'表不存在');
- }
- $barr['table'] = $sid;
- }
- if($lx==2){
- foreach($stsa as $tab)if(!file_exists($tab))return returnerror(''.$tab.'文件不存在');
- $barr['file'] = $sid;
- }
-
- if($lx==3){
- $rows = m('menu')->getall('`id` in('.$sid.') and `status`=1');
- $ids = '';
- $mname= '';
- foreach($rows as $k=>$rs){
- $ids.=','.$rs['id'].'';
- $mname.=''.$rs['name'].'('.$rs['url'].') ';
- }
- if($ids){
- $barr['menu'] = substr($ids,1);
- $barr['menu_str'] = $mname;
- }
- }
-
- if($lx==4){
- $rows = m('im_group')->getall('`id` in('.$sid.') and `valid`=1 and `type`=2');
- $ids = '';
- $mname= '';
- $fstr = '';
- foreach($rows as $k=>$rs){
- $ids.=','.$rs['id'].'';
- $mname.='<img src="'.$rs['face'].'" align="absmiddle" width="20px" height="20px">'.$rs['name'].' ';
- $fstr.=','.$rs['face'].'';
-
- $fled = 'webmain/we/ying/yingyong/'.$rs['num'].'.html';
- if(file_exists($fled))$fstr.=','.$fled.'';
- $fled = 'webmain/we/ying/yingyong/'.$rs['num'].'.js';
- if(file_exists($fled))$fstr.=','.$fled.'';
- $fled = 'webmain/we/ying/yingyong/ying_'.$rs['num'].'Class.php';
- if(file_exists($fled))$fstr.=','.$fled.'';
- $fled = 'webmain/model/agent/'.$rs['num'].'Model.php';
- if(file_exists($fled))$fstr.=','.$fled.'';
- }
- if($ids){
- $barr['agent'] = substr($ids,1);
- $barr['agent_str'] = $mname;
- }
- if($fstr)$barr['file'] = substr($fstr,1);
- }
-
- return returnsuccess($barr);
- }
-
- public function createinstseAjax()
- {
- if(!class_exists('ZipArchive'))return returnerror('没有zip扩展无法使用');
- if(getconfig('systype')=='demo')return returnerror('演示不要操作');
- if(!getconfig('rockinzip'))return returnerror('系统未开启此功能');
- $name = $this->post('name');
- if(!$name)$name=TITLE.'_生成包';
- $signstr = '';
- $str = "<?php
- //安装包的配置文件
- return array(
- 'name' => '$name', //名称
- 'ver' => '".$this->post('ver')."', //版本
- 'minver'=>'".VERSION."',
- 'zuozhe' => '".$this->post('zuozhe')."', //作者
- 'explain' => '".$this->post('explain')."', //说明
- 'updatedt'=> '$this->now', //时间
- 'signstr' => '$signstr', //这个是签名
- );";
- $path = ''.UPDIR.'/logs/xhazbao_'.time().'';
- $this->rock->createtxt(''.$path.'/installconfig/xinhuoa_config.php', $str);
-
- //复制文件
- $file = $this->post('file');
- if($file){
- $filea = explode(',', $file);
- foreach($filea as $fid1){
- if(file_exists($fid1)){
- $this->rock->createdir($path.'/'.$fid1);
- copy(ROOT_PATH.'/'.$fid1, ROOT_PATH.'/'.$path.'/'.$fid1);
- }
- }
- }
-
- $data = array();
- $modeid = $this->post('mode');
- $menuid = $this->post('menu');
- $tabless = $this->post('table');
- $agentid = $this->post('agent');
- if($menuid){
- $rows = $this->db->getall("select * from `[Q]menu` where id in($menuid)");
- $data['menu'] = $this->shangxiajich($rows,'pid');
- }
-
- if($modeid){
- //创建模块文件
- $mode = $this->db->getall("select * from `[Q]flow_set` where `id` in($modeid)");
- $cdata= array();
- foreach($mode as $k=>$rs){
- $id = $rs['id'];
-
- //元素
- $flow_element = $this->db->getall("select * from `[Q]flow_element` where mid='$id'");
-
-
- //权限
- $flow_extent = $this->db->getall("select * from `[Q]flow_extent` where modeid='$id'");
-
-
- //单据操作菜单
- $flow_menu = $this->db->getall("select * from `[Q]flow_menu` where setid='$id'");
-
-
- //模块条件
- $flow_where = $this->db->getall("select * from `[Q]flow_where` where setid='$id'");
-
-
- //审核步骤,有上下级关系
- $flow_courses = $this->db->getall("select * from `[Q]flow_course` where setid='$id'");
- $flow_course = $this->shangxiajich($flow_courses,'mid');
-
-
- //单据通知设置
- $flow_todo = $this->db->getall("select * from `[Q]flow_todo` where setid='$id'");
-
- //unset($rs['id']);
- if($rs['isflow']>2)$rs['isflow']='1';
- $cdata[$rs['num']] = array(
- 'flow_set' => $rs,
- 'flow_element' => $flow_element,
- 'flow_extent' => $flow_extent,
- 'flow_menu' => $flow_menu,
- 'flow_where' => $flow_where,
- 'flow_course' => $flow_course,
- 'flow_todo' => $flow_todo,
- );
- }
-
- $data['mode'] = $cdata;
- }
-
- //应用的数据
- if($agentid){
- $yyrows = $this->db->getall("select * from `[Q]im_group` where valid=1 and type=2 and id in($agentid)");
- $yydata = array();
- foreach($yyrows as $k=>$rs){
- $menu = $this->db->getall("select * from `[Q]im_menu` where mid='".$rs['id']."'");
- $yydata[] = array(
- 'data' => $rs,
- 'menu' => $this->shangxiajich($menu,'pid', 'menusub')
- );
- }
- $data['yydata']= $yydata;
- }
-
- if($data){
- $this->rock->createtxt($path.'/installconfig/xinhuoa_data.json', json_encode($data));
- }
-
- //数据库
- if($tabless){
- $data = array();
- $yaotable = explode(',', $tabless);
- foreach($yaotable as $tabs){
- $fields = $this->db->gettablefields(PREFIX.$tabs);
- $shwdat = array(
- 'fields' => $fields,
- );
-
- $sqla = $this->db->getall('show create table `'.PREFIX.$tabs.'`');
- $createsql = $sqla[0]['Create Table'];
- $crse = explode('ENGINE', $createsql);
- $createsql = $crse[0].'ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8';
- $shwdat['createsql'] = str_replace('`'.PREFIX.$tabs.'`','`[Q]'.$tabs.'`', $createsql);
-
- $data[$tabs] = $shwdat;
- }
- if($data)$this->rock->createtxt($path.'/installconfig/xinhuoa_mysql.json', json_encode($data));
- }
-
-
- $topath = UPDIR.'/logs/xinhuoa_install_'.time().'.zip';
- $this->rock->createtxt($topath, '');
- c('zip')->packzip($path, $topath);
-
- return returnsuccess('生成成功,点我<a href="'.$topath.'">下载</a>。');
- }
-
- //上下级处理
- public function shangxiajich($rows, $fid, $ds='children')
- {
- $this->rsxiada = array();
- $sarrr = array();
- foreach($rows as $k=>$rs){
- $children = $this->shangxiajichs($rows, $fid, $rs['id']);
- if($children)$rs[$ds] = $children;
- $sarrr[]= $rs;
- }
- $barr = array();
- foreach($sarrr as $k=>$rs){
- if(!isset($this->rsxiada[$rs['id']]))$barr[] = $rs;
- }
- return $barr;
- }
- public function shangxiajichs($rows, $fid, $pid)
- {
- $arr = array();
- foreach($rows as $k=>$rs){
- if($rs[$fid]==$pid){
- $this->rsxiada[$rs['id']] = $rs['id'];
- $children = $this->shangxiajichs($rows, $fid, $rs['id']);
- if($children)$rs['children'] = $children;
- $arr[] = $rs;
- }
- }
- return $arr;
- }
-
- public function opentixingAjax()
- {
- $fields = $this->get('fields');
- if(c('check')->onlynumber($fields))return '错误';
- $value = (int)$this->get('value');
- m('flow_set')->update("`$fields`='$value'", 'id>0');
- return '处理成功';
- }
- }
|