export_detail_listAjax(); } protected function savebefore($table, $arr, $id, $addbo){ } protected function saveafter($table, $arr, $id, $addbo){ //更新 $mknum = arrvalue($arr, 'mknum'); if(!isempt($mknum)){ $numa = explode(',', $mknum); $num = $numa[0]; $mid = (int)arrvalue($numa,1); $flow = m('flow')->initflow($num); if($num=='officia'){ $flow->update("`yzid`='$id'", "`id`='$mid'"); } } } //获取印章 public function getsealdata() { $where= m('admin')->getcompanywhere(1); $rows = m('seal')->getall('1=1 '.$where.'','`id`as value,`name`,`type`','`sort`'); $aaar = $barr = array(); foreach($rows as $k=>$rs){ $rs['subname'] = $rs['type']; $rs['padding'] = '40'; $aaar[] = $rs; } return array_merge($aaar, $barr); } public function getsealdatass() { $where= m('admin')->getcompanywhere(1); $rows = m('seal')->getall('1=1 '.$where.'','`id`as value,`name`,`type`','`sort`,`type`'); $barr = array(); $type = ''; foreach($rows as $k=>$rs){ if($type!=$rs['type'])$barr[] = array('value'=>'','name'=>$rs['type'],'disabled'=>true); $rs['padding'] = '40'; $barr[] = $rs; $type = $rs['type']; } return $barr; } public function getSealListAjax() { $seal_list = m("seal")->getall("1=1", "id, name"); array_unshift($seal_list, ["id"=>"0","name"=>"全部"]); $this->returnjson($seal_list); } /** * @throws PHPExcel_Exception * @throws PHPExcel_Writer_Exception * @throws PHPExcel_Reader_Exception * @throws \PhpOffice\PhpSpreadsheet\Exception */ public function export_listAjax() { $startDate = $this->post("start_date"); $stopDate = $this->post("stop_date"); $status = $this->post("status"); $export_type = $this->post("export_type"); $whereArr = [ "startDate"=>$startDate, "stopDate"=>$stopDate, "status"=>$status, "export_type"=>$export_type, ]; $excelTitle = "枣泉煤矿用印登记台账"; $sealArr = m("seal")->getall("1=1", "id, name, specialized"); $sealDic = []; foreach ($sealArr as $k=>$v) { $sealDic[$v["id"]] = $v; } if (!empty($export_type) && $export_type != 0) { $excelTitle .= "({$sealDic[$export_type]['name']})"; } $list = m("sealapl")->getSealaplList($whereArr); // 创建一个新的PHPExcel对象 # 实例化 Spreadsheet 对象 $spreadsheet = new Spreadsheet(); $spreadsheet->setActiveSheetIndex(0); // 设置活动的工作表 # 获取活动工作薄 $sheet = $spreadsheet->getActiveSheet(); $sheet->mergeCells("A1:P1"); // 水平合并A1单元格 $sheet->setCellValue('A1', $excelTitle); // 设置表头 // 设置样式 // 设置表头和第二行的样式(获取样式及设置方式类似,但类名不同) $bodersStyle = [ 'borders' => [ 'allBorders' => [ 'borderStyle' => Style\Border::BORDER_THIN, ], ] ]; $styleArray = [ 'borders' => $bodersStyle['borders'], 'alignment' => [ 'horizontal' => Style\Alignment::HORIZONTAL_CENTER, 'vertical' => Style\Alignment::VERTICAL_CENTER, 'wrapText' => true, ] ]; $sheet->getStyle('A1:P2')->applyFromArray($styleArray); $spreadsheet->getActiveSheet()->getRowDimension('1')->setRowHeight(95); $sheet->getStyle('A1')->getFont()->setBold(false)->setSize(24); $sheet->getStyle('A2:P2')->getFont()->setBold(true)->setSize(14); // 设置为字符串格式 $sheet->getStyle('J')->getNumberFormat()->setFormatCode(Style\NumberFormat::FORMAT_TEXT); // 列宽 $sheet->getColumnDimension('A')->setWidth(13); $sheet->getColumnDimension('B')->setWidth(7); $sheet->getColumnDimension('C')->setWidth(47); $sheet->getColumnDimension('D')->setWidth(18); $sheet->getColumnDimension('E')->setWidth(10); $sheet->getColumnDimension('F')->setWidth(12); $sheet->getColumnDimension('G')->setWidth(8); $sheet->getColumnDimension('H')->setWidth(11); $sheet->getColumnDimension('I')->setWidth(12); $sheet->getColumnDimension('J')->setWidth(11); // 手机号 $sheet->getColumnDimension('K')->setWidth(13); $sheet->getColumnDimension('L')->setWidth(12); $sheet->getColumnDimension('M')->setWidth(12); $sheet->getColumnDimension('N')->setWidth(12); $sheet->getColumnDimension('O')->setWidth(12); $sheet->getColumnDimension('P')->setWidth(12); // 表头 $titleArr = ["时间","年度\n编号","用印事由摘要、\n用印材料明细(全称)","相对方名称","金额、\n工作量","合同号","用印\n数量","申请\n单位\n负责人","经办人","手机号","矿最终审\n批领导","法律事\n务审核\n人","业务\n部门\n审核人","办公室\n审核人","印章\n专管人","备注"]; // 设置列,循环设置表头单元格的值 $column = 'A'; foreach ($titleArr as $title) { $sheet->setCellValue($column.'2', $title); $column++; } $rowArr = []; foreach ($list as $key=>$row) { $num = $row['id']; $date = $row['applydt']; $year = date("Y", strtotime($date)); $month = date("m", strtotime($date)); $this_month = date("Y-m", strtotime($date)); $last_month = date("Y-m", strtotime("-1 month", strtotime($date))); $office_date = date("Y-m-d", strtotime($row['office_date'])); $year_num = $row['year_num']; $reason = $row['reason']; $opp_name = $row['opp_name']; $amount = $row['amount']; $contract_num = $row['contract_num']; $use_con = $row['use_con']; $applicant = $row['applicant']; $apply_pnum = $row['apply_pnum']; $advice_level4_leader = $row['advice_level4_leader']; $advice_level3_leader = $row['advice_level3_leader']; $advice_level2_leader = $row['advice_level2_leader']; $advice_level1_leader = $row['advice_level1_leader']; $notes = $row['notes']; $seal_name = $row['seal_name']; $bgr = $sealDic[$seal_name]['specialized']; $rowArr[] = [ $office_date, // 时间 $year_num, // 年度编号 $reason, // 用印事由摘要、用印材料明细(全称) $opp_name, // 相对方名称 $amount, // 金额、工作量 $contract_num, // 合同号 $use_con, // 用印数量 $advice_level1_leader, // 申请单位负责人 $applicant, // 经办人 $apply_pnum, // 手机号 null, // 矿最终审批领导 $advice_level4_leader, // 法律事务审核人 $advice_level1_leader, // 业务部门审核人 $advice_level2_leader, // 办公室审核人 $bgr, // 印章保管业务核实人 $notes // 备注 ]; } $rowNum = 3; foreach ($rowArr as $row) { $column = 'A'; foreach ($row as $key => $value) { $sheet->setCellValue($column.$rowNum, $value); $column++; } $rowNum++; } // 其他表格式设置 $rowCode = 'A3:P'.(count($rowArr)+2); $sheet->getStyle($rowCode)->applyFromArray($styleArray); $spreadsheet->getActiveSheet()->getStyle($rowCode)->getFont()->setSize(14); // 定义保存的文件名和路径 $mkdir = UPDIR.'/logs/'.date('Y-m'); // if(!contain(strtolower(PHP_OS),'win')){ $excelTitle = c('pingyin')->get("枣泉煤矿用印登记台账", 1);//linux要用拼音,不然会乱码【已兼容】 // } $filename = ''.$excelTitle.'_'.date('Y_m_d_H_i_s').'.xlsx'; $filename = str_replace('/','',$filename); $savePath = $mkdir.'/'.$filename; if (!is_dir($mkdir)) { if (!mkdir($mkdir, 0777, true)) { // recursive=true 自动创建多级目录 die("错误:无法创建目录 " . $mkdir); } } $writer = new Xlsx($spreadsheet); try { $writer->save($savePath); } catch (WriterException $e) { die("保存失败: " . $e->getMessage()); } $this->returnjson(array( 'url' => $savePath, 'totalCount'=> count($list), 'downCount' => count($list), )); } public function export_detail_listAjax() { // 获取 POST 数据 $startDate = $this->post("start_date"); $stopDate = $this->post("stop_date"); $status = $this->post("status"); $export_type = $this->post("export_type"); $whereArr = [ "startDate"=>$startDate, "stopDate"=>$stopDate, "status"=>$status, "export_type"=>$export_type, ]; $list = m("sealapl")->getSealaplList($whereArr); $sealArr = m("seal")->getall("1=1", "id, name, specialized"); $sealDic = []; foreach ($sealArr as $k => $v) { $sealDic[$v["id"]] = $v; } // 检查模板文件是否存在 $templatePath = 'upload/template/word/template_sealapl_2.docx'; if (!file_exists($templatePath)) { $this->returnjson(array( 'error' => 'Template file not found', 'totalCount' => 0, 'downCount' => 0 )); return; } // 创建一个新的 PhpWord 对象 $phpWord = new PhpWord(); $section = $phpWord->addSection(); foreach ($list as $row) { try { $templateWord = new TemplateProcessor($templatePath); $num = $row['year_num']; $applydt = $row['applydt']; $year = date("Y", strtotime($applydt)); $month = date("m", strtotime($applydt)); $this_month = date("Y-m", strtotime($applydt)); $last_month = date("Y-m", strtotime("-1 month", strtotime($applydt))); $office_date = date("Y-m-d", strtotime($row['office_date'])); $year_num = $row['year_num']; $reason = $row['reason']; $opp_name = $row['opp_name']; $amount = $row['amount']; $contract_num = $row['contract_num']; $use_con = $row['use_con']; $applicant = $row['applicant']; $apply_pnum = $row['apply_pnum']; $advice_level4 = $row['advice_level4']; $advice_level4_leader = $row['advice_level4_leader']; $advice_level3_leader = $row['advice_level3_leader']; $advice_level2 = $row['advice_level2_leader']; $advice_level2_leader = $row['advice_level2_leader']; $advice_level1 = $row['advice_level1']; $advice_level1_leader = $row['advice_level1_leader']; $notes = $row['notes']; $seal_name = $row['seal_name']; // $bgr = $sealDic[$seal_name]['specialized']; $apply_dept = $row['apply_dept']; $templateWord->setValues([ "this_month" => $this_month, "num" => $num, "apply_dept" => $apply_dept, "sealname" => $sealDic[$seal_name]['name'], "applydt" => $applydt, "opp_name" => $opp_name, "contract_num" => $contract_num, "amount" => $amount, "reason" => $reason, "advice_level4" => $advice_level4, "advice_level4_leader" => $advice_level4_leader, "advice_level1" => $advice_level1, "advice_level1_leader" => $advice_level1_leader, "advice_level2" => $advice_level2, "advice_level2_leader" => $advice_level2_leader, "applicant" => $applicant, "apply_pnum" => $apply_pnum, ]); // 将模板处理后的内容保存到临时文件 $tempWord = tempnam(sys_get_temp_dir(), 'merged_'). '.docx'; $templateWord->saveAs($tempWord); // 删除临时文件 unlink($tempWord); } catch (\Exception $e) { // 如果出现异常,删除临时文件 if (isset($tempWord) && file_exists($tempWord)) { unlink($tempWord); } if (isset($tempPdf) && file_exists($tempPdf)) { unlink($tempPdf); } $this->returnjson(array( 'error' => 'An error occurred: '. $e->getMessage(), 'totalCount' => 0, 'downCount' => 0 )); return; } } // 定义保存的文件名和路径 $mkdir = UPDIR.'/logs/'.date('Y-m'); $excelTitle = "枣泉煤矿用印登记台账"; if(!contain(strtolower(PHP_OS),'win')){ $excelTitle = c('pingyin')->get($excelTitle, 1);//linux要用拼音,不然会乱码 } $filename = ''.$excelTitle.'_'.date('Y_m_d_H_i_s').'.docx'; $filename = str_replace('/','',$filename); $savePath = $mkdir.'/'.$filename; // 保存为 Word 文件 $wordWriter = IOFactory::createWriter($phpWord, 'Word2007'); $wordWriter->save($savePath); $this->returnjson(array( 'url' => $savePath, 'totalCount' => count($list), 'downCount' => count($list), )); } //获取相关信息放到说明里 public function getbinfoAjax() { $mknum = $this->get('mknum'); $barr = array(); if(!isempt($mknum)){ $numa = explode(',', $mknum); $num = $numa[0]; $mid = (int)arrvalue($numa,1); $flow = m('flow')->initflow($num, $mid, false); $barr['zhaiyao'] = $flow->getsummary(); } return $barr; } public function sealaplaftershow($table,$rows) { $barr['rows'] = $rows; $barr['atypearr'] = $this->atypearr; if($this->loadci==1){ $vobj = m('view'); $barr['isadd'] = $vobj->isadd($this->modeid, $this->adminid); //判断是否可添加 $barr['isdaoru'] = $vobj->isdaoru($this->modeid, $this->adminid); //判断是否可导入 $barr['isdaochu'] = $vobj->isdaochu($this->modeid, $this->adminid); //判断是否可导入 // $barr['listinfo'] = m('mode')->createlistpage($this->flow->moders,0,1,$this); } $barr['souarr'] = $this->flow->flowsearchfields(); $rows = $this->flow->viewjinfields($rows);//禁看字段处理 $farrl = array(); foreach($this->flow->fieldsarra as $k2=>$rs2){ if($rs2['fieldstype']=='uploadimg')$farrl[$rs2['fields']]=$rs2['fieldstype']; } if($rows)foreach($rows as $k1=>$rs1){ foreach($farrl as $fid=>$flx){ if(isset($rs1[$fid])){ $val = $rs1[$fid]; if($flx=='uploadimg'){ $val = $this->rock->gethttppath($val); $rows[$k1][$fid] = $val; //if($this->flow->modeid>92)$val=''; } } } } $barr['modeid'] = $this->modeid; $barr['loadci'] = $this->loadci; // $barr['rows'] = $rows; $scarr = $this->storeafter($table, $rows, $barr); if(is_array($scarr))foreach($scarr as $k=>$v)$barr[$k]=$v; return $barr; } }