123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- <?php
- namespace app\admin\controller\money;
- use app\admin\model\exams\ExamsModel;
- use app\common\controller\Backend;
- use think\Exception;
- /**
- *
- *
- * @icon fa fa-circle-o
- */
- class Bill extends Backend
- {
-
- /**
- * Bill模型对象
- * @var \app\admin\model\money\Bill
- */
- protected $model = null;
- protected $water = null;
- protected $noNeedRight = ['exportexam'];
- public function _initialize()
- {
- parent::_initialize();
- $this->model = new \app\admin\model\money\Bill;
- $this->water = new \app\admin\model\money\Money;
- }
-
- public function completedList()
- {
- //设置过滤方法
- $this->request->filter(['strip_tags']);
- if ($this->request->isAjax()) {
- $result = array (
- "total" => 0 ,
- "rows" => []
- );
- return json($result);
- }
- return $this->view->fetch();
- }
- public function exportExam($id)
- {
- // try {
- $order = $this->model->get($id);
- $exam_ids = $this->water
- ->whereIn('id', explode(',', $order['water_ids']))
- ->column('exam_id');
- $exam_data = ExamsModel::whereIn('id', $exam_ids)
- ->field('name,patient_num,accession_num,hopitalized_no,exam_class,exam_project,exam_datetime,application_department,application_doctor')
- ->select();
- if(!$exam_data){
- $this->error('无检查数据');
- }
- foreach ($exam_data as &$val){
- $val['name'] = mb_substr($val['name'],0,1) . '**';
- }
- unset($val);
- // 文件名和文件类型
- $fileName = $order['order_num'];
- $fileType = "xlsx";
- // 模拟获取数据
- import('phpexcel.PHPExcel', EXTEND_PATH);
- $obj = new \PHPExcel();
- // 以下内容是excel文件的信息描述信息
- $obj->getProperties()->setCreator(''); //设置创建者
- $obj->getProperties()->setLastModifiedBy(''); //设置修改者
- $obj->getProperties()->setTitle(''); //设置标题
- $obj->getProperties()->setSubject(''); //设置主题
- $obj->getProperties()->setDescription(''); //设置描述
- $obj->getProperties()->setKeywords('');//设置关键词
- $obj->getProperties()->setCategory('');//设置类型
- // 设置当前sheet
- $obj->setActiveSheetIndex(0);
- // 设置当前sheet的名称
- $obj->getActiveSheet()->setTitle('student');
- // 列标
- $list = ['A', 'B', 'C', 'D', 'E', 'F', 'G' , 'H', 'I'];
- // 填充第一行数据
- $obj->getActiveSheet()
- ->setCellValue($list[0] . '1', '姓名')
- ->setCellValue($list[1] . '1', '病历号')
- ->setCellValue($list[2] . '1', '检查号')
- ->setCellValue($list[3] . '1', '住院号')
- ->setCellValue($list[4] . '1', '检查类别')
- ->setCellValue($list[5] . '1', '检查项目')
- ->setCellValue($list[6] . '1', '检查时间')
- ->setCellValue($list[7] . '1', '申请科室')
- ->setCellValue($list[8] . '1', '申请医生');
- // 填充第n(n>=2, n∈N*)行数据
- $length = count($exam_data);
- for ($i = 0; $i < $length; $i++) {
- $obj->getActiveSheet()->setCellValue($list[0] . ($i + 2), $exam_data[$i]['name'], \PHPExcel_Cell_DataType::TYPE_STRING);//将其设置为文本格式
- $obj->getActiveSheet()->setCellValue($list[1] . ($i + 2), $exam_data[$i]['patient_num']);
- $obj->getActiveSheet()->setCellValue($list[2] . ($i + 2), $exam_data[$i]['accession_num']);
- $obj->getActiveSheet()->setCellValue($list[3] . ($i + 2), $exam_data[$i]['hopitalized_no']);
- $obj->getActiveSheet()->setCellValue($list[4] . ($i + 2), $exam_data[$i]['exam_class']);
- $obj->getActiveSheet()->setCellValue($list[5] . ($i + 2), $exam_data[$i]['exam_project']);
- $obj->getActiveSheet()->setCellValue($list[6] . ($i + 2), $exam_data[$i]['exam_datetime']);
- $obj->getActiveSheet()->setCellValue($list[7] . ($i + 2), $exam_data[$i]['application_department']);
- $obj->getActiveSheet()->setCellValue($list[8] . ($i + 2), $exam_data[$i]['application_doctor']);
- }
- // 设置加粗和左对齐
- foreach ($list as $col) {
- // 设置第一行加粗
- $obj->getActiveSheet()->getStyle($col . '1')->getFont()->setBold(true);
- // 设置第1-n行,左对齐
- for ($i = 1; $i <= $length + 1; $i++) {
- $obj->getActiveSheet()->getStyle($col . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
- }
- }
- // 设置列宽
- $obj->getActiveSheet()->getColumnDimension('A')->setWidth(20);
- $obj->getActiveSheet()->getColumnDimension('B')->setWidth(20);
- $obj->getActiveSheet()->getColumnDimension('C')->setWidth(15);
- // 导出
- // ob_clean();
- if ($fileType == 'xls') {
- header('Content-Type: application/vnd.ms-excel');
- header('Content-Disposition: attachment;filename="' . $fileName . '.xls');
- header('Cache-Control: max-age=1');
- $objWriter = new \PHPExcel_Writer_Excel5($obj);
- $objWriter->save('php://output');
- exit;
- } elseif ($fileType == 'xlsx') {
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- header('Content-Disposition: attachment;filename="' . $fileName . '.xlsx');
- header('Cache-Control: max-age=1');
- $objWriter = \PHPExcel_IOFactory::createWriter($obj, 'Excel2007');
- $objWriter->save('php://output');
- exit;
- }
- // } catch ( Exception $exception){
- // $this->error($exception->getMessage());
- // }
- }
- }
|