| <?php |
| |
| namespace App\Exports; |
| |
| use App\Models\Order; |
| use Illuminate\Support\Collection; |
| use Maatwebsite\Excel\Concerns\FromCollection; |
| use Maatwebsite\Excel\Concerns\WithColumnFormatting; |
| use Maatwebsite\Excel\Concerns\WithHeadings; |
| use Maatwebsite\Excel\Concerns\WithMapping; |
| use PhpOffice\PhpSpreadsheet\Shared\Date; |
| use PhpOffice\PhpSpreadsheet\Style\NumberFormat; |
| |
| |
| |
| |
| class OrderExport implements FromCollection, WithHeadings, WithColumnFormatting, WithMapping |
| { |
| public $status; |
| |
| |
| public function __construct(int $status) |
| { |
| $this->status = $status; |
| } |
| |
| |
| |
| |
| |
| public function collection(): Collection |
| { |
| $query = Order::query(); |
| if ($this->status != -1) { |
| $query->where('status', $this->status); |
| } |
| return $query->get(); |
| } |
| |
| |
| |
| |
| |
| public function headings(): array |
| { |
| return [ |
| '编号', |
| '创建人', |
| '中队长', |
| '人员', |
| '名称', |
| '备注', |
| '状态', |
| '创建时间', |
| '更新时间' |
| ]; |
| } |
| |
| |
| |
| |
| |
| public function columnFormats(): array |
| { |
| return [ |
| 'H' => NumberFormat::FORMAT_DATE_YYYYMMDD, |
| 'I' => NumberFormat::FORMAT_DATE_YYYYMMDD, |
| ]; |
| } |
| |
| |
| |
| |
| |
| |
| public function map($row): array |
| { |
| return [ |
| $row->id, |
| $row->founder->name ?? '无', |
| $row->squadron->name ?? '无', |
| $row->player->name ?? '无', |
| $row->name, |
| $row->remark ?: '无', |
| $this->statusMap($row->status), |
| Date::dateTimeToExcel($row->created_at), |
| Date::dateTimeToExcel($row->updated_at), |
| ]; |
| } |
| |
| |
| |
| |
| |
| |
| public function statusMap($status): string |
| { |
| switch ($status) { |
| case 0: |
| $statusText = '待处理'; |
| break; |
| case 1: |
| $statusText = '处理中'; |
| break; |
| case 2: |
| $statusText = '待审核'; |
| break; |
| case 3: |
| $statusText = '已完成'; |
| break; |
| default: |
| $statusText = '未知'; |
| } |
| return $statusText; |
| } |
| } |