DeviceRepair.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. // 页面仅展示列表,无搜索框
  22. return $this->fetch();
  23. }
  24. /**
  25. * 异步获取报修列表(用于表格渲染)
  26. * @return json
  27. */
  28. public function repair_list()
  29. {
  30. $where = Util::getMore([
  31. ['handle_status', ''], // 处理状态筛选(空=全部,0=未处理,1=已处理)
  32. ['page', 1],
  33. ['limit', 20],
  34. ['order', 'create_time DESC'] // 默认按提交时间倒序
  35. ]);
  36. // 调用模型获取列表(带分页)
  37. return Json::successlayui(DeviceRepairModel::getAdminRepairList($where));
  38. }
  39. /**
  40. * 核心处理功能:标记报修单为“已处理”/“未处理”
  41. * @param int $handle_status 处理状态(1=已处理,0=未处理)
  42. * @param int $id 报修单ID
  43. * @return json
  44. */
  45. public function set_handle($handle_status = '', $id = '')
  46. {
  47. // 参数验证
  48. if ($handle_status === '' || $id === '') {
  49. return Json::fail('缺少参数:状态或ID不能为空');
  50. }
  51. // 验证状态值合法性
  52. if (!in_array((int)$handle_status, [0, 1])) {
  53. return Json::fail('状态值错误:仅支持0(未处理)或1(已处理)');
  54. }
  55. // 调用模型处理状态更新(传入当前管理员ID)
  56. $adminId = $this->adminId; // 从AuthController继承的管理员ID
  57. $result = DeviceRepairModel::markStatus($id, (int)$handle_status, $adminId);
  58. if ($result) {
  59. return Json::successful($handle_status == 1 ? '标记为已处理成功' : '标记为未处理成功');
  60. } else {
  61. return Json::fail(DeviceRepairModel::getError() ?: ($handle_status == 1 ? '标记已处理失败' : '标记未处理失败'));
  62. }
  63. }
  64. /**
  65. * 下载报修表单(CSV格式)
  66. * @param int $id 报修单ID
  67. * @return \think\response\Stream|\think\response\Redirect
  68. */
  69. public function download($id)
  70. {
  71. if (!$id) {
  72. $this->error('请选择要下载的报修单');
  73. }
  74. // 调用模型生成下载文件流
  75. $stream = DeviceRepairModel::createDownloadStream($id);
  76. if (!$stream) {
  77. $this->error(DeviceRepairModel::getError() ?: '报修单不存在或已删除');
  78. }
  79. return $stream;
  80. }
  81. /**
  82. * 删除报修单
  83. * @param int $id 报修单ID
  84. * @return json
  85. */
  86. public function delete($id)
  87. {
  88. if (!$id) {
  89. return Json::fail('请选择要删除的报修单');
  90. }
  91. // 调用模型删除
  92. if (DeviceRepairModel::delRepair($id)) {
  93. return Json::successful('删除成功');
  94. } else {
  95. return Json::fail(DeviceRepair::getError() ?: '删除失败,请稍后重试');
  96. }
  97. }
  98. }