Car.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. <?php
  2. /**
  3. +-----------------------------------------------------------------------------------------------
  4. * GouGuOPEN [ 左手研发,右手开源,未来可期!]
  5. +-----------------------------------------------------------------------------------------------
  6. * @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
  7. +-----------------------------------------------------------------------------------------------
  8. * @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
  9. +-----------------------------------------------------------------------------------------------
  10. * @Author 勾股工作室 <hdm58@qq.com>
  11. +-----------------------------------------------------------------------------------------------
  12. */
  13. declare (strict_types = 1);
  14. namespace app\adm\controller;
  15. use app\base\BaseController;
  16. use app\adm\model\Car as CarModel;
  17. use app\adm\validate\CarValidate;
  18. use think\exception\ValidateException;
  19. use think\facade\Db;
  20. use think\facade\View;
  21. class Car extends BaseController
  22. {
  23. /**
  24. * 构造函数
  25. */
  26. protected $model;
  27. public function __construct()
  28. {
  29. parent::__construct(); // 调用父类构造函数
  30. $this->model = new CarModel();
  31. }
  32. /**
  33. * 数据列表
  34. */
  35. public function datalist()
  36. {
  37. $param = get_params();
  38. if (request()->isAjax()) {
  39. $where=[];
  40. $where[]=['delete_time','=',0];
  41. if (!empty($param['keywords'])) {
  42. $where[] = ['id|title', 'like', '%' . $param['keywords'] . '%'];
  43. }
  44. $list = $this->model->datalist($where, $param);
  45. return table_assign(0, '', $list);
  46. }
  47. else{
  48. return view();
  49. }
  50. }
  51. /**
  52. * 添加/编辑
  53. */
  54. public function add()
  55. {
  56. $param = get_params();
  57. if (request()->isAjax()) {
  58. if (isset($param['insure_time'])) {
  59. $param['insure_time'] = strtotime($param['insure_time']);
  60. }
  61. if (isset($param['review_time'])) {
  62. $param['review_time'] = strtotime($param['review_time']);
  63. }
  64. if (isset($param['buy_time'])) {
  65. $param['buy_time'] = strtotime($param['buy_time']);
  66. }
  67. if (!empty($param['id']) && $param['id'] > 0) {
  68. try {
  69. validate(CarValidate::class)->scene('edit')->check($param);
  70. } catch (ValidateException $e) {
  71. // 验证失败 输出错误信息
  72. return to_assign(1, $e->getError());
  73. }
  74. $this->model->edit($param);
  75. } else {
  76. try {
  77. validate(CarValidate::class)->scene('add')->check($param);
  78. } catch (ValidateException $e) {
  79. // 验证失败 输出错误信息
  80. return to_assign(1, $e->getError());
  81. }
  82. $this->model->add($param);
  83. }
  84. }else{
  85. $id = isset($param['id']) ? $param['id'] : 0;
  86. if ($id>0) {
  87. $detail = $this->model->getById($id);
  88. if(!empty($detail['file_ids'])){
  89. $file_array = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  90. $detail['file_array'] = $file_array;
  91. }
  92. if($detail['driver']>0){
  93. $detail['driver_name'] = Db::name('Admin')->where('id','=',$detail['driver'])->value('name');
  94. }
  95. View::assign('detail', $detail);
  96. return view('edit');
  97. }
  98. return view();
  99. }
  100. }
  101. /**
  102. * 查看
  103. */
  104. public function view($id)
  105. {
  106. $detail = $this->model->getById($id);
  107. if (!empty($detail)) {
  108. if(!empty($detail['file_ids'])){
  109. $file_array = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  110. $detail['file_array'] = $file_array;
  111. }
  112. if($detail['driver']>0){
  113. $detail['driver_name'] = Db::name('Admin')->where('id','=',$detail['driver'])->value('name');
  114. }
  115. $latestMileage = Db::name('CarMileage')->where(['car_id'=>$detail['id'],'delete_time'=>0])->max('mileage');
  116. if(empty($latestMileage)){
  117. $latestMileage = $detail['mileage'];
  118. }
  119. $detail['latestMileage'] = $latestMileage;
  120. View::assign('detail', $detail);
  121. return view();
  122. }
  123. else{
  124. return view(EEEOR_REPORTING,['warning'=>'找不到页面']);
  125. }
  126. }
  127. /**
  128. * 删除
  129. */
  130. public function del()
  131. {
  132. $param = get_params();
  133. $id = isset($param['id']) ? $param['id'] : 0;
  134. if (request()->isDelete()) {
  135. $this->model->delById($id);
  136. } else {
  137. return to_assign(1, "错误的请求");
  138. }
  139. }
  140. //维修记录列表
  141. public function repair_list()
  142. {
  143. if (request()->isAjax()) {
  144. $param = get_params();
  145. $where = [];
  146. if (!empty($param['keywords'])) {
  147. $where[] = ['c.title', 'like', '%' . $param['keywords'] . '%'];
  148. }
  149. if (!empty($param['diff_time'])) {
  150. $diff_time =explode('~', $param['diff_time']);
  151. $where[] = ['cr.repair_time', 'between', [strtotime(urldecode($diff_time[0])),strtotime(urldecode($diff_time[1]))]];
  152. }
  153. $where[] = ['cr.types','=',1];
  154. $where[] = ['cr.delete_time','=',0];
  155. $model = new Car();
  156. $list = $this->model->repairlist($where, $param);
  157. return table_assign(0, '', $list);
  158. } else {
  159. return view();
  160. }
  161. }
  162. //维修记录添加&编辑
  163. public function repair_add()
  164. {
  165. $param = get_params();
  166. if (request()->isAjax()) {
  167. if (isset($param['repair_time'])) {
  168. $param['repair_time'] = strtotime($param['repair_time']);
  169. }
  170. if (!empty($param['id']) && $param['id'] > 0) {
  171. $param['update_time'] = time();
  172. $res = Db::name('CarRepair')->strict(false)->field(true)->update($param);
  173. if($res){
  174. add_log('edit', $param['id'], $param);
  175. return to_assign();
  176. }
  177. } else {
  178. $param['create_time'] = time();
  179. $insertId = Db::name('CarRepair')->strict(false)->field(true)->insertGetId($param);
  180. if ($insertId) {
  181. add_log('add', $insertId, $param);
  182. }
  183. return to_assign();
  184. }
  185. } else {
  186. $id = isset($param['id']) ? $param['id'] : 0;
  187. $cid = isset($param['cid']) ? $param['cid'] : 0;
  188. if ($id > 0) {
  189. $detail = Db::name('CarRepair')->where(['id' => $id])->find();
  190. $detail['handled_name'] = Db::name('Admin')->where('id',$detail['handled'])->value('name');
  191. $detail['car'] = Db::name('Car')->where('id',$detail['car_id'])->value('title');
  192. if($detail['file_ids'] !=''){
  193. $fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  194. $detail['fileArray'] = $fileArray;
  195. }
  196. View::assign('detail', $detail);
  197. return view('repair_edit');
  198. }
  199. if($cid>0){
  200. View::assign('car', $this->model->getById($cid));
  201. }
  202. View::assign('cid', $cid);
  203. View::assign('id', $id);
  204. return view();
  205. }
  206. }
  207. //维修记录查看
  208. public function repair_view()
  209. {
  210. $param = get_params();
  211. $id = isset($param['id']) ? $param['id'] : 0;
  212. $detail = Db::name('CarRepair')->where(['id' => $id])->find();
  213. $detail['handled_name'] = Db::name('Admin')->where('id',$detail['handled'])->value('name');
  214. $detail['car'] = Db::name('Car')->where('id',$detail['car_id'])->value('title');
  215. if($detail['file_ids'] !=''){
  216. $fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  217. $detail['fileArray'] = $fileArray;
  218. }
  219. View::assign('detail', $detail);
  220. return view();
  221. }
  222. //维修记录删除
  223. public function repair_del()
  224. {
  225. $param = get_params();
  226. $res = Db::name('CarRepair')->where('id',$param['id'])->update(['delete_time'=>time()]);
  227. if ($res) {
  228. add_log('delete', $param['id'], $param);
  229. return to_assign();
  230. }
  231. else{
  232. return to_assign(0, '操作失败');
  233. }
  234. }
  235. //保养记录列表
  236. public function protect_list()
  237. {
  238. if (request()->isAjax()) {
  239. $param = get_params();
  240. $where = [];
  241. if (!empty($param['keywords'])) {
  242. $where[] = ['c.title', 'like', '%' . $param['keywords'] . '%'];
  243. }
  244. if (!empty($param['diff_time'])) {
  245. $diff_time =explode('~', $param['diff_time']);
  246. $where[] = ['cr.repair_time', 'between', [strtotime(urldecode($diff_time[0])),strtotime(urldecode($diff_time[1]))]];
  247. }
  248. $where[] = ['cr.types','=',2];
  249. $where[] = ['cr.delete_time','=',0];
  250. $list = $this->model->repairlist($where, $param);
  251. return table_assign(0, '', $list);
  252. } else {
  253. return view();
  254. }
  255. }
  256. //保养记录添加&编辑
  257. public function protect_add()
  258. {
  259. $param = get_params();
  260. if (request()->isAjax()) {
  261. if (isset($param['repair_time'])) {
  262. $param['repair_time'] = strtotime($param['repair_time']);
  263. }
  264. if (!empty($param['id']) && $param['id'] > 0) {
  265. $param['update_time'] = time();
  266. $res = Db::name('CarRepair')->strict(false)->field(true)->update($param);
  267. if($res){
  268. add_log('edit', $param['id'], $param);
  269. return to_assign();
  270. }
  271. } else {
  272. $param['create_time'] = time();
  273. $param['types'] = 2;
  274. $insertId = Db::name('CarRepair')->strict(false)->field(true)->insertGetId($param);
  275. if ($insertId) {
  276. add_log('add', $insertId, $param);
  277. }
  278. return to_assign();
  279. }
  280. } else {
  281. $id = isset($param['id']) ? $param['id'] : 0;
  282. $cid = isset($param['cid']) ? $param['cid'] : 0;
  283. if ($id > 0) {
  284. $detail = Db::name('CarRepair')->where(['id' => $id])->find();
  285. $detail['handled_name'] = Db::name('Admin')->where('id',$detail['handled'])->value('name');
  286. $detail['car'] = Db::name('Car')->where('id',$detail['car_id'])->value('title');
  287. if($detail['file_ids'] !=''){
  288. $fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  289. $detail['fileArray'] = $fileArray;
  290. }
  291. View::assign('detail', $detail);
  292. return view('protect_edit');
  293. }
  294. if($cid>0){
  295. View::assign('car', $this->model->getById($cid));
  296. }
  297. View::assign('cid', $cid);
  298. View::assign('id', $id);
  299. return view();
  300. }
  301. }
  302. //保养记录查看
  303. public function protect_view()
  304. {
  305. $param = get_params();
  306. $id = isset($param['id']) ? $param['id'] : 0;
  307. $detail = Db::name('CarRepair')->where(['id' => $id])->find();
  308. $detail['handled_name'] = Db::name('Admin')->where('id',$detail['handled'])->value('name');
  309. $detail['car'] = Db::name('Car')->where('id',$detail['car_id'])->value('title');
  310. if($detail['file_ids'] !=''){
  311. $fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  312. $detail['fileArray'] = $fileArray;
  313. }
  314. View::assign('detail', $detail);
  315. return view();
  316. }
  317. //保养记录删除
  318. public function protect_del()
  319. {
  320. $param = get_params();
  321. $res = Db::name('CarRepair')->where('id',$param['id'])->update(['delete_time'=>time()]);
  322. if ($res) {
  323. add_log('delete', $param['id'], $param);
  324. return to_assign();
  325. }
  326. else{
  327. return to_assign(0, '操作失败');
  328. }
  329. }
  330. //费用记录列表
  331. public function fee_list()
  332. {
  333. if (request()->isAjax()) {
  334. $param = get_params();
  335. $where = [];
  336. if (!empty($param['keywords'])) {
  337. $where[] = ['cf.title|c.title', 'like', '%' . $param['keywords'] . '%'];
  338. }
  339. if (!empty($param['diff_time'])) {
  340. $diff_time =explode('~', $param['diff_time']);
  341. $where[] = ['cf.fee_time', 'between', [strtotime(urldecode($diff_time[0])),strtotime(urldecode($diff_time[1]))]];
  342. }
  343. if (!empty($param['types'])) {
  344. $where[] = ['cf.types','=',$param['types']];
  345. }
  346. $where[] = ['cf.delete_time','=',0];
  347. $list = $this->model->feelist($where, $param);
  348. return table_assign(0, '', $list);
  349. } else {
  350. return view();
  351. }
  352. }
  353. //费用记录添加&编辑
  354. public function fee_add()
  355. {
  356. $param = get_params();
  357. if (request()->isAjax()) {
  358. if (isset($param['fee_time'])) {
  359. $param['fee_time'] = strtotime($param['fee_time']);
  360. }
  361. if (!empty($param['id']) && $param['id'] > 0) {
  362. $param['update_time'] = time();
  363. $res = Db::name('CarFee')->strict(false)->field(true)->update($param);
  364. if($res){
  365. add_log('edit', $param['id'], $param);
  366. return to_assign();
  367. }
  368. } else {
  369. $param['create_time'] = time();
  370. $insertId = Db::name('CarFee')->strict(false)->field(true)->insertGetId($param);
  371. if ($insertId) {
  372. add_log('add', $insertId, $param);
  373. }
  374. return to_assign();
  375. }
  376. } else {
  377. $id = isset($param['id']) ? $param['id'] : 0;
  378. $cid = isset($param['cid']) ? $param['cid'] : 0;
  379. if ($id > 0) {
  380. $detail = Db::name('CarFee')->where(['id' => $id])->find();
  381. $detail['handled_name'] = Db::name('Admin')->where('id',$detail['handled'])->value('name');
  382. $detail['car'] = Db::name('Car')->where('id',$detail['car_id'])->value('title');
  383. if($detail['file_ids'] !=''){
  384. $fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  385. $detail['fileArray'] = $fileArray;
  386. }
  387. View::assign('detail', $detail);
  388. return view('fee_edit');
  389. }
  390. if($cid>0){
  391. View::assign('car', $this->model->getById($cid));
  392. }
  393. View::assign('cid', $cid);
  394. View::assign('id', $id);
  395. return view();
  396. }
  397. }
  398. //费用记录查看
  399. public function fee_view()
  400. {
  401. $param = get_params();
  402. $id = isset($param['id']) ? $param['id'] : 0;
  403. $detail = Db::name('CarFee')->where(['id' => $id])->find();
  404. $detail['handled_name'] = Db::name('Admin')->where('id',$detail['handled'])->value('name');
  405. $detail['car'] = Db::name('Car')->where('id',$detail['car_id'])->value('title');
  406. $detail['types_str'] = Db::name('basicAdm')->where('id',$detail['types'])->value('title');
  407. if($detail['file_ids'] !=''){
  408. $fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  409. $detail['fileArray'] = $fileArray;
  410. }
  411. View::assign('detail', $detail);
  412. return view();
  413. }
  414. //费用记录删除
  415. public function fee_del()
  416. {
  417. $param = get_params();
  418. $res = Db::name('CarFee')->where('id',$param['id'])->update(['delete_time'=>time()]);
  419. if ($res) {
  420. add_log('delete', $param['id'], $param);
  421. return to_assign();
  422. }
  423. else{
  424. return to_assign(0, '操作失败');
  425. }
  426. }
  427. //获取里程数记录
  428. public function mileage_list()
  429. {
  430. $param = get_params();
  431. $where = array();
  432. $where[] = ['car_id', '=', $param['car_id']];
  433. $where[] = ['delete_time', '=', 0];
  434. $this->model->mileagelist($where, $param);
  435. table_assign(0, '', $list);
  436. }
  437. //增加里程数记录
  438. public function mileage_add()
  439. {
  440. $param = get_params();
  441. if (request()->isAjax()) {
  442. if (isset($param['mileage_time'])) {
  443. $param['mileage_time'] = strtotime($param['mileage_time']);
  444. }
  445. $latestMileage = Db::name('CarMileage')->where([['id','<>',$param['id']],['car_id','=',$param['car_id']],['delete_time','=',0]])->order('mileage_time', 'desc')->value('mileage');
  446. $mileage = Db::name('Car')->where('id',$param['car_id'])->value('mileage');
  447. if(empty($latestMileage)){
  448. $latestMileage = $mileage;
  449. }
  450. if($param['mileage'] < $latestMileage){
  451. return to_assign(1,'新增的里程数,不能小于现有里程数');
  452. }
  453. if (!empty($param['id']) && $param['id'] > 0) {
  454. $param['update_time'] = time();
  455. $res = Db::name('CarMileage')->strict(false)->field(true)->update($param);
  456. return to_assign();
  457. } else {
  458. $param['create_time'] = time();
  459. $param['admin_id'] = $this->uid;
  460. $insertId = Db::name('CarMileage')->strict(false)->field(true)->insertGetId($param);
  461. return to_assign();
  462. }
  463. }
  464. }
  465. //里程数记录删除
  466. public function mileage_del()
  467. {
  468. $param = get_params();
  469. $res = Db::name('CarMileage')->where('id',$param['id'])->update(['delete_time'=>time()]);
  470. if ($res) {
  471. return to_assign();
  472. }
  473. else{
  474. return to_assign(1, '操作失败');
  475. }
  476. }
  477. }