Stockout.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589
  1. <?php
  2. namespace app\admin\controller\stock;
  3. use app\common\controller\Backend;
  4. use fast\Tree;
  5. use app\admin\model;
  6. use think\Exception;
  7. /**
  8. * 商品出库
  9. *
  10. * @icon fa fa-circle-o
  11. */
  12. class Stockout extends Backend
  13. {
  14. /**
  15. * StockStockout模型对象
  16. * @var \app\admin\modelstock\Stockout
  17. */
  18. protected $model = null;
  19. protected $listmodel = null;
  20. protected $noNeedLogin = ['countData','info'];
  21. public function _initialize()
  22. {
  23. parent::_initialize();
  24. $this->model = model('\app\admin\model\stock\Stockout');
  25. $this->listmodel = model('\app\admin\model\stock\Stockoutlist');
  26. $customerList = collection(model('\app\admin\model\stock\Customer')->select())->toArray();
  27. Tree::instance()->init($customerList);
  28. $customerList = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0), 'name');
  29. $customer = ['' => '==请选择=='];
  30. foreach ($customerList as $k => $v) {
  31. $customer[$v['id']] = $v['name'];
  32. }
  33. $this->view->assign('customer', $customer);
  34. }
  35. /**
  36. * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
  37. * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
  38. * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
  39. */
  40. /**
  41. * 查看
  42. */
  43. public function index()
  44. {
  45. //设置过滤方法
  46. $this->request->filter(['strip_tags']);
  47. if ($this->request->isAjax()) {
  48. //如果发送的来源是Selectpage,则转发到Selectpage
  49. if ($this->request->request('keyField')) {
  50. return $this->selectpage();
  51. }
  52. $this->relationSearch = true;
  53. $this->searchFields = 'docnum,customer.name';
  54. list($where, $sort, $order, $offset, $limit) = $this->buildparams();
  55. $total = $this->model
  56. ->where($where)
  57. ->with('customer')
  58. ->order($sort, $order)
  59. ->count();
  60. $list = $this->model
  61. ->where($where)
  62. ->with('customer')
  63. ->order($sort, $order)
  64. ->limit($offset, $limit)
  65. ->select();
  66. $list = collection($list)->toArray();
  67. $result = array("total" => $total, "rows" => $list);
  68. return json($result);
  69. }
  70. return $this->view->fetch();
  71. }
  72. /**
  73. * 出库时序表
  74. */
  75. public function getlist()
  76. {
  77. //设置过滤方法
  78. $this->request->filter(['strip_tags']);
  79. if ($this->request->isAjax()) {
  80. //如果发送的来源是Selectpage,则转发到Selectpage
  81. if ($this->request->request('keyField')) {
  82. return $this->selectpage();
  83. }
  84. $this->relationSearch = true;
  85. $this->searchFields = 'docnum,goods.goodsname,goods.productmodel';
  86. list($where, $sort, $order, $offset, $limit) = $this->buildparams();
  87. $total = $this->listmodel
  88. ->with(['goods','stockinlist','stockout'])
  89. ->where('stockout.audittime', 'NOT NULL')
  90. ->where($where)
  91. ->order($sort, $order)
  92. ->count();
  93. $list = $this->listmodel
  94. ->with(['goods','stockinlist','stockout'])
  95. ->where('stockout.audittime', 'NOT NULL')
  96. ->where($where)
  97. ->order($sort, $order)
  98. ->limit($offset, $limit)
  99. ->select();
  100. foreach ($list as $k => $v) {
  101. $v->stockout->customer;
  102. }
  103. $list = collection($list)->toArray();
  104. $result = array("total" => $total, "rows" => $list);
  105. return json($result);
  106. }
  107. return $this->view->fetch();
  108. }
  109. /**
  110. * 添加
  111. */
  112. public function add()
  113. {
  114. if ($this->request->isPost()) {
  115. $params = $this->request->post("row/a");
  116. $main = json_decode($params['main'], true);
  117. $goods = json_decode($params['goodslist'], true);
  118. if ($main && $goods) {
  119. try {
  120. $main["docnum"] = $this->model->createdocnum();
  121. $main['outboundtime'] = strtotime($main['outboundtime']);
  122. $num = count($goods);
  123. $stockoutgoods = [];
  124. $stockcurmodel = model('\app\admin\model\stock\Stockcur');
  125. $stockOutTotalNum = 0; //单据总出库商品总数
  126. $errorgoods = [];
  127. for ($i = 0; $i < $num; $i++) {
  128. //$curtotalnum 要出库的商品当前库存总数
  129. $curtotalnum = $stockcurmodel->where('stock_goods_id', $goods[$i]['stock_goods_id'])->sum('curnums');
  130. $outtotalnum = 0;
  131. foreach ($goods as $v) {
  132. if ($v['stock_goods_id'] == $goods[$i]['stock_goods_id']) {
  133. $outtotalnum += $v['stockoutnums'];
  134. }
  135. }
  136. $stockOutTotalNum += $goods[$i]['stockoutnums'];
  137. //库存总数小于要出库数 出库失败!
  138. if ($curtotalnum < $outtotalnum) {
  139. $errorgoods[] = $goods[$i]['goodsname'] . '当前库存:' . $curtotalnum . ',出库数量' . $outtotalnum . ',出库数大于库存数,操作失败!';
  140. } else {
  141. $stockoutgoods[] = array_merge($params, $goods[$i]);
  142. }
  143. }
  144. if (count($errorgoods) > 0) {
  145. $this->error(implode('</br>', $errorgoods)); //拼接成字符串
  146. }
  147. $main['totaloutamount'] = null;
  148. $main['stockouttotalnums'] = $stockOutTotalNum;
  149. $this->model->save($main);
  150. for ($i = 0; $i < count($stockoutgoods); $i++) {
  151. $stockoutgoods[$i]['stock_stockout_id'] = $this->model->id;
  152. }
  153. $result = $this->listmodel->allowField(true)->saveAll($stockoutgoods, false);
  154. if ($result !== false) {
  155. $this->success();
  156. } else {
  157. $this->error($this->model->getError());
  158. }
  159. } catch (\think\exception\PDOException $e) {
  160. $this->error($e->getMessage());
  161. }
  162. }
  163. $this->error(__('Parameter %s can not be empty', ''));
  164. }
  165. return $this->view->fetch();
  166. }
  167. /**
  168. * 编辑
  169. */
  170. public function edit($ids = null)
  171. {
  172. $row = $this->model->get($ids);
  173. if (!$row) {
  174. $this->error(__('No Results were found'));
  175. }
  176. if ($row['audittime']) {
  177. return ($this->error(__('该记录已通过审核,不能修改!')));
  178. }
  179. if ($row['settletime']) {
  180. return ($this->error(__('该记录已结算,不能修改!')));
  181. }
  182. if ($this->request->isPost()) {
  183. $params = $this->request->post("row/a");
  184. $main = json_decode($params['main'], true);
  185. $goods = json_decode($params['goodslist'], true);
  186. $delist = json_decode($params["deletedgoodslist"], true);
  187. if ($main && $goods) {
  188. try {
  189. $row->outboundtime = strtotime($main['outboundtime']);
  190. $row->stock_customer_id = $main['stock_customer_id'];
  191. $row->remark = $main['remark'];
  192. $num = count($goods);
  193. $stockoutgoods = [];
  194. $stockcurmodel = model('\app\admin\model\stock\Stockcur');
  195. $stockOutTotalNum = 0; //单据总出库商品总数
  196. $errorgoods = [];
  197. for ($i = 0; $i < $num; $i++) {
  198. //$curtotalnum 要出库的商品当前库存总数
  199. $curtotalnum = $stockcurmodel->where('stock_goods_id', $goods[$i]['stock_goods_id'])->sum('curnums');
  200. $outtotalnum = 0;
  201. foreach ($goods as $v) {
  202. if ($v['stock_goods_id'] == $goods[$i]['stock_goods_id']) {
  203. $outtotalnum += $v['stockoutnums'];
  204. }
  205. }
  206. $stockOutTotalNum += $goods[$i]['stockoutnums'];
  207. //库存总数小于要出库数 出库失败!
  208. if ($curtotalnum < $outtotalnum) {
  209. $errorgoods[] = $goods[$i]['goodsname'] . '当前库存:' . $curtotalnum . ',出库数量' . $outtotalnum . ',出库数大于库存数,操作失败!';
  210. } else {
  211. $stockoutgoods[] = array_merge($params, $goods[$i]);
  212. }
  213. }
  214. if (count($errorgoods) > 0) {
  215. $this->error(implode('</br>', $errorgoods)); //拼接成字符串
  216. }
  217. $row->stockouttotalnums = $stockOutTotalNum;
  218. $row->save();
  219. for ($i = 0; $i < count($stockoutgoods); $i++) {
  220. $stockoutgoods[$i]['stock_stockout_id'] = $row->id;
  221. }
  222. $result = $this->listmodel->allowField(true)->saveAll($stockoutgoods);
  223. $this->listmodel->destroy($delist);
  224. if ($result !== false) {
  225. $this->success();
  226. } else {
  227. $this->error($this->model->getError());
  228. }
  229. } catch (\think\exception\PDOException $e) {
  230. $this->error($e->getMessage());
  231. }
  232. }
  233. $this->error(__('Parameter %s can not be empty', ''));
  234. }
  235. $this->view->assign("row", $row);
  236. return $this->view->fetch();
  237. }
  238. /**
  239. * 审核
  240. */
  241. public function audit()
  242. {
  243. if ($this->request->isPost()) {
  244. $params = $this->request->post("row/a");
  245. if ($params) {
  246. $stockcurmodel = model('\app\admin\model\stock\Stockcur');
  247. $stockinlistmodel = model('\app\admin\model\stock\Stockinlist');
  248. $row = $this->model->get($params["id"]);
  249. if (!$row) {
  250. $this->error(__('No Results were found'));
  251. }
  252. $stockcurmodel->startTrans();
  253. $stockinlistmodel->startTrans();
  254. $this->model->startTrans();
  255. $this->listmodel->startTrans();
  256. try {
  257. $totalOutAmount = 0; //单据总出库金额
  258. $stockOutTotalNum = 0; //单据总出库商品总数
  259. $goods = $this->listmodel->with('goods')->where('stock_stockout_id', $row->id)->select();
  260. $newgoods = [];
  261. $errorgoods = [];
  262. if ($goods) {
  263. if ($row->audittime) {
  264. $this->error(__('出库单据已审核,不可重复审核', ''));
  265. }
  266. $num = count($goods);
  267. for ($i = 0; $i < $num; $i++) {
  268. //$curtotalnum 要出库的商品当前库存总数
  269. $curtotalnum = $stockcurmodel->where('stock_goods_id', $goods[$i]['stock_goods_id'])->sum('curnums');
  270. //库存总数小于此次要出库数 出库失败!
  271. if ($curtotalnum < $goods[$i]['stockoutnums']) {
  272. $errorgoods[] = $goods[$i]['goods']['goodsname'] . '当前库存:' . $curtotalnum . ',出库数量' . $goods[$i]['stockoutnums'] . ',出库数大于库存数,操作失败!';
  273. } else {
  274. //获得要出库商品的所有库存信息
  275. $stockcurgoods = $stockcurmodel->with('stockinlist')->where('stockcur.stock_goods_id', $goods[$i]['stock_goods_id'])->order('id')->select();
  276. $curstockoutgoods = $goods[$i]->toArray();
  277. unset($curstockoutgoods['id']);
  278. //出库初始数量为
  279. $stockoutnum = 0;
  280. $j = 0;
  281. while ($stockoutnum < $goods[$i]['stockoutnums']) {
  282. $neednum = $goods[$i]['stockoutnums'] - $stockoutnum; //$neednum 还需要出库的数量
  283. $restnum = $stockcurgoods[$j]['curnums'] - $neednum; //$restnum 该条记录出完库后剩余库存。
  284. //小于等于0则表示不够出或刚够
  285. if ($restnum <= 0) {
  286. $curstockoutgoods['stock_stockout_id'] = $row->id;
  287. $curstockoutgoods['stockoutgoodsremark'] = $goods[$i]['stockoutgoodsremark'];
  288. $curstockoutgoods['stock_stockinlist_id'] = $stockcurgoods[$j]['stockinlist']['id'];
  289. $curstockoutgoods['stockoutnums'] = $stockcurgoods[$j]['curnums'];
  290. $curstockoutgoods['amount'] = bcmul($stockcurgoods[$j]['curnums'], $stockcurgoods[$j]['stockinlist']['inboundprice'], 2);
  291. $stockoutnum += $stockcurgoods[$j]['curnums'];
  292. $totalOutAmount += $curstockoutgoods['amount'];
  293. $stockOutTotalNum += $stockcurgoods[$j]['curnums'];
  294. $stockcurmodel->destroy($stockcurgoods[$j]['id']);
  295. $stockinlist = $stockinlistmodel->get($stockcurgoods[$j]['stockinlist']['id']);
  296. $stockinlist->charged = true;
  297. $stockinlist->save();
  298. } elseif (($restnum > 0)) { //大于0则表示够出
  299. $curstockoutgoods['stock_stockout_id'] = $row->id;
  300. $curstockoutgoods['stockoutgoodsremark'] = $goods[$i]['stockoutgoodsremark'];
  301. $curstockoutgoods['stock_stockinlist_id'] = $stockcurgoods[$j]['stockinlist']['id'];
  302. $curstockoutgoods['stockoutnums'] = $neednum;
  303. $curstockoutgoods['amount'] = bcmul($neednum, $stockcurgoods[$j]['stockinlist']['inboundprice'], 2);
  304. $stockoutnum += $neednum;
  305. $totalOutAmount += $curstockoutgoods['amount'];
  306. $stockOutTotalNum += $neednum;
  307. $stockcurgoods[$j]['curnums'] = $restnum;
  308. $updatestockcur = $stockcurmodel->get($stockcurgoods[$j]['id']);
  309. $updatestockcur->curnums = $restnum;
  310. $updatestockcur->save();
  311. $stockinlist = $stockinlistmodel->get($stockcurgoods[$j]['stockinlist']['id']);
  312. $stockinlist->charged = true;
  313. $stockinlist->save();
  314. }
  315. $newgoods[] = $curstockoutgoods;
  316. $j++;
  317. }
  318. }
  319. };
  320. }
  321. if (count($errorgoods) > 0) {
  322. throw new Exception(implode('</br>', $errorgoods));
  323. }
  324. $row->totaloutamount = $totalOutAmount;
  325. $row->stockouttotalnums = $stockOutTotalNum;
  326. $row->audittime = time();
  327. $row->save();
  328. $goods = $this->listmodel->where('stock_stockout_id', $row->id)->delete();
  329. $result = $this->listmodel->allowField(true)->saveAll($newgoods); //更新审核标记位
  330. $this->model->commit();
  331. $this->listmodel->commit();
  332. $stockcurmodel->commit();
  333. $stockinlistmodel->commit();
  334. if ($result !== false) {
  335. $this->success();
  336. } else {
  337. $this->error($this->model->getError());
  338. }
  339. } catch (\think\exception\PDOException $e) {
  340. $this->model->rollBack();
  341. $this->listmodel->rollBack();
  342. $stockcurmodel->rollBack();
  343. $stockinlistmodel->rollBack();
  344. $this->error($e->getMessage());
  345. } catch (\think\Exception $e) {
  346. $this->model->rollBack();
  347. $this->listmodel->rollBack();
  348. $stockcurmodel->rollBack();
  349. $stockinlistmodel->rollBack();
  350. $this->error($e->getMessage());
  351. }
  352. }
  353. $this->error(__('Parameter %s can not be empty', ''));
  354. }
  355. }
  356. /**
  357. * 反审核
  358. */
  359. public function unaudit()
  360. {
  361. if ($this->request->isPost()) {
  362. $params = $this->request->post("row/a");
  363. $row = $this->model->get($params["id"]);
  364. if ($row) {
  365. try {
  366. if (!$row->audittime) {
  367. $this->error(__('出库单据已反审核,不可重复反审核', ''));
  368. };
  369. $goods = $this->listmodel->where('stock_stockout_id', $row->id)->select();
  370. if ($goods) {
  371. foreach ($goods as $k => $v) {
  372. $stockinlistmodel = model('\app\admin\model\stock\Stockinlist')->get(["id" => $v['stock_stockinlist_id']]);
  373. $stockinmodel = model('\app\admin\model\stock\Stockin')->get($stockinlistmodel->stock_stockin_id);
  374. $stockcurmodel = model('\app\admin\model\stock\Stockcur')->get(["stock_stockin_list_id" => $v['stock_stockinlist_id']]);
  375. if ($stockcurmodel) {
  376. $stockcurmodel->curnums = $stockcurmodel->curnums + $v->stockoutnums;
  377. if ($stockcurmodel->curnums == $stockinlistmodel->stockinnums) {
  378. $stockinlistmodel->charged = false;
  379. $stockinlistmodel->save();
  380. }
  381. $stockcurmodel->save();
  382. } else {
  383. $stockcur = [
  384. 'stock_stockin_list_id' => $stockinlistmodel['id'],
  385. 'stock_stockin_id' => $stockinlistmodel['stock_stockin_id'],
  386. 'curnums' => $v->stockoutnums,
  387. 'stock_goods_id' => $stockinlistmodel['stock_goods_id'],
  388. 'stock_stockin_docnum' => $stockinmodel->docnum,
  389. ];
  390. model('\app\admin\model\stock\Stockcur')->isUpdate(false)->data($stockcur, true)->save();
  391. if ($stockinlistmodel->stockinnums == $v->stockoutnums) {
  392. $stockinlistmodel->charged = false;
  393. $stockinlistmodel->save();
  394. }
  395. }
  396. $v->stock_stockinlist_id = null;
  397. $v->amount = null;
  398. $v->save();
  399. };
  400. } else {
  401. $this->error($this->model->getError());
  402. }
  403. $row->audittime = null;
  404. $row->totaloutamount = null;
  405. $result = $row->save();
  406. if ($result !== false) {
  407. $this->success();
  408. } else {
  409. $this->error($this->model->getError());
  410. }
  411. } catch (\think\exception\PDOException $e) {
  412. $this->error($e->getMessage());
  413. }
  414. }
  415. $this->error(__('Parameter %s can not be empty', ''));
  416. }
  417. }
  418. /**
  419. * 结算
  420. */
  421. public function settle()
  422. {
  423. if ($this->request->isPost()) {
  424. $params = $this->request->post("row/a");
  425. $row = $this->model->get($params["id"]);
  426. if ($row) {
  427. try {
  428. $row->settletime = time();
  429. $result = $row->save();
  430. if ($result) {
  431. $this->success('结算成功');
  432. } else {
  433. $this->error(__('结算失败'));
  434. }
  435. } catch (\think\exception\PDOException $e) {
  436. $this->error($e->getMessage());
  437. }
  438. }
  439. $this->error(__('Parameter %s can not be empty', ''));
  440. }
  441. }
  442. /**
  443. * 反结算
  444. */
  445. public function unsettle()
  446. {
  447. if ($this->request->isPost()) {
  448. $params = $this->request->post("row/a");
  449. $row = $this->model->get($params["id"]);
  450. if ($row) {
  451. try {
  452. $row->settletime = null;
  453. $result = $row->save();
  454. if ($result) {
  455. $this->success('反结算成功');
  456. } else {
  457. $this->error(__('反结算失败'));
  458. }
  459. } catch (\think\exception\PDOException $e) {
  460. $this->error($e->getMessage());
  461. }
  462. }
  463. $this->error(__('Parameter %s can not be empty', ''));
  464. }
  465. }
  466. /**
  467. * 查看
  468. */
  469. public function look($ids = null)
  470. {
  471. $row = $this->model->get($ids);
  472. if (!$row) {
  473. $this->error(__('No Results were found'));
  474. }
  475. return $this->view->fetch();
  476. }
  477. /**
  478. * 删除
  479. */
  480. public function del($ids = "")
  481. {
  482. if ($ids) {
  483. $row = $this->model->get($ids);
  484. if (!$row) {
  485. $this->error(__('No Results were found'));
  486. }
  487. $list = collection($this->listmodel->where('stock_stockout_id', $row->id)->select())->toArray();
  488. if ($row['audittime']) {
  489. return ($this->error(__('该单据已审核,不能删除!')));
  490. }
  491. $result = $this->listmodel->where('stock_stockout_id', $row->id)->delete();
  492. $result = $row->delete();
  493. if ($result) {
  494. $this->success();
  495. } else {
  496. $this->error(__('No rows were deleted'));
  497. }
  498. }
  499. $this->error(__('Parameter %s can not be empty', 'ids'));
  500. }
  501. /**
  502. * 查看页,根据单据编号返回商品信息
  503. */
  504. public function info($id = null)
  505. {
  506. if ($this->request->isPost()) {
  507. if ($id) {
  508. try {
  509. $row = $this->model->get($id);
  510. $row->customer;
  511. $goodslist = \think\Db::view('stock_stockout_list', '*')
  512. ->view('stock_goods', 'id as stock_goods_id,volnum,goodsname,productmodel,measureunit', 'stock_stockout_list.stock_goods_id=stock_goods.id', 'left')
  513. ->view('stock_stockin_list', 'id as stock_stockin_list,inboundprice', 'stock_stockin_list.id=stock_stockout_list.stock_stockinlist_id', 'left')
  514. ->where('stock_stockout_list.stock_stockout_id', $id)->select();
  515. return json(["row" => $row, "goodslist" => $goodslist]);
  516. } catch (\think\exception\PDOException $e) {
  517. $this->error($e->getMessage());
  518. }
  519. }
  520. $this->error(__('Parameter %s can not be empty', ''));
  521. }
  522. $this->error('只接受POST请求', '');
  523. }
  524. /**
  525. * 控制台出库统计
  526. */
  527. public function countData()
  528. {
  529. if ($this->request->isAjax()) {
  530. $dateRange = $this->request->request("dateRange");
  531. $dateRange = explode(' - ', $dateRange);
  532. $dateRange = count($dateRange) > 1 ? $dateRange : $dateRange[0];
  533. $list1 = $this->model
  534. ->with('stockgoods,customer')
  535. ->field('sum(amount) totalitemamount,count(*) totalitem,sum(stockoutnums) totalnum')
  536. ->where('audittime', 'not null')
  537. ->whereTime('stockout.createtime', $dateRange)
  538. ->group('stockout.stock_customer_id')
  539. ->select();
  540. $list1 = collection($list1)->toArray();
  541. $list2 = $this->model
  542. ->with('stockgoods,customer')
  543. ->field('sum(amount) totalitemamount,count(*) totalitem,sum(stockoutnums) totalnum')
  544. ->where('audittime', 'not null')
  545. ->whereTime('stockout.createtime', $dateRange)
  546. ->group('goodscategoryid')
  547. ->select();
  548. $list2 = collection($list2)->toArray();
  549. $result = array("rows1" => $list1, "rows2" => $list2);
  550. return json($result);
  551. }
  552. }
  553. /**
  554. * 打印数据(LODOP)
  555. */
  556. public function printer($id)
  557. {
  558. $row = $this->model->get($id);
  559. if (!$row) {
  560. $this->error(__('No Results were found'));
  561. } else if (!$row->audittime) {
  562. $this->error(__('单据尚未审核,请先审核!'));
  563. }
  564. return $this->view->fetch();
  565. }
  566. }