Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
U
uniapp_vedio
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
android
uniapp_vedio
Commits
fb973720
Commit
fb973720
authored
May 29, 2024
by
jyx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码优化
parent
a8d16bc4
Changes
31
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
6137 additions
and
9 deletions
+6137
-9
bookshelf.vue
vedio/components/bookshelf/bookshelf.vue
+1
-1
my.vue
vedio/components/home/my.vue
+0
-1
home.vue
vedio/pages/home.vue
+2
-7
changelog.md
vedio/uni_modules/uni-icons/changelog.md
+22
-0
icons.js
vedio/uni_modules/uni-icons/components/uni-icons/icons.js
+1169
-0
uni-icons.vue
.../uni_modules/uni-icons/components/uni-icons/uni-icons.vue
+96
-0
uniicons.css
...o/uni_modules/uni-icons/components/uni-icons/uniicons.css
+663
-0
uniicons.ttf
...o/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
+0
-0
package.json
vedio/uni_modules/uni-icons/package.json
+86
-0
changelog.md
vedio/uni_modules/uni-list/changelog.md
+46
-0
uni-list-ad.vue
...i_modules/uni-list/components/uni-list-ad/uni-list-ad.vue
+107
-0
uni-list-chat.scss
...ules/uni-list/components/uni-list-chat/uni-list-chat.scss
+58
-0
uni-list-chat.vue
...dules/uni-list/components/uni-list-chat/uni-list-chat.vue
+593
-0
uni-list-item.vue
...dules/uni-list/components/uni-list-item/uni-list-item.vue
+534
-0
uni-list.vue
vedio/uni_modules/uni-list/components/uni-list/uni-list.vue
+123
-0
uni-refresh.vue
.../uni_modules/uni-list/components/uni-list/uni-refresh.vue
+65
-0
uni-refresh.wxs
.../uni_modules/uni-list/components/uni-list/uni-refresh.wxs
+87
-0
package.json
vedio/uni_modules/uni-list/package.json
+88
-0
changelog.md
vedio/uni_modules/uni-load-more/changelog.md
+19
-0
en.json
...dules/uni-load-more/components/uni-load-more/i18n/en.json
+5
-0
index.js
...ules/uni-load-more/components/uni-load-more/i18n/index.js
+8
-0
zh-Hans.json
.../uni-load-more/components/uni-load-more/i18n/zh-Hans.json
+5
-0
zh-Hant.json
.../uni-load-more/components/uni-load-more/i18n/zh-Hant.json
+5
-0
uni-load-more.vue
.../uni-load-more/components/uni-load-more/uni-load-more.vue
+399
-0
package.json
vedio/uni_modules/uni-load-more/package.json
+86
-0
changelog.md
vedio/uni_modules/yingbing-flip/changelog.md
+10
-0
flip.wxs
vedio/uni_modules/yingbing-flip/components/modules/flip.wxs
+367
-0
flip_bindingx.js
...modules/yingbing-flip/components/modules/flip_bindingx.js
+546
-0
yingbing-flip.vue
.../yingbing-flip/components/yingbing-flip/yingbing-flip.vue
+420
-0
util.js
vedio/uni_modules/yingbing-flip/js_sdk/util.js
+446
-0
package.json
vedio/uni_modules/yingbing-flip/package.json
+81
-0
No files found.
vedio/components/bookshelf/bookshelf.vue
View file @
fb973720
vedio/components/home/my.vue
View file @
fb973720
...
...
@@ -98,7 +98,6 @@
mixins
:
[
common
],
data
()
{
return
{
statusBarHeight
:
app
.
globalData
.
statusBarHeight
,
userBean
:
{},
showAnimate
:
false
,
versionName
:
app
.
globalData
.
versionName
...
...
vedio/pages/home.vue
View file @
fb973720
...
...
@@ -5,7 +5,7 @@
<warehouse
v-show=
"currentPage==1"
ref=
"recommend"
/>
<userPage
v-show=
"currentPage==2"
ref=
"user"
/>
</view>
<view
class=
"tabs-bar"
>
<view
class=
"tabs-bar"
style=
"z-index: 999;"
>
<view
:class=
"currentPage==0?'tab active': 'tab'"
:style=
"'padding-bottom:' + bottomSafePadding + 'px;'"
@
click=
"tabChange(0)"
>
<view
style=
"margin: 16rpx 0 11rpx;"
>
...
...
@@ -73,14 +73,9 @@
onShow
()
{
this
.
loadComponentData
();
},
mounted
()
{
// 渲染完成 初始化首页数据
this
.
loadComponentData
();
},
methods
:
{
tabChange
(
index
)
{
if
(
this
.
currentPage
==
index
)
return
this
.
currentPage
=
index
;
this
.
loadComponentData
();
},
...
...
vedio/uni_modules/uni-icons/changelog.md
0 → 100644
View file @
fb973720
## 1.3.5(2022-01-24)
-
优化 size 属性可以传入不带单位的字符串数值
## 1.3.4(2022-01-24)
-
优化 size 支持其他单位
## 1.3.3(2022-01-17)
-
修复 nvue 有些图标不显示的bug,兼容老版本图标
## 1.3.2(2021-12-01)
-
优化 示例可复制图标名称
## 1.3.1(2021-11-23)
-
优化 兼容旧组件 type 值
## 1.3.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-icons
](
https://uniapp.dcloud.io/component/uniui/uni-icons
)
## 1.1.7(2021-11-08)
## 1.2.0(2021-07-30)
-
组件兼容 vue3,如何创建vue3项目,详见
[
uni-app 项目支持 vue3 介绍
](
https://ask.dcloud.net.cn/article/37834
)
## 1.1.5(2021-05-12)
-
新增 组件示例地址
## 1.1.4(2021-02-05)
-
调整为uni_modules目录规范
vedio/uni_modules/uni-icons/components/uni-icons/icons.js
0 → 100644
View file @
fb973720
export
default
{
"id"
:
"2852637"
,
"name"
:
"uniui图标库"
,
"font_family"
:
"uniicons"
,
"css_prefix_text"
:
"uniui-"
,
"description"
:
""
,
"glyphs"
:
[
{
"icon_id"
:
"25027049"
,
"name"
:
"yanse"
,
"font_class"
:
"color"
,
"unicode"
:
"e6cf"
,
"unicode_decimal"
:
59087
},
{
"icon_id"
:
"25027048"
,
"name"
:
"wallet"
,
"font_class"
:
"wallet"
,
"unicode"
:
"e6b1"
,
"unicode_decimal"
:
59057
},
{
"icon_id"
:
"25015720"
,
"name"
:
"settings-filled"
,
"font_class"
:
"settings-filled"
,
"unicode"
:
"e6ce"
,
"unicode_decimal"
:
59086
},
{
"icon_id"
:
"25015434"
,
"name"
:
"shimingrenzheng-filled"
,
"font_class"
:
"auth-filled"
,
"unicode"
:
"e6cc"
,
"unicode_decimal"
:
59084
},
{
"icon_id"
:
"24934246"
,
"name"
:
"shop-filled"
,
"font_class"
:
"shop-filled"
,
"unicode"
:
"e6cd"
,
"unicode_decimal"
:
59085
},
{
"icon_id"
:
"24934159"
,
"name"
:
"staff-filled-01"
,
"font_class"
:
"staff-filled"
,
"unicode"
:
"e6cb"
,
"unicode_decimal"
:
59083
},
{
"icon_id"
:
"24932461"
,
"name"
:
"VIP-filled"
,
"font_class"
:
"vip-filled"
,
"unicode"
:
"e6c6"
,
"unicode_decimal"
:
59078
},
{
"icon_id"
:
"24932462"
,
"name"
:
"plus_circle_fill"
,
"font_class"
:
"plus-filled"
,
"unicode"
:
"e6c7"
,
"unicode_decimal"
:
59079
},
{
"icon_id"
:
"24932463"
,
"name"
:
"folder_add-filled"
,
"font_class"
:
"folder-add-filled"
,
"unicode"
:
"e6c8"
,
"unicode_decimal"
:
59080
},
{
"icon_id"
:
"24932464"
,
"name"
:
"yanse-filled"
,
"font_class"
:
"color-filled"
,
"unicode"
:
"e6c9"
,
"unicode_decimal"
:
59081
},
{
"icon_id"
:
"24932465"
,
"name"
:
"tune-filled"
,
"font_class"
:
"tune-filled"
,
"unicode"
:
"e6ca"
,
"unicode_decimal"
:
59082
},
{
"icon_id"
:
"24932455"
,
"name"
:
"a-rilidaka-filled"
,
"font_class"
:
"calendar-filled"
,
"unicode"
:
"e6c0"
,
"unicode_decimal"
:
59072
},
{
"icon_id"
:
"24932456"
,
"name"
:
"notification-filled"
,
"font_class"
:
"notification-filled"
,
"unicode"
:
"e6c1"
,
"unicode_decimal"
:
59073
},
{
"icon_id"
:
"24932457"
,
"name"
:
"wallet-filled"
,
"font_class"
:
"wallet-filled"
,
"unicode"
:
"e6c2"
,
"unicode_decimal"
:
59074
},
{
"icon_id"
:
"24932458"
,
"name"
:
"paihangbang-filled"
,
"font_class"
:
"medal-filled"
,
"unicode"
:
"e6c3"
,
"unicode_decimal"
:
59075
},
{
"icon_id"
:
"24932459"
,
"name"
:
"gift-filled"
,
"font_class"
:
"gift-filled"
,
"unicode"
:
"e6c4"
,
"unicode_decimal"
:
59076
},
{
"icon_id"
:
"24932460"
,
"name"
:
"fire-filled"
,
"font_class"
:
"fire-filled"
,
"unicode"
:
"e6c5"
,
"unicode_decimal"
:
59077
},
{
"icon_id"
:
"24928001"
,
"name"
:
"refreshempty"
,
"font_class"
:
"refreshempty"
,
"unicode"
:
"e6bf"
,
"unicode_decimal"
:
59071
},
{
"icon_id"
:
"24926853"
,
"name"
:
"location-ellipse"
,
"font_class"
:
"location-filled"
,
"unicode"
:
"e6af"
,
"unicode_decimal"
:
59055
},
{
"icon_id"
:
"24926735"
,
"name"
:
"person-filled"
,
"font_class"
:
"person-filled"
,
"unicode"
:
"e69d"
,
"unicode_decimal"
:
59037
},
{
"icon_id"
:
"24926703"
,
"name"
:
"personadd-filled"
,
"font_class"
:
"personadd-filled"
,
"unicode"
:
"e698"
,
"unicode_decimal"
:
59032
},
{
"icon_id"
:
"24923351"
,
"name"
:
"back"
,
"font_class"
:
"back"
,
"unicode"
:
"e6b9"
,
"unicode_decimal"
:
59065
},
{
"icon_id"
:
"24923352"
,
"name"
:
"forward"
,
"font_class"
:
"forward"
,
"unicode"
:
"e6ba"
,
"unicode_decimal"
:
59066
},
{
"icon_id"
:
"24923353"
,
"name"
:
"arrowthinright"
,
"font_class"
:
"arrow-right"
,
"unicode"
:
"e6bb"
,
"unicode_decimal"
:
59067
},
{
"icon_id"
:
"24923353"
,
"name"
:
"arrowthinright"
,
"font_class"
:
"arrowthinright"
,
"unicode"
:
"e6bb"
,
"unicode_decimal"
:
59067
},
{
"icon_id"
:
"24923354"
,
"name"
:
"arrowthinleft"
,
"font_class"
:
"arrow-left"
,
"unicode"
:
"e6bc"
,
"unicode_decimal"
:
59068
},
{
"icon_id"
:
"24923354"
,
"name"
:
"arrowthinleft"
,
"font_class"
:
"arrowthinleft"
,
"unicode"
:
"e6bc"
,
"unicode_decimal"
:
59068
},
{
"icon_id"
:
"24923355"
,
"name"
:
"arrowthinup"
,
"font_class"
:
"arrow-up"
,
"unicode"
:
"e6bd"
,
"unicode_decimal"
:
59069
},
{
"icon_id"
:
"24923355"
,
"name"
:
"arrowthinup"
,
"font_class"
:
"arrowthinup"
,
"unicode"
:
"e6bd"
,
"unicode_decimal"
:
59069
},
{
"icon_id"
:
"24923356"
,
"name"
:
"arrowthindown"
,
"font_class"
:
"arrow-down"
,
"unicode"
:
"e6be"
,
"unicode_decimal"
:
59070
},{
"icon_id"
:
"24923356"
,
"name"
:
"arrowthindown"
,
"font_class"
:
"arrowthindown"
,
"unicode"
:
"e6be"
,
"unicode_decimal"
:
59070
},
{
"icon_id"
:
"24923349"
,
"name"
:
"arrowdown"
,
"font_class"
:
"bottom"
,
"unicode"
:
"e6b8"
,
"unicode_decimal"
:
59064
},{
"icon_id"
:
"24923349"
,
"name"
:
"arrowdown"
,
"font_class"
:
"arrowdown"
,
"unicode"
:
"e6b8"
,
"unicode_decimal"
:
59064
},
{
"icon_id"
:
"24923346"
,
"name"
:
"arrowright"
,
"font_class"
:
"right"
,
"unicode"
:
"e6b5"
,
"unicode_decimal"
:
59061
},
{
"icon_id"
:
"24923346"
,
"name"
:
"arrowright"
,
"font_class"
:
"arrowright"
,
"unicode"
:
"e6b5"
,
"unicode_decimal"
:
59061
},
{
"icon_id"
:
"24923347"
,
"name"
:
"arrowup"
,
"font_class"
:
"top"
,
"unicode"
:
"e6b6"
,
"unicode_decimal"
:
59062
},
{
"icon_id"
:
"24923347"
,
"name"
:
"arrowup"
,
"font_class"
:
"arrowup"
,
"unicode"
:
"e6b6"
,
"unicode_decimal"
:
59062
},
{
"icon_id"
:
"24923348"
,
"name"
:
"arrowleft"
,
"font_class"
:
"left"
,
"unicode"
:
"e6b7"
,
"unicode_decimal"
:
59063
},
{
"icon_id"
:
"24923348"
,
"name"
:
"arrowleft"
,
"font_class"
:
"arrowleft"
,
"unicode"
:
"e6b7"
,
"unicode_decimal"
:
59063
},
{
"icon_id"
:
"24923334"
,
"name"
:
"eye"
,
"font_class"
:
"eye"
,
"unicode"
:
"e651"
,
"unicode_decimal"
:
58961
},
{
"icon_id"
:
"24923335"
,
"name"
:
"eye-filled"
,
"font_class"
:
"eye-filled"
,
"unicode"
:
"e66a"
,
"unicode_decimal"
:
58986
},
{
"icon_id"
:
"24923336"
,
"name"
:
"eye-slash"
,
"font_class"
:
"eye-slash"
,
"unicode"
:
"e6b3"
,
"unicode_decimal"
:
59059
},
{
"icon_id"
:
"24923337"
,
"name"
:
"eye-slash-filled"
,
"font_class"
:
"eye-slash-filled"
,
"unicode"
:
"e6b4"
,
"unicode_decimal"
:
59060
},
{
"icon_id"
:
"24923305"
,
"name"
:
"info-filled"
,
"font_class"
:
"info-filled"
,
"unicode"
:
"e649"
,
"unicode_decimal"
:
58953
},
{
"icon_id"
:
"24923299"
,
"name"
:
"reload-01"
,
"font_class"
:
"reload"
,
"unicode"
:
"e6b2"
,
"unicode_decimal"
:
59058
},
{
"icon_id"
:
"24923195"
,
"name"
:
"mic_slash_fill"
,
"font_class"
:
"micoff-filled"
,
"unicode"
:
"e6b0"
,
"unicode_decimal"
:
59056
},
{
"icon_id"
:
"24923165"
,
"name"
:
"map-pin-ellipse"
,
"font_class"
:
"map-pin-ellipse"
,
"unicode"
:
"e6ac"
,
"unicode_decimal"
:
59052
},
{
"icon_id"
:
"24923166"
,
"name"
:
"map-pin"
,
"font_class"
:
"map-pin"
,
"unicode"
:
"e6ad"
,
"unicode_decimal"
:
59053
},
{
"icon_id"
:
"24923167"
,
"name"
:
"location"
,
"font_class"
:
"location"
,
"unicode"
:
"e6ae"
,
"unicode_decimal"
:
59054
},
{
"icon_id"
:
"24923064"
,
"name"
:
"starhalf"
,
"font_class"
:
"starhalf"
,
"unicode"
:
"e683"
,
"unicode_decimal"
:
59011
},
{
"icon_id"
:
"24923065"
,
"name"
:
"star"
,
"font_class"
:
"star"
,
"unicode"
:
"e688"
,
"unicode_decimal"
:
59016
},
{
"icon_id"
:
"24923066"
,
"name"
:
"star-filled"
,
"font_class"
:
"star-filled"
,
"unicode"
:
"e68f"
,
"unicode_decimal"
:
59023
},
{
"icon_id"
:
"24899646"
,
"name"
:
"a-rilidaka"
,
"font_class"
:
"calendar"
,
"unicode"
:
"e6a0"
,
"unicode_decimal"
:
59040
},
{
"icon_id"
:
"24899647"
,
"name"
:
"fire"
,
"font_class"
:
"fire"
,
"unicode"
:
"e6a1"
,
"unicode_decimal"
:
59041
},
{
"icon_id"
:
"24899648"
,
"name"
:
"paihangbang"
,
"font_class"
:
"medal"
,
"unicode"
:
"e6a2"
,
"unicode_decimal"
:
59042
},
{
"icon_id"
:
"24899649"
,
"name"
:
"font"
,
"font_class"
:
"font"
,
"unicode"
:
"e6a3"
,
"unicode_decimal"
:
59043
},
{
"icon_id"
:
"24899650"
,
"name"
:
"gift"
,
"font_class"
:
"gift"
,
"unicode"
:
"e6a4"
,
"unicode_decimal"
:
59044
},
{
"icon_id"
:
"24899651"
,
"name"
:
"link"
,
"font_class"
:
"link"
,
"unicode"
:
"e6a5"
,
"unicode_decimal"
:
59045
},
{
"icon_id"
:
"24899652"
,
"name"
:
"notification"
,
"font_class"
:
"notification"
,
"unicode"
:
"e6a6"
,
"unicode_decimal"
:
59046
},
{
"icon_id"
:
"24899653"
,
"name"
:
"staff"
,
"font_class"
:
"staff"
,
"unicode"
:
"e6a7"
,
"unicode_decimal"
:
59047
},
{
"icon_id"
:
"24899654"
,
"name"
:
"VIP"
,
"font_class"
:
"vip"
,
"unicode"
:
"e6a8"
,
"unicode_decimal"
:
59048
},
{
"icon_id"
:
"24899655"
,
"name"
:
"folder_add"
,
"font_class"
:
"folder-add"
,
"unicode"
:
"e6a9"
,
"unicode_decimal"
:
59049
},
{
"icon_id"
:
"24899656"
,
"name"
:
"tune"
,
"font_class"
:
"tune"
,
"unicode"
:
"e6aa"
,
"unicode_decimal"
:
59050
},
{
"icon_id"
:
"24899657"
,
"name"
:
"shimingrenzheng"
,
"font_class"
:
"auth"
,
"unicode"
:
"e6ab"
,
"unicode_decimal"
:
59051
},
{
"icon_id"
:
"24899565"
,
"name"
:
"person"
,
"font_class"
:
"person"
,
"unicode"
:
"e699"
,
"unicode_decimal"
:
59033
},
{
"icon_id"
:
"24899566"
,
"name"
:
"email-filled"
,
"font_class"
:
"email-filled"
,
"unicode"
:
"e69a"
,
"unicode_decimal"
:
59034
},
{
"icon_id"
:
"24899567"
,
"name"
:
"phone-filled"
,
"font_class"
:
"phone-filled"
,
"unicode"
:
"e69b"
,
"unicode_decimal"
:
59035
},
{
"icon_id"
:
"24899568"
,
"name"
:
"phone"
,
"font_class"
:
"phone"
,
"unicode"
:
"e69c"
,
"unicode_decimal"
:
59036
},
{
"icon_id"
:
"24899570"
,
"name"
:
"email"
,
"font_class"
:
"email"
,
"unicode"
:
"e69e"
,
"unicode_decimal"
:
59038
},
{
"icon_id"
:
"24899571"
,
"name"
:
"personadd"
,
"font_class"
:
"personadd"
,
"unicode"
:
"e69f"
,
"unicode_decimal"
:
59039
},
{
"icon_id"
:
"24899558"
,
"name"
:
"chatboxes-filled"
,
"font_class"
:
"chatboxes-filled"
,
"unicode"
:
"e692"
,
"unicode_decimal"
:
59026
},
{
"icon_id"
:
"24899559"
,
"name"
:
"contact"
,
"font_class"
:
"contact"
,
"unicode"
:
"e693"
,
"unicode_decimal"
:
59027
},
{
"icon_id"
:
"24899560"
,
"name"
:
"chatbubble-filled"
,
"font_class"
:
"chatbubble-filled"
,
"unicode"
:
"e694"
,
"unicode_decimal"
:
59028
},
{
"icon_id"
:
"24899561"
,
"name"
:
"contact-filled"
,
"font_class"
:
"contact-filled"
,
"unicode"
:
"e695"
,
"unicode_decimal"
:
59029
},
{
"icon_id"
:
"24899562"
,
"name"
:
"chatboxes"
,
"font_class"
:
"chatboxes"
,
"unicode"
:
"e696"
,
"unicode_decimal"
:
59030
},
{
"icon_id"
:
"24899563"
,
"name"
:
"chatbubble"
,
"font_class"
:
"chatbubble"
,
"unicode"
:
"e697"
,
"unicode_decimal"
:
59031
},
{
"icon_id"
:
"24881290"
,
"name"
:
"upload-filled"
,
"font_class"
:
"upload-filled"
,
"unicode"
:
"e68e"
,
"unicode_decimal"
:
59022
},
{
"icon_id"
:
"24881292"
,
"name"
:
"upload"
,
"font_class"
:
"upload"
,
"unicode"
:
"e690"
,
"unicode_decimal"
:
59024
},
{
"icon_id"
:
"24881293"
,
"name"
:
"weixin"
,
"font_class"
:
"weixin"
,
"unicode"
:
"e691"
,
"unicode_decimal"
:
59025
},
{
"icon_id"
:
"24881274"
,
"name"
:
"compose"
,
"font_class"
:
"compose"
,
"unicode"
:
"e67f"
,
"unicode_decimal"
:
59007
},
{
"icon_id"
:
"24881275"
,
"name"
:
"qq"
,
"font_class"
:
"qq"
,
"unicode"
:
"e680"
,
"unicode_decimal"
:
59008
},
{
"icon_id"
:
"24881276"
,
"name"
:
"download-filled"
,
"font_class"
:
"download-filled"
,
"unicode"
:
"e681"
,
"unicode_decimal"
:
59009
},
{
"icon_id"
:
"24881277"
,
"name"
:
"pengyouquan"
,
"font_class"
:
"pyq"
,
"unicode"
:
"e682"
,
"unicode_decimal"
:
59010
},
{
"icon_id"
:
"24881279"
,
"name"
:
"sound"
,
"font_class"
:
"sound"
,
"unicode"
:
"e684"
,
"unicode_decimal"
:
59012
},
{
"icon_id"
:
"24881280"
,
"name"
:
"trash-filled"
,
"font_class"
:
"trash-filled"
,
"unicode"
:
"e685"
,
"unicode_decimal"
:
59013
},
{
"icon_id"
:
"24881281"
,
"name"
:
"sound-filled"
,
"font_class"
:
"sound-filled"
,
"unicode"
:
"e686"
,
"unicode_decimal"
:
59014
},
{
"icon_id"
:
"24881282"
,
"name"
:
"trash"
,
"font_class"
:
"trash"
,
"unicode"
:
"e687"
,
"unicode_decimal"
:
59015
},
{
"icon_id"
:
"24881284"
,
"name"
:
"videocam-filled"
,
"font_class"
:
"videocam-filled"
,
"unicode"
:
"e689"
,
"unicode_decimal"
:
59017
},
{
"icon_id"
:
"24881285"
,
"name"
:
"spinner-cycle"
,
"font_class"
:
"spinner-cycle"
,
"unicode"
:
"e68a"
,
"unicode_decimal"
:
59018
},
{
"icon_id"
:
"24881286"
,
"name"
:
"weibo"
,
"font_class"
:
"weibo"
,
"unicode"
:
"e68b"
,
"unicode_decimal"
:
59019
},
{
"icon_id"
:
"24881288"
,
"name"
:
"videocam"
,
"font_class"
:
"videocam"
,
"unicode"
:
"e68c"
,
"unicode_decimal"
:
59020
},
{
"icon_id"
:
"24881289"
,
"name"
:
"download"
,
"font_class"
:
"download"
,
"unicode"
:
"e68d"
,
"unicode_decimal"
:
59021
},
{
"icon_id"
:
"24879601"
,
"name"
:
"help"
,
"font_class"
:
"help"
,
"unicode"
:
"e679"
,
"unicode_decimal"
:
59001
},
{
"icon_id"
:
"24879602"
,
"name"
:
"navigate-filled"
,
"font_class"
:
"navigate-filled"
,
"unicode"
:
"e67a"
,
"unicode_decimal"
:
59002
},
{
"icon_id"
:
"24879603"
,
"name"
:
"plusempty"
,
"font_class"
:
"plusempty"
,
"unicode"
:
"e67b"
,
"unicode_decimal"
:
59003
},
{
"icon_id"
:
"24879604"
,
"name"
:
"smallcircle"
,
"font_class"
:
"smallcircle"
,
"unicode"
:
"e67c"
,
"unicode_decimal"
:
59004
},
{
"icon_id"
:
"24879605"
,
"name"
:
"minus-filled"
,
"font_class"
:
"minus-filled"
,
"unicode"
:
"e67d"
,
"unicode_decimal"
:
59005
},
{
"icon_id"
:
"24879606"
,
"name"
:
"micoff"
,
"font_class"
:
"micoff"
,
"unicode"
:
"e67e"
,
"unicode_decimal"
:
59006
},
{
"icon_id"
:
"24879588"
,
"name"
:
"closeempty"
,
"font_class"
:
"closeempty"
,
"unicode"
:
"e66c"
,
"unicode_decimal"
:
58988
},
{
"icon_id"
:
"24879589"
,
"name"
:
"clear"
,
"font_class"
:
"clear"
,
"unicode"
:
"e66d"
,
"unicode_decimal"
:
58989
},
{
"icon_id"
:
"24879590"
,
"name"
:
"navigate"
,
"font_class"
:
"navigate"
,
"unicode"
:
"e66e"
,
"unicode_decimal"
:
58990
},
{
"icon_id"
:
"24879591"
,
"name"
:
"minus"
,
"font_class"
:
"minus"
,
"unicode"
:
"e66f"
,
"unicode_decimal"
:
58991
},
{
"icon_id"
:
"24879592"
,
"name"
:
"image"
,
"font_class"
:
"image"
,
"unicode"
:
"e670"
,
"unicode_decimal"
:
58992
},
{
"icon_id"
:
"24879593"
,
"name"
:
"mic"
,
"font_class"
:
"mic"
,
"unicode"
:
"e671"
,
"unicode_decimal"
:
58993
},
{
"icon_id"
:
"24879594"
,
"name"
:
"paperplane"
,
"font_class"
:
"paperplane"
,
"unicode"
:
"e672"
,
"unicode_decimal"
:
58994
},
{
"icon_id"
:
"24879595"
,
"name"
:
"close"
,
"font_class"
:
"close"
,
"unicode"
:
"e673"
,
"unicode_decimal"
:
58995
},
{
"icon_id"
:
"24879596"
,
"name"
:
"help-filled"
,
"font_class"
:
"help-filled"
,
"unicode"
:
"e674"
,
"unicode_decimal"
:
58996
},
{
"icon_id"
:
"24879597"
,
"name"
:
"plus-filled"
,
"font_class"
:
"paperplane-filled"
,
"unicode"
:
"e675"
,
"unicode_decimal"
:
58997
},
{
"icon_id"
:
"24879598"
,
"name"
:
"plus"
,
"font_class"
:
"plus"
,
"unicode"
:
"e676"
,
"unicode_decimal"
:
58998
},
{
"icon_id"
:
"24879599"
,
"name"
:
"mic-filled"
,
"font_class"
:
"mic-filled"
,
"unicode"
:
"e677"
,
"unicode_decimal"
:
58999
},
{
"icon_id"
:
"24879600"
,
"name"
:
"image-filled"
,
"font_class"
:
"image-filled"
,
"unicode"
:
"e678"
,
"unicode_decimal"
:
59000
},
{
"icon_id"
:
"24855900"
,
"name"
:
"locked-filled"
,
"font_class"
:
"locked-filled"
,
"unicode"
:
"e668"
,
"unicode_decimal"
:
58984
},
{
"icon_id"
:
"24855901"
,
"name"
:
"info"
,
"font_class"
:
"info"
,
"unicode"
:
"e669"
,
"unicode_decimal"
:
58985
},
{
"icon_id"
:
"24855903"
,
"name"
:
"locked"
,
"font_class"
:
"locked"
,
"unicode"
:
"e66b"
,
"unicode_decimal"
:
58987
},
{
"icon_id"
:
"24855884"
,
"name"
:
"camera-filled"
,
"font_class"
:
"camera-filled"
,
"unicode"
:
"e658"
,
"unicode_decimal"
:
58968
},
{
"icon_id"
:
"24855885"
,
"name"
:
"chat-filled"
,
"font_class"
:
"chat-filled"
,
"unicode"
:
"e659"
,
"unicode_decimal"
:
58969
},
{
"icon_id"
:
"24855886"
,
"name"
:
"camera"
,
"font_class"
:
"camera"
,
"unicode"
:
"e65a"
,
"unicode_decimal"
:
58970
},
{
"icon_id"
:
"24855887"
,
"name"
:
"circle"
,
"font_class"
:
"circle"
,
"unicode"
:
"e65b"
,
"unicode_decimal"
:
58971
},
{
"icon_id"
:
"24855888"
,
"name"
:
"checkmarkempty"
,
"font_class"
:
"checkmarkempty"
,
"unicode"
:
"e65c"
,
"unicode_decimal"
:
58972
},
{
"icon_id"
:
"24855889"
,
"name"
:
"chat"
,
"font_class"
:
"chat"
,
"unicode"
:
"e65d"
,
"unicode_decimal"
:
58973
},
{
"icon_id"
:
"24855890"
,
"name"
:
"circle-filled"
,
"font_class"
:
"circle-filled"
,
"unicode"
:
"e65e"
,
"unicode_decimal"
:
58974
},
{
"icon_id"
:
"24855891"
,
"name"
:
"flag"
,
"font_class"
:
"flag"
,
"unicode"
:
"e65f"
,
"unicode_decimal"
:
58975
},
{
"icon_id"
:
"24855892"
,
"name"
:
"flag-filled"
,
"font_class"
:
"flag-filled"
,
"unicode"
:
"e660"
,
"unicode_decimal"
:
58976
},
{
"icon_id"
:
"24855893"
,
"name"
:
"gear-filled"
,
"font_class"
:
"gear-filled"
,
"unicode"
:
"e661"
,
"unicode_decimal"
:
58977
},
{
"icon_id"
:
"24855894"
,
"name"
:
"home"
,
"font_class"
:
"home"
,
"unicode"
:
"e662"
,
"unicode_decimal"
:
58978
},
{
"icon_id"
:
"24855895"
,
"name"
:
"home-filled"
,
"font_class"
:
"home-filled"
,
"unicode"
:
"e663"
,
"unicode_decimal"
:
58979
},
{
"icon_id"
:
"24855896"
,
"name"
:
"gear"
,
"font_class"
:
"gear"
,
"unicode"
:
"e664"
,
"unicode_decimal"
:
58980
},
{
"icon_id"
:
"24855897"
,
"name"
:
"smallcircle-filled"
,
"font_class"
:
"smallcircle-filled"
,
"unicode"
:
"e665"
,
"unicode_decimal"
:
58981
},
{
"icon_id"
:
"24855898"
,
"name"
:
"map-filled"
,
"font_class"
:
"map-filled"
,
"unicode"
:
"e666"
,
"unicode_decimal"
:
58982
},
{
"icon_id"
:
"24855899"
,
"name"
:
"map"
,
"font_class"
:
"map"
,
"unicode"
:
"e667"
,
"unicode_decimal"
:
58983
},
{
"icon_id"
:
"24855825"
,
"name"
:
"refresh-filled"
,
"font_class"
:
"refresh-filled"
,
"unicode"
:
"e656"
,
"unicode_decimal"
:
58966
},
{
"icon_id"
:
"24855826"
,
"name"
:
"refresh"
,
"font_class"
:
"refresh"
,
"unicode"
:
"e657"
,
"unicode_decimal"
:
58967
},
{
"icon_id"
:
"24855808"
,
"name"
:
"cloud-upload"
,
"font_class"
:
"cloud-upload"
,
"unicode"
:
"e645"
,
"unicode_decimal"
:
58949
},
{
"icon_id"
:
"24855809"
,
"name"
:
"cloud-download-filled"
,
"font_class"
:
"cloud-download-filled"
,
"unicode"
:
"e646"
,
"unicode_decimal"
:
58950
},
{
"icon_id"
:
"24855810"
,
"name"
:
"cloud-download"
,
"font_class"
:
"cloud-download"
,
"unicode"
:
"e647"
,
"unicode_decimal"
:
58951
},
{
"icon_id"
:
"24855811"
,
"name"
:
"cloud-upload-filled"
,
"font_class"
:
"cloud-upload-filled"
,
"unicode"
:
"e648"
,
"unicode_decimal"
:
58952
},
{
"icon_id"
:
"24855813"
,
"name"
:
"redo"
,
"font_class"
:
"redo"
,
"unicode"
:
"e64a"
,
"unicode_decimal"
:
58954
},
{
"icon_id"
:
"24855814"
,
"name"
:
"images-filled"
,
"font_class"
:
"images-filled"
,
"unicode"
:
"e64b"
,
"unicode_decimal"
:
58955
},
{
"icon_id"
:
"24855815"
,
"name"
:
"undo-filled"
,
"font_class"
:
"undo-filled"
,
"unicode"
:
"e64c"
,
"unicode_decimal"
:
58956
},
{
"icon_id"
:
"24855816"
,
"name"
:
"more"
,
"font_class"
:
"more"
,
"unicode"
:
"e64d"
,
"unicode_decimal"
:
58957
},
{
"icon_id"
:
"24855817"
,
"name"
:
"more-filled"
,
"font_class"
:
"more-filled"
,
"unicode"
:
"e64e"
,
"unicode_decimal"
:
58958
},
{
"icon_id"
:
"24855818"
,
"name"
:
"undo"
,
"font_class"
:
"undo"
,
"unicode"
:
"e64f"
,
"unicode_decimal"
:
58959
},
{
"icon_id"
:
"24855819"
,
"name"
:
"images"
,
"font_class"
:
"images"
,
"unicode"
:
"e650"
,
"unicode_decimal"
:
58960
},
{
"icon_id"
:
"24855821"
,
"name"
:
"paperclip"
,
"font_class"
:
"paperclip"
,
"unicode"
:
"e652"
,
"unicode_decimal"
:
58962
},
{
"icon_id"
:
"24855822"
,
"name"
:
"settings"
,
"font_class"
:
"settings"
,
"unicode"
:
"e653"
,
"unicode_decimal"
:
58963
},
{
"icon_id"
:
"24855823"
,
"name"
:
"search"
,
"font_class"
:
"search"
,
"unicode"
:
"e654"
,
"unicode_decimal"
:
58964
},
{
"icon_id"
:
"24855824"
,
"name"
:
"redo-filled"
,
"font_class"
:
"redo-filled"
,
"unicode"
:
"e655"
,
"unicode_decimal"
:
58965
},
{
"icon_id"
:
"24841702"
,
"name"
:
"list"
,
"font_class"
:
"list"
,
"unicode"
:
"e644"
,
"unicode_decimal"
:
58948
},
{
"icon_id"
:
"24841489"
,
"name"
:
"mail-open-filled"
,
"font_class"
:
"mail-open-filled"
,
"unicode"
:
"e63a"
,
"unicode_decimal"
:
58938
},
{
"icon_id"
:
"24841491"
,
"name"
:
"hand-thumbsdown-filled"
,
"font_class"
:
"hand-down-filled"
,
"unicode"
:
"e63c"
,
"unicode_decimal"
:
58940
},
{
"icon_id"
:
"24841492"
,
"name"
:
"hand-thumbsdown"
,
"font_class"
:
"hand-down"
,
"unicode"
:
"e63d"
,
"unicode_decimal"
:
58941
},
{
"icon_id"
:
"24841493"
,
"name"
:
"hand-thumbsup-filled"
,
"font_class"
:
"hand-up-filled"
,
"unicode"
:
"e63e"
,
"unicode_decimal"
:
58942
},
{
"icon_id"
:
"24841494"
,
"name"
:
"hand-thumbsup"
,
"font_class"
:
"hand-up"
,
"unicode"
:
"e63f"
,
"unicode_decimal"
:
58943
},
{
"icon_id"
:
"24841496"
,
"name"
:
"heart-filled"
,
"font_class"
:
"heart-filled"
,
"unicode"
:
"e641"
,
"unicode_decimal"
:
58945
},
{
"icon_id"
:
"24841498"
,
"name"
:
"mail-open"
,
"font_class"
:
"mail-open"
,
"unicode"
:
"e643"
,
"unicode_decimal"
:
58947
},
{
"icon_id"
:
"24841488"
,
"name"
:
"heart"
,
"font_class"
:
"heart"
,
"unicode"
:
"e639"
,
"unicode_decimal"
:
58937
},
{
"icon_id"
:
"24839963"
,
"name"
:
"loop"
,
"font_class"
:
"loop"
,
"unicode"
:
"e633"
,
"unicode_decimal"
:
58931
},
{
"icon_id"
:
"24839866"
,
"name"
:
"pulldown"
,
"font_class"
:
"pulldown"
,
"unicode"
:
"e632"
,
"unicode_decimal"
:
58930
},
{
"icon_id"
:
"24813798"
,
"name"
:
"scan"
,
"font_class"
:
"scan"
,
"unicode"
:
"e62a"
,
"unicode_decimal"
:
58922
},
{
"icon_id"
:
"24813786"
,
"name"
:
"bars"
,
"font_class"
:
"bars"
,
"unicode"
:
"e627"
,
"unicode_decimal"
:
58919
},
{
"icon_id"
:
"24813788"
,
"name"
:
"cart-filled"
,
"font_class"
:
"cart-filled"
,
"unicode"
:
"e629"
,
"unicode_decimal"
:
58921
},
{
"icon_id"
:
"24813790"
,
"name"
:
"checkbox"
,
"font_class"
:
"checkbox"
,
"unicode"
:
"e62b"
,
"unicode_decimal"
:
58923
},
{
"icon_id"
:
"24813791"
,
"name"
:
"checkbox-filled"
,
"font_class"
:
"checkbox-filled"
,
"unicode"
:
"e62c"
,
"unicode_decimal"
:
58924
},
{
"icon_id"
:
"24813794"
,
"name"
:
"shop"
,
"font_class"
:
"shop"
,
"unicode"
:
"e62f"
,
"unicode_decimal"
:
58927
},
{
"icon_id"
:
"24813795"
,
"name"
:
"headphones"
,
"font_class"
:
"headphones"
,
"unicode"
:
"e630"
,
"unicode_decimal"
:
58928
},
{
"icon_id"
:
"24813796"
,
"name"
:
"cart"
,
"font_class"
:
"cart"
,
"unicode"
:
"e631"
,
"unicode_decimal"
:
58929
}
]
}
vedio/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
0 → 100644
View file @
fb973720
<
template
>
<!-- #ifdef APP-NVUE -->
<text
:style=
"
{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">
{{
unicode
}}
</text>
<!-- #endif -->
<!-- #ifndef APP-NVUE -->
<text
:style=
"
{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick">
</text>
<!-- #endif -->
</
template
>
<
script
>
import
icons
from
'./icons.js'
;
const
getVal
=
(
val
)
=>
{
const
reg
=
/^
[
0-9
]
*$/g
return
(
typeof
val
===
'number'
||
reg
.
test
(
val
)
)?
val
+
'px'
:
val
;
}
// #ifdef APP-NVUE
var
domModule
=
weex
.
requireModule
(
'dom'
);
import
iconUrl
from
'./uniicons.ttf'
domModule
.
addRule
(
'fontFace'
,
{
'fontFamily'
:
"uniicons"
,
'src'
:
"url('"
+
iconUrl
+
"')"
});
// #endif
/**
* Icons 图标
* @description 用于展示 icons 图标
* @tutorial https://ext.dcloud.net.cn/plugin?id=28
* @property {Number} size 图标大小
* @property {String} type 图标图案,参考示例
* @property {String} color 图标颜色
* @property {String} customPrefix 自定义图标
* @event {Function} click 点击 Icon 触发事件
*/
export
default
{
name
:
'UniIcons'
,
emits
:[
'click'
],
props
:
{
type
:
{
type
:
String
,
default
:
''
},
color
:
{
type
:
String
,
default
:
'#333333'
},
size
:
{
type
:
[
Number
,
String
],
default
:
16
},
customPrefix
:{
type
:
String
,
default
:
''
}
},
data
()
{
return
{
icons
:
icons
.
glyphs
}
},
computed
:{
unicode
(){
let
code
=
this
.
icons
.
find
(
v
=>
v
.
font_class
===
this
.
type
)
if
(
code
){
return
unescape
(
`%u
${
code
.
unicode
}
`
)
}
return
''
},
iconSize
(){
return
getVal
(
this
.
size
)
}
},
methods
:
{
_onClick
()
{
this
.
$emit
(
'click'
)
}
}
}
</
script
>
<
style
lang=
"scss"
>
/* #ifndef APP-NVUE */
@import
'./uniicons.css'
;
@font-face
{
font-family
:
uniicons
;
src
:
url('./uniicons.ttf')
format
(
'truetype'
);
}
/* #endif */
.uni-icons
{
font-family
:
uniicons
;
text-decoration
:
none
;
text-align
:
center
;
}
</
style
>
vedio/uni_modules/uni-icons/components/uni-icons/uniicons.css
0 → 100644
View file @
fb973720
.uniui-color
:before
{
content
:
"\e6cf"
;
}
.uniui-wallet
:before
{
content
:
"\e6b1"
;
}
.uniui-settings-filled
:before
{
content
:
"\e6ce"
;
}
.uniui-auth-filled
:before
{
content
:
"\e6cc"
;
}
.uniui-shop-filled
:before
{
content
:
"\e6cd"
;
}
.uniui-staff-filled
:before
{
content
:
"\e6cb"
;
}
.uniui-vip-filled
:before
{
content
:
"\e6c6"
;
}
.uniui-plus-filled
:before
{
content
:
"\e6c7"
;
}
.uniui-folder-add-filled
:before
{
content
:
"\e6c8"
;
}
.uniui-color-filled
:before
{
content
:
"\e6c9"
;
}
.uniui-tune-filled
:before
{
content
:
"\e6ca"
;
}
.uniui-calendar-filled
:before
{
content
:
"\e6c0"
;
}
.uniui-notification-filled
:before
{
content
:
"\e6c1"
;
}
.uniui-wallet-filled
:before
{
content
:
"\e6c2"
;
}
.uniui-medal-filled
:before
{
content
:
"\e6c3"
;
}
.uniui-gift-filled
:before
{
content
:
"\e6c4"
;
}
.uniui-fire-filled
:before
{
content
:
"\e6c5"
;
}
.uniui-refreshempty
:before
{
content
:
"\e6bf"
;
}
.uniui-location-filled
:before
{
content
:
"\e6af"
;
}
.uniui-person-filled
:before
{
content
:
"\e69d"
;
}
.uniui-personadd-filled
:before
{
content
:
"\e698"
;
}
.uniui-back
:before
{
content
:
"\e6b9"
;
}
.uniui-forward
:before
{
content
:
"\e6ba"
;
}
.uniui-arrow-right
:before
{
content
:
"\e6bb"
;
}
.uniui-arrowthinright
:before
{
content
:
"\e6bb"
;
}
.uniui-arrow-left
:before
{
content
:
"\e6bc"
;
}
.uniui-arrowthinleft
:before
{
content
:
"\e6bc"
;
}
.uniui-arrow-up
:before
{
content
:
"\e6bd"
;
}
.uniui-arrowthinup
:before
{
content
:
"\e6bd"
;
}
.uniui-arrow-down
:before
{
content
:
"\e6be"
;
}
.uniui-arrowthindown
:before
{
content
:
"\e6be"
;
}
.uniui-bottom
:before
{
content
:
"\e6b8"
;
}
.uniui-arrowdown
:before
{
content
:
"\e6b8"
;
}
.uniui-right
:before
{
content
:
"\e6b5"
;
}
.uniui-arrowright
:before
{
content
:
"\e6b5"
;
}
.uniui-top
:before
{
content
:
"\e6b6"
;
}
.uniui-arrowup
:before
{
content
:
"\e6b6"
;
}
.uniui-left
:before
{
content
:
"\e6b7"
;
}
.uniui-arrowleft
:before
{
content
:
"\e6b7"
;
}
.uniui-eye
:before
{
content
:
"\e651"
;
}
.uniui-eye-filled
:before
{
content
:
"\e66a"
;
}
.uniui-eye-slash
:before
{
content
:
"\e6b3"
;
}
.uniui-eye-slash-filled
:before
{
content
:
"\e6b4"
;
}
.uniui-info-filled
:before
{
content
:
"\e649"
;
}
.uniui-reload
:before
{
content
:
"\e6b2"
;
}
.uniui-micoff-filled
:before
{
content
:
"\e6b0"
;
}
.uniui-map-pin-ellipse
:before
{
content
:
"\e6ac"
;
}
.uniui-map-pin
:before
{
content
:
"\e6ad"
;
}
.uniui-location
:before
{
content
:
"\e6ae"
;
}
.uniui-starhalf
:before
{
content
:
"\e683"
;
}
.uniui-star
:before
{
content
:
"\e688"
;
}
.uniui-star-filled
:before
{
content
:
"\e68f"
;
}
.uniui-calendar
:before
{
content
:
"\e6a0"
;
}
.uniui-fire
:before
{
content
:
"\e6a1"
;
}
.uniui-medal
:before
{
content
:
"\e6a2"
;
}
.uniui-font
:before
{
content
:
"\e6a3"
;
}
.uniui-gift
:before
{
content
:
"\e6a4"
;
}
.uniui-link
:before
{
content
:
"\e6a5"
;
}
.uniui-notification
:before
{
content
:
"\e6a6"
;
}
.uniui-staff
:before
{
content
:
"\e6a7"
;
}
.uniui-vip
:before
{
content
:
"\e6a8"
;
}
.uniui-folder-add
:before
{
content
:
"\e6a9"
;
}
.uniui-tune
:before
{
content
:
"\e6aa"
;
}
.uniui-auth
:before
{
content
:
"\e6ab"
;
}
.uniui-person
:before
{
content
:
"\e699"
;
}
.uniui-email-filled
:before
{
content
:
"\e69a"
;
}
.uniui-phone-filled
:before
{
content
:
"\e69b"
;
}
.uniui-phone
:before
{
content
:
"\e69c"
;
}
.uniui-email
:before
{
content
:
"\e69e"
;
}
.uniui-personadd
:before
{
content
:
"\e69f"
;
}
.uniui-chatboxes-filled
:before
{
content
:
"\e692"
;
}
.uniui-contact
:before
{
content
:
"\e693"
;
}
.uniui-chatbubble-filled
:before
{
content
:
"\e694"
;
}
.uniui-contact-filled
:before
{
content
:
"\e695"
;
}
.uniui-chatboxes
:before
{
content
:
"\e696"
;
}
.uniui-chatbubble
:before
{
content
:
"\e697"
;
}
.uniui-upload-filled
:before
{
content
:
"\e68e"
;
}
.uniui-upload
:before
{
content
:
"\e690"
;
}
.uniui-weixin
:before
{
content
:
"\e691"
;
}
.uniui-compose
:before
{
content
:
"\e67f"
;
}
.uniui-qq
:before
{
content
:
"\e680"
;
}
.uniui-download-filled
:before
{
content
:
"\e681"
;
}
.uniui-pyq
:before
{
content
:
"\e682"
;
}
.uniui-sound
:before
{
content
:
"\e684"
;
}
.uniui-trash-filled
:before
{
content
:
"\e685"
;
}
.uniui-sound-filled
:before
{
content
:
"\e686"
;
}
.uniui-trash
:before
{
content
:
"\e687"
;
}
.uniui-videocam-filled
:before
{
content
:
"\e689"
;
}
.uniui-spinner-cycle
:before
{
content
:
"\e68a"
;
}
.uniui-weibo
:before
{
content
:
"\e68b"
;
}
.uniui-videocam
:before
{
content
:
"\e68c"
;
}
.uniui-download
:before
{
content
:
"\e68d"
;
}
.uniui-help
:before
{
content
:
"\e679"
;
}
.uniui-navigate-filled
:before
{
content
:
"\e67a"
;
}
.uniui-plusempty
:before
{
content
:
"\e67b"
;
}
.uniui-smallcircle
:before
{
content
:
"\e67c"
;
}
.uniui-minus-filled
:before
{
content
:
"\e67d"
;
}
.uniui-micoff
:before
{
content
:
"\e67e"
;
}
.uniui-closeempty
:before
{
content
:
"\e66c"
;
}
.uniui-clear
:before
{
content
:
"\e66d"
;
}
.uniui-navigate
:before
{
content
:
"\e66e"
;
}
.uniui-minus
:before
{
content
:
"\e66f"
;
}
.uniui-image
:before
{
content
:
"\e670"
;
}
.uniui-mic
:before
{
content
:
"\e671"
;
}
.uniui-paperplane
:before
{
content
:
"\e672"
;
}
.uniui-close
:before
{
content
:
"\e673"
;
}
.uniui-help-filled
:before
{
content
:
"\e674"
;
}
.uniui-paperplane-filled
:before
{
content
:
"\e675"
;
}
.uniui-plus
:before
{
content
:
"\e676"
;
}
.uniui-mic-filled
:before
{
content
:
"\e677"
;
}
.uniui-image-filled
:before
{
content
:
"\e678"
;
}
.uniui-locked-filled
:before
{
content
:
"\e668"
;
}
.uniui-info
:before
{
content
:
"\e669"
;
}
.uniui-locked
:before
{
content
:
"\e66b"
;
}
.uniui-camera-filled
:before
{
content
:
"\e658"
;
}
.uniui-chat-filled
:before
{
content
:
"\e659"
;
}
.uniui-camera
:before
{
content
:
"\e65a"
;
}
.uniui-circle
:before
{
content
:
"\e65b"
;
}
.uniui-checkmarkempty
:before
{
content
:
"\e65c"
;
}
.uniui-chat
:before
{
content
:
"\e65d"
;
}
.uniui-circle-filled
:before
{
content
:
"\e65e"
;
}
.uniui-flag
:before
{
content
:
"\e65f"
;
}
.uniui-flag-filled
:before
{
content
:
"\e660"
;
}
.uniui-gear-filled
:before
{
content
:
"\e661"
;
}
.uniui-home
:before
{
content
:
"\e662"
;
}
.uniui-home-filled
:before
{
content
:
"\e663"
;
}
.uniui-gear
:before
{
content
:
"\e664"
;
}
.uniui-smallcircle-filled
:before
{
content
:
"\e665"
;
}
.uniui-map-filled
:before
{
content
:
"\e666"
;
}
.uniui-map
:before
{
content
:
"\e667"
;
}
.uniui-refresh-filled
:before
{
content
:
"\e656"
;
}
.uniui-refresh
:before
{
content
:
"\e657"
;
}
.uniui-cloud-upload
:before
{
content
:
"\e645"
;
}
.uniui-cloud-download-filled
:before
{
content
:
"\e646"
;
}
.uniui-cloud-download
:before
{
content
:
"\e647"
;
}
.uniui-cloud-upload-filled
:before
{
content
:
"\e648"
;
}
.uniui-redo
:before
{
content
:
"\e64a"
;
}
.uniui-images-filled
:before
{
content
:
"\e64b"
;
}
.uniui-undo-filled
:before
{
content
:
"\e64c"
;
}
.uniui-more
:before
{
content
:
"\e64d"
;
}
.uniui-more-filled
:before
{
content
:
"\e64e"
;
}
.uniui-undo
:before
{
content
:
"\e64f"
;
}
.uniui-images
:before
{
content
:
"\e650"
;
}
.uniui-paperclip
:before
{
content
:
"\e652"
;
}
.uniui-settings
:before
{
content
:
"\e653"
;
}
.uniui-search
:before
{
content
:
"\e654"
;
}
.uniui-redo-filled
:before
{
content
:
"\e655"
;
}
.uniui-list
:before
{
content
:
"\e644"
;
}
.uniui-mail-open-filled
:before
{
content
:
"\e63a"
;
}
.uniui-hand-down-filled
:before
{
content
:
"\e63c"
;
}
.uniui-hand-down
:before
{
content
:
"\e63d"
;
}
.uniui-hand-up-filled
:before
{
content
:
"\e63e"
;
}
.uniui-hand-up
:before
{
content
:
"\e63f"
;
}
.uniui-heart-filled
:before
{
content
:
"\e641"
;
}
.uniui-mail-open
:before
{
content
:
"\e643"
;
}
.uniui-heart
:before
{
content
:
"\e639"
;
}
.uniui-loop
:before
{
content
:
"\e633"
;
}
.uniui-pulldown
:before
{
content
:
"\e632"
;
}
.uniui-scan
:before
{
content
:
"\e62a"
;
}
.uniui-bars
:before
{
content
:
"\e627"
;
}
.uniui-cart-filled
:before
{
content
:
"\e629"
;
}
.uniui-checkbox
:before
{
content
:
"\e62b"
;
}
.uniui-checkbox-filled
:before
{
content
:
"\e62c"
;
}
.uniui-shop
:before
{
content
:
"\e62f"
;
}
.uniui-headphones
:before
{
content
:
"\e630"
;
}
.uniui-cart
:before
{
content
:
"\e631"
;
}
vedio/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
0 → 100644
View file @
fb973720
File added
vedio/uni_modules/uni-icons/package.json
0 → 100644
View file @
fb973720
{
"id"
:
"uni-icons"
,
"displayName"
:
"uni-icons 图标"
,
"version"
:
"1.3.5"
,
"description"
:
"图标组件,用于展示移动端常见的图标,可自定义颜色、大小。"
,
"keywords"
:
[
"uni-ui"
,
"uniui"
,
"icon"
,
"图标"
],
"repository"
:
"https://github.com/dcloudio/uni-ui"
,
"engines"
:
{
"HBuilderX"
:
"^3.2.14"
},
"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"
],
"encrypt"
:
[],
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
},
"client"
:
{
"App"
:
{
"app-vue"
:
"y"
,
"app-nvue"
:
"y"
},
"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"
},
"快应用"
:
{
"华为"
:
"u"
,
"联盟"
:
"u"
},
"Vue"
:
{
"vue2"
:
"y"
,
"vue3"
:
"y"
}
}
}
}
}
\ No newline at end of file
vedio/uni_modules/uni-list/changelog.md
0 → 100644
View file @
fb973720
## 1.2.14(2023-04-14)
-
优化 uni-list-chat 具名插槽
`header`
非app端套一层元素,方便使用时通过外层元素定位实现样式修改
## 1.2.13(2023-03-03)
-
uni-list-chat 新增 支持具名插槽
`header`
## 1.2.12(2023-02-01)
-
新增 列表图标新增 customPrefix 属性 ,用法
[
详见
](
https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props
)
## 1.2.11(2023-01-31)
-
修复 无反馈效果呈现的bug
## 1.2.9(2022-11-22)
-
修复 uni-list-chat 在vue3下跳转报错的bug
## 1.2.8(2022-11-21)
-
修复 uni-list-chat avatar属性 值为本地路径时错误的问题
## 1.2.7(2022-11-21)
-
修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题
## 1.2.6(2022-11-18)
-
修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题
## 1.2.5(2022-11-15)
-
修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug
## 1.2.4(2022-11-15)
-
修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug
## 1.2.3(2022-11-14)
-
uni-list-chat 新增 avatar 支持 fileId
## 1.2.2(2022-11-11)
-
uni-list 新增属性 render-reverse 详情参考:
[
https://uniapp.dcloud.net.cn/component/list.html
](
https://uniapp.dcloud.net.cn/component/list.html
)
-
uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:
[
https://ext.dcloud.net.cn/plugin?name=uni-im
](
https://ext.dcloud.net.cn/plugin?name=uni-im
)
-
uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor
## 1.2.1(2022-03-30)
-
删除无用文件
## 1.2.0(2021-11-23)
-
优化 组件UI,并提供设计资源,详见:
[
https://uniapp.dcloud.io/component/uniui/resource
](
https://uniapp.dcloud.io/component/uniui/resource
)
-
文档迁移,详见:
[
https://uniapp.dcloud.io/component/uniui/uni-list
](
https://uniapp.dcloud.io/component/uniui/uni-list
)
## 1.1.3(2021-08-30)
-
修复 在vue3中to属性在发行应用的时候报错的bug
## 1.1.2(2021-07-30)
-
优化 vue3下事件警告的问题
## 1.1.1(2021-07-21)
-
修复 与其他组件嵌套使用时,点击失效的Bug
## 1.1.0(2021-07-13)
-
组件兼容 vue3,如何创建vue3项目,详见
[
uni-app 项目支持 vue3 介绍
](
https://ask.dcloud.net.cn/article/37834
)
## 1.0.17(2021-05-12)
-
新增 组件示例地址
## 1.0.16(2021-02-05)
-
优化 组件引用关系,通过uni_modules引用组件
## 1.0.15(2021-02-05)
-
调整为uni_modules目录规范
-
修复 uni-list-chat 角标显示不正常的问题
vedio/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue
0 → 100644
View file @
fb973720
<
template
>
<!-- #ifdef APP-NVUE -->
<cell>
<!-- #endif -->
<view
class=
"uni-list-ad"
>
<view
v-if=
"borderShow"
:class=
"
{'uni-list--border':border,'uni-list-item--first':isFirstChild}">
</view>
<ad
style=
"width: 200px;height: 300px;border-width: 1px;border-color: red;border-style: solid;"
adpid=
"1111111111"
unit-id=
""
appid=
""
apid=
""
type=
"feed"
@
error=
"aderror"
@
close=
"closeAd"
></ad>
</view>
<!-- #ifdef APP-NVUE -->
</cell>
<!-- #endif -->
</
template
>
<
script
>
// #ifdef APP-NVUE
const
dom
=
uni
.
requireNativePlugin
(
'dom'
);
// #endif
export
default
{
name
:
'UniListAd'
,
props
:
{
title
:
{
type
:
String
,
default
:
''
,
}
},
// inject: ['list'],
data
()
{
return
{
isFirstChild
:
false
,
border
:
false
,
borderShow
:
true
,
}
},
mounted
()
{
this
.
list
=
this
.
getForm
()
if
(
this
.
list
)
{
if
(
!
this
.
list
.
firstChildAppend
)
{
this
.
list
.
firstChildAppend
=
true
this
.
isFirstChild
=
true
}
this
.
border
=
this
.
list
.
border
}
},
methods
:
{
/**
* 获取父元素实例
*/
getForm
(
name
=
'uniList'
)
{
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
;
},
aderror
(
e
)
{
console
.
log
(
"aderror: "
+
JSON
.
stringify
(
e
.
detail
));
},
closeAd
(
e
)
{
this
.
borderShow
=
false
}
}
}
</
script
>
<
style
lang=
"scss"
>
.uni-list-ad
{
position
:
relative
;
border
:
1px
red
solid
;
}
.uni-list--border
{
position
:
relative
;
padding-bottom
:
1px
;
/* #ifdef APP-PLUS */
border-top-color
:
$uni-border-color
;
border-top-style
:
solid
;
border-top-width
:
0
.5px
;
/* #endif */
margin-left
:
$uni-spacing-row-lg
;
}
/* #ifndef APP-NVUE */
.uni-list--border
:after
{
position
:
absolute
;
top
:
0
;
right
:
0
;
left
:
0
;
height
:
1px
;
content
:
''
;
-webkit-transform
:
scaleY
(
.5
);
transform
:
scaleY
(
.5
);
background-color
:
$uni-border-color
;
}
.uni-list-item--first
:after
{
height
:
0px
;
}
/* #endif */
</
style
>
vedio/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss
0 → 100644
View file @
fb973720
/**
* 这里是 uni-list 组件内置的常用样式变量
* 如果需要覆盖样式,这里提供了基本的组件样式变量,您可以尝试修改这里的变量,去完成样式替换,而不用去修改源码
*
*/
// 背景色
$background-color
:
#fff
;
// 分割线颜色
$divide-line-color
:
#e5e5e5
;
// 默认头像大小,如需要修改此值,注意同步修改 js 中的值 const avatarWidth = xx ,目前只支持方形头像
// nvue 页面不支持修改头像大小
$avatar-width
:
45px
;
// 头像边框
$avatar-border-radius
:
5px
;
$avatar-border-color
:
#eee
;
$avatar-border-width
:
1px
;
// 标题文字样式
$title-size
:
16px
;
$title-color
:
#3b4144
;
$title-weight
:
normal
;
// 描述文字样式
$note-size
:
12px
;
$note-color
:
#999
;
$note-weight
:
normal
;
// 右侧额外内容默认样式
$right-text-size
:
12px
;
$right-text-color
:
#999
;
$right-text-weight
:
normal
;
// 角标样式
// nvue 页面不支持修改圆点位置以及大小
// 角标在左侧时,角标的位置,默认为 0 ,负数左/下移动,正数右/上移动
$badge-left
:
0px
;
$badge-top
:
0px
;
// 显示圆点时,圆点大小
$dot-width
:
10px
;
$dot-height
:
10px
;
// 显示角标时,角标大小和字体大小
$badge-size
:
18px
;
$badge-font
:
12px
;
// 显示角标时,角标前景色
$badge-color
:
#fff
;
// 显示角标时,角标背景色
$badge-background-color
:
#ff5a5f
;
// 显示角标时,角标左右间距
$badge-space
:
6px
;
// 状态样式
// 选中颜色
$hover
:
#f5f5f5
;
vedio/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue
0 → 100644
View file @
fb973720
<
template
>
<!-- #ifdef APP-NVUE -->
<cell>
<!-- #endif -->
<view
:hover-class=
"!clickable && !link ? '' : 'uni-list-chat--hover'"
class=
"uni-list-chat"
@
click
.
stop=
"onClick"
>
<view
:class=
"
{ 'uni-list--border': border, 'uni-list-chat--first': isFirstChild }">
</view>
<view
class=
"uni-list-chat__container"
>
<view
class=
"uni-list-chat__header-warp"
>
<view
v-if=
"avatarCircle || avatarList.length === 0"
class=
"uni-list-chat__header"
:class=
"
{ 'header--circle': avatarCircle }">
<image
class=
"uni-list-chat__header-image"
:class=
"
{ 'header--circle': avatarCircle }" :src="avatarUrl" mode="aspectFill">
</image>
</view>
<!-- 头像组 -->
<view
v-else
class=
"uni-list-chat__header"
>
<view
v-for=
"(item, index) in avatarList"
:key=
"index"
class=
"uni-list-chat__header-box"
:class=
"computedAvatar"
:style=
"
{ width: imageWidth + 'px', height: imageWidth + 'px' }">
<image
class=
"uni-list-chat__header-image"
:style=
"
{ width: imageWidth + 'px', height: imageWidth + 'px' }" :src="item.url"
mode="aspectFill">
</image>
</view>
</view>
</view>
<!-- #ifndef APP -->
<view
class=
"slot-header"
>
<!-- #endif -->
<slot
name=
"header"
></slot>
<!-- #ifndef APP -->
</view>
<!-- #endif -->
<view
v-if=
"badgeText && badgePositon === 'left'"
class=
"uni-list-chat__badge uni-list-chat__badge-pos"
:class=
"[isSingle]"
>
<text
class=
"uni-list-chat__badge-text"
>
{{
badgeText
===
'dot'
?
''
:
badgeText
}}
</text>
</view>
<view
class=
"uni-list-chat__content"
>
<view
class=
"uni-list-chat__content-main"
>
<text
class=
"uni-list-chat__content-title uni-ellipsis"
>
{{
title
}}
</text>
<view
style=
"flex-direction: row;"
>
<text
class=
"draft"
v-if=
"isDraft"
>
[草稿]
</text>
<text
class=
"uni-list-chat__content-note uni-ellipsis"
>
{{
isDraft
?
note
.
slice
(
14
):
note
}}
</text>
</view>
</view>
<view
class=
"uni-list-chat__content-extra"
>
<slot>
<text
class=
"uni-list-chat__content-extra-text"
>
{{
time
}}
</text>
<view
v-if=
"badgeText && badgePositon === 'right'"
class=
"uni-list-chat__badge"
:class=
"[isSingle, badgePositon === 'right' ? 'uni-list-chat--right' : '']"
>
<text
class=
"uni-list-chat__badge-text"
>
{{
badgeText
===
'dot'
?
''
:
badgeText
}}
</text>
</view>
</slot>
</view>
</view>
</view>
</view>
<!-- #ifdef APP-NVUE -->
</cell>
<!-- #endif -->
</
template
>
<
script
>
// 头像大小
const
avatarWidth
=
45
;
/**
* ListChat 聊天列表
* @description 聊天列表,用于创建聊天类列表
* @tutorial https://ext.dcloud.net.cn/plugin?id=24
* @property {String} title 标题
* @property {String} note 描述
* @property {Boolean} clickable = [true|false] 是否开启点击反馈,默认为false
* @property {String} badgeText 数字角标内容
* @property {String} badgePositon = [left|right] 角标位置,默认为 right
* @property {String} link = [false|navigateTo|redirectTo|reLaunch|switchTab] 是否展示右侧箭头并开启点击反馈,默认为false
* @value false 不开启
* @value navigateTo 同 uni.navigateTo()
* @value redirectTo 同 uni.redirectTo()
* @value reLaunch 同 uni.reLaunch()
* @value switchTab 同 uni.switchTab()
* @property {String | PageURIString} to 跳转目标页面
* @property {String} time 右侧时间显示
* @property {Boolean} avatarCircle = [true|false] 是否显示圆形头像,默认为false
* @property {String} avatar 头像地址,avatarCircle 不填时生效
* @property {Array} avatarList 头像组,格式为 [{url:''}]
* @event {Function} click 点击 uniListChat 触发事件
*/
export
default
{
name
:
'UniListChat'
,
emits
:[
'click'
],
props
:
{
title
:
{
type
:
String
,
default
:
''
},
note
:
{
type
:
String
,
default
:
''
},
clickable
:
{
type
:
Boolean
,
default
:
false
},
link
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
to
:
{
type
:
String
,
default
:
''
},
badgeText
:
{
type
:
[
String
,
Number
],
default
:
''
},
badgePositon
:
{
type
:
String
,
default
:
'right'
},
time
:
{
type
:
String
,
default
:
''
},
avatarCircle
:
{
type
:
Boolean
,
default
:
false
},
avatar
:
{
type
:
String
,
default
:
''
},
avatarList
:
{
type
:
Array
,
default
()
{
return
[];
}
}
},
// inject: ['list'],
computed
:
{
isDraft
(){
return
this
.
note
.
slice
(
0
,
14
)
==
'[uni-im-draft]'
},
isSingle
()
{
if
(
this
.
badgeText
===
'dot'
)
{
return
'uni-badge--dot'
;
}
else
{
const
badgeText
=
this
.
badgeText
.
toString
();
if
(
badgeText
.
length
>
1
)
{
return
'uni-badge--complex'
;
}
else
{
return
'uni-badge--single'
;
}
}
},
computedAvatar
()
{
if
(
this
.
avatarList
.
length
>
4
)
{
this
.
imageWidth
=
avatarWidth
*
0.31
;
return
'avatarItem--3'
;
}
else
if
(
this
.
avatarList
.
length
>
1
)
{
this
.
imageWidth
=
avatarWidth
*
0.47
;
return
'avatarItem--2'
;
}
else
{
this
.
imageWidth
=
avatarWidth
;
return
'avatarItem--1'
;
}
}
},
watch
:
{
avatar
:{
handler
(
avatar
)
{
if
(
avatar
.
substr
(
0
,
8
)
==
'cloud://'
){
uniCloud
.
getTempFileURL
({
fileList
:
[
avatar
]
}).
then
(
res
=>
{
// console.log(res);
// 兼容uniCloud私有化部署
let
fileList
=
res
.
fileList
||
res
.
result
.
fileList
this
.
avatarUrl
=
fileList
[
0
].
tempFileURL
})
}
else
{
this
.
avatarUrl
=
avatar
}
},
immediate
:
true
}
},
data
()
{
return
{
isFirstChild
:
false
,
border
:
true
,
// avatarList: 3,
imageWidth
:
50
,
avatarUrl
:
''
};
},
mounted
()
{
this
.
list
=
this
.
getForm
()
if
(
this
.
list
)
{
if
(
!
this
.
list
.
firstChildAppend
)
{
this
.
list
.
firstChildAppend
=
true
;
this
.
isFirstChild
=
true
;
}
this
.
border
=
this
.
list
.
border
;
}
},
methods
:
{
/**
* 获取父元素实例
*/
getForm
(
name
=
'uniList'
)
{
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
;
},
onClick
()
{
if
(
this
.
to
!==
''
)
{
this
.
openPage
();
return
;
}
if
(
this
.
clickable
||
this
.
link
)
{
this
.
$emit
(
'click'
,
{
data
:
{}
});
}
},
openPage
()
{
if
([
'navigateTo'
,
'redirectTo'
,
'reLaunch'
,
'switchTab'
].
indexOf
(
this
.
link
)
!==
-
1
)
{
this
.
pageApi
(
this
.
link
);
}
else
{
this
.
pageApi
(
'navigateTo'
);
}
},
pageApi
(
api
)
{
let
callback
=
{
url
:
this
.
to
,
success
:
res
=>
{
this
.
$emit
(
'click'
,
{
data
:
res
});
},
fail
:
err
=>
{
this
.
$emit
(
'click'
,
{
data
:
err
});
}
}
switch
(
api
)
{
case
'navigateTo'
:
uni
.
navigateTo
(
callback
)
break
case
'redirectTo'
:
uni
.
redirectTo
(
callback
)
break
case
'reLaunch'
:
uni
.
reLaunch
(
callback
)
break
case
'switchTab'
:
uni
.
switchTab
(
callback
)
break
default
:
uni
.
navigateTo
(
callback
)
}
}
}
};
</
script
>
<
style
lang=
"scss"
>
$uni-font-size-lg
:
16px
;
$uni-spacing-row-sm
:
5px
;
$uni-spacing-row-base
:
10px
;
$uni-spacing-row-lg
:
15px
;
$background-color
:
#fff
;
$divide-line-color
:
#e5e5e5
;
$avatar-width
:
45px
;
$avatar-border-radius
:
5px
;
$avatar-border-color
:
#eee
;
$avatar-border-width
:
1px
;
$title-size
:
16px
;
$title-color
:
#3b4144
;
$title-weight
:
normal
;
$note-size
:
12px
;
$note-color
:
#999
;
$note-weight
:
normal
;
$right-text-size
:
12px
;
$right-text-color
:
#999
;
$right-text-weight
:
normal
;
$badge-left
:
0px
;
$badge-top
:
0px
;
$dot-width
:
10px
;
$dot-height
:
10px
;
$badge-size
:
18px
;
$badge-font
:
12px
;
$badge-color
:
#fff
;
$badge-background-color
:
#ff5a5f
;
$badge-space
:
6px
;
$hover
:
#f5f5f5
;
.uni-list-chat
{
font-size
:
$uni-font-size-lg
;
position
:
relative
;
flex-direction
:
column
;
justify-content
:
space-between
;
background-color
:
$background-color
;
}
// .uni-list-chat--disabled {
// opacity: 0.3;
// }
.uni-list-chat--hover
{
background-color
:
$hover
;
}
.uni-list--border
{
position
:
relative
;
margin-left
:
$uni-spacing-row-lg
;
/* #ifdef APP-PLUS */
border-top-color
:
$divide-line-color
;
border-top-style
:
solid
;
border-top-width
:
0
.5px
;
/* #endif */
}
/* #ifndef APP-NVUE */
.uni-list--border
:after
{
position
:
absolute
;
top
:
0
;
right
:
0
;
left
:
0
;
height
:
1px
;
content
:
''
;
-webkit-transform
:
scaleY
(
0
.5
);
transform
:
scaleY
(
0
.5
);
background-color
:
$divide-line-color
;
}
.uni-list-item--first
:after
{
height
:
0px
;
}
/* #endif */
.uni-list-chat--first
{
border-top-width
:
0px
;
}
.uni-ellipsis
{
/* #ifndef APP-NVUE */
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
/* #endif */
/* #ifdef APP-NVUE */
lines
:
1
;
/* #endif */
}
.uni-ellipsis-2
{
/* #ifndef APP-NVUE */
overflow
:
hidden
;
text-overflow
:
ellipsis
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
2
;
-webkit-box-orient
:
vertical
;
/* #endif */
/* #ifdef APP-NVUE */
lines
:
2
;
/* #endif */
}
.uni-list-chat__container
{
position
:
relative
;
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
flex
:
1
;
padding
:
$uni-spacing-row-base
$uni-spacing-row-lg
;
position
:
relative
;
overflow
:
hidden
;
}
.uni-list-chat__header-warp
{
position
:
relative
;
}
.uni-list-chat__header
{
/* #ifndef APP-NVUE */
display
:
flex
;
align-content
:
center
;
/* #endif */
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
flex-wrap
:
wrap-reverse
;
/* #ifdef APP-NVUE */
width
:
50px
;
height
:
50px
;
/* #endif */
/* #ifndef APP-NVUE */
width
:
$avatar-width
;
height
:
$avatar-width
;
/* #endif */
border-radius
:
$avatar-border-radius
;
border-color
:
$avatar-border-color
;
border-width
:
$avatar-border-width
;
border-style
:
solid
;
overflow
:
hidden
;
}
.uni-list-chat__header-box
{
/* #ifndef APP-PLUS */
box-sizing
:
border-box
;
display
:
flex
;
width
:
$avatar-width
;
height
:
$avatar-width
;
/* #endif */
/* #ifdef APP-NVUE */
width
:
50px
;
height
:
50px
;
/* #endif */
overflow
:
hidden
;
border-radius
:
2px
;
}
.uni-list-chat__header-image
{
margin
:
1px
;
/* #ifdef APP-NVUE */
width
:
50px
;
height
:
50px
;
/* #endif */
/* #ifndef APP-NVUE */
width
:
$avatar-width
;
height
:
$avatar-width
;
/* #endif */
}
/* #ifndef APP-NVUE */
.uni-list-chat__header-image
{
display
:
block
;
width
:
100%
;
height
:
100%
;
}
.avatarItem--1
{
width
:
100%
;
height
:
100%
;
}
.avatarItem--2
{
width
:
47%
;
height
:
47%
;
}
.avatarItem--3
{
width
:
32%
;
height
:
32%
;
}
/* #endif */
.header--circle
{
border-radius
:
50%
;
}
.uni-list-chat__content
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
flex
:
1
;
overflow
:
hidden
;
padding
:
2px
0
;
}
.uni-list-chat__content-main
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
column
;
justify-content
:
space-between
;
padding-left
:
$uni-spacing-row-base
;
flex
:
1
;
overflow
:
hidden
;
}
.uni-list-chat__content-title
{
font-size
:
$title-size
;
color
:
$title-color
;
font-weight
:
$title-weight
;
overflow
:
hidden
;
}
.draft
,
.uni-list-chat__content-note
{
margin-top
:
3px
;
color
:
$note-color
;
font-size
:
$note-size
;
font-weight
:
$title-weight
;
overflow
:
hidden
;
}
.draft
{
color
:
#eb3a41
;
/* #ifndef APP-NVUE */
flex-shrink
:
0
;
/* #endif */
padding-right
:
3px
;
}
.uni-list-chat__content-extra
{
/* #ifndef APP-NVUE */
flex-shrink
:
0
;
display
:
flex
;
/* #endif */
flex-direction
:
column
;
justify-content
:
space-between
;
align-items
:
flex-end
;
margin-left
:
5px
;
}
.uni-list-chat__content-extra-text
{
color
:
$right-text-color
;
font-size
:
$right-text-size
;
font-weight
:
$right-text-weight
;
overflow
:
hidden
;
}
.uni-list-chat__badge-pos
{
position
:
absolute
;
/* #ifdef APP-NVUE */
left
:
55px
;
top
:
3px
;
/* #endif */
/* #ifndef APP-NVUE */
left
:
calc
(
#{
$avatar-width
}
+
10px
-
#{
$badge-space
}
+
#{
$badge-left
}
);
top
:
calc
(
#{
$uni-spacing-row-base
}
/
2
+
1px
+
#{
$badge-top
}
);
/* #endif */
}
.uni-list-chat__badge
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
justify-content
:
center
;
align-items
:
center
;
border-radius
:
100px
;
background-color
:
$badge-background-color
;
}
.uni-list-chat__badge-text
{
color
:
$badge-color
;
font-size
:
$badge-font
;
}
.uni-badge--single
{
/* #ifndef APP-NVUE */
// left: calc(#{$avatar-width} + 7px + #{$badge-left});
/* #endif */
width
:
$badge-size
;
height
:
$badge-size
;
}
.uni-badge--complex
{
/* #ifdef APP-NVUE */
left
:
50px
;
/* #endif */
/* #ifndef APP-NVUE */
width
:
auto
;
/* #endif */
height
:
$badge-size
;
padding
:
0
$badge-space
;
}
.uni-badge--dot
{
/* #ifdef APP-NVUE */
left
:
60px
;
top
:
6px
;
/* #endif */
/* #ifndef APP-NVUE */
left
:
calc
(
#{
$avatar-width
}
+
15px
-
#{
$dot-width
}
/
2
+
1px
+
#{
$badge-left
}
);
/* #endif */
width
:
$dot-width
;
height
:
$dot-height
;
padding
:
0
;
}
.uni-list-chat--right
{
/* #ifdef APP-NVUE */
left
:
0
;
/* #endif */
}
</
style
>
vedio/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue
0 → 100644
View file @
fb973720
<
template
>
<!-- #ifdef APP-NVUE -->
<cell
:keep-scroll-position=
"keepScrollPosition"
>
<!-- #endif -->
<view
:class=
"
{ 'uni-list-item--disabled': disabled }" :style="{'background-color':customStyle.backgroundColor}"
:hover-class="(!clickable
&&
!link) || disabled || showSwitch ? '' : 'uni-list-item--hover'"
class="uni-list-item" @click="onClick">
<view
v-if=
"!isFirstChild"
class=
"border--left"
:class=
"
{ 'uni-list--border': border }">
</view>
<view
class=
"uni-list-item__container"
:class=
"
{ 'container--right': showArrow || link, 'flex--direction': direction === 'column'}"
:style="{paddingTop:padding.top,paddingLeft:padding.left,paddingRight:padding.right,paddingBottom:padding.bottom}">
<slot
name=
"header"
>
<view
class=
"uni-list-item__header"
>
<view
v-if=
"thumb"
class=
"uni-list-item__icon"
>
<image
:src=
"thumb"
class=
"uni-list-item__icon-img"
:class=
"['uni-list--' + thumbSize]"
/>
</view>
<view
v-else-if=
"showExtraIcon"
class=
"uni-list-item__icon"
>
<uni-icons
:customPrefix=
"extraIcon.customPrefix"
:color=
"extraIcon.color"
:size=
"extraIcon.size"
:type=
"extraIcon.type"
/>
</view>
</view>
</slot>
<slot
name=
"body"
>
<view
class=
"uni-list-item__content"
:class=
"
{ 'uni-list-item__content--center': thumb || showExtraIcon || showBadge || showSwitch }">
<text
v-if=
"title"
class=
"uni-list-item__content-title"
:class=
"[ellipsis !== 0 && ellipsis
<
=
2
?
'
uni-ellipsis-
'
+
ellipsis
:
'']"
>
{{
title
}}
</text>
<text
v-if=
"note"
class=
"uni-list-item__content-note"
>
{{
note
}}
</text>
</view>
</slot>
<slot
name=
"footer"
>
<view
v-if=
"rightText || showBadge || showSwitch"
class=
"uni-list-item__extra"
:class=
"
{ 'flex--justify': direction === 'column' }">
<text
v-if=
"rightText"
class=
"uni-list-item__extra-text"
>
{{
rightText
}}
</text>
<uni-badge
v-if=
"showBadge"
:type=
"badgeType"
:text=
"badgeText"
:custom-style=
"badgeStyle"
/>
<switch
v-if=
"showSwitch"
:disabled=
"disabled"
:checked=
"switchChecked"
@
change=
"onSwitchChange"
/>
</view>
</slot>
</view>
<uni-icons
v-if=
"showArrow || link"
:size=
"16"
class=
"uni-icon-wrapper"
color=
"#bbb"
type=
"arrowright"
/>
</view>
<!-- #ifdef APP-NVUE -->
</cell>
<!-- #endif -->
</
template
>
<
script
>
/**
* ListItem 列表子组件
* @description 列表子组件
* @tutorial https://ext.dcloud.net.cn/plugin?id=24
* @property {String} title 标题
* @property {String} note 描述
* @property {String} thumb 左侧缩略图,若thumb有值,则不会显示扩展图标
* @property {String} thumbSize = [lg|base|sm] 略缩图大小
* @value lg 大图
* @value base 一般
* @value sm 小图
* @property {String} badgeText 数字角标内容
* @property {String} badgeType 数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21)
* @property {Object} badgeStyle 数字角标样式
* @property {String} rightText 右侧文字内容
* @property {Boolean} disabled = [true|false] 是否禁用
* @property {Boolean} clickable = [true|false] 是否开启点击反馈
* @property {String} link = [navigateTo|redirectTo|reLaunch|switchTab] 是否展示右侧箭头并开启点击反馈
* @value navigateTo 同 uni.navigateTo()
* @value redirectTo 同 uni.redirectTo()
* @value reLaunch 同 uni.reLaunch()
* @value switchTab 同 uni.switchTab()
* @property {String | PageURIString} to 跳转目标页面
* @property {Boolean} showBadge = [true|false] 是否显示数字角标
* @property {Boolean} showSwitch = [true|false] 是否显示Switch
* @property {Boolean} switchChecked = [true|false] Switch是否被选中
* @property {Boolean} showExtraIcon = [true|false] 左侧是否显示扩展图标
* @property {Object} extraIcon 扩展图标参数,格式为 {color: '#4cd964',size: '22',type: 'spinner'}
* @property {String} direction = [row|column] 排版方向
* @value row 水平排列
* @value column 垂直排列
* @event {Function} click 点击 uniListItem 触发事件
* @event {Function} switchChange 点击切换 Switch 时触发
*/
export
default
{
name
:
'UniListItem'
,
emits
:
[
'click'
,
'switchChange'
],
props
:
{
direction
:
{
type
:
String
,
default
:
'row'
},
title
:
{
type
:
String
,
default
:
''
},
note
:
{
type
:
String
,
default
:
''
},
ellipsis
:
{
type
:
[
Number
,
String
],
default
:
0
},
disabled
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
clickable
:
{
type
:
Boolean
,
default
:
false
},
showArrow
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
link
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
to
:
{
type
:
String
,
default
:
''
},
showBadge
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
showSwitch
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
switchChecked
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
badgeText
:
{
type
:
String
,
default
:
''
},
badgeType
:
{
type
:
String
,
default
:
'success'
},
badgeStyle
:
{
type
:
Object
,
default
()
{
return
{}
}
},
rightText
:
{
type
:
String
,
default
:
''
},
thumb
:
{
type
:
String
,
default
:
''
},
thumbSize
:
{
type
:
String
,
default
:
'base'
},
showExtraIcon
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
extraIcon
:
{
type
:
Object
,
default
()
{
return
{
type
:
''
,
color
:
'#000000'
,
size
:
20
,
customPrefix
:
''
};
}
},
border
:
{
type
:
Boolean
,
default
:
true
},
customStyle
:
{
type
:
Object
,
default
()
{
return
{
padding
:
''
,
backgroundColor
:
'#FFFFFF'
}
}
},
keepScrollPosition
:
{
type
:
Boolean
,
default
:
false
}
},
watch
:
{
'customStyle.padding'
:
{
handler
(
padding
)
{
if
(
typeof
padding
==
'number'
){
padding
+=
''
}
let
paddingArr
=
padding
.
split
(
' '
)
if
(
paddingArr
.
length
===
1
)
{
const
allPadding
=
paddingArr
[
0
]
this
.
padding
=
{
"top"
:
allPadding
,
"right"
:
allPadding
,
"bottom"
:
allPadding
,
"left"
:
allPadding
}
}
else
if
(
paddingArr
.
length
===
2
)
{
const
[
verticalPadding
,
horizontalPadding
]
=
paddingArr
;
this
.
padding
=
{
"top"
:
verticalPadding
,
"right"
:
horizontalPadding
,
"bottom"
:
verticalPadding
,
"left"
:
horizontalPadding
}
}
else
if
(
paddingArr
.
length
===
4
)
{
const
[
topPadding
,
rightPadding
,
bottomPadding
,
leftPadding
]
=
paddingArr
;
this
.
padding
=
{
"top"
:
topPadding
,
"right"
:
rightPadding
,
"bottom"
:
bottomPadding
,
"left"
:
leftPadding
}
}
},
immediate
:
true
}
},
// inject: ['list'],
data
()
{
return
{
isFirstChild
:
false
,
padding
:
{
top
:
""
,
right
:
""
,
bottom
:
""
,
left
:
""
}
};
},
mounted
()
{
this
.
list
=
this
.
getForm
()
// 判断是否存在 uni-list 组件
if
(
this
.
list
)
{
if
(
!
this
.
list
.
firstChildAppend
)
{
this
.
list
.
firstChildAppend
=
true
;
this
.
isFirstChild
=
true
;
}
}
},
methods
:
{
/**
* 获取父元素实例
*/
getForm
(
name
=
'uniList'
)
{
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
;
},
onClick
()
{
if
(
this
.
to
!==
''
)
{
this
.
openPage
();
return
;
}
if
(
this
.
clickable
||
this
.
link
)
{
this
.
$emit
(
'click'
,
{
data
:
{}
});
}
},
onSwitchChange
(
e
)
{
this
.
$emit
(
'switchChange'
,
e
.
detail
);
},
openPage
()
{
if
([
'navigateTo'
,
'redirectTo'
,
'reLaunch'
,
'switchTab'
].
indexOf
(
this
.
link
)
!==
-
1
)
{
this
.
pageApi
(
this
.
link
);
}
else
{
this
.
pageApi
(
'navigateTo'
);
}
},
pageApi
(
api
)
{
let
callback
=
{
url
:
this
.
to
,
success
:
res
=>
{
this
.
$emit
(
'click'
,
{
data
:
res
});
},
fail
:
err
=>
{
this
.
$emit
(
'click'
,
{
data
:
err
});
}
}
switch
(
api
)
{
case
'navigateTo'
:
uni
.
navigateTo
(
callback
)
break
case
'redirectTo'
:
uni
.
redirectTo
(
callback
)
break
case
'reLaunch'
:
uni
.
reLaunch
(
callback
)
break
case
'switchTab'
:
uni
.
switchTab
(
callback
)
break
default
:
uni
.
navigateTo
(
callback
)
}
}
}
};
</
script
>
<
style
lang=
"scss"
>
$uni-font-size-sm
:
12px
;
$uni-font-size-base
:
14px
;
$uni-font-size-lg
:
16px
;
$uni-spacing-col-lg
:
12px
;
$uni-spacing-row-lg
:
15px
;
$uni-img-size-sm
:
20px
;
$uni-img-size-base
:
26px
;
$uni-img-size-lg
:
40px
;
$uni-border-color
:
#e5e5e5
;
$uni-bg-color-hover
:
#f1f1f1
;
$uni-text-color-grey
:
#999
;
$list-item-pd
:
$uni-spacing-col-lg
$uni-spacing-row-lg
;
.uni-list-item
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
font-size
:
$uni-font-size-lg
;
position
:
relative
;
justify-content
:
space-between
;
align-items
:
center
;
background-color
:
#fff
;
flex-direction
:
row
;
/* #ifdef H5 */
cursor
:
pointer
;
/* #endif */
}
.uni-list-item--disabled
{
opacity
:
0
.3
;
}
.uni-list-item--hover
{
background-color
:
$uni-bg-color-hover
!
important
;
}
.uni-list-item__container
{
position
:
relative
;
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
padding
:
$list-item-pd
;
padding-left
:
$uni-spacing-row-lg
;
flex
:
1
;
overflow
:
hidden
;
// align-items: center;
}
.container--right
{
padding-right
:
0
;
}
// .border--left {
// margin-left: $uni-spacing-row-lg;
// }
.uni-list--border
{
position
:
absolute
;
top
:
0
;
right
:
0
;
left
:
0
;
/* #ifdef APP-NVUE */
border-top-color
:
$uni-border-color
;
border-top-style
:
solid
;
border-top-width
:
0
.5px
;
/* #endif */
}
/* #ifndef APP-NVUE */
.uni-list--border
:after
{
position
:
absolute
;
top
:
0
;
right
:
0
;
left
:
0
;
height
:
1px
;
content
:
''
;
-webkit-transform
:
scaleY
(
0
.5
);
transform
:
scaleY
(
0
.5
);
background-color
:
$uni-border-color
;
}
/* #endif */
.uni-list-item__content
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
padding-right
:
8px
;
flex
:
1
;
color
:
#3b4144
;
// overflow: hidden;
flex-direction
:
column
;
justify-content
:
space-between
;
overflow
:
hidden
;
}
.uni-list-item__content--center
{
justify-content
:
center
;
}
.uni-list-item__content-title
{
font-size
:
$uni-font-size-base
;
color
:
#3b4144
;
overflow
:
hidden
;
}
.uni-list-item__content-note
{
margin-top
:
6rpx
;
color
:
$uni-text-color-grey
;
font-size
:
$uni-font-size-sm
;
overflow
:
hidden
;
}
.uni-list-item__extra
{
// width: 25%;
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
justify-content
:
flex-end
;
align-items
:
center
;
}
.uni-list-item__header
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
align-items
:
center
;
}
.uni-list-item__icon
{
margin-right
:
18rpx
;
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
}
.uni-list-item__icon-img
{
/* #ifndef APP-NVUE */
display
:
block
;
/* #endif */
height
:
$uni-img-size-base
;
width
:
$uni-img-size-base
;
margin-right
:
10px
;
}
.uni-icon-wrapper
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
align-items
:
center
;
padding
:
0
10px
;
}
.flex--direction
{
flex-direction
:
column
;
/* #ifndef APP-NVUE */
align-items
:
initial
;
/* #endif */
}
.flex--justify
{
/* #ifndef APP-NVUE */
justify-content
:
initial
;
/* #endif */
}
.uni-list--lg
{
height
:
$uni-img-size-lg
;
width
:
$uni-img-size-lg
;
}
.uni-list--base
{
height
:
$uni-img-size-base
;
width
:
$uni-img-size-base
;
}
.uni-list--sm
{
height
:
$uni-img-size-sm
;
width
:
$uni-img-size-sm
;
}
.uni-list-item__extra-text
{
color
:
$uni-text-color-grey
;
font-size
:
$uni-font-size-sm
;
}
.uni-ellipsis-1
{
/* #ifndef APP-NVUE */
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
/* #endif */
/* #ifdef APP-NVUE */
lines
:
1
;
text-overflow
:
ellipsis
;
/* #endif */
}
.uni-ellipsis-2
{
/* #ifndef APP-NVUE */
overflow
:
hidden
;
text-overflow
:
ellipsis
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
2
;
-webkit-box-orient
:
vertical
;
/* #endif */
/* #ifdef APP-NVUE */
lines
:
2
;
text-overflow
:
ellipsis
;
/* #endif */
}
</
style
>
\ No newline at end of file
vedio/uni_modules/uni-list/components/uni-list/uni-list.vue
0 → 100644
View file @
fb973720
<
template
>
<!-- #ifndef APP-NVUE -->
<view
class=
"uni-list uni-border-top-bottom"
>
<view
v-if=
"border"
class=
"uni-list--border-top"
></view>
<slot
/>
<view
v-if=
"border"
class=
"uni-list--border-bottom"
></view>
</view>
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
<list
:bounce=
"false"
:scrollable=
"true"
show-scrollbar
:render-reverse=
"renderReverse"
@
scroll=
"scroll"
class=
"uni-list"
:class=
"
{ 'uni-list--border': border }" :enableBackToTop="enableBackToTop"
loadmoreoffset="15">
<slot
/>
</list>
<!-- #endif -->
</
template
>
<
script
>
/**
* List 列表
* @description 列表组件
* @tutorial https://ext.dcloud.net.cn/plugin?id=24
* @property {String} border = [true|false] 标题
*/
export
default
{
name
:
'uniList'
,
'mp-weixin'
:
{
options
:
{
multipleSlots
:
false
}
},
props
:
{
stackFromEnd
:{
type
:
Boolean
,
default
:
false
},
enableBackToTop
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
scrollY
:
{
type
:
[
Boolean
,
String
],
default
:
false
},
border
:
{
type
:
Boolean
,
default
:
true
},
renderReverse
:{
type
:
Boolean
,
default
:
false
}
},
// provide() {
// return {
// list: this
// };
// },
created
()
{
this
.
firstChildAppend
=
false
;
},
methods
:
{
loadMore
(
e
)
{
this
.
$emit
(
'scrolltolower'
);
},
scroll
(
e
)
{
this
.
$emit
(
'scroll'
,
e
);
}
}
};
</
script
>
<
style
lang=
"scss"
>
$uni-bg-color
:
#ffffff
;
$uni-border-color
:
#e5e5e5
;
.uni-list
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
background-color
:
$uni-bg-color
;
position
:
relative
;
flex-direction
:
column
;
}
.uni-list--border
{
position
:
relative
;
/* #ifdef APP-NVUE */
border-top-color
:
$uni-border-color
;
border-top-style
:
solid
;
border-top-width
:
0
.5px
;
border-bottom-color
:
$uni-border-color
;
border-bottom-style
:
solid
;
border-bottom-width
:
0
.5px
;
/* #endif */
z-index
:
-1
;
}
/* #ifndef APP-NVUE */
.uni-list--border-top
{
position
:
absolute
;
top
:
0
;
right
:
0
;
left
:
0
;
height
:
1px
;
-webkit-transform
:
scaleY
(
0
.5
);
transform
:
scaleY
(
0
.5
);
background-color
:
$uni-border-color
;
z-index
:
1
;
}
.uni-list--border-bottom
{
position
:
absolute
;
bottom
:
0
;
right
:
0
;
left
:
0
;
height
:
1px
;
-webkit-transform
:
scaleY
(
0
.5
);
transform
:
scaleY
(
0
.5
);
background-color
:
$uni-border-color
;
}
/* #endif */
</
style
>
vedio/uni_modules/uni-list/components/uni-list/uni-refresh.vue
0 → 100644
View file @
fb973720
<
template
>
<!-- #ifdef APP-NVUE -->
<refresh
:display=
"display"
@
refresh=
"onrefresh"
@
pullingdown=
"onpullingdown"
>
<slot
/>
</refresh>
<!-- #endif -->
<!-- #ifndef APP-NVUE -->
<view
ref=
"uni-refresh"
class=
"uni-refresh"
v-show=
"isShow"
>
<slot
/>
</view>
<!-- #endif -->
</
template
>
<
script
>
export
default
{
name
:
'UniRefresh'
,
props
:
{
display
:
{
type
:
[
String
],
default
:
"hide"
}
},
data
()
{
return
{
pulling
:
false
}
},
computed
:
{
isShow
()
{
if
(
this
.
display
===
"show"
||
this
.
pulling
===
true
)
{
return
true
;
}
return
false
;
}
},
created
()
{},
methods
:
{
onchange
(
value
)
{
this
.
pulling
=
value
;
},
onrefresh
(
e
)
{
this
.
$emit
(
"refresh"
,
e
);
},
onpullingdown
(
e
)
{
// #ifdef APP-NVUE
this
.
$emit
(
"pullingdown"
,
e
);
// #endif
// #ifndef APP-NVUE
var
detail
=
{
viewHeight
:
90
,
pullingDistance
:
e
.
height
}
this
.
$emit
(
"pullingdown"
,
detail
);
// #endif
}
}
}
</
script
>
<
style
>
.uni-refresh
{
height
:
0
;
overflow
:
hidden
;
}
</
style
>
vedio/uni_modules/uni-list/components/uni-list/uni-refresh.wxs
0 → 100644
View file @
fb973720
var pullDown = {
threshold: 95,
maxHeight: 200,
callRefresh: 'onrefresh',
callPullingDown: 'onpullingdown',
refreshSelector: '.uni-refresh'
};
function ready(newValue, oldValue, ownerInstance, instance) {
var state = instance.getState()
state.canPullDown = newValue;
// console.log(newValue);
}
function touchStart(e, instance) {
var state = instance.getState();
state.refreshInstance = instance.selectComponent(pullDown.refreshSelector);
state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined);
if (!state.canPullDown) {
return
}
// console.log("touchStart");
state.height = 0;
state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY;
state.refreshInstance.setStyle({
'height': 0
});
state.refreshInstance.callMethod("onchange", true);
}
function touchMove(e, ownerInstance) {
var instance = e.instance;
var state = instance.getState();
if (!state.canPullDown) {
return
}
var oldHeight = state.height;
var endY = e.touches[0].pageY || e.changedTouches[0].pageY;
var height = endY - state.touchStartY;
if (height > pullDown.maxHeight) {
return;
}
var refreshInstance = state.refreshInstance;
refreshInstance.setStyle({
'height': height + 'px'
});
height = height < pullDown.maxHeight ? height : pullDown.maxHeight;
state.height = height;
refreshInstance.callMethod(pullDown.callPullingDown, {
height: height
});
}
function touchEnd(e, ownerInstance) {
var state = e.instance.getState();
if (!state.canPullDown) {
return
}
state.refreshInstance.callMethod("onchange", false);
var refreshInstance = state.refreshInstance;
if (state.height > pullDown.threshold) {
refreshInstance.callMethod(pullDown.callRefresh);
return;
}
refreshInstance.setStyle({
'height': 0
});
}
function propObserver(newValue, oldValue, instance) {
pullDown = newValue;
}
module.exports = {
touchmove: touchMove,
touchstart: touchStart,
touchend: touchEnd,
propObserver: propObserver
}
vedio/uni_modules/uni-list/package.json
0 → 100644
View file @
fb973720
{
"id"
:
"uni-list"
,
"displayName"
:
"uni-list 列表"
,
"version"
:
"1.2.14"
,
"description"
:
"List 组件 ,帮助使用者快速构建列表。"
,
"keywords"
:
[
""
,
"uni-ui"
,
"uniui"
,
"列表"
,
""
,
"list"
],
"repository"
:
"https://github.com/dcloudio/uni-ui"
,
"engines"
:
{
"HBuilderX"
:
""
},
"directories"
:
{
"example"
:
"../../temps/example_temps"
},
"dcloudext"
:
{
"sale"
:
{
"regular"
:
{
"price"
:
"0.00"
},
"sourcecode"
:
{
"price"
:
"0.00"
}
},
"contact"
:
{
"qq"
:
""
},
"declaration"
:
{
"ads"
:
"无"
,
"data"
:
"无"
,
"permissions"
:
"无"
},
"npmurl"
:
"https://www.npmjs.com/package/@dcloudio/uni-ui"
,
"type"
:
"component-vue"
},
"uni_modules"
:
{
"dependencies"
:
[
"uni-badge"
,
"uni-icons"
],
"encrypt"
:
[],
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
},
"client"
:
{
"App"
:
{
"app-vue"
:
"y"
,
"app-nvue"
:
"y"
},
"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"
},
"快应用"
:
{
"华为"
:
"u"
,
"联盟"
:
"u"
},
"Vue"
:
{
"vue2"
:
"y"
,
"vue3"
:
"y"
}
}
}
}
}
\ No newline at end of file
vedio/uni_modules/uni-load-more/changelog.md
0 → 100644
View file @
fb973720
## 1.3.3(2022-01-20)
-
新增 showText属性 ,是否显示文本
## 1.3.2(2022-01-19)
-
修复 nvue 平台下不显示文本的bug
## 1.3.1(2022-01-19)
-
修复 微信小程序平台样式选择器报警告的问题
## 1.3.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-load-more
](
https://uniapp.dcloud.io/component/uniui/uni-load-more
)
## 1.2.1(2021-08-24)
-
新增 支持国际化
## 1.2.0(2021-07-30)
-
组件兼容 vue3,如何创建vue3项目,详见
[
uni-app 项目支持 vue3 介绍
](
https://ask.dcloud.net.cn/article/37834
)
## 1.1.8(2021-05-12)
-
新增 组件示例地址
## 1.1.7(2021-03-30)
-
修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug
## 1.1.6(2021-02-05)
-
调整为uni_modules目录规范
vedio/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
0 → 100644
View file @
fb973720
{
"uni-load-more.contentdown"
:
"Pull up to show more"
,
"uni-load-more.contentrefresh"
:
"loading..."
,
"uni-load-more.contentnomore"
:
"No more data"
}
vedio/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
0 → 100644
View file @
fb973720
import
en
from
'./en.json'
import
zhHans
from
'./zh-Hans.json'
import
zhHant
from
'./zh-Hant.json'
export
default
{
en
,
'zh-Hans'
:
zhHans
,
'zh-Hant'
:
zhHant
}
vedio/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
0 → 100644
View file @
fb973720
{
"uni-load-more.contentdown"
:
"上拉显示更多"
,
"uni-load-more.contentrefresh"
:
"正在加载..."
,
"uni-load-more.contentnomore"
:
"没有更多数据了"
}
vedio/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
0 → 100644
View file @
fb973720
{
"uni-load-more.contentdown"
:
"上拉顯示更多"
,
"uni-load-more.contentrefresh"
:
"正在加載..."
,
"uni-load-more.contentnomore"
:
"沒有更多數據了"
}
vedio/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
0 → 100644
View file @
fb973720
<
template
>
<view
class=
"uni-load-more"
@
click=
"onClick"
>
<!-- #ifdef APP-NVUE -->
<loading-indicator
v-if=
"!webviewHide && status === 'loading' && showIcon"
:style=
"
{color: color,width:iconSize+'px',height:iconSize+'px'}" :animating="true"
class="uni-load-more__img uni-load-more__img--nvue">
</loading-indicator>
<!-- #endif -->
<!-- #ifdef H5 -->
<svg
width=
"24"
height=
"24"
viewBox=
"25 25 50 50"
v-if=
"!webviewHide && (iconType==='circle' || iconType==='auto' && platform === 'android') && status === 'loading' && showIcon"
:style=
"
{width:iconSize+'px',height:iconSize+'px'}"
class="uni-load-more__img uni-load-more__img--android-H5">
<circle
cx=
"50"
cy=
"50"
r=
"20"
fill=
"none"
:style=
"
{color:color}" :stroke-width="3">
</circle>
</svg>
<!-- #endif -->
<!-- #ifndef APP-NVUE || H5 -->
<view
v-if=
"!webviewHide && (iconType==='circle' || iconType==='auto' && platform === 'android') && status === 'loading' && showIcon"
:style=
"
{width:iconSize+'px',height:iconSize+'px'}"
class="uni-load-more__img uni-load-more__img--android-MP">
<view
class=
"uni-load-more__img-icon"
:style=
"
{borderTopColor:color,borderTopWidth:iconSize/12}">
</view>
<view
class=
"uni-load-more__img-icon"
:style=
"
{borderTopColor:color,borderTopWidth:iconSize/12}">
</view>
<view
class=
"uni-load-more__img-icon"
:style=
"
{borderTopColor:color,borderTopWidth:iconSize/12}">
</view>
</view>
<!-- #endif -->
<!-- #ifndef APP-NVUE -->
<view
v-else-if=
"!webviewHide && status === 'loading' && showIcon"
:style=
"
{width:iconSize+'px',height:iconSize+'px'}" class="uni-load-more__img uni-load-more__img--ios-H5">
<image
:src=
"imgBase64"
mode=
"widthFix"
></image>
</view>
<!-- #endif -->
<text
v-if=
"showText"
class=
"uni-load-more__text"
:style=
"
{color: color}">
{{
status
===
'more'
?
contentdownText
:
status
===
'loading'
?
contentrefreshText
:
contentnomoreText
}}
</text>
</view>
</
template
>
<
script
>
let
platform
setTimeout
(()
=>
{
platform
=
uni
.
getSystemInfoSync
().
platform
},
16
)
import
{
initVueI18n
}
from
'@dcloudio/uni-i18n'
import
messages
from
'./i18n/index.js'
const
{
t
}
=
initVueI18n
(
messages
)
/**
* LoadMore 加载更多
* @description 用于列表中,做滚动加载使用,展示 loading 的各种状态
* @tutorial https://ext.dcloud.net.cn/plugin?id=29
* @property {String} status = [more|loading|noMore] loading 的状态
* @value more loading前
* @value loading loading中
* @value noMore 没有更多了
* @property {Number} iconSize 指定图标大小
* @property {Boolean} iconSize = [true|false] 是否显示 loading 图标
* @property {String} iconType = [snow|circle|auto] 指定图标样式
* @value snow ios雪花加载样式
* @value circle 安卓唤醒加载样式
* @value auto 根据平台自动选择加载样式
* @property {String} color 图标和文字颜色
* @property {Object} contentText 各状态文字说明,值为:{contentdown: "上拉显示更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}
* @event {Function} clickLoadMore 点击加载更多时触发
*/
export
default
{
name
:
'UniLoadMore'
,
emits
:
[
'clickLoadMore'
],
props
:
{
status
:
{
// 上拉的状态:more-loading前;loading-loading中;noMore-没有更多了
type
:
String
,
default
:
'more'
},
showIcon
:
{
type
:
Boolean
,
default
:
true
},
iconType
:
{
type
:
String
,
default
:
'auto'
},
iconSize
:
{
type
:
Number
,
default
:
24
},
color
:
{
type
:
String
,
default
:
'#777777'
},
contentText
:
{
type
:
Object
,
default
()
{
return
{
contentdown
:
''
,
contentrefresh
:
''
,
contentnomore
:
''
}
}
},
showText
:
{
type
:
Boolean
,
default
:
true
}
},
data
()
{
return
{
webviewHide
:
false
,
platform
:
platform
,
imgBase64
:
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzlBMzU3OTlEOUM0MTFFOUI0NTZDNERBQURBQzI4RkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzlBMzU3OUFEOUM0MTFFOUI0NTZDNERBQURBQzI4RkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDOUEzNTc5N0Q5QzQxMUU5QjQ1NkM0REFBREFDMjhGRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDOUEzNTc5OEQ5QzQxMUU5QjQ1NkM0REFBREFDMjhGRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pt+ALSwAAA6CSURBVHja1FsLkFZVHb98LM+F5bHL8khA1iSeiyQBCRM+YGqKUnnJTDLGI0BGZlKDIU2MMglUiDApEZvSsZnQtBRJtKwQNKQMFYeRDR10WOLd8ljYXdh+v8v5fR3Od+797t1dnOnO/Ofce77z+J//+b/P+ZqtXbs2sJ9MJhNUV1cHJ06cCJo3bx7EPc2aNcvpy7pWrVoF+/fvDyoqKoI2bdoE9fX1F7TjN8a+EXBn/fkfvw942Tf+wYMHg9mzZwfjxo0LDhw4EPa1x2MbFw/fOGfPng1qa2tzcCkILsLDydq2bRsunpOTMM7TD/W/tZDZhPdeKD+yGxHhdu3aBV27dg3OnDlzMVANMheLAO3btw8KCwuDmpoaX5OxbgUIMEq7K8IcPnw4KCsrC/r37x8cP378/4cAXAB3vqSkJMuiDhTkw+XcuXNhOWbMmKBly5YhUT8xArhyFvP0BfwRsAuwxJZJsm/nzp2DTp06he/OU+cZ64K6o0ePBkOHDg2GDx8e6gEbJ5Q/NHNuAJQ1hgBeHUDlR7nVTkY8rQAvAi4z34vR/mPs1FoRsaCgIJThI0eOBC1atEiFGGV+5MiRoS45efJkqFjJFXV1dQuA012m2WcwTw98fy6CqBdsaiIO4CScrGPHjvk4odhavPquRtFWXEC25VgkREKOCh/qDSq+vn37htzD/mZTOmOc5U7zKzBPEedygWshcDyWvs30igAbU+6oyMgJBCFhwQE0fccxN60Ay9iebbjoDh06hMowjQxT4fXq1SskArmHZpkArvixp/kWzHdMeArExSJEaiXIjjRjRJ4DaAGWpibLzXN3Fm1vA5teBgh3j1Rv3bp1YgKwPdmf2p9zcyNYYgPKMfY0T5f5nNYdw158nJ8QawW4CLKwiOBSEgO/hok2eBydR+3dYH+PLxA5J8Vv0KBBwenTp0P2JWAx6+yFEBfs8lMY+y0SWMBNI9E4ThKi58VKTg3FQZS1RQF1cz27eC0QHMu+3E0SkUowjhVt5VdaWhp07949ZHv2Qd1EjDXM2cla1M0nl3GxAs3J9yREzyTdFVKVFOaE9qRA8GM0WebRuo9JGZKA7Mv2SeS/Z8+eoQ9BArMfFrLGo6jvxbhHbJZnKX2Rzz1O7QhJJ9Cs2ZMaWIyq/zhdeqPNfIoHd58clIQD+JSXl4dKlyIAuBdVXZwFVWKspSSoxE++h8x4k3uCnEhE4I5KwRiFWGOU0QWKiCYLbdoRMRKAu2kQ9vkfLU6dOhX06NEjlH+yMRZSinnuyWnYosVcji8CEA/6Cg2JF+IIUBqnGKUTCNwtwBN4f89RiK1R96DEgO2o0NDmtEdvVFdVVYV+P3UAPUEs6GFwV3PHmXkD4vh74iDFJysVI/MlaQhwKeBNTLYX5VuA8T4/gZxA4MRGFxDB6R7OmYPfyykGRJbyie+XnGYnQIC/coH9+vULiYrxrkL9ZA9+0ykaHIfEpM7ge8TiJ2CsHYwyMfafAF1yCGBHYIbCVDjDjKt7BeB51D+LgQa6OkG7IDYEEtvQ7lnXLKLtLdLuJBpE4gPUXcW2+PkZwOex+4cGDhwYDBkyRL7/HFcEwUGPo/8uWRUpYnfxGHco8HkewLHLyYmAawAPuIFZxhOpDfJQ8gbUv41yORAptMWBNr6oqMhWird5+u+iHmBb2nhjDV7HWBNQTgK8y11l5NetWzc5ULscAtSj7nbNI0skhWeUZCc0W4nyH/jO4Vz0u1IeYhbk4AiwM6tjxIWByHsoZ9qcIBPJd/y+DwPfBESOmCa/QF3WiZHucLlEDpNxcNhmheEOPgdQNx6/VZFQzFZ5TN08AHXQt2Ii3EdyFuUsPtTcGPhW5iMiCNELvz+Gdn9huG4HUJaW/w3g0wxV0XaG7arG2WeKiUWYM4Y7GO5ezshTARbbWGw/DvXkpp/ivVvE0JVoMxN4rpGzJMhE5Pl+xlATsDIqikP9F9D2z3h9nOksEUFhK+qO4rcPkoalMQ/HqJLIyb3F3JdjrCcw1yZ8joyJLR5gCo54etlag7qIoeNh1N1BRYj3DTFJ0elotxPlVzkGuYAmL0VSJVGAJA41c4Z6A3BzTLfn0HYwYKEI6CUAMzZEWvLsIcQOo1AmmyyM72nHJCfYsogflGV6jEk9vyQZXSuq6w4c16NsGcGZbwOPr+H1RkOk2LEzjNepxQkihHSCQ4ynAYNRx2zMKV92CQMWqj8J0BRE8EShxRFN6YrfCRhC0x3r/Zm4IbQCcmJoV0kMamllccR6FjHqUC5F2R/wS2dcymOlfAKOS4KmzQb5cpNC2MC7JhVn5wjXoJ44rYhLh8n0eXOCorJxa7POjbSlCGVczr34/RsAmrcvo9s+wGp3tzVhntxiXiJ4nvEYb4FJkf0O8HocAePmLvCxnL0AORraVekJk6TYjDabRVXfRE2lCN1h6ZQRN1+InUbsCpKwoBZHh0dODN9JBCUffItXxEavTQkUtnfTVAplCWL3JISz29h4NjotnuSsQKJCk8dF+kJR6RARjrqFVmfPnj3ZbK8cIJ0msd6jgHPGtfVTQ8VLmlvh4mct9sobRmPic0DyDQQnx/NlfYUgyz59+oScsH379pAwXABD32nTpoUHIToESeI5mnbE/UqDdyLcafEBf2MCqgC7NwxIbMREJQ0g4D4sfJwnD+AmRrII05cfMWJE+L1169bQr+fip06dGp4oJ83lmYd5wj/EmMa4TaHivo4EeCguYZBnkB5g2aWA69OIEnUHOaGysjIYMGBAMGnSpODYsWPZwCpFmm4lNq+4gSLQA7jcX8DwtjEyRC8wjabnXEx9kfWnTJkSJkAo90xpJVV+FmcVNeYAF5zWngS4C4O91MBxmAv8blLEpbjI5sz9MTdAhcgkCT1RO8mZkAjfiYpTEvStAS53Uw1vAiUGgZ3GpuQEYvoiBqlIan7kSDHnTwJQFNiPu0+5VxCVYhcZIjNrdXUDdp+Eq5AZ3Gkg8QAyVZRZIk4Tl4QAbF9cXJxNYZMAtAokgs4BrNxEpCtteXg7DDTMDKYNSuQdKsnJBek7HxewvxaosWxLYXtw+cJp18217wql4aKCfBNoEu0O5VU+PhctJ0YeXD4C6JQpyrlpSLTojpGGGN5YwNziChdIZLk4lvLcFJ9jMX3QdiImY9bmGQU+TRUL5CHITTRlgF8D9ouD1MfmLoEPl5xokIumZ2cfgMpHt47IW9N64Hsh7wQYYjyIugWuF5fCqYncXRd5vPMWyizzvhi/32+nvG0dZc9vR6fZOu0md5e+uC408FvKSIOZwXlGvxPv95izA2Vtvg1xKFWARI+vMX66HUhpQQb643uW1bSjuTWyw2SBvDrBvjFic1eGGlz5esq3ko9uSIlBRqPuFcCv8F4WIcN12nVaBd0SaYwI6PDDImR11JkqgHcPmQssjxIn6bUshygDFJUTxPMpHk+jfjPgupgdnYV2R/g7xSjtpah8RJBewhwf0gGK6XI92u4wXFEU40afJ4DN4h5LcAd+40HI3JgJecuT0c062W0i2hQJUTcxan3/CMW1PF2K6bbA+Daz4xRs1D3Br1Cm0OihKCqizW78/nXAF/G5TXrEcVzaNMH6CyMswqsAHqDyDLEyou8lwOXnKF8DjI6KjV3KzMBiXkDH8ij/H214J5A596ekrZ3F0zXlWeL7+P5eUrNo3/QwC15uxthuzidy7DzKRwEDaAViiDgKbTbz7CJnzo0bN7pIfIiid8SuPwn25o3QCmpnyjlZkyxPP8EomCJzrGb7GJMx7tNsq4MT2xMUYaiErZOluTzKsnz3gwCeCZyVRZJfYplNEokEjwrPtxlxjeYAk+F1F74VAzPxQRNYYdtpOUvWs8J1sGhBJMNsb7igN8plJs1eSmLIhLKE4rvaCX27gOhLpLOsIzJ7qn/i+wZzcvSOZ23/du8TZjwV8zHIXoP4R3ifBxiFz1dcVpa3aPntPE+c6TmIWE9EtcMmAcPdWAhYhAXxcLOQi9L1WhD1Sc8p1d2oL7XGiRKp8F4A2i8K/nfI+y/gsTDJ/YC/8+AD5Uh04KHiGl+cIFPnBDDrPMjwRGkLXyxO4VGbfQWnDH2v0bVWE3C9QOXlepbgjEfIJQI6XDG3z5ahD9cw2pS78ipB85wyScNTvsVzlzzhL8/jRrnmVjfFJK/m3m4nj9vbgQTguT8XZTjsm672R5uJKEaQmBI/c58gyus8ZDagLpEVSJBIyHp4jn++xqPV71OgQgJYEWOtZ/haxRtKmWOBu8xdBLftWltsY84zE6WIEy/eIOWL+BaayMx+KHtL7EAkqdNDLiEXmEMUHniedtJqg9HmZtfvt26vNi0BdG3Ft3g8ZOf7PAu59TxtzivLNIekyi+wD1i8CuUiD9FXAa8C+/xS3JPmZnomyc7H+fb4/Se0bk41Fel621r4cgVxbq91V4jVqwB7HTe2M7jgB+QWHavZkDRPmZcASoZEmBx6i75bGjPcMdL4/VKGFAGWZkGzPG0XAbdL9A81G5LOmUnC9hHKJeO7dcUMjblSl12867ElFTtaGl20xvvLGPdVz/8TVuU7y0x1PG7vtNg24oz9Uo/Z412++VFWI7Fcog9tu9Lm6gvRmIPv9x1xmQAu6RDkXtbOtlGEmpgD5Nvnyc0dcv0EE6cfdi1HmhMf9wDF3k3gtRvEedhxjpgfqPb9PU9iEJHnyOUA7bQUXh6kq/D7l2iTjWv7XOD530BDr8jIrus+srXjt4MzumJMHuTsBa63YKE1+RR5lBjEikCCnWKWiHdzOgKO+nRIBAF88za/IFmJ3eMZov4CYxGBabcpGL8EYx+SeMXJeRwHNsV/h+vdxeuhEpN3ZyNY78Gm2fknJxVGhyjixPiQvVkNzT1elD9Py/aTAL64Hb9vcYmC9zfdXdT/C1LeGbg4rnBaAihDFJH12W5ulfNCNe/xTsP3bp8ikzJs5BF+5PNfAQYAPaseTdsEcaYAAAAASUVORK5CYII='
}
},
computed
:
{
iconSnowWidth
()
{
return
(
Math
.
floor
(
this
.
iconSize
/
24
)
||
1
)
*
2
},
contentdownText
()
{
return
this
.
contentText
.
contentdown
||
t
(
"uni-load-more.contentdown"
)
},
contentrefreshText
()
{
return
this
.
contentText
.
contentrefresh
||
t
(
"uni-load-more.contentrefresh"
)
},
contentnomoreText
()
{
return
this
.
contentText
.
contentnomore
||
t
(
"uni-load-more.contentnomore"
)
}
},
mounted
()
{
// #ifdef APP-PLUS
var
pages
=
getCurrentPages
();
var
page
=
pages
[
pages
.
length
-
1
];
var
currentWebview
=
page
.
$getAppWebview
();
currentWebview
.
addEventListener
(
'hide'
,
()
=>
{
this
.
webviewHide
=
true
})
currentWebview
.
addEventListener
(
'show'
,
()
=>
{
this
.
webviewHide
=
false
})
// #endif
},
methods
:
{
onClick
()
{
this
.
$emit
(
'clickLoadMore'
,
{
detail
:
{
status
:
this
.
status
,
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
>
.uni-load-more
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
height
:
40px
;
align-items
:
center
;
justify-content
:
center
;
}
.uni-load-more__text
{
font-size
:
14px
;
margin-left
:
8px
;
}
.uni-load-more__img
{
width
:
24px
;
height
:
24px
;
// margin-right: 8px;
}
.uni-load-more__img--nvue
{
color
:
#666666
;
}
.uni-load-more__img--android
,
.uni-load-more__img--ios
{
width
:
24px
;
height
:
24px
;
transform
:
rotate
(
0deg
);
}
/* #ifndef APP-NVUE */
.uni-load-more__img--android
{
animation
:
loading-ios
1s
0s
linear
infinite
;
}
@keyframes
loading-android
{
0
%
{
transform
:
rotate
(
0deg
);
}
100
%
{
transform
:
rotate
(
360deg
);
}
}
.uni-load-more__img--ios-H5
{
position
:
relative
;
animation
:
loading-ios-H5
1s
0s
step-end
infinite
;
}
.uni-load-more__img--ios-H5
image
{
position
:
absolute
;
width
:
100%
;
height
:
100%
;
left
:
0
;
top
:
0
;
}
@keyframes
loading-ios-H5
{
0
%
{
transform
:
rotate
(
0deg
);
}
8
%
{
transform
:
rotate
(
30deg
);
}
16
%
{
transform
:
rotate
(
60deg
);
}
24
%
{
transform
:
rotate
(
90deg
);
}
32
%
{
transform
:
rotate
(
120deg
);
}
40
%
{
transform
:
rotate
(
150deg
);
}
48
%
{
transform
:
rotate
(
180deg
);
}
56
%
{
transform
:
rotate
(
210deg
);
}
64
%
{
transform
:
rotate
(
240deg
);
}
73
%
{
transform
:
rotate
(
270deg
);
}
82
%
{
transform
:
rotate
(
300deg
);
}
91
%
{
transform
:
rotate
(
330deg
);
}
100
%
{
transform
:
rotate
(
360deg
);
}
}
/* #endif */
/* #ifdef H5 */
.uni-load-more__img--android-H5
{
animation
:
loading-android-H5-rotate
2s
linear
infinite
;
transform-origin
:
center
center
;
}
.uni-load-more__img--android-H5
circle
{
display
:
inline-block
;
animation
:
loading-android-H5-dash
1
.5s
ease-in-out
infinite
;
stroke
:
currentColor
;
stroke-linecap
:
round
;
}
@keyframes
loading-android-H5-rotate
{
0
%
{
transform
:
rotate
(
0deg
);
}
100
%
{
transform
:
rotate
(
360deg
);
}
}
@keyframes
loading-android-H5-dash
{
0
%
{
stroke-dasharray
:
1
,
200
;
stroke-dashoffset
:
0
;
}
50
%
{
stroke-dasharray
:
90
,
150
;
stroke-dashoffset
:
-40
;
}
100
%
{
stroke-dasharray
:
90
,
150
;
stroke-dashoffset
:
-120
;
}
}
/* #endif */
/* #ifndef APP-NVUE || H5 */
.uni-load-more__img--android-MP
{
position
:
relative
;
width
:
24px
;
height
:
24px
;
transform
:
rotate
(
0deg
);
animation
:
loading-ios
1s
0s
ease
infinite
;
}
.uni-load-more__img--android-MP
.uni-load-more__img-icon
{
position
:
absolute
;
box-sizing
:
border-box
;
width
:
100%
;
height
:
100%
;
border-radius
:
50%
;
border
:
solid
2px
transparent
;
border-top
:
solid
2px
#777777
;
transform-origin
:
center
;
}
.uni-load-more__img--android-MP
.uni-load-more__img-icon
:nth-child
(
1
)
{
animation
:
loading-android-MP-1
1s
0s
linear
infinite
;
}
.uni-load-more__img--android-MP
.uni-load-more__img-icon
:nth-child
(
2
)
{
animation
:
loading-android-MP-2
1s
0s
linear
infinite
;
}
.uni-load-more__img--android-MP
.uni-load-more__img-icon
:nth-child
(
3
)
{
animation
:
loading-android-MP-3
1s
0s
linear
infinite
;
}
@keyframes
loading-android
{
0
%
{
transform
:
rotate
(
0deg
);
}
100
%
{
transform
:
rotate
(
360deg
);
}
}
@keyframes
loading-android-MP-1
{
0
%
{
transform
:
rotate
(
0deg
);
}
50
%
{
transform
:
rotate
(
90deg
);
}
100
%
{
transform
:
rotate
(
360deg
);
}
}
@keyframes
loading-android-MP-2
{
0
%
{
transform
:
rotate
(
0deg
);
}
50
%
{
transform
:
rotate
(
180deg
);
}
100
%
{
transform
:
rotate
(
360deg
);
}
}
@keyframes
loading-android-MP-3
{
0
%
{
transform
:
rotate
(
0deg
);
}
50
%
{
transform
:
rotate
(
270deg
);
}
100
%
{
transform
:
rotate
(
360deg
);
}
}
/* #endif */
</
style
>
vedio/uni_modules/uni-load-more/package.json
0 → 100644
View file @
fb973720
{
"id"
:
"uni-load-more"
,
"displayName"
:
"uni-load-more 加载更多"
,
"version"
:
"1.3.3"
,
"description"
:
"LoadMore 组件,常用在列表里面,做滚动加载使用。"
,
"keywords"
:
[
"uni-ui"
,
"uniui"
,
"加载更多"
,
"load-more"
],
"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"
],
"encrypt"
:
[],
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
},
"client"
:
{
"App"
:
{
"app-vue"
:
"y"
,
"app-nvue"
:
"y"
},
"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"
},
"快应用"
:
{
"华为"
:
"u"
,
"联盟"
:
"u"
},
"Vue"
:
{
"vue2"
:
"y"
,
"vue3"
:
"y"
}
}
}
}
}
\ No newline at end of file
vedio/uni_modules/yingbing-flip/changelog.md
0 → 100644
View file @
fb973720
## 1.0.4(2023-09-02)
*
解决插槽中有scroll-view等滚动组件时滑动报错的问题
## 1.0.3(2023-08-23)
*
解决APP-NVUE端resetLoading不生效的问题
## 1.0.2(2023-07-25)
*
解决竖直翻页时,点击上下2侧翻页不准确得问题
## 1.0.1(2023-07-24)
*
解决APP-NVUE无法点击左右2侧翻页得问题
## 1.0.0(2023-07-22)
*
第一次更新
vedio/uni_modules/yingbing-flip/components/modules/flip.wxs
0 → 100644
View file @
fb973720
function touchstart (event, ins) {
var state = ins.getState()
if ( state.isTouch || state.disableTouch ) {
return
}
state.isTouch = true
state.touchTime = 0
state.interval = true
setInterval(ins)
var touch = event.touches[0]
state.startX = touch.pageX
state.startY = touch.pageY
}
function touchmove (event, ins) {
var state = ins.getState()
if ( state.isTouch && !state.disableTouch ) {
var touch = event.touches[0]
state.offset = state.vertical ? touch.pageY - state.startY : touch.pageX - state.startX;
if (state.direction) {
var rect = ins.getBoundingClientRect()
var size = state.vertical ? rect.height : rect.width
state.offset = state.direction == 'next' ? state.offset + state.sliderFault : state.offset - state.sliderFault
if ( (state.offset > 0 && state.direction == 'next') || (state.offset < 0 && state.direction == 'prev') ) {
state.offset = 0
}
if ( Math.abs(state.offset) <= size ) {
animation(state.offset, 0, ins)
}
} else {
if ( Math.abs(state.offset) < state.sliderFault ) {
return
}
if ( state.offset < 0 ) {
if ( state.nextIndex < state.count && state.nextIndex != 0 ) {
if ( state.type != 'none' ) {state.direction = 'next'}
} else if ( state.pullupable && state.loadingState != 'loading' && state.loadingState != 'success' && state.loadingState != 'fail' ) {
state.loadingType = 'pullup'
state.offset = state.offset + state.sliderFault
pulling(state.offset, ins)
}
} else {
if ( state.prevIndex >= 0 && state.prevIndex != state.count - 1 ) {
if ( state.type != 'none' ) {state.direction = 'prev'}
} else if ( state.pulldownable && state.loadingState != 'loading' && state.loadingState != 'success' && state.loadingState != 'fail' ) {
state.loadingType = 'pulldown'
state.offset = state.offset - state.sliderFault
pulling(state.offset, ins)
}
}
}
}
}
function touchend (event, ins) {
touchaction(event, ins)
}
function touchcancel (event, ins) {
touchaction(event, ins)
}
function touchaction (event, ins,isFlipTo) {
var state = ins.getState()
clearInterval(ins)
if ( state.isTouch && !state.disableTouch ) {
var rect = ins.getBoundingClientRect()
var size = state.vertical ? rect.height : rect.width
var start = state.vertical ? state.startY : state.startX
if ( !state.direction && state.touchTime <= 200 && (!state.unableClickPage || state.type == 'none') && !isFlipTo ) {
//获取点击位置,判断向哪里翻页
if (start > (size / 4) * 3 && state.nextIndex < state.count && state.nextIndex != 0 ) {
state.direction = 'next'
}
if (start < (size / 4) && state.prevIndex >= 0 && state.prevIndex != state.count - 1 ) {
state.direction = 'prev'
}
}
if (state.direction) {
state.disableTouch = true
if (state.touchTime <= 200) {
var duration = state.type == 'none' ? 0 : state.duration;
var value = state.direction == 'next' ? 1 : -1;
animation(-value * size, duration, ins);
ins.setTimeout(function () {
resetShadow(ins, true)
ins.callMethod('handleFlipChange', value);
}, duration + 50)
} else {
var duration = state.type == 'none' ? 0 : state.duration;
if (Math.abs(state.offset) >= size / 4) {
var value = state.direction == 'next' ? 1 : -1;
animation(-value * size, duration, ins);
ins.setTimeout(function () {
resetShadow(ins, true)
ins.callMethod('handleFlipChange', value);
}, duration + 50)
} else {
animation(0, duration, ins);
ins.setTimeout(function () {
resetShadow(ins)
resetFlip(ins);
}, duration + 50)
}
}
} else if ( state.loadingState == 'default' ) {
resetPulling(ins)
} else if ( state.loadingState == 'ready' ) {
pullingRefresh(ins)
} else {
resetShadow(ins, false)
resetFlip(ins)
}
}
}
function propWatcher (newVal, oldVal, ins) {
ins.setTimeout(function () {
var state = ins.getState()
state.vertical = newVal.vertical
state.pulldownable = newVal.pulldownable
state.pullupable = newVal.pullupable
state.pulldownHeight = newVal.pulldownHeight
state.loadingState = newVal.loadingState
state.pullupHeight = newVal.pullupHeight
state.duration = newVal.duration
state.nextIndex = newVal.nextIndex
state.prevIndex = newVal.prevIndex
state.currentIndex = newVal.currentIndex
state.sliderFault = newVal.sliderFault
state.count = newVal.count
state.type = newVal.type
state.unableClickPage = newVal.unableClickPage
state.translate = newVal.translate
if ( oldVal && newVal.currentIndex != oldVal.currentIndex ) {
resetFlip(ins);
}
if ( oldVal && newVal.loadingState != oldVal.loadingState && state.loadingState ) {
resetPulling(ins)
ins.callMethod('resetLoading')
}
if (oldVal && newVal.flipTo != oldVal.flipTo && newVal.flipTo != 0 ) {
if ( !state.disableTouch ) {
if ( newVal.flipTo < 0 && state.prevIndex >= 0 && (state.prevIndex != state.count - 1) ) {
state.isTouch = true
state.touchTime = 0
state.direction = 'prev'
touchaction(null, ins, true)
}
if ( newVal.flipTo > 0 && state.nextIndex < state.count && state.nextIndex != 0 ) {
state.isTouch = true
state.touchTime = 0
state.direction = 'next'
touchaction(null, ins, true)
}
}
}
}, 100)
}
function setInterval (ins) {
var state = ins.getState()
state.touchTimer = ins.setTimeout(function () {
state.touchTime += 10
if ( state.interval ) {
setInterval(ins)
}
}, 10)
}
function clearInterval (ins) {
var state = ins.getState()
state.interval = false
if ( state.touchTimer ) {
ins.clearTimeout(state.touchTimer)
state.touchTimer = null
}
}
function resetShadow (ins, isChange) {
var state = ins.getState()
var direction = state.direction
if ( !direction ) {
return
}
var index = direction == 'next' ? state.currentIndex : state.prevIndex
var translate = state.translate
var rect = ins.getBoundingClientRect()
var size = state.vertical ? rect.height : rect.width;
var draw = function () {
ins.selectComponent('.yingbing-flip-item_' + index).setStyle({
'box-shadow': '',
transform: translate + '(' + (isChange ? (direction == 'next'? -size : 0) : (direction == 'next'? 0 : -size)) + 'px)',
transition: ''
})
if ( state.type == 'real' ) {
ins.selectComponent('.yingbing-flip-item-bg_' + index).setStyle({
'box-shadow': '',
transform: translate + '(' + (isChange ? (direction == 'next' ? 0 : size) : (direction == 'next' ? size : 0)) + 'px)',
transition: ''
})
}
ins.selectComponent('.yingbing-flip-item-shadow_' + index).setStyle({
'box-shadow': '',
transition: ''
})
}
ins.requestAnimationFrame(draw)
}
function resetFlip (ins) {
var state = ins.getState()
state.direction = null
state.isTouch = false
state.disableTouch = false
state.offset = 0
state.touchTime = 0
state.startX = 0
state.startY = 0
}
function animation (offset, duration, ins, noshadow) {
var state = ins.getState()
var rect = ins.getBoundingClientRect()
var size = state.vertical ? rect.height : rect.width
var translate = state.translate
var late = offset
var draw = function () {
if ( state.direction == 'prev' ) {
if ( state.prevIndex >= 0 ) {
ins.selectComponent('.yingbing-flip-item_' + state.prevIndex).setStyle({
transform: translate + '(' + (late - size) + 'px)',
'box-shadow': noshadow ? '' : state.type == 'real' ? '0 0 30px 20px rgba(0,0,0,0.4)' : state.type == 'cover' ? '0 0 10px 5px rgba(0,0,0,0.3)' : '',
transition: duration > 0 ? 'transform ' + duration + 'ms' : ''
})
if ( state.type == 'real' ) {
ins.selectComponent('.yingbing-flip-item-content_' + state.prevIndex).setStyle({
transform: translate + '(' + (size-late) + 'px)',
transition: duration > 0 ? 'transform ' + duration + 'ms' : ''
})
ins.selectComponent('.yingbing-flip-item-bg_' + state.prevIndex).setStyle({
transform: translate + '(' + (late) + 'px)',
'box-shadow': noshadow ? '' : '-5px 0 20px rgba(0,0,0,0.1)',
transition: duration > 0 ? 'transform ' + duration + 'ms, ' + 'boxShadow ' + duration + 'ms' : ''
})
ins.selectComponent('.yingbing-flip-item-shadow_' + state.prevIndex).setStyle({
'box-shadow': noshadow ? '' : '0 0 60px 30px rgba(0,0,0,0.4)',
transition: duration > 0 ? 'boxShadow ' + duration + 'ms' : ''
})
}
}
} else {
if ( state.nextIndex < state.count ) {
ins.selectComponent('.yingbing-flip-item_' + state.nextIndex).setStyle({
transform: translate + '(0)',
transition: ''
})
}
ins.selectComponent('.yingbing-flip-item_' + state.currentIndex).setStyle({
transform: translate + '(' + late + 'px)',
'box-shadow': noshadow ? '' : state.type == 'real' ? '0 0 30px 20px rgba(0,0,0,0.4)' : state.type == 'cover' ? '0 0 10px 5px rgba(0,0,0,0.3)' : '',
transition: duration > 0 ? 'transform ' + duration + 'ms' : ''
})
if ( state.type == 'real' ) {
ins.selectComponent('.yingbing-flip-item-content_' + state.currentIndex).setStyle({
transform: translate + '(' + (-late) + 'px)',
transition: duration > 0 ? 'transform ' + duration + 'ms' : ''
})
ins.selectComponent('.yingbing-flip-item-bg_' + state.currentIndex).setStyle({
transform: translate + '(' + (late + size) + 'px)',
'box-shadow': noshadow ? '' : '-5px 0 20px rgba(0,0,0,0.1)',
transition: duration > 0 ? 'transform ' + duration + 'ms, ' + 'boxShadow ' + duration + 'ms' : ''
})
ins.selectComponent('.yingbing-flip-item-shadow_' + state.currentIndex).setStyle({
'box-shadow': noshadow ? '' : '0 0 60px 30px rgba(0,0,0,0.4)',
transition: duration > 0 ? 'boxShadow ' + duration + 'ms' : ''
})
}
}
}
ins.requestAnimationFrame(draw)
}
function pulling (offset, ins) {
var state = ins.getState()
var loadingType = state.loadingType
var translate = state.translate
var size = loadingType == 'pullup' ? state.pullupHeight : state.pulldownHeight
var late = offset
if ( Math.abs(state.offset) < size ) {
state.loadingState = 'default'
} else {
state.loadingState = 'ready'
}
var draw = function () {
var pullingItems = ins.selectAllComponents('.yingbing-flip-' + loadingType + '-item')
for ( var i = 0; i < pullingItems.length; i++ ) {
if ( pullingItems[i].hasClass('yingbing-flip-' + loadingType + '-' + state.loadingState) ) {
pullingItems[i].setStyle({
visibility: 'visible'
})
} else {
pullingItems[i].setStyle({
visibility: 'hidden'
})
}
}
if ( Math.abs(late) <= size ) {
ins.selectComponent('.yingbing-flip-' + loadingType).setStyle({
transform: translate + '(' + (loadingType == 'pullup' ? late + size : late - size) + 'px)',
transition: ''
})
}
}
ins.requestAnimationFrame(draw)
}
function resetPulling (ins) {
var state = ins.getState()
var loadingType = state.loadingType
var translate = state.translate
var size = loadingType == 'pullup' ? state.pullupHeight : state.pulldownHeight
var draw = function () {
var pullingItems = ins.selectAllComponents('.yingbing-flip-' + loadingType + '-item')
for ( var i = 0; i < pullingItems.length; i++ ) {
if ( pullingItems[i].hasClass('yingbing-flip-' + loadingType + '-' + state.loadingState) ) {
pullingItems[i].setStyle({
visibility: 'visible'
})
} else {
pullingItems[i].setStyle({
visibility: 'hidden'
})
}
}
ins.selectComponent('.yingbing-flip-' + loadingType).setStyle({
transform: translate + '(' + (loadingType == 'pullup' ? size : -size) + 'px)',
transition: 'transform .3s'
})
}
ins.requestAnimationFrame(draw)
if ( state.loadingState ) {
ins.setTimeout( function () {
state.loadingState = ''
resetPulling(ins)
}, 300)
} else {
state.loadingType = ''
resetFlip(ins)
}
}
function pullingRefresh (ins) {
var state = ins.getState()
state.loadingState = 'loading'
var loadingType = state.loadingType
var draw = function () {
var pullingItems = ins.selectAllComponents('.yingbing-flip-' + loadingType + '-item')
for ( var i = 0; i < pullingItems.length; i++ ) {
if ( pullingItems[i].hasClass('yingbing-flip-' + loadingType + '-loading') ) {
pullingItems[i].setStyle({
visibility: 'visible'
})
} else {
pullingItems[i].setStyle({
visibility: 'hidden'
})
}
}
}
ins.requestAnimationFrame(draw)
ins.callMethod('pullingRefresh', state.loadingType)
}
module.exports = {
touchstart: touchstart,
touchmove: touchmove,
touchend: touchend,
touchcancel: touchcancel,
propWatcher: propWatcher
}
\ No newline at end of file
vedio/uni_modules/yingbing-flip/components/modules/flip_bindingx.js
0 → 100644
View file @
fb973720
const
Binding
=
uni
.
requireNativePlugin
(
'bindingx'
)
const
animation
=
uni
.
requireNativePlugin
(
'animation'
)
const
dom
=
uni
.
requireNativePlugin
(
'dom'
)
import
Util
from
'../../js_sdk/util.js'
export
default
{
data
()
{
return
{
disableTouch
:
false
,
isTouch
:
false
,
touchTime
:
0
,
interval
:
false
,
loadingType
:
''
,
direction
:
''
}
},
beforeDestroy
()
{
if
(
this
.
flipBinding
)
{
Binding
.
unbind
({
token
:
this
.
flipBinding
.
token
,
eventType
:
'pan'
})
this
.
sliderBinding
=
null
}
this
.
resetFlipAnimationBinding
()
},
methods
:
{
fliptouchstart
(
event
)
{
if
(
this
.
isTouch
||
this
.
disableTouch
)
{
return
}
this
.
isTouch
=
true
this
.
touchTime
=
0
this
.
interval
=
true
this
.
setInterval
()
let
touch
=
event
.
touches
[
0
]
this
.
startX
=
touch
.
pageX
this
.
startY
=
touch
.
pageY
},
fliptouchmove
(
event
)
{
if
(
this
.
isTouch
&&
!
this
.
disableTouch
)
{
let
touch
=
event
.
touches
[
0
]
let
offset
=
this
.
vertical
?
touch
.
pageY
-
this
.
startY
:
touch
.
pageX
-
this
.
startX
if
(
!
this
.
direction
)
{
if
(
Math
.
abs
(
offset
)
<
this
.
sliderFault
)
return
if
(
offset
<
0
)
{
if
(
this
.
nextIndex
<
this
.
count
&&
this
.
nextIndex
!=
0
)
{
if
(
this
.
type
!=
'none'
)
{
this
.
direction
=
'next'
}
}
else
if
(
this
.
pullupable
&&
this
.
loadingState
!=
'loading'
&&
this
.
loadingState
!=
'success'
&&
this
.
loadingState
!=
'fail'
)
{
this
.
loadingType
=
'pullup'
this
.
disableTouch
=
true
this
.
clearInterval
()
this
.
pulling
()
}
}
else
{
if
(
this
.
prevIndex
>
-
1
&&
this
.
prevIndex
!=
this
.
count
-
1
)
{
if
(
this
.
type
!=
'none'
)
{
this
.
direction
=
'prev'
}
}
else
if
(
this
.
pulldownable
&&
this
.
loadingState
!=
'loading'
&&
this
.
loadingState
!=
'success'
&&
this
.
loadingState
!=
'fail'
)
{
this
.
loadingType
=
'pulldown'
this
.
disableTouch
=
true
this
.
clearInterval
()
this
.
pulling
()
}
}
}
if
(
this
.
direction
)
{
this
.
disableTouch
=
true
this
.
flipTouchAction
()
}
else
{
this
.
resetPageBinding
()
}
}
},
async
fliptouchend
(
e
)
{
if
(
this
.
isTouch
&&
!
this
.
disableTouch
)
{
let
rect
=
await
this
.
getRect
(
this
.
$refs
.
yingbingFlip
)
let
size
=
this
.
vertical
?
rect
.
height
:
rect
.
width
this
.
clearInterval
()
let
start
=
this
.
vertical
?
this
.
startY
:
this
.
startX
if
(
this
.
touchTime
<=
200
&&
(
!
this
.
unableClickPage
||
this
.
type
==
'none'
)
)
{
if
(
start
>
(
size
/
4
)
*
3
&&
this
.
nextIndex
<
this
.
count
&&
this
.
nextIndex
!=
0
)
{
this
.
flipToNextBindingX
()
}
else
if
(
start
<
(
size
/
4
)
&&
this
.
prevIndex
>=
0
&&
this
.
prevIndex
!=
this
.
count
-
1
)
{
this
.
flipToPrevBindingX
()
}
else
{
this
.
resetPageBinding
()
}
}
else
{
this
.
resetPageBinding
()
}
}
},
async
flipTouchAction
()
{
let
props
=
[]
let
rect
=
await
this
.
getRect
(
this
.
$refs
.
yingbingFlip
)
let
size
=
this
.
vertical
?
rect
.
height
:
rect
.
width
let
translate
=
this
.
translate
let
shadowProperty
=
this
.
vertical
?
'height'
:
'width'
let
key
=
this
.
vertical
?
'y'
:
'x'
if
(
this
.
direction
==
'prev'
)
{
if
(
this
.
prevIndex
>
-
1
)
{
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItem_'
+
this
.
prevIndex
),
property
:
'transform.'
+
translate
,
expression
:
`
${
key
}
< 0 ?
${
-
size
}
: (
${
key
}
>
${
size
}
? 0 :
${
key
}
-
${
size
}
)`
})
if
(
this
.
type
==
'real'
)
{
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemContent_'
+
this
.
prevIndex
),
property
:
'transform.'
+
translate
,
expression
:
`
${
key
}
< 0 ?
${
size
}
: (
${
key
}
>
${
size
}
? 0 :
${
size
}
-
${
key
}
)`
})
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemBg_'
+
this
.
prevIndex
),
property
:
'transform.'
+
translate
,
expression
:
`
${
key
}
< 0 ? 0 : (
${
key
}
>
${
size
}
?
${
size
}
:
${
key
}
+ 0)`
})
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemShadow_'
+
this
.
prevIndex
),
property
:
shadowProperty
,
expression
:
`
${
size
}
/ 2 - abs(
${
key
}
) / 2'`
})
}
}
}
else
{
if
(
this
.
nextIndex
<
this
.
count
)
{
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItem_'
+
this
.
nextIndex
),
property
:
'transform.'
+
translate
,
expression
:
'0+0'
})
}
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItem_'
+
this
.
currentIndex
),
property
:
'transform.'
+
translate
,
expression
:
`
${
key
}
> 0 ? 0 : (
${
key
}
<
${
-
size
}
?
${
-
size
}
:
${
key
}
+ 0)`
})
if
(
this
.
type
==
'real'
)
{
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemContent_'
+
this
.
currentIndex
),
property
:
'transform.'
+
translate
,
expression
:
`
${
key
}
> 0 ? 0 : (
${
key
}
<
${
-
size
}
?
${
size
}
: 0 -
${
key
}
)'`
})
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemBg_'
+
this
.
currentIndex
),
property
:
'transform.'
+
translate
,
expression
:
`
${
key
}
> 0 ?
${
size
}
: (
${
key
}
<
${
-
size
}
? 0 :
${
key
}
+
${
size
}
)`
})
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemShadow_'
+
this
.
currentIndex
),
property
:
shadowProperty
,
expression
:
`abs(
${
key
}
)/2+0`
})
}
}
this
.
flipBinding
=
Binding
.
bind
({
anchor
:
this
.
getEl
(
'yingbingFlip'
),
eventType
:
'pan'
,
props
:
props
},
(
e
)
=>
{
if
((
e
.
state
==
'end'
||
e
.
state
==
'cancel'
)
&&
this
.
flipBinding
)
{
this
.
clearInterval
()
Binding
.
unbind
({
token
:
this
.
flipBinding
.
token
,
eventType
:
'pan'
})
this
.
flipBinding
=
null
let
value
=
this
.
direction
==
'next'
?
1
:
-
1
;
if
(
this
.
touchTime
<=
200
)
{
this
.
pageAnimation
(
-
value
*
size
,
size
);
}
else
{
let
index
=
this
.
direction
==
'next'
?
this
.
currentIndex
:
this
.
prevIndex
let
deltaX
=
Binding
.
getComputedStyle
(
this
.
getEl
(
'yingbingFlipItem_'
+
index
))[
translate
]
let
offset
=
this
.
direction
==
'next'
?
Math
.
abs
(
deltaX
)
:
size
-
Math
.
abs
(
deltaX
)
if
(
offset
>=
size
/
4
)
{
this
.
pageAnimation
(
-
value
*
size
,
size
)
}
else
{
this
.
pageAnimation
(
0
,
size
);
}
}
}
})
},
flipToNextBindingX
()
{
if
(
!
this
.
disableTouch
&&
this
.
nextIndex
<
this
.
count
&&
(
this
.
nextIndex
!=
0
||
this
.
circular
)
)
{
this
.
direction
=
'next'
this
.
flipToBindingX
()
}
},
flipToPrevBindingX
()
{
if
(
!
this
.
disableTouch
&&
this
.
prevIndex
>=
0
&&
(
this
.
prevIndex
!=
this
.
count
-
1
||
this
.
circular
)
)
{
this
.
direction
=
'prev'
this
.
flipToBindingX
()
}
},
async
flipToBindingX
()
{
this
.
disableTouch
=
true
let
value
=
this
.
direction
==
'next'
?
1
:
-
1
;
let
rect
=
await
this
.
getRect
(
this
.
$refs
.
yingbingFlip
)
let
size
=
this
.
vertical
?
rect
.
height
:
rect
.
width
this
.
pageAnimation
(
-
value
*
size
,
size
)
},
getRect
(
el
)
{
return
new
Promise
(
resolve
=>
{
dom
.
getComponentRect
(
el
,
res
=>
{
resolve
(
res
.
size
)
})
})
},
setInterval
()
{
this
.
touchTimer
=
setTimeout
(()
=>
{
this
.
touchTime
+=
10
if
(
this
.
interval
)
{
this
.
setInterval
()
}
},
10
)
},
clearInterval
()
{
this
.
interval
=
false
if
(
this
.
touchTimer
)
{
clearTimeout
(
this
.
touchTimer
)
this
.
touchTimer
=
null
}
},
pageAnimation
(
offset
,
size
)
{
let
duration
=
this
.
type
==
'none'
?
0.1
:
this
.
duration
let
late
=
offset
let
translate
=
this
.
translate
let
shadowProperty
=
this
.
vertical
?
'height'
:
'width'
let
props
=
[]
if
(
this
.
direction
==
'prev'
)
{
if
(
this
.
prevIndex
>
-
1
)
{
let
itemTrans
=
Binding
.
getComputedStyle
(
this
.
getEl
(
'yingbingFlipItem_'
+
this
.
prevIndex
))[
translate
]
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItem_'
+
this
.
prevIndex
),
property
:
'transform.'
+
translate
,
expression
:
`linear(t,
${
itemTrans
}
,
${
late
-
size
-
itemTrans
}
,
${
duration
}
)`
})
if
(
this
.
type
==
'real'
)
{
let
contentTrans
=
Binding
.
getComputedStyle
(
this
.
getEl
(
'yingbingFlipItemContent_'
+
this
.
prevIndex
))[
translate
]
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemContent_'
+
this
.
prevIndex
),
property
:
'transform.'
+
translate
,
expression
:
`linear(t,
${
contentTrans
}
,
${
-
(
late
-
size
)
-
contentTrans
}
,
${
duration
}
)`
})
let
bgTrans
=
Binding
.
getComputedStyle
(
this
.
getEl
(
'yingbingFlipItemBg_'
+
this
.
prevIndex
))[
translate
]
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemBg_'
+
this
.
prevIndex
),
property
:
'transform.'
+
translate
,
expression
:
`linear(t,
${
bgTrans
}
,
${
late
-
bgTrans
}
,
${
duration
}
)`
})
let
shadowSize
=
Binding
.
getComputedStyle
(
this
.
getEl
(
'yingbingFlipItemShadow_'
+
this
.
prevIndex
))[
shadowProperty
]
||
size
props
.
push
({
element
:
this
.
getEl
(
'yingbingFlipItemShadow_'
+
this
.
prevIndex
),
property
:
shadowProperty
,
expression
:
`linear(t,
${
shadowSize
}
,
${
-
(
late
-
size
)
-
shadowSize
}
,
${
duration
}
)`
})
}
this
.
flipAnimationBinding
=
Binding
.
bind
({
eventType
:
'timing'
,
exitExpression
:
't>'
+
duration
,
props
:
props
},
(
e
)
=>
{
if
(
e
.
state
==
'exit'
&&
this
.
flipAnimationBinding
&&
e
.
t
>
duration
)
{
Binding
.
unbind
({
token
:
this
.
flipAnimationBinding
.
token
,
eventType
:
'timing'
})
this
.
flipAnimationBinding
=
null
if
(
Math
.
abs
(
offset
)
>
0
)
{
this
.
handleFlipChange
(
this
.
direction
==
'next'
?
1
:
-
1
)
this
.
$nextTick
(
function
()
{
this
.
resetPageBinding
()
})
}
else
{
this
.
resetPageBinding
();
}
}
})
}
}
else
{
if
(
this
.
nextIndex
<
this
.
count
)
{
animation
.
transition
(
this
.
getRef
(
'yingbingFlipItem_'
+
this
.
nextIndex
),
{
styles
:
{
transform
:
`
${
translate
}
(0)`
},
duration
:
0
,
timingFunction
:
'linear'
,
needLayout
:
true
})
}
animation
.
transition
(
this
.
getRef
(
'yingbingFlipItem_'
+
this
.
currentIndex
),
{
styles
:
{
transform
:
`
${
translate
}
(
${
late
}
px)`
},
duration
:
duration
,
timingFunction
:
'linear'
,
needLayout
:
true
},
()
=>
{
if
(
Math
.
abs
(
offset
)
>
0
)
{
this
.
handleFlipChange
(
this
.
direction
==
'next'
?
1
:
-
1
)
this
.
$nextTick
(
function
()
{
this
.
resetPageBinding
()
})
}
else
{
this
.
resetPageBinding
();
}
})
if
(
this
.
type
==
'real'
)
{
animation
.
transition
(
this
.
getRef
(
'yingbingFlipItemContent_'
+
this
.
currentIndex
),
{
styles
:
{
transform
:
`
${
translate
}
(
${
-
late
}
px)`
},
duration
:
duration
,
timingFunction
:
'linear'
,
needLayout
:
true
})
animation
.
transition
(
this
.
getRef
(
'yingbingFlipItemBg_'
+
this
.
currentIndex
),
{
styles
:
{
transform
:
`
${
translate
}
(
${
size
+
late
}
px)`
},
duration
:
duration
,
timingFunction
:
'linear'
,
needLayout
:
true
})
let
styles
=
{}
styles
[
shadowProperty
]
=
-
late
+
'px'
animation
.
transition
(
this
.
getRef
(
'yingbingFlipItemShadow_'
+
this
.
currentIndex
),
{
styles
:
styles
,
duration
:
duration
,
timingFunction
:
'linear'
,
needLayout
:
true
})
}
// if ( this.nextIndex < this.count ) {
// props.push({
// element: this.getEl('yingbingFlipItem_' + this.nextIndex),
// property: 'transform.' + translate,
// expression: '0+0'
// })
// }
// let itemTrans = Binding.getComputedStyle(this.getEl('yingbingFlipItem_' + this.currentIndex))[translate]
// props.push({
// element: this.getEl('yingbingFlipItem_' + this.currentIndex),
// property: 'transform.' + translate,
// expression: `linear(t, ${itemTrans}, ${late - itemTrans}, ${duration})`
// })
// if ( this.type == 'real' ) {
// let contentTrans = Binding.getComputedStyle(this.getEl('yingbingFlipItemContent_' + this.currentIndex))[translate]
// props.push({
// element: this.getEl('yingbingFlipItemContent_' + this.currentIndex),
// property: 'transform.' + translate,
// expression: `linear(t, ${contentTrans}, ${-late - contentTrans}, ${duration})`
// })
// let bgTrans = Binding.getComputedStyle(this.getEl('yingbingFlipItemBg_' + this.currentIndex))[translate]
// props.push({
// element: this.getEl('yingbingFlipItemBg_' + this.currentIndex),
// property: 'transform.' + translate,
// expression: `linear(t, ${bgTrans}, ${size + late - bgTrans}, ${duration})`
// })
// let shadowSize = Binding.getComputedStyle(this.getEl('yingbingFlipItemShadow_' + this.currentIndex))[shadowProperty]
// props.push({
// element: this.getEl('yingbingFlipItemShadow_' + this.currentIndex),
// property: shadowProperty,
// expression: `linear(t, ${shadowSize}, ${-late - shadowSize}, ${duration})`
// })
// }
}
},
pulling
()
{
let
loadingType
=
this
.
loadingType
let
size
=
loadingType
==
'pullup'
?
this
.
pullupHeight
:
this
.
pulldownHeight
let
key
=
this
.
vertical
?
'y'
:
'x'
let
translate
=
this
.
translate
let
props
=
[
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
),
property
:
'transform.'
+
translate
,
expression
:
loadingType
==
'pullup'
?
`abs(
${
key
}
) >
${
size
}
? 0 :
${
key
}
+
${
size
}
`
:
`abs(
${
key
}
) >
${
size
}
? 0 :
${
key
}
-
${
size
}
`
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_default'
),
property
:
'opacity'
,
expression
:
`abs(
${
key
}
) <
${
size
}
? 1 : 0`
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_ready'
),
property
:
'opacity'
,
expression
:
`abs(
${
key
}
) <
${
size
}
? 0 : 1`
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_loading'
),
property
:
'opacity'
,
expression
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_success'
),
property
:
'opacity'
,
expression
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_fail'
),
property
:
'opacity'
,
expression
:
'0+0'
}
]
this
.
flipBinding
=
Binding
.
bind
({
anchor
:
this
.
getEl
(
'yingbingFlip'
),
eventType
:
'pan'
,
props
:
props
},
(
e
)
=>
{
if
((
e
.
state
==
'end'
||
e
.
state
==
'cancel'
)
&&
this
.
flipBinding
)
{
Binding
.
unbind
({
token
:
this
.
flipBinding
.
token
,
eventType
:
'pan'
})
this
.
flipBinding
=
null
let
deltaX
=
Binding
.
getComputedStyle
(
this
.
getEl
(
'yingbing_flip_'
+
loadingType
))[
translate
]
if
(
deltaX
==
0
)
{
this
.
loadingState
=
'ready'
this
.
pullingRefreshBindingx
()
}
else
{
this
.
loadingState
=
'default'
this
.
resetPullingBindingx
()
}
}
})
},
resetPullingBindingx
()
{
let
loadingType
=
this
.
loadingType
let
translate
=
this
.
translate
let
size
=
loadingType
==
'pullup'
?
this
.
pullupHeight
:
this
.
pulldownHeight
let
trans
=
loadingType
==
'pullup'
?
size
:
-
size
let
deltaX
=
Binding
.
getComputedStyle
(
this
.
getEl
(
'yingbing_flip_'
+
loadingType
))[
translate
]
let
duration
=
300
let
props
=
[
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
),
property
:
'transform.'
+
translate
,
expression
:
`linear(t,
${
deltaX
}
,
${
trans
}
,
${
duration
}
)`
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_default'
),
property
:
'opacity'
,
expression
:
this
.
loadingState
==
'default'
?
'1+0'
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_ready'
),
property
:
'opacity'
,
expression
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_loading'
),
property
:
'opacity'
,
expression
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_success'
),
property
:
'opacity'
,
expression
:
this
.
loadingState
==
'success'
?
'1+0'
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_fail'
),
property
:
'opacity'
,
expression
:
this
.
loadingState
==
'fail'
?
'1+0'
:
'0+0'
}
]
this
.
flipAnimationBinding
=
Binding
.
bind
({
eventType
:
'timing'
,
exitExpression
:
't>'
+
duration
,
props
:
props
},
(
e
)
=>
{
if
(
e
.
state
==
'exit'
&&
this
.
flipAnimationBinding
&&
e
.
t
>
duration
)
{
this
.
resetFlipAnimationBinding
()
this
.
loadingState
=
''
this
.
resetPageBinding
()
}
})
},
pullingRefreshBindingx
()
{
let
loadingType
=
this
.
loadingType
let
duration
=
1
let
props
=
[
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_default'
),
property
:
'opacity'
,
expression
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_ready'
),
property
:
'opacity'
,
expression
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_loading'
),
property
:
'opacity'
,
expression
:
'1+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_success'
),
property
:
'opacity'
,
expression
:
'0+0'
},
{
element
:
this
.
getEl
(
'yingbing_flip_'
+
loadingType
+
'_fail'
),
property
:
'opacity'
,
expression
:
'0+0'
}
]
this
.
flipAnimationBinding
=
Binding
.
bind
({
eventType
:
'timing'
,
exitExpression
:
't>'
+
duration
,
props
:
props
},
(
e
)
=>
{
if
(
e
.
state
==
'exit'
&&
this
.
flipAnimationBinding
&&
e
.
t
>
duration
)
{
this
.
resetFlipAnimationBinding
()
this
.
pullingRefresh
(
loadingType
)
}
})
},
resetFlipAnimationBinding
()
{
if
(
this
.
flipAnimationBinding
)
{
Binding
.
unbind
({
token
:
this
.
flipAnimationBinding
.
token
,
eventType
:
'timing'
})
this
.
flipAnimationBinding
=
null
}
},
getEl
(
selector
)
{
return
this
.
$refs
[
selector
]
?
Util
.
getEl
(
this
.
$refs
[
selector
].
length
>
0
?
this
.
$refs
[
selector
][
0
]
:
this
.
$refs
[
selector
])
:
null
},
getRef
(
selector
)
{
return
this
.
$refs
[
selector
]
?
this
.
$refs
[
selector
].
length
>
0
?
this
.
$refs
[
selector
][
0
]
:
this
.
$refs
[
selector
]
:
null
},
resetPageBinding
()
{
this
.
direction
=
''
this
.
touchTime
=
0
this
.
startX
=
0
this
.
startY
=
0
this
.
$nextTick
(
function
()
{
this
.
isTouch
=
false
this
.
disableTouch
=
false
})
}
}
}
\ No newline at end of file
vedio/uni_modules/yingbing-flip/components/yingbing-flip/yingbing-flip.vue
0 → 100644
View file @
fb973720
<
template
>
<!-- #ifndef APP-NVUE -->
<view
class=
"yingbing-flip"
:prop=
"flipProp"
:change:prop=
"flip.propWatcher"
@
touchstart=
"flip.touchstart"
@
touchmove=
"flip.touchmove"
@
touchend=
"flip.touchend"
@
touchcancel=
"flip.touchcancel"
:style=
"
{
background: bgColor
}">
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
<view
class=
"yingbing-flip"
ref=
"yingbingFlip"
@
touchstart=
"fliptouchstart"
@
touchmove=
"fliptouchmove"
@
touchend=
"fliptouchend"
:style=
"
{
background: bgColor
}">
<!-- #endif -->
<view
class=
"yingbing-flip-item"
:class=
"'yingbing-flip-item_' + item"
v-for=
"(item, index) in dataSync"
:ref=
"'yingbingFlipItem_' + item"
:style=
"
{
'background': bgColor,
'transform': item > currentIndex ? translate + '(' + fullSize + ')' : item
<
currentIndex
?
translate
+
'(
-
'
+
fullSize
+
')'
:
'',
'
box-shadow
'
:
vertical
?
'
0
0
15rpx
rgba
(
0
,
0
,
0
,.
2
)'
:
''
}"
:key=
"item"
>
<view
class=
"yingbing-flip-item-content"
:ref=
"'yingbingFlipItemContent_' + item"
:class=
"'yingbing-flip-item-content_' + item"
:style=
"
{
'background': bgColor,
'transform': item
<
currentIndex
?
type =
=
'
real
'
?
translate
+
'('
+
fullSize
+
')'
:
translate
+
'(
0
)'
:
translate
+
'(
0
)'
}"
>
<!-- #ifdef MP -->
<slot
v-if=
"item > -1 && item
<
count
"
:name=
"item"
></slot>
<!-- #endif -->
<!-- #ifndef MP -->
<slot
v-if=
"item > -1 && item
<
count
"
:item=
"data[item]"
:index=
"item"
></slot>
<!-- #endif -->
</view>
<view
class=
"yingbing-flip-item-bg"
:ref=
"'yingbingFlipItemBg_' + item"
:class=
"'yingbing-flip-item-bg_' + item"
:style=
"
{
background: bgColor,
transform: item
<
currentIndex
&&
type =
=
'
real
'
?
translate
+
'(
0
)'
:
translate
+
'('
+
fullSize
+
')',
}"
></view>
<view
class=
"yingbing-flip-item-shadow"
:ref=
"'yingbingFlipItemShadow_' + item"
:class=
"'yingbing-flip-item-shadow_' + item"
:style=
"[shadowStyle]"
></view>
</view>
<view
class=
"yingbing-flip-pulldown"
:style=
"[pulldownStyle]"
v-if=
"pulldownable"
ref=
"yingbing_flip_pulldown"
>
<view
class=
"yingbing-flip-pulldown-item yingbing-flip-pulldown-default"
ref=
"yingbing_flip_pulldown_default"
>
<slot
name=
"pulldownDefault"
></slot>
</view>
<view
class=
"yingbing-flip-pulldown-item yingbing-flip-pulldown-ready"
ref=
"yingbing_flip_pulldown_ready"
>
<slot
name=
"pulldownReady"
></slot>
</view>
<view
class=
"yingbing-flip-pulldown-item yingbing-flip-pulldown-loading"
ref=
"yingbing_flip_pulldown_loading"
>
<slot
name=
"pulldownLoading"
></slot>
</view>
<view
class=
"yingbing-flip-pulldown-item yingbing-flip-pulldown-success"
ref=
"yingbing_flip_pulldown_success"
>
<slot
name=
"pulldownSuccess"
></slot>
</view>
<view
class=
"yingbing-flip-pulldown-item yingbing-flip-pulldown-fail"
ref=
"yingbing_flip_pulldown_fail"
>
<slot
name=
"pulldownFail"
></slot>
</view>
</view>
<view
class=
"yingbing-flip-pullup"
:style=
"[pullupStyle]"
v-if=
"pullupable"
ref=
"yingbing_flip_pullup"
>
<view
class=
"yingbing-flip-pullup-item yingbing-flip-pullup-default"
ref=
"yingbing_flip_pullup_default"
>
<slot
name=
"pullupDefault"
></slot>
</view>
<view
class=
"yingbing-flip-pullup-item yingbing-flip-pullup-ready"
ref=
"yingbing_flip_pullup_ready"
>
<slot
name=
"pullupReady"
></slot>
</view>
<view
class=
"yingbing-flip-pullup-item yingbing-flip-pullup-loading"
ref=
"yingbing_flip_pullup_loading"
>
<slot
name=
"pullupLoading"
></slot>
</view>
<view
class=
"yingbing-flip-pullup-item yingbing-flip-pullup-success"
ref=
"yingbing_flip_pullup_success"
>
<slot
name=
"pullupSuccess"
></slot>
</view>
<view
class=
"yingbing-flip-pullup-item yingbing-flip-pullup-fail"
ref=
"yingbing_flip_pullup_fail"
>
<slot
name=
"pullupFail"
></slot>
</view>
</view>
</view>
</
template
>
<
script
>
// #ifdef APP-NVUE
import
flipBindingx
from
'../modules/flip_bindingx.js'
// #endif
export
default
{
// #ifdef APP-NVUE
mixins
:
[
flipBindingx
],
// #endif
props
:
{
data
:
{
type
:
Array
,
default
()
{
return
new
Array
}
},
vertical
:
{
type
:
Boolean
,
default
:
false
},
current
:
{
type
:
Number
,
default
:
0
},
//翻页方式
type
:
{
type
:
String
,
default
:
'real'
},
//滑动周期
duration
:
{
type
:
Number
,
default
:
100
},
//容错距离
sliderFault
:
{
type
:
Number
,
default
:
20
},
//背景颜色
bgColor
:
{
type
:
String
,
default
:
'#fcd281'
},
//是否关闭点击左右2侧位置翻页
unableClickPage
:
{
type
:
Boolean
,
default
:
false
},
//开启下拉刷新
pulldownable
:
{
type
:
Boolean
,
default
:
false
},
//下拉刷新高度
pulldownHeight
:
{
type
:
Number
,
default
:
80
},
//开启上拉加载
pullupable
:
{
type
:
Boolean
,
default
:
false
},
//上拉加载高度
pullupHeight
:
{
type
:
Number
,
default
:
80
}
},
computed
:
{
dataSync
()
{
let
arr
=
[]
if
(
this
.
prevIndex
>=
0
)
{
arr
.
push
(
this
.
prevIndex
)
}
arr
.
push
(
this
.
currentIndex
)
if
(
this
.
nextIndex
<
this
.
count
)
{
arr
.
push
(
this
.
nextIndex
)
}
return
this
.
refreshing
?
[]
:
arr
.
sort
((
a
,
b
)
=>
b
-
a
)
},
nextIndex
()
{
return
this
.
currentIndex
+
1
>
this
.
count
-
1
&&
this
.
count
>
2
?
0
:
this
.
currentIndex
+
1
},
prevIndex
()
{
return
this
.
currentIndex
-
1
<
0
&&
this
.
count
>
2
?
this
.
count
-
1
:
this
.
currentIndex
-
1
},
count
()
{
return
this
.
data
.
length
},
flipProp
()
{
return
{
vertical
:
this
.
vertical
,
pulldownable
:
this
.
pulldownable
,
pullupable
:
this
.
pullupable
,
pulldownHeight
:
this
.
pulldownHeight
,
pullupHeight
:
this
.
pullupHeight
,
loadingState
:
this
.
loadingState
,
duration
:
this
.
duration
,
unableClickPage
:
this
.
unableClickPage
,
nextIndex
:
this
.
nextIndex
,
prevIndex
:
this
.
prevIndex
,
currentIndex
:
this
.
currentIndex
,
type
:
this
.
type
,
count
:
this
.
count
,
flipTo
:
this
.
flipTo
,
sliderFault
:
this
.
sliderFault
,
translate
:
this
.
translate
}
},
pulldownStyle
()
{
return
this
.
vertical
?
{
left
:
0
,
right
:
0
,
top
:
0
,
height
:
this
.
pulldownHeight
+
'px'
,
transform
:
this
.
translate
+
'(-'
+
this
.
pulldownHeight
+
'px)'
}
:
{
left
:
0
,
top
:
0
,
bottom
:
0
,
width
:
this
.
pulldownHeight
+
'px'
,
transform
:
this
.
translate
+
'(-'
+
this
.
pulldownHeight
+
'px)'
}
},
pullupStyle
()
{
return
this
.
vertical
?
{
left
:
0
,
right
:
0
,
bottom
:
0
,
height
:
this
.
pullupHeight
+
'px'
,
transform
:
this
.
translate
+
'('
+
this
.
pullupHeight
+
'px)'
}
:
{
right
:
0
,
top
:
0
,
bottom
:
0
,
width
:
this
.
pullupHeight
+
'px'
,
transform
:
this
.
translate
+
'('
+
this
.
pullupHeight
+
'px)'
}
},
shadowStyle
()
{
return
this
.
vertical
?
{
bottom
:
0
,
right
:
0
,
left
:
0
,
height
:
0
,
// #ifdef APP-NVUE
'background-image'
:
'linear-gradient(to bottom, rgba(255,255,255, 0), rgba(0,0,0,.5))'
// #endif
}
:
{
top
:
0
,
bottom
:
0
,
right
:
0
,
width
:
0
,
// #ifdef APP-NVUE
'background-image'
:
'linear-gradient(to right, rgba(255,255,255, 0), rgba(0,0,0,.5))'
// #endif
}
},
translate
()
{
return
this
.
vertical
?
'translateY'
:
'translateX'
},
fullSize
()
{
return
this
.
vertical
?
'3050rpx'
:
'750rpx'
}
},
data
()
{
return
{
refreshing
:
false
,
currentIndex
:
0
,
flipTo
:
0
,
loadingState
:
''
,
}
},
created
()
{
this
.
currentIndex
=
this
.
current
},
methods
:
{
handleFlipChange
(
value
)
{
if
(
value
>
0
)
{
this
.
currentIndex
=
this
.
currentIndex
+
value
>
this
.
count
-
1
?
0
:
this
.
currentIndex
+
value
}
else
{
this
.
currentIndex
=
this
.
currentIndex
+
value
<
0
?
this
.
count
-
1
:
this
.
currentIndex
+
value
}
this
.
$emit
(
'change'
,
{
current
:
this
.
currentIndex
,
detail
:
this
.
data
[
this
.
currentIndex
]
})
this
.
$emit
(
'update:current'
,
this
.
currentIndex
)
},
pullingRefresh
(
type
)
{
this
.
$emit
(
type
,
(
state
)
=>
{
this
.
loadingState
=
state
// #ifdef APP-NVUE
this
.
resetPullingBindingx
()
// #endif
})
},
flipToNext
()
{
// #ifdef APP-NVUE
this
.
flipToNextBindingX
()
// #endif
// #ifndef APP-NVUE
this
.
flipTo
=
0
this
.
$nextTick
(
function
()
{
this
.
flipTo
=
1
})
// #endif
},
flipToPrev
()
{
// #ifdef APP-NVUE
this
.
flipToPrevBindingX
()
// #endif
// #ifndef APP-NVUE
this
.
flipTo
=
0
this
.
$nextTick
(
function
()
{
this
.
flipTo
=
-
1
})
// #endif
},
refresh
()
{
this
.
refreshing
=
true
this
.
$nextTick
(
function
()
{
this
.
currentIndex
=
this
.
current
this
.
refreshing
=
false
})
},
resetLoading
()
{
this
.
loadingState
=
''
// #ifdef APP-NVUE
this
.
resetPullingBindingx
()
// #endif
}
},
watch
:
{
current
(
newVal
)
{
this
.
currentIndex
=
newVal
}
}
}
</
script
>
<!-- #ifdef APP-VUE || H5 || MP-QQ || MP-WEIXIN -->
<
script
lang=
"wxs"
module=
"flip"
src=
"../modules/flip.wxs"
></
script
>
<!-- #endif -->
<
style
>
.yingbing-flip
{
/* #ifdef APP-NVUE */
flex
:
1
;
/* #endif */
/* #ifndef APP-NVUE */
height
:
100%
;
/* #endif */
overflow
:
hidden
;
position
:
relative
;
}
.yingbing-flip-item
{
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
/* #ifndef APP-NVUE */
overflow
:
hidden
;
/* #endif */
}
.yingbing-flip-item-content
{
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
}
.yingbing-flip-item-bg
{
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
/* #ifdef APP-NVUE */
box-shadow
:
0
0
20
rpx
rgba
(
0
,
0
,
0
,
0.2
);
/* #endif */
}
.yingbing-flip-item-shadow
{
position
:
absolute
;
/* #ifdef APP-NVUE */
opacity
:
0.5
;
/* #endif */
}
.yingbing-flip-pulldown
,
.yingbing-flip-pullup
{
position
:
absolute
;
}
.yingbing-flip-pulldown-item
,
.yingbing-flip-pullup-item
{
/* #ifndef APP-NVUE */
visibility
:
hidden
;
/* #endif */
/* #ifdef APP-NVUE */
opacity
:
0
;
/* #endif */
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
}
/* #ifdef MP */
/
deep
/
.scoped-ref
{
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
}
yingbing-flip
{
display
:
block
;
}
/* #endif */
</
style
>
vedio/uni_modules/yingbing-flip/js_sdk/util.js
0 → 100644
View file @
fb973720
export
default
{
/**
* 补零
* @param {Number} val 数字
**/
zeroize
(
val
)
{
return
zeroize
(
val
);
},
/**
* 时间格式化
* @param {String} time 时间戳or时间
**/
dateFormat
(
time
,
formats
=
'yyyy-mm-dd hh:mm:ss'
)
{
let
arr
=
formats
.
split
(
' '
)
let
dateFormats
=
''
let
timeFormats
=
''
arr
.
forEach
(
item
=>
{
if
(
item
.
indexOf
(
'yy'
)
>
-
1
)
{
dateFormats
=
item
}
else
{
timeFormats
=
item
}
})
const
d
=
new
Date
(
time
);
let
result
=
''
if
(
dateFormats
.
indexOf
(
'yyyy'
)
>
-
1
)
{
result
+=
d
.
getFullYear
()
+
'-'
}
if
(
dateFormats
.
indexOf
(
'mm'
)
>
-
1
)
{
result
+=
zeroize
(
d
.
getMonth
()
+
1
)
+
'-'
}
if
(
dateFormats
.
indexOf
(
'dd'
)
>
-
1
)
{
result
+=
zeroize
(
d
.
getDate
())
+
' '
}
if
(
timeFormats
.
indexOf
(
'hh'
)
>
-
1
)
{
result
+=
zeroize
(
d
.
getHours
())
+
':'
}
if
(
timeFormats
.
indexOf
(
'mm'
)
>
-
1
)
{
result
+=
zeroize
(
d
.
getMinutes
())
+
':'
}
if
(
timeFormats
.
indexOf
(
'ss'
)
>
-
1
)
{
result
+=
zeroize
(
d
.
getSeconds
())
+
':'
}
return
result
.
substring
(
0
,
result
.
length
-
1
)
},
/**
* 秒数转化为分秒
* @param {String} value 秒数
**/
minutesFormat
(
value
)
{
let
minutes
=
Math
.
floor
(
value
/
60
%
60
)
>=
10
?
Math
.
floor
(
value
/
60
%
60
)
:
'0'
+
Math
.
floor
(
value
/
60
%
60
);
let
seconds
=
Math
.
floor
(
value
%
60
)
>=
10
?
Math
.
floor
(
value
%
60
)
:
'0'
+
Math
.
floor
(
value
%
60
);
return
minutes
+
':'
+
seconds
;
},
/**
* 时间转化为秒数
* @param {String} time 时间(HH:mm:ss)
**/
time2seconds
(
time
){
const
seconds
=
parseInt
(
time
.
split
(
':'
)[
0
])
*
60
+
parseInt
(
time
.
split
(
':'
)[
1
].
split
(
'.'
)[
0
])
+
parseInt
(
time
.
split
(
':'
)[
1
].
split
(
'.'
)[
1
])
/
1000
;
return
seconds
;
},
/**
* 移除url地址域名
* @param {String} str http地址
**/
removeUrl
(
url
)
{
let
str
=
url
.
replace
(
/^http:
\/\/[^/]
+/
,
''
);
return
str
.
substr
(
1
);
},
/**
* 获取文件后缀
* @param {String} name 带后缀的文件名称
**/
suffix
(
name
)
{
//获取图片后缀
let
fileName
=
name
.
lastIndexOf
(
"."
);
let
fileNameLength
=
name
.
length
;
let
fileFormat
=
name
.
substring
(
fileName
+
1
,
fileNameLength
);
return
fileFormat
;
},
/**
* 清除文件后缀
* @param {String} name 带后缀的文件名称
*/
removeSuffix
(
name
)
{
//获取图片后缀
let
fileName
=
name
.
lastIndexOf
(
"."
);
if
(
fileName
>
-
1
)
{
let
fileNameFormat
=
name
.
substring
(
0
,
fileName
);
return
fileNameFormat
;
}
else
{
return
name
}
},
/**
* 数组查找符合条件元素并返回下标
* @param {Array} arr 传入数组
* @param {String} value 条件元素
* @param {String} query 对比key值
*/
indexOf
(
arr
,
query
,
value
)
{
let
len
=
arr
.
length
;
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
if
(
arr
[
i
][
query
]
==
value
)
{
return
parseInt
(
i
);
}
}
return
-
1
;
},
/**
* 正则匹配
* @param {String} type 匹配类型
* @param {String} value 匹配值
*/
reg
(
type
,
value
)
{
const
regs
=
{
//身份证证则
idcard
:
new
RegExp
(
/^
[
1-9
]\d{7}((
0
\d)
|
(
1
[
0-2
]))(([
0|1|2
]\d)
|3
[
0-1
])\d{3}
$|^
[
1-9
]\d{5}[
1-9
]\d{3}((
0
\d)
|
(
1
[
0-2
]))(([
0|1|2
]\d)
|3
[
0-1
])\d{3}([
0-9
]
|X
)
$/
),
//手机正则
mobile
:
new
RegExp
(
/^1
[
3456789
]\d{9}
$/
),
//固定电话正则
phone
:
new
RegExp
(
/^
(\(\d{3,4}\)
|
\d{3,4}
-|
\s)?\d{7,14}
$/
),
//金额验证
price
:
new
RegExp
(
/^
[
1-9
]\d
*
(
,
\d{3})
*
(\.\d{1,2})?
$|^0.
\d{1,2}
$/
),
//邮箱验证
email
:
new
RegExp
(
/^
\w
+
((
-
\w
+
)
|
(\.\w
+
))
*
\@[
A-Za-z0-9
]
+
((\.
|-
)[
A-Za-z0-9
]
+
)
*
\.[
A-Za-z0-9
]
+$/
),
//银行卡
bankcard
:
new
RegExp
(
/^
([
1-9
]{1})(\d{15}
|
\d{18})
$/
)
}
return
regs
[
type
].
test
(
value
);
},
/**
* 计算2个时间差的分钟数或者秒钟数或时钟数
* @param {datetime} time1 开始时间
* @param {datetime} time2 结束时间
*/
timeMinuse
(
time1
,
time2
,
type
=
'minutes'
)
{
//判断开始时间是否大于结束日期
let
date1
=
new
Date
(
time1
);
let
date2
=
new
Date
(
time2
);
if
(
date1
>
date2
)
{
console
.
log
(
"开始时间不能大于结束时间!"
);
return
false
;
}
let
seconds
=
date2
.
getTime
()
/
1000
-
date1
.
getTime
()
/
1000
;
return
type
==
'minutes'
?
(
seconds
/
60
)
:
type
==
'hours'
?
(
seconds
/
60
/
60
)
:
seconds
;
},
/**
* 判断值类型返回字符
* @param {datetime} value 需要判断类型的值
*/
typeof
(
value
)
{
let
type
=
Object
.
prototype
.
toString
.
call
(
value
);
return
type
.
slice
(
8
,
type
.
length
-
1
)
},
/**
* 生成随机字符串
* @param {Number} len 长度
*/
randomString
(
len
)
{
len
=
len
||
32
;
var
$chars
=
'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
;
/****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
var
maxPos
=
$chars
.
length
;
var
pwd
=
''
;
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
pwd
+=
$chars
.
charAt
(
Math
.
floor
(
Math
.
random
()
*
maxPos
));
}
return
pwd
;
},
/**
* 生成随机ID
*/
randomID
()
{
let
mydate
=
new
Date
();
return
mydate
.
getMinutes
()
+
mydate
.
getSeconds
()
+
mydate
.
getMilliseconds
()
+
Math
.
round
(
Math
.
random
()
*
10000
);
},
/**
* 生成随机不重复整数
* @param {Number} len 长度
*/
randomSoleNumber
(
len
)
{
let
min
=
0
;
let
max
=
len
-
1
;
let
arr
=
[];
while
(
arr
.
length
<
len
)
{
let
value
=
Math
.
floor
(
Math
.
random
()
*
(
max
-
min
+
1
))
+
min
;
if
(
arr
.
indexOf
(
value
)
==
-
1
)
{
arr
.
push
(
value
)
}
}
return
arr
;
},
/**
* 16进制颜色转化为rgb
* @param {String} hex 16进制颜色
*/
hex2rgb
(
hex
)
{
hex
=
hex
.
length
==
7
?
hex
:
'#'
+
hex
.
slice
(
1
,
4
)
+
hex
.
slice
(
1
,
4
)
let
str
=
"rgb("
const
r
=
parseInt
(
hex
.
slice
(
1
,
3
),
16
).
toString
();
//ff slice不包括end
const
g
=
parseInt
(
hex
.
slice
(
3
,
5
),
16
).
toString
();
//00
const
b
=
parseInt
(
hex
.
slice
(
5
,
7
),
16
).
toString
();
//ff
str
+=
r
+
","
+
g
+
","
+
b
+
")"
;
return
str
},
/**
* 16进制颜色转化为rgba
* @param {String} hex 16进制颜色
*/
hex2rgba
(
hex
,
opacity
)
{
hex
=
hex
.
length
==
7
?
hex
:
'#'
+
hex
.
slice
(
1
,
4
)
+
hex
.
slice
(
1
,
4
)
let
str
=
"rgba("
const
r
=
parseInt
(
hex
.
slice
(
1
,
3
),
16
).
toString
();
//ff slice不包括end
const
g
=
parseInt
(
hex
.
slice
(
3
,
5
),
16
).
toString
();
//00
const
b
=
parseInt
(
hex
.
slice
(
5
,
7
),
16
).
toString
();
//ff
str
+=
r
+
","
+
g
+
","
+
b
+
","
+
opacity
+
")"
;
return
str
},
/**
* byte转化为文件大小
* @param {Number} byte 位
*/
byte2Size
(
byte
)
{
let
sizeString
=
''
if
(
byte
==
0
){
sizeString
=
"0B"
;
}
else
if
(
byte
<
1024
){
sizeString
=
byte
+
"B"
;
}
else
if
(
byte
<
1048576
){
sizeString
=
(
byte
/
1024
).
toFixed
(
2
)
+
"KB"
;
}
else
if
(
byte
<
1073741824
){
sizeString
=
(
byte
/
1048576
).
toFixed
(
2
)
+
"MB"
;
}
else
{
sizeString
=
(
byte
/
1073741824
).
toFixed
(
2
)
+
"GB"
;
}
return
sizeString
;
},
// 深度克隆
deepClone
(
obj
)
{
if
(
typeof
obj
!==
"object"
&&
typeof
obj
!==
'function'
)
{
//原始类型直接返回
return
obj
;
}
var
o
=
isArray
(
obj
)
?
[]
:
{};
for
(
let
i
in
obj
)
{
if
(
obj
.
hasOwnProperty
(
i
)){
o
[
i
]
=
typeof
obj
[
i
]
===
"object"
?
this
.
deepClone
(
obj
[
i
])
:
obj
[
i
];
}
}
return
o
;
},
/**
* 将数字转为带中文单位的字符串
* @param {Number} num 数字
*/
numtounit
(
num
)
{
let
units
=
[{
label
:
'万'
,
value
:
10000
,
min
:
1000
},{
label
:
'亿'
,
value
:
100000000
,
min
:
100000000
},{
label
:
'兆'
,
value
:
10000000000000000
,
min
:
100000000000000000
}]
let
value
=
num
units
.
forEach
(
unit
=>
{
if
(
num
>=
unit
.
min
)
{
value
=
(
num
/
unit
.
value
).
toFixed
(
2
)
+
unit
.
label
}
})
return
value
},
/**
* 判断像素单位,没有则加上rpx
* @param {String} value 像素
*/
pixelunit
(
value
)
{
if
(
value
.
toString
().
indexOf
(
'px'
)
>
-
1
||
value
.
toString
().
indexOf
(
'em'
)
>
-
1
||
value
.
toString
().
indexOf
(
'auto'
)
>
-
1
||
value
.
toString
().
indexOf
(
'%'
)
>
-
1
)
{
return
value
}
else
{
return
value
+
'rpx'
}
},
/**
* 判断像素单位,全部转为px
* @param {String} value 像素
*/
unitpixel
(
value
)
{
if
(
value
.
toString
().
indexOf
(
'rpx'
)
>
-
1
)
{
return
uni
.
upx2px
(
value
.
replace
(
'rpx'
,
''
))
}
else
if
(
value
.
toString
().
indexOf
(
'px'
)
>
-
1
)
{
return
parseFloat
(
value
.
replace
(
'px'
,
''
))
}
else
if
(
value
.
toString
().
indexOf
(
'em'
)
>
-
1
||
value
.
toString
().
indexOf
(
'auto'
)
>
-
1
||
value
.
toString
().
indexOf
(
'%'
)
>
-
1
)
{
return
value
}
else
{
return
parseFloat
(
uni
.
upx2px
(
value
))
}
},
/**
* 判断像素单位,转化为rpx
* @param {String} value 值
* @param {String} unit 返回结果是否带上单位
*/
anytorpx
(
value
,
unit
=
true
)
{
if
(
value
.
toString
().
indexOf
(
'rpx'
)
>
-
1
)
{
return
unit
?
value
:
parseFloat
(
value
.
replace
(
'rpx'
,
''
))
}
else
if
(
value
.
toString
().
indexOf
(
'px'
)
>
-
1
)
{
return
parseFloat
(
value
.
replace
(
'px'
,
''
)
*
(
750
/
uni
.
getSystemInfoSync
().
windowWidth
))
+
(
unit
?
'rpx'
:
0
)
}
else
if
(
value
.
toString
().
indexOf
(
'auto'
)
>
-
1
)
{
return
'auto'
}
else
if
(
value
.
toString
().
indexOf
(
'%'
)
>
-
1
)
{
return
parseFloat
((
value
.
replace
(
'%'
,
''
)
/
100
)
*
750
)
+
(
unit
?
'rpx'
:
0
)
}
else
if
(
value
.
toString
().
indexOf
(
'em'
)
>
-
1
||
value
.
toString
().
indexOf
(
'rem'
)
>
-
1
)
{
return
parseFloat
(
value
.
replace
(
'em'
,
''
).
replace
(
'rem'
,
''
)
*
32
)
+
(
unit
?
'rpx'
:
0
)
}
else
if
(
/^
\d
+$/
.
test
(
value
)
)
{
return
parseFloat
(
value
)
+
(
unit
?
'rpx'
:
0
)
}
},
/**
* 判断像素单位,转化为px
* @param {String} value 值
* @param {String} unit 返回结果是否带上单位
*/
anytopx
(
value
,
unit
=
false
)
{
if
(
value
.
toString
().
indexOf
(
'rpx'
)
>
-
1
)
{
return
uni
.
upx2px
(
value
.
replace
(
'rpx'
,
''
))
+
(
unit
?
'px'
:
0
)
}
else
if
(
value
.
toString
().
indexOf
(
'px'
)
>
-
1
)
{
return
parseFloat
(
value
.
replace
(
'px'
,
''
))
+
(
unit
?
'px'
:
0
)
}
else
if
(
value
.
toString
().
indexOf
(
'auto'
)
>
-
1
)
{
return
'auto'
}
else
if
(
value
.
toString
().
indexOf
(
'%'
)
>
-
1
)
{
return
parseFloat
((
value
.
replace
(
'%'
,
''
)
/
100
)
*
uni
.
getSystemInfoSync
().
windowWidth
)
+
(
unit
?
'px'
:
0
)
}
else
if
(
value
.
toString
().
indexOf
(
'em'
)
>
-
1
||
value
.
toString
().
indexOf
(
'rem'
)
>
-
1
)
{
return
parseFloat
(
value
.
replace
(
'em'
,
''
).
replace
(
'rem'
,
''
)
*
uni
.
getSystemInfoSync
().
windowWidth
)
+
(
unit
?
'px'
:
0
)
}
else
if
(
/^
\d
+$/
.
test
(
value
)
)
{
return
parseFloat
(
value
)
+
(
unit
?
'px'
:
0
)
}
},
getRefs
(
components
,
name
,
current
)
{
// #ifndef MP
return
current
>=
0
?
components
.
$refs
[
name
][
current
]
:
components
.
$refs
[
name
]
// #endif
// #ifdef MP
return
{}
// #endif
},
//获取节点
getEl
(
el
)
{
if
(
typeof
el
===
'string'
||
typeof
el
===
'number'
)
return
el
;
if
(
WXEnvironment
)
{
return
el
.
ref
;
}
else
{
return
el
instanceof
HTMLElement
?
el
:
el
.
$el
;
}
},
/**
* 获取指定父节点
* @param {String} components 当前实例
* @param {String} name 父节点名称
*/
getParent
(
name
,
components
)
{
let
parent
=
components
.
$parent
if
(
parent
)
{
let
parentName
=
parent
.
$options
.
name
while
(
parentName
!==
name
)
{
parent
=
parent
.
$parent
if
(
parent
)
{
parentName
=
parent
.
$options
.
name
}
else
{
return
null
}
}
return
parent
}
return
null
},
/**
* 获取指定子节点
* @param {String} components 当前实例
* @param {String} name 父节点名称
*/
getChildrens
(
names
,
components
)
{
let
arr
=
[]
let
childs
=
names
.
split
(
','
)
const
dowhile
=
(
children
)
=>
{
if
(
this
.
typeof
(
children
)
==
'Array'
)
{
children
.
forEach
(
child
=>
{
if
(
childs
.
indexOf
(
child
.
$options
.
name
)
>
-
1
)
{
arr
.
push
(
child
)
}
if
(
child
.
$children
&&
child
.
$children
.
length
>
0
)
{
dowhile
(
child
.
$children
)
}
})
}
}
dowhile
(
components
.
$children
)
return
arr
;
},
/**
* 获取指定子节点
* @param {String} selector 节点class或者id
* @param {String} el 节点
* @param {String} components 当前实例
*/
getRect
(
selector
,
el
,
components
)
{
return
new
Promise
(
resolve
=>
{
// #ifdef APP-NVUE
uni
.
requireNativePlugin
(
'dom'
).
getComponentRect
(
el
,
res
=>
{
resolve
(
res
.
size
)
})
// #endif
// #ifndef APP-NVUE
uni
.
createSelectorQuery
().
in
(
components
).
select
(
selector
).
boundingClientRect
(
data
=>
{
resolve
(
data
)
}).
exec
();
// #endif
})
}
}
// 判断arr是否为一个数组,返回一个bool值
function
isArray
(
arr
)
{
return
Object
.
prototype
.
toString
.
call
(
arr
)
===
'[object Array]'
;
}
function
zeroize
(
val
)
{
return
val
>=
10
?
val
:
'0'
+
val
;
}
vedio/uni_modules/yingbing-flip/package.json
0 → 100644
View file @
fb973720
{
"id"
:
"yingbing-flip"
,
"displayName"
:
"好用翻页组件"
,
"version"
:
"1.0.4"
,
"description"
:
"高性能翻页组件"
,
"keywords"
:
[
"翻页"
],
"repository"
:
"https://gitee.com/yingbing-developer/yingbing-flip.git"
,
"engines"
:
{
"HBuilderX"
:
"^3.1.0"
},
"dcloudext"
:
{
"type"
:
"component-vue"
,
"sale"
:
{
"regular"
:
{
"price"
:
"0.00"
},
"sourcecode"
:
{
"price"
:
"0.00"
}
},
"contact"
:
{
"qq"
:
""
},
"declaration"
:
{
"ads"
:
"无"
,
"data"
:
"无"
,
"permissions"
:
"无"
},
"npmurl"
:
""
},
"uni_modules"
:
{
"dependencies"
:
[],
"encrypt"
:
[],
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
},
"client"
:
{
"Vue"
:
{
"vue2"
:
"u"
,
"vue3"
:
"u"
},
"App"
:
{
"app-vue"
:
"u"
,
"app-nvue"
:
"u"
},
"H5-mobile"
:
{
"Safari"
:
"u"
,
"Android Browser"
:
"u"
,
"微信浏览器(Android)"
:
"u"
,
"QQ浏览器(Android)"
:
"u"
},
"H5-pc"
:
{
"Chrome"
:
"u"
,
"IE"
:
"u"
,
"Edge"
:
"u"
,
"Firefox"
:
"u"
,
"Safari"
:
"u"
},
"小程序"
:
{
"微信"
:
"u"
,
"阿里"
:
"u"
,
"百度"
:
"u"
,
"字节跳动"
:
"u"
,
"QQ"
:
"u"
,
"钉钉"
:
"u"
,
"快手"
:
"u"
,
"飞书"
:
"u"
,
"京东"
:
"u"
},
"快应用"
:
{
"华为"
:
"u"
,
"联盟"
:
"u"
}
}
}
}
}
\ No newline at end of file
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