Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
DataCenter_Core2.1_20190520
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bltdc
DataCenter_Core2.1_20190520
Commits
61602e2e
Commit
61602e2e
authored
Nov 30, 2021
by
jianshuqin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化:组件功能
parent
6907af1d
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
140 additions
and
177 deletions
+140
-177
ColumnDTO.cs
Bailun.DC.Models/Component/DTO/ColumnDTO.cs
+12
-13
ControlDTO.cs
Bailun.DC.Models/Component/DTO/ControlDTO.cs
+0
-112
BaseService.cs
Bailun.DC.Services/Component/BaseService.cs
+64
-13
TableService.cs
Bailun.DC.Services/Component/TableService.cs
+28
-20
TableController.cs
Bailun.DC.Web/Areas/Component/Controllers/TableController.cs
+11
-2
Control.cshtml
Bailun.DC.Web/Areas/Component/Views/Form/Control.cshtml
+2
-3
Query.cshtml
Bailun.DC.Web/Areas/Component/Views/Table/Query.cshtml
+6
-6
el-table-query.js
Bailun.DC.Web/wwwroot/js/component/el-table-query.js
+17
-8
No files found.
Bailun.DC.Models/Component/DTO/ColumnDTO.cs
View file @
61602e2e
...
...
@@ -3,33 +3,31 @@
/// <summary>
/// 列
/// </summary>
public
class
ColumnDTO
:
ControlDTO
public
class
ColumnDTO
{
/// <summary>
///
编码
///
属性
/// </summary>
public
string
Code
{
get
;
set
;
}
public
bool
?
Sortable
{
get
;
set
;
}
public
string
Prop
{
get
;
set
;
}
/// <summary>
///
排序顺序
///
名称
/// </summary>
public
int
?
OrderSort
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
/// <summary>
///
宽度
///
是否隐藏
/// </summary>
public
int
?
Width
{
get
;
set
;
}
public
bool
?
IsHide
{
get
;
set
;
}
/// <summary>
/// 是否
降序
/// 是否
导出
/// </summary>
public
bool
?
Descending
{
get
;
set
;
}
public
bool
?
IsExport
{
get
;
set
;
}
/// <summary>
///
是否导出
///
格式化
/// </summary>
public
bool
?
IsExpor
t
{
get
;
set
;
}
public
dynamic
Forma
t
{
get
;
set
;
}
}
}
\ No newline at end of file
Bailun.DC.Models/Component/DTO/ControlDTO.cs
deleted
100644 → 0
View file @
6907af1d
using
System.Collections.Generic
;
namespace
Bailun.DC.Models.Component.DTO
{
/// <summary>
/// 列
/// </summary>
public
class
ControlDTO
{
/// <summary>
/// 类型
/// </summary>
public
string
Type
{
get
;
set
;
}
/// <summary>
/// 名称
/// </summary>
public
string
Name
{
get
;
set
;
}
/// <summary>
/// 控件跨度
/// </summary>
public
int
?
ColSpan
{
get
;
set
;
}
/// <summary>
/// 属性
/// </summary>
public
string
Prop
{
get
;
set
;
}
/// <summary>
/// 是否校验
/// </summary>
public
bool
?
Required
{
get
;
set
;
}
/// <summary>
/// 禁用(表达式)
/// </summary>
public
string
Disabled
{
get
;
set
;
}
/// <summary>
/// 是否隐藏
/// </summary>
public
bool
?
IsHide
{
get
;
set
;
}
/// <summary>
/// 点击事件
/// </summary>
public
string
Click
{
get
;
set
;
}
/// <summary>
/// 是否多选
/// </summary>
public
bool
?
Multiple
{
get
;
set
;
}
/// <summary>
/// 是否可搜索
/// </summary>
public
bool
?
Filterable
{
get
;
set
;
}
/// <summary>
/// 改变事件
/// </summary>
public
string
Change
{
get
;
set
;
}
/// <summary>
/// API地址
/// </summary>
public
string
Api
{
get
;
set
;
}
/// <summary>
/// API方式('get','post')
/// </summary>
public
string
ApiMethod
{
get
;
set
;
}
/// <summary>
/// 默认值
/// </summary>
public
dynamic
DefaultValue
{
get
;
set
;
}
/// <summary>
/// element按钮类型
/// </summary>
public
string
ButtonType
{
get
;
set
;
}
/// <summary>
/// element图标
/// </summary>
public
string
Icon
{
get
;
set
;
}
/// <summary>
/// 选项
/// </summary>
public
IEnumerable
<
OptionDTO
>
ListOption
{
get
;
set
;
}
}
/// <summary>
/// 选项
/// </summary>
public
class
OptionDTO
{
/// <summary>
/// 值
/// </summary>
public
string
Value
{
get
;
set
;
}
/// <summary>
/// 文本
/// </summary>
public
string
Text
{
get
;
set
;
}
}
}
Bailun.DC.Services/Component/BaseService.cs
View file @
61602e2e
using
Bailun.DC.Common
;
using
Bailun.DC.Models.Component.DTO
;
using
MySql.Data.MySqlClient
;
using
Newtonsoft.Json
;
using
NPOI.HSSF.UserModel
;
...
...
@@ -7,6 +8,7 @@ using System;
using
System.Collections.Generic
;
using
System.Data
;
using
System.IO
;
using
System.Linq
;
namespace
Bailun.DC.Services.Component
{
...
...
@@ -71,8 +73,13 @@ namespace Bailun.DC.Services.Component
public
static
byte
[]
DataTableToExcel
(
IDictionary
<
string
,
string
>
listHeader
,
DataTable
table
)
{
return
BaseService
.
DataTableToExcel
(
listHeader
?.
Select
(
l
=>
new
ColumnDTO
{
Prop
=
l
.
Key
,
Name
=
l
.
Value
}),
table
);
}
public
static
byte
[]
DataTableToExcel
(
IEnumerable
<
ColumnDTO
>
listColumn
,
DataTable
table
)
{
byte
[]
b
=
null
;
int
headerCount
=
list
Header
?.
Count
??
0
;
int
headerCount
=
list
Column
?.
Count
()
??
0
;
int
tableCount
=
table
?.
Rows
.
Count
??
0
;
if
(
headerCount
>
0
||
tableCount
>
0
)
{
...
...
@@ -98,11 +105,11 @@ namespace Bailun.DC.Services.Component
//标题
if
(
headerCount
>
0
)
{
list
Header
.
ForEach
((
l
,
col
)
=>
list
Column
.
ForEach
((
l
,
col
)
=>
{
ICell
cell
=
headerRow
.
CreateCell
(
col
);
cell
.
CellStyle
=
styleTitle
;
cell
.
SetCellValue
(
l
.
Valu
e
);
cell
.
SetCellValue
(
l
.
Nam
e
);
});
}
else
...
...
@@ -120,11 +127,31 @@ namespace Bailun.DC.Services.Component
IRow
dataRow
=
sheet
.
CreateRow
(
row
+
1
);
if
(
headerCount
>
0
)
{
list
Header
.
ForEach
((
l
,
col
)
=>
list
Column
.
ForEach
((
header
,
col
)
=>
{
if
(
table
.
Columns
.
Contains
(
l
.
Key
))
string
value
=
table
.
Rows
[
row
][
header
.
Name
]?.
ToString
();
if
(!
string
.
IsNullOrWhiteSpace
(
value
))
{
dataRow
.
CreateCell
(
col
).
SetCellValue
(
table
.
Rows
[
row
][
l
.
Key
]?.
ToString
());
if
(
header
.
Format
==
true
)
{
if
(
value
.
Equals
(
"true"
,
StringComparison
.
OrdinalIgnoreCase
)
||
value
==
"1"
)
{
value
=
"是"
;
}
else
if
(
value
.
Equals
(
"false"
,
StringComparison
.
OrdinalIgnoreCase
)
||
value
==
"0"
)
{
value
=
"否"
;
}
}
else
if
(
header
.
Format
is
string
)
{
DateTime
parseTime
=
DateTime
.
Now
;
if
(
DateTime
.
TryParse
(
value
,
out
parseTime
))
{
value
=
parseTime
.
ToString
(
header
.
Format
);
}
}
dataRow
.
CreateCell
(
col
).
SetCellValue
(
value
);
}
});
}
...
...
@@ -166,9 +193,14 @@ namespace Bailun.DC.Services.Component
public
static
byte
[]
DataReaderToExcel
(
IDictionary
<
string
,
string
>
listHeader
,
IDataReader
reader
,
int
dataCount
)
{
return
BaseService
.
DataReaderToExcel
(
listHeader
?.
Select
(
l
=>
new
ColumnDTO
{
Prop
=
l
.
Key
,
Name
=
l
.
Value
}),
reader
,
dataCount
);
}
public
static
byte
[]
DataReaderToExcel
(
IEnumerable
<
ColumnDTO
>
listColumn
,
IDataReader
reader
,
int
dataCount
)
{
byte
[]
data
=
null
;
if
(
list
Header
?.
Count
>
0
)
if
(
list
Column
?.
Count
()
>
0
)
{
IWorkbook
workbook
=
null
;
MemoryStream
ms
=
null
;
...
...
@@ -189,20 +221,40 @@ namespace Bailun.DC.Services.Component
fontTitle
.
FontHeightInPoints
=
12
;
//单元格样式
ICellStyle
styleTitle
=
workbook
.
CreateCellStyle
();
list
Header
.
ForEach
((
l
,
col
)
=>
list
Column
.
ForEach
((
l
,
col
)
=>
{
var
cell
=
headerRow
.
CreateCell
(
col
);
cell
.
CellStyle
=
styleTitle
;
cell
.
SetCellValue
(
l
.
Valu
e
);
cell
.
SetCellValue
(
l
.
Nam
e
);
});
for
(
int
row
=
0
;
row
<
excelMaxRowCount
&&
reader
.
Read
();
row
++)
{
IRow
dataRow
=
sheet
.
CreateRow
(
row
+
1
);
list
Header
.
ForEach
((
header
,
col
)
=>
list
Column
.
ForEach
((
header
,
col
)
=>
{
if
(
reader
[
header
.
Key
]
!=
null
)
string
value
=
reader
[
header
.
Prop
]?.
ToString
();
if
(!
string
.
IsNullOrWhiteSpace
(
value
))
{
dataRow
.
CreateCell
(
col
).
SetCellValue
(
reader
[
header
.
Key
].
ToString
());
if
(
header
.
Format
==
true
)
{
if
(
value
.
Equals
(
"true"
,
StringComparison
.
OrdinalIgnoreCase
)
||
value
==
"1"
)
{
value
=
"是"
;
}
else
if
(
value
.
Equals
(
"false"
,
StringComparison
.
OrdinalIgnoreCase
)
||
value
==
"0"
)
{
value
=
"否"
;
}
}
else
if
(
header
.
Format
is
string
)
{
DateTime
parseTime
=
DateTime
.
Now
;
if
(
DateTime
.
TryParse
(
value
,
out
parseTime
))
{
value
=
parseTime
.
ToString
(
header
.
Format
);
}
}
dataRow
.
CreateCell
(
col
).
SetCellValue
(
value
.
ToString
());
}
});
}
...
...
@@ -238,7 +290,6 @@ namespace Bailun.DC.Services.Component
}
return
data
;
}
}
...
...
Bailun.DC.Services/Component/TableService.cs
View file @
61602e2e
...
...
@@ -466,42 +466,50 @@ namespace Bailun.DC.Services.Component
return
pageList
;
}
public
byte
[]
Export
(
QueryFilterDTO
queryFilter
)
public
(
string
,
byte
[])
Export
(
QueryFilterDTO
queryFilter
)
{
byte
[]
b
=
default
(
byte
[]);
string
name
=
default
(
string
);
if
(
queryFilter
!=
null
)
{
TableDTO
entity
=
this
.
Get
(
queryFilter
.
Code
);
IList
<
dynamic
>
listColumn
=
this
.
GetListColumn
(
queryFilter
,
entity
);
if
(
listColumn
!=
null
)
if
(
entity
!=
null
)
{
//数据类型
DataTypeEnum
?[]
dataTypes
=
{
DataTypeEnum
.
Table
,
DataTypeEnum
.
Sql
};
name
=
string
.
Join
(
string
.
Empty
,
entity
.
ListCrumb
);
//列标题
IDictionary
<
string
,
string
>
listHeader
=
(
dynamic
)
listColumn
.
Where
(
l
=>
l
.
IsExport
==
true
||
(
l
.
IsExport
==
null
&&
l
.
IsHide
!=
true
)).
ToDictionary
(
l
=>
l
.
Prop
,
l
=>
l
.
Name
);
//全部数据导出
queryFilter
.
CurrentPage
=
null
;
queryFilter
.
pageSize
=
null
;
if
(!
string
.
IsNullOrWhiteSpace
(
entity
.
DataValue
)
&&
dataTypes
.
Contains
(
entity
.
DataType
))
IEnumerable
<
ColumnDTO
>
listColumn
=
JsonConvert
.
DeserializeObject
<
IList
<
ColumnDTO
>>(
JsonConvert
.
SerializeObject
(
this
.
GetListColumn
(
queryFilter
,
entity
)))?.
Where
(
l
=>
l
.
IsExport
==
true
||
(
l
.
IsExport
==
null
&&
l
.
IsHide
!=
true
));
if
(
listColumn
!=
null
)
{
(
int
,
IDataReader
)
reader
=
this
.
GetListDataReader
(
queryFilter
,
entity
);
using
(
reader
.
Item2
)
//数据类型
DataTypeEnum
?[]
dataTypes
=
{
DataTypeEnum
.
Table
,
DataTypeEnum
.
Sql
};
//全部数据导出
queryFilter
.
CurrentPage
=
null
;
queryFilter
.
pageSize
=
null
;
if
(!
string
.
IsNullOrWhiteSpace
(
entity
.
DataValue
)
&&
dataTypes
.
Contains
(
entity
.
DataType
))
{
b
=
DataReaderToExcel
(
listHeader
,
reader
.
Item2
,
reader
.
Item1
);
(
int
,
IDataReader
)
reader
=
this
.
GetListDataReader
(
queryFilter
,
entity
);
using
(
reader
.
Item2
)
{
b
=
DataReaderToExcel
(
listColumn
,
reader
.
Item2
,
reader
.
Item1
);
}
}
}
else
{
PageListDTO
pageList
=
this
.
GetListData
(
queryFilter
,
entity
);
if
(
listColumn
?.
Count
>
0
)
else
{
b
=
DataTableToExcel
(
listHeader
,
pageList
.
List
);
PageListDTO
pageList
=
this
.
GetListData
(
queryFilter
,
entity
);
if
(
listColumn
?.
Count
()
>
0
)
{
b
=
DataTableToExcel
(
listColumn
,
pageList
.
List
);
}
}
}
}
}
if
(
b
!=
null
)
{
name
=
$"
{(
name
??
"Export"
)}
_
{
DateTime
.
Now
.
ToString
(
"yyyyMMddhhmm"
)}
.xls"
;
}
return
b
;
return
(
name
,
b
)
;
}
/// <summary>
...
...
Bailun.DC.Web/Areas/Component/Controllers/TableController.cs
View file @
61602e2e
...
...
@@ -71,8 +71,17 @@ namespace Bailun.DC.Web.Areas.Component.Controllers
byte
[]
data
=
null
;
try
{
data
=
new
TableService
().
Export
(
queryFilter
);
return
File
(
data
,
"text/plain"
,
"ImportAttendeesInfol.xls"
);
var
exportResult
=
new
TableService
().
Export
(
queryFilter
);
if
(
exportResult
.
Item2
!=
null
)
{
data
=
exportResult
.
Item2
;
return
File
(
data
,
"text/plain"
,
exportResult
.
Item1
);
}
else
{
ResultDTO
result
=
new
ResultDTO
()
{
Message
=
"无数据导出"
};
return
Json
(
result
);
}
}
catch
(
Exception
ex
)
{
...
...
Bailun.DC.Web/Areas/Component/Views/Form/Control.cshtml
View file @
61602e2e
...
...
@@ -142,9 +142,8 @@
v-on:show-dialog="showDialog">
</el-table-control>
</template>
<template v-else-if="item.value">
<span class="text"
v-bind:style="item.color ? 'color:' + item.color: ''">{{item.value}}</span>
<template v-else-if="item.color">
<span class="text" v-bind:style="'color:' + item.color">{{item_value}}</span>
</template>
<template v-else-if="item_value != null">
{{ item.format ? (item_value.constructor === Boolean || item_value == 1 || item_value == 0 ? (item_value ? '是' : '否') :(new Date(item_value).format(item.format))) : item_value}}
...
...
Bailun.DC.Web/Areas/Component/Views/Table/Query.cshtml
View file @
61602e2e
<el-container class="el-table-query">
<el-header v-show="
setting.listFilterControl && setting.listFilterControl.length && setting.listOperateControl && setting.listOperateControl.length
">
<el-header v-show="
(setting.listFilterControl && setting.listFilterControl.length) || (setting.listOperateControl && setting.listOperateControl.length)
">
<el-form-filter ref="formFilter"
v-bind:filter="setting"
v-on:search="onSearch"
...
...
@@ -11,11 +11,11 @@
<el-container>
<el-main>
<el-table-control ref="table"
v-bind:code="code"
v-bind:filterParams="filterParams"
v-on:init="onInit"
v-on:show-dialog="showDialog"
v-on:close-dialog="closeDialog"></el-table-control>
v-bind:code="code"
v-bind:filterParams="filterParams"
v-on:init="onInit"
v-on:show-dialog="showDialog"
v-on:close-dialog="closeDialog"></el-table-control>
</el-main>
<el-footer>
<el-pagination background layout="total,sizes,jumper,prev, pager, next"
...
...
Bailun.DC.Web/wwwroot/js/component/el-table-query.js
View file @
61602e2e
...
...
@@ -70,6 +70,7 @@
var
that
=
this
;
Vue
.
set
(
that
,
'setting'
,
setting
);
//初始化时设置过虑条件
Vue
.
set
(
that
.
filterParams
,
'code'
,
setting
.
code
);
if
(
setting
.
listFilterControl
)
{
that
.
$refs
.
formFilter
.
filter
.
listFilterControl
=
setting
.
listFilterControl
Vue
.
set
(
that
.
filterParams
,
'listFilter'
,
that
.
$refs
.
formFilter
.
getFilter
(
true
));
...
...
@@ -124,15 +125,23 @@
headers
:
{
'Accept'
:
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8'
}
}).
then
(
function
(
json
)
{
var
ext
=
"xlsx"
;
if
(
json
.
headers
&&
json
.
headers
.
map
&&
json
.
headers
.
map
[
"content-disposition"
]
&&
json
.
headers
.
map
[
"content-disposition"
].
length
>
0
)
{
var
fileInfo
=
json
.
headers
.
map
[
"content-disposition"
][
0
].
split
(
';'
);
var
fileName
=
fileInfo
&&
fileInfo
.
length
>
2
&&
fileInfo
[
1
];
ext
=
fileName
&&
fileName
.
split
(
"."
).
length
>
1
&&
fileName
.
split
(
"."
)[
1
];
}).
then
(
function
(
respons
)
{
if
(
respons
.
bodyBlob
.
type
==
"application/json"
)
{
that
.
$message
(
respons
.
body
.
message
||
" 未知错误!"
);
}
else
{
if
(
respons
.
headers
&&
respons
.
headers
.
map
&&
respons
.
headers
.
map
[
"content-disposition"
]
&&
respons
.
headers
.
map
[
"content-disposition"
].
length
>
0
)
{
var
exportName
=
null
;
var
fileInfo
=
respons
.
headers
.
map
[
"content-disposition"
][
0
].
split
(
';'
);
if
(
fileInfo
.
length
>
2
)
{
exportName
=
decodeURI
(
fileInfo
[
2
].
replace
(
" filename*=UTF-8''"
,
""
));
}
else
if
(
fileInfo
.
length
>
1
)
{
exportName
=
fileInfo
[
1
].
replace
(
" filename="
,
""
);
}
else
{
exportName
=
(
that
.
setting
.
listCrumb
&&
that
.
setting
.
listCrumb
.
length
>
0
?
that
.
setting
.
listCrumb
.
join
(
""
)
:
(
'Export'
))
+
"_"
+
(
new
Date
().
format
(
"yyyyMMddhhmm"
))
+
"xls"
;
}
saveAs
(
respons
.
bodyBlob
,
exportName
);
}
}
var
exportName
=
(
that
.
setting
.
listCrumb
&&
that
.
setting
.
listCrumb
.
length
>
0
?
that
.
setting
.
listCrumb
.
join
(
""
)
:
(
'Export'
))
+
"_"
+
(
new
Date
().
format
(
"yyyyMMddhhmm"
));
saveAs
(
json
.
bodyBlob
,
exportName
+
"."
+
ext
);
}).
catch
(
function
(
error
)
{
that
.
$message
(
error
.
message
||
" 未知错误!"
);
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment