Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Velpro187
uni-app
提交
59c88b61
U
uni-app
项目概览
Velpro187
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
59c88b61
编写于
12月 10, 2018
作者:
X
xiaoyucoding
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 修复 picker 未设置 value 值时报错的问题
上级
cf84fd78
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
159 addition
and
119 deletion
+159
-119
src/core/view/components/picker/index.vue
src/core/view/components/picker/index.vue
+1
-1
src/platforms/h5/components/app/popup/picker.vue
src/platforms/h5/components/app/popup/picker.vue
+143
-118
src/shared/util.js
src/shared/util.js
+15
-0
未找到文件。
src/core/view/components/picker/index.vue
浏览文件 @
59c88b61
...
...
@@ -48,7 +48,7 @@ export default {
},
value
:
{
type
:
[
Number
,
String
,
Array
],
default
:
''
default
:
0
},
mode
:
{
type
:
String
,
...
...
src/platforms/h5/components/app/popup/picker.vue
浏览文件 @
59c88b61
<
template
>
<uni-picker
@
touchmove.prevent
>
<transition
name=
"uni-fade"
>
<div
v-show=
"visible"
class=
"uni-mask"
<transition
name=
"uni-fade"
>
<div
v-show=
"visible"
class=
"uni-mask"
@
click=
"_cancel"
/>
</transition>
<div
:class=
"
{'uni-picker_toggle':visible}"
<div
:class=
"
{'uni-picker_toggle':visible}"
class="uni-picker">
<div
class=
"uni-picker-header"
<div
class=
"uni-picker-header"
@
click.stop
>
<div
class=
"uni-picker-action uni-picker-action-cancel"
<div
class=
"uni-picker-action uni-picker-action-cancel"
@
click=
"_cancel"
>
取消
</div>
<div
class=
"uni-picker-action uni-picker-action-confirm"
<div
class=
"uni-picker-action uni-picker-action-confirm"
@
click=
"_change"
>
确定
</div>
</div>
<v-uni-picker-view
:value.sync=
"valueArray"
<v-uni-picker-view
:value.sync=
"valueArray"
class=
"uni-picker-content"
>
<v-uni-picker-view-column
v-for=
"(range,index0) in rangeArray"
<v-uni-picker-view-column
v-for=
"(range,index0) in rangeArray"
:key=
"index0"
>
<div
v-for=
"(item,index) in range"
:key=
"index"
<div
v-for=
"(item,index) in range"
:key=
"index"
class=
"uni-picker-item"
>
{{
typeof
item
===
'
object
'
?
item
[
rangeKey
]
||
''
:
item
}}{{
units
[
index0
]
||
''
}}
</div>
</v-uni-picker-view-column>
</v-uni-picker-view>
...
...
@@ -40,6 +39,10 @@
</uni-picker>
</
template
>
<
script
>
import
{
formatDateTime
}
from
'
uni-shared
'
const
mode
=
{
SELECTOR
:
'
selector
'
,
MULTISELECTOR
:
'
multiSelector
'
,
...
...
@@ -151,7 +154,8 @@ export default {
return
val
case
mode
.
TIME
:
return
this
.
timeArray
case
mode
.
DATE
:
{
case
mode
.
DATE
:
{
let
dateArray
=
this
.
dateArray
switch
(
this
.
fields
)
{
case
fields
.
YEAR
:
...
...
@@ -166,11 +170,13 @@ export default {
},
startArray
()
{
var
splitStr
=
this
.
mode
===
mode
.
DATE
?
'
-
'
:
'
:
'
return
this
.
start
.
split
(
splitStr
).
map
((
val
,
i
)
=>
(
this
.
mode
===
mode
.
DATE
?
this
.
dateArray
:
this
.
timeArray
)[
i
].
indexOf
(
val
))
return
this
.
start
.
split
(
splitStr
).
map
((
val
,
i
)
=>
(
this
.
mode
===
mode
.
DATE
?
this
.
dateArray
:
this
.
timeArray
)[
i
].
indexOf
(
val
))
},
endArray
()
{
var
splitStr
=
this
.
mode
===
mode
.
DATE
?
'
-
'
:
'
:
'
return
this
.
end
.
split
(
splitStr
).
map
((
val
,
i
)
=>
(
this
.
mode
===
mode
.
DATE
?
this
.
dateArray
:
this
.
timeArray
)[
i
].
indexOf
(
val
))
return
this
.
end
.
split
(
splitStr
).
map
((
val
,
i
)
=>
(
this
.
mode
===
mode
.
DATE
?
this
.
dateArray
:
this
.
timeArray
)[
i
].
indexOf
(
val
))
},
units
()
{
switch
(
this
.
mode
)
{
...
...
@@ -211,7 +217,7 @@ export default {
created
()
{
this
.
_createTime
()
this
.
_createDate
()
this
.
_setValue
(
this
.
value
)
this
.
_setValue
()
this
.
$watch
(
'
value
'
,
this
.
_setValue
)
this
.
$watch
(
'
mode
'
,
this
.
_setValue
)
},
...
...
@@ -252,8 +258,8 @@ export default {
return
val
[
0
]
*
366
+
(
val
[
1
]
||
0
*
31
)
+
(
val
[
2
]
||
0
)
},
/**
* 将右侧数组值同步到左侧(交集部分)
*/
* 将右侧数组值同步到左侧(交集部分)
*/
_cloneArray
(
val1
,
val2
)
{
for
(
let
i
=
0
;
i
<
val1
.
length
&&
i
<
val2
.
length
;
i
++
)
{
val1
[
i
]
=
val2
[
i
]
...
...
@@ -270,9 +276,21 @@ export default {
valueArray
=
[...
val
]
break
case
mode
.
TIME
:
// 处理默认值为当前时间
if
(
this
.
value
===
0
)
{
val
=
formatDateTime
({
mode
:
mode
.
TIME
})
}
valueArray
=
val
.
split
(
'
:
'
).
map
((
val
,
i
)
=>
this
.
timeArray
[
i
].
indexOf
(
val
))
break
case
mode
.
DATE
:
// 处理默认值为当前日期
if
(
this
.
value
===
0
)
{
val
=
formatDateTime
({
mode
:
mode
.
DATE
})
}
valueArray
=
val
.
split
(
'
-
'
).
map
((
val
,
i
)
=>
this
.
dateArray
[
i
].
indexOf
(
val
))
break
}
...
...
@@ -316,102 +334,109 @@ export default {
}
</
script
>
<
style
>
uni-picker
{
display
:
block
;
box-sizing
:
border-box
;
}
uni-picker
{
display
:
block
;
box-sizing
:
border-box
;
}
uni-picker
.uni-picker
{
position
:
fixed
;
left
:
0
;
bottom
:
0
;
transform
:
translate
(
0
,
100%
);
backface-visibility
:
hidden
;
z-index
:
999
;
width
:
100%
;
background-color
:
#efeff4
;
transition
:
transform
0.3s
;
}
uni-picker
.uni-picker
{
position
:
fixed
;
left
:
0
;
bottom
:
0
;
transform
:
translate
(
0
,
100%
);
backface-visibility
:
hidden
;
z-index
:
999
;
width
:
100%
;
background-color
:
#efeff4
;
transition
:
transform
0.3s
;
}
uni-picker
.uni-picker.uni-picker_toggle
{
transform
:
translate
(
0
,
0
);
}
uni-picker
.uni-picker.uni-picker_toggle
{
transform
:
translate
(
0
,
0
);
}
uni-picker
.uni-picker
*
{
box-sizing
:
border-box
;
}
uni-picker
.uni-picker
*
{
box-sizing
:
border-box
;
}
uni-picker
.uni-picker
{
position
:
fixed
;
left
:
0
;
bottom
:
0
;
transform
:
translate
(
0
,
100%
);
backface-visibility
:
hidden
;
z-index
:
999
;
width
:
100%
;
background-color
:
#efeff4
;
transition
:
transform
0.3s
;
transition
:
transform
0.3s
;
}
uni-picker
.uni-picker
{
position
:
fixed
;
left
:
0
;
bottom
:
0
;
transform
:
translate
(
0
,
100%
);
backface-visibility
:
hidden
;
z-index
:
999
;
width
:
100%
;
background-color
:
#efeff4
;
transition
:
transform
0.3s
;
transition
:
transform
0.3s
;
}
uni-picker
.uni-picker-content
{
position
:
relative
;
display
:
block
;
width
:
100%
;
height
:
238px
;
background-color
:
white
;
}
uni-picker
.uni-picker-item
{
padding
:
0
;
height
:
34px
;
line-height
:
34px
;
text-align
:
center
;
color
:
#000
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
overflow
:
hidden
;
}
uni-picker
.uni-picker-header
{
display
:
block
;
position
:
relative
;
text-align
:
center
;
width
:
100%
;
height
:
45px
;
background-color
:
#fff
;
}
uni-picker
.uni-picker-header
:after
{
content
:
""
;
position
:
absolute
;
left
:
0
;
bottom
:
0
;
right
:
0
;
height
:
1px
;
clear
:
both
;
border-bottom
:
1px
solid
#e5e5e5
;
color
:
#e5e5e5
;
transform-origin
:
0
100%
;
transform
:
scaleY
(
0.5
);
}
uni-picker
.uni-picker-action
{
display
:
block
;
max-width
:
50%
;
top
:
0
;
height
:
100%
;
box-sizing
:
border-box
;
padding
:
0
14px
;
font-size
:
17px
;
line-height
:
45px
;
overflow
:
hidden
;
}
uni-picker
.uni-picker-action.uni-picker-action-cancel
{
float
:
left
;
color
:
#888
;
}
uni-picker
.uni-picker-action.uni-picker-action-confirm
{
float
:
right
;
color
:
#007aff
;
}
/* .uni-picker {
uni-picker
.uni-picker-content
{
position
:
relative
;
display
:
block
;
width
:
100%
;
height
:
238px
;
background-color
:
white
;
}
uni-picker
.uni-picker-item
{
padding
:
0
;
height
:
34px
;
line-height
:
34px
;
text-align
:
center
;
color
:
#000
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
overflow
:
hidden
;
}
uni-picker
.uni-picker-header
{
display
:
block
;
position
:
relative
;
text-align
:
center
;
width
:
100%
;
height
:
45px
;
background-color
:
#fff
;
}
uni-picker
.uni-picker-header
:after
{
content
:
""
;
position
:
absolute
;
left
:
0
;
bottom
:
0
;
right
:
0
;
height
:
1px
;
clear
:
both
;
border-bottom
:
1px
solid
#e5e5e5
;
color
:
#e5e5e5
;
transform-origin
:
0
100%
;
transform
:
scaleY
(
0.5
);
}
uni-picker
.uni-picker-action
{
display
:
block
;
max-width
:
50%
;
top
:
0
;
height
:
100%
;
box-sizing
:
border-box
;
padding
:
0
14px
;
font-size
:
17px
;
line-height
:
45px
;
overflow
:
hidden
;
}
uni-picker
.uni-picker-action.uni-picker-action-cancel
{
float
:
left
;
color
:
#888
;
}
uni-picker
.uni-picker-action.uni-picker-action-confirm
{
float
:
right
;
color
:
#007aff
;
}
/* .uni-picker {
position: relative;
}
.uni-picker-units {
...
...
@@ -432,4 +457,4 @@ uni-picker .uni-picker-action.uni-picker-action-confirm {
text-align: center;
transform: translateX(2em);
} */
</
style
>
</
style
>
src/shared/util.js
浏览文件 @
59c88b61
const
_toString
=
Object
.
prototype
.
toString
const
hasOwnProperty
=
Object
.
prototype
.
hasOwnProperty
const
_completeValue
=
value
=>
{
return
value
>
9
?
value
:
(
'
0
'
+
value
)
}
export
function
isFn
(
fn
)
{
return
typeof
fn
===
'
function
'
}
...
...
@@ -34,4 +38,15 @@ export function setProperties (item, props, propsData) {
export
function
getLen
(
str
=
''
)
{
/* eslint-disable no-control-regex */
return
(
''
+
str
).
replace
(
/
[^\x
00-
\x
ff
]
/g
,
'
**
'
).
length
}
export
function
formatDateTime
({
date
=
new
Date
(),
mode
=
'
date
'
})
{
if
(
mode
===
'
time
'
)
{
return
_completeValue
(
date
.
getHours
())
+
'
:
'
+
_completeValue
(
date
.
getMinutes
())
}
else
{
return
date
.
getFullYear
()
+
'
-
'
+
_completeValue
(
date
.
getMonth
()
+
1
)
+
'
-
'
+
_completeValue
(
date
.
getDate
())
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录