提交代码

This commit is contained in:
baji 2025-03-10 18:04:52 +08:00
parent 6c6b3af210
commit f117ce532e
4 changed files with 911 additions and 386 deletions

View File

@ -13,6 +13,12 @@ use app\common\model\User;
use think\facade\View;
use think\Request;
use think\facade\Db;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Font;
use PhpOffice\PhpSpreadsheet\IOFactory;
class Order extends Base
@ -275,12 +281,23 @@ class Order extends Base
}
$field = '*';
$order = 'id desc';
$all_goodslist_money = 0;
$data = OrderListSend::getList($whe, $field, $order, $this->page);
foreach ($data['list'] as &$value) {
$user_info = User::field('nickname,headimg,mobile')->where(['id' => $value['user_id']])->find();
$value['nickname'] = $user_info['nickname'];
$value['headimg'] = $user_info['headimg'];
$value['mobile'] = $user_info['mobile'];
if ($user_info) {
$value['nickname'] = $user_info['nickname'];
$value['headimg'] = $user_info['headimg'];
$value['mobile'] = $user_info['mobile'];
} else {
$value['nickname'] = '';
$value['headimg'] = '';
$value['mobile'] = '';
}
$goodslist_money = OrderList::where('send_num', '=', $value['send_num'])->sum('goodslist_money');
$value['goodslist_money'] = $goodslist_money;
$all_goodslist_money += $goodslist_money;
}
View::assign('list', $data['list']);
View::assign('count', $data['count']);
@ -288,6 +305,7 @@ class Order extends Base
View::assign('user_id', $user_id ? $user_id : 0);
View::assign('mobile', $mobile ? $mobile : 0);
View::assign('send_num', $send_num ? $send_num : 0);
View::assign('all_goodslist_money', $all_goodslist_money ? $all_goodslist_money : 0);
View::assign('status', $status ? $status : 0);
View::assign('str_addtime', $str_addtime ? $str_addtime : 0);
return View::fetch('Order/send_order');
@ -512,15 +530,14 @@ class Order extends Base
$mobile = trim(input('get.mobile'));
$order_num = trim(input('get.order_num'));
$addtime = trim(input('get.addtime'));
$whe = array();
$whe[] = ['status', '=', 1];
$whe[] = ['kd_is', '=', 0];
$whe = [['status', '=', 1], ['kd_is', '=', 0]];
if ($user_id) {
$user_id = $user_id - 1260;
$whe[] = ['user_id', '=', $user_id];
}
if ($mobile) {
$mobile = User::field('id')->where('mobile', '=', $mobile)->value('id');
$mobile = User::where('mobile', $mobile)->value('id');
$whe[] = ['user_id', '=', $mobile];
}
if ($order_num) {
@ -528,239 +545,160 @@ class Order extends Base
}
if ($addtime) {
$time = explode('_', $addtime);
$start_time = $time[0];
$end_time = $time[1];
if ($start_time > $end_time) {
if ($time[0] > $time[1]) {
return $this->renderError('开始时间不能大于结束时间');
}
$whe[] = ['addtime', 'BETWEEN', array($start_time, $end_time)];
$whe[] = ['addtime', 'BETWEEN', [$time[0], $time[1]]];
}
#数据
$data = OrderModel::where($whe)
->append(['user_info'])
->order('id desc')
->select()
->toArray();
$data = OrderModel::where($whe)->append(['user_info'])->order('id desc')->select()->toArray();
if (!$data) {
return $this->renderError('未找到数据');
}
$save_name = substr(dirname($_SERVER['SCRIPT_FILENAME']), 0, -6);
require $save_name . 'extend/phpexcel/PHPExcel.php';
//3.实例化PHPExcel类
$objPHPExcel = new \PHPExcel();
//4.激活当前的sheet表
$objPHPExcel->setActiveSheetIndex(0);
//5.设置表格头即excel表格的第一行
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '订单号')
->setCellValue('B1', '用户信息')
->setCellValue('C1', '盒子信息')
->setCellValue('D1', '盒子类型')
->setCellValue('E1', '订单金额')
->setCellValue('F1', '折扣')
->setCellValue('G1', '折扣金额')
->setCellValue('H1', '微信支付')
->setCellValue('I1', '余额抵扣')
->setCellValue('J1', '吧唧币抵扣')
->setCellValue('K1', '积分支付')
->setCellValue('L1', '时间');
//设置A列水平居中
$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(25);
$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('H')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('I')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('J')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('K')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('L')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:L1')->getAlignment()
->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:L1')->getAlignment()
->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setBold(true);
//设置单元格宽度
//6.循环刚取出来的数组将数据逐一添加到excel表格。
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(40);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(50);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(50);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('I')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('J')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('K')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('L')->setWidth(30);
$line = 1;
foreach ($data as $key => $value) {
$line++;
#订单号
$order_num = $value['order_num'];
#用户信息
$user_info = 'ID' . $value['user_id'] . " " . '昵称:' . $value['user_info']['nickname'] . " " . '手机号:' . $value['user_info']['mobile'];
#奖品信息
$goods_info = '盒子名称:' . $value['goods_title'];
if ($value['num']) {
$goods_info .= " " . '箱号:' . $value['num'];
}
#盒子类型
$order_type_name = '';
if ($value['order_type'] == 1) {
$order_type_name = '一番赏';
} elseif ($value['order_type'] == 2) {
$order_type_name = '无限赏';
} elseif ($value['order_type'] == 3) {
$order_type_name = '擂台赏';
} elseif ($value['order_type'] == 4) {
$order_type_name = '抽卡机';
} elseif ($value['order_type'] == 5) {
$order_type_name = '积分赏';
}
#时间
$addtime = date('Y-m-d H:i:s', $value['addtime']);
#开始导出
$objPHPExcel->getActiveSheet()->setCellValue('A' . $line, $order_num);#订单号
$objPHPExcel->getActiveSheet()->setCellValue('B' . $line, $user_info);#用户信息
$objPHPExcel->getActiveSheet()->setCellValue('C' . $line, $goods_info);#盒子信息
$objPHPExcel->getActiveSheet()->setCellValue('D' . $line, $order_type_name);#盒子类型
$objPHPExcel->getActiveSheet()->setCellValue('E' . $line, $value['order_total']);#订单金额
$objPHPExcel->getActiveSheet()->setCellValue('F' . $line, $value['zhe']);#折扣
$objPHPExcel->getActiveSheet()->setCellValue('G' . $line, $value['order_zhe_total']);#折扣金额
$objPHPExcel->getActiveSheet()->setCellValue('H' . $line, $value['price']);#微信支付
$objPHPExcel->getActiveSheet()->setCellValue('I' . $line, $value['use_money']);#余额抵扣
$objPHPExcel->getActiveSheet()->setCellValue('J' . $line, $value['use_integral']);#吧唧币抵扣
$objPHPExcel->getActiveSheet()->setCellValue('K' . $line, $value['use_score']);#积分支付
$objPHPExcel->getActiveSheet()->setCellValue('L' . $line, $addtime);#时间
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// 设置表头
$headers = ['订单号', '用户信息', '盒子信息', '盒子类型', '订单金额', '折扣', '折扣金额', '微信支付', '余额抵扣', '吧唧币抵扣', '积分支付', '时间'];
foreach ($headers as $col => $text) {
$sheet->setCellValueByColumnAndRow($col + 1, 1, $text);
}
//7.设置保存的Excel表格名称
$filename = '购买列表信息' . date('y-m-d H_i_s', time()) . '.xls';
//8.设置当前激活的sheet表格名称
$objPHPExcel->getActiveSheet()->setTitle('现金套餐订单信息');
//9.设置浏览器窗口下载表格
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="' . $filename . '"');
//生成excel文件
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//下载文件在浏览器窗口
$objWriter->save('php://output');
// 设置样式
$sheet->getStyle('A1:L1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A1:L1')->getFont()->setBold(true);
// 设置列宽
$widths = [40, 50, 50, 30, 30, 30, 30, 30, 30, 30, 30, 30];
foreach (range('A', 'L') as $i => $col) {
$sheet->getColumnDimension($col)->setWidth($widths[$i]);
}
// 填充数据
$line = 2;
foreach ($data as $value) {
try {
$sheet->setCellValue('A' . $line, $value['order_num']);
if ($value['user_info']) {
$sheet->setCellValue('B' . $line, 'ID' . $value['user_id'] . ' 昵称:' . $value['user_info']['nickname'] . ' 手机号:' . $value['user_info']['mobile']);
} else {
$sheet->setCellValue('B' . $line, 'ID' . $value['user_id'] . ' 昵称: 手机号:');
}
$sheet->setCellValue('C' . $line, '盒子名称:' . $value['goods_title'] . ($value['num'] ? ' 箱号:' . $value['num'] : ''));
$sheet->setCellValue('D' . $line, ['1' => '一番赏', '2' => '无限赏', '3' => '擂台赏', '4' => '抽卡机', '5' => '积分赏'][$value['order_type']] ?? '');
$sheet->setCellValue('E' . $line, $value['order_total']);
$sheet->setCellValue('F' . $line, $value['zhe']);
$sheet->setCellValue('G' . $line, $value['order_zhe_total']);
$sheet->setCellValue('H' . $line, $value['price']);
$sheet->setCellValue('I' . $line, $value['use_money']);
$sheet->setCellValue('J' . $line, $value['use_integral']);
$sheet->setCellValue('K' . $line, $value['use_score']);
$sheet->setCellValue('L' . $line, date('Y-m-d H:i:s', $value['addtime']));
} catch (\Throwable $th) {
//throw $th;
$c = $value;
}
$line++;
}
// 输出 Excel
$filename = '购买列表信息_' . date('Y-m-d_H-i-s') . '.xls';
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$writer = new Xls($spreadsheet);
$writer->save('php://output');
exit;
}
/**
* 兑换订单导出
*/
public function recovery_order_daochu()
{
$user_id = trim(input('get.user_id'));
$mobile = trim(input('get.mobile'));
$addtime = trim(input('get.addtime'));
$whe = array();
$whe = [];
if ($user_id) {
$user_id = $user_id - 1260;
$whe[] = ['user_id', '=', $user_id];
}
if ($mobile) {
$mobile = User::field('id')->where('mobile', '=', $mobile)->value('id');
$whe[] = ['user_id', '=', $mobile];
$mobile = User::where('mobile', '=', $mobile)->value('id');
if ($mobile) {
$whe[] = ['user_id', '=', $mobile];
}
}
if ($addtime) {
$time = explode('_', $addtime);
$start_time = $time[0];
$end_time = $time[1];
if ($start_time > $end_time) {
return $this->renderError('开始时间不能大于结束时间');
if (count($time) == 2) {
[$start_time, $end_time] = $time;
if ($start_time > $end_time) {
return $this->renderError('开始时间不能大于结束时间');
}
$whe[] = ['addtime', 'BETWEEN', [$start_time, $end_time]];
}
$whe[] = ['addtime', 'BETWEEN', array($start_time, $end_time)];
}
#数据
$data = OrderListRecovery::where($whe)
->append(['user_info', 'status_name'])
->order('id desc')
->select()
->toArray();
if (!$data) {
return $this->renderError('未找到数据');
}
$save_name = substr(dirname($_SERVER['SCRIPT_FILENAME']), 0, -6);
require $save_name . 'extend/phpexcel/PHPExcel.php';
//3.实例化PHPExcel类
$objPHPExcel = new \PHPExcel();
//4.激活当前的sheet表
$objPHPExcel->setActiveSheetIndex(0);
//5.设置表格头即excel表格的第一行
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '用户信息')
->setCellValue('B1', '兑换金额')
->setCellValue('C1', '兑换数量')
->setCellValue('D1', '兑换时间');
//设置A列水平居中
$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(25);
$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:D1')->getAlignment()
->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:D1')->getAlignment()
->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true);
// 设置表头
$headers = ['用户信息', '兑换金额', '兑换数量', '兑换时间'];
$columns = ['A', 'B', 'C', 'D'];
//设置单元格宽度
//6.循环刚取出来的数组将数据逐一添加到excel表格。
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(70);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(30);
$line = 1;
foreach ($data as $key => $value) {
$line++;
#用户信息
$user_info = 'ID' . $value['user_id'] . " " . '昵称:' . $value['user_info']['nickname'] . " " . '手机号:' . $value['user_info']['mobile'];
#申请时间
$addtime = date('Y-m-d H:i:s', $value['addtime']);
#开始导出
$objPHPExcel->getActiveSheet()->setCellValue('A' . $line, $user_info);#用户信息
$objPHPExcel->getActiveSheet()->setCellValue('B' . $line, $value['money']);#兑换金额
$objPHPExcel->getActiveSheet()->setCellValue('C' . $line, $value['count']);#兑换数量
$objPHPExcel->getActiveSheet()->setCellValue('D' . $line, $addtime);#兑换时间
foreach ($headers as $index => $header) {
$col = $columns[$index] . '1';
$sheet->setCellValue($col, $header);
$sheet->getColumnDimension($columns[$index])->setAutoSize(true);
}
//7.设置保存的Excel表格名称
$filename = '兑换列表信息' . date('y-m-d H_i_s', time()) . '.xls';
//8.设置当前激活的sheet表格名称
$objPHPExcel->getActiveSheet()->setTitle('现金套餐订单信息');
//9.设置浏览器窗口下载表格
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="' . $filename . '"');
//生成excel文件
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//下载文件在浏览器窗口
$objWriter->save('php://output');
$sheet->getStyle('A1:D1')->getFont()->setBold(true);
$sheet->getStyle('A1:D1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$line = 2;
foreach ($data as $value) {
$user_info = 'ID' . ($value['user_id'] ?? '未知') . ' 昵称:' . ($value['user_info']['nickname'] ?? '未知') . ' 手机号:' . ($value['user_info']['mobile'] ?? '未知');
$addtime = date('Y-m-d H:i:s', $value['addtime']);
$sheet->setCellValue('A' . $line, $user_info);
$sheet->setCellValue('B' . $line, $value['money']);
$sheet->setCellValue('C' . $line, $value['count']);
$sheet->setCellValue('D' . $line, $addtime);
$line++;
}
$filename = '兑换列表信息_' . date('Y-m-d_H_i_s') . '.xls';
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$writer = new Xls($spreadsheet);
$writer->save('php://output');
exit;
}
/**
* 发货订单导出
*/
/**
* 发货订单导出
*/
@ -771,174 +709,105 @@ class Order extends Base
$send_num = trim(input('get.send_num'));
$status = trim(input('get.status'));
$addtime = trim(input('get.addtime'));
if ($status == 4) {
return $this->renderError('不可导出已取消状态');
}
$whe = array();
if ($status) {
$whe[] = ['status', '=', $status];
} else {
$whe[] = ['status', 'in', [1, 2, 3]];
$whe = [['status', 'in', [1, 2, 3]]];
if ($status) {
$whe = [['status', '=', $status]];
}
if ($user_id) {
$user_id = $user_id - 1260;
$whe[] = ['user_id', '=', $user_id];
$whe[] = ['user_id', '=', $user_id - 1260];
}
if ($mobile) {
$mobile = User::field('id')->where('mobile', '=', $mobile)->value('id');
$mobile = User::where('mobile', $mobile)->value('id');
$whe[] = ['user_id', '=', $mobile];
}
if ($send_num) {
$whe[] = ['send_num', '=', $send_num];
}
if ($addtime) {
$time = explode('_', $addtime);
$start_time = $time[0];
$end_time = $time[1];
[$start_time, $end_time] = explode('_', $addtime);
if ($start_time > $end_time) {
return $this->renderError('开始时间不能大于结束时间');
}
$whe[] = ['addtime', 'BETWEEN', array($start_time, $end_time)];
$whe[] = ['addtime', 'BETWEEN', [$start_time, $end_time]];
}
#数据
// 获取数据
$data = OrderListSend::where($whe)
->append(['user_info', 'status_name'])
->order('id desc')
->select()
->toArray();
if (!$data) {
return $this->renderError('未找到数据');
}
$save_name = substr(dirname($_SERVER['SCRIPT_FILENAME']), 0, -6);
require $save_name . 'extend/phpexcel/PHPExcel.php';
//3.实例化PHPExcel类
$objPHPExcel = new \PHPExcel();
//4.激活当前的sheet表
$objPHPExcel->setActiveSheetIndex(0);
//5.设置表格头即excel表格的第一行
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '订单号')
->setCellValue('B1', '用户信息')
->setCellValue('C1', '状态')
->setCellValue('D1', '收货姓名')
->setCellValue('E1', '收货电话')
->setCellValue('F1', '收货地址')
->setCellValue('G1', '奖品名称')
->setCellValue('H1', '奖品价格')
->setCellValue('I1', '奖品数量')
->setCellValue('J1', '赠送编码')
->setCellValue('K1', '奖品类型')
->setCellValue('L1', '申请时间')
->setCellValue('M1', '备注');
//设置A列水平居中
$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(25);
// 创建 Spreadsheet
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('H')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('I')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('J')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('K')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('L')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('M')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// 设置表头
$headers = ['订单号', '用户信息', '状态', '收货姓名', '收货电话', '收货地址', '奖品名称', '奖品价格', '奖品数量', '赠送编码', '奖品类型', '申请时间', '备注'];
foreach ($headers as $col => $header) {
$sheet->setCellValueByColumnAndRow($col + 1, 1, $header);
}
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:M1')->getAlignment()
->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:M1')->getAlignment()
->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A1:M1')->getFont()->setBold(true);
$sheet->getStyle("A1:M1")->getFont()->setBold(true);
$sheet->getStyle("A1:M1")->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
//设置单元格宽度
//6.循环刚取出来的数组将数据逐一添加到excel表格。
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(40);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(50);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(50);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('I')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('J')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('K')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('L')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('M')->setWidth(30);
$line = 1;
foreach ($data as $key => $value) {
#订单号
$send_num = $value['send_num'];
#用户信息
$user_info = 'ID' . $value['user_id'] . " " . '昵称:' . $value['user_info']['nickname'] . " " . '手机号:' . $value['user_info']['mobile'];
#状态
$status = $value['status_name'];
#收货姓名
$name = $value['name'];
#收货电话
$mobile = $value['mobile'];
#收货地址
$address = $value['address'];
#申请时间
// 填充数据
$row = 2;
foreach ($data as $value) {
$user_info = 'ID' . $value['user_id'] . " 昵称:" . $value['user_info']['nickname'] . " 手机号:" . $value['user_info']['mobile'];
$addtime = date('Y-m-d H:i:s', $value['addtime']);
#奖品信息
$goods = OrderList::field('goodslist_id,goodslist_title,goodslist_price,goodslist_money,shang_id,count(`id`) as num')
$goods = OrderList::where('send_num', $value['send_num'])
->append(['shang_title', 'card_no'])
->where('send_num', '=', $value['send_num'])
->group('prize_code')
->order('id desc')
->select()->toArray();
#备注
$message = $value['message'];
foreach ($goods as $goods_key => $goods_value) {
$line++;
#赠送编码
$card_no = $goods_value['card_no'];
#奖品信息
$goods_title = $goods_value['goodslist_title'];
$goods_price = $goods_value['goodslist_price'];
#奖品数量
$goods_num = $goods_value['num'];
#奖品类型
$goods_shang_title = $goods_value['shang_title'];
#开始导出
$objPHPExcel->getActiveSheet()->setCellValue('A' . $line, $send_num);#订单号
$objPHPExcel->getActiveSheet()->setCellValue('B' . $line, $user_info);#用户信息
$objPHPExcel->getActiveSheet()->setCellValue('C' . $line, $status);#状态
$objPHPExcel->getActiveSheet()->setCellValue('D' . $line, $name);#收货姓名
$objPHPExcel->getActiveSheet()->setCellValue('E' . $line, $mobile);#收货电话
$objPHPExcel->getActiveSheet()->setCellValue('F' . $line, $address);#收货详细地址
$objPHPExcel->getActiveSheet()->setCellValue('G' . $line, $goods_title);#奖品名称
$objPHPExcel->getActiveSheet()->setCellValue('H' . $line, $goods_price);#奖品价格
$objPHPExcel->getActiveSheet()->setCellValue('I' . $line, $goods_num);#奖品数量
$objPHPExcel->getActiveSheet()->setCellValue('J' . $line, $card_no);#赠送编码
$objPHPExcel->getActiveSheet()->setCellValue('K' . $line, $goods_shang_title);#奖品类型
$objPHPExcel->getActiveSheet()->setCellValue('L' . $line, $addtime);#申请时间
$objPHPExcel->getActiveSheet()->setCellValue('M' . $line, $message);#备注
->select()
->toArray();
foreach ($goods as $goods_value) {
$sheet->fromArray([
$value['send_num'],
$user_info,
$value['status_name'],
$value['name'],
$value['mobile'],
$value['address'],
$goods_value['goodslist_title'],
$goods_value['goodslist_price'],
$goods_value['num'],
$goods_value['card_no'],
$goods_value['shang_title'],
$addtime,
$value['message']
], null, "A{$row}");
$row++;
}
}
//7.设置保存的Excel表格名称
$filename = '发货列表信息' . date('y-m-d H_i_s', time()) . '.xls';
//8.设置当前激活的sheet表格名称
$objPHPExcel->getActiveSheet()->setTitle('现金套餐订单信息');
//9.设置浏览器窗口下载表格
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="' . $filename . '"');
//生成excel文件
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//下载文件在浏览器窗口
$objWriter->save('php://output');
// 自动调整列宽
foreach (range('A', 'M') as $columnID) {
$sheet->getColumnDimension($columnID)->setAutoSize(true);
}
// 生成 Excel 文件
$filename = '发货列表信息_' . date('Y-m-d_H_i_s') . '.xls';
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$writer = new Xls($spreadsheet);
$writer->save('php://output');
exit;
}
}

View File

@ -48,7 +48,7 @@
<xblock>
<div style="padding-bottom: 10px;">
<a class="layui-btn" href="{:url('/admin/send_order_daochu',['user_id'=>$user_id,'mobile'=>$mobile,'send_num'=>$send_num,'addtime'=>$str_addtime,'status'=>$status])}">导出订单</a>
<span style="line-height:40px;float:right;">共有数据: {$count}条</span>
<span style="line-height:40px;float:right;">共有数据: {$count}条,总发货价值:{$all_goodslist_money}</span>
</div>
</xblock>
<table class="layui-table" style="text-align:center">
@ -56,7 +56,7 @@
<tr>
<th>用户信息</th>
<th>订单号</th>
<th>发货数量</th>
<th>发货数量/总价格</th>
<th>运费</th>
<th>收货信息</th>
<th>订单状态</th>
@ -79,7 +79,7 @@
</div>
</td>
<td>{$vo.send_num}</td>
<td>{$vo.count}</td>
<td>{$vo.count} / {$vo['goodslist_money']}</td>
<td>{$vo.freight}</td>
<td style="text-align: left;">
<p style="font-weight: bold">{$vo['name']} {$vo['mobile']}</p>

View File

@ -26,7 +26,8 @@
"topthink/think-multi-app": "^1.0",
"topthink/think-view": "^1.0",
"topthink/think-captcha": "^3.0",
"endroid/qr-code": "^4.6"
"endroid/qr-code": "^4.6",
"phpoffice/phpspreadsheet": "^1.29"
},
"require-dev": {
"symfony/var-dumper": "^4.2",

771
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "5200325cd7fc32515ef07db96ccd1e98",
"content-hash": "0b24efd4dd99cbb4227aa47b22059ba9",
"packages": [
{
"name": "bacon/bacon-qr-code",
@ -66,6 +66,91 @@
},
"time": "2022-12-07T17:46:57+00:00"
},
{
"name": "composer/pcre",
"version": "3.3.2",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": "^7.4 || ^8.0"
},
"conflict": {
"phpstan/phpstan": "<1.11.10"
},
"require-dev": {
"phpstan/phpstan": "^1.12 || ^2",
"phpstan/phpstan-strict-rules": "^1 || ^2",
"phpunit/phpunit": "^8 || ^9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
},
"phpstan": {
"includes": [
"extension.neon"
]
}
},
"autoload": {
"psr-4": {
"Composer\\Pcre\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "PCRE wrapping library that offers type-safe preg_* replacements.",
"keywords": [
"PCRE",
"preg",
"regex",
"regular expression"
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/3.3.2"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2024-11-12T16:29:46+00:00"
},
{
"name": "dasprid/enum",
"version": "1.0.5",
@ -200,6 +285,457 @@
],
"time": "2022-10-26T08:48:17+00:00"
},
{
"name": "ezyang/htmlpurifier",
"version": "v4.18.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "cb56001e54359df7ae76dc522d08845dc741621b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/cb56001e54359df7ae76dc522d08845dc741621b",
"reference": "cb56001e54359df7ae76dc522d08845dc741621b",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
},
"require-dev": {
"cerdic/css-tidy": "^1.7 || ^2.0",
"simpletest/simpletest": "dev-master"
},
"suggest": {
"cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.",
"ext-bcmath": "Used for unit conversion and imagecrash protection",
"ext-iconv": "Converts text to and from non-UTF-8 encodings",
"ext-tidy": "Used for pretty-printing HTML"
},
"type": "library",
"autoload": {
"files": [
"library/HTMLPurifier.composer.php"
],
"psr-0": {
"HTMLPurifier": "library/"
},
"exclude-from-classmap": [
"/library/HTMLPurifier/Language/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1-or-later"
],
"authors": [
{
"name": "Edward Z. Yang",
"email": "admin@htmlpurifier.org",
"homepage": "http://ezyang.com"
}
],
"description": "Standards compliant HTML filter written in PHP",
"homepage": "http://htmlpurifier.org/",
"keywords": [
"html"
],
"support": {
"issues": "https://github.com/ezyang/htmlpurifier/issues",
"source": "https://github.com/ezyang/htmlpurifier/tree/v4.18.0"
},
"time": "2024-11-01T03:51:45+00:00"
},
{
"name": "maennchen/zipstream-php",
"version": "2.2.6",
"source": {
"type": "git",
"url": "https://github.com/maennchen/ZipStream-PHP.git",
"reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f",
"reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"myclabs/php-enum": "^1.5",
"php": "^7.4 || ^8.0",
"psr/http-message": "^1.0",
"symfony/polyfill-mbstring": "^1.0"
},
"require-dev": {
"ext-zip": "*",
"friendsofphp/php-cs-fixer": "^3.9",
"guzzlehttp/guzzle": "^6.5.3 || ^7.2.0",
"mikey179/vfsstream": "^1.6",
"php-coveralls/php-coveralls": "^2.4",
"phpunit/phpunit": "^8.5.8 || ^9.4.2",
"vimeo/psalm": "^4.1"
},
"type": "library",
"autoload": {
"psr-4": {
"ZipStream\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paul Duncan",
"email": "pabs@pablotron.org"
},
{
"name": "Jonatan Männchen",
"email": "jonatan@maennchen.ch"
},
{
"name": "Jesse Donat",
"email": "donatj@gmail.com"
},
{
"name": "András Kolesár",
"email": "kolesar@kolesar.hu"
}
],
"description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
"keywords": [
"stream",
"zip"
],
"support": {
"issues": "https://github.com/maennchen/ZipStream-PHP/issues",
"source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.6"
},
"funding": [
{
"url": "https://github.com/maennchen",
"type": "github"
},
{
"url": "https://opencollective.com/zipstream",
"type": "open_collective"
}
],
"time": "2022-11-25T18:57:19+00:00"
},
{
"name": "markbaker/complex",
"version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/MarkBaker/PHPComplex.git",
"reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
"reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
"phpcompatibility/php-compatibility": "^9.3",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
"squizlabs/php_codesniffer": "^3.7"
},
"type": "library",
"autoload": {
"psr-4": {
"Complex\\": "classes/src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Baker",
"email": "mark@lange.demon.co.uk"
}
],
"description": "PHP Class for working with complex numbers",
"homepage": "https://github.com/MarkBaker/PHPComplex",
"keywords": [
"complex",
"mathematics"
],
"support": {
"issues": "https://github.com/MarkBaker/PHPComplex/issues",
"source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2"
},
"time": "2022-12-06T16:21:08+00:00"
},
{
"name": "markbaker/matrix",
"version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/MarkBaker/PHPMatrix.git",
"reference": "728434227fe21be27ff6d86621a1b13107a2562c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c",
"reference": "728434227fe21be27ff6d86621a1b13107a2562c",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
"phpcompatibility/php-compatibility": "^9.3",
"phpdocumentor/phpdocumentor": "2.*",
"phploc/phploc": "^4.0",
"phpmd/phpmd": "2.*",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
"sebastian/phpcpd": "^4.0",
"squizlabs/php_codesniffer": "^3.7"
},
"type": "library",
"autoload": {
"psr-4": {
"Matrix\\": "classes/src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Baker",
"email": "mark@demon-angel.eu"
}
],
"description": "PHP Class for working with matrices",
"homepage": "https://github.com/MarkBaker/PHPMatrix",
"keywords": [
"mathematics",
"matrix",
"vector"
],
"support": {
"issues": "https://github.com/MarkBaker/PHPMatrix/issues",
"source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1"
},
"time": "2022-12-02T22:17:43+00:00"
},
{
"name": "myclabs/php-enum",
"version": "1.8.4",
"source": {
"type": "git",
"url": "https://github.com/myclabs/php-enum.git",
"reference": "a867478eae49c9f59ece437ae7f9506bfaa27483"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483",
"reference": "a867478eae49c9f59ece437ae7f9506bfaa27483",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"ext-json": "*",
"php": "^7.3 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "1.*",
"vimeo/psalm": "^4.6.2"
},
"type": "library",
"autoload": {
"psr-4": {
"MyCLabs\\Enum\\": "src/"
},
"classmap": [
"stubs/Stringable.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP Enum contributors",
"homepage": "https://github.com/myclabs/php-enum/graphs/contributors"
}
],
"description": "PHP Enum implementation",
"homepage": "http://github.com/myclabs/php-enum",
"keywords": [
"enum"
],
"support": {
"issues": "https://github.com/myclabs/php-enum/issues",
"source": "https://github.com/myclabs/php-enum/tree/1.8.4"
},
"funding": [
{
"url": "https://github.com/mnapoli",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum",
"type": "tidelift"
}
],
"time": "2022-08-04T09:53:51+00:00"
},
{
"name": "phpoffice/phpspreadsheet",
"version": "1.29.10",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
"reference": "c80041b1628c4f18030407134fe88303661d4e4e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/c80041b1628c4f18030407134fe88303661d4e4e",
"reference": "c80041b1628c4f18030407134fe88303661d4e4e",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"composer/pcre": "^1||^2||^3",
"ext-ctype": "*",
"ext-dom": "*",
"ext-fileinfo": "*",
"ext-gd": "*",
"ext-iconv": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-simplexml": "*",
"ext-xml": "*",
"ext-xmlreader": "*",
"ext-xmlwriter": "*",
"ext-zip": "*",
"ext-zlib": "*",
"ezyang/htmlpurifier": "^4.15",
"maennchen/zipstream-php": "^2.1 || ^3.0",
"markbaker/complex": "^3.0",
"markbaker/matrix": "^3.0",
"php": "^7.4 || ^8.0",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-main",
"dompdf/dompdf": "^1.0 || ^2.0 || ^3.0",
"friendsofphp/php-cs-fixer": "^3.2",
"mitoteam/jpgraph": "^10.3",
"mpdf/mpdf": "^8.1.1",
"phpcompatibility/php-compatibility": "^9.3",
"phpstan/phpstan": "^1.1",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^8.5 || ^9.0",
"squizlabs/php_codesniffer": "^3.7",
"tecnickcom/tcpdf": "^6.5"
},
"suggest": {
"dompdf/dompdf": "Option for rendering PDF with PDF Writer",
"ext-intl": "PHP Internationalization Functions",
"mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
"tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
},
"type": "library",
"autoload": {
"psr-4": {
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Maarten Balliauw",
"homepage": "https://blog.maartenballiauw.be"
},
{
"name": "Mark Baker",
"homepage": "https://markbakeruk.net"
},
{
"name": "Franck Lefevre",
"homepage": "https://rootslabs.net"
},
{
"name": "Erik Tilt"
},
{
"name": "Adrien Crivelli"
}
],
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
"homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
"keywords": [
"OpenXML",
"excel",
"gnumeric",
"ods",
"php",
"spreadsheet",
"xls",
"xlsx"
],
"support": {
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
"source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.10"
},
"time": "2025-02-08T02:56:14+00:00"
},
{
"name": "psr/container",
"version": "1.1.2",
@ -238,6 +774,125 @@
],
"time": "2021-11-05T16:50:12+00:00"
},
{
"name": "psr/http-client",
"version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
"reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
"reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": "^7.0 || ^8.0",
"psr/http-message": "^1.0 || ^2.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
"homepage": "https://github.com/php-fig/http-client",
"keywords": [
"http",
"http-client",
"psr",
"psr-18"
],
"support": {
"source": "https://github.com/php-fig/http-client"
},
"time": "2023-09-23T14:17:50+00:00"
},
{
"name": "psr/http-factory",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
"reference": "e616d01114759c4c489f93b099585439f795fe35"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
"reference": "e616d01114759c4c489f93b099585439f795fe35",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": ">=7.0.0",
"psr/http-message": "^1.0 || ^2.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interfaces for PSR-7 HTTP message factories",
"keywords": [
"factory",
"http",
"message",
"psr",
"psr-17",
"psr-7",
"request",
"response"
],
"support": {
"source": "https://github.com/php-fig/http-factory/tree/1.0.2"
},
"time": "2023-04-10T20:10:41+00:00"
},
{
"name": "psr/http-message",
"version": "1.1",
@ -365,6 +1020,63 @@
],
"time": "2017-10-23T01:57:42+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.31.0",
"dist": {
"type": "zip",
"url": "https://mirrors.tencent.com/repository/composer/symfony/polyfill-mbstring/v1.31.0/symfony-polyfill-mbstring-v1.31.0.zip",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "topthink/framework",
"version": "v6.1.5",
@ -646,63 +1358,6 @@
}
],
"packages-dev": [
{
"name": "symfony/polyfill-mbstring",
"version": "v1.31.0",
"dist": {
"type": "zip",
"url": "https://mirrors.tencent.com/repository/composer/symfony/polyfill-mbstring/v1.31.0/symfony-polyfill-mbstring-v1.31.0.zip",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.31.0",