|
@@ -9,6 +9,11 @@ use Illuminate\Support\Carbon;
|
|
|
use App\Models\WeiBan\Follow as WeiBanFollow;
|
|
|
use App\Models\FilesManager;
|
|
|
use App\Models\WeiBan\External as WeiBanExternal;
|
|
|
+use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
|
|
+use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
|
+use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
|
|
+use PhpOffice\PhpSpreadsheet\Style\Fill;
|
|
|
|
|
|
/**
|
|
|
* 客户管理
|
|
@@ -223,4 +228,119 @@ class Custom extends Auth{
|
|
|
return json_send(['code'=>'success','msg'=>'批量导入成功','path'=>'']);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 导出表格
|
|
|
+ *
|
|
|
+ * */
|
|
|
+ public function down_excel(Model $Model,City $City){
|
|
|
+ // 接受参数
|
|
|
+ $code = request('custom_code','');
|
|
|
+ $phone = request('phone','');
|
|
|
+ $username = request('username','');
|
|
|
+ $weibanId = request('weiban_extid','');
|
|
|
+ $cityId = request('city_id',0);
|
|
|
+ $status = request('status');
|
|
|
+ $startTime = request('start_time','');
|
|
|
+ // 编码转ID
|
|
|
+ $uid = $Model->codeToId($code);
|
|
|
+ // 查询条件
|
|
|
+ $map = [];
|
|
|
+ // 编码ID
|
|
|
+ if( $uid ) $map[] = ['uid','=',$uid];
|
|
|
+ if( $phone ) $map[] = ['phone','=',$phone];
|
|
|
+ if( $username ) $map[] = ['username','=',$username];
|
|
|
+ if( $cityId ) $map[] = ['city_id','=',$cityId];
|
|
|
+ if( $weibanId ) $map[] = ['weiban_extid','=',$weibanId];
|
|
|
+ if( $startTime ) $map[] = ['insert_time','>=',Carbon::createFromFormat('Y-m-d',$startTime)->startOfDay()->getTimestamp()];
|
|
|
+ if( $startTime ) $map[] = ['insert_time','<=',Carbon::createFromFormat('Y-m-d',$startTime)->endOfDay()->getTimestamp()];
|
|
|
+ if( !is_null($status) ) $map[] = ['status','=',$status];
|
|
|
+ // 查询数据
|
|
|
+ $list = $Model->query()->where($map)->orderByDesc('uid')->get()->toArray();
|
|
|
+ // 循环处理数据
|
|
|
+ foreach ($list as $key => $value) {
|
|
|
+ // 城市名
|
|
|
+ $value['city_name'] = $value['city_id'] ? $City->getOne($value['city_id'],'name') : '';
|
|
|
+ // id转编号
|
|
|
+ $value['custom_code'] = $Model->idToCode($value['uid']);
|
|
|
+ // 重组
|
|
|
+ $list[$key] = $value;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 去下载
|
|
|
+ $this->toDown($list);
|
|
|
+ } catch (\Throwable $th) {
|
|
|
+ echo $th->getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 去下载
|
|
|
+ */
|
|
|
+ private function toDown($data){
|
|
|
+ // 创建新的电子表格对象
|
|
|
+ $spreadsheet = new Spreadsheet();
|
|
|
+ // 设置合并单元格的行和列,例如合并A1到B2的单元格
|
|
|
+ $sheet = $this->setStyle($spreadsheet);
|
|
|
+ // 从第二行写入
|
|
|
+ $row = 2;
|
|
|
+ // 循环写入
|
|
|
+ foreach ($data as $value) {
|
|
|
+ // 单元格内容写入
|
|
|
+ $sheet->setCellValue('A'.$row, $value['custom_code']);
|
|
|
+ //避免 = + - 识别成公式
|
|
|
+ $sheet->setCellValueExplicit('B'.$row, $value['username'],DataType::TYPE_STRING);
|
|
|
+ $sheet->setCellValue('C'.$row, $value['phone']);
|
|
|
+ $sheet->setCellValue('D'.$row, $value['weiban_extid']);
|
|
|
+ $sheet->setCellValue('E'.$row, $value['city_name']);
|
|
|
+ $sheet->setCellValue('F'.$row, $value['status']?'禁用':'正常');
|
|
|
+ $sheet->setCellValue('G'.$row, date('Y-m-d H:i:s',$value['insert_time']));
|
|
|
+ $sheet->setCellValue('H'.$row, date('Y-m-d H:i:s',$value['update_time']));
|
|
|
+ // 行数+1
|
|
|
+ $row++;
|
|
|
+ }
|
|
|
+ // 创建内容
|
|
|
+ $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
|
|
|
+ header('Pragma: public');
|
|
|
+ header('Content-type:application/vnd.ms-excel');
|
|
|
+ header('Content-Disposition: inline;filename=下载订单.xlsx');
|
|
|
+ // 输出数据流
|
|
|
+ return $writer->save('php://output');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置表格样式
|
|
|
+ *
|
|
|
+ */
|
|
|
+ private function setStyle(Spreadsheet $spreadsheet){
|
|
|
+ // 选择当前活动的工作表
|
|
|
+ $sheet = $spreadsheet->getActiveSheet();
|
|
|
+ // 宽
|
|
|
+ $sheet->getColumnDimension('A')->setWidth(15);
|
|
|
+ $sheet->getColumnDimension('B')->setWidth(15);
|
|
|
+ $sheet->getColumnDimension('C')->setWidth(15);
|
|
|
+ $sheet->getColumnDimension('D')->setWidth(30);
|
|
|
+ $sheet->getColumnDimension('E')->setWidth(15);
|
|
|
+ $sheet->getColumnDimension('F')->setWidth(15);
|
|
|
+ $sheet->getColumnDimension('G')->setWidth(20);
|
|
|
+ $sheet->getColumnDimension('H')->setWidth(20);
|
|
|
+ // 默认高度
|
|
|
+ $sheet->getDefaultRowDimension()->setRowHeight(18);
|
|
|
+ // 加粗第一行
|
|
|
+ $sheet->getStyle('A:H')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER)->setVertical(Alignment::VERTICAL_CENTER);
|
|
|
+ $sheet->getStyle('A1:H1')->getFont()->setBold(true);
|
|
|
+ $sheet->getStyle('A1:H1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF00FF00'); // ARGB颜色代码,例如绿色
|
|
|
+ // 设置表格标题
|
|
|
+ $sheet
|
|
|
+ ->setCellValue('A1', '客户编码')
|
|
|
+ ->setCellValue('B1', '客户昵称')
|
|
|
+ ->setCellValue('C1', '联系方式')
|
|
|
+ ->setCellValue('D1', '微伴ID')
|
|
|
+ ->setCellValue('E1', '客户城市')
|
|
|
+ ->setCellValue('F1', '客户状态')
|
|
|
+ ->setCellValue('G1', '创建时间')
|
|
|
+ ->setCellValue('H1', '更新时间');
|
|
|
+ // 返回结果
|
|
|
+ return $sheet;
|
|
|
+ }
|
|
|
+
|
|
|
}
|