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
9a1ca055
Commit
9a1ca055
authored
Sep 17, 2020
by
wlxuqu
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'yiruiwen' into dev
parents
1bf0ba03
60847307
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
204 additions
and
112 deletions
+204
-112
manifest.json
manifest.json
+1
-1
pages.json
pages.json
+8
-8
index.vue
pages/componentsA/avatar/index.vue
+1
-1
index.vue
pages/componentsA/select/index.vue
+4
-1
index.vue
pages/componentsB/dropdown/index.vue
+1
-1
index.vue
pages/componentsB/radio/index.vue
+3
-4
index.vue
pages/componentsB/upload/index.vue
+4
-1
index.vue
pages/componentsC/grid/index.vue
+2
-2
index.vue
pages/componentsC/loadmore/index.vue
+1
-1
u-avatar.vue
uview-ui/components/u-avatar/u-avatar.vue
+1
-1
u-checkbox.vue
uview-ui/components/u-checkbox/u-checkbox.vue
+8
-5
u-count-down.vue
uview-ui/components/u-count-down/u-count-down.vue
+3
-2
u-dropdown-item.vue
uview-ui/components/u-dropdown-item/u-dropdown-item.vue
+25
-13
u-dropdown.vue
uview-ui/components/u-dropdown/u-dropdown.vue
+25
-13
u-grid-item.vue
uview-ui/components/u-grid-item/u-grid-item.vue
+16
-16
u-grid.vue
uview-ui/components/u-grid/u-grid.vue
+19
-1
u-loadmore.vue
uview-ui/components/u-loadmore/u-loadmore.vue
+21
-17
u-number-box.vue
uview-ui/components/u-number-box/u-number-box.vue
+11
-0
u-radio-group.vue
uview-ui/components/u-radio-group/u-radio-group.vue
+19
-0
u-radio.vue
uview-ui/components/u-radio/u-radio.vue
+5
-8
u-toast.vue
uview-ui/components/u-toast/u-toast.vue
+7
-11
u-upload.vue
uview-ui/components/u-upload/u-upload.vue
+1
-1
config.js
uview-ui/libs/config/config.js
+2
-2
mixin.js
uview-ui/libs/mixin/mixin.js
+15
-1
package.json
uview-ui/package.json
+1
-1
No files found.
manifest.json
View file @
9a1ca055
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
"name"
:
"uView"
,
"name"
:
"uView"
,
"appid"
:
"__UNI__60F4B81"
,
"appid"
:
"__UNI__60F4B81"
,
"description"
:
"多平台快速开发的UI框架"
,
"description"
:
"多平台快速开发的UI框架"
,
"versionName"
:
"1.
6.8
"
,
"versionName"
:
"1.
7.0
"
,
"versionCode"
:
"100"
,
"versionCode"
:
"100"
,
"transformPx"
:
false
,
"transformPx"
:
false
,
"app-plus"
:
{
"app-plus"
:
{
...
...
pages.json
View file @
9a1ca055
...
@@ -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/componentsB/search
/index"
,
//启动页面,必选
//
"path"
:
"pages/componentsB/dropdown
/index"
,
//启动页面,必选
"query"
:
"id=1&name=2
"
//启动参数,在页面的onLoad函数里面得到
//
"query"
:
"uuid=c4bba940-f69e-11ea-a419-6bafda9d095e&__id__=1
"
//启动参数,在页面的onLoad函数里面得到
}]
//
}]
},
//
},
"pages"
:
[
"pages"
:
[
//
演示-组件
//
演示-组件
{
{
...
...
pages/componentsA/avatar/index.vue
View file @
9a1ca055
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<u-avatar
<u-avatar
:mode=
"mode"
:mode=
"mode"
:size=
"size"
:size=
"size"
:src=
"
src
"
:src=
"
''
"
:text=
"text"
:text=
"text"
:showLevel=
"showLevel"
:showLevel=
"showLevel"
:showSex=
"showSex"
:showSex=
"showSex"
...
...
pages/componentsA/select/index.vue
View file @
9a1ca055
...
@@ -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-select
@
click=
"show = true"
:default-value=
"defaultValue"
:mode=
"mode"
v-model=
"show"
:list=
"list"
@
confirm=
"confirm"
></u-select>
<u-select
@
click=
"show = true"
:default-value=
"defaultValue"
:mode=
"mode"
v-model=
"show"
:list=
"list"
@
confirm=
"confirm"
@
cancel=
"cancel"
></u-select>
<view
class=
"u-demo-result-line"
>
select值:
{{
result
}}
</view>
<view
class=
"u-demo-result-line"
>
select值:
{{
result
}}
</view>
</view>
</view>
</view>
</view>
...
@@ -191,6 +191,9 @@ export default {
...
@@ -191,6 +191,9 @@ export default {
e
.
map
((
val
,
index
)
=>
{
e
.
map
((
val
,
index
)
=>
{
this
.
result
+=
this
.
result
==
''
?
val
.
label
:
'
-
'
+
val
.
label
;
this
.
result
+=
this
.
result
==
''
?
val
.
label
:
'
-
'
+
val
.
label
;
})
})
},
cancel
(
e
)
{
console
.
log
(
e
);
}
}
}
}
};
};
...
...
pages/componentsB/dropdown/index.vue
View file @
9a1ca055
<
template
>
<
template
>
<view
class=
""
>
<view
class=
""
>
<view
class=
"u-m-
t
-50"
>
<view
class=
"u-m-
p
-50"
>
<view
class=
"u-demo-area u-flex u-row-center"
>
<view
class=
"u-demo-area u-flex u-row-center"
>
<u-dropdown
:close-on-click-mask=
"mask"
ref=
"uDropdown"
:activeColor=
"activeColor"
:borderBottom=
"borderBottom"
>
<u-dropdown
:close-on-click-mask=
"mask"
ref=
"uDropdown"
:activeColor=
"activeColor"
:borderBottom=
"borderBottom"
>
<u-dropdown-item
@
change=
"change"
v-model=
"value1"
title=
"距离"
:options=
"options1"
></u-dropdown-item>
<u-dropdown-item
@
change=
"change"
v-model=
"value1"
title=
"距离"
:options=
"options1"
></u-dropdown-item>
...
...
pages/componentsB/radio/index.vue
View file @
9a1ca055
...
@@ -4,10 +4,9 @@
...
@@ -4,10 +4,9 @@
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-area"
>
<view
class=
"u-demo-area"
>
<view
class=
""
>
<view
class=
""
>
<u-radio-group
:size=
"size"
:width=
"width"
:wrap=
"wrap"
v-model=
"value"
@
change=
"radioGroupChange"
:activeColor=
"activeColor"
>
<u-radio-group
:s
hape=
"shape"
:s
ize=
"size"
:width=
"width"
:wrap=
"wrap"
v-model=
"value"
@
change=
"radioGroupChange"
:activeColor=
"activeColor"
>
<u-radio
@
change=
"radioChange"
v-for=
"(item, index) in list"
<u-radio
@
change=
"radioChange"
v-for=
"(item, index) in list"
:disabled=
"item.disabled"
:key=
"index"
:name=
"item.name"
:key=
"index"
:name=
"item.name"
:shape=
"shape"
:disabled=
"item.disabled"
>
{{
item
.
name
}}
</u-radio>
>
{{
item
.
name
}}
</u-radio>
</u-radio-group>
</u-radio-group>
</view>
</view>
...
@@ -22,7 +21,7 @@
...
@@ -22,7 +21,7 @@
<
/view
>
<
/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
=
"
shapeChange
"
><
/u-subsection
>
<
u
-
subsection
vibrateShort
current
=
"
1
"
:
list
=
"
['方形', '圆形']
"
@
change
=
"
shapeChange
"
><
/u-subsection
>
<
/view
>
<
/view
>
<
view
class
=
"
u-config-item
"
>
<
view
class
=
"
u-config-item
"
>
<
view
class
=
"
u-item-title
"
>
整体大小
(
单位
rpx
)
<
/view
>
<
view
class
=
"
u-item-title
"
>
整体大小
(
单位
rpx
)
<
/view
>
...
...
pages/componentsB/upload/index.vue
View file @
9a1ca055
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
:percent=
"item.progress"
></u-line-progress>
:percent=
"item.progress"
></u-line-progress>
</view>
</view>
</view>
</view>
<u-upload
:before-remove=
"beforeRemove"
ref=
"uUpload"
:custom-btn=
"customBtn"
:show-upload-list=
"showUploadList"
:action=
"action"
:auto-upload=
"autoUpload"
:file-list=
"fileList"
<u-upload
@
on-choose-fail=
"onChooseFail"
:before-remove=
"beforeRemove"
ref=
"uUpload"
:custom-btn=
"customBtn"
:show-upload-list=
"showUploadList"
:action=
"action"
:auto-upload=
"autoUpload"
:file-list=
"fileList"
:show-progress=
"showProgress"
:deletable=
"deletable"
:max-count=
"maxCount"
@
on-list-change=
"onListChange"
>
:show-progress=
"showProgress"
:deletable=
"deletable"
:max-count=
"maxCount"
@
on-list-change=
"onListChange"
>
<view
v-if=
"customBtn"
slot=
"addBtn"
class=
"slot-btn"
hover-class=
"slot-btn__hover"
hover-stay-time=
"150"
>
<view
v-if=
"customBtn"
slot=
"addBtn"
class=
"slot-btn"
hover-class=
"slot-btn__hover"
hover-stay-time=
"150"
>
<u-icon
name=
"photo"
size=
"60"
:color=
"$u.color['lightColor']"
></u-icon>
<u-icon
name=
"photo"
size=
"60"
:color=
"$u.color['lightColor']"
></u-icon>
...
@@ -142,6 +142,9 @@
...
@@ -142,6 +142,9 @@
},
},
beforeRemove
(
index
,
lists
)
{
beforeRemove
(
index
,
lists
)
{
return
true
;
return
true
;
},
onChooseFail
(
e
)
{
// console.log(e);
}
}
}
}
}
}
...
...
pages/componentsC/grid/index.vue
View file @
9a1ca055
...
@@ -88,10 +88,10 @@
...
@@ -88,10 +88,10 @@
<view
class=
"u-config-title u-border-bottom"
>
<view
class=
"u-config-title u-border-bottom"
>
参数配置
参数配置
</view>
</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=
"borderChange"
></u-subsection>
<u-subsection
vibrateShort
:list=
"['是', '否']"
@
change=
"borderChange"
></u-subsection>
</view>
-->
</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
current=
"1"
:list=
"['是', '否']"
@
change=
"isSwiperChange"
></u-subsection>
<u-subsection
vibrateShort
current=
"1"
:list=
"['是', '否']"
@
change=
"isSwiperChange"
></u-subsection>
...
...
pages/componentsC/loadmore/index.vue
View file @
9a1ca055
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-title"
>
演示效果
</view>
<view
class=
"u-demo-area"
>
<view
class=
"u-demo-area"
>
<u-toast
ref=
"uToast"
/>
<u-toast
ref=
"uToast"
/>
<u-loadmore
:status=
"status"
bg-color=
"rgb(250, 250, 250)"
:loadText=
"loadText"
<u-loadmore
:status=
"status"
:loadText=
"loadText"
:icon-type=
"iconType"
:is-dot=
"isDot"
@
loadmore=
"loadmore"
/>
:icon-type=
"iconType"
:is-dot=
"isDot"
@
loadmore=
"loadmore"
/>
</view>
</view>
</view>
</view>
...
...
uview-ui/components/u-avatar/u-avatar.vue
View file @
9a1ca055
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
</
template
>
</
template
>
<
script
>
<
script
>
let
base64Avatar
=
"
data:image/
png;base64,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
"
;
let
base64Avatar
=
"
data:image/
jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjREMEQwRkY0RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjREMEQwRkY1RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEQwRDBGRjJGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEQwRDBGRjNGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wAARCADIAMgDAREAAhEBAxEB/8QAcQABAQEAAwEBAAAAAAAAAAAAAAUEAQMGAgcBAQAAAAAAAAAAAAAAAAAAAAAQAAIBAwICBgkDBQAAAAAAAAABAhEDBCEFMVFBYXGREiKBscHRMkJSEyOh4XLxYjNDFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHbHFyZ/Dam+yLA+Z2L0Pjtyj2poD4AAAAAAAAAAAAAAAAAAAAAAAAKWFs9y6lcvvwQeqj8z9wFaziY1n/HbUX9XF97A7QAGXI23EvJ1goyfzR0YEfN269jeZ+a03pNe0DIAAAAAAAAAAAAAAAAAAAACvtO3RcVkXlWutuL9YFYAAAAAOJRjKLjJVi9GmB5/csH/mu1h/in8PU+QGMAAAAAAAAAAAAAAAAAAaMDG/6MmMH8C80+xAelSSVFolwQAAAAAAAHVlWI37ErUulaPk+hgeYnCUJuElSUXRrrQHAAAAAAAAAAAAAAAAABa2Oz4bM7r4zdF2ICmAAAAAAAAAg7zZ8GX41wuJP0rRgYAAAAAAAAAAAAAAAAAD0m2R8ODaXU33tsDSAAAAAAAAAlb9HyWZcnJd9PcBHAAAAAAAAAAAAAAAAAPS7e64Vn+KA0AAAAAAAAAJm+v8Ftf3ewCKAAAAAAAAAAAAAAAAAX9muqeGo9NttP06+0DcAAAAAAAAAjb7dTu2ra+VOT9P8AQCWAAAAAAAAAAAAAAAAAUNmyPt5Ltv4bui/kuAF0AAAAAAADiUlGLlJ0SVW+oDzOXfd/Ind6JPRdS0QHSAAAAAAAAAAAAAAAAAE2nVaNcGB6Lbs6OTao9LsF51z60BrAAAAAABJ3jOVHjW3r/sa9QEgAAAAAAAAAAAAAAAAAAAPu1duWriuW34ZR4MC9hbnZyEoy8l36XwfYBsAAADaSq9EuLAlZ+7xSdrGdW9Hc5dgEdtt1erfFgAAAAAAAAAAAAAAAAADVjbblX6NR8MH80tEBRs7HYivyzlN8lovaBPzduvY0m6eK10TXtAyAarO55lpJK54orolr+4GqO/Xaea1FvqbXvA+Z77kNeW3GPbV+4DJfzcm/pcm3H6Vou5AdAFLC2ed2Pjv1txa8sV8T6wOL+yZEKu1JXFy4MDBOE4ScZxcZLinoB8gAAAAAAAAAAAB242LeyJ+C3GvN9C7QLmJtePYpKS+5c+p8F2IDYAANJqj1T4oCfk7Nj3G5Wn9qXJax7gJ93Z82D8sVNc4v30A6Xg5i42Z+iLfqARwcyT0sz9MWvWBps7LlTf5Grce9/oBTxdtxseklHxT+uWr9AGoAB138ezfj4bsFJdD6V2MCPm7RdtJzs1uW1xXzL3gTgAAAAAAAAADRhYc8q74I6RWs5ckB6GxYtWLat21SK731sDsAAAAAAAAAAAAAAAASt021NO/YjrxuQXT1oCOAAAAAAABzGLlJRSq26JAelwsWONYjbXxcZvmwO8AAAAAAAAAAAAAAAAAAef3TEWPkVivx3NY9T6UBiAAAAAABo2+VmGXblddIJ8eivRUD0oAAAAAAAAAAAAAAAAAAAYt4tKeFKVNYNSXfRgefAAAAAAAAr7VuSSWPedKaW5v1MCsAAAAAAAAAAAAAAAAAAIe6bj96Ts2n+JPzSXzP3ATgAAAAAAAAFbbt1UUrOQ9FpC4/UwK6aaqtU+DAAAAAAAAAAAAAAA4lKMIuUmoxWrb4ARNx3R3q2rLpa4Sl0y/YCcAAAAAAAAAAANmFud7G8r89r6X0dgFvGzLGRGtuWvTF6NAdwAAAAAAAAAAAy5W442PVN+K59EePp5ARMvOv5MvO6QXCC4AZwAAAAAAAAAAAAAcxlKLUotprg1owN+PvORborq+7Hnwl3gUbO74VzRydt8pKn68ANcJwmqwkpLmnUDkAAAAfNy9atqtyagut0AxXt5xIV8Fbj6lRd7Am5G65V6qUvtwfyx94GMAAAAAAAAAAAAAAAAAAAOU2nVOj5gdsc3LiqRvTpyqwOxbnnrhdfpSfrQB7pnv/AGvuS9gHXPMy5/Fem1yq0v0A6W29XqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//Z
"
;
/**
/**
* avatar 头像
* avatar 头像
* @description 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
* @description 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
...
...
uview-ui/components/u-checkbox/u-checkbox.vue
View file @
9a1ca055
...
@@ -172,7 +172,7 @@
...
@@ -172,7 +172,7 @@
},
},
emitEvent
()
{
emitEvent
()
{
this
.
$emit
(
'
change
'
,
{
this
.
$emit
(
'
change
'
,
{
value
:
this
.
value
,
value
:
!
this
.
value
,
name
:
this
.
name
name
:
this
.
name
})
})
// 执行父组件u-checkbox-group的事件方法
// 执行父组件u-checkbox-group的事件方法
...
@@ -193,14 +193,17 @@
...
@@ -193,14 +193,17 @@
}
}
// 如果原来为选中状态,那么可以取消
// 如果原来为选中状态,那么可以取消
if
(
this
.
value
==
true
)
{
if
(
this
.
value
==
true
)
{
this
.
$emit
(
'
input
'
,
!
this
.
value
);
this
.
emitEvent
();
this
.
emitEvent
();
}
else
if
((
this
.
parent
&&
checkedNum
<
this
.
parent
.
max
)
||
!
this
.
parent
)
{
// 如果原来为未选中状态,需要选中的数量少于父组件中设置的max值,才可以选中
this
.
$emit
(
'
input
'
,
!
this
.
value
);
this
.
$emit
(
'
input
'
,
!
this
.
value
);
}
else
{
// 如果超出最多可选项,提示
if
(
this
.
parent
&&
checkedNum
>=
this
.
parent
.
max
)
{
return
this
.
$u
.
toast
(
`最多可选
${
this
.
parent
.
max
}
项`
);
}
// 如果原来为未选中状态,需要选中的数量少于父组件中设置的max值,才可以选中
this
.
emitEvent
();
this
.
emitEvent
();
this
.
$emit
(
'
input
'
,
!
this
.
value
);
}
}
}
}
}
}
};
};
...
...
uview-ui/components/u-count-down/u-count-down.vue
View file @
9a1ca055
<
template
>
<
template
>
<view
class=
"u-countdown"
>
<view
class=
"u-countdown"
>
<view
class=
"u-countdown-item"
:style=
"[itemStyle]"
v-if=
"showDays && (hideZeroDay || (!hideZeroDay && d != '0'))"
>
<view
class=
"u-countdown-item"
:style=
"[itemStyle]"
v-if=
"showDays && (hideZeroDay || (!hideZeroDay && d != '0
0
'))"
>
<view
class=
"u-countdown-time"
:style=
"[letterStyle]"
>
<view
class=
"u-countdown-time"
:style=
"[letterStyle]"
>
{{
d
}}
{{
d
}}
</view>
</view>
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<view
<view
class=
"u-countdown-colon"
class=
"u-countdown-colon"
:style=
"
{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
:style=
"
{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
v-if="showDays
&&
(hideZeroDay || (!hideZeroDay
&&
d != '0'))"
v-if="showDays
&&
(hideZeroDay || (!hideZeroDay
&&
d != '0
0
'))"
>
>
{{
separator
==
'
colon
'
?
'
:
'
:
'
天
'
}}
{{
separator
==
'
colon
'
?
'
:
'
:
'
天
'
}}
</view>
</view>
...
@@ -249,6 +249,7 @@ export default {
...
@@ -249,6 +249,7 @@ export default {
showHour
=
showHour
<
10
?
'
0
'
+
showHour
:
showHour
;
showHour
=
showHour
<
10
?
'
0
'
+
showHour
:
showHour
;
minute
=
minute
<
10
?
'
0
'
+
minute
:
minute
;
minute
=
minute
<
10
?
'
0
'
+
minute
:
minute
;
second
=
second
<
10
?
'
0
'
+
second
:
second
;
second
=
second
<
10
?
'
0
'
+
second
:
second
;
day
=
day
<
10
?
'
0
'
+
day
:
day
;
this
.
d
=
day
;
this
.
d
=
day
;
this
.
h
=
showHour
;
this
.
h
=
showHour
;
this
.
i
=
minute
;
this
.
i
=
minute
;
...
...
uview-ui/components/u-dropdown-item/u-dropdown-item.vue
View file @
9a1ca055
<
template
>
<
template
>
<view
class=
"u-dropdown-item"
v-if=
"active"
@
touchmove.stop.prevent=
"() =>
{}" @tap.stop.prevent="() => {}">
<view
class=
"u-dropdown-item"
v-if=
"active"
@
touchmove.stop.prevent=
"() =>
{}" @tap.stop.prevent="() => {}">
<view
class=
"u-dropdown-item__options"
v-if=
"!$slots.default"
>
<block
v-if=
"!$slots.default"
>
<u-cell-group>
<scroll-view
scroll-y=
"true"
:style=
"
{
<u-cell-item
@
click=
"cellClick(item.value)"
:arrow=
"false"
:title=
"item.label"
v-for=
"(item, index) in options"
:key=
"index"
:title-style=
"
{
height: $u.addUnit(height)
color: value == item.value ? activeColor : inactiveColor
}">
}">
<view
class=
"u-dropdown-item__options"
>
<u-icon
v-if=
"value == item.value"
name=
"checkbox-mark"
:color=
"activeColor"
size=
"32"
></u-icon>
<u-cell-group>
</u-cell-item>
<u-cell-item
@
click=
"cellClick(item.value)"
:arrow=
"false"
:title=
"item.label"
v-for=
"(item, index) in options"
</u-cell-group>
:key=
"index"
:title-style=
"
{
</view>
color: value == item.value ? activeColor : inactiveColor
}">
<u-icon
v-if=
"value == item.value"
name=
"checkbox-mark"
:color=
"activeColor"
size=
"32"
></u-icon>
</u-cell-item>
</u-cell-group>
</view>
</scroll-view>
</block>
<slot
v-else
/>
<slot
v-else
/>
</view>
</view>
</
template
>
</
template
>
...
@@ -39,6 +46,11 @@
...
@@ -39,6 +46,11 @@
type
:
Boolean
,
type
:
Boolean
,
default
:
false
default
:
false
},
},
// 下拉弹窗的高度
height
:
{
type
:
[
Number
,
String
],
default
:
'
auto
'
}
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -57,7 +69,7 @@
...
@@ -57,7 +69,7 @@
propsChange
(
n
)
{
propsChange
(
n
)
{
// 当值变化时,通知父组件重新初始化,让父组件执行每个子组件的init()方法
// 当值变化时,通知父组件重新初始化,让父组件执行每个子组件的init()方法
// 将所有子组件数据重新整理一遍
// 将所有子组件数据重新整理一遍
if
(
this
.
parent
)
this
.
parent
.
init
();
if
(
this
.
parent
)
this
.
parent
.
init
();
}
}
},
},
created
()
{
created
()
{
...
@@ -68,7 +80,7 @@
...
@@ -68,7 +80,7 @@
init
()
{
init
()
{
// 获取父组件u-dropdown
// 获取父组件u-dropdown
let
parent
=
this
.
$u
.
$parent
.
call
(
this
,
'
u-dropdown
'
);
let
parent
=
this
.
$u
.
$parent
.
call
(
this
,
'
u-dropdown
'
);
if
(
parent
)
{
if
(
parent
)
{
this
.
parent
=
parent
;
this
.
parent
=
parent
;
// 将子组件的激活颜色配置为父组件设置的激活和未激活时的颜色
// 将子组件的激活颜色配置为父组件设置的激活和未激活时的颜色
this
.
activeColor
=
parent
.
activeColor
;
this
.
activeColor
=
parent
.
activeColor
;
...
@@ -78,8 +90,8 @@
...
@@ -78,8 +90,8 @@
let
exist
=
parent
.
children
.
find
(
val
=>
{
let
exist
=
parent
.
children
.
find
(
val
=>
{
return
this
===
val
;
return
this
===
val
;
})
})
if
(
!
exist
)
parent
.
children
.
push
(
this
);
if
(
!
exist
)
parent
.
children
.
push
(
this
);
if
(
parent
.
children
.
length
==
1
)
this
.
active
=
true
;
if
(
parent
.
children
.
length
==
1
)
this
.
active
=
true
;
// 父组件无法监听children的变化,故将子组件的title,传入父组件的menuList数组中
// 父组件无法监听children的变化,故将子组件的title,传入父组件的menuList数组中
parent
.
menuList
.
push
({
parent
.
menuList
.
push
({
title
:
this
.
title
,
title
:
this
.
title
,
...
...
uview-ui/components/u-dropdown/u-dropdown.vue
View file @
9a1ca055
...
@@ -20,11 +20,14 @@
...
@@ -20,11 +20,14 @@
</view>
</view>
</view>
</view>
<view
class=
"u-dropdown__content"
:style=
"[contentStyle,
{
<view
class=
"u-dropdown__content"
:style=
"[contentStyle,
{
transition: `opacity ${duration / 1000}s linear`
transition: `opacity ${duration / 1000}s linear`,
}]" @tap="maskClick" @touchmove.stop.prevent>
top: $u.addUnit(height)
}]"
@tap="maskClick" @touchmove.stop.prevent>
<view
@
tap
.
stop
.
prevent
class=
"u-dropdown__content__popup"
:style=
"[popupStyle]"
>
<view
@
tap
.
stop
.
prevent
class=
"u-dropdown__content__popup"
:style=
"[popupStyle]"
>
<slot></slot>
<slot></slot>
</view>
</view>
<view
class=
"u-dropdown__content__mask"
></view>
</view>
</view>
</view>
</view>
</
template
>
</
template
>
...
@@ -57,7 +60,7 @@
...
@@ -57,7 +60,7 @@
duration
:
{
duration
:
{
type
:
[
Number
,
String
],
type
:
[
Number
,
String
],
default
:
300
default
:
300
},
},
// 标题菜单的高度,单位任意,数值默认为rpx单位
// 标题菜单的高度,单位任意,数值默认为rpx单位
height
:
{
height
:
{
type
:
[
Number
,
String
],
type
:
[
Number
,
String
],
...
@@ -81,7 +84,7 @@
...
@@ -81,7 +84,7 @@
active
:
false
,
// 下拉菜单的状态
active
:
false
,
// 下拉菜单的状态
// 当前是第几个菜单处于激活状态,小程序中此处不能写成false或者"",否则后续将current赋值为0,
// 当前是第几个菜单处于激活状态,小程序中此处不能写成false或者"",否则后续将current赋值为0,
// 无能的TX没有使用===而是使用==判断,导致程序认为前后二者没有变化,从而不会触发视图更新
// 无能的TX没有使用===而是使用==判断,导致程序认为前后二者没有变化,从而不会触发视图更新
current
:
99999
,
current
:
99999
,
// 外层内容的样式,初始时处于底层,且透明
// 外层内容的样式,初始时处于底层,且透明
contentStyle
:
{
contentStyle
:
{
zIndex
:
-
1
,
zIndex
:
-
1
,
...
@@ -97,6 +100,7 @@
...
@@ -97,6 +100,7 @@
let
style
=
{};
let
style
=
{};
// 进行Y轴位移,展开状态时,恢复原位。收齐状态时,往上位移100%,进行隐藏
// 进行Y轴位移,展开状态时,恢复原位。收齐状态时,往上位移100%,进行隐藏
style
.
transform
=
`translateY(
${
this
.
active
?
0
:
'
-100%
'
}
)`
style
.
transform
=
`translateY(
${
this
.
active
?
0
:
'
-100%
'
}
)`
style
[
'
transition-duration
'
]
=
this
.
duration
/
1000
+
'
s
'
;
return
style
;
return
style
;
}
}
},
},
...
@@ -116,7 +120,7 @@
...
@@ -116,7 +120,7 @@
// 点击菜单
// 点击菜单
menuClick
(
index
)
{
menuClick
(
index
)
{
// 判断是否被禁用
// 判断是否被禁用
if
(
this
.
menuList
[
index
].
disabled
)
return
;
if
(
this
.
menuList
[
index
].
disabled
)
return
;
// 如果点击时的索引和当前激活项索引相同,意味着点击了激活项,需要收起下拉菜单
// 如果点击时的索引和当前激活项索引相同,意味着点击了激活项,需要收起下拉菜单
if
(
index
===
this
.
current
&&
this
.
closeOnClickSelf
)
{
if
(
index
===
this
.
current
&&
this
.
closeOnClickSelf
)
{
this
.
close
();
this
.
close
();
...
@@ -135,7 +139,6 @@
...
@@ -135,7 +139,6 @@
// 展开时,设置下拉内容的样式
// 展开时,设置下拉内容的样式
this
.
contentStyle
=
{
this
.
contentStyle
=
{
zIndex
:
11
,
zIndex
:
11
,
opacity
:
1
}
}
// 标记展开状态以及当前展开项的索引
// 标记展开状态以及当前展开项的索引
this
.
active
=
true
;
this
.
active
=
true
;
...
@@ -162,7 +165,7 @@
...
@@ -162,7 +165,7 @@
// 点击遮罩
// 点击遮罩
maskClick
()
{
maskClick
()
{
// 如果不允许点击遮罩,直接返回
// 如果不允许点击遮罩,直接返回
if
(
!
this
.
closeOnClickMask
)
return
;
if
(
!
this
.
closeOnClickMask
)
return
;
this
.
close
();
this
.
close
();
},
},
// 外部手动设置某个菜单高亮
// 外部手动设置某个菜单高亮
...
@@ -202,7 +205,7 @@
...
@@ -202,7 +205,7 @@
transition
:
transform
.3s
;
transition
:
transform
.3s
;
align-items
:
center
;
align-items
:
center
;
@include
vue-flex
;
@include
vue-flex
;
&
--rotate
{
&
--rotate
{
transform
:
rotate
(
180deg
);
transform
:
rotate
(
180deg
);
}
}
...
@@ -212,16 +215,25 @@
...
@@ -212,16 +215,25 @@
&
__content
{
&
__content
{
position
:
absolute
;
position
:
absolute
;
z-index
:
11
;
z-index
:
8
;
height
:
100%
;
width
:
100%
;
width
:
100%
;
left
:
0px
;
left
:
0px
;
bottom
:
0
;
overflow
:
hidden
;
overflow
:
hidden
;
background
:
rgba
(
0
,
0
,
0
,
.3
);
opacity
:
0
;
&
__mask
{
position
:
absolute
;
z-index
:
9
;
background
:
rgba
(
0
,
0
,
0
,
.3
);
width
:
100%
;
left
:
0
;
top
:
0
;
bottom
:
0
;
}
&
__popup
{
&
__popup
{
z-index
:
11
;
position
:
relative
;
z-index
:
10
;
transition
:
all
0
.3s
;
transition
:
all
0
.3s
;
transform
:
translate3D
(
0
,
-100%
,
0
);
transform
:
translate3D
(
0
,
-100%
,
0
);
}
}
...
...
uview-ui/components/u-grid-item/u-grid-item.vue
View file @
9a1ca055
<
template
>
<
template
>
<view
class=
"u-grid-item"
:hover-class=
"hoverClass"
<view
class=
"u-grid-item"
:hover-class=
"
parentData.
hoverClass"
:hover-stay-time=
"200"
@
tap=
"click"
:style=
"
{
:hover-stay-time=
"200"
@
tap=
"click"
:style=
"
{
background: bgColor,
background: bgColor,
width: width,
width: width,
}">
}">
<view
class=
"u-grid-item-box"
:style=
"customStyle"
:class=
"[
showB
order ? 'u-border-right u-border-bottom' : '']"
>
<view
class=
"u-grid-item-box"
:style=
"customStyle"
:class=
"[
parentData.b
order ? 'u-border-right u-border-bottom' : '']"
>
<slot
/>
<slot
/>
</view>
</view>
</view>
</view>
...
@@ -46,35 +46,35 @@
...
@@ -46,35 +46,35 @@
},
},
data
()
{
data
()
{
return
{
return
{
hoverClass
:
''
,
// 按下去的时候,是否显示背景灰色
parentData
:
{
col
:
1
,
// 父组件划分的宫格数
hoverClass
:
''
,
// 按下去的时候,是否显示背景灰色
showBorder
:
false
,
// 是否显示边框,根据父组件决定
col
:
3
,
// 父组件划分的宫格数
border
:
true
,
// 是否显示边框,根据父组件决定
}
};
};
},
},
created
()
{
created
()
{
// 父组件的实例
// 父组件的实例
this
.
parent
=
false
;
this
.
updateParentData
();
// this.parent在updateParentData()中定义
this
.
parent
.
children
.
push
(
this
);
},
},
computed
:
{
computed
:
{
// 每个grid-item的宽度
// 每个grid-item的宽度
width
()
{
width
()
{
return
100
/
Number
(
this
.
col
)
+
'
%
'
;
return
100
/
Number
(
this
.
parentData
.
col
)
+
'
%
'
;
},
},
},
},
methods
:
{
methods
:
{
// 获取父组件的参数
updateParentData
()
{
// 此方法写在mixin中
this
.
getParentData
(
'
u-grid
'
);
},
click
()
{
click
()
{
this
.
$emit
(
'
click
'
,
this
.
index
);
this
.
$emit
(
'
click
'
,
this
.
index
);
this
.
parent
&&
this
.
parent
.
click
(
this
.
index
);
this
.
parent
&&
this
.
parent
.
click
(
this
.
index
);
}
}
},
mounted
()
{
// 获取父组件节点u-grid,将其参数,赋值给本组件相关变量
this
.
parent
=
this
.
$u
.
$parent
.
call
(
this
,
'
u-grid
'
);
if
(
this
.
parent
)
{
this
.
col
=
this
.
parent
.
col
;
this
.
showBorder
=
this
.
parent
.
border
;
this
.
hoverClass
=
this
.
parent
.
hoverClass
;
}
}
}
};
};
</
script
>
</
script
>
...
...
uview-ui/components/u-grid/u-grid.vue
View file @
9a1ca055
...
@@ -42,7 +42,26 @@ export default {
...
@@ -42,7 +42,26 @@ export default {
index
:
0
,
index
:
0
,
}
}
},
},
watch
:
{
// 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件
parentData
()
{
if
(
this
.
children
.
length
)
{
this
.
children
.
map
(
child
=>
{
// 判断子组件(u-radio)如果有updateParentData方法的话,就就执行(执行的结果是子组件重新从父组件拉取了最新的值)
typeof
(
child
.
updateParentData
)
==
'
function
'
&&
child
.
updateParentData
();
})
}
},
},
created
()
{
// 如果将children定义在data中,在微信小程序会造成循环引用而报错
this
.
children
=
[];
},
computed
:
{
computed
:
{
// 计算父组件的值是否发生变化
parentData
()
{
return
[
this
.
hoverClass
,
this
.
col
,
this
.
size
,
this
.
border
];
},
// 宫格对齐方式
// 宫格对齐方式
gridStyle
()
{
gridStyle
()
{
let
style
=
{};
let
style
=
{};
...
@@ -66,7 +85,6 @@ export default {
...
@@ -66,7 +85,6 @@ export default {
this
.
$emit
(
'
click
'
,
index
);
this
.
$emit
(
'
click
'
,
index
);
}
}
}
}
};
};
</
script
>
</
script
>
...
...
uview-ui/components/u-loadmore/u-loadmore.vue
View file @
9a1ca055
...
@@ -5,14 +5,18 @@
...
@@ -5,14 +5,18 @@
marginTop: marginTop + 'rpx',
marginTop: marginTop + 'rpx',
height: $u.addUnit(height)
height: $u.addUnit(height)
}">
}">
<u-line
color=
"#d4d4d4"
length=
"50"
></u-line>
<!-- 加载中和没有更多的状态才显示两边的横线 -->
<!-- 加载中和没有更多的状态才显示两边的横线 -->
<view
:class=
"status == 'loadmore' || status == 'nomore' ? 'u-more' : ''"
class=
"u-load-more-inner"
>
<view
:class=
"status == 'loadmore' || status == 'nomore' ? 'u-more' : ''"
class=
"u-load-more-inner"
>
<u-loading
class=
"u-loadmore-icon"
:color=
"iconColor"
:mode=
"iconType == 'circle' ? 'circle' : 'flower'"
:show=
"status == 'loading' && icon"
></u-loading>
<view
class=
"u-loadmore-icon-wrap"
>
<u-loading
class=
"u-loadmore-icon"
:color=
"iconColor"
:mode=
"iconType == 'circle' ? 'circle' : 'flower'"
:show=
"status == 'loading' && icon"
></u-loading>
</view>
<!-- 如果没有更多的状态下,显示内容为dot(粗点),加载特定样式 -->
<!-- 如果没有更多的状态下,显示内容为dot(粗点),加载特定样式 -->
<view
:style=
"[loadTextStyle]"
:class=
"[(status == 'nomore' && isDot == true) ? 'u-dot-text' : 'u-more-text']"
@
tap=
"loadMore"
>
<view
class=
"u-line-1"
:style=
"[loadTextStyle]"
:class=
"[(status == 'nomore' && isDot == true) ? 'u-dot-text' : 'u-more-text']"
@
tap=
"loadMore"
>
{{
showText
}}
{{
showText
}}
</view>
</view>
</view>
</view>
<u-line
color=
"#d4d4d4"
length=
"50"
></u-line>
</view>
</view>
</
template
>
</
template
>
...
@@ -40,7 +44,7 @@
...
@@ -40,7 +44,7 @@
//当前页面背景颜色,如果背景为非白色的时候,需要把此值设置为背景的颜色
//当前页面背景颜色,如果背景为非白色的时候,需要把此值设置为背景的颜色
bgColor
:
{
bgColor
:
{
type
:
String
,
type
:
String
,
default
:
'
#ffffff
'
default
:
'
transparent
'
},
},
// 是否显示加载中的图标
// 是否显示加载中的图标
icon
:
{
icon
:
{
...
@@ -120,7 +124,6 @@
...
@@ -120,7 +124,6 @@
zIndex
:
1
,
zIndex
:
1
,
backgroundColor
:
this
.
bgColor
,
backgroundColor
:
this
.
bgColor
,
// 如果是加载中状态,动画和文字需要距离近一点
// 如果是加载中状态,动画和文字需要距离近一点
padding
:
this
.
status
==
'
loading
'
?
'
0 8px
'
:
'
0 12px
'
,
}
}
},
},
// 加载中圆圈动画的样式
// 加载中圆圈动画的样式
...
@@ -157,40 +160,41 @@
...
@@ -157,40 +160,41 @@
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
@import
"../../libs/css/style.components.scss"
;
@import
"../../libs/css/style.components.scss"
;
/* #ifdef MP */
// 在mp.scss中,赋予了u-line为flex: 1,这里需要一个明确的长度,所以重置掉它
// 在组件内部,把组件名(u-line)当做选择器,在微信开发工具会提示不合法,但不影响使用
u-line
{
flex
:
none
;
}
/* #endif */
.u-load-more-wrap
{
.u-load-more-wrap
{
width
:
100%
;
@include
vue-flex
;
@include
vue-flex
;
justify-content
:
center
;
justify-content
:
center
;
align-items
:
center
;
}
}
.u-load-more-inner
{
.u-load-more-inner
{
@include
vue-flex
;
@include
vue-flex
;
justify-content
:
center
;
justify-content
:
center
;
align-items
:
center
;
align-items
:
center
;
padding
:
0
12rpx
;
}
}
.u-more
{
.u-more
{
width
:
60%
;
position
:
relative
;
position
:
relative
;
@include
vue-flex
;
@include
vue-flex
;
justify-content
:
center
;
justify-content
:
center
;
}
}
.
u-more
:
:
before
{
content
:
' '
;
position
:
absolute
;
border-bottom
:
1px
solid
#d4d4d4
;
-webkit-transform
:
scaleY
(
0
.5
);
transform
:
scaleY
(
0
.5
);
width
:
100%
;
top
:
50%
;
left
:
0
;
}
.u-dot-text
{
.u-dot-text
{
font-size
:
28rpx
;
font-size
:
28rpx
;
}
}
.u-loadmore-icon-wrap
{
margin-right
:
8rpx
;
}
.u-loadmore-icon
{
.u-loadmore-icon
{
@include
vue-flex
;
@include
vue-flex
;
align-items
:
center
;
align-items
:
center
;
...
...
uview-ui/components/u-number-box/u-number-box.vue
View file @
9a1ca055
...
@@ -181,6 +181,7 @@
...
@@ -181,6 +181,7 @@
inputVal
:
1
,
// 输入框中的值,不能直接使用props中的value,因为应该改变props的状态
inputVal
:
1
,
// 输入框中的值,不能直接使用props中的value,因为应该改变props的状态
timer
:
null
,
// 用作长按的定时器
timer
:
null
,
// 用作长按的定时器
changeFromInner
:
false
,
// 值发生变化,是来自内部还是外部
changeFromInner
:
false
,
// 值发生变化,是来自内部还是外部
timer
:
null
,
// 内部定时器
};
};
},
},
created
()
{
created
()
{
...
@@ -289,8 +290,18 @@
...
@@ -289,8 +290,18 @@
},
},
handleChange
(
value
,
type
)
{
handleChange
(
value
,
type
)
{
if
(
this
.
disabled
)
return
;
if
(
this
.
disabled
)
return
;
// 清除定时器,避免造成混乱
if
(
this
.
timer
)
{
clearTimeout
(
this
.
timer
);
this
.
timer
=
null
;
}
// 发出input事件,修改通过v-model绑定的值,达到双向绑定的效果
// 发出input事件,修改通过v-model绑定的值,达到双向绑定的效果
this
.
changeFromInner
=
true
;
this
.
changeFromInner
=
true
;
// 一定时间内,清除changeFromInner标记,否则内部值改变后
// 外部通过程序修改value值,将会无效
setTimeout
(()
=>
{
this
.
changeFromInner
=
false
;
},
150
);
this
.
$emit
(
'
input
'
,
Number
(
value
));
this
.
$emit
(
'
input
'
,
Number
(
value
));
this
.
$emit
(
type
,
{
this
.
$emit
(
type
,
{
// 转为Number类型
// 转为Number类型
...
...
uview-ui/components/u-radio-group/u-radio-group.vue
View file @
9a1ca055
...
@@ -75,6 +75,25 @@
...
@@ -75,6 +75,25 @@
// 如果将children定义在data中,在微信小程序会造成循环引用而报错
// 如果将children定义在data中,在微信小程序会造成循环引用而报错
this
.
children
=
[];
this
.
children
=
[];
},
},
watch
:
{
// 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件
parentData
()
{
if
(
this
.
children
.
length
)
{
this
.
children
.
map
(
child
=>
{
// 判断子组件(u-radio)如果有updateParentData方法的话,就就执行(执行的结果是子组件重新从父组件拉取了最新的值)
typeof
(
child
.
updateParentData
)
==
'
function
'
&&
child
.
updateParentData
();
})
}
},
},
computed
:
{
// 这里computed的变量,都是子组件u-radio需要用到的,由于头条小程序的兼容性差异,子组件无法实时监听父组件参数的变化
// 所以需要手动通知子组件,这里返回一个parentData变量,供watch监听,在其中去通知每一个子组件重新从父组件(u-radio-group)
// 拉取父组件新的变化后的参数
parentData
()
{
return
[
this
.
disabled
,
this
.
activeColor
,
this
.
size
,
this
.
labelDisabled
,
this
.
shape
,
this
.
iconSize
,
this
.
width
,
this
.
wrap
];
}
},
methods
:
{
methods
:
{
// 该方法有子组件radio调用,当一个radio被选中的时候,给父组件设置value值(props传递的value)
// 该方法有子组件radio调用,当一个radio被选中的时候,给父组件设置value值(props传递的value)
setValue
(
val
)
{
setValue
(
val
)
{
...
...
uview-ui/components/u-radio/u-radio.vue
View file @
9a1ca055
...
@@ -83,20 +83,14 @@
...
@@ -83,20 +83,14 @@
width
:
null
,
width
:
null
,
height
:
null
,
height
:
null
,
value
:
null
,
value
:
null
,
wrap
:
null
}
}
};
};
},
},
created
()
{
created
()
{
this
.
parent
=
false
;
this
.
parent
=
false
;
// 支付宝小程序不支持provide/inject,所以使用这个方法获取整个父组件,在created定义,避免循环引用
// 支付宝小程序不支持provide/inject,所以使用这个方法获取整个父组件,在created定义,避免循环引用
this
.
parent
=
this
.
$u
.
$parent
.
call
(
this
,
'
u-radio-group
'
);
this
.
updateParentData
();
if
(
this
.
parent
)
{
// 历遍parentData中的属性,将parent中的同名属性赋值给parentData
Object
.
keys
(
this
.
parentData
).
map
(
key
=>
{
this
.
parentData
[
key
]
=
this
.
parent
[
key
];
});
this
.
parent
.
children
.
push
(
this
);
}
},
},
computed
:
{
computed
:
{
// 是否禁用,如果父组件u-raios-group禁用的话,将会忽略子组件的配置
// 是否禁用,如果父组件u-raios-group禁用的话,将会忽略子组件的配置
...
@@ -171,6 +165,9 @@
...
@@ -171,6 +165,9 @@
}
}
},
},
methods
:
{
methods
:
{
updateParentData
()
{
this
.
getParentData
(
'
u-radio-group
'
);
},
onClickLabel
()
{
onClickLabel
()
{
if
(
!
this
.
elLabelDisabled
&&
!
this
.
elDisabled
)
{
if
(
!
this
.
elLabelDisabled
&&
!
this
.
elDisabled
)
{
this
.
setRadioCheckedStatus
();
this
.
setRadioCheckedStatus
();
...
...
uview-ui/components/u-toast/u-toast.vue
View file @
9a1ca055
...
@@ -142,26 +142,19 @@
...
@@ -142,26 +142,19 @@
color
:
#fff
;
color
:
#fff
;
border-radius
:
8rpx
;
border-radius
:
8rpx
;
background
:
#585858
;
background
:
#585858
;
height
:
80rpx
;
@include
vue-flex
;
@include
vue-flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
center
;
justify-content
:
center
;
font-size
:
28rpx
;
font-size
:
28rpx
;
opacity
:
0
;
opacity
:
0
;
pointer-events
:
none
;
pointer-events
:
none
;
padding
:
0
40rpx
;
padding
:
18rpx
40rpx
;
}
}
.u-toast.u-show
{
.u-toast.u-show
{
opacity
:
1
;
opacity
:
1
;
}
}
.u-text
{
word-break
:
keep-all
;
white-space
:
nowrap
;
line-height
:
normal
;
}
.u-icon
{
.u-icon
{
margin-right
:
10rpx
;
margin-right
:
10rpx
;
@include
vue-flex
;
@include
vue-flex
;
...
@@ -172,19 +165,22 @@
...
@@ -172,19 +165,22 @@
.u-position-center
{
.u-position-center
{
left
:
50%
;
left
:
50%
;
top
:
50%
;
top
:
50%
;
transform
:
translateX
(
-50%
)
translateY
(
-50%
);
transform
:
translate
(
-50%
,-
50%
);
/* #ifndef APP-NVUE */
max-width
:
70%
;
/* #endif */
}
}
.u-position-top
{
.u-position-top
{
left
:
50%
;
left
:
50%
;
top
:
20%
;
top
:
20%
;
transform
:
translate
X
(
-50%
)
translateY
(
-50%
);
transform
:
translate
(
-50%
,
-
50%
);
}
}
.u-position-bottom
{
.u-position-bottom
{
left
:
50%
;
left
:
50%
;
bottom
:
20%
;
bottom
:
20%
;
transform
:
translate
X
(
-50%
)
translateY
(
-50%
);
transform
:
translate
(
-50%
,
-
50%
);
}
}
.u-type-primary
{
.u-type-primary
{
...
...
uview-ui/components/u-upload/u-upload.vue
View file @
9a1ca055
...
@@ -341,7 +341,7 @@ export default {
...
@@ -341,7 +341,7 @@ export default {
if
(
this
.
autoUpload
)
this
.
uploadFile
(
listOldLength
);
if
(
this
.
autoUpload
)
this
.
uploadFile
(
listOldLength
);
})
})
.
catch
(
error
=>
{
.
catch
(
error
=>
{
// this.$emit('on-error
', error);
this
.
$emit
(
'
on-choose-fail
'
,
error
);
});
});
},
},
// 提示用户消息
// 提示用户消息
...
...
uview-ui/libs/config/config.js
View file @
9a1ca055
// 此版本发布于2020-09-
07
// 此版本发布于2020-09-
16
let
version
=
'
1.
6.8
'
;
let
version
=
'
1.
7.0
'
;
export
default
{
export
default
{
v
:
version
,
v
:
version
,
...
...
uview-ui/libs/mixin/mixin.js
View file @
9a1ca055
...
@@ -24,7 +24,21 @@ module.exports = {
...
@@ -24,7 +24,21 @@ module.exports = {
})
})
.
exec
()
.
exec
()
})
})
}
},
getParentData
(
parentName
=
''
)
{
// 避免在created中去定义parent变量
if
(
!
this
.
parent
)
this
.
parent
=
false
;
// 这里的本质原理是,通过获取父组件实例(也即u-radio-group的this)
// 将父组件this中对应的参数,赋值给本组件(u-radio的this)的parentData对象中对应的属性
// 之所以需要这么做,是因为所有端中,头条小程序不支持通过this.parent.xxx去监听父组件参数的变化
this
.
parent
=
this
.
$u
.
$parent
.
call
(
this
,
parentName
);
if
(
this
.
parent
)
{
// 历遍parentData中的属性,将parent中的同名属性赋值给parentData
Object
.
keys
(
this
.
parentData
).
map
(
key
=>
{
this
.
parentData
[
key
]
=
this
.
parent
[
key
];
});
}
},
},
},
onReachBottom
()
{
onReachBottom
()
{
uni
.
$emit
(
'
uOnReachBottom
'
)
uni
.
$emit
(
'
uOnReachBottom
'
)
...
...
uview-ui/package.json
View file @
9a1ca055
{
{
"name"
:
"uview-ui"
,
"name"
:
"uview-ui"
,
"version"
:
"1.
6.8
"
,
"version"
:
"1.
7.0
"
,
"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