正在显示
49 个修改的文件
包含
174 行增加
和
32 行删除
| @@ -162,8 +162,6 @@ class Department extends Backend | @@ -162,8 +162,6 @@ class Department extends Backend | ||
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | 164 | ||
| 165 | - | ||
| 166 | - | ||
| 167 | //根据部门id获取所有子部门 | 165 | //根据部门id获取所有子部门 |
| 168 | public function getDepartIdById($id = 6) | 166 | public function getDepartIdById($id = 6) |
| 169 | { | 167 | { |
| @@ -234,5 +232,8 @@ class Department extends Backend | @@ -234,5 +232,8 @@ class Department extends Backend | ||
| 234 | $this->success('', null, implode(",", $arr)); | 232 | $this->success('', null, implode(",", $arr)); |
| 235 | } | 233 | } |
| 236 | 234 | ||
| 237 | - | 235 | + public function downloadexcel($id) |
| 236 | + { | ||
| 237 | + $department = Db::name("department")->where('id', $id)->find(); | ||
| 238 | + } | ||
| 238 | } | 239 | } |
| @@ -128,15 +128,115 @@ class Project extends Backend | @@ -128,15 +128,115 @@ class Project extends Backend | ||
| 128 | $this->success(); | 128 | $this->success(); |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | - public function downloadexcel($ids){ | 131 | + public function export() |
| 132 | + { | ||
| 133 | + if ($this->request->isPost()) { | ||
| 134 | + set_time_limit(0); | ||
| 135 | + $search = $this->request->post('search'); | ||
| 136 | + $ids = $this->request->post('ids'); | ||
| 137 | + $filter = $this->request->post('filter'); | ||
| 138 | + $op = $this->request->post('op'); | ||
| 139 | + $columns = $this->request->post('columns'); | ||
| 140 | + | ||
| 141 | + $excel = new PHPExcel(); | ||
| 142 | + | ||
| 143 | + $excel->getProperties() | ||
| 144 | + ->setCreator("FastAdmin") | ||
| 145 | + ->setLastModifiedBy("FastAdmin") | ||
| 146 | + ->setTitle("标题") | ||
| 147 | + ->setSubject("Subject"); | ||
| 148 | + $excel->getDefaultStyle()->getFont()->setName('Microsoft Yahei'); | ||
| 149 | + $excel->getDefaultStyle()->getFont()->setSize(12); | ||
| 150 | + | ||
| 151 | + $this->sharedStyle = new PHPExcel_Style(); | ||
| 152 | + $this->sharedStyle->applyFromArray( | ||
| 153 | + array( | ||
| 154 | + 'fill' => array( | ||
| 155 | + 'type' => PHPExcel_Style_Fill::FILL_SOLID, | ||
| 156 | + 'color' => array('rgb' => '000000') | ||
| 157 | + ), | ||
| 158 | + 'font' => array( | ||
| 159 | + 'color' => array('rgb' => "000000"), | ||
| 160 | + ), | ||
| 161 | + 'alignment' => array( | ||
| 162 | + 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER, | ||
| 163 | + 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER, | ||
| 164 | + 'indent' => 1 | ||
| 165 | + ), | ||
| 166 | + 'borders' => array( | ||
| 167 | + 'allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN), | ||
| 168 | + ) | ||
| 169 | + )); | ||
| 170 | + | ||
| 171 | + $worksheet = $excel->setActiveSheetIndex(0); | ||
| 172 | + $worksheet->setTitle('标题'); | ||
| 173 | + | ||
| 174 | + $whereIds = $ids == 'all' ? '1=1' : ['id' => ['in', explode(',', $ids)]]; | ||
| 175 | + $this->request->get(['search' => $search, 'ids' => $ids, 'filter' => $filter, 'op' => $op]); | ||
| 176 | + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); | ||
| 177 | + | ||
| 178 | + $line = 1; | ||
| 179 | + $list = []; | ||
| 180 | + $this->model | ||
| 181 | + ->field($columns) | ||
| 182 | + ->where($where) | ||
| 183 | + ->where($whereIds) | ||
| 184 | + ->chunk(100, function ($items) use (&$list, &$line, &$worksheet) { | ||
| 185 | + $styleArray = array( | ||
| 186 | + 'font' => array( | ||
| 187 | + 'bold' => true, | ||
| 188 | + 'color' => array('rgb' => 'FF0000'), | ||
| 189 | + 'size' => 15, | ||
| 190 | + 'name' => 'Verdana' | ||
| 191 | + )); | ||
| 192 | + $list = $items = collection($items)->toArray(); | ||
| 193 | + foreach ($items as $index => $item) { | ||
| 194 | + $line++; | ||
| 195 | + $col = 0; | ||
| 196 | + foreach ($item as $field => $value) { | ||
| 197 | + | ||
| 198 | + $worksheet->setCellValueByColumnAndRow($col, $line, $value); | ||
| 199 | + $worksheet->getStyleByColumnAndRow($col, $line)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); | ||
| 200 | + $worksheet->getCellByColumnAndRow($col, $line)->getStyle()->applyFromArray($styleArray); | ||
| 201 | + $col++; | ||
| 202 | + } | ||
| 203 | + } | ||
| 204 | + }); | ||
| 205 | + $first = array_keys($list[0]); | ||
| 206 | + foreach ($first as $index => $item) { | ||
| 207 | + $worksheet->setCellValueByColumnAndRow($index, 1, __($item)); | ||
| 208 | + } | ||
| 209 | + | ||
| 210 | + $excel->createSheet(); | ||
| 211 | + // Redirect output to a client’s web browser (Excel2007) | ||
| 212 | + $title = date("YmdHis"); | ||
| 213 | + header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); | ||
| 214 | + header('Content-Disposition: attachment;filename="' . $title . '.xlsx"'); | ||
| 215 | + header('Cache-Control: max-age=0'); | ||
| 216 | + // If you're serving to IE 9, then the following may be needed | ||
| 217 | + header('Cache-Control: max-age=1'); | ||
| 218 | + | ||
| 219 | + // If you're serving to IE over SSL, then the following may be needed | ||
| 220 | + header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past | ||
| 221 | + header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified | ||
| 222 | + header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 | ||
| 223 | + header('Pragma: public'); // HTTP/1.0 | ||
| 224 | + | ||
| 225 | + $objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); | ||
| 226 | + $objWriter->save('php://output'); | ||
| 227 | + return; | ||
| 228 | + } | ||
| 229 | + } | ||
| 230 | + | ||
| 231 | + | ||
| 232 | + public function downloadexcel($id){ | ||
| 132 | $workinghours=Db::name("workinghours") | 233 | $workinghours=Db::name("workinghours") |
| 133 | ->alias("a") | 234 | ->alias("a") |
| 134 | ->join("user b","a.user_id=b.id") | 235 | ->join("user b","a.user_id=b.id") |
| 135 | - ->where("project_id",$ids) | 236 | + ->where("project_id",$id) |
| 136 | ->select(); | 237 | ->select(); |
| 137 | - $project=Db::name("project")->where("id",$ids)->find(); | ||
| 138 | - $res=$this->projectexcel($workinghours,$project); | ||
| 139 | - return $res; | 238 | + $project=Db::name("project")->where("id",$id)->find(); |
| 239 | + $file=$this->projectexcel($workinghours,$project); | ||
| 140 | } | 240 | } |
| 141 | 241 | ||
| 142 | /** | 242 | /** |
| @@ -155,7 +255,7 @@ class Project extends Backend | @@ -155,7 +255,7 @@ class Project extends Backend | ||
| 155 | $objActSheet = $objExcel->getActiveSheet(); | 255 | $objActSheet = $objExcel->getActiveSheet(); |
| 156 | $key = ord("A"); | 256 | $key = ord("A"); |
| 157 | $letter = explode(',', "A,B,C,D,E"); | 257 | $letter = explode(',', "A,B,C,D,E"); |
| 158 | - $arrHeader = array('序号', '项目名称', '提交人','工时','提交时间'); | 258 | + $arrHeader = array('序号', '项目名称', '提交人', '工时', '提交时间'); |
| 159 | //填充表头信息 | 259 | //填充表头信息 |
| 160 | $lenth = count($arrHeader); | 260 | $lenth = count($arrHeader); |
| 161 | for ($i = 0; $i < $lenth; $i++) { | 261 | for ($i = 0; $i < $lenth; $i++) { |
| @@ -169,10 +269,41 @@ class Project extends Backend | @@ -169,10 +269,41 @@ class Project extends Backend | ||
| 169 | $objActSheet->setCellValue('B' . $k, $project['project_name']); | 269 | $objActSheet->setCellValue('B' . $k, $project['project_name']); |
| 170 | $objActSheet->setCellValue('C' . $k, $v['username']); | 270 | $objActSheet->setCellValue('C' . $k, $v['username']); |
| 171 | $objActSheet->setCellValue('D' . $k, $v['working_hours']); | 271 | $objActSheet->setCellValue('D' . $k, $v['working_hours']); |
| 172 | - $objActSheet->setCellValue('E' . $k, date("Y-m-d",$v['reporttime'])); | 272 | + $objActSheet->setCellValue('E' . $k, date("Y-m-d", $v['reporttime'])); |
| 173 | } | 273 | } |
| 174 | - $outfile = $project['project_name'] . ".xlsx"; | 274 | + $outfile = $project['project_name'] ."-". rand(10000, 99999) . ".xlsx"; |
| 175 | $objWriter->save('./datauploads/' . $outfile); | 275 | $objWriter->save('./datauploads/' . $outfile); |
| 176 | - return $outfile; | 276 | + |
| 277 | + $file = '../public/datauploads/' . $outfile; // 文件路径 | ||
| 278 | + $filename = $outfile; // 下载时的文件名 | ||
| 279 | + | ||
| 280 | + $objExcel->createSheet(); | ||
| 281 | + // Redirect output to a client’s web browser (Excel2007) | ||
| 282 | + $title = date("YmdHis"); | ||
| 283 | + header('Content-Disposition: attachment;filename="' . $outfile . '.xlsx"'); | ||
| 284 | + $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007'); | ||
| 285 | + $objWriter->save('php://output'); | ||
| 286 | + } | ||
| 287 | + function download( $file_url , $new_name = '' ){ | ||
| 288 | + $file_url='../public/datauploads/'.$file_url; | ||
| 289 | + if (!isset( $file_url )||trim( $file_url )== '' ){ | ||
| 290 | + echo '500' ; | ||
| 291 | + } | ||
| 292 | + if (! file_exists ( $file_url )){ //检查文件是否存在 | ||
| 293 | + echo '404' ; | ||
| 294 | + } | ||
| 295 | + $file_name = basename ( $file_url ); | ||
| 296 | + $file_type = explode ( '.' , $file_url ); | ||
| 297 | + $file_type = $file_type [ count ( $file_type )-1]; | ||
| 298 | + $file_name =trim( $new_name == '' )? $file_name :urlencode( $new_name ); | ||
| 299 | + $file_type = fopen ( $file_url , 'r' ); //打开文件 | ||
| 300 | + //输入文件标签 | ||
| 301 | + header( "Content-type: application/octet-stream" ); | ||
| 302 | + header( "Accept-Ranges: bytes" ); | ||
| 303 | + header( "Accept-Length: " . filesize ( $file_url )); | ||
| 304 | + header( "Content-Disposition: attachment; filename=" . $file_name ); | ||
| 305 | + //输出文件内容 | ||
| 306 | + echo fread ( $file_type , filesize ( $file_url )); | ||
| 307 | + fclose( $file_type ); | ||
| 177 | } | 308 | } |
| 178 | } | 309 | } |
| @@ -10,11 +10,6 @@ | @@ -10,11 +10,6 @@ | ||
| 10 | <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('project/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> | 10 | <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('project/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> |
| 11 | <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('project/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a> | 11 | <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('project/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a> |
| 12 | <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('project/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a> | 12 | <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('project/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a> |
| 13 | - | ||
| 14 | - | ||
| 15 | - | ||
| 16 | - | ||
| 17 | - | ||
| 18 | </div> | 13 | </div> |
| 19 | <table id="table" class="table table-striped table-bordered table-hover table-nowrap" | 14 | <table id="table" class="table table-striped table-bordered table-hover table-nowrap" |
| 20 | data-operate-edit="{:$auth->check('project/edit')}" | 15 | data-operate-edit="{:$auth->check('project/edit')}" |
| @@ -11,7 +11,7 @@ use think\exception\ErrorException; | @@ -11,7 +11,7 @@ use think\exception\ErrorException; | ||
| 11 | */ | 11 | */ |
| 12 | class Index extends Api | 12 | class Index extends Api |
| 13 | { | 13 | { |
| 14 | - protected $noNeedLogin = ['*']; | 14 | + protected $noNeedLogin = ['departmentlist','projectlist']; |
| 15 | protected $noNeedRight = ['*']; | 15 | protected $noNeedRight = ['*']; |
| 16 | 16 | ||
| 17 | /** | 17 | /** |
| @@ -46,8 +46,10 @@ class Index extends Api | @@ -46,8 +46,10 @@ class Index extends Api | ||
| 46 | $content = $this->request->param("content");//内容 | 46 | $content = $this->request->param("content");//内容 |
| 47 | $working_hours = $this->request->param("working_hours");//工时 | 47 | $working_hours = $this->request->param("working_hours");//工时 |
| 48 | $reporttime = $this->request->param("reporttime");//内容 | 48 | $reporttime = $this->request->param("reporttime");//内容 |
| 49 | + $project=Db::name("project")->where("id",$project_id)->find(); | ||
| 49 | $data=[ | 50 | $data=[ |
| 50 | 'project_id'=>$project_id, | 51 | 'project_id'=>$project_id, |
| 52 | + 'department_id'=>$project['department_id'], | ||
| 51 | 'working_hours'=>$working_hours, | 53 | 'working_hours'=>$working_hours, |
| 52 | 'content'=>$content, | 54 | 'content'=>$content, |
| 53 | 'user_id'=>$this->auth->id, | 55 | 'user_id'=>$this->auth->id, |
| @@ -30,7 +30,8 @@ | @@ -30,7 +30,8 @@ | ||
| 30 | "ext-curl": "*", | 30 | "ext-curl": "*", |
| 31 | "ext-pdo": "*", | 31 | "ext-pdo": "*", |
| 32 | "ext-bcmath": "*", | 32 | "ext-bcmath": "*", |
| 33 | - "txthinking/mailer": "^2.0" | 33 | + "txthinking/mailer": "^2.0", |
| 34 | + "phpoffice/phpexcel": "^1.8" | ||
| 34 | }, | 35 | }, |
| 35 | "config": { | 36 | "config": { |
| 36 | "preferred-install": "dist" | 37 | "preferred-install": "dist" |
| @@ -38,7 +39,7 @@ | @@ -38,7 +39,7 @@ | ||
| 38 | "repositories": [ | 39 | "repositories": [ |
| 39 | { | 40 | { |
| 40 | "type": "git", | 41 | "type": "git", |
| 41 | - "url": "https://gitee.com/fastadminnet/framework.git" | 42 | + "url": "https://gitee.com/karson/framework" |
| 42 | } | 43 | } |
| 43 | ] | 44 | ] |
| 44 | } | 45 | } |
| @@ -31,8 +31,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin | @@ -31,8 +31,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin | ||
| 31 | } | 31 | } |
| 32 | }, | 32 | }, |
| 33 | {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, | 33 | {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, |
| 34 | - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | ||
| 35 | - ] | 34 | + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, |
| 35 | + buttons: [ | ||
| 36 | + { | ||
| 37 | + name:'下载报表', | ||
| 38 | + title: '下载报表', | ||
| 39 | + classname: 'btn btn-xs btn-info btn-click', | ||
| 40 | + icon: 'fa fa-leaf', | ||
| 41 | + // dropdown: '更多',//如果包含dropdown,将会以下拉列表的形式展示 | ||
| 42 | + click: function (data,row) { | ||
| 43 | + top.location.href="department/downloadexcel?id="+row.id; | ||
| 44 | + } | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + ]} ] | ||
| 36 | ] | 48 | ] |
| 37 | }); | 49 | }); |
| 38 | 50 |
| @@ -37,26 +37,26 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin | @@ -37,26 +37,26 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin | ||
| 37 | {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, | 37 | {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, |
| 38 | buttons: [ | 38 | buttons: [ |
| 39 | { | 39 | { |
| 40 | - name: 'ajax', | ||
| 41 | - title: "下载报表", | ||
| 42 | - text: "下载报表", | ||
| 43 | - classname: 'btn btn-xs btn-warning btn-magic btn-ajax', | ||
| 44 | - icon: 'fa fa-paper-plane', | ||
| 45 | - confirm: function (row) { | ||
| 46 | - return "确认下载报表" | ||
| 47 | - }, | ||
| 48 | - url: 'project/downloadexcel?id={id}', | ||
| 49 | - | 40 | + name:'下载报表', |
| 41 | + title: '下载报表', | ||
| 42 | + classname: 'btn btn-xs btn-info btn-click', | ||
| 43 | + icon: 'fa fa-leaf', | ||
| 44 | + // dropdown: '更多',//如果包含dropdown,将会以下拉列表的形式展示 | ||
| 45 | + click: function (data,row) { | ||
| 46 | + top.location.href="project/downloadexcel?id="+row.id; | ||
| 47 | + } | ||
| 50 | } | 48 | } |
| 51 | 49 | ||
| 52 | ]} | 50 | ]} |
| 53 | ] | 51 | ] |
| 54 | ] | 52 | ] |
| 53 | + | ||
| 55 | }); | 54 | }); |
| 56 | 55 | ||
| 57 | // 为表格绑定事件 | 56 | // 为表格绑定事件 |
| 58 | Table.api.bindevent(table); | 57 | Table.api.bindevent(table); |
| 59 | }, | 58 | }, |
| 59 | + | ||
| 60 | add: function () { | 60 | add: function () { |
| 61 | Controller.api.bindevent(); | 61 | Controller.api.bindevent(); |
| 62 | }, | 62 | }, |
public/datauploads/14388.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/16478.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/19820.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/24007.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/29946.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/31758.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/40278.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/43071.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/43528.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/45957.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/50680.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/51894.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/60644.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/69587.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/78144.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/82180.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/84682.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/88262.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目-93787.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目10348.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目16062.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目27160.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目33592.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目36951.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目38739.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目43944.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目45970.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目53889.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目55680.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目60258.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目61625.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目62517.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目66920.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目7-10650.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目7-55299.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目7-75362.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目71482.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目721786.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目765730.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目76810.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目79821.xlsx
0 → 100644
不能预览此文件类型
public/datauploads/机场高速项目94984.xlsx
0 → 100644
不能预览此文件类型
-
请 注册 或 登录 后发表评论