Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
biz-trina5-app
Project
Project
Details
Activity
Releases
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
贺双
biz-trina5-app
Commits
dcd21c31
Commit
dcd21c31
authored
May 21, 2025
by
贺世双
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增异常上报
parent
c02bee8e
Changes
35
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
5724 additions
and
509 deletions
+5724
-509
apiList.js
api/apiList.js
+21
-0
bs-todoRemark.vue
components/baseComponents/bs-todoRemark/bs-todoRemark.vue
+64
-0
pages.json
pages.json
+4
-3
index.vue
pages/index/index.vue
+17
-1
abnormalEvent.vue
subpkg/abnormalEvent/abnormalEvent.vue
+658
-0
abnormalEventDetail.vue
subpkg/abnormalEventDetail/abnormalEventDetail.vue
+646
-0
signFor.vue
subpkg/signFor/signFor.vue
+0
-505
changelog.md
uni_modules/uni-table/changelog.md
+23
-0
uni-table.vue
uni_modules/uni-table/components/uni-table/uni-table.vue
+455
-0
uni-tbody.vue
uni_modules/uni-table/components/uni-tbody/uni-tbody.vue
+29
-0
uni-td.vue
uni_modules/uni-table/components/uni-td/uni-td.vue
+90
-0
filter-dropdown.vue
uni_modules/uni-table/components/uni-th/filter-dropdown.vue
+503
-0
uni-th.vue
uni_modules/uni-table/components/uni-th/uni-th.vue
+278
-0
uni-thead.vue
uni_modules/uni-table/components/uni-thead/uni-thead.vue
+129
-0
table-checkbox.vue
uni_modules/uni-table/components/uni-tr/table-checkbox.vue
+179
-0
uni-tr.vue
uni_modules/uni-table/components/uni-tr/uni-tr.vue
+171
-0
en.json
uni_modules/uni-table/i18n/en.json
+9
-0
es.json
uni_modules/uni-table/i18n/es.json
+9
-0
fr.json
uni_modules/uni-table/i18n/fr.json
+9
-0
index.js
uni_modules/uni-table/i18n/index.js
+12
-0
zh-Hans.json
uni_modules/uni-table/i18n/zh-Hans.json
+9
-0
zh-Hant.json
uni_modules/uni-table/i18n/zh-Hant.json
+9
-0
package.json
uni_modules/uni-table/package.json
+86
-0
readme.md
uni_modules/uni-table/readme.md
+13
-0
changelog.md
uni_modules/zb-table/changelog.md
+106
-0
table-checkbox.vue
...b-table/components/zb-table/components/table-checkbox.vue
+180
-0
table-h5-summary.vue
...table/components/zb-table/components/table-h5-summary.vue
+78
-0
table-side-summary.vue
...ble/components/zb-table/components/table-side-summary.vue
+59
-0
table-summary.vue
...zb-table/components/zb-table/components/table-summary.vue
+77
-0
zb-load-more.vue
.../zb-table/components/zb-table/components/zb-load-more.vue
+50
-0
summary.js
uni_modules/zb-table/components/zb-table/js/summary.js
+88
-0
util.js
uni_modules/zb-table/components/zb-table/js/util.js
+51
-0
zb-table.vue
uni_modules/zb-table/components/zb-table/zb-table.vue
+1342
-0
package.json
uni_modules/zb-table/package.json
+81
-0
readme.md
uni_modules/zb-table/readme.md
+189
-0
No files found.
api/apiList.js
View file @
dcd21c31
...
...
@@ -123,6 +123,27 @@ export function getOrderPodSingList(data) {
return
Request
(
`/api/entry/{mini}/m-action/getOrderPodSingList`
,
data
);
}
//查询一级异常信息
export
function
getLevelAbnormalAll
(
data
)
{
return
Request
(
`/api/entry/{mini}/m-action/getLevelAbnormalAll`
,
data
);
}
//查询费用明细项
export
function
getAbnormaCostBaseAll
(
data
)
{
return
Request
(
`/api/entry/{mini}/m-action/getAbnormaCostBaseAll`
,
data
);
}
//查询币种
export
function
getCurrencyAll
(
data
)
{
return
Request
(
`/api/entry/{mini}/m-action/getCurrencyAll`
,
data
);
}
//新增异常费用信息
export
function
saveAppAbnormalEvent
(
data
)
{
return
Request
(
`/api/entry/{mini}/m-action/saveAppAbnormalEvent`
,
data
);
}
// 查询货量明细
// OM模式
export
function
OMOrderDetail
(
data
)
{
...
...
components/baseComponents/bs-todoRemark/bs-todoRemark.vue
0 → 100644
View file @
dcd21c31
<
template
>
<view
class=
"todo-remark"
>
<view
class=
"remark-title"
>
{{
title
}}
</view>
<u-textarea
v-model=
"value"
:placeholder=
"isReadonly ? '' : placeholder"
:count=
"!isReadonly"
autoHeight
:disabled=
"isReadonly"
maxlength=
"200"
border=
"none"
@
blur=
"onBlur"
holdKeyboard
/>
</view>
</
template
>
<
script
>
export
default
{
name
:
"bs-todoRemark"
,
options
:
{
styleIsolation
:
'shared'
},
props
:
{
title
:
{
type
:
String
,
default
:
""
},
placeholder
:
{
type
:
String
,
default
:
""
},
isReadonly
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
value
:
""
};
},
methods
:
{
onBlur
(
e
)
{
const
{
value
}
=
e
.
detail
this
.
setValue
(
value
)
},
//设置默认值
setValue
(
value
)
{
this
.
value
=
value
}
}
}
</
script
>
<
style
lang=
"scss"
>
.todo-remark
{
font-size
:
28rpx
;
margin-top
:
32rpx
;
.remark-title
{
color
:
#8C8C8C
;
margin-bottom
:
24rpx
;
}
.u-textarea
{
min-height
:
150rpx
;
background-color
:
#FAFAFA
;
.u-textarea__field
{
min-height
:
120rpx
;
}
}
}
</
style
>
pages.json
View file @
dcd21c31
...
...
@@ -119,9 +119,9 @@
"enablePullDownRefresh"
:
false
}
},
{
"path"
:
"
signFor/signFor
"
,
"path"
:
"
abnormalEventDetail/abnormalEventDetail
"
,
"style"
:
{
"navigationBarTitleText"
:
""
,
"navigationBarTitleText"
:
"
费用明细
"
,
"enablePullDownRefresh"
:
false
,
"disableScroll"
:
false
}
...
...
@@ -151,7 +151,8 @@
"enablePullDownRefresh"
:
false
,
"disableScroll"
:
true
}
}]
}
]
}],
"globalStyle"
:
{
"navigationBarTextStyle"
:
"white"
,
...
...
pages/index/index.vue
View file @
dcd21c31
...
...
@@ -24,7 +24,7 @@
<view
class=
"section_9"
>
<u-button
@
click=
"warehouseShipment()"
shape=
"circle"
color=
"#2E75E6"
text=
"仓库已发货"
></u-button>
<u-button
@
click=
"arrivalPort()"
shape=
"circle"
color=
"#2E75E6"
text=
"进港(到目的地)"
customStyle=
"margin-left: 20rpx;"
></u-button>
<u-button
@
click=
"on
VisibleDate
()"
shape=
"circle"
color=
"#2E75E6"
customStyle=
"margin-left: 20rpx;"
text=
"异常上报"
></u-button>
<u-button
@
click=
"on
AbnormalEvents
()"
shape=
"circle"
color=
"#2E75E6"
customStyle=
"margin-left: 20rpx;"
text=
"异常上报"
></u-button>
</view>
</view>
<!--
<view
class=
"box_4"
>
...
...
@@ -231,6 +231,22 @@
})
}
},
//异常上报
onAbnormalEvents
(){
if
(
this
.
message
.
length
>
0
)
{
console
.
log
(
this
.
message
)
getApp
().
globalData
.
abnormalEvent
=
this
.
message
[
0
]
uni
.
navigateTo
({
url
:
`/subpkg/abnormalEvent/abnormalEvent`
,
})
}
else
{
uni
.
showToast
({
title
:
"请选择运单"
,
duration
:
3000
,
icon
:
'error'
})
}
},
//到厂、仓库到货、进港提交表单数据
onSubmitForm
(
type
)
{
const
rows
=
this
.
choose
;
...
...
subpkg/abnormalEvent/abnormalEvent.vue
View file @
dcd21c31
This diff is collapsed.
Click to expand it.
subpkg/abnormalEventDetail/abnormalEventDetail.vue
0 → 100644
View file @
dcd21c31
This diff is collapsed.
Click to expand it.
subpkg/signFor/signFor.vue
deleted
100644 → 0
View file @
c02bee8e
This diff is collapsed.
Click to expand it.
uni_modules/uni-table/changelog.md
0 → 100644
View file @
dcd21c31
## 1.2.1(2022-06-06)
-
修复 微信小程序存在无使用组件的问题
## 1.2.0(2021-11-19)
-
优化 组件UI,并提供设计资源,详见:
[
https://uniapp.dcloud.io/component/uniui/resource
](
https://uniapp.dcloud.io/component/uniui/resource
)
-
文档迁移,详见:
[
https://uniapp.dcloud.io/component/uniui/uni-table
](
https://uniapp.dcloud.io/component/uniui/uni-table
)
## 1.1.0(2021-07-30)
-
组件兼容 vue3,如何创建vue3项目,详见
[
uni-app 项目支持 vue3 介绍
](
https://ask.dcloud.net.cn/article/37834
)
## 1.0.7(2021-07-08)
-
新增 uni-th 支持 date 日期筛选范围
## 1.0.6(2021-07-05)
-
新增 uni-th 支持 range 筛选范围
## 1.0.5(2021-06-28)
-
新增 uni-th 筛选功能
## 1.0.4(2021-05-12)
-
新增 示例地址
-
修复 示例项目缺少组件的Bug
## 1.0.3(2021-04-16)
-
新增 sortable 属性,是否开启单列排序
-
优化 表格多选逻辑
## 1.0.2(2021-03-22)
-
uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制
## 1.0.1(2021-02-05)
-
调整为uni_modules目录规范
uni_modules/uni-table/components/uni-table/uni-table.vue
0 → 100644
View file @
dcd21c31
This diff is collapsed.
Click to expand it.
uni_modules/uni-table/components/uni-tbody/uni-tbody.vue
0 → 100644
View file @
dcd21c31
<
template
>
<!-- #ifdef H5 -->
<tbody>
<slot></slot>
</tbody>
<!-- #endif -->
<!-- #ifndef H5 -->
<view><slot></slot></view>
<!-- #endif -->
</
template
>
<
script
>
export
default
{
name
:
'uniBody'
,
options
:
{
virtualHost
:
true
},
data
()
{
return
{
}
},
created
()
{},
methods
:
{}
}
</
script
>
<
style
>
</
style
>
uni_modules/uni-table/components/uni-td/uni-td.vue
0 → 100644
View file @
dcd21c31
<
template
>
<!-- #ifdef H5 -->
<td
class=
"uni-table-td"
:rowspan=
"rowspan"
:colspan=
"colspan"
:class=
"
{'table--border':border}" :style="{width:width + 'px','text-align':align}">
<slot></slot>
</td>
<!-- #endif -->
<!-- #ifndef H5 -->
<!-- :class="
{'table--border':border}" -->
<view
class=
"uni-table-td"
:class=
"
{'table--border':border}" :style="{width:width + 'px','text-align':align}">
<slot></slot>
</view>
<!-- #endif -->
</
template
>
<
script
>
/**
* Td 单元格
* @description 表格中的标准单元格组件
* @tutorial https://ext.dcloud.net.cn/plugin?id=3270
* @property {Number} align = [left|center|right] 单元格对齐方式
*/
export
default
{
name
:
'uniTd'
,
options
:
{
virtualHost
:
true
},
props
:
{
width
:
{
type
:
[
String
,
Number
],
default
:
''
},
align
:
{
type
:
String
,
default
:
'left'
},
rowspan
:
{
type
:
[
Number
,
String
],
default
:
1
},
colspan
:
{
type
:
[
Number
,
String
],
default
:
1
}
},
data
()
{
return
{
border
:
false
};
},
created
()
{
this
.
root
=
this
.
getTable
()
this
.
border
=
this
.
root
.
border
},
methods
:
{
/**
* 获取父元素实例
*/
getTable
()
{
let
parent
=
this
.
$parent
;
let
parentName
=
parent
.
$options
.
name
;
while
(
parentName
!==
'uniTable'
)
{
parent
=
parent
.
$parent
;
if
(
!
parent
)
return
false
;
parentName
=
parent
.
$options
.
name
;
}
return
parent
;
},
}
}
</
script
>
<
style
lang=
"scss"
>
$border-color
:
#EBEEF5
;
.uni-table-td
{
display
:
table-cell
;
padding
:
8px
10px
;
font-size
:
14px
;
border-bottom
:
1px
$border-color
solid
;
font-weight
:
400
;
color
:
#606266
;
line-height
:
23px
;
box-sizing
:
border-box
;
}
.table--border
{
border-right
:
1px
$border-color
solid
;
}
</
style
>
uni_modules/uni-table/components/uni-th/filter-dropdown.vue
0 → 100644
View file @
dcd21c31
This diff is collapsed.
Click to expand it.
uni_modules/uni-table/components/uni-th/uni-th.vue
0 → 100644
View file @
dcd21c31
<
template
>
<!-- #ifdef H5 -->
<th
:rowspan=
"rowspan"
:colspan=
"colspan"
class=
"uni-table-th"
:class=
"
{ 'table--border': border }" :style="{ width: customWidth + 'px', 'text-align': align }">
<view
class=
"uni-table-th-row"
>
<view
class=
"uni-table-th-content"
:style=
"
{ 'justify-content': contentAlign }" @click="sort">
<slot></slot>
<view
v-if=
"sortable"
class=
"arrow-box"
>
<text
class=
"arrow up"
:class=
"
{ active: ascending }" @click.stop="ascendingFn">
</text>
<text
class=
"arrow down"
:class=
"
{ active: descending }" @click.stop="descendingFn">
</text>
</view>
</view>
<dropdown
v-if=
"filterType || filterData.length"
:filterData=
"filterData"
:filterType=
"filterType"
@
change=
"ondropdown"
></dropdown>
</view>
</th>
<!-- #endif -->
<!-- #ifndef H5 -->
<view
class=
"uni-table-th"
:class=
"
{ 'table--border': border }" :style="{ width: customWidth + 'px', 'text-align': align }">
<slot></slot></view>
<!-- #endif -->
</
template
>
<
script
>
// #ifdef H5
import
dropdown
from
'./filter-dropdown.vue'
// #endif
/**
* Th 表头
* @description 表格内的表头单元格组件
* @tutorial https://ext.dcloud.net.cn/plugin?id=3270
* @property {Number | String} width 单元格宽度(支持纯数字、携带单位px或rpx)
* @property {Boolean} sortable 是否启用排序
* @property {Number} align = [left|center|right] 单元格对齐方式
* @value left 单元格文字左侧对齐
* @value center 单元格文字居中
* @value right 单元格文字右侧对齐
* @property {Array} filterData 筛选数据
* @property {String} filterType [search|select] 筛选类型
* @value search 关键字搜素
* @value select 条件选择
* @event {Function} sort-change 排序触发事件
*/
export
default
{
name
:
'uniTh'
,
options
:
{
virtualHost
:
true
},
components
:
{
// #ifdef H5
dropdown
// #endif
},
emits
:[
'sort-change'
,
'filter-change'
],
props
:
{
width
:
{
type
:
[
String
,
Number
],
default
:
''
},
align
:
{
type
:
String
,
default
:
'left'
},
rowspan
:
{
type
:
[
Number
,
String
],
default
:
1
},
colspan
:
{
type
:
[
Number
,
String
],
default
:
1
},
sortable
:
{
type
:
Boolean
,
default
:
false
},
filterType
:
{
type
:
String
,
default
:
""
},
filterData
:
{
type
:
Array
,
default
()
{
return
[]
}
}
},
data
()
{
return
{
border
:
false
,
ascending
:
false
,
descending
:
false
}
},
computed
:
{
// 根据props中的width属性 自动匹配当前th的宽度(px)
customWidth
(){
if
(
typeof
this
.
width
===
'number'
){
return
this
.
width
}
else
if
(
typeof
this
.
width
===
'string'
)
{
let
regexHaveUnitPx
=
new
RegExp
(
/^
[
1-9
][
0-9
]
*px$/g
)
let
regexHaveUnitRpx
=
new
RegExp
(
/^
[
1-9
][
0-9
]
*rpx$/g
)
let
regexHaveNotUnit
=
new
RegExp
(
/^
[
1-9
][
0-9
]
*$/g
)
if
(
this
.
width
.
match
(
regexHaveUnitPx
)
!==
null
)
{
// 携带了 px
return
this
.
width
.
replace
(
'px'
,
''
)
}
else
if
(
this
.
width
.
match
(
regexHaveUnitRpx
)
!==
null
)
{
// 携带了 rpx
let
numberRpx
=
Number
(
this
.
width
.
replace
(
'rpx'
,
''
))
let
widthCoe
=
uni
.
getSystemInfoSync
().
screenWidth
/
750
return
Math
.
round
(
numberRpx
*
widthCoe
)
}
else
if
(
this
.
width
.
match
(
regexHaveNotUnit
)
!==
null
)
{
// 未携带 rpx或px 的纯数字 String
return
this
.
width
}
else
{
// 不符合格式
return
''
}
}
else
{
return
''
}
},
contentAlign
()
{
let
align
=
'left'
switch
(
this
.
align
)
{
case
'left'
:
align
=
'flex-start'
break
case
'center'
:
align
=
'center'
break
case
'right'
:
align
=
'flex-end'
break
}
return
align
}
},
created
()
{
this
.
root
=
this
.
getTable
(
'uniTable'
)
this
.
rootTr
=
this
.
getTable
(
'uniTr'
)
this
.
rootTr
.
minWidthUpdate
(
this
.
customWidth
?
this
.
customWidth
:
140
)
this
.
border
=
this
.
root
.
border
this
.
root
.
thChildren
.
push
(
this
)
},
methods
:
{
sort
()
{
if
(
!
this
.
sortable
)
return
this
.
clearOther
()
if
(
!
this
.
ascending
&&
!
this
.
descending
)
{
this
.
ascending
=
true
this
.
$emit
(
'sort-change'
,
{
order
:
'ascending'
})
return
}
if
(
this
.
ascending
&&
!
this
.
descending
)
{
this
.
ascending
=
false
this
.
descending
=
true
this
.
$emit
(
'sort-change'
,
{
order
:
'descending'
})
return
}
if
(
!
this
.
ascending
&&
this
.
descending
)
{
this
.
ascending
=
false
this
.
descending
=
false
this
.
$emit
(
'sort-change'
,
{
order
:
null
})
}
},
ascendingFn
()
{
this
.
clearOther
()
this
.
ascending
=
!
this
.
ascending
this
.
descending
=
false
this
.
$emit
(
'sort-change'
,
{
order
:
this
.
ascending
?
'ascending'
:
null
})
},
descendingFn
()
{
this
.
clearOther
()
this
.
descending
=
!
this
.
descending
this
.
ascending
=
false
this
.
$emit
(
'sort-change'
,
{
order
:
this
.
descending
?
'descending'
:
null
})
},
clearOther
()
{
this
.
root
.
thChildren
.
map
(
item
=>
{
if
(
item
!==
this
)
{
item
.
ascending
=
false
item
.
descending
=
false
}
return
item
})
},
ondropdown
(
e
)
{
this
.
$emit
(
"filter-change"
,
e
)
},
/**
* 获取父元素实例
*/
getTable
(
name
)
{
let
parent
=
this
.
$parent
let
parentName
=
parent
.
$options
.
name
while
(
parentName
!==
name
)
{
parent
=
parent
.
$parent
if
(
!
parent
)
return
false
parentName
=
parent
.
$options
.
name
}
return
parent
}
}
}
</
script
>
<
style
lang=
"scss"
>
$border-color
:
#ebeef5
;
.uni-table-th
{
padding
:
12px
10px
;
/* #ifndef APP-NVUE */
display
:
table-cell
;
box-sizing
:
border-box
;
/* #endif */
font-size
:
14px
;
font-weight
:
bold
;
color
:
#909399
;
border-bottom
:
1px
$border-color
solid
;
}
.uni-table-th-row
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
}
.table--border
{
border-right
:
1px
$border-color
solid
;
}
.uni-table-th-content
{
display
:
flex
;
align-items
:
center
;
flex
:
1
;
}
.arrow-box
{
}
.arrow
{
display
:
block
;
position
:
relative
;
width
:
10px
;
height
:
8px
;
// border: 1px red solid;
left
:
5px
;
overflow
:
hidden
;
cursor
:
pointer
;
}
.down
{
top
:
3px
;
::after
{
content
:
''
;
width
:
8px
;
height
:
8px
;
position
:
absolute
;
left
:
2px
;
top
:
-5px
;
transform
:
rotate
(
45deg
);
background-color
:
#ccc
;
}
&
.active
{
::after
{
background-color
:
#007aff
;
}
}
}
.up
{
::after
{
content
:
''
;
width
:
8px
;
height
:
8px
;
position
:
absolute
;
left
:
2px
;
top
:
5px
;
transform
:
rotate
(
45deg
);
background-color
:
#ccc
;
}
&
.active
{
::after
{
background-color
:
#007aff
;
}
}
}
</
style
>
uni_modules/uni-table/components/uni-thead/uni-thead.vue
0 → 100644
View file @
dcd21c31
<
template
>
<!-- #ifdef H5 -->
<thead
class=
"uni-table-thead"
>
<tr
class=
"uni-table-tr"
>
<th
:rowspan=
"rowspan"
colspan=
"1"
class=
"checkbox"
:class=
"
{ 'tr-table--border': border }">
<table-checkbox
:indeterminate=
"indeterminate"
:checked=
"checked"
@
checkboxSelected=
"checkboxSelected"
></table-checkbox>
</th>
</tr>
<slot></slot>
</thead>
<!-- #endif -->
<!-- #ifndef H5 -->
<view
class=
"uni-table-thead"
><slot></slot></view>
<!-- #endif -->
</
template
>
<
script
>
import
tableCheckbox
from
'../uni-tr/table-checkbox.vue'
export
default
{
name
:
'uniThead'
,
components
:
{
tableCheckbox
},
options
:
{
virtualHost
:
true
},
data
()
{
return
{
border
:
false
,
selection
:
false
,
rowspan
:
1
,
indeterminate
:
false
,
checked
:
false
}
},
created
()
{
this
.
root
=
this
.
getTable
()
// #ifdef H5
this
.
root
.
theadChildren
=
this
// #endif
this
.
border
=
this
.
root
.
border
this
.
selection
=
this
.
root
.
type
},
methods
:
{
init
(
self
)
{
this
.
rowspan
++
},
checkboxSelected
(
e
)
{
this
.
indeterminate
=
false
const
backIndexData
=
this
.
root
.
backIndexData
const
data
=
this
.
root
.
trChildren
.
filter
(
v
=>
!
v
.
disabled
&&
v
.
keyValue
)
if
(
backIndexData
.
length
===
data
.
length
)
{
this
.
checked
=
false
this
.
root
.
clearSelection
()
}
else
{
this
.
checked
=
true
this
.
root
.
selectionAll
()
}
},
/**
* 获取父元素实例
*/
getTable
(
name
=
'uniTable'
)
{
let
parent
=
this
.
$parent
let
parentName
=
parent
.
$options
.
name
while
(
parentName
!==
name
)
{
parent
=
parent
.
$parent
if
(
!
parent
)
return
false
parentName
=
parent
.
$options
.
name
}
return
parent
}
}
}
</
script
>
<
style
lang=
"scss"
>
$border-color
:
#ebeef5
;
.uni-table-thead
{
display
:
table-header-group
;
}
.uni-table-tr
{
/* #ifndef APP-NVUE */
display
:
table-row
;
transition
:
all
0
.3s
;
box-sizing
:
border-box
;
/* #endif */
border
:
1px
red
solid
;
background-color
:
#fafafa
;
}
.checkbox
{
padding
:
0
8px
;
width
:
26px
;
padding-left
:
12px
;
/* #ifndef APP-NVUE */
display
:
table-cell
;
vertical-align
:
middle
;
/* #endif */
color
:
#333
;
font-weight
:
500
;
border-bottom
:
1px
$border-color
solid
;
font-size
:
14px
;
// text-align: center;
}
.tr-table--border
{
border-right
:
1px
$border-color
solid
;
}
/* #ifndef APP-NVUE */
.uni-table-tr
{
::v-deep
.uni-table-th
{
&
.table--border
:last-child
{
// border-right: none;
}
}
::v-deep
.uni-table-td
{
&
.table--border
:last-child
{
// border-right: none;
}
}
}
/* #endif */
</
style
>
uni_modules/uni-table/components/uni-tr/table-checkbox.vue
0 → 100644
View file @
dcd21c31
<
template
>
<view
class=
"uni-table-checkbox"
@
click=
"selected"
>
<view
v-if=
"!indeterminate"
class=
"checkbox__inner"
:class=
"
{'is-checked':isChecked,'is-disable':isDisabled}">
<view
class=
"checkbox__inner-icon"
></view>
</view>
<view
v-else
class=
"checkbox__inner checkbox--indeterminate"
>
<view
class=
"checkbox__inner-icon"
></view>
</view>
</view>
</
template
>
<
script
>
export
default
{
name
:
'TableCheckbox'
,
emits
:[
'checkboxSelected'
],
props
:
{
indeterminate
:
{
type
:
Boolean
,
default
:
false
},
checked
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
disabled
:
{
type
:
Boolean
,
default
:
false
},
index
:
{
type
:
Number
,
default
:
-
1
},
cellData
:
{
type
:
Object
,
default
()
{
return
{}
}
}
},
watch
:{
checked
(
newVal
){
if
(
typeof
this
.
checked
===
'boolean'
){
this
.
isChecked
=
newVal
}
else
{
this
.
isChecked
=
true
}
},
indeterminate
(
newVal
){
this
.
isIndeterminate
=
newVal
}
},
data
()
{
return
{
isChecked
:
false
,
isDisabled
:
false
,
isIndeterminate
:
false
}
},
created
()
{
if
(
typeof
this
.
checked
===
'boolean'
){
this
.
isChecked
=
this
.
checked
}
this
.
isDisabled
=
this
.
disabled
},
methods
:
{
selected
()
{
if
(
this
.
isDisabled
)
return
this
.
isIndeterminate
=
false
this
.
isChecked
=
!
this
.
isChecked
this
.
$emit
(
'checkboxSelected'
,
{
checked
:
this
.
isChecked
,
data
:
this
.
cellData
})
}
}
}
</
script
>
<
style
lang=
"scss"
>
$checked-color
:
#007aff
;
$border-color
:
#DCDFE6
;
$disable
:
0
.4
;
.uni-table-checkbox
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
center
;
position
:
relative
;
margin
:
5px
0
;
cursor
:
pointer
;
// 多选样式
.checkbox__inner
{
/* #ifndef APP-NVUE */
flex-shrink
:
0
;
box-sizing
:
border-box
;
/* #endif */
position
:
relative
;
width
:
16px
;
height
:
16px
;
border
:
1px
solid
$border-color
;
border-radius
:
2px
;
background-color
:
#fff
;
z-index
:
1
;
.checkbox__inner-icon
{
position
:
absolute
;
/* #ifdef APP-NVUE */
top
:
2px
;
/* #endif */
/* #ifndef APP-NVUE */
top
:
2px
;
/* #endif */
left
:
5px
;
height
:
7px
;
width
:
3px
;
border
:
1px
solid
#fff
;
border-left
:
0
;
border-top
:
0
;
opacity
:
0
;
transform-origin
:
center
;
transform
:
rotate
(
45deg
);
box-sizing
:
content-box
;
}
&
.checkbox--indeterminate
{
border-color
:
$checked-color
;
background-color
:
$checked-color
;
.checkbox__inner-icon
{
position
:
absolute
;
opacity
:
1
;
transform
:
rotate
(
0deg
);
height
:
2px
;
top
:
0
;
bottom
:
0
;
margin
:
auto
;
left
:
0px
;
right
:
0px
;
bottom
:
0
;
width
:
auto
;
border
:
none
;
border-radius
:
2px
;
transform
:
scale
(
0
.5
);
background-color
:
#fff
;
}
}
&
:hover
{
border-color
:
$checked-color
;
}
// 禁用
&
.is-disable
{
/* #ifdef H5 */
cursor
:
not
-
allowed
;
/* #endif */
background-color
:
#F2F6FC
;
border-color
:
$border-color
;
}
// 选中
&
.is-checked
{
border-color
:
$checked-color
;
background-color
:
$checked-color
;
.checkbox__inner-icon
{
opacity
:
1
;
transform
:
rotate
(
45deg
);
}
// 选中禁用
&
.is-disable
{
opacity
:
$disable
;
}
}
}
}
</
style
>
uni_modules/uni-table/components/uni-tr/uni-tr.vue
0 → 100644
View file @
dcd21c31
<
template
>
<!-- #ifdef H5 -->
<tr
class=
"uni-table-tr"
>
<th
v-if=
"selection === 'selection' && ishead"
class=
"checkbox"
:class=
"
{ 'tr-table--border': border }">
<table-checkbox
:checked=
"checked"
:indeterminate=
"indeterminate"
:disabled=
"disabled"
@
checkboxSelected=
"checkboxSelected"
></table-checkbox>
</th>
<slot></slot>
<!--
<uni-th
class=
"th-fixed"
>
123
</uni-th>
-->
</tr>
<!-- #endif -->
<!-- #ifndef H5 -->
<view
class=
"uni-table-tr"
>
<view
v-if=
"selection === 'selection' "
class=
"checkbox"
:class=
"
{ 'tr-table--border': border }">
<table-checkbox
:checked=
"checked"
:indeterminate=
"indeterminate"
:disabled=
"disabled"
@
checkboxSelected=
"checkboxSelected"
></table-checkbox>
</view>
<slot></slot>
</view>
<!-- #endif -->
</
template
>
<
script
>
import
tableCheckbox
from
'./table-checkbox.vue'
/**
* Tr 表格行组件
* @description 表格行组件 仅包含 th,td 组件
* @tutorial https://ext.dcloud.net.cn/plugin?id=
*/
export
default
{
name
:
'uniTr'
,
components
:
{
tableCheckbox
},
props
:
{
disabled
:
{
type
:
Boolean
,
default
:
false
},
keyValue
:
{
type
:
[
String
,
Number
],
default
:
''
}
},
options
:
{
virtualHost
:
true
},
data
()
{
return
{
value
:
false
,
border
:
false
,
selection
:
false
,
widthThArr
:
[],
ishead
:
true
,
checked
:
false
,
indeterminate
:
false
}
},
created
()
{
this
.
root
=
this
.
getTable
()
this
.
head
=
this
.
getTable
(
'uniThead'
)
if
(
this
.
head
)
{
this
.
ishead
=
false
this
.
head
.
init
(
this
)
}
this
.
border
=
this
.
root
.
border
this
.
selection
=
this
.
root
.
type
this
.
root
.
trChildren
.
push
(
this
)
const
rowData
=
this
.
root
.
data
.
find
(
v
=>
v
[
this
.
root
.
rowKey
]
===
this
.
keyValue
)
if
(
rowData
){
this
.
rowData
=
rowData
}
this
.
root
.
isNodata
()
},
mounted
()
{
if
(
this
.
widthThArr
.
length
>
0
)
{
const
selectionWidth
=
this
.
selection
===
'selection'
?
50
:
0
this
.
root
.
minWidth
=
this
.
widthThArr
.
reduce
((
a
,
b
)
=>
Number
(
a
)
+
Number
(
b
))
+
selectionWidth
}
},
// #ifndef VUE3
destroyed
()
{
const
index
=
this
.
root
.
trChildren
.
findIndex
(
i
=>
i
===
this
)
this
.
root
.
trChildren
.
splice
(
index
,
1
)
this
.
root
.
isNodata
()
},
// #endif
// #ifdef VUE3
unmounted
()
{
const
index
=
this
.
root
.
trChildren
.
findIndex
(
i
=>
i
===
this
)
this
.
root
.
trChildren
.
splice
(
index
,
1
)
this
.
root
.
isNodata
()
},
// #endif
methods
:
{
minWidthUpdate
(
width
)
{
this
.
widthThArr
.
push
(
width
)
},
// 选中
checkboxSelected
(
e
)
{
let
rootData
=
this
.
root
.
data
.
find
(
v
=>
v
[
this
.
root
.
rowKey
]
===
this
.
keyValue
)
this
.
checked
=
e
.
checked
this
.
root
.
check
(
rootData
||
this
,
e
.
checked
,
rootData
?
this
.
keyValue
:
null
)
},
change
(
e
)
{
this
.
root
.
trChildren
.
forEach
(
item
=>
{
if
(
item
===
this
)
{
this
.
root
.
check
(
this
,
e
.
detail
.
value
.
length
>
0
?
true
:
false
)
}
})
},
/**
* 获取父元素实例
*/
getTable
(
name
=
'uniTable'
)
{
let
parent
=
this
.
$parent
let
parentName
=
parent
.
$options
.
name
while
(
parentName
!==
name
)
{
parent
=
parent
.
$parent
if
(
!
parent
)
return
false
parentName
=
parent
.
$options
.
name
}
return
parent
}
}
}
</
script
>
<
style
lang=
"scss"
>
$border-color
:
#ebeef5
;
.uni-table-tr
{
/* #ifndef APP-NVUE */
display
:
table-row
;
transition
:
all
0
.3s
;
box-sizing
:
border-box
;
/* #endif */
}
.checkbox
{
padding
:
0
8px
;
width
:
26px
;
padding-left
:
12px
;
/* #ifndef APP-NVUE */
display
:
table-cell
;
vertical-align
:
middle
;
/* #endif */
color
:
#333
;
font-weight
:
500
;
border-bottom
:
1px
$border-color
solid
;
font-size
:
14px
;
// text-align: center;
}
.tr-table--border
{
border-right
:
1px
$border-color
solid
;
}
/* #ifndef APP-NVUE */
.uni-table-tr
{
::v-deep
.uni-table-th
{
&
.table--border
:last-child
{
// border-right: none;
}
}
::v-deep
.uni-table-td
{
&
.table--border
:last-child
{
// border-right: none;
}
}
}
/* #endif */
</
style
>
uni_modules/uni-table/i18n/en.json
0 → 100644
View file @
dcd21c31
{
"filter-dropdown.reset"
:
"Reset"
,
"filter-dropdown.search"
:
"Search"
,
"filter-dropdown.submit"
:
"Submit"
,
"filter-dropdown.filter"
:
"Filter"
,
"filter-dropdown.gt"
:
"Greater or equal to"
,
"filter-dropdown.lt"
:
"Less than or equal to"
,
"filter-dropdown.date"
:
"Date"
}
uni_modules/uni-table/i18n/es.json
0 → 100644
View file @
dcd21c31
{
"filter-dropdown.reset"
:
"Reiniciar"
,
"filter-dropdown.search"
:
"Búsqueda"
,
"filter-dropdown.submit"
:
"Entregar"
,
"filter-dropdown.filter"
:
"Filtrar"
,
"filter-dropdown.gt"
:
"Mayor o igual a"
,
"filter-dropdown.lt"
:
"Menos que o igual a"
,
"filter-dropdown.date"
:
"Fecha"
}
uni_modules/uni-table/i18n/fr.json
0 → 100644
View file @
dcd21c31
{
"filter-dropdown.reset"
:
"Réinitialiser"
,
"filter-dropdown.search"
:
"Chercher"
,
"filter-dropdown.submit"
:
"Soumettre"
,
"filter-dropdown.filter"
:
"Filtre"
,
"filter-dropdown.gt"
:
"Supérieur ou égal à"
,
"filter-dropdown.lt"
:
"Inférieur ou égal à"
,
"filter-dropdown.date"
:
"Date"
}
uni_modules/uni-table/i18n/index.js
0 → 100644
View file @
dcd21c31
import
en
from
'./en.json'
import
es
from
'./es.json'
import
fr
from
'./fr.json'
import
zhHans
from
'./zh-Hans.json'
import
zhHant
from
'./zh-Hant.json'
export
default
{
en
,
es
,
fr
,
'zh-Hans'
:
zhHans
,
'zh-Hant'
:
zhHant
}
uni_modules/uni-table/i18n/zh-Hans.json
0 → 100644
View file @
dcd21c31
{
"filter-dropdown.reset"
:
"重置"
,
"filter-dropdown.search"
:
"搜索"
,
"filter-dropdown.submit"
:
"确定"
,
"filter-dropdown.filter"
:
"筛选"
,
"filter-dropdown.gt"
:
"大于等于"
,
"filter-dropdown.lt"
:
"小于等于"
,
"filter-dropdown.date"
:
"日期范围"
}
uni_modules/uni-table/i18n/zh-Hant.json
0 → 100644
View file @
dcd21c31
{
"filter-dropdown.reset"
:
"重置"
,
"filter-dropdown.search"
:
"搜索"
,
"filter-dropdown.submit"
:
"確定"
,
"filter-dropdown.filter"
:
"篩選"
,
"filter-dropdown.gt"
:
"大於等於"
,
"filter-dropdown.lt"
:
"小於等於"
,
"filter-dropdown.date"
:
"日期範圍"
}
uni_modules/uni-table/package.json
0 → 100644
View file @
dcd21c31
{
"id"
:
"uni-table"
,
"displayName"
:
"uni-table 表格"
,
"version"
:
"1.2.1"
,
"description"
:
"表格组件,多用于展示多条结构类似的数据,如"
,
"keywords"
:
[
"uni-ui"
,
"uniui"
,
"table"
,
"表格"
],
"repository"
:
"https://github.com/dcloudio/uni-ui"
,
"engines"
:
{
"HBuilderX"
:
""
},
"directories"
:
{
"example"
:
"../../temps/example_temps"
},
"dcloudext"
:
{
"category"
:
[
"前端组件"
,
"通用组件"
],
"sale"
:
{
"regular"
:
{
"price"
:
"0.00"
},
"sourcecode"
:
{
"price"
:
"0.00"
}
},
"contact"
:
{
"qq"
:
""
},
"declaration"
:
{
"ads"
:
"无"
,
"data"
:
"无"
,
"permissions"
:
"无"
},
"npmurl"
:
"https://www.npmjs.com/package/@dcloudio/uni-ui"
},
"uni_modules"
:
{
"dependencies"
:
[
"uni-scss"
,
"uni-datetime-picker"
],
"encrypt"
:
[],
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
},
"client"
:
{
"App"
:
{
"app-vue"
:
"y"
,
"app-nvue"
:
"n"
},
"H5-mobile"
:
{
"Safari"
:
"y"
,
"Android Browser"
:
"y"
,
"微信浏览器(Android)"
:
"y"
,
"QQ浏览器(Android)"
:
"y"
},
"H5-pc"
:
{
"Chrome"
:
"y"
,
"IE"
:
"y"
,
"Edge"
:
"y"
,
"Firefox"
:
"y"
,
"Safari"
:
"y"
},
"小程序"
:
{
"微信"
:
"y"
,
"阿里"
:
"y"
,
"百度"
:
"y"
,
"字节跳动"
:
"n"
,
"QQ"
:
"y"
},
"快应用"
:
{
"华为"
:
"n"
,
"联盟"
:
"n"
},
"Vue"
:
{
"vue2"
:
"y"
,
"vue3"
:
"y"
}
}
}
}
}
\ No newline at end of file
uni_modules/uni-table/readme.md
0 → 100644
View file @
dcd21c31
## Table 表单
> 组件名:``uni-table``,代码块: `uTable`。
用于展示多条结构类似的数据
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
uni_modules/zb-table/changelog.md
0 → 100644
View file @
dcd21c31
## 1.2.18(2023-06-01)
更新
## 1.2.16(2023-05-10)
增加单元格点击事件
完善文档
增加示例
## 1.2.15(2022-08-25)
优化部分细节
## 1.2.14(2022-04-25)
修改vue 3 报错小程序Generated an empty chunk: "uni_modules/zb-table/components/zb-table/js/util"
## 1.2.13(2022-04-22)
增加图片宽度设置
## 1.2.12(2022-04-22)
修复pc端 滚动条占位问题
## 1.2.11(2022-04-22)
增加多图片展示
## 1.2.10(2022-04-19)
版本解决冲突
## 1.2.9(2022-04-19)
暂时去掉多级表头...有着某些问题,正在修复中
## 1.1.9(2022-04-19)
暂时去掉多级表头...有着某些问题,正在修复中
## 1.1.23(2022-04-19)
暂时去掉多级表头,有着某些问题,修复中。。。
## 1.1.22(2022-04-19)
暂时去掉多级表头,存在某些问题 ,正在修复中
## 1.1.21(2022-03-29)
优化数字问题
## 1.1.20(2022-03-29)
优化按钮,可以自定义按钮,自定义添加class
## 1.1.19(2022-03-28)
进行优化加载
## 1.1.18(2022-03-28)
修复pc端滚动条问题
## 1.1.17(2022-03-25)
修改 数据回显的时候,全选框没有选中效果
## 1.1.16(2022-03-25)
新增:table属性 cell-style 修改单元格样式
## 1.1.15(2022-03-23)
fix:支付宝小程序上拉加载e.detail 没有值导致上拉加载失效 ,已修复
## 1.1.14(2022-03-23)
fix: 支付宝小程序左右无法滑动的问题
## 1.1.13(2022-03-21)
fix:英文宽度自适应问题
## 1.1.12(2022-03-20)
修改自适应宽度问题
## 1.1.11(2022-03-19)
增加上拉加载功能
## 1.1.10(2022-03-18)
修改合计不更新问题
## 1.1.9(2022-03-16)
优化css 样式
## 1.1.8(2022-03-16)
增加表尾合计行
## 1.1.7(2022-03-15)
修改css样式
## 1.1.6(2022-03-14)
进行代码优化
## 1.1.5(2022-03-12)
更新一个操作按钮的时候 报错问题,进行代码优化
## 1.1.4(2022-03-12)
增加图片统一高度
## 1.1.3(2022-03-12)
增加图片地址 ,并且图片支持预览功能
## 1.1.2(2022-03-11)
新增默认 是否选中功能,进行优化
## 1.1.1(2022-03-10)
新增单击事件
## 1.1.0(2022-03-10)
-
增加单击事件
## 1.1.0(2022-03-10)
-
增加checkbox功能 ,进行优化
## 1.0.11(2022-03-09)
-
修改小程序中排序问题
## 1.0.10(2022-03-09)
-
做了兼容性处理
## 1.0.8(2022-03-09)
-
进行优化滚动防止 多次计算
## 1.0.7(2022-03-09)
-
修改一些问题 新增过滤器
## 1.0.6(2022-03-08)
-
修改样式 按钮自适应宽度
## 1.0.5(2022-03-08)
-
新增按钮 修改问题
## 1.0.4(2022-03-04)
-
增加空占位符"--"
## 1.0.3(2022-03-02)
-
新增表格斑马纹配置、列宽配置、表头显示配置
## 1.0.2(2022-03-02)
-
新增排序功能,优化样式
## 1.0.1(2022-03-01)
-
可以传入动态数据,可以对左边列表进行是否固定首列
## 1.0.0(2022-03-01)
-
初始化
\ No newline at end of file
uni_modules/zb-table/components/zb-table/components/table-checkbox.vue
0 → 100644
View file @
dcd21c31
<
template
>
<view
class=
"uni-table-checkbox"
@
click
.
stop=
"selected"
>
<view
v-if=
"!indeterminate"
class=
"checkbox__inner"
:class=
"
{'is-checked':isChecked,'is-disable':isDisabled}">
<view
class=
"checkbox__inner-icon"
></view>
</view>
<view
v-else
class=
"checkbox__inner checkbox--indeterminate"
>
<view
class=
"checkbox__inner-icon"
></view>
</view>
</view>
</
template
>
<
script
>
export
default
{
name
:
'TableCheckbox'
,
emits
:[
'checkboxSelected'
],
props
:
{
indeterminate
:
{
type
:
Boolean
,
default
:
false
},
checked
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
disabled
:
{
type
:
Boolean
,
default
:
false
},
index
:
{
type
:
Number
,
default
:
-
1
},
cellData
:
{
type
:
Object
,
default
()
{
return
{}
}
}
},
watch
:{
checked
(
newVal
){
if
(
typeof
this
.
checked
===
'boolean'
){
this
.
isChecked
=
newVal
}
else
{
this
.
isChecked
=
true
}
},
indeterminate
(
newVal
){
this
.
isIndeterminate
=
newVal
}
},
data
()
{
return
{
isChecked
:
false
,
isDisabled
:
false
,
isIndeterminate
:
false
}
},
created
()
{
if
(
typeof
this
.
checked
===
'boolean'
){
this
.
isChecked
=
this
.
checked
}
this
.
isDisabled
=
this
.
disabled
},
methods
:
{
selected
()
{
if
(
this
.
isDisabled
)
return
this
.
isIndeterminate
=
false
this
.
isChecked
=
!
this
.
isChecked
console
.
log
(
'==='
,
this
.
indeterminate
,
this
.
isChecked
)
this
.
$emit
(
'checkboxSelected'
,
{
checked
:
this
.
isChecked
,
data
:
this
.
cellData
})
}
}
}
</
script
>
<
style
lang=
"scss"
>
$checked-color
:
#007aff
;
$border-color
:
#DCDFE6
;
$disable
:
0
.4
;
.uni-table-checkbox
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
center
;
position
:
relative
;
margin
:
5px
0
;
cursor
:
pointer
;
// 多选样式
.checkbox__inner
{
/* #ifndef APP-NVUE */
flex-shrink
:
0
;
box-sizing
:
border-box
;
/* #endif */
position
:
relative
;
width
:
16px
;
height
:
16px
;
border
:
1px
solid
$border-color
;
border-radius
:
2px
;
background-color
:
#fff
;
z-index
:
1
;
.checkbox__inner-icon
{
position
:
absolute
;
/* #ifdef APP-NVUE */
top
:
2px
;
/* #endif */
/* #ifndef APP-NVUE */
top
:
2px
;
/* #endif */
left
:
5px
;
height
:
7px
;
width
:
3px
;
border
:
1px
solid
#fff
;
border-left
:
0
;
border-top
:
0
;
opacity
:
0
;
transform-origin
:
center
;
transform
:
rotate
(
45deg
);
box-sizing
:
content-box
;
}
&
.checkbox--indeterminate
{
border-color
:
$checked-color
;
background-color
:
$checked-color
;
.checkbox__inner-icon
{
position
:
absolute
;
opacity
:
1
;
transform
:
rotate
(
0deg
);
height
:
2px
;
top
:
0
;
bottom
:
0
;
margin
:
auto
;
left
:
0px
;
right
:
0px
;
bottom
:
0
;
width
:
auto
;
border
:
none
;
border-radius
:
2px
;
transform
:
scale
(
0
.5
);
background-color
:
#fff
;
}
}
&
:hover
{
border-color
:
$checked-color
;
}
// 禁用
&
.is-disable
{
/* #ifdef H5 */
cursor
:
not
-
allowed
;
/* #endif */
background-color
:
#F2F6FC
;
border-color
:
$border-color
;
}
// 选中
&
.is-checked
{
border-color
:
$checked-color
;
background-color
:
$checked-color
;
.checkbox__inner-icon
{
opacity
:
1
;
transform
:
rotate
(
45deg
);
}
// 选中禁用
&
.is-disable
{
opacity
:
$disable
;
}
}
}
}
</
style
>
uni_modules/zb-table/components/zb-table/components/table-h5-summary.vue
0 → 100644
View file @
dcd21c31
<
template
>
<view
class=
"table-h5-footer top-header-uni"
:style=
"
{paddingRight:`${scrollbarSize}px`}">
<scroll-view
class=
"zb-table-headers"
@
scroll=
"handleFooterTableScrollLeft"
scroll-x=
"true"
scroll-y=
"false"
id=
"tableFooterHeaders"
scroll-anchoring=
"true"
:scroll-left=
"headerFooterTableLeft"
style=
"padding-bottom: 0px;
background: #fafafa;height: 100%"
>
<view
class=
"zb-table-fixed"
>
<view
class=
"zb-table-thead"
style=
"position: relative;"
>
<view
class=
"item-tr"
>
<view
class=
"item-th"
:style=
"
{
width:`${item.width?item.width:'100'}px`,
flex:index===transColumns.length-1?1:'none',
minWidth:`${item.width?item.width:'100'}px`,
borderRight:`${border?'1px solid #e8e8e8':''}`,
borderTop:`${border?'1px solid #e8e8e8':''}`,
textAlign:item.align||'left'
}"
v-for="(item,index) in transColumns" :key="index">
{{
sums
[
index
]
}}
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</
template
>
<
script
>
import
summary
from
'../js/summary.js'
export
default
{
name
:
'table-footer'
,
mixins
:[
summary
],
}
</
script
>
<
style
lang=
"scss"
scoped
>
.table-h5-footer
{
background
:
#fafafa
;
/*每个页面公共css */
scroll-view
:
:-
webkit-scrollbar
{
display
:
none
!
important
;
width
:
0
!
important
;
height
:
0
!
important
;
-webkit-appearance
:
none
;
background
:
transparent
;
}
//第二种
::-webkit-scrollbar
{
display
:
none
;
}
.item-tr
{
display
:
flex
;
}
.item-th
{
padding-left
:
8px
;
line-height
:
39px
;
height
:
40px
;
//display: flex;
//align-items: center;
box-sizing
:
border-box
;
flex-shrink
:
0
;
width
:
100px
;
padding-right
:
20px
;
word-break
:
keep-all
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
overflow-wrap
:
break-word
;
border-bottom
:
1px
solid
#e8e8e8
;
}
}
</
style
>
uni_modules/zb-table/components/zb-table/components/table-side-summary.vue
0 → 100644
View file @
dcd21c31
<
template
>
<view
class=
"zb-table-header"
style=
"display: flex;"
>
<view
class=
"item-tr"
>
<view
class=
'item-td'
:style=
"
{
width:`${item.width?item.width:'100'}px`,
borderRight:`${border?'1px solid #e8e8e8':''}`,
textAlign:item.align||'left'
}"
:key="`15255966555${index}`"
v-for="(item,index) in fixedLeftColumns">
<template
>
{{
sums
[
index
]
}}
</
template
>
</view>
</view>
</view>
</template>
<
script
>
import
summary
from
'../js/summary.js'
export
default
{
mixins
:[
summary
]
}
</
script
>
<
style
lang=
"scss"
scoped
>
.zb-table-header
{
overflow
:
hidden
;
background
:
#fafafa
;
.item-th
{
padding-left
:
8px
;
line-height
:
39px
;
height
:
40px
;
//display: flex;
//align-items: center;
box-sizing
:
border-box
;
}
}
.item-tr
{
display
:
flex
;
box-sizing
:
border-box
;
}
.item-td
{
flex-shrink
:
0
;
width
:
100px
;
padding-left
:
8px
;
height
:
40px
;
line-height
:
40px
;
padding-right
:
20px
;
box-sizing
:
border-box
;
word-break
:
keep-all
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
overflow-wrap
:
break-word
;
border-bottom
:
1px
solid
#e8e8e8
;
background
:
rgb
(
250
,
250
,
250
);
}
</
style
>
uni_modules/zb-table/components/zb-table/components/table-summary.vue
0 → 100644
View file @
dcd21c31
<
template
>
<view
class=
"zb-table-footer"
style=
"height: 40px;"
>
<view
class=
"zb-table-fixed"
>
<view
class=
"zb-table-thead"
style=
"position: relative;"
>
<view
class=
"item-tr"
>
<view
:class=
"['item-th',index
<fixedLeftColumns
.
length
&&'
zb-stick-side
']"
:style=
"
{
left:`${item.left}px`,
width:`${item.width?item.width:'100'}px`,
flex:index===transColumns.length-1?1:'none',
minWidth:`${item.width?item.width:'100'}px`,
borderRight:`${border?'1px solid #e8e8e8':''}`,
borderTop:`${border?'1px solid #e8e8e8':''}`,
textAlign:item.align||'left'
}"
v-for="(item,index) in transColumns" :key="index">
<template>
{{
sums
[
index
]
||
item
.
emptyString
}}
</
template
>
</view>
</view>
</view>
</view>
</view>
</template>
<
script
>
import
summary
from
'../js/summary.js'
export
default
{
mixins
:[
summary
]
}
</
script
>
<
style
lang=
"scss"
scoped
>
.zb-table-footer
{
background
:
#fafafa
;
width
:
fit-content
;
min-width
:
100%
;
position
:
sticky
;
bottom
:
0
;
z-index
:
2
;
.item-tr
{
display
:
flex
;
min-width
:
100%
;
}
.item-th
{
padding-left
:
8px
;
line-height
:
39px
;
height
:
40px
;
//display: flex;
//align-items: center;
box-sizing
:
border-box
;
flex-shrink
:
0
;
width
:
100px
;
padding-right
:
20px
;
word-break
:
keep-all
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
overflow-wrap
:
break-word
;
border-bottom
:
1px
solid
#e8e8e8
;
}
.zb-table-fixed
{
min-width
:
100%
;
}
.zb-stick-side
{
position
:
sticky
;
bottom
:
0
;
left
:
0
;
z-index
:
2
;
//border-right: solid 1rpx #dbdbdb;
box-sizing
:
border-box
;
background
:
#fafafa
;
//box-shadow: 6px 0 6px -4px #ccc;
}
}
</
style
>
uni_modules/zb-table/components/zb-table/components/zb-load-more.vue
0 → 100644
View file @
dcd21c31
<
template
>
<view
class=
"zb-load-more"
>
<image
:src=
"base64Flower"
style=
""
class=
"loading-custom-image"
></image>
<text>
正在加载中...
</text>
</view>
</
template
>
<
script
>
const
base64Flower
=
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkBAMAAACCzIhnAAAAKlBMVEVHcEzDw8Ovr6+pqamUlJTCwsKenp61tbWxsbGysrLNzc2bm5u5ubmjo6MpovhuAAAACnRSTlMA/P79/sHDhiZS0DxZowAABBBJREFUWMPtl89rE0EUx7ctTXatB3MI1SWnDbUKPUgXqh4ED8Uf7KUVSm3ooVSpSii0Fn/gD4j4o+APiEoVmos9FO2celiqZVgwgaKHPQiCCkv+F99kM7Ozm5kxq1dfD91k9pPve9/3ZjbRNHHok/mKli4eIPNgSuRObuN9SqSEzM20iGnm0yIbqCuV7NSSSIV7uyPM6JMBYdeTOanh/QihJYZsUCSby+VkMj2AvOt0rAeQAwqE3lfKMZVlQCZk1QOCKkkVPadITCfIRNKxfoJI5+0OIFtJx14CMSg1mRSDko7VAfksRQzEbGYqxOJcVTWMCH2I1/IACNW0PWU2M8cmAVHtnH5mM1VRWtwKZjOd5JbF6s1IbaYqaotjNlPHgDAnlAizubTR6ovMYn052g/U5qcmOpi0WL8xTS/3IfSet5m8MEr5ajjF5le6dq/OJpobrdY0t3i9QgefWrxW9/1BLhk0E9m8FeUMhhXal499iD0eQRfDF+ts/tttORRerfp+oV7f4xJj82iUYm1Yzod+ZQEAlS/8mMBwKebVmCVp1f0JLS6zKd17+iwRKTARVg2SHtz3iEbBH+Q+U28zW2Jiza8Tjb1YFoYZMsJyjDqp3M9XBQdSdPLFdxEpvOB37JrHcmR/y9+LgoTlCFGZEa2sc6d4PGlweEa2JSVPoVm+IfGG3ZL037iV9oH+P+Jxc4HGVflNq1M0pivao/EopO4b/ojVCP9GjmiXOeS0DOn1o/iiccT4ORnyvBGF3yUywkQajW4Ti0SGuiy/wVSg/L8w+X/8Q+hvUx8Xd90z4oV5a1i88MbFWHz0WZZ1UrTwBGPX3Rat9AFiXRMRjoMdIdJLEOt2h7jrYOzgOamKZSWSNspOS0X8SAqRYmxRL7sg4eLzYmNehcxh3uoyud/BH2Udux4ywxFTc1xC7Mgf4vMhc5S+kSH3Y7yj+qpwIWSoPTVCOOPVthGx9FbGqrwFw6wSFxJr+17zeKcztt3u+2roAEVgUjDd+AHGuxHy2rZHaa8JMkTHEeyi85ANPO9j9BVuBRD2FY5LDMo/Sz/2hReqGIs/KiFin+CsPsYO/yvM3jL2vE8EbX7/Bf8ejtr2GLN65bioAdgLd8Bis/mD5GmP2qeqyo2ZwQEOtAjRIDH7mBKpUcMoApbZJ5UIxkEwxyMZyMxW/uKFvHCFR3SSmerHyDNQ2dF4JG6zIMpBgLfjSF9x1D6smFcYnGApjmSLICO3ecCDWrQ48geba9DI3STy2i7ax6WIB62fSyIZIiO3GFQqSURp8wCo7GhJBGwuSovJBNjb7kT6FPVnIa9qJ2Ko+l9mefGIdinaMp0yC1URYiwsdfNE45EuA5Cx9EhalfvN5s+UyItm81vaB3p4joniN+SCP7Qc1hblAAAAAElFTkSuQmCC'
;
export
default
{
data
(){
return
{
base64Flower
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.zb-load-more
{
width
:
100%
;
position
:
absolute
;
bottom
:
0
;
left
:
0
;
z-index
:
999
;
background
:
white
;
display
:
flex
;
height
:
40px
;
flex-shrink
:
0
;
align-items
:
center
;
justify-content
:
center
;
.loading-custom-image
{
color
:
#a4a4a4
;
margin-right
:
8rpx
;
width
:
24px
;
height
:
24px
;
/* #ifndef APP-NVUE */
animation
:
loading-circle
1s
linear
infinite
;
/* #endif */
}
@keyframes
loading-circle
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
);
}
100
%
{
-webkit-transform
:
rotate
(
360deg
);
transform
:
rotate
(
360deg
);
}
}
}
</
style
>
uni_modules/zb-table/components/zb-table/js/summary.js
0 → 100644
View file @
dcd21c31
export
default
{
props
:{
scrollbarSize
:{
type
:
Number
,
default
:
0
},
fixedLeftColumns
:{
type
:
Array
,
default
:()
=>
[]
},
data
:{
type
:
Array
,
default
:()
=>
[]
},
transColumns
:{
type
:
Array
,
default
:()
=>
[]
},
border
:{
type
:
Boolean
,
default
:
false
},
showSummary
:{
type
:
Boolean
,
default
:
false
},
summaryMethod
:{
type
:
Function
},
sumText
:{
type
:
String
,
default
:
'合计'
},
headerFooterTableLeft
:{
type
:
Number
,
default
:
0
},
handleFooterTableScrollLeft
:
Function
,
},
data
(){
return
{
sums
:[]
}
},
watch
:{
'data'
:{
deep
:
true
,
immediate
:
true
,
handler
(
newValue
,
oldValue
){
let
sums
=
[];
if
(
this
.
summaryMethod
)
{
sums
=
this
.
summaryMethod
({
columns
:
this
.
transColumns
,
data
:
this
.
data
});
}
else
{
this
.
transColumns
.
forEach
((
column
,
index
)
=>
{
if
(
index
===
0
)
{
sums
[
index
]
=
this
.
sumText
;
return
;
}
const
values
=
this
.
data
.
map
(
item
=>
Number
(
item
[
column
.
name
]));
const
precisions
=
[];
let
notNumber
=
true
;
values
.
forEach
(
value
=>
{
if
(
!
isNaN
(
value
))
{
notNumber
=
false
;
let
decimal
=
(
''
+
value
).
split
(
'.'
)[
1
];
precisions
.
push
(
decimal
?
decimal
.
length
:
0
);
}
});
const
precision
=
Math
.
max
.
apply
(
null
,
precisions
);
if
(
!
notNumber
)
{
sums
[
index
]
=
values
.
reduce
((
prev
,
curr
)
=>
{
const
value
=
Number
(
curr
);
if
(
!
isNaN
(
value
))
{
return
parseFloat
((
prev
+
curr
).
toFixed
(
Math
.
min
(
precision
,
20
)));
}
else
{
return
prev
;
}
},
0
);
}
else
{
sums
[
index
]
=
''
;
}
});
}
this
.
sums
=
sums
},
}
}
}
uni_modules/zb-table/components/zb-table/js/util.js
0 → 100644
View file @
dcd21c31
/**
* 获取滚动条宽度
*/
let
cached
=
undefined
;
export
const
getScrollbarSize
=
fresh
=>
{
// #ifdef H5
if
(
fresh
||
cached
===
undefined
)
{
let
inner
=
document
.
createElement
(
"div"
);
let
innerStyle
=
inner
.
style
;
innerStyle
.
width
=
"100%"
;
innerStyle
.
height
=
"200px"
;
let
outer
=
document
.
createElement
(
"div"
);
let
outerStyle
=
outer
.
style
;
outerStyle
.
position
=
"absolute"
;
outerStyle
.
top
=
0
;
outerStyle
.
left
=
0
;
outerStyle
.
pointerEvents
=
"none"
;
outerStyle
.
width
=
"200px"
;
outerStyle
.
height
=
"150px"
;
outerStyle
.
visibility
=
"hidden"
;
outer
.
appendChild
(
inner
);
document
.
body
.
appendChild
(
outer
);
// 设置子元素超出部分隐藏
outerStyle
.
overflow
=
"hidden"
;
let
width1
=
inner
.
offsetWidth
;
// 设置子元素超出部分滚动
outer
.
style
.
overflow
=
"scroll"
;
let
width2
=
inner
.
offsetWidth
;
if
(
width1
===
width2
)
{
width2
=
outer
.
clientWidth
;
}
document
.
body
.
removeChild
(
outer
);
cached
=
width1
-
width2
;
}
//#endif
return
cached
;
};
uni_modules/zb-table/components/zb-table/zb-table.vue
0 → 100644
View file @
dcd21c31
This diff is collapsed.
Click to expand it.
uni_modules/zb-table/package.json
0 → 100644
View file @
dcd21c31
{
"id"
:
"zb-table"
,
"displayName"
:
"zb-table(多功能表格)"
,
"version"
:
"1.2.18"
,
"description"
:
"表格组件 支持固定表头和首列、上拉加载更多、及固定多列,表格自适应内容,排序,多选checkbox、可点击删除,编辑、合计功能,兼容多端"
,
"keywords"
:
[
"table"
,
"表格"
,
"固定表头、固定首列、多列"
,
"上拉加载更多、"
,
"排序、自适应列宽、多选checkbox、编辑、删除、按钮、合计"
],
"repository"
:
"https://github.com/zouzhibin/zb-table.git"
,
"engines"
:
{
"HBuilderX"
:
"^3.1.0"
},
"dcloudext"
:
{
"sale"
:
{
"regular"
:
{
"price"
:
"0.00"
},
"sourcecode"
:
{
"price"
:
"0.00"
}
},
"contact"
:
{
"qq"
:
""
},
"declaration"
:
{
"ads"
:
"无"
,
"data"
:
"无"
,
"permissions"
:
"无"
},
"npmurl"
:
""
,
"type"
:
"component-vue"
},
"uni_modules"
:
{
"dependencies"
:
[],
"encrypt"
:
[],
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
},
"client"
:
{
"Vue"
:
{
"vue2"
:
"y"
,
"vue3"
:
"y"
},
"App"
:
{
"app-vue"
:
"y"
,
"app-nvue"
:
"u"
},
"H5-mobile"
:
{
"Safari"
:
"y"
,
"Android Browser"
:
"y"
,
"微信浏览器(Android)"
:
"y"
,
"QQ浏览器(Android)"
:
"y"
},
"H5-pc"
:
{
"Chrome"
:
"y"
,
"IE"
:
"y"
,
"Edge"
:
"y"
,
"Firefox"
:
"y"
,
"Safari"
:
"y"
},
"小程序"
:
{
"微信"
:
"y"
,
"阿里"
:
"y"
,
"百度"
:
"y"
,
"字节跳动"
:
"y"
,
"QQ"
:
"y"
},
"快应用"
:
{
"华为"
:
"y"
,
"联盟"
:
"y"
}
}
}
}
}
\ No newline at end of file
uni_modules/zb-table/readme.md
0 → 100644
View file @
dcd21c31
## 介绍
基于uni-app开发的一个普通的表格组件,功能有固定首列和表头、排序、操作按钮、
table 表格 固定表头、固定首列、多列 上拉加载更多、 排序、自适应列宽、多选checkbox、编辑、删除、按钮、合计
已用于生产环境
微信=》 19550102670 拉进群
## -- github 第一时间会更新到github,永远保持最新,有啥想法的可以提PR,共同开发 [地址](https://github.com/zouzhibin/zb-ui)
## 友情链接
### 在线预览点击 —— [企业级、通用型中后台前端解决方案 ](https://yuanzbz.gitee.io/vue-admin-perfect/#/login?redirect=/home)
### vue-admin-perfect —— [企业级、通用型中后台前端解决方案(基于vue3.0+TS+Element-Plus 最新版,同时支持电脑,手机,平板)](https://github.com/zouzhibin/vue-admin-perfect)
## table 属性
| 参数 | 说明 | 类型 | 可选值 | 默认值 |是否必须|
| ------ | ------ | ------ | ------ | ------ |------ |
| data | 显示的数据 | array |-- | -- |必须 |
| column | 显示的列数据 | array |-- | -- |必须 |
| stripe | 是否为斑马纹 table| boolean | - |false | 否 |
| fit | 列的宽度是否自撑开 | boolean |true,false | false |否 |
| show-header | 是否显示表头 | boolean |true,false | true |否 |
| cell-style | 单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有单元格设置一样的 Style。 | Function({row, column, rowIndex, columnIndex})/Object |-- | -- |否 |
| cell-header-style | 头部单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有单元格设置一样的 Style。 | Function({ column, columnIndex})/Object |-- | -- |否 |
| formatter | colomn =》formatter 必须设置为true,才有作用,进行格式化数据,进行数据的转换 | Function({row, column, rowIndex, columnIndex})/Object |-- | -- |否 |
| border | 是否带有纵向边框 | boolean |true,false | true |否 |
| highlight | 是否要高亮当前行 | boolean |true,false | false |否 |
| show-summary | 是否在表尾显示合计行 | boolean |true,false | false |否 |
| sum-text | 合计行第一列的文本 | String |- | 合计 |否 |
| summary-method | 自定义的合计计算方法 | Function({ columns, data }) |- | - |否 |
| permissionBtn | 是否动态控制按钮的显示隐藏 | Function({ row, renders,index }) |- | - |否 |
| isShowLoadMore | 是否开启上拉加载 | boolean |true,false | false |否 |
| pullUpLoading | 开启上拉加载后的返回函数,接收参数done是函数,done(type),type为空代表还有数据,继续开启上拉加载,type='ok',代表结束上拉加载 | Function(done) |-- | -- |否 |
```
关闭上拉加载的方式1:pullUpLoading((done)=>{
done(type)
})
done 接收参数为 type ,type为空代表还有数据,可以继续加载,无数据的时候传入 'ok'代表结束
```
## table 事件
| 参数 | 说明 | 类型 | 可选值 | 默认值 |是否必须|
| ------ | ------ | ------ |--------------------------| ------ |------ |
| 事件名自定义 | 取决于type类型为operation的 renders参数里面 func 的参数名 | Function | (row,index)=>{} | -- |否 |
| sort-change | 取决于type类型为operation的 renders参数里面 func 的参数名 | Function | (column,model,index)=>{} | -- |否 |
| currentChange | 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight属性,this.$refs.table.resetHighlight()清除选中 | Function | (row,index)=>{} | -- |否 |
| toggleRowSelection | 用于多选表格,切换某一行的选中状态,第一个参数代表选中状态,参数二代表选中的对象 | Function | (selected ,array)=>{} | -- |否 |
| toggleAllSelection | 用于多选表格,切换所有行的选中状态 ,第一个参数代表选中状态,参数二代表选中的对象| Function | (selected ,array)=>{} | -- |否 |
| rowClick | 单击某行 ,第一个参数代表选中对象,参数二代表选中的index| Function | (row ,index)=>{} | -- |否 |
| cellClick | 单击单元格 ,当某个单元格被点击时会触发该事件| Function | (row ,index,column)=>{} | -- |否 |
| pullUpLoading | 开启上拉加载后的返回函数,无参数| Function | -- |-- |否 |
```
关闭上拉加载的方式2:this.$refs.zbTable.pullUpCompleteLoading('ok')
接收参数为 type ,type为空代表还有数据,可以继续加载,无数据的时候传入 'ok'代表结束
```
## data 属性
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| ------ | ------ | ------ | ------ | ------ |
| checked | 是否被勾选 | boolean |true,false | 无 |
## column 属性
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| ------ | ------ | ------ | ------ | ------ |
| name | 属性值 | string |-- | 无 |
| label | 显示的标题 | string |-- | 无 |
| width | 列的宽度 | number |-- | 100 |
| fixed | 列是否固定在左侧,true 表示固定在左侧 | boolean |true,false | true |
| sorter | 排序,当设置为custom的时候代表自定义排序,不会再触发默认排序,会触发table事件@sort-change,可以通过接口来进行排序 | boolean |true,false,'custom' | false |
| emptyString | 当值为空的时候默认显示的值 | string | | -- |
| filters | 对象过滤的选项,对象格式,对象中的元素需要有 key 和 value 属性。 | Object | {key:value} | -- |
| align | 对齐方式 | String | left/center/right | left |
| type | 为 operation 的时候代表为操作按钮,img的时候代表图片地址,index代表序列号 | string | operation,img,index | -- |
| renders | type 为operation的时候 必传 | Array | {name:'名字',func:"父元素接收事件名",type:"按钮的类型",size:"大小"} | -- |
```
type 为 operation 的时候代表为操作按钮
renders 代表传入的按钮 Array =>[
{
name:'编辑',
class:"", // 添加class
type:'primary',代表按钮的类型 type 为custom的时候自定义按钮 其他类型取决于uniapp buttom组件按钮
size:'mini',代表按钮的大小
func:'edit' // func 代表操作按钮点击的事件名字 父元素接收的事件 父元素 @edit
例如:// <zb-table @edit=""/>
}
]
```
## 示例
```
<zb-table
:show-header="true"
:columns="column"
:stripe="true"
:fit="false"
show-summary
sum-text="合计"
@rowClick="rowClick"
:summary-method="getSummaries"
@toggleRowSelection="toggleRowSelection"
@toggleAllSelection="toggleAllSelection"
:border="true"
@edit="buttonEdit"
@dele="dele"
:data="data"></zb-table>
```
## 数据格式
```
column:[
{ type:'selection', fixed:true,width:50 },
{ name: 'name', label: '姓名',fixed:false,width:80,emptyString:'--' },
{ name: 'age', label: '年纪',sorter:false,align:'right', },
{ name: 'sex', label: '性别',filters:{0:'男',1:'女'}},
{ name: 'img', label: '图片',type:"img" },
{ name: 'address', label: '地址' },
{ name: 'date', label: '日期',sorter:true },
{ name: 'province', label: '省份' },
{ name: 'city', label: '城市' },
{ name: 'zip', label: '邮编' },
{ name: 'operation', type:'operation',label: '操作',renders:[
{
name:'编辑',
func:'edit' // func 代表子元素点击的事件 父元素接收的事件 父元素 @edit
},
{
name:'删除',
type:'warn',
func:"dele"
},
]},
],
data:[
{
date: '2016-05-02',
name: '王小虎1',
province: '上海',
sex:'男',
age:'18',
img:"https://img1.baidu.com/it/u=300787145,1214060415&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500",
city: '普陀区',
address: '上海市普',
zip: 200333
},
{
date: '2016-05-02',
name: '王小虎2',
province: '上海',
sex:'男',
age:'18',
city: '普陀区',
address: '上海市普',
zip: 200333
},
{
date: '2016-05-02',
name: '王小虎3',
province: '上海',
sex:'男',
age:'18',
city: '普陀区',
address: '上海市普',
zip: 200333
},
{
date: '2016-05-02',
name: '王小虎4',
province: '上海',
sex:'男',
age:'18',
city: '普陀区',
address: '上海市普',
zip: 200333
},
{
date: '2016-05-02',
name: '王小虎5',
province: '上海',
sex:'男',
age:'18',
city: '普陀区',
address: '上海市普',
zip: 200333
}
]
```
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