Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
U
uview-ui
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
李晖
uview-ui
Commits
a9758b91
Commit
a9758b91
authored
Aug 04, 2020
by
wlxuqu
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'yiruiwen' into dev
parents
36bc753b
c1c3e009
Changes
44
Show whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
648 additions
and
261 deletions
+648
-261
README.md
README.md
+1
-1
manifest.json
manifest.json
+4
-3
pages.json
pages.json
+15
-8
index.vue
pages/componentsA/icon/index.vue
+9
-0
index.vue
pages/componentsA/navbar/index.vue
+6
-1
index.vue
pages/componentsB/readMore/index.vue
+7
-1
index.vue
pages/componentsC/section/index.vue
+10
-2
index.vue
pages/componentsC/test/index.vue
+24
-8
js.config.js
pages/example/js.config.js
+5
-0
index.vue
pages/library/debounce/index.vue
+94
-0
u-alert-tips.vue
uview-ui/components/u-alert-tips/u-alert-tips.vue
+51
-14
u-button.vue
uview-ui/components/u-button/u-button.vue
+19
-11
u-field.vue
uview-ui/components/u-field/u-field.vue
+9
-1
u-form-item.vue
uview-ui/components/u-form-item/u-form-item.vue
+4
-4
u-icon.vue
uview-ui/components/u-icon/u-icon.vue
+3
-3
u-input.vue
uview-ui/components/u-input/u-input.vue
+37
-29
u-lazy-load.vue
uview-ui/components/u-lazy-load/u-lazy-load.vue
+10
-1
u-loading-page.vue
uview-ui/components/u-loading-page/u-loading-page.vue
+25
-0
u-navbar.vue
uview-ui/components/u-navbar/u-navbar.vue
+3
-1
u-number-box.vue
uview-ui/components/u-number-box/u-number-box.vue
+2
-2
MpHtmlParser.js
uview-ui/components/u-parse/libs/MpHtmlParser.js
+13
-12
config.js
uview-ui/components/u-parse/libs/config.js
+22
-35
trees.vue
uview-ui/components/u-parse/libs/trees.vue
+22
-21
u-parse.vue
uview-ui/components/u-parse/u-parse.vue
+1
-1
u-popup.vue
uview-ui/components/u-popup/u-popup.vue
+3
-3
u-radio-group.vue
uview-ui/components/u-radio-group/u-radio-group.vue
+1
-1
u-radio.vue
uview-ui/components/u-radio/u-radio.vue
+1
-1
u-read-more.vue
uview-ui/components/u-read-more/u-read-more.vue
+7
-0
u-section.vue
uview-ui/components/u-section/u-section.vue
+3
-3
u-skeleton.vue
uview-ui/components/u-skeleton/u-skeleton.vue
+37
-5
u-sticky.vue
uview-ui/components/u-sticky/u-sticky.vue
+3
-0
u-switch.vue
uview-ui/components/u-switch/u-switch.vue
+4
-3
u-tabbar.vue
uview-ui/components/u-tabbar/u-tabbar.vue
+4
-2
u-upload.vue
uview-ui/components/u-upload/u-upload.vue
+12
-7
iconfont.css
uview-ui/iconfont.css
+63
-65
index.js
uview-ui/index.js
+13
-5
config.js
uview-ui/libs/config/config.js
+2
-2
common.scss
uview-ui/libs/css/common.scss
+0
-2
$parent.js
uview-ui/libs/function/$parent.js
+4
-2
debounce.js
uview-ui/libs/function/debounce.js
+29
-0
sys.js
uview-ui/libs/function/sys.js
+9
-0
throttle.js
uview-ui/libs/function/throttle.js
+32
-0
timeFormat.js
uview-ui/libs/function/timeFormat.js
+24
-0
package.json
uview-ui/package.json
+1
-1
No files found.
README.md
View file @
a9758b91
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
uView UI,是
[
uni-app
](
https://uniapp.dcloud.io/
)
生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
uView UI,是
[
uni-app
](
https://uniapp.dcloud.io/
)
生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
### **欢迎加群交流反馈:
24971851
2**
### **欢迎加群交流反馈:
112907727
2**
## 特性
## 特性
...
...
manifest.json
View file @
a9758b91
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
"name"
:
"uView"
,
"name"
:
"uView"
,
"appid"
:
"__UNI__60F4B81"
,
"appid"
:
"__UNI__60F4B81"
,
"description"
:
"多平台快速开发的UI框架"
,
"description"
:
"多平台快速开发的UI框架"
,
"versionName"
:
"1.5.
6
"
,
"versionName"
:
"1.5.
8
"
,
"versionCode"
:
"100"
,
"versionCode"
:
"100"
,
"transformPx"
:
false
,
"transformPx"
:
false
,
"app-plus"
:
{
"app-plus"
:
{
...
@@ -107,7 +107,7 @@
...
@@ -107,7 +107,7 @@
},
},
"mp-alipay"
:
{
"mp-alipay"
:
{
"usingComponents"
:
true
,
"usingComponents"
:
true
,
"component2"
:
true
"component2"
:
true
},
},
"mp-baidu"
:
{
"mp-baidu"
:
{
"usingComponents"
:
true
,
"usingComponents"
:
true
,
...
@@ -126,6 +126,7 @@
...
@@ -126,6 +126,7 @@
"treeShaking"
:
{
"treeShaking"
:
{
"enable"
:
true
"enable"
:
true
}
}
}
},
"title"
:
"uView UI"
}
}
}
}
pages.json
View file @
a9758b91
...
@@ -2,14 +2,14 @@
...
@@ -2,14 +2,14 @@
"easycom"
:
{
"easycom"
:
{
"^u-(.*)"
:
"@/uview-ui/components/u-$1/u-$1.vue"
"^u-(.*)"
:
"@/uview-ui/components/u-$1/u-$1.vue"
},
},
"condition"
:
{
//模式配置,仅开发期间生效
//
"condition"
:
{
//模式配置,仅开发期间生效
"current"
:
0
,
//当前激活的模式(list
的索引项)
//
"current"
:
0
,
//当前激活的模式(list
的索引项)
"list"
:
[{
//
"list"
:
[{
"name"
:
"test"
,
//模式名称
//
"name"
:
"test"
,
//模式名称
"path"
:
"pages/componentsA/avatar
/index"
,
//启动页面,必选
//
"path"
:
"pages/componentsC/test
/index"
,
//启动页面,必选
"query"
:
"id=1&name=2"
//启动参数,在页面的onLoad函数里面得到
//
"query"
:
"id=1&name=2"
//启动参数,在页面的onLoad函数里面得到
}]
//
}]
},
//
},
"pages"
:
[
"pages"
:
[
//
演示-组件
//
演示-组件
{
{
...
@@ -328,6 +328,13 @@
...
@@ -328,6 +328,13 @@
{
{
"root"
:
"pages/library"
,
"root"
:
"pages/library"
,
"pages"
:
[
"pages"
:
[
//
debounce-节流防抖
{
"path"
:
"debounce/index"
,
"style"
:
{
"navigationBarTitleText"
:
"throttle | debounce-节流防抖"
}
},
//
deepClone-对象深度克隆
//
deepClone-对象深度克隆
{
{
"path"
:
"deepClone/index"
,
"path"
:
"deepClone/index"
,
...
...
pages/componentsA/icon/index.vue
View file @
a9758b91
...
@@ -14,6 +14,15 @@
...
@@ -14,6 +14,15 @@
data
()
{
data
()
{
return
{
return
{
iconList
:
[
iconList
:
[
{
name
:
'
level
'
},
{
name
:
'
woman
'
},
{
name
:
'
man
'
},
{
{
name
:
'
arrow-left-double
'
name
:
'
arrow-left-double
'
},
},
...
...
pages/componentsA/navbar/index.vue
View file @
a9758b91
<
template
>
<
template
>
<view
class=
""
>
<view
class=
""
>
<u-navbar
title-color=
"#fff"
back-icon-color=
"#ffffff"
:is-fixed=
"isFixed"
:is-back=
"isBack"
:background=
"background"
:back-text-style=
"
{color: '#fff'}" :title="title" :back-icon-name="backIconName" :back-text="backText">
<u-navbar
title-color=
"#fff"
back-icon-color=
"#ffffff"
:is-fixed=
"isFixed"
:is-back=
"isBack"
:background=
"background"
:back-text-style=
"
{color: '#fff'}" :title="title"
:back-icon-name="backIconName" :back-text="backText"
>
<view
class=
"slot-wrap"
v-if=
"useSlot"
>
<view
class=
"slot-wrap"
v-if=
"useSlot"
>
<view
class=
"search-wrap"
v-if=
"search"
>
<view
class=
"search-wrap"
v-if=
"search"
>
<!-- 如果使用u-search组件,必须要给v-model绑定一个变量 -->
<!-- 如果使用u-search组件,必须要给v-model绑定一个变量 -->
...
...
pages/componentsB/readMore/index.vue
View file @
a9758b91
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<view
class=
"u-demo-wrap"
>
<view
class=
"u-demo-wrap"
>
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-area"
>
<view
class=
"u-demo-area"
>
<u-read-more
:toggle=
"toggle"
:show-height=
"showHeight"
ref=
"uReadMore"
>
<u-read-more
@
open=
"open"
@
close=
"close"
:toggle=
"toggle"
:show-height=
"showHeight"
ref=
"uReadMore"
>
<!-- u-parse组件在微信小程序渲染慢,支付宝小程序rich-text不支持nodes属性 -->
<!-- u-parse组件在微信小程序渲染慢,支付宝小程序rich-text不支持nodes属性 -->
<!-- #ifdef MP-ALIPAY -->
<!-- #ifdef MP-ALIPAY -->
<u-parse
:html=
"content"
></u-parse>
<u-parse
:html=
"content"
></u-parse>
...
@@ -48,6 +48,12 @@
...
@@ -48,6 +48,12 @@
},
},
toggleChange
(
index
)
{
toggleChange
(
index
)
{
this
.
toggle
=
index
==
0
?
true
:
false
;
this
.
toggle
=
index
==
0
?
true
:
false
;
},
open
()
{
// console.log('open');
},
close
()
{
// console.log('close');
}
}
}
}
}
}
...
...
pages/componentsC/section/index.vue
View file @
a9758b91
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<view
class=
"u-demo-wrap"
>
<view
class=
"u-demo-wrap"
>
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-area"
>
<view
class=
"u-demo-area"
>
<u-section
:title=
"title"
:right=
"right"
:bold=
"bold"
:color=
"color"
></u-section>
<u-section
:title=
"title"
:right=
"right"
:bold=
"bold"
:color=
"color"
:show-line=
"showLine"
></u-section>
</view>
</view>
</view>
</view>
<view
class=
"u-config-wrap"
>
<view
class=
"u-config-wrap"
>
...
@@ -14,6 +14,10 @@
...
@@ -14,6 +14,10 @@
<view
class=
"u-item-title"
>
更换主标题
</view>
<view
class=
"u-item-title"
>
更换主标题
</view>
<u-subsection
vibrateShort
:current=
"1"
:list=
"['是', '否']"
@
change=
"titleChange"
></u-subsection>
<u-subsection
vibrateShort
:current=
"1"
:list=
"['是', '否']"
@
change=
"titleChange"
></u-subsection>
</view>
</view>
<view
class=
"u-config-item"
>
<view
class=
"u-item-title"
>
竖条状态
</view>
<u-subsection
vibrateShort
:list=
"['显示', '隐藏']"
@
change=
"showLineChange"
></u-subsection>
</view>
<view
class=
"u-config-item"
>
<view
class=
"u-config-item"
>
<view
class=
"u-item-title"
>
是否显示右边部分
</view>
<view
class=
"u-item-title"
>
是否显示右边部分
</view>
<u-subsection
vibrateShort
:list=
"['是', '否']"
@
change=
"rightChange"
></u-subsection>
<u-subsection
vibrateShort
:list=
"['是', '否']"
@
change=
"rightChange"
></u-subsection>
...
@@ -37,7 +41,8 @@
...
@@ -37,7 +41,8 @@
title
:
'
红豆生南国
'
,
title
:
'
红豆生南国
'
,
bold
:
true
,
bold
:
true
,
right
:
true
,
right
:
true
,
color
:
this
.
$u
.
color
[
'
mainColor
'
]
color
:
this
.
$u
.
color
[
'
mainColor
'
],
showLine
:
true
}
}
},
},
methods
:
{
methods
:
{
...
@@ -53,6 +58,9 @@
...
@@ -53,6 +58,9 @@
},
},
colorChange
(
index
)
{
colorChange
(
index
)
{
this
.
color
=
index
==
0
?
this
.
$u
.
color
[
'
mainColor
'
]
:
this
.
$u
.
color
[
'
primary
'
];
this
.
color
=
index
==
0
?
this
.
$u
.
color
[
'
mainColor
'
]
:
this
.
$u
.
color
[
'
primary
'
];
},
showLineChange
(
index
)
{
this
.
showLine
=
!
index
;
}
}
}
}
}
}
...
...
pages/componentsC/test/index.vue
View file @
a9758b91
<
template
>
<
template
>
<view>
<view
style=
"padding-top: 200px;"
>
<u-
popup
v-model=
"show"
@
close=
"close"
>
<u-
button
@
click=
"show = true"
:custom-style=
"
{
<view>
出淤泥而不染,濯清涟而不妖
</view>
color: 'red',
</u-popup>
borderColor: 'blue'
<u-button
@
click=
"show = true
"
>
打开
</u-button>
}
">打开
</u-button>
</view>
</view>
</
template
>
</
template
>
...
@@ -11,12 +11,28 @@
...
@@ -11,12 +11,28 @@
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
show
:
false
show
:
true
,
list
:
[{
name
:
'
待收货
'
},
{
name
:
'
待付款
'
},
{
name
:
'
待评价
'
}],
current
:
0
}
}
},
},
onLoad
()
{
// setTimeout(() => {
// this.show = false;
// }, 2000)
},
methods
:
{
methods
:
{
close
()
{
close
()
{
console
.
log
(
'
close
'
);
//console.log('close');
},
change
(
index
)
{
this
.
current
=
index
;
}
}
}
}
}
}
...
...
pages/example/js.config.js
View file @
a9758b91
...
@@ -22,6 +22,11 @@ export default [
...
@@ -22,6 +22,11 @@ export default [
{
{
groupName
:
'
工具库
'
,
groupName
:
'
工具库
'
,
list
:
[
list
:
[
{
path
:
'
debounce
'
,
icon
:
'
debounce
'
,
title
:
'
throttle | debounce 节流防抖
'
,
},
{
{
path
:
'
deepMerge
'
,
path
:
'
deepMerge
'
,
icon
:
'
deepMerge
'
,
icon
:
'
deepMerge
'
,
...
...
pages/library/debounce/index.vue
0 → 100644
View file @
a9758b91
<
template
>
<view
class=
"u-demo"
>
<view
class=
"u-demo-wrap"
>
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-area"
>
<view
class=
"no-mode-here"
>
选择节流或者防抖模式,点击按钮,将会执行回调并显示在下方:
</view>
<view
class=
"u-demo-result-line"
v-if=
"result.length"
>
<view
v-for=
"(item, index) in result"
:key=
"index"
>
{{
(
index
>=
1
)
?
'
-
'
:
''
}}
回调
</view>
</view>
</view>
</view>
<view
class=
"u-config-wrap"
>
<view
class=
"u-button"
hover-class=
"u-button--hover"
hover-stay-time=
"150"
@
tap=
"btnClick"
>
点击触发
</view>
<view
class=
"u-config-title u-border-bottom"
>
参数配置
</view>
<view
class=
"u-config-item"
>
<view
class=
"u-item-title"
>
模式
</view>
<u-subsection
vibrateShort
:list=
"['节流', '防抖']"
@
change=
"modeChange"
></u-subsection>
</view>
<view
class=
"u-config-item"
>
<view
class=
"u-item-title"
>
时间间隔
</view>
<u-subsection
vibrateShort
current=
"1"
:list=
"['500ms', '1000ms', '2000ms']"
@
change=
"timeoutChange"
></u-subsection>
</view>
<view
class=
"u-config-item"
>
<view
class=
"u-item-title"
>
执行时机
</view>
<u-subsection
vibrateShort
:list=
"['开始处', '结束处']"
@
change=
"immediateChange"
></u-subsection>
</view>
</view>
</view>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
result
:
[],
timeout
:
1000
,
immediate
:
true
,
mode
:
'
throttle
'
}
},
methods
:
{
modeChange
(
index
)
{
this
.
mode
=
index
?
'
debouncd
'
:
'
throttle
'
;
},
timeoutChange
(
index
)
{
this
.
timeout
=
[
500
,
1000
,
2000
][
index
];
},
immediateChange
(
index
)
{
this
.
immediate
=
!
index
;
},
getResult
()
{
if
(
this
.
result
.
length
>=
6
)
this
.
result
=
[];
this
.
result
.
push
(
0
);
},
btnClick
()
{
if
(
this
.
mode
==
'
throttle
'
)
{
this
.
$u
.
throttle
(
this
.
getResult
,
this
.
timeout
,
this
.
immediate
);
}
else
{
this
.
$u
.
debounce
(
this
.
getResult
,
this
.
timeout
,
this
.
immediate
);
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.u-button
{
margin-top
:
50rpx
;
margin-bottom
:
50rpx
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
height
:
80rpx
;
border-radius
:
6rpx
;
border
:
1px
solid
$u-type-primary
;
color
:
$u-type-primary
;
}
.u-button--hover
{
color
:
#fff
;
background-color
:
$u-type-primary
;
}
.u-demo-result-line
{
display
:
flex
;
justify-content
:
center
;
}
</
style
>
uview-ui/components/u-alert-tips/u-alert-tips.vue
View file @
a9758b91
...
@@ -8,13 +8,13 @@
...
@@ -8,13 +8,13 @@
borderColor: borderColor
borderColor: borderColor
}">
}">
<view
class=
"u-icon-wrap"
>
<view
class=
"u-icon-wrap"
>
<u-icon
v-if=
"showIcon"
:name=
"
$u.type2icon(type)"
:size=
"description ? 40 : 32"
class=
"u-icon"
:color=
"typ
e"
></u-icon>
<u-icon
v-if=
"showIcon"
:name=
"
uIcon"
:size=
"description ? 40 : 32"
class=
"u-icon"
:color=
"uIconType"
:custom-style=
"iconStyl
e"
></u-icon>
</view>
</view>
<view
class=
"u-alert-content"
@
tap.stop=
"click"
>
<view
class=
"u-alert-content"
@
tap.stop=
"click"
>
<view
class=
"u-alert-title"
:style=
"
{fontWeight: description ? 500 : 'normal'}
">
<view
class=
"u-alert-title"
:style=
"
[uTitleStyle]
"
>
{{
title
}}
{{
title
}}
</view>
</view>
<view
v-if=
"description"
class=
"u-alert-desc"
>
<view
v-if=
"description"
class=
"u-alert-desc"
:style=
"[descStyle]"
>
{{
description
}}
{{
description
}}
</view>
</view>
</view>
</view>
...
@@ -38,6 +38,10 @@
...
@@ -38,6 +38,10 @@
* @property {String} title 显示的标题文字
* @property {String} title 显示的标题文字
* @property {String} description 辅助性文字,颜色比title浅一点,字号也小一点,可选
* @property {String} description 辅助性文字,颜色比title浅一点,字号也小一点,可选
* @property {String} type 关闭按钮(默认为叉号icon图标)
* @property {String} type 关闭按钮(默认为叉号icon图标)
* @property {String} icon 图标名称
* @property {Object} icon-style 图标的样式,对象形式
* @property {Object} title-style 标题的样式,对象形式
* @property {Object} desc-style 描述的样式,对象形式
* @property {String} close-able 用文字替代关闭图标,close-able为true时有效
* @property {String} close-able 用文字替代关闭图标,close-able为true时有效
* @property {Boolean} show-icon 是否显示左边的辅助图标
* @property {Boolean} show-icon 是否显示左边的辅助图标
* @property {Boolean} show 显示或隐藏组件
* @property {Boolean} show 显示或隐藏组件
...
@@ -96,12 +100,55 @@
...
@@ -96,12 +100,55 @@
show
:
{
show
:
{
type
:
Boolean
,
type
:
Boolean
,
default
:
true
default
:
true
},
// 左边显示的icon
icon
:
{
type
:
String
,
default
:
''
},
// icon的样式
iconStyle
:
{
type
:
Object
,
default
()
{
return
{}
}
}
},
},
// 标题的样式
titleStyle
:
{
type
:
Object
,
default
()
{
return
{}
}
},
// 描述文字的样式
descStyle
:
{
type
:
Object
,
default
()
{
return
{}
}
},
},
data
()
{
data
()
{
return
{
return
{
}
}
},
},
computed
:
{
uTitleStyle
()
{
let
style
=
{};
// 如果有描述文字的话,标题进行加粗
style
.
fontWeight
=
this
.
description
?
500
:
'
normal
'
;
// 将用户传入样式对象和style合并,传入的优先级比style高,同属性会被覆盖
return
this
.
$u
.
deepMerge
(
style
,
this
.
titleStyle
);
},
uIcon
()
{
// 如果有设置icon名称就使用,否则根据type主题,推定一个默认的图标
return
this
.
icon
?
this
.
icon
:
this
.
$u
.
type2icon
(
type
);
},
uIconType
()
{
// 如果有设置图标的样式,优先使用,没有的话,则用type的样式
return
Object
.
keys
(
this
.
iconStyle
).
length
?
''
:
this
.
type
;
}
},
methods
:
{
methods
:
{
// 点击内容
// 点击内容
click
()
{
click
()
{
...
@@ -173,16 +220,6 @@
...
@@ -173,16 +220,6 @@
visibility
:
hidden
;
visibility
:
hidden
;
}
}
@keyframes
myfirst
{
from
{
height
:
100%
;
}
to
{
height
:
0
}
}
.u-icon
{
.u-icon
{
margin-right
:
16rpx
;
margin-right
:
16rpx
;
}
}
...
...
uview-ui/components/u-button/u-button.vue
View file @
a9758b91
...
@@ -205,6 +205,11 @@ export default {
...
@@ -205,6 +205,11 @@ export default {
dataName
:
{
dataName
:
{
type
:
String
,
type
:
String
,
default
:
''
default
:
''
},
// 节流,一定时间内只能触发一次
throttleTime
:
{
type
:
[
String
,
Number
],
default
:
1000
}
}
},
},
computed
:
{
computed
:
{
...
@@ -236,6 +241,8 @@ export default {
...
@@ -236,6 +241,8 @@ export default {
methods
:
{
methods
:
{
// 按钮点击
// 按钮点击
click
(
e
)
{
click
(
e
)
{
// 进行节流控制,每this.throttle毫秒内,只在开始处执行
this
.
$u
.
throttle
(()
=>
{
// 如果按钮时disabled和loading状态,不触发水波纹效果
// 如果按钮时disabled和loading状态,不触发水波纹效果
if
(
this
.
loading
===
true
||
this
.
disabled
===
true
)
return
;
if
(
this
.
loading
===
true
||
this
.
disabled
===
true
)
return
;
// 是否开启水波纹效果
// 是否开启水波纹效果
...
@@ -247,6 +254,7 @@ export default {
...
@@ -247,6 +254,7 @@ export default {
});
});
}
}
this
.
$emit
(
'
click
'
,
e
);
this
.
$emit
(
'
click
'
,
e
);
},
this
.
throttleTime
);
},
},
// 查询按钮的节点信息
// 查询按钮的节点信息
getWaveQuery
(
e
)
{
getWaveQuery
(
e
)
{
...
...
uview-ui/components/u-field/u-field.vue
View file @
a9758b91
...
@@ -183,6 +183,11 @@ export default {
...
@@ -183,6 +183,11 @@ export default {
type
:
Boolean
,
type
:
Boolean
,
default
:
true
default
:
true
},
},
// 是否自动去除两端的空格
trim
:
{
type
:
Boolean
,
default
:
true
}
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -241,7 +246,10 @@ export default {
...
@@ -241,7 +246,10 @@ export default {
},
},
methods
:
{
methods
:
{
onInput
(
event
)
{
onInput
(
event
)
{
this
.
$emit
(
'
input
'
,
event
.
target
.
value
);
let
value
=
event
.
detail
.
value
;
// 判断是否去除空格
if
(
this
.
trim
)
value
=
this
.
$u
.
trim
(
value
);
this
.
$emit
(
'
input
'
,
value
);
},
},
onFocus
(
event
)
{
onFocus
(
event
)
{
this
.
focused
=
true
;
this
.
focused
=
true
;
...
...
uview-ui/components/u-form-item/u-form-item.vue
View file @
a9758b91
...
@@ -3,11 +3,11 @@
...
@@ -3,11 +3,11 @@
<view
class=
"u-form-item__body"
:style=
"
{
<view
class=
"u-form-item__body"
:style=
"
{
flexDirection: elLabelPosition == 'left' ? 'row' : 'column'
flexDirection: elLabelPosition == 'left' ? 'row' : 'column'
}">
}">
<view
class=
"u-form-item--left"
:style=
"
{
<!-- 微信小程序中,将一个参数设置空字符串,结果会变成字符串"true" -->
<view
class=
"u-form-item--left"
v-if=
"label !== '' && label !== 'true'"
:style=
"
{
width: elLabelPosition == 'left' ? $u.addUnit(elLabelWidth) : '100%',
width: elLabelPosition == 'left' ? $u.addUnit(elLabelWidth) : '100%',
flex: `0 0 ${elLabelPosition == 'left' ? $u.addUnit(elLabelWidth) : '100%'}`,
flex: `0 0 ${elLabelPosition == 'left' ? $u.addUnit(elLabelWidth) : '100%'}`,
marginBottom: elLabelPosition == 'left' ? 0 : '10rpx',
marginBottom: elLabelPosition == 'left' ? 0 : '10rpx',
}">
}">
<!-- 为了块对齐 -->
<!-- 为了块对齐 -->
<view
class=
"u-form-item--left__content"
>
<view
class=
"u-form-item--left__content"
>
...
@@ -182,8 +182,8 @@ export default {
...
@@ -182,8 +182,8 @@ export default {
},
},
// label的宽度
// label的宽度
elLabelWidth
()
{
elLabelWidth
()
{
// label默认宽度为90,优先使用本组件的值,如果没有,则用u-form的值
// label默认宽度为90,优先使用本组件的值,如果没有
(如果设置为0,也算是配置了值,依然起效)
,则用u-form的值
return
this
.
labelWidth
?
this
.
labelWidth
:
(
this
.
parent
?
this
.
parent
.
labelWidth
:
90
);
return
(
this
.
labelWidth
!=
0
||
this
.
labelWidth
!=
''
)
?
this
.
labelWidth
:
(
this
.
parent
?
this
.
parent
.
labelWidth
:
90
);
},
},
// label的样式
// label的样式
elLabelStyle
()
{
elLabelStyle
()
{
...
...
uview-ui/components/u-icon/u-icon.vue
View file @
a9758b91
...
@@ -143,7 +143,7 @@ export default {
...
@@ -143,7 +143,7 @@ export default {
// 用于解决某些情况下,让图标垂直居中的用途
// 用于解决某些情况下,让图标垂直居中的用途
top
:
{
top
:
{
type
:
[
String
,
Number
],
type
:
[
String
,
Number
],
default
:
''
default
:
0
}
}
},
},
computed
:
{
computed
:
{
...
@@ -167,8 +167,8 @@ export default {
...
@@ -167,8 +167,8 @@ export default {
style
=
{
style
=
{
fontSize
:
this
.
size
==
'
inherit
'
?
'
inherit
'
:
this
.
$u
.
addUnit
(
this
.
size
),
fontSize
:
this
.
size
==
'
inherit
'
?
'
inherit
'
:
this
.
$u
.
addUnit
(
this
.
size
),
fontWeight
:
this
.
bold
?
'
bold
'
:
'
normal
'
,
fontWeight
:
this
.
bold
?
'
bold
'
:
'
normal
'
,
//
安卓和iOS各
需要设置一个到顶部的距离,才能更好的垂直居中
//
某些特殊情况
需要设置一个到顶部的距离,才能更好的垂直居中
top
:
this
.
top
===
''
?
(
this
.
$u
.
os
==
'
ios
'
?
'
2rpx
'
:
'
4rpx
'
)
:
0
top
:
this
.
$u
.
addUnit
(
this
.
top
)
};
};
// 非主题色值时,才当作颜色值
// 非主题色值时,才当作颜色值
if
(
this
.
color
&&
!
this
.
$u
.
config
.
type
.
includes
(
this
.
color
))
style
.
color
=
this
.
color
;
if
(
this
.
color
&&
!
this
.
$u
.
config
.
type
.
includes
(
this
.
color
))
style
.
color
=
this
.
color
;
...
...
uview-ui/components/u-input/u-input.vue
View file @
a9758b91
...
@@ -72,7 +72,7 @@
...
@@ -72,7 +72,7 @@
<
script
>
<
script
>
import
Emitter
from
'
../../libs/util/emitter.js
'
;
import
Emitter
from
'
../../libs/util/emitter.js
'
;
/**
/**
* input 输入框
* input 输入框
* @description 此组件为一个输入框,默认没有边框和样式,是专门为配合表单组件u-form而设计的,利用它可以快速实现表单验证,输入内容,下拉选择等功能。
* @description 此组件为一个输入框,默认没有边框和样式,是专门为配合表单组件u-form而设计的,利用它可以快速实现表单验证,输入内容,下拉选择等功能。
* @tutorial http://uviewui.com/components/input.html
* @tutorial http://uviewui.com/components/input.html
...
@@ -201,6 +201,11 @@ export default {
...
@@ -201,6 +201,11 @@ export default {
selectionEnd
:
{
selectionEnd
:
{
type
:
[
Number
,
String
],
type
:
[
Number
,
String
],
default
:
-
1
default
:
-
1
},
// 是否自动去除两端的空格
trim
:
{
type
:
Boolean
,
default
:
true
}
}
},
},
data
()
{
data
()
{
...
@@ -260,15 +265,18 @@ export default {
...
@@ -260,15 +265,18 @@ export default {
* @param event
* @param event
*/
*/
handleInput
(
event
)
{
handleInput
(
event
)
{
let
value
=
event
.
detail
.
value
;
// 判断是否去除空格
if
(
this
.
trim
)
value
=
this
.
$u
.
trim
(
value
);
// 当前model 赋值
// 当前model 赋值
this
.
defaultValue
=
event
.
detail
.
value
;
this
.
defaultValue
=
value
;
// vue 原生的方法 return 出去
// vue 原生的方法 return 出去
this
.
$emit
(
'
input
'
,
event
.
detail
.
value
);
this
.
$emit
(
'
input
'
,
value
);
// 过一个生命周期再发送事件给u-form-item,否则this.$emit('input')更新了父组件的值,但是微信小程序上
// 过一个生命周期再发送事件给u-form-item,否则this.$emit('input')更新了父组件的值,但是微信小程序上
// 尚未更新到u-form-item,导致获取的值为空,从而校验混论
// 尚未更新到u-form-item,导致获取的值为空,从而校验混论
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
// 将当前的值发送到 u-form-item 进行校验
// 将当前的值发送到 u-form-item 进行校验
this
.
dispatch
(
'
u-form-item
'
,
'
on-form-change
'
,
event
.
detail
.
value
);
this
.
dispatch
(
'
u-form-item
'
,
'
on-form-change
'
,
value
);
});
});
},
},
/**
/**
...
...
uview-ui/components/u-lazy-load/u-lazy-load.vue
View file @
a9758b91
...
@@ -114,7 +114,7 @@
...
@@ -114,7 +114,7 @@
},
},
// 计算图片的高度,可能为auto,带%,或者直接数值
// 计算图片的高度,可能为auto,带%,或者直接数值
imgHeight
()
{
imgHeight
()
{
return
this
.
height
==
'
auto
'
?
'
auto
'
:
String
(
this
.
height
).
indexOf
(
'
%
'
)
!=
-
1
?
this
.
height
:
this
.
height
+
'
rpx
'
;
return
this
.
$u
.
addUnit
(
this
.
height
)
;
}
}
},
},
created
()
{
created
()
{
...
@@ -133,9 +133,18 @@
...
@@ -133,9 +133,18 @@
this
.
time
=
this
.
duration
;
this
.
time
=
this
.
duration
;
this
.
opacity
=
1
;
this
.
opacity
=
1
;
},
30
)
},
30
)
},
// 图片路径发生变化时,需要重新标记一些变量,否则会一直卡在某一个状态,比如isError
image
(
n
)
{
this
.
init
();
}
}
},
},
methods
:
{
methods
:
{
// 用于重新初始化
init
()
{
this
.
isError
=
false
;
this
.
loadStatus
=
''
;
},
// 点击图片触发的事件,loadlazy-还是懒加载中状态,loading-图片正在加载,loaded-图片加加载完成
// 点击图片触发的事件,loadlazy-还是懒加载中状态,loading-图片正在加载,loaded-图片加加载完成
clickImg
()
{
clickImg
()
{
let
whichImg
=
''
;
let
whichImg
=
''
;
...
...
uview-ui/components/u-loading-page/u-loading-page.vue
0 → 100644
View file @
a9758b91
<
template
>
<view
class=
"u-loading-page"
>
</view>
</
template
>
<
script
>
export
default
{
props
:
{
},
data
()
{
return
{
}
},
methods
:
{
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
uview-ui/components/u-navbar/u-navbar.vue
View file @
a9758b91
...
@@ -221,7 +221,9 @@
...
@@ -221,7 +221,9 @@
goBack
()
{
goBack
()
{
// 如果自定义了点击返回按钮的函数,则执行,否则执行返回逻辑
// 如果自定义了点击返回按钮的函数,则执行,否则执行返回逻辑
if
(
typeof
this
.
customBack
===
'
function
'
)
{
if
(
typeof
this
.
customBack
===
'
function
'
)
{
this
.
customBack
();
// 在微信,支付宝等环境(H5正常),会导致父组件定义的customBack()函数体中的this变成子组件的this
// 通过bind()方法,绑定父组件的this,让this.customBack()的this为父组件的上下文
this
.
customBack
.
bind
(
this
.
$u
.
$parent
.
call
(
this
))();
}
else
{
}
else
{
uni
.
navigateBack
();
uni
.
navigateBack
();
}
}
...
...
uview-ui/components/u-number-box/u-number-box.vue
View file @
a9758b91
<
template
>
<
template
>
<view
class=
"u-numberbox"
>
<view
class=
"u-numberbox"
>
<view
class=
"u-icon-minus"
@
touchstart.stop
=
"btnTouchStart('minus')"
@
touchend.stop
=
"clearTimer"
:class=
"
{ 'u-icon-disabled': disabled || inputVal
<
=
min
}"
<view
class=
"u-icon-minus"
@
touchstart.stop
.prevent=
"btnTouchStart('minus')"
@
touchend.stop.prevent
=
"clearTimer"
:class=
"
{ 'u-icon-disabled': disabled || inputVal
<
=
min
}"
:style=
"
{
:style=
"
{
background: bgColor,
background: bgColor,
height: inputHeight + 'rpx',
height: inputHeight + 'rpx',
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
height: inputHeight + 'rpx',
height: inputHeight + 'rpx',
width: inputWidth + 'rpx'
width: inputWidth + 'rpx'
}" />
}" />
<view
class=
"u-icon-plus"
@
touchstart.stop
=
"btnTouchStart('plus')"
@
touchend.stop
=
"clearTimer"
:class=
"
{ 'u-icon-disabled': disabled || inputVal >= max }"
<view
class=
"u-icon-plus"
@
touchstart.stop
.prevent=
"btnTouchStart('plus')"
@
touchend.stop.prevent
=
"clearTimer"
:class=
"
{ 'u-icon-disabled': disabled || inputVal >= max }"
:style="{
:style="{
background: bgColor,
background: bgColor,
height: inputHeight + 'rpx',
height: inputHeight + 'rpx',
...
...
uview-ui/components/u-parse/libs/MpHtmlParser.js
View file @
a9758b91
/**
/**
* html 解析器
* html 解析器
* @tutorial https://github.com/jin-yufeng/Parser
* @tutorial https://github.com/jin-yufeng/Parser
* @version 202007
19
* @version 202007
28
* @author JinYufeng
* @author JinYufeng
* @listens MIT
* @listens MIT
*/
*/
...
@@ -102,9 +102,16 @@ MpHtmlParser.prototype.setText = function() {
...
@@ -102,9 +102,16 @@ MpHtmlParser.prototype.setText = function() {
}
}
if
(
!
this
.
pre
)
{
if
(
!
this
.
pre
)
{
// 合并空白符
// 合并空白符
var
tmp
=
[];
var
flag
,
tmp
=
[];
for
(
let
i
=
text
.
length
,
c
;
c
=
text
[
--
i
];)
for
(
let
i
=
text
.
length
,
c
;
c
=
text
[
--
i
];)
if
(
!
blankChar
[
c
]
||
(
!
blankChar
[
tmp
[
0
]]
&&
(
c
=
'
'
)))
tmp
.
unshift
(
c
);
if
(
!
blankChar
[
c
])
{
tmp
.
unshift
(
c
);
if
(
!
flag
)
flag
=
1
;
}
else
{
if
(
tmp
[
0
]
!=
'
'
)
tmp
.
unshift
(
'
'
);
if
(
c
==
'
\n
'
&&
flag
==
void
0
)
flag
=
0
;
}
if
(
flag
==
0
)
return
;
text
=
tmp
.
join
(
''
);
text
=
tmp
.
join
(
''
);
}
}
this
.
siblings
().
push
({
this
.
siblings
().
push
({
...
@@ -119,6 +126,7 @@ MpHtmlParser.prototype.setNode = function() {
...
@@ -119,6 +126,7 @@ MpHtmlParser.prototype.setNode = function() {
attrs
:
this
.
attrs
attrs
:
this
.
attrs
},
},
close
=
cfg
.
selfClosingTags
[
node
.
name
];
close
=
cfg
.
selfClosingTags
[
node
.
name
];
if
(
this
.
options
.
nodes
.
length
)
node
.
type
=
'
node
'
;
this
.
attrs
=
{};
this
.
attrs
=
{};
if
(
!
cfg
.
ignoreTags
[
node
.
name
])
{
if
(
!
cfg
.
ignoreTags
[
node
.
name
])
{
// 处理属性
// 处理属性
...
@@ -189,6 +197,7 @@ MpHtmlParser.prototype.setNode = function() {
...
@@ -189,6 +197,7 @@ MpHtmlParser.prototype.setNode = function() {
attrs
.
height
=
void
0
;
attrs
.
height
=
void
0
;
}
}
}
}
if
(
!
attrs
.
controls
&&
!
attrs
.
autoplay
)
attrs
.
controls
=
'
T
'
;
attrs
.
source
=
[];
attrs
.
source
=
[];
if
(
attrs
.
src
)
{
if
(
attrs
.
src
)
{
attrs
.
source
.
push
(
attrs
.
src
);
attrs
.
source
.
push
(
attrs
.
src
);
...
@@ -217,8 +226,7 @@ MpHtmlParser.prototype.setNode = function() {
...
@@ -217,8 +226,7 @@ MpHtmlParser.prototype.setNode = function() {
if
(
info
.
length
<
2
)
continue
;
if
(
info
.
length
<
2
)
continue
;
let
key
=
info
[
0
].
trim
().
toLowerCase
(),
let
key
=
info
[
0
].
trim
().
toLowerCase
(),
value
=
info
.
slice
(
1
).
join
(
'
:
'
).
trim
();
value
=
info
.
slice
(
1
).
join
(
'
:
'
).
trim
();
if
(
value
.
includes
(
'
-webkit
'
)
||
value
.
includes
(
'
-moz
'
)
||
value
.
includes
(
'
-ms
'
)
||
value
.
includes
(
'
-o
'
)
||
value
.
includes
(
if
(
value
[
0
]
==
'
-
'
||
value
.
includes
(
'
safe
'
))
'
safe
'
))
style
+=
`;
${
key
}
:
${
value
}
`
;
style
+=
`;
${
key
}
:
${
value
}
`
;
else
if
(
!
styleObj
[
key
]
||
value
.
includes
(
'
import
'
)
||
!
styleObj
[
key
].
includes
(
'
import
'
))
else
if
(
!
styleObj
[
key
]
||
value
.
includes
(
'
import
'
)
||
!
styleObj
[
key
].
includes
(
'
import
'
))
styleObj
[
key
]
=
value
;
styleObj
[
key
]
=
value
;
...
@@ -359,13 +367,6 @@ MpHtmlParser.prototype.popNode = function(node) {
...
@@ -359,13 +367,6 @@ MpHtmlParser.prototype.popNode = function(node) {
// 替换一些标签名
// 替换一些标签名
if
(
cfg
.
blockTags
[
node
.
name
])
node
.
name
=
'
div
'
;
if
(
cfg
.
blockTags
[
node
.
name
])
node
.
name
=
'
div
'
;
else
if
(
!
cfg
.
trustTags
[
node
.
name
])
node
.
name
=
'
span
'
;
else
if
(
!
cfg
.
trustTags
[
node
.
name
])
node
.
name
=
'
span
'
;
// 去除块标签前后空串
if
(
node
.
name
==
'
div
'
||
node
.
name
==
'
p
'
||
node
.
name
[
0
]
==
'
t
'
)
{
if
(
len
>
1
&&
siblings
[
len
-
2
].
text
==
'
'
)
siblings
.
splice
(
--
len
-
1
,
1
);
if
(
childs
.
length
&&
childs
[
childs
.
length
-
1
].
text
==
'
'
)
childs
.
pop
();
}
// 处理列表
// 处理列表
if
(
node
.
c
&&
(
node
.
name
==
'
ul
'
||
node
.
name
==
'
ol
'
))
{
if
(
node
.
c
&&
(
node
.
name
==
'
ul
'
||
node
.
name
==
'
ol
'
))
{
if
((
node
.
attrs
.
style
||
''
).
includes
(
'
list-style:none
'
))
{
if
((
node
.
attrs
.
style
||
''
).
includes
(
'
list-style:none
'
))
{
...
...
uview-ui/components/u-parse/libs/config.js
View file @
a9758b91
/* 配置文件 */
/* 配置文件 */
// #ifdef MP-WEIXIN
var
cfg
=
{
const
canIUse
=
wx
.
canIUse
(
'
editor
'
);
// 高基础库标识,用于兼容
// #endif
module
.
exports
=
{
// 出错占位图
// 出错占位图
errorImg
:
null
,
errorImg
:
null
,
// 过滤器函数
// 过滤器函数
...
@@ -32,41 +29,15 @@ module.exports = {
...
@@ -32,41 +29,15 @@ module.exports = {
blankChar
:
makeMap
(
'
,
\
xA0,
\t
,
\r
,
\n
,
\
f
'
),
blankChar
:
makeMap
(
'
,
\
xA0,
\t
,
\r
,
\n
,
\
f
'
),
boolAttrs
:
makeMap
(
'
allowfullscreen,autoplay,autostart,controls,ignore,loop,muted
'
),
boolAttrs
:
makeMap
(
'
allowfullscreen,autoplay,autostart,controls,ignore,loop,muted
'
),
// 块级标签,将被转为 div
// 块级标签,将被转为 div
blockTags
:
makeMap
(
'
address,article,aside,body,caption,center,cite,footer,header,html,nav,section
'
+
(
blockTags
:
makeMap
(
'
address,article,aside,body,caption,center,cite,footer,header,html,nav,pre,section
'
),
// #ifdef MP-WEIXIN
canIUse
?
''
:
// #endif
'
,pre
'
)),
// 将被移除的标签
// 将被移除的标签
ignoreTags
:
makeMap
(
ignoreTags
:
makeMap
(
'
area,base,canvas,frame,iframe,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr
'
),
'
area,base,canvas,frame,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr
'
// #ifdef MP-WEIXIN
+
(
canIUse
?
'
,rp
'
:
''
)
// #endif
// #ifndef APP-PLUS
+
'
,iframe
'
// #endif
),
// 只能被 rich-text 显示的标签
// 只能被 rich-text 显示的标签
richOnlyTags
:
makeMap
(
'
a,colgroup,fieldset,legend,table
'
richOnlyTags
:
makeMap
(
'
a,colgroup,fieldset,legend,table
'
),
// #ifdef MP-WEIXIN
+
(
canIUse
?
'
,bdi,bdo,caption,rt,ruby
'
:
''
)
// #endif
),
// 自闭合的标签
// 自闭合的标签
selfClosingTags
:
makeMap
(
selfClosingTags
:
makeMap
(
'
area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr
'
),
'
area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr
'
),
// 信任的标签
// 信任的标签
trustTags
:
makeMap
(
trustTags
:
makeMap
(
'
a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video
'
),
'
a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video
'
// #ifdef MP-WEIXIN
+
(
canIUse
?
'
,bdi,bdo,caption,pre,rt,ruby
'
:
''
)
// #endif
// #ifdef APP-PLUS
+
'
,embed,iframe
'
// #endif
),
// 默认的标签样式
// 默认的标签样式
userAgentStyles
:
{
userAgentStyles
:
{
address
:
'
font-style:italic
'
,
address
:
'
font-style:italic
'
,
...
@@ -91,3 +62,19 @@ function makeMap(str) {
...
@@ -91,3 +62,19 @@ function makeMap(str) {
map
[
list
[
i
]]
=
true
;
map
[
list
[
i
]]
=
true
;
return
map
;
return
map
;
}
}
// #ifdef MP-WEIXIN
if
(
wx
.
canIUse
(
'
editor
'
))
{
cfg
.
blockTags
.
pre
=
void
0
;
cfg
.
ignoreTags
.
rp
=
true
;
Object
.
assign
(
cfg
.
richOnlyTags
,
makeMap
(
'
bdi,bdo,caption,rt,ruby
'
));
Object
.
assign
(
cfg
.
trustTags
,
makeMap
(
'
bdi,bdo,caption,pre,rt,ruby
'
));
}
// #endif
// #ifdef APP-PLUS
cfg
.
ignoreTags
.
iframe
=
void
0
;
Object
.
assign
(
cfg
.
trustTags
,
makeMap
(
'
embed,iframe
'
));
// #endif
module
.
exports
=
cfg
;
uview-ui/components/u-parse/libs/trees.vue
View file @
a9758b91
...
@@ -3,8 +3,8 @@
...
@@ -3,8 +3,8 @@
<block
v-for=
"(n, i) in nodes"
v-bind:key=
"i"
>
<block
v-for=
"(n, i) in nodes"
v-bind:key=
"i"
>
<!--图片-->
<!--图片-->
<view
v-if=
"n.name=='img'"
:class=
"'_img '+n.attrs.class"
:style=
"n.attrs.style"
:data-attrs=
"n.attrs"
@
tap=
"imgtap"
>
<view
v-if=
"n.name=='img'"
:class=
"'_img '+n.attrs.class"
:style=
"n.attrs.style"
:data-attrs=
"n.attrs"
@
tap=
"imgtap"
>
<rich-text
v-if=
"c
ontrols[i]!=0"
:nodes=
"[
{attrs:{src:loading
&&
(controls[i]||0)
<2
?
loading:
(
lazyLoad
&&!
controls
[
i
]?
placeholder:(controls
[i]=
=3?errorImg:n.attrs.src||'')),alt:n.attrs.alt||'',width:n.attrs.width||'',style:'-webkit-touch-callout:none;max-width:100%;display:block'+(n.attrs.height?';height:'+n.attrs.height:'')},name:'img'}]"
/>
<rich-text
v-if=
"c
trl[i]!=0"
:nodes=
"[
{attrs:{src:loading
&&
(ctrl[i]||0)
<2
?
loading:
(
lazyLoad
&&!
ctrl
[
i
]?
placeholder:(ctrl
[i]=
=3?errorImg:n.attrs.src||'')),alt:n.attrs.alt||'',width:n.attrs.width||'',style:'-webkit-touch-callout:none;max-width:100%;display:block'+(n.attrs.height?';height:'+n.attrs.height:'')},name:'img'}]"
/>
<image
class=
"_image"
:src=
"lazyLoad&&!c
ontrols
[i]?placeholder:n.attrs.src"
:lazy-load=
"lazyLoad"
<image
class=
"_image"
:src=
"lazyLoad&&!c
trl
[i]?placeholder:n.attrs.src"
:lazy-load=
"lazyLoad"
:show-menu-by-longpress=
"!n.attrs.ignore"
:data-i=
"i"
:data-index=
"n.attrs.i"
data-source=
"img"
@
load=
"loadImg"
:show-menu-by-longpress=
"!n.attrs.ignore"
:data-i=
"i"
:data-index=
"n.attrs.i"
data-source=
"img"
@
load=
"loadImg"
@
error=
"error"
/>
@
error=
"error"
/>
</view>
</view>
...
@@ -14,15 +14,15 @@
...
@@ -14,15 +14,15 @@
<text
v-else-if=
"n.name=='br'"
>
\n
</text>
<text
v-else-if=
"n.name=='br'"
>
\n
</text>
<!--#endif-->
<!--#endif-->
<!--视频-->
<!--视频-->
<view
v-else-if=
"((n.lazyLoad&&!n.attrs.autoplay)||(n.name=='video'&&!loadVideo))&&c
ontrols
[i]==undefined"
:id=
"n.attrs.id"
:class=
"'_video '+(n.attrs.class||'')"
<view
v-else-if=
"((n.lazyLoad&&!n.attrs.autoplay)||(n.name=='video'&&!loadVideo))&&c
trl
[i]==undefined"
:id=
"n.attrs.id"
:class=
"'_video '+(n.attrs.class||'')"
:style=
"n.attrs.style"
:data-i=
"i"
@
tap=
"_loadVideo"
/>
:style=
"n.attrs.style"
:data-i=
"i"
@
tap=
"_loadVideo"
/>
<video
v-else-if=
"n.name=='video'"
:id=
"n.attrs.id"
:class=
"n.attrs.class"
:style=
"n.attrs.style"
:autoplay=
"n.attrs.autoplay||c
ontrols
[i]==0"
<video
v-else-if=
"n.name=='video'"
:id=
"n.attrs.id"
:class=
"n.attrs.class"
:style=
"n.attrs.style"
:autoplay=
"n.attrs.autoplay||c
trl
[i]==0"
:controls=
"
!n.attrs.autoplay||n.attrs.controls"
:loop=
"n.attrs.loop"
:muted=
"n.attrs.muted"
:poster=
"n.attrs.poster"
:src=
"n.attrs.source[controls
[i]||0]"
:controls=
"
n.attrs.controls"
:loop=
"n.attrs.loop"
:muted=
"n.attrs.muted"
:poster=
"n.attrs.poster"
:src=
"n.attrs.source[ctrl
[i]||0]"
:unit-id=
"n.attrs['unit-id']"
:data-id=
"n.attrs.id"
:data-i=
"i"
data-source=
"video"
@
error=
"error"
@
play=
"play"
/>
:unit-id=
"n.attrs['unit-id']"
:data-id=
"n.attrs.id"
:data-i=
"i"
data-source=
"video"
@
error=
"error"
@
play=
"play"
/>
<!--音频-->
<!--音频-->
<audio
v-else-if=
"n.name=='audio'"
:ref=
"n.attrs.id"
:class=
"n.attrs.class"
:style=
"n.attrs.style"
:author=
"n.attrs.author"
<audio
v-else-if=
"n.name=='audio'"
:ref=
"n.attrs.id"
:class=
"n.attrs.class"
:style=
"n.attrs.style"
:author=
"n.attrs.author"
:autoplay=
"n.attrs.autoplay"
:controls=
"
!n.attrs.autoplay||
n.attrs.controls"
:loop=
"n.attrs.loop"
:name=
"n.attrs.name"
:poster=
"n.attrs.poster"
:autoplay=
"n.attrs.autoplay"
:controls=
"n.attrs.controls"
:loop=
"n.attrs.loop"
:name=
"n.attrs.name"
:poster=
"n.attrs.poster"
:src=
"n.attrs.source[c
ontrols
[i]||0]"
:data-i=
"i"
:data-id=
"n.attrs.id"
data-source=
"audio"
:src=
"n.attrs.source[c
trl
[i]||0]"
:data-i=
"i"
:data-id=
"n.attrs.id"
data-source=
"audio"
@
error.native=
"error"
@
play.native=
"play"
/>
@
error.native=
"error"
@
play.native=
"play"
/>
<!--链接-->
<!--链接-->
<view
v-else-if=
"n.name=='a'"
:id=
"n.attrs.id"
:class=
"'_a '+(n.attrs.class||'')"
hover-class=
"_hover"
:style=
"n.attrs.style"
<view
v-else-if=
"n.name=='a'"
:id=
"n.attrs.id"
:class=
"'_a '+(n.attrs.class||'')"
hover-class=
"_hover"
:style=
"n.attrs.style"
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
<!--广告-->
<!--广告-->
<!--
<ad
v-else-if=
"n.name=='ad'"
:class=
"n.attrs.class"
:style=
"n.attrs.style"
:unit-id=
"n.attrs['unit-id']"
:appid=
"n.attrs.appid"
:apid=
"n.attrs.apid"
:type=
"n.attrs.type"
:adpid=
"n.attrs.adpid"
data-source=
"ad"
@
error=
"error"
/>
-->
<!--
<ad
v-else-if=
"n.name=='ad'"
:class=
"n.attrs.class"
:style=
"n.attrs.style"
:unit-id=
"n.attrs['unit-id']"
:appid=
"n.attrs.appid"
:apid=
"n.attrs.apid"
:type=
"n.attrs.type"
:adpid=
"n.attrs.adpid"
data-source=
"ad"
@
error=
"error"
/>
-->
<!--列表-->
<!--列表-->
<view
v-else-if=
"n.name=='li'"
:id=
"n.attrs.id"
:class=
"n.attrs.class"
:style=
"(n.attrs.style||'')+';display:flex'"
>
<view
v-else-if=
"n.name=='li'"
:id=
"n.attrs.id"
:class=
"n.attrs.class"
:style=
"(n.attrs.style||'')+';display:flex
;flex-direction:row
'"
>
<view
v-if=
"n.type=='ol'"
class=
"_ol-bef"
>
{{
n
.
num
}}
</view>
<view
v-if=
"n.type=='ol'"
class=
"_ol-bef"
>
{{
n
.
num
}}
</view>
<view
v-else
class=
"_ul-bef"
>
<view
v-else
class=
"_ul-bef"
>
<view
v-if=
"n.floor%3==0"
class=
"_ul-p1"
>
█
</view>
<view
v-if=
"n.floor%3==0"
class=
"_ul-p1"
>
█
</view>
...
@@ -80,7 +80,7 @@
...
@@ -80,7 +80,7 @@
name
:
'
trees
'
,
name
:
'
trees
'
,
data
()
{
data
()
{
return
{
return
{
c
ontrols
:
[],
c
trl
:
[],
placeholder
:
'
data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="300" height="225"/>
'
,
placeholder
:
'
data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="300" height="225"/>
'
,
errorImg
,
errorImg
,
loadVideo
:
typeof
plus
==
'
undefined
'
,
loadVideo
:
typeof
plus
==
'
undefined
'
,
...
@@ -124,7 +124,7 @@
...
@@ -124,7 +124,7 @@
if
(
res
.
intersectionRatio
)
{
if
(
res
.
intersectionRatio
)
{
for
(
var
j
=
this
.
nodes
.
length
;
j
--
;)
for
(
var
j
=
this
.
nodes
.
length
;
j
--
;)
if
(
this
.
nodes
[
j
].
name
==
'
img
'
)
if
(
this
.
nodes
[
j
].
name
==
'
img
'
)
this
.
$set
(
this
.
c
ontrols
,
j
,
1
);
this
.
$set
(
this
.
c
trl
,
j
,
1
);
this
.
observer
.
disconnect
();
this
.
observer
.
disconnect
();
}
}
})
})
...
@@ -184,23 +184,23 @@
...
@@ -184,23 +184,23 @@
},
},
loadImg
(
e
)
{
loadImg
(
e
)
{
var
i
=
e
.
currentTarget
.
dataset
.
i
;
var
i
=
e
.
currentTarget
.
dataset
.
i
;
if
(
this
.
lazyLoad
&&
!
this
.
c
ontrols
[
i
])
{
if
(
this
.
lazyLoad
&&
!
this
.
c
trl
[
i
])
{
// #ifdef QUICKAPP-WEBVIEW
// #ifdef QUICKAPP-WEBVIEW
this
.
$set
(
this
.
c
ontrols
,
i
,
0
);
this
.
$set
(
this
.
c
trl
,
i
,
0
);
this
.
$nextTick
(
function
()
{
this
.
$nextTick
(
function
()
{
// #endif
// #endif
// #ifndef APP-PLUS
// #ifndef APP-PLUS
this
.
$set
(
this
.
c
ontrols
,
i
,
1
);
this
.
$set
(
this
.
c
trl
,
i
,
1
);
// #endif
// #endif
// #ifdef QUICKAPP-WEBVIEW
// #ifdef QUICKAPP-WEBVIEW
})
})
// #endif
// #endif
}
else
if
(
this
.
loading
&&
this
.
c
ontrols
[
i
]
!=
2
)
{
}
else
if
(
this
.
loading
&&
this
.
c
trl
[
i
]
!=
2
)
{
// #ifdef QUICKAPP-WEBVIEW
// #ifdef QUICKAPP-WEBVIEW
this
.
$set
(
this
.
c
ontrols
,
i
,
0
);
this
.
$set
(
this
.
c
trl
,
i
,
0
);
this
.
$nextTick
(
function
()
{
this
.
$nextTick
(
function
()
{
// #endif
// #endif
this
.
$set
(
this
.
c
ontrols
,
i
,
2
);
this
.
$set
(
this
.
c
trl
,
i
,
2
);
// #ifdef QUICKAPP-WEBVIEW
// #ifdef QUICKAPP-WEBVIEW
})
})
// #endif
// #endif
...
@@ -258,14 +258,14 @@
...
@@ -258,14 +258,14 @@
i
=
target
.
dataset
.
i
;
i
=
target
.
dataset
.
i
;
if
(
source
==
'
video
'
||
source
==
'
audio
'
)
{
if
(
source
==
'
video
'
||
source
==
'
audio
'
)
{
// 加载其他 source
// 加载其他 source
var
index
=
this
.
c
ontrols
[
i
]
?
this
.
controls
[
i
].
i
+
1
:
1
;
var
index
=
this
.
c
trl
[
i
]
?
this
.
ctrl
[
i
].
i
+
1
:
1
;
if
(
index
<
this
.
nodes
[
i
].
attrs
.
source
.
length
)
if
(
index
<
this
.
nodes
[
i
].
attrs
.
source
.
length
)
this
.
$set
(
this
.
c
ontrols
,
i
,
index
);
this
.
$set
(
this
.
c
trl
,
i
,
index
);
if
(
e
.
detail
.
__args__
)
if
(
e
.
detail
.
__args__
)
e
.
detail
=
e
.
detail
.
__args__
[
0
];
e
.
detail
=
e
.
detail
.
__args__
[
0
];
}
else
if
(
errorImg
&&
source
==
'
img
'
)
{
}
else
if
(
errorImg
&&
source
==
'
img
'
)
{
this
.
top
.
imgList
.
setItem
(
target
.
dataset
.
index
,
errorImg
);
this
.
top
.
imgList
.
setItem
(
target
.
dataset
.
index
,
errorImg
);
this
.
$set
(
this
.
c
ontrols
,
i
,
3
);
this
.
$set
(
this
.
c
trl
,
i
,
3
);
}
}
this
.
top
&&
this
.
top
.
$emit
(
'
error
'
,
{
this
.
top
&&
this
.
top
.
$emit
(
'
error
'
,
{
source
,
source
,
...
@@ -274,7 +274,7 @@
...
@@ -274,7 +274,7 @@
});
});
},
},
_loadVideo
(
e
)
{
_loadVideo
(
e
)
{
this
.
$set
(
this
.
c
ontrols
,
e
.
target
.
dataset
.
i
,
0
);
this
.
$set
(
this
.
c
trl
,
e
.
target
.
dataset
.
i
,
0
);
}
}
}
}
}
}
...
@@ -407,12 +407,13 @@
...
@@ -407,12 +407,13 @@
}
}
._ul-bef
{
._ul-bef
{
display
:
block
;
margin
:
0
12px
0
23px
;
margin
:
0
12px
0
23px
;
line-height
:
normal
;
line-height
:
normal
;
}
}
._ol-bef
,
._ol-bef
,
._ul
_
bef
{
._ul
-
bef
{
flex
:
none
;
flex
:
none
;
user-select
:
none
;
user-select
:
none
;
}
}
...
...
uview-ui/components/u-parse/u-parse.vue
View file @
a9758b91
...
@@ -63,7 +63,7 @@
...
@@ -63,7 +63,7 @@
* @event {Function} imgtap 图片点击事件
* @event {Function} imgtap 图片点击事件
* @event {Function} linkpress 链接点击事件
* @event {Function} linkpress 链接点击事件
* @author JinYufeng
* @author JinYufeng
* @version 202007
19
* @version 202007
28
* @listens MIT
* @listens MIT
*/
*/
export
default
{
export
default
{
...
...
uview-ui/components/u-popup/u-popup.vue
View file @
a9758b91
...
@@ -284,6 +284,9 @@ export default {
...
@@ -284,6 +284,9 @@ export default {
this
.
close
();
this
.
close
();
},
},
close
()
{
close
()
{
// 标记关闭是内部发生的,否则修改了value值,导致watch中对value检测,导致再执行一遍close
// 造成@close事件触发两次
this
.
closeFromInner
=
true
;
this
.
change
(
'
showDrawer
'
,
'
visibleSync
'
,
false
);
this
.
change
(
'
showDrawer
'
,
'
visibleSync
'
,
false
);
},
},
// 中部弹出时,需要.u-drawer-content将居中内容,此元素会铺满屏幕,点击需要关闭弹窗
// 中部弹出时,需要.u-drawer-content将居中内容,此元素会铺满屏幕,点击需要关闭弹窗
...
@@ -300,9 +303,6 @@ export default {
...
@@ -300,9 +303,6 @@ export default {
change
(
param1
,
param2
,
status
)
{
change
(
param1
,
param2
,
status
)
{
// 如果this.popup为false,意味着为picker,actionsheet等组件调用了popup组件
// 如果this.popup为false,意味着为picker,actionsheet等组件调用了popup组件
if
(
this
.
popup
==
true
)
{
if
(
this
.
popup
==
true
)
{
// 标记关闭是内部发生的,否则修改了value值,导致watch中对value检测,导致再执行一遍close
// 造成@close事件触发两次
this
.
closeFromInner
=
true
;
this
.
$emit
(
'
input
'
,
status
);
this
.
$emit
(
'
input
'
,
status
);
}
}
this
[
param1
]
=
status
;
this
[
param1
]
=
status
;
...
...
uview-ui/components/u-radio-group/u-radio-group.vue
View file @
a9758b91
...
@@ -53,7 +53,7 @@
...
@@ -53,7 +53,7 @@
// 形状,square为方形,circle为原型
// 形状,square为方形,circle为原型
shape
:
{
shape
:
{
type
:
String
,
type
:
String
,
default
:
'
squar
e
'
default
:
'
circl
e
'
},
},
// 图标的大小,单位rpx
// 图标的大小,单位rpx
iconSize
:
{
iconSize
:
{
...
...
uview-ui/components/u-radio/u-radio.vue
View file @
a9758b91
...
@@ -119,7 +119,7 @@
...
@@ -119,7 +119,7 @@
},
},
iconClass
()
{
iconClass
()
{
let
classes
=
[];
let
classes
=
[];
classes
.
push
(
'
u-radio__icon-wrap--
'
+
this
.
s
hape
);
classes
.
push
(
'
u-radio__icon-wrap--
'
+
this
.
elS
hape
);
if
(
this
.
name
==
this
.
parent
.
value
)
classes
.
push
(
'
u-radio__icon-wrap--checked
'
);
if
(
this
.
name
==
this
.
parent
.
value
)
classes
.
push
(
'
u-radio__icon-wrap--checked
'
);
if
(
this
.
elDisabled
)
classes
.
push
(
'
u-radio__icon-wrap--disabled
'
);
if
(
this
.
elDisabled
)
classes
.
push
(
'
u-radio__icon-wrap--disabled
'
);
if
(
this
.
name
==
this
.
parent
.
value
&&
this
.
elDisabled
)
classes
.
push
(
if
(
this
.
name
==
this
.
parent
.
value
&&
this
.
elDisabled
)
classes
.
push
(
...
...
uview-ui/components/u-read-more/u-read-more.vue
View file @
a9758b91
...
@@ -84,6 +84,11 @@
...
@@ -84,6 +84,11 @@
textIndent
:
{
textIndent
:
{
type
:
String
,
type
:
String
,
default
:
'
2em
'
default
:
'
2em
'
},
// open和close事件时,将此参数返回在回调参数中
index
:
{
type
:
[
Number
,
String
],
default
:
''
}
}
},
},
watch
:
{
watch
:
{
...
@@ -128,6 +133,8 @@
...
@@ -128,6 +133,8 @@
this
.
showMore
=
!
this
.
showMore
;
this
.
showMore
=
!
this
.
showMore
;
// 如果toggle为false,隐藏"收起"部分的内容
// 如果toggle为false,隐藏"收起"部分的内容
if
(
this
.
toggle
==
false
)
this
.
isLongContent
=
false
;
if
(
this
.
toggle
==
false
)
this
.
isLongContent
=
false
;
// 发出打开或者收齐的事件
this
.
$emit
(
this
.
showMore
?
'
open
'
:
'
close
'
,
this
.
index
);
}
}
}
}
};
};
...
...
uview-ui/components/u-section/u-section.vue
View file @
a9758b91
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
}" :class="{
}" :class="{
'u-section--line': showLine
'u-section--line': showLine
}">
}">
<view
class=
"u-section__title__icon-wrap u-flex"
:style=
"[lineStyle]"
>
<view
class=
"u-section__title__icon-wrap u-flex"
:style=
"[lineStyle]"
v-if=
"showLine"
>
<u-icon
top=
"0"
name=
"column-line"
:size=
"fontSize * 1.25"
bold
:color=
"lineColor ? lineColor : color"
></u-icon>
<u-icon
top=
"0"
name=
"column-line"
:size=
"fontSize * 1.25"
bold
:color=
"lineColor ? lineColor : color"
></u-icon>
</view>
</view>
<text
class=
"u-flex u-section__title__text"
>
{{
title
}}
</text>
<text
class=
"u-flex u-section__title__text"
>
{{
title
}}
</text>
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
},
},
fontSize
:
{
fontSize
:
{
type
:
[
Number
,
String
],
type
:
[
Number
,
String
],
default
:
32
default
:
28
},
},
// 主标题是否加粗
// 主标题是否加粗
bold
:
{
bold
:
{
...
...
uview-ui/components/u-skeleton/u-skeleton.vue
View file @
a9758b91
...
@@ -95,7 +95,15 @@
...
@@ -95,7 +95,15 @@
// 查询各节点的信息
// 查询各节点的信息
selecterQueryInfo
()
{
selecterQueryInfo
()
{
// 获取整个父组件容器的高度,当做骨架屏的高度
// 获取整个父组件容器的高度,当做骨架屏的高度
uni
.
createSelectorQuery
().
selectAll
(
'
.u-skeleton
'
).
boundingClientRect
().
exec
((
res
)
=>
{
// 在微信小程序中,如果把骨架屏放入组件中使用的话,需要调in(this)上下文为父组件才有效
let
query
=
''
;
// #ifdef MP-WEIXIN
query
=
uni
.
createSelectorQuery
().
in
(
this
.
$parent
);
// #endif
// #ifndef MP-WEIXIN
query
=
uni
.
createSelectorQuery
()
// #endif
query
.
selectAll
(
'
.u-skeleton
'
).
boundingClientRect
().
exec
((
res
)
=>
{
this
.
windowHeight
=
res
[
0
][
0
].
height
;
this
.
windowHeight
=
res
[
0
][
0
].
height
;
this
.
windowWinth
=
res
[
0
][
0
].
width
;
this
.
windowWinth
=
res
[
0
][
0
].
width
;
this
.
top
=
res
[
0
][
0
].
bottom
-
res
[
0
][
0
].
height
;
this
.
top
=
res
[
0
][
0
].
bottom
-
res
[
0
][
0
].
height
;
...
@@ -110,19 +118,43 @@
...
@@ -110,19 +118,43 @@
},
},
// 矩形元素列表
// 矩形元素列表
getRectEls
()
{
getRectEls
()
{
uni
.
createSelectorQuery
().
selectAll
(
'
.u-skeleton-rect
'
).
boundingClientRect
().
exec
((
res
)
=>
{
let
query
=
''
;
// 在微信小程序中,如果把骨架屏放入组件中使用的话,需要调in(this)上下文为父组件才有效
// #ifdef MP-WEIXIN
query
=
uni
.
createSelectorQuery
().
in
(
this
.
$parent
);
// #endif
// #ifndef MP-WEIXIN
query
=
uni
.
createSelectorQuery
()
// #endif
query
.
selectAll
(
'
.u-skeleton-rect
'
).
boundingClientRect
().
exec
((
res
)
=>
{
this
.
RectNodes
=
res
[
0
];
this
.
RectNodes
=
res
[
0
];
});
});
},
},
// 圆角元素列表
// 圆角元素列表
getFilletEls
()
{
getFilletEls
()
{
uni
.
createSelectorQuery
().
selectAll
(
'
.u-skeleton-fillet
'
).
boundingClientRect
().
exec
((
res
)
=>
{
let
query
=
''
;
// 在微信小程序中,如果把骨架屏放入组件中使用的话,需要调in(this)上下文为父组件才有效
// #ifdef MP-WEIXIN
query
=
uni
.
createSelectorQuery
().
in
(
this
.
$parent
);
// #endif
// #ifndef MP-WEIXIN
query
=
uni
.
createSelectorQuery
()
// #endif
query
.
selectAll
(
'
.u-skeleton-fillet
'
).
boundingClientRect
().
exec
((
res
)
=>
{
this
.
filletNodes
=
res
[
0
];
this
.
filletNodes
=
res
[
0
];
});
});
},
},
// 圆形元素列表
// 圆形元素列表
getCircleEls
()
{
getCircleEls
()
{
uni
.
createSelectorQuery
().
selectAll
(
'
.u-skeleton-circle
'
).
boundingClientRect
().
exec
((
res
)
=>
{
let
query
=
''
;
// 在微信小程序中,如果把骨架屏放入组件中使用的话,需要调in(this)上下文为父组件才有效
// #ifdef MP-WEIXIN
query
=
uni
.
createSelectorQuery
().
in
(
this
.
$parent
);
// #endif
// #ifndef MP-WEIXIN
query
=
uni
.
createSelectorQuery
()
// #endif
query
.
selectAll
(
'
.u-skeleton-circle
'
).
boundingClientRect
().
exec
((
res
)
=>
{
this
.
circleNodes
=
res
[
0
];
this
.
circleNodes
=
res
[
0
];
});
});
}
}
...
...
uview-ui/components/u-sticky/u-sticky.vue
View file @
a9758b91
...
@@ -141,6 +141,9 @@
...
@@ -141,6 +141,9 @@
const
observer
=
this
[
observerName
];
const
observer
=
this
[
observerName
];
observer
&&
observer
.
disconnect
();
observer
&&
observer
.
disconnect
();
},
},
},
beforeDestroy
()
{
this
.
disconnectObserver
(
'
contentObserver
'
);
}
}
};
};
</
script
>
</
script
>
...
...
uview-ui/components/u-switch/u-switch.vue
View file @
a9758b91
<
template
>
<
template
>
<view
class=
"u-switch"
:class=
"[value == true ? 'u-switch--on' : '', disabled ? 'u-switch--disabled' : '']"
@
tap=
"onClick"
<view
class=
"u-switch"
:class=
"[value == true ? 'u-switch--on' : '', disabled ? 'u-switch--disabled' : '']"
@
tap=
"onClick"
:style=
"[switchStyle]"
>
:style=
"[switchStyle]"
>
<view
class=
"u-switch__node node-class"
>
<view
class=
"u-switch__node node-class"
:style=
"
{
width: $u.addUnit(this.size),
height: $u.addUnit(this.size)
}">
<u-loading
:show=
"loading"
class=
"u-switch__loading"
:size=
"size * 0.6"
:color=
"loadingColor"
/>
<u-loading
:show=
"loading"
class=
"u-switch__loading"
:size=
"size * 0.6"
:color=
"loadingColor"
/>
</view>
</view>
</view>
</view>
...
@@ -128,8 +131,6 @@
...
@@ -128,8 +131,6 @@
left
:
0
;
left
:
0
;
border-radius
:
100%
;
border-radius
:
100%
;
z-index
:
1
;
z-index
:
1
;
width
:
1em
;
height
:
1em
;
background-color
:
#fff
;
background-color
:
#fff
;
background-color
:
#fff
;
background-color
:
#fff
;
box-shadow
:
0
3px
1px
0
rgba
(
0
,
0
,
0
,
0
.05
)
,
0
2px
2px
0
rgba
(
0
,
0
,
0
,
0
.1
)
,
0
3px
3px
0
rgba
(
0
,
0
,
0
,
0
.05
);
box-shadow
:
0
3px
1px
0
rgba
(
0
,
0
,
0
,
0
.05
)
,
0
2px
2px
0
rgba
(
0
,
0
,
0
,
0
.1
)
,
0
3px
3px
0
rgba
(
0
,
0
,
0
,
0
.05
);
...
...
uview-ui/components/u-tabbar/u-tabbar.vue
View file @
a9758b91
...
@@ -127,7 +127,7 @@
...
@@ -127,7 +127,7 @@
},
},
created
()
{
created
()
{
// 是否隐藏原生tabbar
// 是否隐藏原生tabbar
if
(
this
.
borderTop
)
uni
.
hideTabBar
();
if
(
this
.
hideTabBar
)
uni
.
hideTabBar
();
// 获取引入了u-tabbar页面的路由地址,该地址没有路径前面的"/"
// 获取引入了u-tabbar页面的路由地址,该地址没有路径前面的"/"
let
pages
=
getCurrentPages
();
let
pages
=
getCurrentPages
();
// 页面栈中的最后一个即为项为当前页面,route属性为页面路径
// 页面栈中的最后一个即为项为当前页面,route属性为页面路径
...
@@ -174,7 +174,9 @@
...
@@ -174,7 +174,9 @@
async
clickHandler
(
index
)
{
async
clickHandler
(
index
)
{
if
(
this
.
beforeSwitch
&&
typeof
(
this
.
beforeSwitch
)
===
'
function
'
)
{
if
(
this
.
beforeSwitch
&&
typeof
(
this
.
beforeSwitch
)
===
'
function
'
)
{
// 执行回调,同时传入索引当作参数
// 执行回调,同时传入索引当作参数
let
beforeSwitch
=
this
.
beforeSwitch
(
index
);
// 在微信,支付宝等环境(H5正常),会导致父组件定义的customBack()函数体中的this变成子组件的this
// 通过bind()方法,绑定父组件的this,让this.customBack()的this为父组件的上下文
let
beforeSwitch
=
this
.
beforeSwitch
.
bind
(
this
.
$u
.
$parent
.
call
(
this
))(
index
);
// 判断是否返回了promise
// 判断是否返回了promise
if
(
!!
beforeSwitch
&&
typeof
beforeSwitch
.
then
===
'
function
'
)
{
if
(
!!
beforeSwitch
&&
typeof
beforeSwitch
.
then
===
'
function
'
)
{
await
beforeSwitch
.
then
(
res
=>
{
await
beforeSwitch
.
then
(
res
=>
{
...
...
uview-ui/components/u-upload/u-upload.vue
View file @
a9758b91
...
@@ -359,11 +359,6 @@ export default {
...
@@ -359,11 +359,6 @@ export default {
this
.
$emit
(
'
on-uploaded
'
,
this
.
lists
);
this
.
$emit
(
'
on-uploaded
'
,
this
.
lists
);
return
;
return
;
}
}
// 检查上传地址
if
(
!
this
.
action
)
{
this
.
showToast
(
'
请配置上传地址
'
,
true
);
return
;
}
// 检查是否是已上传或者正在上传中
// 检查是否是已上传或者正在上传中
if
(
this
.
lists
[
index
].
progress
==
100
)
{
if
(
this
.
lists
[
index
].
progress
==
100
)
{
if
(
this
.
autoUpload
==
false
)
this
.
uploadFile
(
index
+
1
);
if
(
this
.
autoUpload
==
false
)
this
.
uploadFile
(
index
+
1
);
...
@@ -372,7 +367,12 @@ export default {
...
@@ -372,7 +367,12 @@ export default {
// 执行before-upload钩子
// 执行before-upload钩子
if
(
this
.
beforeUpload
&&
typeof
(
this
.
beforeUpload
)
===
'
function
'
)
{
if
(
this
.
beforeUpload
&&
typeof
(
this
.
beforeUpload
)
===
'
function
'
)
{
// 执行回调,同时传入索引和文件列表当作参数
// 执行回调,同时传入索引和文件列表当作参数
let
beforeResponse
=
this
.
beforeUpload
(
index
,
this
.
lists
);
// 在微信,支付宝等环境(H5正常),会导致父组件定义的customBack()函数体中的this变成子组件的this
// 通过bind()方法,绑定父组件的this,让this.customBack()的this为父组件的上下文
// 因为upload组件可能会被嵌套在其他组件内,比如u-form,这时this.$parent其实为u-form的this,
// 非页面的this,所以这里需要往上历遍,一直寻找到最顶端的$parent,这里用了this.$u.$parent.call(this)
// 明白意思即可,无需纠结this.$u.$parent.call(this)的细节
let
beforeResponse
=
this
.
beforeUpload
.
bind
(
this
.
$u
.
$parent
.
call
(
this
))(
index
,
this
.
lists
);
// 判断是否返回了promise
// 判断是否返回了promise
if
(
!!
beforeResponse
&&
typeof
beforeResponse
.
then
===
'
function
'
)
{
if
(
!!
beforeResponse
&&
typeof
beforeResponse
.
then
===
'
function
'
)
{
await
beforeResponse
.
then
(
res
=>
{
await
beforeResponse
.
then
(
res
=>
{
...
@@ -386,6 +386,11 @@ export default {
...
@@ -386,6 +386,11 @@ export default {
return
this
.
uploadFile
(
index
+
1
);
return
this
.
uploadFile
(
index
+
1
);
}
}
}
}
// 检查上传地址
if
(
!
this
.
action
)
{
this
.
showToast
(
'
请配置上传地址
'
,
true
);
return
;
}
this
.
lists
[
index
].
error
=
false
;
this
.
lists
[
index
].
error
=
false
;
this
.
uploading
=
true
;
this
.
uploading
=
true
;
// 创建上传对象
// 创建上传对象
...
@@ -398,7 +403,7 @@ export default {
...
@@ -398,7 +403,7 @@ export default {
success
:
res
=>
{
success
:
res
=>
{
// 判断是否json字符串,将其转为json格式
// 判断是否json字符串,将其转为json格式
let
data
=
this
.
toJson
&&
this
.
$u
.
test
.
jsonString
(
res
.
data
)
?
JSON
.
parse
(
res
.
data
)
:
res
.
data
;
let
data
=
this
.
toJson
&&
this
.
$u
.
test
.
jsonString
(
res
.
data
)
?
JSON
.
parse
(
res
.
data
)
:
res
.
data
;
if
(
!
[
200
,
201
].
includes
(
res
.
statusCode
))
{
if
(
!
[
200
,
201
,
204
].
includes
(
res
.
statusCode
))
{
this
.
uploadError
(
index
,
data
);
this
.
uploadError
(
index
,
data
);
}
else
{
}
else
{
// 上传成功
// 上传成功
...
...
uview-ui/iconfont.css
View file @
a9758b91
/* #if
ndef MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
*/
/* #if
def APP-PLUS
*/
@font-face
{
@font-face
{
font-family
:
"uicon-iconfont"
;
font-family
:
"uicon-iconfont"
;
font-weight
:
normal
;
font-weight
:
normal
;
...
@@ -10,17 +10,15 @@
...
@@ -10,17 +10,15 @@
/* #endif */
/* #endif */
/* 支付宝,百度,头条小程序目前读取大的本地字体文件,导致无法显示图标,故用在线加载的方式-2020-05-12 */
/* 支付宝,百度,头条小程序目前读取大的本地字体文件,导致无法显示图标,故用在线加载的方式-2020-05-12 */
/* #ifdef MP-ALIPAY || MP-BAIDU || MP-TOUTIAO */
/* #ifndef APP-PLUS */
@font-face
{
@font-face
{
font-family
:
"uicon-iconfont"
;
font-family
:
"uicon-iconfont"
;
src
:
url('//at.alicdn.com/t/font_1529455_adug8z8qzbi.eot?t=1595859460686')
;
/* IE9 */
src
:
url('//at.alicdn.com/t/font_1529455_a1l807px8qd')
;
src
:
url('//at.alicdn.com/t/font_1529455_adug8z8qzbi.eot?t=1595859460686#iefix')
format
(
'embedded-opentype'
),
/* IE6-IE8 */
src
:
url('//at.alicdn.com/t/font_1529455_a1l807px8qd.eot?#iefix')
format
(
'embedded-opentype'
),
url('data:application/x-font-woff2;charset=utf-8;base64,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')
format
(
'woff2'
),
url('data:application/x-font-woff2;charset=utf-8;base64,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')
format
(
'woff2'
),
url('//at.alicdn.com/t/font_1529455_adug8z8qzbi.woff?t=1595859460686')
format
(
'woff'
),
url('//at.alicdn.com/t/font_1529455_a1l807px8qd.woff')
format
(
'woff'
),
url('//at.alicdn.com/t/font_1529455_adug8z8qzbi.ttf?t=1595859460686')
format
(
'truetype'
),
/* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('//at.alicdn.com/t/font_1529455_a1l807px8qd')
format
(
'truetype'
),
url('//at.alicdn.com/t/font_1529455_adug8z8qzbi.svg?t=1595859460686#iconfont')
format
(
'svg'
);
/* iOS 4.1- */
url('//at.alicdn.com/t/font_1529455_a1l807px8qd#iconfont')
format
(
'svg'
)
}
}
/* #endif */
/* #endif */
.u-iconfont
{
.u-iconfont
{
...
@@ -38,10 +36,6 @@
...
@@ -38,10 +36,6 @@
align-items
:
center
;
align-items
:
center
;
}
}
.uicon-column-line
:before
{
content
:
"\e68e"
;
}
.uicon-level
:before
{
.uicon-level
:before
{
content
:
"\e693"
;
content
:
"\e693"
;
}
}
...
@@ -54,100 +48,104 @@
...
@@ -54,100 +48,104 @@
content
:
"\e697"
;
content
:
"\e697"
;
}
}
.uicon-
arrow-left-doubl
e
:before
{
.uicon-
column-lin
e
:before
{
content
:
"\e68
c
"
;
content
:
"\e68
e
"
;
}
}
.uicon-
arrow-right-doubl
e
:before
{
.uicon-
empty-pag
e
:before
{
content
:
"\e6
8d
"
;
content
:
"\e6
27
"
;
}
}
.uicon-
youjiantou
:before
{
.uicon-
empty-data
:before
{
content
:
"\e6
02
"
;
content
:
"\e6
2f
"
;
}
}
.uicon-
red-packet
:before
{
.uicon-
empty-car
:before
{
content
:
"\e6
91
"
;
content
:
"\e6
02
"
;
}
}
.uicon-
red-packet-fill
:before
{
.uicon-
empty-order
:before
{
content
:
"\e6
90
"
;
content
:
"\e6
39
"
;
}
}
.uicon-
order
:before
{
.uicon-
empty-address
:before
{
content
:
"\e6
8f
"
;
content
:
"\e6
46
"
;
}
}
.uicon-
checkbox-mark
:before
{
.uicon-
empty-message
:before
{
content
:
"\e6a
8
"
;
content
:
"\e6a
9
"
;
}
}
.uicon-
arrow-up-fill
:before
{
.uicon-
empty-search
:before
{
content
:
"\e6
b0
"
;
content
:
"\e6
64
"
;
}
}
.uicon-
arrow-down-fill
:before
{
.uicon-
empty-favor
:before
{
content
:
"\e6
00
"
;
content
:
"\e6
7c
"
;
}
}
.uicon-
zanwushouhuodizhisvg_huaba
n
:before
{
.uicon-
empty-coupo
n
:before
{
content
:
"\e6
d5
"
;
content
:
"\e6
82
"
;
}
}
.uicon-empty-
wifi
:before
{
.uicon-empty-
history
:before
{
content
:
"\e6
39
"
;
content
:
"\e6
84
"
;
}
}
.uicon-empty-
history
:before
{
.uicon-empty-
permission
:before
{
content
:
"\e68
b
"
;
content
:
"\e68
6
"
;
}
}
.uicon-empty-
message
:before
{
.uicon-empty-
news
:before
{
content
:
"\e687"
;
content
:
"\e687"
;
}
}
.uicon-empty-
permission
:before
{
.uicon-empty-
wifi
:before
{
content
:
"\e68
6
"
;
content
:
"\e68
8
"
;
}
}
.uicon-empty-
search
:before
{
.uicon-empty-
list
:before
{
content
:
"\e6
27
"
;
content
:
"\e6
8b
"
;
}
}
.uicon-
empty-pag
e
:before
{
.uicon-
arrow-left-doubl
e
:before
{
content
:
"\e6
2f
"
;
content
:
"\e6
8c
"
;
}
}
.uicon-
empty-address
:before
{
.uicon-
arrow-right-double
:before
{
content
:
"\e6
46
"
;
content
:
"\e6
8d
"
;
}
}
.uicon-
empty-favor
:before
{
.uicon-
red-packet
:before
{
content
:
"\e6
64
"
;
content
:
"\e6
91
"
;
}
}
.uicon-
empty-coupon
:before
{
.uicon-
red-packet-fill
:before
{
content
:
"\e6
af
"
;
content
:
"\e6
90
"
;
}
}
.uicon-
empty-data
:before
{
.uicon-
order
:before
{
content
:
"\e6
7c
"
;
content
:
"\e6
8f
"
;
}
}
.uicon-
mepty-order
:before
{
.uicon-
nav-back-arrow
:before
{
content
:
"\e
7c8
"
;
content
:
"\e
67f
"
;
}
}
.uicon-
empty-car
:before
{
.uicon-
nav-back
:before
{
content
:
"\e68
2
"
;
content
:
"\e68
3
"
;
}
}
.uicon-
empty-list
:before
{
.uicon-
checkbox-mark
:before
{
content
:
"\e6
84
"
;
content
:
"\e6
a8
"
;
}
}
.uicon-empty-news
:before
{
.uicon-arrow-up-fill
:before
{
content
:
"\e6e8"
;
content
:
"\e6b0"
;
}
.uicon-arrow-down-fill
:before
{
content
:
"\e600"
;
}
}
.uicon-backspace
:before
{
.uicon-backspace
:before
{
...
...
uview-ui/index.js
View file @
a9758b91
...
@@ -60,6 +60,14 @@ import toast from './libs/function/toast.js'
...
@@ -60,6 +60,14 @@ import toast from './libs/function/toast.js'
import
getParent
from
'
./libs/function/getParent.js
'
import
getParent
from
'
./libs/function/getParent.js
'
// 获取整个父组件
// 获取整个父组件
import
$parent
from
'
./libs/function/$parent.js
'
import
$parent
from
'
./libs/function/$parent.js
'
// 获取sys()和os()工具方法
// 获取设备信息,挂载到$u的sys()(system的缩写)属性中,
// 同时把安卓和ios平台的名称"ios"和"android"挂到$u.os()中,方便取用
import
{
sys
,
os
}
from
'
./libs/function/sys.js
'
// 防抖方法
import
debounce
from
'
./libs/function/debounce.js
'
// 节流方法
import
throttle
from
'
./libs/function/throttle.js
'
// 配置信息
// 配置信息
...
@@ -76,6 +84,8 @@ const $u = {
...
@@ -76,6 +84,8 @@ const $u = {
colorGradient
:
colorGradient
.
colorGradient
,
colorGradient
:
colorGradient
.
colorGradient
,
guid
,
guid
,
color
,
color
,
sys
,
os
,
type2icon
,
type2icon
,
randomArray
,
randomArray
,
wranning
,
wranning
,
...
@@ -97,7 +107,9 @@ const $u = {
...
@@ -97,7 +107,9 @@ const $u = {
http
,
http
,
toast
,
toast
,
config
,
// uView配置信息相关,比如版本号
config
,
// uView配置信息相关,比如版本号
zIndex
zIndex
,
debounce
,
throttle
,
}
}
const
install
=
Vue
=>
{
const
install
=
Vue
=>
{
...
@@ -117,10 +129,6 @@ const install = Vue => {
...
@@ -117,10 +129,6 @@ const install = Vue => {
Vue
.
filter
(
'
timeFrom
'
,
(
timestamp
,
format
)
=>
{
Vue
.
filter
(
'
timeFrom
'
,
(
timestamp
,
format
)
=>
{
return
timeFrom
(
timestamp
,
format
)
return
timeFrom
(
timestamp
,
format
)
})
})
// 获取设备信息,挂载到$u的sys(system的缩写)属性中,
// 同时把安卓和ios平台的名称"ios"和"android"挂到$u.os中,方便取用
$u
.
sys
=
uni
.
getSystemInfoSync
();
$u
.
os
=
$u
.
sys
.
platform
;
Vue
.
prototype
.
$u
=
$u
Vue
.
prototype
.
$u
=
$u
}
}
...
...
uview-ui/libs/config/config.js
View file @
a9758b91
// 此版本发布于2020-0
7-28
// 此版本发布于2020-0
8-04
let
version
=
'
1.5.
6
'
;
let
version
=
'
1.5.
8
'
;
export
default
{
export
default
{
v
:
version
,
v
:
version
,
...
...
uview-ui/libs/css/common.scss
View file @
a9758b91
...
@@ -12,8 +12,6 @@
...
@@ -12,8 +12,6 @@
/* #ifndef APP-NVUE */
/* #ifndef APP-NVUE */
image
{
image
{
display
:
inline-block
;
display
:
inline-block
;
// 解决图片加载时可能会瞬间变形的问题
will-change
:
transform
;
}
}
// 在weex,也即nvue中,所有元素默认为border-box
// 在weex,也即nvue中,所有元素默认为border-box
...
...
uview-ui/libs/function/$parent.js
View file @
a9758b91
// 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
// 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
// this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
// this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
export
default
function
$parent
(
name
,
keys
)
{
// 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name
// 值(默认为undefined),就是查找最顶层的$parent
export
default
function
$parent
(
name
=
undefined
)
{
let
parent
=
this
.
$parent
;
let
parent
=
this
.
$parent
;
// 通过while历遍,这里主要是为了H5需要多层解析的问题
// 通过while历遍,这里主要是为了H5需要多层解析的问题
while
(
parent
)
{
while
(
parent
)
{
// 父组件
// 父组件
if
(
parent
.
$options
.
name
!==
name
)
{
if
(
parent
.
$options
&&
parent
.
$options
.
name
!==
name
)
{
// 如果组件的name不相等,继续上一级寻找
// 如果组件的name不相等,继续上一级寻找
parent
=
parent
.
$parent
;
parent
=
parent
.
$parent
;
}
else
{
}
else
{
...
...
uview-ui/libs/function/debounce.js
0 → 100644
View file @
a9758b91
let
timeout
=
null
;
/**
* 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数
*
* @param {Function} func 要执行的回调函数
* @param {Number} wait 延时的时间
* @param {Boolean} immediate 是否立即执行
* @return null
*/
function
debounce
(
func
,
wait
=
500
,
immediate
=
false
)
{
// 清除定时器
if
(
timeout
!==
null
)
clearTimeout
(
timeout
);
// 立即执行,此类情况一般用不到
if
(
immediate
)
{
var
callNow
=
!
timeout
;
timeout
=
setTimeout
(
function
()
{
timeout
=
null
;
},
wait
);
if
(
callNow
)
typeof
func
===
'
function
'
&&
func
();
}
else
{
// 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法
timeout
=
setTimeout
(
function
()
{
typeof
func
===
'
function
'
&&
func
();
},
wait
);
}
}
export
default
debounce
uview-ui/libs/function/sys.js
0 → 100644
View file @
a9758b91
export
function
os
()
{
return
uni
.
getSystemInfoSync
().
platform
;
};
export
function
sys
()
{
return
uni
.
getSystemInfoSync
();
}
uview-ui/libs/function/throttle.js
0 → 100644
View file @
a9758b91
let
timer
,
flag
;
/**
* 节流原理:在一定时间内,只能触发一次
*
* @param {Function} func 要执行的回调函数
* @param {Number} wait 延时的时间
* @param {Boolean} immediate 是否立即执行
* @return null
*/
function
throttle
(
func
,
wait
=
500
,
immediate
=
true
)
{
if
(
immediate
)
{
if
(
!
flag
)
{
flag
=
true
;
// 如果是立即执行,则在wait毫秒内开始时执行
typeof
func
===
'
function
'
&&
func
();
timer
=
setTimeout
(()
=>
{
flag
=
false
;
},
wait
);
}
}
else
{
if
(
!
flag
)
{
flag
=
true
// 如果是非立即执行,则在wait毫秒内的结束处执行
timer
=
setTimeout
(()
=>
{
flag
=
false
typeof
func
===
'
function
'
&&
func
();
},
wait
);
}
}
};
export
default
throttle
uview-ui/libs/function/timeFormat.js
View file @
a9758b91
// padStart 的 polyfill,因为某些机型或情况,还无法支持es7的padStart,比如电脑版的微信小程序
// 所以这里做一个兼容polyfill的兼容处理
if
(
!
String
.
prototype
.
padStart
){
String
.
prototype
.
padStart
=
// 为了方便表示这里 fillString 用了ES6 的默认参数,不影响理解
function
(
maxLength
,
fillString
=
'
'
)
{
if
(
Object
.
prototype
.
toString
.
call
(
fillString
)
!==
"
[object String]
"
)
throw
new
TypeError
(
'
fillString must be String
'
)
let
str
=
this
// 返回 String(str) 这里是为了使返回的值是字符串字面量,在控制台中更符合直觉
if
(
str
.
length
>=
maxLength
)
return
String
(
str
)
let
fillLength
=
maxLength
-
str
.
length
,
times
=
Math
.
ceil
(
fillLength
/
fillString
.
length
)
while
(
times
>>=
1
)
{
fillString
+=
fillString
if
(
times
===
1
)
{
fillString
+=
fillString
}
}
return
fillString
.
slice
(
0
,
fillLength
)
+
str
;
}
}
function
timeFormat
(
timestamp
=
null
,
fmt
=
'
yyyy-mm-dd
'
)
{
function
timeFormat
(
timestamp
=
null
,
fmt
=
'
yyyy-mm-dd
'
)
{
// 其他更多是格式化有如下:
// 其他更多是格式化有如下:
// yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合
// yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合
...
@@ -20,6 +43,7 @@ function timeFormat(timestamp = null, fmt = 'yyyy-mm-dd') {
...
@@ -20,6 +43,7 @@ function timeFormat(timestamp = null, fmt = 'yyyy-mm-dd') {
for
(
let
k
in
opt
)
{
for
(
let
k
in
opt
)
{
ret
=
new
RegExp
(
"
(
"
+
k
+
"
)
"
).
exec
(
fmt
);
ret
=
new
RegExp
(
"
(
"
+
k
+
"
)
"
).
exec
(
fmt
);
if
(
ret
)
{
if
(
ret
)
{
console
.
log
(
k
,
ret
,
opt
[
k
]);
fmt
=
fmt
.
replace
(
ret
[
1
],
(
ret
[
1
].
length
==
1
)
?
(
opt
[
k
])
:
(
opt
[
k
].
padStart
(
ret
[
1
].
length
,
"
0
"
)))
fmt
=
fmt
.
replace
(
ret
[
1
],
(
ret
[
1
].
length
==
1
)
?
(
opt
[
k
])
:
(
opt
[
k
].
padStart
(
ret
[
1
].
length
,
"
0
"
)))
};
};
};
};
...
...
uview-ui/package.json
View file @
a9758b91
{
{
"name"
:
"uview-ui"
,
"name"
:
"uview-ui"
,
"version"
:
"1.5.
6
"
,
"version"
:
"1.5.
8
"
,
"description"
:
"uView UI,是uni-app生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水"
,
"description"
:
"uView UI,是uni-app生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水"
,
"main"
:
"index.js"
,
"main"
:
"index.js"
,
"keywords"
:
[
"uview"
,
"uView"
,
"uni-app"
,
"uni-app ui"
,
"uniapp"
,
"uviewui"
,
"uview ui"
,
"uviewUI"
,
"uViewui"
,
"uViewUI"
,
"uView UI"
,
"uni ui"
,
"uni UI"
,
"uniapp ui"
,
"ui"
,
"UI框架"
,
"uniapp ui框架"
,
"uniapp UI"
],
"keywords"
:
[
"uview"
,
"uView"
,
"uni-app"
,
"uni-app ui"
,
"uniapp"
,
"uviewui"
,
"uview ui"
,
"uviewUI"
,
"uViewui"
,
"uViewUI"
,
"uView UI"
,
"uni ui"
,
"uni UI"
,
"uniapp ui"
,
"ui"
,
"UI框架"
,
"uniapp ui框架"
,
"uniapp UI"
],
...
...
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