作者 开飞机的舒克

后台更新

... ... @@ -25,7 +25,12 @@ class Study extends Backend
$this->view->assign("genderList", $this->model->getGenderList());
}
/**
* 导入
*/
public function import(){
return parent::import();
}
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
... ... @@ -69,4 +74,69 @@ class Study extends Backend
return $this->view->fetch();
}
//导出数据
public function export(){
if ($this->request->isPost()){
set_time_limit(0);//设置时间限制
$ids = $this->request->post('ids'); //获取数据的所有id
$excel = new \PHPExcel(); // 生成新的excel对象
$excel->getProperties()
->setCreator("FastAdmin") //设置作者
->setLastModifiedBy("FastAdmin") //设置上次修改者
->setTitle("考勤打卡表") //设置表格标题
->setSubject("Subject"); //设置主题
$excel->getDefaultStyle()->getFont()->setName('楷体'); //设置默认字体
$excel->getDefaultStyle()->getFont()->setSize(15); //设置默认字体大小
$excel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$excel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$excel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
$excel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
$excel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('H')->setWidth(10);
// 开始操作excel表
$worksheet = $excel->setActiveSheetIndex(0) //操作第一个工作表
->setCellValue('A1','序号') //设置表格标题名称
->setCellValue('B1','姓名') //设置表格标题名称
->setCellValue('C1','性别')
->setCellValue('D1','班级')
->setCellValue('E1','学校')
->setCellValue('F1','手环ID')
->setCellValue('G1','学号')
->setCellValue('H1','总积分');
if ($ids=='all' || empty($ids)){ //判断当前数据为全部或者选中的
$list = $this->model->with('school')->select();
}else{
$list = $this->model->with('school')->select($ids);
}
foreach ($list as $k => $val){
$k = $k + 2;//表格是从2开始的
$worksheet
->setCellValue('A'.$k,$val['id'])
->setCellValue('B'.$k,$val['name'])
->setCellValue('C'.$k,$val['gender']?'男':'女')
->setCellValue('D'.$k,$val['grade'])
->setCellValue('E'.$k,$val['school']['title'])
->setCellValue('F'.$k,$val['unique'])
->setCellValue('G'.$k,$val['sno'])
->setCellValue('H'.$k,$val['earn_score']);
}
$excel->createSheet(); //创建excel表
$title = "学生成绩".date("Y-m-dHis"); //考勤打卡数据_2023-01-07145656.xlsx
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//表明当前文件是.xlsx
header('Content-Disposition: attachment;filename="'.$title.'.xlsx"');//文件名称[考勤打卡数据_2023-01-07145656.xlsx]
header('Cache-Control: max-age=0'); //禁用缓存
header('Cache-Control: max-age=1'); //通知浏览器:1 秒之内不要烦我,自己从缓冲区中刷新。
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // 缓存过期时间(禁用缓存)
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // 上一次修改时间
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 缓存控制:必须重新验证
header('Pragma: public'); // 可被任何缓存所缓存 http1.0协议
$objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save('php://output'); //保存地址
exit;
}
}
}
... ...
... ... @@ -2,19 +2,21 @@
return [
'User_id' => '用户id',
'Id' => 'ID',
'Avatar' => '头像',
'Name' => '姓名',
'Gender' => '性别',
'Gender 0' => '女',
'Gender 1' => '男',
'Birth' => '生日',
'Birthday' => '生日',
'Grade' => '班级',
'School' => '学校',
'Unique' => '手环ID',
'Sno' => '学号',
'Team_id' => '所属战队',
'Earn_score' => '积分',
'Qrcode' => '条形码',
'Earn_score' => '总积分',
'Phone' => '手机号',
'Unique' => '手环ID',
'Barcode' => '条形码',
'Createtime' => '创建时间',
'Updatetime' => '更新时间',
'Team.title' => '战队昵称',
... ...
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="">
<input id="c-name" class="form-control" name="row[name]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Gender')}:</label>
<div class="col-xs-12 col-sm-8">
<select id="c-gender" class="form-control selectpicker" name="row[gender]">
{foreach name="genderList" item="vo"}
<option value="{$key}" {in name="key" value=""}selected{/in}>{$vo}</option>
{/foreach}
</select>
</div>
</div>
<div class="form-group">
... ... @@ -21,27 +31,9 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
<label class="control-label col-xs-12 col-sm-2">{:__('Birthday')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-name" class="form-control" name="row[name]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Gender')}:</label>
<div class="col-xs-12 col-sm-8">
<select id="c-gender" class="form-control selectpicker" name="row[gender]">
{foreach name="genderList" item="vo"}
<option value="{$key}" {in name="key" value=""}selected{/in}>{$vo}</option>
{/foreach}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Birth')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-birth" class="form-control" name="row[birth]" type="text">
<input id="c-birthday" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[birthday]" type="text">
</div>
</div>
<div class="form-group">
... ... @@ -57,12 +49,6 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Unique')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-unique" class="form-control" name="row[unique]" type="number">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Sno')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-sno" class="form-control" name="row[sno]" type="text">
... ... @@ -75,17 +61,29 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Earn_score')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-earn_score" class="form-control" step="0.01" name="row[earn_score]" type="number">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Qrcode')}:</label>
<label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-qrcode" class="form-control" name="row[qrcode]" type="text">
<input id="c-phone" class="form-control" name="row[phone]" type="text">
</div>
</div>
{/* <div class="form-group">*/}
{/* <label class="control-label col-xs-12 col-sm-2">{:__('Earn_score')&cc;:</label>*/}
{/* <div class="col-xs-12 col-sm-8">*/}
{/* <input id="c-earn_score" class="form-control" step="0.01" name="row[earn_score]" type="number">*/}
{/* </div>*/}
{/* </div>*/}
{/* <div class="form-group">*/}
{/* <label class="control-label col-xs-12 col-sm-2">{:__('Unique')&cc;:</label>*/}
{/* <div class="col-xs-12 col-sm-8">*/}
{/* <input id="c-unique" class="form-control" name="row[unique]" type="number">*/}
{/* </div>*/}
{/* </div>*/}
{/* <div class="form-group">*/}
{/* <label class="control-label col-xs-12 col-sm-2">{:__('Barcode')&cc;:</label>*/}
{/* <div class="col-xs-12 col-sm-8">*/}
{/* <input id="c-barcode" class="form-control" name="row[barcode]" type="text">*/}
{/* </div>*/}
{/* </div>*/}
<div class="form-group layer-footer">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8">
... ...
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
<input id="c-name" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Gender')}:</label>
<div class="col-xs-12 col-sm-8">
<select id="c-gender" class="form-control selectpicker" name="row[gender]">
{foreach name="genderList" item="vo"}
<option value="{$key}" {in name="key" value="$row.gender"}selected{/in}>{$vo}</option>
{/foreach}
</select>
</div>
</div>
<div class="form-group">
... ... @@ -20,28 +30,11 @@
<ul class="row list-inline faupload-preview" id="p-avatar"></ul>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-name" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Gender')}:</label>
<div class="col-xs-12 col-sm-8">
<select id="c-gender" class="form-control selectpicker" name="row[gender]">
{foreach name="genderList" item="vo"}
<option value="{$key}" {in name="key" value="$row.gender"}selected{/in}>{$vo}</option>
{/foreach}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Birth')}:</label>
<label class="control-label col-xs-12 col-sm-2">{:__('Birthday')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-birth" class="form-control" name="row[birth]" type="text" value="{$row.birth|htmlentities}">
<input id="c-birthday" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[birthday]" type="text" value="{$row.birthday|htmlentities}">
</div>
</div>
<div class="form-group">
... ... @@ -57,12 +50,6 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Unique')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-unique" class="form-control" name="row[unique]" type="number" value="{$row.unique|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Sno')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-sno" class="form-control" name="row[sno]" type="text" value="{$row.sno|htmlentities}">
... ... @@ -71,21 +58,33 @@
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Team_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-team_id" data-rule="required" data-source="team/index" class="form-control selectpage" name="row[team_id]" type="text" value="{$row.team_id|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Earn_score')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-earn_score" class="form-control" step="0.01" name="row[earn_score]" type="number" value="{$row.earn_score|htmlentities}">
<input id="c-team_id" data-rule="required" data-source="team/index" class="form-control selectpage" data-field="title" name="row[team_id]" type="text" value="{$row.team_id|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Qrcode')}:</label>
<label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-qrcode" class="form-control" name="row[qrcode]" type="text" value="{$row.qrcode|htmlentities}">
<input id="c-phone" class="form-control" name="row[phone]" type="text" value="{$row.phone|htmlentities}">
</div>
</div>
{/* <div class="form-group">*/}
{/* <label class="control-label col-xs-12 col-sm-2">{:__('Earn_score')&cc;:</label>*/}
{/* <div class="col-xs-12 col-sm-8">*/}
{/* <input id="c-earn_score" class="form-control" step="0.01" name="row[earn_score]" type="number" value="{$row.earn_score|htmlentities&cc;">*/}
{/* </div>*/}
{/* </div>*/}
{/* <div class="form-group">*/}
{/* <label class="control-label col-xs-12 col-sm-2">{:__('Unique')&cc;:</label>*/}
{/* <div class="col-xs-12 col-sm-8">*/}
{/* <input id="c-unique" class="form-control" name="row[unique]" type="number" value="{$row.unique|htmlentities&cc;">*/}
{/* </div>*/}
{/* </div>*/}
{/* <div class="form-group">*/}
{/* <label class="control-label col-xs-12 col-sm-2">{:__('Barcode')&cc;:</label>*/}
{/* <div class="col-xs-12 col-sm-8">*/}
{/* <input id="c-barcode" class="form-control" name="row[barcode]" type="text" value="{$row.barcode|htmlentities&cc;">*/}
{/* </div>*/}
{/* </div>*/}
<div class="form-group layer-footer">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8">
... ...
... ... @@ -8,13 +8,11 @@
<div id="toolbar" class="toolbar">
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('study/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('study/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('study/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
<a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('你的权限规则')?'':'hide'}" title="导入" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> 导入</a>
<a href="javascript:;" class="btn btn-success btn-export {:$auth->check('study/export')?'':'hide'}" title="{:__('Export')}" id="btn-export-file"><i class="fa fa-download"></i> {:__('Export')}</a>
<div class="dropdown btn-group {:$auth->check('study/multi')?'':'hide'}">
<a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
<ul class="dropdown-menu text-left" role="menu">
<ul class="dropdown-menu text-left" role="menu">
<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
</ul>
... ...
... ... @@ -31,7 +31,8 @@
"ext-pdo": "*",
"ext-bcmath": "*",
"txthinking/mailer": "^2.0",
"chenbool/barcode": "^1.0"
"chenbool/barcode": "^1.0",
"phpoffice/phpexcel": "^1.8"
},
"config": {
"preferred-install": "dist",
... ...
... ... @@ -17,33 +17,88 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
var table = $("#table");
//导出功能
$(document).on("click", ".btn-export", function () {
var ids = Table.api.selectedids(table);
var page = table.bootstrapTable('getData');
var all = table.bootstrapTable('getOptions').totalRows;
console.log(ids, page, all);
Layer.confirm("请选择导出的选项<form action='" + Fast.api.fixurl("study/export") + "' method='post' target='_blank'><input type='hidden' name='ids' value='' /><input type='hidden' name='filter' ><input type='hidden' name='op'><input type='hidden' name='search'><input type='hidden' name='columns'></form>", {
title: '导出数据',
btn: ["选中项(" + ids.length + "条)", "本页(" + page.length + "条)", "全部(" + all + "条)"],
success: function (layero, index) {
$(".layui-layer-btn a", layero).addClass("layui-layer-btn0");
}
, yes: function (index, layero) {
submitForm(ids.join(","), layero);
return false;
}
,
btn2: function (index, layero) {
var ids = [];
$.each(page, function (i, j) {
ids.push(j.id);
});
submitForm(ids.join(","), layero);
return false;
}
,
btn3: function (index, layero) {
submitForm("all", layero);
return false;
}
})
});
var submitForm = function (ids, layero) {
var options = table.bootstrapTable('getOptions');
console.log(options);
var columns = [];
$.each(options.columns[0], function (i, j) {
if (j.field && !j.checkbox && j.visible && j.field != 'operate') {
columns.push(j.field);
}
});
var search = options.queryParams({});
$("input[name=search]", layero).val(options.searchText);
$("input[name=ids]", layero).val(ids);
$("input[name=filter]", layero).val(search.filter);
$("input[name=op]", layero).val(search.op);
$("input[name=columns]", layero).val(columns.join(','));
$("form", layero).submit();
};
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
showToggle: false,//浏览模式功能关闭
showColumns: false,//显示隐藏列功能关闭
//commonSearch: false, //关闭通用搜索按钮
showExport: false,//导出功能关闭
clickToSelect: false, //是否启用点击选中
dblClickToEdit: false, //是否启用双击编辑
fixedColumns: true,
fixedRightNumber: 1,
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'user_id', title: __('User_id')},
{field: 'avatar', title: __('Avatar'), operate: 'LIKE', events: Table.api.events.image, formatter: Table.api.formatter.image},
{field: 'name', title: __('Name'), operate: 'LIKE'},
{field: 'gender', title: __('Gender'), searchList: {"0":__('Gender 0'),"1":__('Gender 1')}, formatter: Table.api.formatter.normal},
{field: 'birth', title: __('Birth'), operate: 'LIKE'},
{field: 'avatar', title: __('Avatar'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
{field: 'phone', title: __('Phone'), operate: 'LIKE'},
{field: 'team.title', title: __('Team.title'), operate: 'LIKE'},
{field: 'birthday', title: __('Birthday'),operate:false, addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime,datetimeFormat: "YYYY-MM-DD"},
{field: 'grade', title: __('Grade'), operate: 'LIKE'},
{field: 'school', title: __('School'), operate: 'LIKE'},
{field: 'unique', title: __('Unique')},
{field: 'sno', title: __('Sno'), operate: 'LIKE'},
{field: 'team_id', title: __('Team_id')},
{field: 'earn_score', title: __('Earn_score'), operate:'BETWEEN'},
{field: 'qrcode', title: __('Qrcode'), operate: 'LIKE'},
{field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
{field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
{field: 'team.title', title: __('Team.title'), operate: 'LIKE'},
{field: 'user.username', title: __('User.username'), operate: 'LIKE'},
// {field: 'team_id', title: __('Team_id')},
{field: 'earn_score', title: __('Earn_score'), operate:false},
{field: 'unique', title: __('Unique'), operate:false},
{field: 'barcode', title: __('Barcode'), operate:false},
// {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
// {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
... ...
... ... @@ -7,5 +7,6 @@ $baseDir = dirname($vendorDir);
return array(
'Pimple' => array($vendorDir . '/pimple/pimple/src'),
'PHPExcel' => array($vendorDir . '/phpoffice/phpexcel/Classes'),
'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'),
);
... ...
... ... @@ -9,7 +9,7 @@ return array(
'think\\helper\\' => array($vendorDir . '/topthink/think-helper/src'),
'think\\composer\\' => array($vendorDir . '/topthink/think-installer/src'),
'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'),
'think\\' => array($baseDir . '/thinkphp/library/think', $vendorDir . '/karsonzhang/fastadmin-addons/src', $vendorDir . '/topthink/think-queue/src'),
'think\\' => array($vendorDir . '/karsonzhang/fastadmin-addons/src', $baseDir . '/thinkphp/library/think', $vendorDir . '/topthink/think-queue/src'),
'chenbool\\' => array($vendorDir . '/chenbool/barcode/src'),
'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'),
'Tx\\' => array($vendorDir . '/txthinking/mailer/src'),
... ... @@ -27,7 +27,7 @@ return array(
'Symfony\\Bridge\\PsrHttpMessage\\' => array($vendorDir . '/symfony/psr-http-message-bridge'),
'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src', $vendorDir . '/psr/http-factory/src'),
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
... ...
... ... @@ -113,8 +113,8 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65
),
'think\\' =>
array (
0 => __DIR__ . '/../..' . '/thinkphp/library/think',
1 => __DIR__ . '/..' . '/karsonzhang/fastadmin-addons/src',
0 => __DIR__ . '/..' . '/karsonzhang/fastadmin-addons/src',
1 => __DIR__ . '/../..' . '/thinkphp/library/think',
2 => __DIR__ . '/..' . '/topthink/think-queue/src',
),
'chenbool\\' =>
... ... @@ -187,8 +187,8 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65
),
'Psr\\Http\\Message\\' =>
array (
0 => __DIR__ . '/..' . '/psr/http-message/src',
1 => __DIR__ . '/..' . '/psr/http-factory/src',
0 => __DIR__ . '/..' . '/psr/http-factory/src',
1 => __DIR__ . '/..' . '/psr/http-message/src',
),
'Psr\\Http\\Client\\' =>
array (
... ... @@ -267,6 +267,10 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65
array (
0 => __DIR__ . '/..' . '/pimple/pimple/src',
),
'PHPExcel' =>
array (
0 => __DIR__ . '/..' . '/phpoffice/phpexcel/Classes',
),
),
'H' =>
array (
... ...
... ... @@ -1245,6 +1245,76 @@
"install-path": "../paragonie/random_compat"
},
{
"name": "phpoffice/phpexcel",
"version": "1.8.2",
"version_normalized": "1.8.2.0",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PHPExcel.git",
"reference": "1441011fb7ecdd8cc689878f54f8b58a6805f870"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPOffice/PHPExcel/zipball/1441011fb7ecdd8cc689878f54f8b58a6805f870",
"reference": "1441011fb7ecdd8cc689878f54f8b58a6805f870",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"ext-xml": "*",
"ext-xmlwriter": "*",
"php": "^5.2|^7.0"
},
"require-dev": {
"squizlabs/php_codesniffer": "2.*"
},
"time": "2018-11-22T23:07:24+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
"PHPExcel": "Classes/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1"
],
"authors": [
{
"name": "Maarten Balliauw",
"homepage": "http://blog.maartenballiauw.be"
},
{
"name": "Erik Tilt"
},
{
"name": "Franck Lefevre",
"homepage": "http://rootslabs.net"
},
{
"name": "Mark Baker",
"homepage": "http://markbakeruk.net"
}
],
"description": "PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
"homepage": "https://github.com/PHPOffice/PHPExcel",
"keywords": [
"OpenXML",
"excel",
"php",
"spreadsheet",
"xls",
"xlsx"
],
"support": {
"issues": "https://github.com/PHPOffice/PHPExcel/issues",
"source": "https://github.com/PHPOffice/PHPExcel/tree/master"
},
"abandoned": "phpoffice/phpspreadsheet",
"install-path": "../phpoffice/phpexcel"
},
{
"name": "phpoffice/phpspreadsheet",
"version": "1.19.0",
"version_normalized": "1.19.0.0",
... ...
... ... @@ -3,7 +3,7 @@
'name' => 'karsonzhang/fastadmin',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => 'cf512b490954a1f28e38e3588d8300ee784760b9',
'reference' => '9a8361a29c430477d49b4eccbb24941b30610f16',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
... ... @@ -67,7 +67,7 @@
'karsonzhang/fastadmin' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => 'cf512b490954a1f28e38e3588d8300ee784760b9',
'reference' => '9a8361a29c430477d49b4eccbb24941b30610f16',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
... ... @@ -172,6 +172,15 @@
'aliases' => array(),
'dev_requirement' => false,
),
'phpoffice/phpexcel' => array(
'pretty_version' => '1.8.2',
'version' => '1.8.2.0',
'reference' => '1441011fb7ecdd8cc689878f54f8b58a6805f870',
'type' => 'library',
'install_path' => __DIR__ . '/../phpoffice/phpexcel',
'aliases' => array(),
'dev_requirement' => false,
),
'phpoffice/phpspreadsheet' => array(
'pretty_version' => '1.19.0',
'version' => '1.19.0.0',
... ...