WashRecord.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. <?php
  2. namespace app\admin\controller;
  3. use app\common\model\WashingRecord;
  4. use think\App;
  5. use think\Db;
  6. class WashRecord extends Auth
  7. {
  8. public function __construct(App $app = null) {
  9. parent::__construct($app);
  10. $this->table='washing_record';
  11. $this->model = new WashingRecord();
  12. }
  13. public function index(){
  14. if(request()->isAjax()){
  15. //分页参数
  16. $length = input('rows',10,'intval'); //每页条数
  17. $page = input('page',1,'intval'); //第几页
  18. $start = ($page - 1) * $length; //分页开始位置
  19. //排序
  20. $sortRow = input('sidx','id','trim'); //排序列
  21. $sort = input('sord','desc','trim'); //排序方式
  22. $order = $sortRow.' '.$sort;
  23. $title = input('title','','trim');
  24. if($title!=''){
  25. $map[] = ['title','like','%'.$title.'%'];
  26. }
  27. $start = input('start','','trim');
  28. if($start != ''){
  29. $map[] = ['create_yyyymm','>=',date('Ymd',strtotime($start))];
  30. }
  31. $end = input('end','','trim');
  32. if($end != ''){
  33. $map[] = ['create_yyyymm','<=',date('Ymd',strtotime($end))];
  34. }
  35. $mode = input('mode','','trim');
  36. if($mode!=''){
  37. $map[] = ['mode','=',$mode];
  38. }
  39. $dep_id = input('dep_id','','trim');
  40. if($dep_id!=''){
  41. $map[] = ['dep_id','=',$dep_id];
  42. }
  43. $map[] = ['del','=',0];
  44. $map[] = ['org_id','=',$this->orgId];
  45. $map= empty($map) ? true: $map;
  46. //数据查询
  47. $lists = db($this->table)->where($map)
  48. ->limit($start,$length)->order($order)->select();
  49. foreach ($lists as $k=>$v){
  50. $lists[$k]['real_name'] = Db::name('user')
  51. ->where('id',$v['user_id'])
  52. ->value('real_name');
  53. $lists[$k]['title'] = Db::name('address')
  54. ->where('id',$v['dep_id'])
  55. ->value('title');
  56. $items = Db::name('washing_record_item')
  57. ->where('washing_record_id',$v['id'])
  58. ->select();
  59. $s = '';
  60. if(!empty($items)){
  61. foreach ($items as $k1=>$v1){
  62. $it = Db::name('washing_items')
  63. ->where('id',$v1['items_id'])
  64. ->value('title');
  65. $s.=$it.':'.$v1['num'].' ';
  66. }
  67. }
  68. $lists[$k]['items'] = $s;
  69. }
  70. //数据返回
  71. $totalCount = db($this->table)->where($map)->count();
  72. $totalPage = ceil($totalCount/$length);
  73. $result['page'] = $page;
  74. $result['total'] = $totalPage;
  75. $result['records'] = $totalCount;
  76. $result['rows'] = $lists;
  77. return json($result);
  78. }else{
  79. $address = (new \app\common\model\Address())->getListByType(9,$this->orgId);
  80. $this->assign('address',$address);
  81. $this->assign('ids',is_login());
  82. return $this->fetch();
  83. }
  84. }
  85. public function returnWash($id) {
  86. if (!$id) {
  87. $this->error('参数错误');
  88. }
  89. $ret = $this->model->returnWash($id, $this->orgId);
  90. if (!$ret) {
  91. $this->error($this->model->getError());
  92. }
  93. $this->success('归还成功');
  94. }
  95. public function confirmWash($id) {
  96. if(!request()->isPost()){
  97. if (!$id) {
  98. $this->error('参数错误');
  99. }
  100. $this->assign('id',$id);
  101. return $this->fetch();
  102. }
  103. else {
  104. $sign = input('sign');
  105. if (!$sign) {
  106. $this->error('请上传签名图');
  107. }
  108. $ret = $this->model->confirmWash($id, $this->orgId, $sign);
  109. if (!$ret) {
  110. $this->error($this->model->getError());
  111. }
  112. $this->success('确认成功');
  113. }
  114. }
  115. /**
  116. * 新增/编辑
  117. */
  118. public function add($id=0){
  119. if(request()->isPost()){
  120. $data = request()->post();
  121. if (empty($data['dep_id'])) {
  122. $this->error('地点不能为空');
  123. }
  124. if (empty($data['items'])) {
  125. $this->error('物品不能为空');
  126. }
  127. $items = json_decode( $data['items'],true);
  128. foreach ($items as $k => $val) {
  129. if(empty($val['num'])){
  130. $this->error($val['title'] . '数量不能为空');
  131. }
  132. }
  133. foreach ($items as $k => $v) {
  134. $params['items'][$k] = [
  135. 'items_id' => $v['id'],
  136. 'num' => $v['num'],
  137. ];
  138. }
  139. $params['dep_id'] = $data['dep_id'];
  140. $params['org_id'] = $this->orgId;
  141. $params['user_id'] = $this->userId;
  142. $res = $this->model->addSave($params);
  143. if($res){
  144. $this->success('操作成功',url('index'));
  145. }else{
  146. $this->error($this->model->getError());
  147. }
  148. }else{
  149. $address = (new \app\common\model\Address())->getListByType(9,$this->orgId);
  150. $this->assign('dep',$address);
  151. $items = (new \app\common\model\WashingItems())->getList($this->orgId);
  152. $this->assign('items',$items);
  153. return $this->fetch();
  154. }
  155. }
  156. /**
  157. * 删除记录
  158. * @param int $id
  159. */
  160. public function del($id=0){
  161. if(!$id){
  162. $this->error('参数错误');
  163. }
  164. $res = db($this->table)->where('id',$id)->update([
  165. 'del'=>1,
  166. 'del_time'=>getTime(),
  167. ]);
  168. if($res){
  169. $this->success('删除成功');
  170. }else{
  171. $this->error('删除失败');
  172. }
  173. }
  174. public function washRecordExport(){
  175. $start = input('start','','trim');
  176. if($start != ''){
  177. $map[] = ['create_yyyymm','>=',date('Ymd',strtotime($start))];
  178. }
  179. $end = input('end','','trim');
  180. if($end != ''){
  181. $map[] = ['create_yyyymm','<=',date('Ymd',strtotime($end))];
  182. }
  183. $mode = input('mode','','trim');
  184. if($mode!=''){
  185. $map[] = ['mode','=',$mode];
  186. }
  187. $dep_id = input('dep_id','','trim');
  188. if($dep_id!=''){
  189. $map[] = ['dep_id','=',$dep_id];
  190. }
  191. $map[] = ['del','=',0];
  192. $map[] = ['org_id','=',$this->orgId];
  193. $map= empty($map) ? true: $map;
  194. //数据查询
  195. $lists = Db::name('washing_record')->where($map)->order('id asc')->select();
  196. foreach ($lists as $k=>$v){
  197. $lists[$k]['real_name'] = Db::name('user')
  198. ->where('id',$v['user_id'])
  199. ->value('real_name');
  200. $lists[$k]['title'] = Db::name('address')
  201. ->where('id',$v['dep_id'])
  202. ->value('title');
  203. $items = Db::name('washing_record_item')
  204. ->where('washing_record_id',$v['id'])
  205. ->select();
  206. $s = '';
  207. if(!empty($items)){
  208. foreach ($items as $k1=>$v1){
  209. $it = Db::name('washing_items')
  210. ->where('id',$v1['items_id'])
  211. ->value('title');
  212. $s.=$it.':'.$v1['num'].' ';
  213. }
  214. }
  215. $lists[$k]['items'] = $s;
  216. }
  217. include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
  218. //实例化PHPExcel类
  219. $objPHPExcel = new \PHPExcel();
  220. //激活当前的sheet表
  221. $objPHPExcel->setActiveSheetIndex(0);
  222. //设置表格头(即excel表格的第一行)
  223. $objPHPExcel->setActiveSheetIndex(0)
  224. ->setCellValue('A1', '编号')
  225. ->setCellValue('B1', '操作人')
  226. ->setCellValue('C1', '地点')
  227. ->setCellValue('D1', '物品')
  228. ->setCellValue('E1', '领取时间')
  229. ->setCellValue('F1', '归还时间')
  230. ->setCellValue('G1', '确定时间')
  231. ->setCellValue('H1', '状态');
  232. // 设置表格头水平居中
  233. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
  234. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  235. $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()
  236. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  237. $objPHPExcel->setActiveSheetIndex(0)->getStyle('C1')->getAlignment()
  238. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  239. $objPHPExcel->setActiveSheetIndex(0)->getStyle('D1')->getAlignment()
  240. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  241. $objPHPExcel->setActiveSheetIndex(0)->getStyle('E1')->getAlignment()
  242. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  243. $objPHPExcel->setActiveSheetIndex(0)->getStyle('F1')->getAlignment()
  244. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  245. $objPHPExcel->setActiveSheetIndex(0)->getStyle('G1')->getAlignment()
  246. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  247. $objPHPExcel->setActiveSheetIndex(0)->getStyle('H1')->getAlignment()
  248. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  249. //设置列水平居中
  250. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
  251. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  252. $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()
  253. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  254. $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()
  255. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  256. $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()
  257. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  258. $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()
  259. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  260. $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()
  261. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  262. $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()
  263. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  264. $objPHPExcel->setActiveSheetIndex(0)->getStyle('H')->getAlignment()
  265. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  266. //设置单元格宽度
  267. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
  268. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
  269. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
  270. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
  271. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
  272. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(50);
  273. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
  274. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
  275. //循环刚取出来的数组,将数据逐一添加到excel表格。
  276. for ($i = 0; $i < count($lists); $i++) {
  277. $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $lists[$i]['id']);
  278. $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $lists[$i]['real_name']);
  279. $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $lists[$i]['title']);
  280. $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $lists[$i]['items']);
  281. $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), $lists[$i]['create_time']);
  282. $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 2), $lists[$i]['return_time']);
  283. $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 2), $lists[$i]['confirm_time']);
  284. if($lists[$i]['mode'] == 1){
  285. $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2),'已收取');
  286. }elseif($lists[$i]['mode'] == 2){
  287. $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2),'已归还');
  288. }else{
  289. $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2),'已确认');
  290. }
  291. }
  292. //设置保存的Excel表格名称
  293. $filename = '洗涤记录'.'_' . date('YmdHis', time()) . '.xls';
  294. //设置当前激活的sheet表格名称
  295. $objPHPExcel->getActiveSheet()->setTitle('洗涤记录');
  296. //设置浏览器窗口下载表格
  297. ob_end_clean();
  298. header("Content-Type: application/force-download");
  299. header("Content-Type: application/octet-stream");
  300. header("Content-Type: application/download");
  301. header('Content-Disposition:inline;filename="' . $filename);
  302. //生成excel文件
  303. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  304. //下载文件在浏览器窗口
  305. return $objWriter->save('php://output');
  306. }
  307. }