Order.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace app\admin\controller;
  3. use app\common\model\OrderModel;
  4. use app\common\model\StoreModel;
  5. use app\Request;
  6. use think\App;
  7. use think\facade\View;
  8. class Order extends \app\BaseController
  9. {
  10. private $model;
  11. private $storeModel;
  12. public function __construct(App $app)
  13. {
  14. $this->model = new OrderModel();
  15. $this->storeModel = new StoreModel();
  16. parent::__construct($app);
  17. }
  18. public function index(Request $request) {
  19. $params = $request->param();
  20. $format_params = [
  21. 'store_id' => format_string($params['store_id'] ?? null),
  22. 'type' => format_string($params['type'] ?? null) != null ? (int)$params['type']: null,
  23. ];
  24. $orders = $this->model->findByPaginate($format_params);
  25. View::assign([
  26. 'list' => $orders,
  27. 'all_store' =>$this->storeModel->findAllStore(),
  28. 'params' => $format_params
  29. ]);
  30. return view();
  31. }
  32. public function edit(Request $request) {
  33. $params = $request->param();
  34. if(!isset($params['id']))
  35. return $this->fail(lang('ID not exist'));
  36. $order = $this->model->findById($params['id']);
  37. View::assign([
  38. 'order' => $order,
  39. ]);
  40. return view();
  41. }
  42. public function report(Request $request) {
  43. $params = $request->param();
  44. $format_params = [
  45. 'store_id' => format_string($params['store_id'] ?? null),
  46. 'type' => format_string($params['type'] ?? null) != null ? (int)$params['type']: null,
  47. ];
  48. $orders = $this->model->report($format_params)->toArray();
  49. $objPHPExcel = new \PHPExcel();
  50. try {
  51. $objSheet = $objPHPExcel->getActiveSheet();
  52. //工作表标题
  53. $objSheet->setTitle("sheet1");
  54. //第一行内容,放列标题
  55. $objSheet->setCellValue("A1", lang("Order no"));
  56. $objSheet->setCellValue("B1", lang("Customer"));
  57. $objSheet->setCellValue("C1", lang("Store"));
  58. $objSheet->setCellValue("D1", lang("Product"));
  59. $objSheet->setCellValue("E1", lang("Rental amount"));
  60. $objSheet->setCellValue("F1", lang("Receivable amount"));
  61. $objSheet->setCellValue("G1", lang("Receive amount"));
  62. $objSheet->setCellValue("H1", lang("Imposed amount"));
  63. $objSheet->setCellValue("I1", lang("Creator"));
  64. //设置第一行的背景颜色
  65. $objPHPExcel->getActiveSheet()
  66. ->getStyle('A1:I1')
  67. ->getFill()
  68. ->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)
  69. ->getStartColor()
  70. ->setRGB('FFFF00');
  71. //后面行循环放内容
  72. for($i=0;$i<count($orders);$i++){
  73. $order = $orders[$i];
  74. $objSheet->setCellValue("A".($i + 2), $order['no']);
  75. $objSheet->setCellValue("B".($i + 2), '【'.$order["customer_id"].'】'.$order['customer_name']);
  76. $objSheet->setCellValue("C".($i + 2), '【'.$order['store_id'].'】'.$order['store']['name']);
  77. $objSheet->setCellValue("D".($i + 2), join('<br />', array_map(function($data) {
  78. return $data['product_name'];
  79. },$order['products'])));
  80. $objSheet->setCellValue("E".($i + 2), $order['rental_amount']);
  81. $objSheet->setCellValue("F".($i + 2), $order['receivable_amount']);
  82. $objSheet->setCellValue("G".($i + 2), $order['receive_amount']);
  83. $objSheet->setCellValue("H".($i + 2), $order['imposed_amount']);
  84. $objSheet->setCellValue("I".($i + 2), '【'.$order["admin_id"].'】'.$order['admin_name']);
  85. }
  86. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  87. $fileName = "order";
  88. header('Content-Disposition: attachment;filename="'.$fileName.'.xlsx"'); //设置excel文件名称
  89. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  90. return json($objWriter->save("php://output"));
  91. } catch (\PHPExcel_Exception $e) {
  92. }
  93. }
  94. }