Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wzj-java
uni-app
提交
5bd10ab2
U
uni-app
项目概览
wzj-java
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5bd10ab2
编写于
11月 21, 2019
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: v3-app 调整picker组件
上级
2b746355
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
102 addition
and
98 deletion
+102
-98
src/platforms/app-plus/view/components/picker/index.vue
src/platforms/app-plus/view/components/picker/index.vue
+65
-33
src/platforms/app-plus/view/components/picker/page.js
src/platforms/app-plus/view/components/picker/page.js
+37
-65
未找到文件。
src/platforms/app-plus/view/components/picker/index.vue
浏览文件 @
5bd10ab2
...
...
@@ -21,6 +21,24 @@ const fields = {
MONTH
:
'
month
'
,
DAY
:
'
day
'
}
function
padLeft
(
num
)
{
return
num
>
9
?
num
:
(
`0
${
num
}
`
)
}
function
getDate
(
str
,
mode_
)
{
const
date
=
new
Date
()
if
(
mode_
===
mode
.
TIME
)
{
str
=
str
.
split
(
'
:
'
)
if
(
str
.
length
===
2
)
{
date
.
setHours
(
parseInt
(
str
[
0
]),
parseInt
(
str
[
1
]))
}
}
else
{
str
=
str
.
split
(
'
-
'
)
if
(
str
.
length
===
3
)
{
date
.
setFullYear
(
parseInt
(
str
[
0
]),
parseInt
(
str
[
1
]
-
1
),
parseInt
(
str
[
2
]))
}
}
return
date
}
export
default
{
name
:
'
Picker
'
,
mixins
:
[
emitter
],
...
...
@@ -131,40 +149,54 @@ export default {
this
.
_showPicker
(
Object
.
assign
({},
this
.
$props
))
},
_showPicker
(
data
)
{
if
(
this
.
page
)
{
return
}
let
res
=
{
event
:
'
cancel
'
}
this
.
page
=
showPage
({
url
:
'
__uniapppicker
'
,
data
,
style
:
{
titleNView
:
false
,
animationType
:
'
none
'
,
animationDuration
:
0
,
background
:
'
rgba(0,0,0,0)
'
,
popGesture
:
'
none
'
},
onMessage
:
(
message
)
=>
{
const
event
=
message
.
event
if
(
event
===
'
created
'
)
{
this
.
_updatePicker
(
data
)
return
}
if
(
event
===
'
columnchange
'
)
{
delete
message
.
event
this
.
$trigger
(
event
,
{},
message
)
return
if
(
this
.
mode
===
mode
.
TIME
||
this
.
mode
===
mode
.
DATE
)
{
plus
.
nativeUI
[
this
.
mode
===
mode
.
TIME
?
'
pickTime
'
:
'
pickDate
'
]((
res
)
=>
{
const
date
=
res
.
date
this
.
$trigger
(
'
change
'
,
{},
{
value
:
this
.
mode
===
mode
.
TIME
?
`
${
padLeft
(
date
.
getHours
())}
:
${
padLeft
(
date
.
getMinutes
())}
`
:
`
${
date
.
getFullYear
()}
-
${
padLeft
(
date
.
getMonth
()
+
1
)}
-
${
padLeft
(
date
.
getDate
())}
`
})
},
()
=>
{
this
.
$trigger
(
'
cancel
'
,
{},
{})
},
this
.
mode
===
mode
.
TIME
?
{
time
:
getDate
(
this
.
value
,
mode
.
TIME
)
}
:
{
date
:
getDate
(
this
.
value
,
mode
.
DATE
),
minDate
:
getDate
(
this
.
start
,
mode
.
DATE
),
maxDate
:
getDate
(
this
.
end
,
mode
.
DATE
)
})
}
else
{
let
res
=
{
event
:
'
cancel
'
}
this
.
page
=
showPage
({
url
:
'
__uniapppicker
'
,
data
,
style
:
{
titleNView
:
false
,
animationType
:
'
none
'
,
animationDuration
:
0
,
background
:
'
rgba(0,0,0,0)
'
,
popGesture
:
'
none
'
},
onMessage
:
(
message
)
=>
{
const
event
=
message
.
event
if
(
event
===
'
created
'
)
{
this
.
_updatePicker
(
data
)
return
}
if
(
event
===
'
columnchange
'
)
{
delete
message
.
event
this
.
$trigger
(
event
,
{},
message
)
return
}
res
=
message
},
onClose
:
()
=>
{
this
.
page
=
null
const
event
=
res
.
event
delete
res
.
event
this
.
$trigger
(
event
,
{},
res
)
}
res
=
message
},
onClose
:
()
=>
{
this
.
page
=
null
const
event
=
res
.
event
delete
res
.
event
this
.
$trigger
(
event
,
{},
res
)
}
})
})
}
},
_updatePicker
(
data
)
{
this
.
page
&&
this
.
page
.
sendMessage
(
data
)
...
...
src/platforms/app-plus/view/components/picker/page.js
浏览文件 @
5bd10ab2
let
plus_
let
weex_
let
uni_
let
runtime
let
BroadcastChannel_
function
getRuntime
()
{
return
runtime
||
(
runtime
=
typeof
window
===
'
object
'
&&
typeof
navigator
===
'
object
'
&&
typeof
document
===
'
object
'
?
'
webview
'
:
'
v8
'
)
}
function
setRuntime
(
value
)
{
runtime
=
value
return
typeof
window
===
'
object
'
&&
typeof
navigator
===
'
object
'
&&
typeof
document
===
'
object
'
?
'
webview
'
:
'
v8
'
}
function
getPageId
()
{
return
plus_
.
webview
.
currentWebview
().
id
}
let
initedEventListener
=
false
let
channel
const
callbacks
=
{}
function
addEventListener
(
pageId
,
callback
)
{
const
runtime
=
getRuntime
()
function
onPlusMessage
(
res
)
{
const
message
=
res
.
data
&&
res
.
data
.
__message
if
(
!
message
||
!
message
.
__page
)
{
return
}
const
pageId
=
message
.
__page
const
callback
=
callbacks
[
pageId
]
callback
&&
callback
(
message
)
if
(
!
message
.
keep
)
{
delete
callbacks
[
pageId
]
}
function
onPlusMessage
(
res
)
{
const
message
=
res
.
data
&&
res
.
data
.
__message
if
(
!
message
||
!
message
.
__page
)
{
return
}
if
(
!
initedEventListener
)
{
if
(
runtime
===
'
v8
'
)
{
const
globalEvent
=
weex_
.
requireModule
(
'
globalEvent
'
)
globalEvent
.
addEventListener
(
'
plusMessage
'
,
onPlusMessage
)
}
else
if
(
runtime
===
'
v8-native
'
)
{
uni_
.
$on
(
getPageId
(),
onPlusMessage
)
}
else
{
window
.
__plusMessage
=
onPlusMessage
}
initedEventListener
=
true
const
pageId
=
message
.
__page
const
callback
=
callbacks
[
pageId
]
callback
&&
callback
(
message
)
if
(
!
message
.
keep
)
{
delete
callbacks
[
pageId
]
}
}
function
addEventListener
(
pageId
,
callback
)
{
if
(
getRuntime
()
===
'
v8
'
)
{
channel
&&
channel
.
close
()
channel
=
new
BroadcastChannel_
(
getPageId
())
channel
.
onmessage
=
onPlusMessage
}
else
{
window
.
__plusMessage
=
onPlusMessage
}
callbacks
[
pageId
]
=
callback
}
...
...
@@ -55,19 +41,13 @@ class Page {
this
.
webview
=
webview
}
sendMessage
(
data
)
{
const
runtime
=
getRuntime
()
const
message
=
{
__message
:
{
data
}
}
if
(
runtime
===
'
v8-native
'
)
{
uni_
.
$emit
(
this
.
webview
.
id
,
{
data
:
JSON
.
parse
(
JSON
.
stringify
(
message
))
})
}
else
{
plus_
.
webview
.
postMessageToUniNView
(
message
,
this
.
webview
.
id
)
}
const
channel
=
new
BroadcastChannel_
(
this
.
webview
.
id
)
channel
.
postMessage
(
message
)
}
close
()
{
this
.
webview
.
close
()
...
...
@@ -75,31 +55,17 @@ class Page {
}
export
function
showPage
({
context
,
runtime
,
context
=
{},
url
,
data
=
{},
style
=
{},
onMessage
,
onClose
})
{
if
(
context
)
{
plus_
=
context
.
plus
weex_
=
context
.
weex
uni_
=
context
.
uni
}
else
{
// eslint-disable-next-line
plus_
=
typeof
plus
===
'
object
'
?
plus
:
null
// eslint-disable-next-line
weex_
=
typeof
weex
===
'
object
'
?
weex
:
null
// eslint-disable-next-line
uni_
=
typeof
uni
===
'
object
'
?
uni
:
null
}
if
(
runtime
)
{
setRuntime
(
runtime
)
}
else
{
runtime
=
getRuntime
()
}
// eslint-disable-next-line
plus_
=
context
.
plus
||
plus
// eslint-disable-next-line
BroadcastChannel_
=
context
.
BroadcastChannel
||
BroadcastChannel
const
titleNView
=
{
autoBackButton
:
true
,
titleSize
:
'
17px
'
...
...
@@ -118,13 +84,19 @@ export function showPage ({
animationType
:
'
pop-in
'
,
animationDuration
:
200
,
uniNView
:
{
path
:
`
/
${
url
}
.js?from=
${
getPageId
()}
&runtime=
${
runtime
}
&data=
${
encodeURIComponent
(
JSON
.
stringify
(
data
))}
`
,
path
:
`
${(
typeof
process
===
'
object
'
&&
process
.
env
&&
process
.
env
.
VUE_APP_TEMPLATE_PATH
)
||
'
/template
'
}
/
${
url
}
.js
`
,
defaultFontSize
:
plus_
.
screen
.
resolutionWidth
/
20
,
viewport
:
plus_
.
screen
.
resolutionWidth
}
}
style
=
Object
.
assign
(
defaultStyle
,
style
)
const
page
=
plus_
.
webview
.
create
(
''
,
pageId
,
style
)
const
page
=
plus_
.
webview
.
create
(
''
,
pageId
,
style
,
{
extras
:
{
from
:
getPageId
(),
runtime
:
getRuntime
(),
data
}
})
page
.
addEventListener
(
'
close
'
,
onClose
)
addEventListener
(
pageId
,
message
=>
{
if
(
typeof
onMessage
===
'
function
'
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录