DeviceRepair.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\admin\controller\store;
  3. use app\admin\controller\AuthController;
  4. use think\Request;
  5. use think\facade\Route as Url;
  6. use app\admin\model\store\DeviceRepair as DeviceRepairModel; // 设备报修模型
  7. use crmeb\services\{JsonService as Json, UtilService as Util};
  8. /**
  9. * 设备报修管理控制器
  10. * Class DeviceRepair
  11. * @package app\admin\controller\repair
  12. */
  13. class DeviceRepair extends AuthController
  14. {
  15. /**
  16. * 显示报修列表页面
  17. * @return \think\Response
  18. */
  19. public function index()
  20. {
  21. // 获取状态筛选参数(默认-1表示全部)
  22. $status = $this->request->get('status', -1, 'intval');
  23. // 传递给视图
  24. $this->assign('status', $status);
  25. return $this->fetch();
  26. }
  27. /**
  28. * 异步获取报修列表(用于表格渲染)
  29. * @return json
  30. */
  31. public function repair_list()
  32. {
  33. $where = Util::getMore([
  34. ['status', ''], // 处理状态筛选(空=全部,0=未处理,1=已处理)
  35. ['page', 1],
  36. ['limit', 20],
  37. ['order', 'create_time DESC'] // 默认按提交时间倒序
  38. ]);
  39. // 调用模型获取列表(带分页)
  40. return Json::successlayui(DeviceRepairModel::getAdminRepairList($where));
  41. }
  42. /**
  43. * 核心处理功能:标记报修单为“已处理”/“未处理”
  44. * @param int $status 处理状态(1=已处理,0=未处理)
  45. * @param int $id 报修单ID
  46. * @return json
  47. */
  48. public function set_handle($status = '', $id = '')
  49. {
  50. // 参数验证
  51. if ($status === '' || $id === '') {
  52. return Json::fail('缺少参数:状态或ID不能为空');
  53. }
  54. // 验证状态值合法性
  55. if (!in_array((int)$status, [0, 1])) {
  56. return Json::fail('状态值错误:仅支持0(未处理)或1(已处理)');
  57. }
  58. // 调用模型处理状态更新(传入当前管理员ID)
  59. $adminId = $this->adminId; // 从AuthController继承的管理员ID
  60. $result = DeviceRepairModel::markStatus($id, (int)$status, $adminId);
  61. if ($result) {
  62. return Json::successful($status == 1 ? '标记为已处理成功' : '标记为未处理成功');
  63. } else {
  64. return Json::fail(DeviceRepairModel::getError() ?: ($status == 1 ? '标记已处理失败' : '标记未处理失败'));
  65. }
  66. }
  67. /**
  68. * 下载报修表单(CSV格式)
  69. * @param int $id 报修单ID
  70. * @return \think\response\Stream|\think\response\Redirect
  71. */
  72. public function download($id)
  73. {
  74. if (!$id) {
  75. $this->error('请选择要下载的报修单');
  76. }
  77. // 调用模型生成下载文件流
  78. $stream = DeviceRepairModel::createDownloadStream($id);
  79. if (!$stream) {
  80. $this->error(DeviceRepairModel::getError() ?: '报修单不存在或已删除');
  81. }
  82. return $stream;
  83. }
  84. /**
  85. * 删除报修单
  86. * @param int $id 报修单ID
  87. * @return json
  88. */
  89. public function delete($id)
  90. {
  91. if (!$id) {
  92. return Json::fail('请选择要删除的报修单');
  93. }
  94. // 调用模型删除
  95. if (DeviceRepairModel::delRepair($id)) {
  96. return Json::successful('删除成功');
  97. } else {
  98. return Json::fail(DeviceRepair::getError() ?: '删除失败,请稍后重试');
  99. }
  100. }
  101. }