Quellcode durchsuchen

【Add】增加客户列表导出功能

liuxiangxin vor 5 Monaten
Ursprung
Commit
d65cf7b0bd

+ 120 - 0
app/Http/Controllers/Admin/Custom.php

@@ -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;
+	}
+
 }

BIN
resources.zip


+ 8 - 3
resources/views/admin/custom/index.blade.php

@@ -15,7 +15,7 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 	@endif
 </div>
 @endif
-<form action="" method="get" class="form-horizontal form-line">
+<form action="" method="get" name="thisform" class="form-horizontal form-line">
 	<div class="form-group col col-lg-2 col-md-2 col-sm-2 col-xs-2" style="margin-right: 2px;">
 		<input type="text" class="form-control" name="custom_code" value="{{request('custom_code','')}}" placeholder="请输入客户编码查询" />
 	</div>
@@ -46,8 +46,13 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 	<div class="form-group col col-lg-2 col-md-2 col-sm-2 col-xs-2" style="margin-right: 2px;">
 		<input type="date" class="form-control" name="start_time" value="{{request('start_time','')}}" placeholder="请输入创建时间查询" />
 	</div>
-	<input type="submit" class="btn btn-sm btn-primary" value="查询"/>
-	<a href="{{url('admin/custom/index')}}" class="btn btn-sm btn-default" >重置</a>
+	<div class="form-group col col-xs-4 col-md-2" style="margin-right: 2px;">
+		<button type="button" onclick="alter_from_attr({'method':'get','action':''})" class="btn btn-sm btn-primary" style="margin-right: 20px;"> 查询</button>
+		<a href="{{url('admin/custom/index')}}" class="btn btn-sm btn-default" style="margin-right: 20px;" >重置</a>
+		@if( check_auth('admin/custom/down_excel') )
+		<button type="button" onclick="alter_from_attr({'method':'get','action':`{{url('admin/custom/down_excel')}}`})" class="btn btn-sm btn-primary"> 下载表格</button>
+		@endif
+	</div>
 </form>
 
 <div class="row">

+ 2 - 0
routes/web.php

@@ -132,6 +132,8 @@ Route::middleware('admin')->prefix('admin')->group(function(){
     Route::any('custom/set_status',[App\Http\Controllers\Admin\Custom::class,'set_status']);
     // 订单导入
     Route::any('custom/import_execl',[App\Http\Controllers\Admin\Custom::class,'import_execl']);
+    // 订单导入
+    Route::any('custom/down_excel',[App\Http\Controllers\Admin\Custom::class,'down_excel']);
 
     /* 积分管理 */
     // 列表