This commit is contained in:
2020-08-15 21:47:14 +08:00
parent 990f649724
commit 55f98eed02
20 changed files with 1451 additions and 3754 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
APP_DEBUG = false APP_DEBUG = false
VERSION = 4.0.2 VERSION = 4.0.3
rootuid = 1 rootuid = 1
+4
View File
@@ -110,6 +110,9 @@ class Form extends Base {
* @return html 页面 * @return html 页面
*/ */
public function lists($form_id = '') { public function lists($form_id = '') {
if(!$form_id){
return $this->error('无此表单!');
}
$form = $this->modelInfo; $form = $this->modelInfo;
$list = $this->model->order('id desc')->paginate(25); $list = $this->model->order('id desc')->paginate(25);
@@ -118,6 +121,7 @@ class Form extends Base {
'grid' => $this->modelInfo['grid_list'], 'grid' => $this->modelInfo['grid_list'],
'meta_title' => $this->modelInfo['title'] . '列表', 'meta_title' => $this->modelInfo['title'] . '列表',
'form_id' => $form_id, 'form_id' => $form_id,
'require' => ['jsname' => 'form', 'actionname' => 'lists'],
'list' => $list, 'list' => $list,
'page' => $list->render(), 'page' => $list->render(),
); );
+72
View File
@@ -0,0 +1,72 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin;
use QL\QueryList;
use app\model\Company;
/**
* @title 住建管理
* @description 住建管理
*/
class Hcloud extends Base {
/**
* @title 住建列表
*/
public function index(){
$map = array();
$order = "compId desc";
$list = Company::with(['apt'])->where($map)->order($order)->paginate($this->request->pageConfig);
$this->data = array(
'list' => $list,
'page' => $list->render(),
);
return $this->fetch();
}
public function get_comp_date(){
$param = $this->request->param();
// $param['qyType'] = 'QY_TYPE_0001';
$client = new \GuzzleHttp\Client();
$res = $client->request('post', 'http://zjy.jxjst.gov.cn/w/dataQuery/getCompDate', ['form_params' => $param])->getBody()->getContents();
$list = json_decode($res, true);
$data = [];
foreach($list['rows'] as $key => $val){
// $apt = $client->request('get', 'http://zjy.jxjst.gov.cn/w/cms/qy/getQyAptListData/'.$val['qyCompId'])->getBody()->getContents();
// $apt_list = json_decode($apt, true);
$detail = QueryList::get('http://zjy.jxjst.gov.cn/w/dataQuery/compDetailInfo/'.$val['qyCompId']);
$val['registerDate'] = $detail->find('.introduce-body:eq(0) table.daBg tr:eq(2) td:eq(1)')->text();
$val['registerGov'] = $detail->find('.introduce-body:eq(0) table.daBg tr:eq(3) td:eq(3)')->text();
$val['businessScope'] = $detail->find('.introduce-body:eq(0) table.daBg tr:eq(7) td:eq(1)')->text();
$val['safetyCode'] = $detail->find('.introduce-body:eq(1) table.daBg tr:eq(0) td:eq(1)')->text();
$val['safetyBdate'] = $detail->find('.introduce-body:eq(1) table.daBg tr:eq(1) td:eq(1)')->text();
$val['safetyEdate'] = $detail->find('.introduce-body:eq(1) table.daBg tr:eq(2) td:eq(1)')->text();
$val['safetyContent'] = $detail->find('.introduce-body:eq(1) table.daBg tr:eq(1) td:eq(3)')->text();
$val['safetyGov'] = $detail->find('.introduce-body:eq(1) table.daBg tr:eq(2) td:eq(3)')->text();
// $val['apt'] = $apt_list;
Company::create($val, [], true);
// if(count($apt_list['rows']) > 0){
// foreach($apt_list['rows'] as $k => $v){
// }
// }
// $list['rows'][$key] = $val;
// $data[] = $val;
}
// dump($list);
// (new Company())->saveAll($data, true);
}
public function list_ba_pubic(){
}
}
+3 -1
View File
@@ -8,6 +8,8 @@
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\controller\front; namespace app\controller\front;
use QL\QueryList;
class Index extends Base { class Index extends Base {
/** /**
@@ -16,7 +18,7 @@ class Index extends Base {
*/ */
public function index() { public function index() {
$this->setSeo("网站首页", '网站首页', '网站首页'); $this->setSeo("网站首页", '网站首页', '网站首页');
return $this->fetch(); // return $this->fetch();
} }
public function miss(){ public function miss(){
+22
View File
@@ -0,0 +1,22 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace app\model;
/**
* Company模型
*/
class Company extends \think\Model{
protected $auto = array('update_time');
protected $insert = array('create_time');
public function apt(){
return $this->hasMany('CompanyApt', 'compId', 'compId');
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace app\model;
/**
* Company模型
*/
class CompanyApt extends \think\Model{
protected $auto = array('update_time');
protected $insert = array('create_time');
}
+2 -1
View File
@@ -28,7 +28,8 @@
"xin/helper": "^1.0.0", "xin/helper": "^1.0.0",
"sent/tree": "^1.0.0", "sent/tree": "^1.0.0",
"sent/think-addons": "^1.0.0", "sent/think-addons": "^1.0.0",
"overtrue/wechat": "^4.2" "overtrue/wechat": "^4.2",
"jaeger/querylist": "^4.2"
}, },
"require-dev": { "require-dev": {
"symfony/var-dumper": "^4.2" "symfony/var-dumper": "^4.2"
+2 -1
View File
@@ -104,7 +104,8 @@ require.config({
'webupload': {deps: ['jquery', 'css!'+baseRoot+'plugins/webuploader/theme/webuploader.css', 'css!'+baseRoot+'/plugins/webuploader/theme/app.css']}, 'webupload': {deps: ['jquery', 'css!'+baseRoot+'plugins/webuploader/theme/webuploader.css', 'css!'+baseRoot+'/plugins/webuploader/theme/app.css']},
'layer': {deps: ['jquery', 'css!'+baseRoot+'plugins/layer/theme/default/layer.css']}, 'layer': {deps: ['jquery', 'css!'+baseRoot+'plugins/layer/theme/default/layer.css']},
'layui':{exports: "layui"} 'layui':{exports: "layui"},
// 'sheetjs':{exports: 'XLSX'}
}, },
deps: ['json'], deps: ['json'],
// 开启debug模式,不缓存资源 // 开启debug模式,不缓存资源
+17
View File
@@ -0,0 +1,17 @@
define(['jquery', 'sent', 'form', 'xlsx', 'sheetjs'], function($, sent, form, xlsx, xlsx2){
var formModule = {
lists: function(){
console.log('xlsx2')
if($('.btn-out').size() > 0){
$('.btn-out').click(function(e){
e.preventDefault();
var url = $(this).attr('href');
console.log(xlsx)
})
}
}
};
return formModule;
})
+10
View File
@@ -0,0 +1,10 @@
define(['jquery', 'sent', 'form', 'xlsx', 'sheetjs'], function($, sent, form, xls){
var hcloud = {
index: function(){
// console.log(XLSX);
}
}
return hcloud;
})
+4 -17
View File
@@ -1,4 +1,4 @@
require(['jquery', 'sheetjs'], function($, XLSX) { define(['jquery', 'sheetjs'], function($, XLSX) {
// var wopts = { bookType: 'csv', bookSST: false, type: 'binary' };//ods格式 // var wopts = { bookType: 'csv', bookSST: false, type: 'binary' };//ods格式
var wopts = { bookType: 'xlsx', bookSST: false, type: 'binary' };//这里的数据是用来定义导出的格式类型 var wopts = { bookType: 'xlsx', bookSST: false, type: 'binary' };//这里的数据是用来定义导出的格式类型
@@ -9,10 +9,9 @@ require(['jquery', 'sheetjs'], function($, XLSX) {
var xls = { var xls = {
downloadExl: function (data, fileName) { downloadExl: function (data, fileName) {
checkFileIn();
var wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} }; var wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} };
wb.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(data);//通过json_to_sheet转成单页(Sheet)数据 wb.Sheets['Sheet1'] = sheetjs.utils.json_to_sheet(data);//通过json_to_sheet转成单页(Sheet)数据
this.saveAs(new Blob([this.s2ab(XLSX.write(wb, wopts))], { type: "application/octet-stream" }), fileName + '.' + (wopts.bookType=="biff2"?"xls":wopts.bookType)); this.saveAs(new Blob([this.s2ab(sheetjs.write(wb, wopts))], { type: "application/octet-stream" }), fileName + '.' + (wopts.bookType=="biff2"?"xls":wopts.bookType));
}, },
//如果使用 FileSaver.js 就不要同时使用以下函数 //如果使用 FileSaver.js 就不要同时使用以下函数
@@ -41,19 +40,7 @@ require(['jquery', 'sheetjs'], function($, XLSX) {
} }
} }
}; };
console.log(XLSX);
checkFileIn = function(){
if($("script[src='/static/js/js-xlsx/xlsx.full.min.js']").length > 0){
return;
}else{
var body = $("body");
var script = $("<script>");
$(script).attr('type','text/javascript');
$(script).attr('src','/static/js/js-xlsx/xlsx.full.min.js');
$(body).append(script);
}
}
window.xls = xls; window.xls = xls;
return xls; return xls;
}); });
+6 -8
View File
@@ -1,6 +1,6 @@
/* cpexcel.js (C) 2013-present SheetJS -- http://sheetjs.com */ /* cpexcel.js (C) 2013-present SheetJS -- http://sheetjs.com */
/*jshint -W100 */ /*jshint -W100 */
var cptable = {version:"1.14.0"}; var cptable = {version:"1.13.0"};
cptable[437] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); cptable[437] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
cptable[620] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖܢ٥śƒŹŻóÓńŃźż¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); cptable[620] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖܢ٥śƒŹŻóÓńŃźż¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
cptable[737] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); cptable[737] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
@@ -1017,11 +1017,9 @@ if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODE
var cca = function cca(x) { return x.charCodeAt(0); }; var cca = function cca(x) { return x.charCodeAt(0); };
var has_buf = (typeof Buffer !== 'undefined'); var has_buf = (typeof Buffer !== 'undefined');
var Buffer_from = function(){};
if(has_buf) { if(has_buf) {
var nbfs = !Buffer.from; // $FlowIgnore
if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; } if(!Buffer.from) Buffer.from = function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); };
Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);
// $FlowIgnore // $FlowIgnore
if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); }; if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); };
@@ -1294,7 +1292,7 @@ if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODE
} }
else if((M=magic[cp])) switch(M) { else if((M=magic[cp])) switch(M) {
case "utf8": case "utf8":
if(has_buf && isstr) { out = Buffer_from(data, M); j = out.length; break; } if(has_buf && isstr) { out = Buffer.from(data, M); j = out.length; break; }
for(i = 0; i < len; ++i, ++j) { for(i = 0; i < len; ++i, ++j) {
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
if(w <= 0x007F) out[j] = w; if(w <= 0x007F) out[j] = w;
@@ -1316,7 +1314,7 @@ if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODE
} }
break; break;
case "ascii": case "ascii":
if(has_buf && typeof data === "string") { out = Buffer_from(data, M); j = out.length; break; } if(has_buf && typeof data === "string") { out = Buffer.from(data, M); j = out.length; break; }
for(i = 0; i < len; ++i, ++j) { for(i = 0; i < len; ++i, ++j) {
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
if(w <= 0x007F) out[j] = w; if(w <= 0x007F) out[j] = w;
@@ -1324,7 +1322,7 @@ if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODE
} }
break; break;
case "utf16le": case "utf16le":
if(has_buf && typeof data === "string") { out = Buffer_from(data, M); j = out.length; break; } if(has_buf && typeof data === "string") { out = Buffer.from(data, M); j = out.length; break; }
for(i = 0; i < len; ++i) { for(i = 0; i < len; ++i) {
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
out[j++] = w&255; out[j++] = w&255;
+3 -5
View File
@@ -600,16 +600,14 @@ module.exports = function(data, options) {
},{"./base64":1,"./zipEntries":22}],11:[function(_dereq_,module,exports){ },{"./base64":1,"./zipEntries":22}],11:[function(_dereq_,module,exports){
(function (Buffer){ (function (Buffer){
'use strict'; 'use strict';
var Buffer_from = /*::(*/function(){}/*:: :any)*/;
if(typeof Buffer !== 'undefined') { if(typeof Buffer !== 'undefined') {
var nbfs = !Buffer.from; // $FlowIgnore
if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; } if(!Buffer.from) Buffer.from = function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); };
Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);
// $FlowIgnore // $FlowIgnore
if(!Buffer.alloc) Buffer.alloc = function(n) { return new Buffer(n); }; if(!Buffer.alloc) Buffer.alloc = function(n) { return new Buffer(n); };
} }
module.exports = function(data, encoding){ module.exports = function(data, encoding){
return typeof data == 'number' ? Buffer.alloc(data) : Buffer_from(data, encoding); return typeof data == 'number' ? Buffer.alloc(data) : Buffer.from(data, encoding);
}; };
module.exports.test = function(b){ module.exports.test = function(b){
return Buffer.isBuffer(b); return Buffer.isBuffer(b);
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -4,7 +4,7 @@
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title">{$meta_title}</h3> <h3 class="box-title">{$meta_title}</h3>
<div class="box-tools pull-right"> <div class="box-tools pull-right">
<a class="btn btn-warning" href="{:url('/admin/form/lists')}"><i class="fa fa-reply"></i> 导出</a> <a class="btn btn-warning btn-out btn-sm" href="{:url('/admin/form/lists')}"><i class="fa fa-reply"></i> 导出</a>
</div> </div>
</div> </div>
<div class="box-body"> <div class="box-body">
+75
View File
@@ -0,0 +1,75 @@
{extend name="admin/public/base"/}
{block name="body"}
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">{$meta_title}</h3>
<div class="box-tools pull-right">
<!-- <a class="btn btn-sm btn-primary" href="{:url('/admin/hcloud/add')}">新 增</a>
<button class="btn btn-sm btn-danger ajax-post confirm" url="{:url('/admin/hcloud/delete')}" data-form="ids">删 除</button> -->
</div>
</div>
<div class="box-body">
<div class="table-responsive clearfix">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>公司名称</th>
<th>公司法人</th>
<th>注册地址</th>
<th>证书编号</th>
<th>安全许可到期时间</th>
<th>资质项名称</th>
<th>证书编号</th>
<th>发证日期</th>
<th>证书有效期</th>
<th>发证机关</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
{if count($item['apt']) > 0}
<tr>
<td rowspan="{:count($item['apt'])}">{$item['compName']}</td>
<td rowspan="{:count($item['apt'])}">{$item['compCeoName']}</td>
<td rowspan="{:count($item['apt'])}">{$item['compRegAddr']}</td>
<td rowspan="{:count($item['apt'])}">{$item['safetyCode']}</td>
<td rowspan="{:count($item['apt'])}">{$item['safetyEdate']}</td>
<td>{$item['apt'][0]['aptCasename']}</td>
<td>{$item['apt'][0]['certPrintNo']}</td>
<td>{$item['apt'][0]['validBdate']}</td>
<td>{$item['apt'][0]['validEdate']}</td>
<td>{$item['apt'][0]['issueUnitName']}</td>
</tr>
{volist name="item['apt']" id="vo" key="j"}
{if $j > 1}
<tr>
<td>{$vo['aptCasename']}</td>
<td>{$vo['certPrintNo']}</td>
<td>{$vo['validBdate']}</td>
<td>{$vo['validEdate']}</td>
<td>{$vo['issueUnitName']}</td>
</tr>
{/if}
{/volist}
{else/}
<tr>
<td>{$item['compName']}</td>
<td>{$item['compCeoName']}</td>
<td>{$item['compRegAddr']}</td>
<td>{$item['safetyCode']}</td>
<td>{$item['safetyEdate']}</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
{/if}
{/volist}
</tbody>
</table>
{$page|raw}
</div>
</div>
</div>
{/block}