MainController.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: ellisran
  5. * Date: 2016/11/17
  6. * Time: 11:48
  7. */
  8. class MainController extends DooController {
  9. public $data;
  10. function __construct() {
  11. $this->data['rootUrl'] = Doo::conf()->APP_URL;
  12. include ('./protected/controller/BaseController.php');
  13. $this->base = new BaseController ();
  14. $userinfo = $this->base->admin_init();
  15. $this->data['uid'] = $userinfo['id'];
  16. $this->data['username'] = $userinfo['username'];
  17. $this->data['currpage'] = 'report';
  18. }
  19. public function fc_exit() {
  20. session_destroy();
  21. setcookie ( "jlzf_main", "", time () + 3600 * 12, "/", COOKIE_WEB_SITE );
  22. return '/';
  23. }
  24. //报表管理
  25. public function ReportList(){
  26. Doo::loadModel('report');
  27. $report = new Report();
  28. Doo::loadModel('category');
  29. $category = new Category();
  30. Doo::loadModel('item');
  31. $item = new Item();
  32. $pagesql = '';
  33. $sql = '';
  34. $sortsql = '';
  35. if(isset($this->params['area']) && is_numeric($this->params['area'])){
  36. $pagesql .= '/area/'.$this->params['area'];
  37. $sql .= ' AND areacate='.$this->params['area'];
  38. $this->data['area'] = $this->params['area'];
  39. }
  40. if(isset($this->params['sort'])){
  41. $pagesql .= '/sort/'.$this->params['sort'];
  42. if($this->params['sort'] == 'report'){
  43. $sortsql = 'report';
  44. }
  45. $this->data['sort'] = $this->params['sort'];
  46. }
  47. if(isset($this->params['status']) && $this->params['status'] == 1){
  48. $this->data['dingzhi'] = true;
  49. $itemlist = $item->getAllMsg();
  50. $this->data['itemlist'] = $itemlist;
  51. $this->data['itemid'] = 0;
  52. if(isset($this->params['itemid']) && $this->params['itemid'] != 0){
  53. $this->data['item'] = $item->getRowbyid($this->params['itemid']);
  54. $this->data['itemid'] = $this->params['itemid'];
  55. $totalArchive = $report->count(array('where' => 'itemid=0', 'asArray' => TRUE));
  56. $pager = new DooPager(Doo::conf()->APP_URL . "reportlist/1/item/".$this->params['itemid'].$pagesql."/page", $totalArchive, 15, 10);
  57. if (isset($this->params['pindex'])){
  58. $this->data['pindex'] = $this->params['pindex'];
  59. $pager->paginate(intval($this->params['pindex']));
  60. } else
  61. $pager->paginate(1);
  62. if ($pager->limit != ' -15,15')
  63. $this->data['reportlist'] = $report->getitemRowbylimit($pager->limit,$this->params['itemid'],$sortsql);
  64. }else{
  65. $totalArchive = $report->count(array('where' => 'itemid!=0', 'asArray' => TRUE));
  66. $pager = new DooPager(Doo::conf()->APP_URL . "reportlist/1".$pagesql."/page", $totalArchive, 15, 10);
  67. if (isset($this->params['pindex'])){
  68. $this->data['pindex'] = $this->params['pindex'];
  69. $pager->paginate(intval($this->params['pindex']));
  70. } else
  71. $pager->paginate(1);
  72. if ($pager->limit != ' -15,15')
  73. $this->data['reportlist'] = $report->getAllitemRowbylimit($pager->limit,$sortsql);
  74. }
  75. }else{
  76. $this->data['catelist'] = $category->getAlllist();
  77. $cateparentlist = $category->getparentlist();
  78. $this->data['cateparentlist'] = $cateparentlist;
  79. $this->data['cateid'] = '';
  80. if(isset($this->params['cate']) && $this->params['cate'] != 0){
  81. $this->data['cateid'] = $this->params['cate'];
  82. $totalArchive = $report->count(array('where' => 'itemid=0 and (cateid='.$this->params['cate'].' or parentid='.$this->params['cate'].')'.$sql, 'asArray' => TRUE));
  83. $pager = new DooPager(Doo::conf()->APP_URL . "reportlist/cate/".$this->params['cate'].$pagesql."page", $totalArchive, 15, 10);
  84. if (isset($this->params['pindex'])){
  85. $this->data['pindex'] = $this->params['pindex'];
  86. $pager->paginate(intval($this->params['pindex']));
  87. } else
  88. $pager->paginate(1);
  89. if ($pager->limit != ' -15,15')
  90. $this->data['reportlist'] = $report->getcateRowbylimit($pager->limit,$this->params['cate'],$sql,$sortsql);
  91. }else{
  92. $totalArchive = $report->count(array('where' => 'itemid=0'.$sql, 'asArray' => TRUE));
  93. $pager = new DooPager(Doo::conf()->APP_URL . "reportlist".$pagesql."/page", $totalArchive, 15, 10);
  94. if (isset($this->params['pindex'])){
  95. $this->data['pindex'] = $this->params['pindex'];
  96. $pager->paginate(intval($this->params['pindex']));
  97. } else
  98. $pager->paginate(1);
  99. if ($pager->limit != ' -15,15')
  100. $this->data['reportlist'] = $report->getitemRowbylimit($pager->limit,0,$sortsql,$sql);
  101. }
  102. }
  103. if(isset($this->data['reportlist'])) {
  104. foreach ($this->data['reportlist'] as $k => $v) {
  105. Doo::loadModel('version');
  106. $version = new Version();
  107. $versionnum = $version->count(array('where' => 'status!=0 and reportid='.$v['reportid'], 'asArray' => TRUE));
  108. $this->data['reportlist'][$k]['versionnum'] = $versionnum;
  109. Doo::loadModel('category');
  110. $category2 = new Category();
  111. if($v['parentid'] != 0){
  112. $catename = $category2->getnamebyid($v['parentid']).'/'.$category2->getnamebyid($v['cateid']);
  113. }else{
  114. $catename = $category2->getnamebyid($v['cateid']);
  115. }
  116. $this->data['reportlist'][$k]['catename'] = $catename;
  117. $this->data['reportlist'][$k]['edittime'] = $versionnum != 0 ? date('YmdHis',$v['edittime']) : '';
  118. if($v['itemid'] != 0){
  119. $this->data['reportlist'][$k]['itemname'] = $item->getnamebyid($v['itemid']);
  120. }
  121. }
  122. }
  123. $this->data['pager'] = $pager->output;
  124. $this->render ( "form-list", $this->data, TRUE);
  125. }
  126. public function AddReport(){
  127. if(isset($this->params['status']) && $this->params['status'] == 1){
  128. //定制添加报表
  129. $this->data['dingzhi'] = true;
  130. Doo::loadModel('item');
  131. $item = new Item();
  132. $itemlist = $item->getAllMsg();
  133. $this->data['itemlist'] = $itemlist;
  134. if(isset($this->params['itemid'])){
  135. $this->data['itemid'] = $this->params['itemid'];
  136. //通用添加报表
  137. Doo::loadModel('category');
  138. $category = new Category();
  139. $cateparentlist = $category->getparentlist($this->params['itemid']);
  140. $this->data['cateparentlist'] = $cateparentlist;
  141. }else{
  142. $this->data['itemid'] = '';
  143. }
  144. }else{
  145. //通用添加报表
  146. Doo::loadModel('category');
  147. $category = new Category();
  148. $cateparentlist = $category->getparentlist();
  149. $this->data['cateparentlist'] = $cateparentlist;
  150. }
  151. $this->render ( "add-form", $this->data, TRUE);
  152. }
  153. public function SetReport(){
  154. if(isset($_POST['itemselect']) && $_POST['itemselect'] == 0){
  155. exit('项目不能为空');
  156. }
  157. if(!isset($_POST['parentselect']) || $_POST['parentselect'] == 0){
  158. exit('类别不能为空');
  159. }
  160. if(!isset($_POST['reportname']) || empty($_POST['reportname'])){
  161. exit('报表名不能为空');
  162. }
  163. Doo::loadModel('report');
  164. $report = new Report();
  165. if(isset($_POST['reportid'])){
  166. $report->reportid = $_POST['reportid'];
  167. $report->itemid = isset($_POST['itemselect']) ? $_POST['itemselect'] : 0;
  168. $report->parentid = isset($_POST['cateselect']) ? $_POST['parentselect'] : 0;
  169. $report->cateid = isset($_POST['cateselect']) ? $_POST['cateselect'] : $_POST['parentselect'];
  170. $report->reportname = $_POST['reportname'];
  171. $report->areacate = isset($_POST['areaselect']) ? $_POST['areaselect'] : 3;
  172. $report->update();
  173. //路由返回
  174. $returnurl = '/reportlist';
  175. if(isset($_POST['itemid'])) {
  176. $returnurl .= '/1';
  177. }
  178. if(isset($_POST['itemid']) && $_POST['itemid'] != 0){
  179. $returnurl .= '/item/'.$_POST['itemid'];
  180. }
  181. if(isset($_POST['cateid']) && !empty($_POST['cateid'])){
  182. $returnurl .= '/cate/'.$_POST['cateid'];
  183. }
  184. if(isset($_POST['area']) && is_numeric($_POST['area'])){
  185. $returnurl .= '/area/'.$_POST['area'];
  186. }
  187. if(isset($_POST['sort']) && $_POST['sort'] == 'report'){
  188. $returnurl .= '/sort/report';
  189. }
  190. if(isset($_POST['pindex'])){
  191. $returnurl .= '/page/'.$_POST['pindex'];
  192. }
  193. return $returnurl;
  194. }else{
  195. $reports = array(
  196. 'reportname' => $_POST['reportname'],
  197. 'areacate' => isset($_POST['areaselect']) ? $_POST['areaselect'] : 3,
  198. 'itemid' => isset($_POST['itemselect']) ? $_POST['itemselect'] : 0,
  199. 'parentid' => isset($_POST['cateselect']) ? $_POST['parentselect'] : 0,
  200. 'cateid' => isset($_POST['cateselect']) ? $_POST['cateselect'] : $_POST['parentselect'],
  201. 'userid' => $this->data['uid'],
  202. 'edittime' => time()
  203. );
  204. $reportid = $report->_insertAttributes('report', $reports);
  205. return '/versionlist/'.$reportid;
  206. }
  207. }
  208. public function DelReport(){
  209. $reportId = $this->params['reportid'];
  210. Doo::loadModel('report');
  211. $report = new Report();
  212. $report->reportid = $reportId;
  213. $report->delete();
  214. Doo::loadModel('version');
  215. $version = new Version();
  216. $version->reportid = $reportId;
  217. $version->delete();
  218. Doo::loadModel('log');
  219. $log = new Log();
  220. $log->reportid = $reportId;
  221. $log->delete();
  222. include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
  223. $this->IoHandler = new IoHandler();
  224. //调用定义物理路径
  225. $t=DOO::conf()->SITE_PATH."jlbb/".$reportId;
  226. $this->IoHandler->RemoveDir($t);
  227. //路由返回
  228. $returnurl = '/reportlist';
  229. if(isset($_POST['itemid'])) {
  230. $returnurl .= '/1';
  231. }
  232. if(isset($_POST['itemid']) && $_POST['itemid'] != 0){
  233. $returnurl .= '/item/'.$_POST['itemid'];
  234. }
  235. if(isset($_POST['cateid']) && !empty($_POST['cateid'])){
  236. $returnurl .= '/cate/'.$_POST['cateid'];
  237. }
  238. if(isset($_POST['area']) && is_numeric($_POST['area'])){
  239. $returnurl .= '/area/'.$_POST['area'];
  240. }
  241. if(isset($_POST['sort']) && $_POST['sort'] == 'report'){
  242. $returnurl .= '/sort/report';
  243. }
  244. if(isset($_POST['pindex'])){
  245. $returnurl .= '/page/'.$_POST['pindex'];
  246. }
  247. return $returnurl;
  248. }
  249. //版本管理
  250. public function VersionList(){
  251. if(isset($this->params['reportid'])){
  252. Doo::loadModel('version');
  253. $version = new Version();
  254. $versionlist = $version->getRowbyreport($this->params['reportid']);
  255. $this->data['versionlist'] = $versionlist;
  256. $this->data['reportid'] = $this->params['reportid'];
  257. $this->render('formver-list', $this->data, TRUE);die;
  258. }
  259. return '/reportlist';
  260. }
  261. public function AddVersion(){
  262. if(isset($this->params['reportid'])){
  263. echo "生成版本中,请稍后...";
  264. Doo::loadModel('report');
  265. $report = new Report();
  266. $reportmsg = $report->getRowbyid($this->params['reportid']);
  267. Doo::loadModel('item');
  268. $item = new Item();
  269. if($reportmsg['itemid'] != 0){
  270. $reportcate = 1;
  271. $itemname = $item->getnamebyid($reportmsg['itemid']);
  272. }else{
  273. $reportcate = 0;
  274. $itemname = '';
  275. }
  276. Doo::loadModel('category');
  277. $category = new Category();
  278. if($reportmsg['parentid'] != 0){
  279. $parentname = $category->getnamebyid($reportmsg['parentid']);
  280. }else{
  281. $parentname = '';
  282. }
  283. $catename = $category->getnamebyid($reportmsg['cateid']);
  284. $time = time();
  285. $version = array(
  286. 'vername' => date('YmdHis',$time),
  287. 'reportid' => $reportmsg['reportid'],
  288. 'reportname' => $reportmsg['reportname'],
  289. 'reportcate' => $reportcate,
  290. 'itemname' => $itemname,
  291. 'catename' => $catename,
  292. 'parentname' => $parentname
  293. );
  294. if(!empty($version['parentname'])){
  295. $name1 = '分类="1" 分类名称="'.$version['parentname'].'" 子分类="1" 子分类名称="'.$version['catename'].'"';
  296. }else{
  297. $name1 = '分类="1" 分类名称="'.$version['catename'].'" ';
  298. }
  299. $createXML = '';
  300. Doo::loadModel('version');
  301. $version2 = new Version();
  302. $version2->reportid = $version['reportid'];
  303. $version2->vername = date('YmdHis',$time);
  304. $version2->xmlbody = $createXML;
  305. $version2->status = 1;
  306. $version2->addtime = $time;
  307. $version2->edittime = $time;
  308. $verid = $version2->insert();
  309. Doo::loadModel('log');
  310. $log = new Log();
  311. $log->reportid = $version['reportid'];
  312. $log->userid = $this->data['uid'];
  313. $log->verid = $verid;
  314. $log->vername = $version['vername'];
  315. $log->addtime = $time;
  316. $log->content = date('Y-m-d H:i:s',$time).' '.$this->data['username'].' 创建版本'.$version['vername'];
  317. $log->insert();
  318. include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
  319. $this->IoHandler = new IoHandler();
  320. //调用定义物理路径
  321. $t=DOO::conf()->SITE_PATH."jlbb/".$version['reportid'];
  322. $this->IoHandler->MakeDir($t);
  323. $xmlName = $verid.'_'.date('YmdHis',$time).'.xml';
  324. $xml = trim($createXML);
  325. $myfile = fopen($t.'/'.$xmlName, "w");
  326. fwrite($myfile, $xml);
  327. fclose($myfile);
  328. // $this->data['verid'] = $verid;
  329. // $this->data['version'] = $version;
  330. // $this->data['reportid'] = $this->params['reportid'];
  331. // $log2 = new Log();
  332. // $loglist = $log2->getListbyverid($verid);
  333. // $this->data['loglist'] = $loglist;
  334. // $this->render('add-formver', $this->data, TRUE);die;
  335. return '/version/'.$verid.'?status=new';
  336. }
  337. return '/reportlist';
  338. }
  339. public function UpdateVersion(){
  340. if(isset($this->params['verid'])) {
  341. Doo::loadModel('version');
  342. $version = new Version();
  343. $versionmsg = $version->getRowbyid($this->params['verid']);
  344. $this->data['version'] = $versionmsg;
  345. Doo::loadModel('report');
  346. $report = new Report();
  347. $reportmsg = $report->getRowbyid($versionmsg['reportid']);
  348. Doo::loadModel('item');
  349. $item = new Item();
  350. if($reportmsg['itemid'] != 0){
  351. $reportcate = 1;
  352. $itemname = $item->getnamebyid($reportmsg['itemid']);
  353. }else{
  354. $reportcate = 0;
  355. $itemname = '';
  356. }
  357. Doo::loadModel('category');
  358. $category = new Category();
  359. if($reportmsg['parentid'] != 0){
  360. $parentname = $category->getnamebyid($reportmsg['parentid']);
  361. }else{
  362. $parentname = '';
  363. }
  364. $catename = $category->getnamebyid($reportmsg['cateid']);
  365. $this->data['version']['reportid'] = $reportmsg['reportid'];
  366. $this->data['version']['reportname'] = $reportmsg['reportname'];
  367. $this->data['version']['reportcate'] = $reportcate;
  368. $this->data['version']['itemname'] = $itemname;
  369. $this->data['version']['parentname'] = $parentname;
  370. $this->data['version']['catename'] = $catename;
  371. Doo::loadModel('log');
  372. // $log = new Log();
  373. // $log->verid = $this->params['verid'];
  374. // $log->reportid = $versionmsg['reportid'];
  375. // $log->userid = $this->data['uid'];
  376. // $log->addtime = time();
  377. // $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 编辑';
  378. // $log->insert();
  379. $log2 = new Log();
  380. $loglist = $log2->getListbyverid($this->params['verid']);
  381. $this->data['loglist'] = $loglist;
  382. if(isset($_GET['status']) && $_GET['status'] == 'new'){
  383. $this->data['status'] = 1;
  384. }
  385. $this->render('edit-formver', $this->data, TRUE);
  386. die;
  387. }
  388. return '/reportlist';
  389. }
  390. public function SetVersion(){
  391. Doo::loadModel('report');
  392. $report = new Report();
  393. Doo::loadModel('version');
  394. $version = new Version();
  395. Doo::loadModel('log');
  396. $log = new Log();
  397. $time = isset($_POST['vername']) ? strtotime($_POST['vername']) : time();
  398. if(isset($_POST['verid']) && !empty($version->getRowbyid($_POST['verid']))){
  399. $version->verid = $_POST['verid'];
  400. $version->content = trim($_POST['content']);
  401. // $version->xmlheader = trim($_POST['editor']);
  402. $version->xmlbody = trim($_POST['editor']);
  403. $version->status = isset($_POST['caogao']) ? 1 : 2;
  404. $version->edittime = time();
  405. if(isset($_POST['firsttime'])){
  406. // $version->addtime = $time;
  407. $addtime = $time;
  408. $report->edittime = $time;
  409. $report->reportid = $_POST['reportid'];
  410. $report->update();
  411. }else{
  412. $version2 = new Version();
  413. $addtime = $version2->getvertime($_POST['verid']);
  414. }
  415. $version->update();
  416. //调用定义物理路径
  417. $t=DOO::conf()->SITE_PATH."jlbb/".$_POST['reportid'];
  418. $xmlName = $_POST['verid'].'_'.date('YmdHis',$addtime).'.xml';
  419. $editor = iconv("UTF-8", "GB2312", $_POST['editor']);
  420. $xml = trim($editor);
  421. $myfile = fopen($t.'/'.$xmlName, "w");
  422. fwrite($myfile, $xml);
  423. fclose($myfile);
  424. $log->verid = $_POST['verid'];
  425. $log->reportid = $_POST['reportid'];
  426. $log->userid = $this->data['uid'];
  427. $log->addtime = time();
  428. if(isset($_POST['caogao'])){
  429. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 编辑并保存到草稿';
  430. }elseif(isset($_POST['online'])){
  431. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 发布';
  432. }else{
  433. $log->content = date('Y-m-d H:i:s',time()).' '.$this->data['username'].' 修改过版本';
  434. }
  435. $log->insert();
  436. }
  437. return '/versionlist/'.$_POST['reportid'];
  438. }
  439. public function DelVersion(){
  440. $verId = $this->params['verid'];
  441. Doo::loadModel('version');
  442. $version = new Version();
  443. Doo::loadModel('log');
  444. $log = new Log();
  445. $reportid = $version->getreportidbyid($verId);
  446. $addtime = $version->getvertime($verId);
  447. $version->verid = $verId;
  448. $version->delete();
  449. //调整报表更新时间,防止软件接口报错
  450. Doo::loadModel('report');
  451. $report = new Report();
  452. $reportmsg = $report->getRowbyid($reportid);
  453. if($reportmsg['edittime'] == $addtime){
  454. //获取本报表的最新一期版本
  455. $vermsg = $version->getLastVerbyrid($reportid);
  456. if(!empty($vermsg)){
  457. $report->reportid = $reportid;
  458. $report->edittime = $vermsg['addtime'];
  459. $report->update();
  460. }
  461. }
  462. include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
  463. $this->IoHandler = new IoHandler();
  464. $t=DOO::conf()->SITE_PATH."jlbb/".$reportid;
  465. $xmlName = $verId.'_'.date('YmdHis',$addtime).'.xml';
  466. $this->IoHandler->DeleteFile($t.'/'.$xmlName);
  467. $log->verid = $verId;
  468. $log->delete();
  469. return '/versionlist/'.$reportid;
  470. }
  471. //自动更新报表信息 2分钟执行一次
  472. public function UpdateDataVersion(){
  473. if(isset($this->params['verid']) && is_numeric($this->params['verid'])){
  474. Doo::loadModel('version');
  475. $version = new Version();
  476. $vermsg = $version->getRowbyid($this->params['verid']);
  477. if(!empty($vermsg)){
  478. $version->verid = $vermsg['verid'];
  479. $version->content = $_POST['content'];
  480. $version->xmlbody = trim($_POST['editor']);
  481. $version->edittime = time();
  482. $version->update();
  483. //调用定义物理路径
  484. $t=DOO::conf()->SITE_PATH."jlbb/".$vermsg['reportid'];
  485. $xmlName = $vermsg['verid'].'_'.date('YmdHis',$vermsg['addtime']).'.xml';
  486. $editor = iconv("UTF-8", "GB2312", $_POST['editor']);
  487. $xml = trim($editor);
  488. $myfile = fopen($t.'/'.$xmlName, "w");
  489. fwrite($myfile, $xml);
  490. fclose($myfile);
  491. exit(json_encode(array('status' => 200, 'msg' => date('Y-m-d H:i:s').' 自动保存')));
  492. }
  493. }
  494. exit(json_encode(array('status' => 400, 'msg' => '参数有误')));
  495. }
  496. //项目管理
  497. public function ItemList(){
  498. Doo::loadModel('item');
  499. Doo::loadHelper('DooPager');
  500. $item = new Item();
  501. $totalArchive = $item->count();
  502. $pager = new DooPager(Doo::conf()->APP_URL . "itemlist/page", $totalArchive, 15, 10);
  503. if (isset($this->params['pindex']))
  504. $pager->paginate(intval($this->params['pindex']));
  505. else
  506. $pager->paginate(1);
  507. if ($pager->limit != ' -15,15')
  508. $this->data['itemlist'] = $item->getRowbylimit($pager->limit);
  509. if(isset($this->data['itemlist'])){
  510. foreach($this->data['itemlist'] as $k => $v){
  511. Doo::loadModel('category');
  512. $category = new Category();
  513. $catenum = $category->count(array('where' => 'itemid='.$v['itemid']));
  514. $this->data['itemlist'][$k]['catenum'] = $catenum;
  515. Doo::loadModel('report');
  516. $report = new Report();
  517. $reportnum = $report->count(array('where' => 'itemid='.$v['itemid']));
  518. $this->data['itemlist'][$k]['reportnum'] = $reportnum;
  519. }
  520. }
  521. $this->data['pager'] = $pager->output;
  522. $this->render ( "edit-formpoj", $this->data, TRUE);
  523. }
  524. public function AddItem(){
  525. $name = $_POST['itemname'];
  526. Doo::loadModel('item');
  527. $item = new Item();
  528. $code = $this->MadeCode();
  529. $item->itemname = $name;
  530. $item->code = $code;
  531. $item->insert();
  532. return '/itemlist';
  533. }
  534. public function DelItem(){
  535. $itemId = $this->params['itemid'];
  536. Doo::loadModel('category');
  537. $category = new Category();
  538. Doo::loadModel('item');
  539. $catenum = $category->count(array('where' => 'itemid='.$itemId));
  540. if($catenum != 0){
  541. exit('该项目下包含类别,无法删除');
  542. }
  543. Doo::loadModel('report');
  544. $report = new Report();
  545. $reportnum = $report->count(array('where' => 'itemid='.$itemId));
  546. if($reportnum != 0){
  547. exit('该项目下包含报表,无法删除');
  548. }
  549. Doo::loadModel('item');
  550. $item = new Item();
  551. $item->itemid = $itemId;
  552. $item->delete();
  553. return '/itemlist';
  554. }
  555. public function UpdateItem(){
  556. $itemname = $_POST['itemname'];
  557. Doo::loadModel('item');
  558. $item = new Item();
  559. $item->itemname = $itemname;
  560. $item->itemid = $_POST['itemid'];
  561. $result = $item->update();
  562. if($result){
  563. echo 1;
  564. exit;
  565. }
  566. exit;
  567. }
  568. //类别管理
  569. public function CateList(){
  570. Doo::loadHelper('DooPager');
  571. Doo::loadModel('category');
  572. $category = new Category();
  573. if(isset($this->params['status']) && $this->params['status'] == 1){
  574. //定制类别
  575. $this->data['dingzhi'] = true;
  576. Doo::loadModel('item');
  577. $item = new Item();
  578. $itemlist = $item->getAllMsg();
  579. $this->data['itemlist'] = $itemlist;
  580. $this->data['itemid'] = '';
  581. if(isset($this->params['itemid']) && !empty($this->params['itemid'])){
  582. $this->data['item'] = $item->getRowbyid($this->params['itemid']);
  583. $this->data['itemid'] = $this->params['itemid'];
  584. $itemid = $this->params['itemid'];
  585. }else{
  586. $itemid = $item->getfisrtitemid();
  587. $this->data['itemid'] = $itemid;
  588. }
  589. $this->data['itemname'] = $item->getnamebyid($itemid);
  590. $cateparentlist = $category->getparentlist($itemid);
  591. $this->data['cateparentlist'] = $cateparentlist;
  592. $totalArchive = $category->count(array('where' => 'itemid='.$itemid));
  593. $pager = new DooPager(Doo::conf()->APP_URL . "catelist/1/item/".$itemid."/page", $totalArchive, 15, 10);
  594. if (isset($this->params['pindex'])){
  595. $pager->paginate(intval($this->params['pindex']));
  596. $this->data['pindex'] = $this->params['pindex'];
  597. } else
  598. $pager->paginate(1);
  599. if ($pager->limit != ' -15,15')
  600. $this->data['catelist'] = $category->getRowbylimit($pager->limit,$itemid);
  601. if(isset($this->data['catelist'])){
  602. foreach($this->data['catelist'] as $k => $v){
  603. if($v['parentid'] == 0){
  604. $parentname = '';
  605. }else{
  606. $parentname = $category->getnamebyid($v['parentid']);
  607. }
  608. $this->data['catelist'][$k]['parentname'] = $parentname;
  609. $this->data['catelist'][$k]['hadchild'] = $category->hadChild($v['cateid']);
  610. Doo::loadModel('report');
  611. $report = new Report();
  612. $reportnum = $report->count(array('where' => 'cateid='.$v['cateid'].' or parentid='.$v['cateid']));
  613. $this->data['catelist'][$k]['reportnum'] = $reportnum;
  614. }
  615. }
  616. $this->data['pager'] = $pager->output;
  617. }else{
  618. //通用类别
  619. $cateparentlist = $category->getparentlist();
  620. $this->data['cateparentlist'] = $cateparentlist;
  621. $totalArchive = $category->count(array('where' => 'itemid=0'));
  622. $pager = new DooPager(Doo::conf()->APP_URL . "catelist/page", $totalArchive, 15, 10);
  623. if (isset($this->params['pindex'])){
  624. $pager->paginate(intval($this->params['pindex']));
  625. $this->data['pindex'] = $this->params['pindex'];
  626. }else
  627. $pager->paginate(1);
  628. if ($pager->limit != ' -15,15')
  629. $this->data['catelist'] = $category->getRowbylimit($pager->limit);
  630. if(isset($this->data['catelist'])){
  631. foreach($this->data['catelist'] as $k => $v){
  632. if($v['parentid'] == 0){
  633. $parentname = '';
  634. }else{
  635. $parentname = $category->getnamebyid($v['parentid']);
  636. }
  637. $this->data['catelist'][$k]['parentname'] = $parentname;
  638. $this->data['catelist'][$k]['hadchild'] = $category->hadChild($v['cateid']);
  639. Doo::loadModel('report');
  640. $report = new Report();
  641. $reportnum = $report->count(array('where' => 'cateid='.$v['cateid'].' or parentid='.$v['cateid']));
  642. $this->data['catelist'][$k]['reportnum'] = $reportnum;
  643. }
  644. }
  645. $this->data['pager'] = $pager->output;
  646. }
  647. $this->render ( "edit-formcate", $this->data, TRUE);
  648. }
  649. public function AddCate(){
  650. Doo::loadModel('category');
  651. $category = new Category();
  652. $category->catename = $_POST['catename'];
  653. $category->parentid = $_POST['parentselect'];
  654. $category->itemid = isset($_POST['itemselect']) ? $_POST['itemselect'] : 0;
  655. $category->insert();
  656. if(isset($_POST['itemselect'])){
  657. return '/catelist/1/item/'.$_POST['itemselect'];
  658. }else{
  659. return '/catelist';
  660. }
  661. }
  662. public function UpdateCate(){
  663. Doo::loadModel('category');
  664. $category = new Category();
  665. $category->cateid = $_POST['cateid'];
  666. $category->catename = $_POST['catename'];
  667. $category->parentid = $_POST['parentselect'];
  668. $category->itemid = isset($_POST['itemselect']) ? $_POST['itemselect'] : 0;
  669. $category->update();
  670. if(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] != $_POST['itemselect']){
  671. Doo::loadModel('category');
  672. $category2 = new Category();
  673. $catechildren = $category2->getchildbyparent($_POST['cateid']);
  674. if(!empty($catechildren)){
  675. foreach($catechildren as $k => $v){
  676. $category2->cateid = $v['cateid'];
  677. $category2->itemid = $_POST['itemselect'];
  678. $category2->update();
  679. }
  680. }
  681. }
  682. $returnurl = '/catelist';
  683. if(isset($_POST['itemselect'])){
  684. $returnurl .= '/1/item/'.$_POST['itemselect'];
  685. }
  686. if(isset($_POST['pindex'])){
  687. $returnurl .= '/page/'.$_POST['pindex'];
  688. }
  689. return $returnurl;
  690. // if(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] == $_POST['itemselect'] && isset($_POST['pindex'])){
  691. // return '/catelist/1/item/'.$_POST['itemselect'].'/page/'.$_POST['pindex'];
  692. // }elseif(isset($_POST['itemselect']) && isset($_POST['itemid']) && $_POST['itemid'] != $_POST['itemselect'] && isset($_POST['pindex'])){
  693. // return '/catelist/1/item/'.$_POST['itemselect'];
  694. // }elseif(isset($_POST['itemselect']) && !isset($_POST['pindex'])){
  695. // return '/catelist/1/item/'.$_POST['itemselect'];
  696. // }elseif(!isset($_POST['itemselect']) && isset($_POST['pindex'])){
  697. // return '/catelist/page/'.$_POST['pindex'];
  698. // }else{
  699. // return '/catelist';
  700. // }
  701. }
  702. public function DelCate(){
  703. $cateId = $this->params['cateid'];
  704. Doo::loadModel('category');
  705. $category = new Category();
  706. $bool = $category->hadChild($cateId);
  707. if($bool != 0){
  708. exit('该类别下包含子类别,无法删除');
  709. }
  710. Doo::loadModel('report');
  711. $report = new Report();
  712. $reportnum = $report->count(array('where' => 'cateid='.$cateId.' or parentid='.$cateId));
  713. if($reportnum != 0){
  714. exit('该类别下包含报表,无法删除');
  715. }
  716. $category->cateid = $cateId;
  717. $category->delete();
  718. if(isset($this->params['itemid']) && isset($this->params['pindex'])){
  719. return '/catelist/1/item/'.$this->params['itemid'].'/page/'.$this->params['pindex'];
  720. }elseif(isset($this->params['itemid']) && !isset($this->params['pindex'])){
  721. return '/catelist/1/item/'.$this->params['itemid'];
  722. }elseif(!isset($this->params['itemid']) && isset($this->params['pindex'])){
  723. return '/catelist/page/'.$this->params['pindex'];
  724. }else{
  725. return '/catelist';
  726. }
  727. }
  728. public function CateParentList(){
  729. if(isset($_GET['itemid'])) {
  730. Doo::loadModel('category');
  731. $category = new Category();
  732. $cateparentlist = $category->getparentlist($_GET['itemid']);
  733. if (!empty($cateparentlist)) {
  734. echo json_encode(array('code' => 200, 'parentlist' => $cateparentlist));
  735. exit;
  736. }
  737. }
  738. echo json_encode(array('code' => 400)),
  739. exit;
  740. }
  741. public function GetCateChild(){
  742. if(isset($_GET['cateid'])){
  743. Doo::loadModel('category');
  744. $category = new Category();
  745. $hadchild = $category->hadChild($_GET['cateid']);
  746. if($hadchild){
  747. echo true;
  748. exit;
  749. }
  750. }
  751. exit;
  752. }
  753. public function GetCateChildList(){
  754. if(isset($_GET['parentid']) && $_GET['parentid'] != 0){
  755. Doo::loadModel('category');
  756. $category = new Category();
  757. $childlist = $category->getChildList($_GET['parentid']);
  758. if(!empty($childlist)){
  759. echo json_encode(array('code' => 200, 'childlist' => $childlist));
  760. exit;
  761. }
  762. }
  763. echo json_encode(array('code' => 400));
  764. exit;
  765. }
  766. public function GetCateParentList(){
  767. if(isset($_GET['itemid']) && $_GET['itemid'] != 0){
  768. Doo::loadModel('category');
  769. $category = new Category();
  770. $parentlist = $category->getparentlist($_GET['itemid']);
  771. if(!empty($parentlist)){
  772. echo json_encode(array('code' => 200, 'parentlist' => $parentlist));
  773. exit;
  774. }
  775. }
  776. echo json_encode(array('code' => 400));
  777. exit;
  778. }
  779. //随机生成6位的项目领取码
  780. private function MadeCode(){
  781. $string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  782. $code = '';
  783. for($i = 0; $i < 6; $i++){
  784. $index = rand(0,61);
  785. var_dump($index);
  786. $code .= substr($string,$index,1);
  787. }
  788. return $code;
  789. }
  790. }