Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
A
az-uniapp-wechat-web
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
李智书
az-uniapp-wechat-web
Commits
68f197b8
Commit
68f197b8
authored
May 20, 2021
by
李智书
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.修改充值体现页面
parent
30d4497f
Changes
11
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1769 additions
and
650 deletions
+1769
-650
components/keyboard-package/keyboard-package.vue
components/keyboard-package/keyboard-package.vue
+299
-0
components/password-input/password-input.vue
components/password-input/password-input.vue
+111
-0
components/uni-popup/message.js
components/uni-popup/message.js
+22
-0
components/uni-popup/popup.js
components/uni-popup/popup.js
+25
-0
components/uni-popup/uni-popup-dialog.vue
components/uni-popup/uni-popup-dialog.vue
+243
-0
components/uni-popup/uni-popup-message.vue
components/uni-popup/uni-popup-message.vue
+116
-0
components/uni-popup/uni-popup-share.vue
components/uni-popup/uni-popup-share.vue
+165
-0
components/uni-popup/uni-popup.vue
components/uni-popup/uni-popup.vue
+294
-0
components/uni-transition/uni-transition.vue
components/uni-transition/uni-transition.vue
+279
-0
main.js
main.js
+4
-0
pages/assignDeposit/assignDeposit.vue
pages/assignDeposit/assignDeposit.vue
+211
-650
No files found.
components/keyboard-package/keyboard-package.vue
0 → 100644
View file @
68f197b8
<
template
>
<uni-popup
:custom=
"true"
type=
"bottom"
ref=
"keyboardPackage"
>
<view
class=
"keyboardbox"
>
<view
class=
"numkeyboard"
v-if=
"type==='number'"
>
<view
class=
"num-area"
>
<view
class=
"row"
v-for=
"(item,index) in numKeybordList"
:key=
"index"
>
<view
:class=
"['item',ite===0?'z':'',(disableDot && ite==='.')?'disabled':'']"
v-for=
"(ite,idx) in item"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
:key=
"idx"
@
tap=
"input(ite)"
>
{{
ite
}}
</view>
</view>
</view>
<view
class=
"btn-area"
>
<view
:class=
"['item','del']"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"deleteVal"
>
删除
</view>
<view
class=
"confirem item"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"confirm"
>
完成
</view>
</view>
</view>
<view
class=
"numkeyboard"
v-if=
"type==='idCard'"
>
<view
class=
"num-area"
>
<view
class=
"row"
v-for=
"(item,index) in idCardList"
:key=
"index"
>
<view
:class=
"['item',ite===0?'z':'',(disableDot && ite==='.')?'disabled':'']"
v-for=
"(ite,idx) in item"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
:key=
"idx"
@
tap=
"input(ite)"
>
{{
ite
}}
</view>
</view>
</view>
<view
class=
"btn-area"
>
<view
:class=
"['item','del']"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"deleteVal"
>
删除
</view>
<view
class=
"confirem item"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"confirm"
>
完成
</view>
</view>
</view>
<view
class=
"platenumber"
v-if=
"type==='plateNumber'"
>
<view
class=
"header"
>
<view
@
tap=
"active=active===1?2:1"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
>
{{
active
===
1
?
'
地区
'
:
'
车牌号
'
}}
</view>
<view
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"confirm"
>
完成
</view>
</view>
<view
class=
"main"
>
<view
class=
"normal"
v-show=
"active===1"
>
<view
class=
"row"
v-for=
"(item,index) in EngKeyBoardList"
:key=
"index"
>
<view
class=
"item"
v-for=
"(ite,idx) in item"
:key=
"idx"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"input(ite)"
>
{{
ite
}}
</view>
<view
class=
"item img"
v-if=
"index===EngKeyBoardList.length-1"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"deleteVal"
>
<image
src=
"/static/delete.png"
mode=
""
></image>
</view>
</view>
</view>
<view
class=
"area"
v-show=
"active===2"
>
<view
class=
"row"
v-for=
"(item,index) in areaList"
:key=
"index"
>
<view
class=
"item"
v-for=
"(ite,idx) in item"
:key=
"idx"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"input(ite)"
>
{{
ite
}}
</view>
<view
class=
"item img"
v-if=
"index===EngKeyBoardList.length-1"
hover-class=
"active"
:hover-start-time=
"0"
:hover-stay-time=
"5"
@
tap=
"deleteVal"
>
<image
src=
"/static/delete.png"
mode=
""
></image>
</view>
</view>
</view>
</view>
</view>
</view>
<view
class=
"safe-area"
v-if=
"safeAreaInsetBottom"
></view>
</uni-popup>
</
template
>
<
script
>
import
uniPopup
from
"
@/components/uni-popup/uni-popup.vue
"
export
default
{
components
:
{
uniPopup
},
props
:
{
type
:
{
type
:
String
,
default
:
'
number
'
},
safeAreaInsetBottom
:
{
//是否设置安全区
type
:
Boolean
,
default
:
false
},
disableDot
:
{
//数字键盘是否禁止点击.仅type为number生效
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
numKeybordList
:
[
[
1
,
2
,
3
],
[
4
,
5
,
6
],
[
7
,
8
,
9
],
[
0
,
'
.
'
]
],
idCardList
:
[
[
1
,
2
,
3
],
[
4
,
5
,
6
],
[
7
,
8
,
9
],
[
0
,
'
X
'
]
],
areaList
:
[
[
'
京
'
,
'
沪
'
,
'
粤
'
,
'
津
'
,
'
冀
'
,
'
豫
'
,
'
云
'
,
'
辽
'
,
'
黑
'
,
'
湘
'
],
[
'
皖
'
,
'
鲁
'
,
'
苏
'
,
'
浙
'
,
'
赣
'
,
'
鄂
'
,
'
桂
'
,
'
甘
'
,
'
晋
'
,
'
陕
'
],
[
'
蒙
'
,
'
吉
'
,
'
闽
'
,
'
贵
'
,
'
渝
'
,
'
川
'
,
'
青
'
,
'
琼
'
,
'
宁
'
],
[
'
藏
'
,
'
新
'
,
'
使
'
,
'
港
'
,
'
澳
'
,
'
学
'
]
],
EngKeyBoardList
:
[
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
],
[
'
Q
'
,
'
W
'
,
'
E
'
,
'
R
'
,
'
T
'
,
'
Y
'
,
'
U
'
,
'
I
'
,
'
O
'
,
'
P
'
],
[
'
A
'
,
'
S
'
,
'
D
'
,
'
F
'
,
'
G
'
,
'
H
'
,
'
J
'
,
'
K
'
,
'
L
'
],
[
'
Z
'
,
'
X
'
,
'
C
'
,
'
V
'
,
'
B
'
,
'
N
'
,
'
M
'
]
],
active
:
2
};
},
methods
:
{
open
()
{
this
.
$refs
.
keyboardPackage
.
open
();
},
confirm
()
{
this
.
close
();
this
.
$emit
(
'
onConfirm
'
);
},
deleteVal
()
{
this
.
$emit
(
'
onDelete
'
);
},
input
(
val
)
{
if
(
val
===
'
.
'
&&
this
.
disableDot
)
return
;
this
.
$emit
(
'
onInput
'
,
val
);
if
(
this
.
active
===
2
){
this
.
active
=
1
;
}
},
close
()
{
this
.
$refs
.
keyboardPackage
.
close
();
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.keyboardbox
{
background-color
:
#FFFFFF
;
.numkeyboard
{
height
:
432rpx
;
display
:
flex
;
background-color
:
#ebedf0
;
.btn-area
{
width
:
180rpx
;
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
.item
{
width
:
100%
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
flex-grow
:
1
;
}
.del
{
background-color
:
#ebedf0
;
color
:
#333
;
&
.active
{
background-color
:
#f1f3f5
;
}
}
.confirem
{
background-color
:
#1989fa
;
color
:
#FFFFFF
;
&
.active
{
background-color
:
#0570db
;
}
}
}
.num-area
{
flex-grow
:
1
;
display
:
flex
;
flex-wrap
:
wrap
;
.row
{
width
:
100%
;
height
:
25%
;
display
:
flex
;
margin-top
:
1px
;
.item
{
flex-grow
:
1
;
height
:
100%
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
background-color
:
#FFFFFF
;
border-right
:
1px
solid
#ebedf0
;
width
:
33
.33%
;
&
.active
{
background-color
:
#ebedf0
;
}
&
.z
{
flex-grow
:
2
;
width
:
66
.66%
;
}
&
.disabled
{
background
:
#FFFFFF
;
color
:
#B9B9B9
;
}
}
}
}
}
}
.safe-area
{
padding-bottom
:
0rpx
;
padding-bottom
:
constant
(
safe-area-inset-bottom
);
padding-bottom
:
env
(
safe-area-inset-bottom
);
}
.platenumber
{
background-color
:
#f5f5f5
;
.header
{
height
:
76rpx
;
background-color
:
#FFFFFF
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
font-size
:
28rpx
;
border-top
:
1px
solid
#f5f5f5
;
&
>
view
{
padding
:
0
45rpx
;
color
:
#00a7ea
;
height
:
100%
;
display
:
flex
;
align-items
:
center
;
&
.active
{
background-color
:
#ebedf0
;
}
}
}
.main
{
height
:
435rpx
;
.row
{
margin
:
13rpx
0
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
.item
{
width
:
56rpx
;
height
:
94rpx
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
background-color
:
#FFFFFF
;
border-radius
:
6rpx
;
margin
:
0
7rpx
;
font-size
:
24rpx
;
&
.active
{
background-color
:
#ebedf0
;
}
&
.img
{
background-color
:
#c2cacc
;
width
:
94rpx
;
&
.active
{
background-color
:
#ddd
;
}
&
>
image
{
width
:
49rpx
;
height
:
48rpx
;
}
}
}
}
}
}
</
style
>
components/password-input/password-input.vue
0 → 100644
View file @
68f197b8
<
template
>
<view
class=
"box"
>
<view
:class=
"['item',list.length===index?'fakecursor':'']"
v-for=
"(item,index) in length"
:key=
"item"
:style=
"
{margin:formatMargin(gutter)}">
<view
class=
"psw"
v-if=
"showPsw"
>
{{
list
[
index
]
}}
</view>
<view
:class=
"['circle',(index
<list
.
length
)?'
dot
'
:
'']"
v-else
></view>
</view>
</view>
</
template
>
<
script
>
export
default
{
props
:
{
length
:
{
//长度只允许为6和4
type
:
Number
,
default
:
6
,
validator
(
val
)
{
if
(
val
!==
6
&&
val
!==
4
)
{
return
false
;
}
return
true
;
}
},
gutter
:
{
type
:
Number
,
default
:
0
},
list
:
{
type
:
Array
,
default
:
function
()
{
return
[];
}
},
showPsw
:
{
// 展示密码
type
:
Boolean
,
default
:
false
,
}
},
data
()
{
return
{};
},
computed
:
{
},
methods
:
{
formatMargin
(
gutter
)
{
return
0
+
'
'
+
gutter
+
'
rpx
'
;
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.box
{
background-color
:
#F5F5F5
;
padding
:
20rpx
;
display
:
flex
;
.item
{
position
:
relative
;
background-color
:
#FFFFFF
;
height
:
100rpx
;
flex
:
1
;
border
:
1px
solid
#F5F5F5
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
border-radius
:
20rpx
;
.circle
{
width
:
20rpx
;
height
:
20rpx
;
border-radius
:
50%
;
background-color
:
#fff
;
&
.dot
{
background-color
:
#000
;
}
}
.psw
{
font-size
:
24rpx
;
}
}
}
.
fakecursor
:
:
after
{
content
:
''
;
display
:
block
;
width
:
1px
;
height
:
32rpx
;
animation
:
blink
1s
infinite
steps
(
1
,
start
);
position
:
absolute
;
left
:
50%
;
top
:
50%
;
margin-top
:
-16rpx
;
}
@keyframes
blink
{
0
%
{
background-color
:
white
;
}
50
%
{
background-color
:
black
;
}
100
%
{
background-color
:
white
;
}
}
</
style
>
components/uni-popup/message.js
0 → 100644
View file @
68f197b8
export
default
{
created
()
{
if
(
this
.
type
===
'
message
'
)
{
// 不显示遮罩
this
.
maskShow
=
false
// 获取子组件对象
this
.
childrenMsg
=
null
}
},
methods
:
{
customOpen
()
{
if
(
this
.
childrenMsg
)
{
this
.
childrenMsg
.
open
()
}
},
customClose
()
{
if
(
this
.
childrenMsg
)
{
this
.
childrenMsg
.
close
()
}
}
}
}
components/uni-popup/popup.js
0 → 100644
View file @
68f197b8
import
message
from
'
./message.js
'
;
// 定义 type 类型:弹出类型:top/bottom/center
const
config
=
{
// 顶部弹出
top
:
'
top
'
,
// 底部弹出
bottom
:
'
bottom
'
,
// 居中弹出
center
:
'
center
'
,
// 消息提示
message
:
'
top
'
,
// 对话框
dialog
:
'
center
'
,
// 分享
share
:
'
bottom
'
,
}
export
default
{
data
(){
return
{
config
:
config
}
},
mixins
:
[
message
],
}
components/uni-popup/uni-popup-dialog.vue
0 → 100644
View file @
68f197b8
<
template
>
<view
class=
"uni-popup-dialog"
>
<view
class=
"uni-dialog-title"
>
<text
class=
"uni-dialog-title-text"
:class=
"['uni-popup__'+dialogType]"
>
{{
title
}}
</text>
</view>
<view
class=
"uni-dialog-content"
>
<text
class=
"uni-dialog-content-text"
v-if=
"mode === 'base'"
>
{{
content
}}
</text>
<input
v-else
class=
"uni-dialog-input"
v-model=
"val"
type=
"text"
:placeholder=
"placeholder"
:focus=
"focus"
>
</view>
<view
class=
"uni-dialog-button-group"
>
<view
class=
"uni-dialog-button"
@
click=
"close"
>
<text
class=
"uni-dialog-button-text"
>
取消
</text>
</view>
<view
class=
"uni-dialog-button uni-border-left"
@
click=
"onOk"
>
<text
class=
"uni-dialog-button-text uni-button-color"
>
确定
</text>
</view>
</view>
</view>
</
template
>
<
script
>
/**
* PopUp 弹出层-对话框样式
* @description 弹出层-对话框样式
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} value input 模式下的默认值
* @property {String} placeholder input 模式下输入提示
* @property {String} type = [success|warning|info|error] 主题样式
* @value success 成功
* @value warning 提示
* @value info 消息
* @value error 错误
* @property {String} mode = [base|input] 模式、
* @value base 基础对话框
* @value input 可输入对话框
* @property {String} content 对话框内容
* @property {Boolean} beforeClose 是否拦截取消事件
* @event {Function} confirm 点击确认按钮触发
* @event {Function} close 点击取消按钮触发
*/
export
default
{
name
:
"
uniPopupDialog
"
,
props
:
{
value
:
{
type
:
[
String
,
Number
],
default
:
''
},
placeholder
:
{
type
:
[
String
,
Number
],
default
:
'
请输入内容
'
},
/**
* 对话框主题 success/warning/info/error 默认 success
*/
type
:
{
type
:
String
,
default
:
'
error
'
},
/**
* 对话框模式 base/input
*/
mode
:
{
type
:
String
,
default
:
'
base
'
},
/**
* 对话框标题
*/
title
:
{
type
:
String
,
default
:
'
提示
'
},
/**
* 对话框内容
*/
content
:
{
type
:
String
,
default
:
''
},
/**
* 拦截取消事件 ,如果拦截取消事件,必须监听close事件,执行 done()
*/
beforeClose
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
dialogType
:
'
error
'
,
focus
:
false
,
val
:
""
}
},
inject
:
[
'
popup
'
],
watch
:
{
type
(
val
)
{
this
.
dialogType
=
val
},
mode
(
val
)
{
if
(
val
===
'
input
'
)
{
this
.
dialogType
=
'
info
'
}
},
value
(
val
)
{
this
.
val
=
val
}
},
created
()
{
// 对话框遮罩不可点击
this
.
popup
.
mkclick
=
false
if
(
this
.
mode
===
'
input
'
)
{
this
.
dialogType
=
'
info
'
this
.
val
=
this
.
value
}
else
{
this
.
dialogType
=
this
.
type
}
},
mounted
()
{
this
.
focus
=
true
},
methods
:
{
/**
* 点击确认按钮
*/
onOk
()
{
this
.
$emit
(
'
confirm
'
,
()
=>
{
this
.
popup
.
close
()
if
(
this
.
mode
===
'
input
'
)
this
.
val
=
this
.
value
},
this
.
mode
===
'
input
'
?
this
.
val
:
''
)
},
/**
* 点击取消按钮
*/
close
()
{
if
(
this
.
beforeClose
)
{
this
.
$emit
(
'
close
'
,
()
=>
{
this
.
popup
.
close
()
})
return
}
this
.
popup
.
close
()
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.uni-popup-dialog
{
width
:
300px
;
border-radius
:
15px
;
background-color
:
#fff
;
}
.uni-dialog-title
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
justify-content
:
center
;
padding-top
:
15px
;
padding-bottom
:
5px
;
}
.uni-dialog-title-text
{
font-size
:
16px
;
font-weight
:
500
;
}
.uni-dialog-content
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
padding
:
5px
15px
15px
15px
;
}
.uni-dialog-content-text
{
font-size
:
14px
;
color
:
#6e6e6e
;
}
.uni-dialog-button-group
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
border-top-color
:
#f5f5f5
;
border-top-style
:
solid
;
border-top-width
:
1px
;
}
.uni-dialog-button
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex
:
1
;
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
height
:
45px
;
}
.uni-border-left
{
border-left-color
:
#f0f0f0
;
border-left-style
:
solid
;
border-left-width
:
1px
;
}
.uni-dialog-button-text
{
font-size
:
14px
;
}
.uni-button-color
{
color
:
$uni-color-primary
;
}
.uni-dialog-input
{
flex
:
1
;
font-size
:
14px
;
}
.uni-popup__success
{
color
:
$uni-color-success
;
}
.uni-popup__warn
{
color
:
$uni-color-warning
;
}
.uni-popup__error
{
color
:
$uni-color-error
;
}
.uni-popup__info
{
color
:
#909399
;
}
</
style
>
components/uni-popup/uni-popup-message.vue
0 → 100644
View file @
68f197b8
<
template
>
<view
class=
"uni-popup-message"
:class=
"'uni-popup__'+[type]"
>
<text
class=
"uni-popup-message-text"
:class=
"'uni-popup__'+[type]+'-text'"
>
{{
message
}}
</text>
</view>
</
template
>
<
script
>
/**
* PopUp 弹出层-消息提示
* @description 弹出层-消息提示
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} type = [success|warning|info|error] 主题样式
* @value success 成功
* @value warning 提示
* @value info 消息
* @value error 错误
* @property {String} message 消息提示文字
* @property {String} duration 显示时间,设置为 0 则不会自动关闭
*/
export
default
{
name
:
'
UniPopupMessage
'
,
props
:
{
/**
* 主题 success/warning/info/error 默认 success
*/
type
:
{
type
:
String
,
default
:
'
success
'
},
/**
* 消息文字
*/
message
:
{
type
:
String
,
default
:
''
},
/**
* 显示时间,设置为 0 则不会自动关闭
*/
duration
:
{
type
:
Number
,
default
:
3000
}
},
inject
:
[
'
popup
'
],
data
()
{
return
{}
},
created
()
{
this
.
popup
.
childrenMsg
=
this
},
methods
:
{
open
()
{
if
(
this
.
duration
===
0
)
return
clearTimeout
(
this
.
popuptimer
)
this
.
popuptimer
=
setTimeout
(()
=>
{
this
.
popup
.
close
()
},
this
.
duration
)
},
close
()
{
clearTimeout
(
this
.
popuptimer
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.uni-popup-message
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
background-color
:
#e1f3d8
;
padding
:
10px
15px
;
border-color
:
#eee
;
border-style
:
solid
;
border-width
:
1px
;
}
.uni-popup-message-text
{
font-size
:
14px
;
padding
:
0
;
}
.uni-popup__success
{
background-color
:
#e1f3d8
;
}
.uni-popup__success-text
{
color
:
#67C23A
;
}
.uni-popup__warn
{
background-color
:
#faecd8
;
}
.uni-popup__warn-text
{
color
:
#E6A23C
;
}
.uni-popup__error
{
background-color
:
#fde2e2
;
}
.uni-popup__error-text
{
color
:
#F56C6C
;
}
.uni-popup__info
{
background-color
:
#F2F6FC
;
}
.uni-popup__info-text
{
color
:
#909399
;
}
</
style
>
components/uni-popup/uni-popup-share.vue
0 → 100644
View file @
68f197b8
<
template
>
<view
class=
"uni-popup-share"
>
<view
class=
"uni-share-title"
><text
class=
"uni-share-title-text"
>
{{
title
}}
</text></view>
<view
class=
"uni-share-content"
>
<view
class=
"uni-share-content-box"
>
<view
class=
"uni-share-content-item"
v-for=
"(item,index) in bottomData"
:key=
"index"
@
click.stop=
"select(item,index)"
>
<image
class=
"uni-share-image"
:src=
"item.icon"
mode=
"aspectFill"
></image>
<text
class=
"uni-share-text"
>
{{
item
.
text
}}
</text>
</view>
</view>
</view>
<view
class=
"uni-share-button-box"
>
<button
class=
"uni-share-button"
@
click=
"close"
>
取消
</button>
</view>
</view>
</
template
>
<
script
>
export
default
{
name
:
'
UniPopupShare
'
,
props
:
{
title
:
{
type
:
String
,
default
:
'
分享到
'
}
},
inject
:
[
'
popup
'
],
data
()
{
return
{
bottomData
:
[{
text
:
'
微信
'
,
icon
:
'
https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-2.png
'
,
name
:
'
wx
'
},
{
text
:
'
支付宝
'
,
icon
:
'
https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-8.png
'
,
name
:
'
wx
'
},
{
text
:
'
QQ
'
,
icon
:
'
https://img-cdn-qiniu.dcloud.net.cn/uni-ui/gird-3.png
'
,
name
:
'
qq
'
},
{
text
:
'
新浪
'
,
icon
:
'
https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-1.png
'
,
name
:
'
sina
'
},
{
text
:
'
百度
'
,
icon
:
'
https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-7.png
'
,
name
:
'
copy
'
},
{
text
:
'
其他
'
,
icon
:
'
https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-5.png
'
,
name
:
'
more
'
}
]
}
},
created
()
{},
methods
:
{
/**
* 选择内容
*/
select
(
item
,
index
)
{
this
.
$emit
(
'
select
'
,
{
item
,
index
},
()
=>
{
this
.
popup
.
close
()
})
},
/**
* 关闭窗口
*/
close
()
{
this
.
popup
.
close
()
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.uni-popup-share
{
background-color
:
#fff
;
}
.uni-share-title
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
center
;
height
:
40px
;
}
.uni-share-title-text
{
font-size
:
14px
;
color
:
#666
;
}
.uni-share-content
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
justify-content
:
center
;
padding-top
:
10px
;
}
.uni-share-content-box
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
flex-wrap
:
wrap
;
width
:
360px
;
}
.uni-share-content-item
{
width
:
90px
;
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
column
;
justify-content
:
center
;
padding
:
10px
0
;
align-items
:
center
;
}
.uni-share-content-item
:active
{
background-color
:
#f5f5f5
;
}
.uni-share-image
{
width
:
30px
;
height
:
30px
;
}
.uni-share-text
{
margin-top
:
10px
;
font-size
:
14px
;
color
:
#3B4144
;
}
.uni-share-button-box
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
row
;
padding
:
10px
15px
;
}
.uni-share-button
{
flex
:
1
;
border-radius
:
50px
;
color
:
#666
;
font-size
:
16px
;
}
.
uni-share-button
:
:
after
{
border-radius
:
50px
;
}
</
style
>
components/uni-popup/uni-popup.vue
0 → 100644
View file @
68f197b8
<
template
>
<view
v-if=
"showPopup"
class=
"uni-popup"
:class=
"[popupstyle]"
@
touchmove.stop.prevent=
"clear"
>
<uni-transition
v-if=
"maskShow"
:mode-class=
"['fade']"
:styles=
"maskClass"
:duration=
"duration"
:show=
"showTrans"
@
click=
"onTap"
/>
<uni-transition
:mode-class=
"ani"
:styles=
"transClass"
:duration=
"duration"
:show=
"showTrans"
@
click=
"onTap"
>
<view
class=
"uni-popup__wrapper-box"
@
click.stop=
"clear"
>
<slot
/>
</view>
</uni-transition>
</view>
</
template
>
<
script
>
import
uniTransition
from
'
../uni-transition/uni-transition.vue
'
import
popup
from
'
./popup.js
'
/**
* PopUp 弹出层
* @description 弹出层组件,为了解决遮罩弹层的问题
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} type = [top|center|bottom] 弹出方式
* @value top 顶部弹出
* @value center 中间弹出
* @value bottom 底部弹出
* @value message 消息提示
* @value dialog 对话框
* @value share 底部分享示例
* @property {Boolean} animation = [ture|false] 是否开启动画
* @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
* @event {Function} change 打开关闭弹窗触发,e={show: false}
*/
export
default
{
name
:
'
UniPopup
'
,
components
:
{
uniTransition
},
props
:
{
// 开启动画
animation
:
{
type
:
Boolean
,
default
:
true
},
// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
// message: 消息提示 ; dialog : 对话框
type
:
{
type
:
String
,
default
:
'
center
'
},
// maskClick
maskClick
:
{
type
:
Boolean
,
default
:
true
}
},
provide
()
{
return
{
popup
:
this
}
},
mixins
:
[
popup
],
watch
:
{
/**
* 监听type类型
*/
type
:
{
handler
:
function
(
newVal
)
{
this
[
this
.
config
[
newVal
]]()
},
immediate
:
true
},
/**
* 监听遮罩是否可点击
* @param {Object} val
*/
maskClick
(
val
)
{
this
.
mkclick
=
val
}
},
data
()
{
return
{
duration
:
300
,
ani
:
[],
showPopup
:
false
,
showTrans
:
false
,
maskClass
:
{
'
position
'
:
'
fixed
'
,
'
bottom
'
:
0
,
'
top
'
:
0
,
'
left
'
:
0
,
'
right
'
:
0
,
'
backgroundColor
'
:
'
rgba(0, 0, 0, 0.4)
'
},
transClass
:
{
'
position
'
:
'
fixed
'
,
'
left
'
:
0
,
'
right
'
:
0
,
},
maskShow
:
true
,
mkclick
:
true
,
popupstyle
:
'
top
'
}
},
created
()
{
this
.
mkclick
=
this
.
maskClick
if
(
this
.
animation
)
{
this
.
duration
=
300
}
else
{
this
.
duration
=
0
}
},
methods
:
{
clear
(
e
)
{
// TODO nvue 取消冒泡
e
.
stopPropagation
()
},
open
()
{
this
.
showPopup
=
true
this
.
$nextTick
(()
=>
{
new
Promise
(
resolve
=>
{
clearTimeout
(
this
.
timer
)
this
.
timer
=
setTimeout
(()
=>
{
this
.
showTrans
=
true
// fixed by mehaotian 兼容 app 端
this
.
$nextTick
(()
=>
{
resolve
();
})
},
50
);
}).
then
(
res
=>
{
// 自定义打开事件
clearTimeout
(
this
.
msgtimer
)
this
.
msgtimer
=
setTimeout
(()
=>
{
this
.
customOpen
&&
this
.
customOpen
()
},
100
)
this
.
$emit
(
'
change
'
,
{
show
:
true
,
type
:
this
.
type
})
})
})
},
close
(
type
)
{
this
.
showTrans
=
false
this
.
$nextTick
(()
=>
{
this
.
$emit
(
'
change
'
,
{
show
:
false
,
type
:
this
.
type
})
clearTimeout
(
this
.
timer
)
// 自定义关闭事件
this
.
customOpen
&&
this
.
customClose
()
this
.
timer
=
setTimeout
(()
=>
{
this
.
showPopup
=
false
},
300
)
})
},
onTap
()
{
if
(
!
this
.
mkclick
)
return
this
.
close
()
},
/**
* 顶部弹出样式处理
*/
top
()
{
this
.
popupstyle
=
'
top
'
this
.
ani
=
[
'
slide-top
'
]
this
.
transClass
=
{
'
position
'
:
'
fixed
'
,
'
left
'
:
0
,
'
right
'
:
0
,
}
},
/**
* 底部弹出样式处理
*/
bottom
()
{
this
.
popupstyle
=
'
bottom
'
this
.
ani
=
[
'
slide-bottom
'
]
this
.
transClass
=
{
'
position
'
:
'
fixed
'
,
'
left
'
:
0
,
'
right
'
:
0
,
'
bottom
'
:
0
}
},
/**
* 中间弹出样式处理
*/
center
()
{
this
.
popupstyle
=
'
center
'
this
.
ani
=
[
'
zoom-out
'
,
'
fade
'
]
this
.
transClass
=
{
'
position
'
:
'
fixed
'
,
/* #ifndef APP-NVUE */
'
display
'
:
'
flex
'
,
'
flexDirection
'
:
'
column
'
,
/* #endif */
'
bottom
'
:
0
,
'
left
'
:
0
,
'
right
'
:
0
,
'
top
'
:
0
,
'
justifyContent
'
:
'
center
'
,
'
alignItems
'
:
'
center
'
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.uni-popup
{
position
:
fixed
;
/* #ifndef APP-NVUE */
z-index
:
99
;
/* #endif */
}
.uni-popup__mask
{
position
:
absolute
;
top
:
0
;
bottom
:
0
;
left
:
0
;
right
:
0
;
background-color
:
$uni-bg-color-mask
;
opacity
:
0
;
}
.mask-ani
{
transition-property
:
opacity
;
transition-duration
:
0
.2s
;
}
.uni-top-mask
{
opacity
:
1
;
}
.uni-bottom-mask
{
opacity
:
1
;
}
.uni-center-mask
{
opacity
:
1
;
}
.uni-popup__wrapper
{
/* #ifndef APP-NVUE */
display
:
block
;
/* #endif */
position
:
absolute
;
}
.top
{
/* #ifdef H5 */
top
:
var
(
--
window-top
);
/* #endif */
/* #ifndef H5 */
top
:
0
;
/* #endif */
}
.bottom
{
bottom
:
0
;
}
.uni-popup__wrapper-box
{
/* #ifndef APP-NVUE */
display
:
block
;
/* #endif */
position
:
relative
;
/* iphonex 等安全区设置,底部安全区适配 */
/* #ifndef APP-NVUE */
padding-bottom
:
constant
(
safe-area-inset-bottom
);
padding-bottom
:
env
(
safe-area-inset-bottom
);
/* #endif */
}
.content-ani
{
// transition: transform 0.3s;
transition-property
:
transform
,
opacity
;
transition-duration
:
0
.2s
;
}
.uni-top-content
{
transform
:
translateY
(
0
);
}
.uni-bottom-content
{
transform
:
translateY
(
0
);
}
.uni-center-content
{
transform
:
scale
(
1
);
opacity
:
1
;
}
</
style
>
components/uni-transition/uni-transition.vue
0 → 100644
View file @
68f197b8
<
template
>
<view
v-if=
"isShow"
ref=
"ani"
class=
"uni-transition"
:class=
"[ani.in]"
:style=
"'transform:' +transform+';'+stylesObject"
@
click=
"change"
>
<slot></slot>
</view>
</
template
>
<
script
>
// #ifdef APP-NVUE
const
animation
=
uni
.
requireNativePlugin
(
'
animation
'
);
// #endif
/**
* Transition 过渡动画
* @description 简单过渡动画组件
* @tutorial https://ext.dcloud.net.cn/plugin?id=985
* @property {Boolean} show = [false|true] 控制组件显示或隐藏
* @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
* @value fade 渐隐渐出过渡
* @value slide-top 由上至下过渡
* @value slide-right 由右至左过渡
* @value slide-bottom 由下至上过渡
* @value slide-left 由左至右过渡
* @value zoom-in 由小到大过渡
* @value zoom-out 由大到小过渡
* @property {Number} duration 过渡动画持续时间
* @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
*/
export
default
{
name
:
'
uniTransition
'
,
props
:
{
show
:
{
type
:
Boolean
,
default
:
false
},
modeClass
:
{
type
:
Array
,
default
()
{
return
[]
}
},
duration
:
{
type
:
Number
,
default
:
300
},
styles
:
{
type
:
Object
,
default
()
{
return
{}
}
}
},
data
()
{
return
{
isShow
:
false
,
transform
:
''
,
ani
:
{
in
:
''
,
active
:
''
}
};
},
watch
:
{
show
:
{
handler
(
newVal
)
{
if
(
newVal
)
{
this
.
open
()
}
else
{
this
.
close
()
}
},
immediate
:
true
}
},
computed
:
{
stylesObject
()
{
let
styles
=
{
...
this
.
styles
,
'
transition-duration
'
:
this
.
duration
/
1000
+
'
s
'
}
let
transfrom
=
''
for
(
let
i
in
styles
)
{
let
line
=
this
.
toLine
(
i
)
transfrom
+=
line
+
'
:
'
+
styles
[
i
]
+
'
;
'
}
return
transfrom
}
},
created
()
{
// this.timer = null
// this.nextTick = (time = 50) => new Promise(resolve => {
// clearTimeout(this.timer)
// this.timer = setTimeout(resolve, time)
// return this.timer
// });
},
methods
:
{
change
()
{
this
.
$emit
(
'
click
'
,
{
detail
:
this
.
isShow
})
},
open
()
{
clearTimeout
(
this
.
timer
)
this
.
isShow
=
true
this
.
transform
=
''
this
.
ani
.
in
=
''
for
(
let
i
in
this
.
getTranfrom
(
false
))
{
if
(
i
===
'
opacity
'
)
{
this
.
ani
.
in
=
'
fade-in
'
}
else
{
this
.
transform
+=
`
${
this
.
getTranfrom
(
false
)[
i
]}
`
}
}
this
.
$nextTick
(()
=>
{
setTimeout
(()
=>
{
this
.
_animation
(
true
)
},
50
)
})
},
close
(
type
)
{
clearTimeout
(
this
.
timer
)
this
.
_animation
(
false
)
},
_animation
(
type
)
{
let
styles
=
this
.
getTranfrom
(
type
)
// #ifdef APP-NVUE
if
(
!
this
.
$refs
[
'
ani
'
])
return
animation
.
transition
(
this
.
$refs
[
'
ani
'
].
ref
,
{
styles
,
duration
:
this
.
duration
,
//ms
timingFunction
:
'
ease
'
,
needLayout
:
false
,
delay
:
0
//ms
},
()
=>
{
if
(
!
type
)
{
this
.
isShow
=
false
}
this
.
$emit
(
'
change
'
,
{
detail
:
this
.
isShow
})
})
// #endif
// #ifndef APP-NVUE
this
.
transform
=
''
for
(
let
i
in
styles
)
{
if
(
i
===
'
opacity
'
)
{
this
.
ani
.
in
=
`fade-
${
type
?
'
out
'
:
'
in
'
}
`
}
else
{
this
.
transform
+=
`
${
styles
[
i
]}
`
}
}
this
.
timer
=
setTimeout
(()
=>
{
if
(
!
type
)
{
this
.
isShow
=
false
}
this
.
$emit
(
'
change
'
,
{
detail
:
this
.
isShow
})
},
this
.
duration
)
// #endif
},
getTranfrom
(
type
)
{
let
styles
=
{
transform
:
''
}
this
.
modeClass
.
forEach
((
mode
)
=>
{
switch
(
mode
)
{
case
'
fade
'
:
styles
.
opacity
=
type
?
1
:
0
break
;
case
'
slide-top
'
:
styles
.
transform
+=
`translateY(
${
type
?
'
0
'
:
'
-100%
'
}
) `
break
;
case
'
slide-right
'
:
styles
.
transform
+=
`translateX(
${
type
?
'
0
'
:
'
100%
'
}
) `
break
;
case
'
slide-bottom
'
:
styles
.
transform
+=
`translateY(
${
type
?
'
0
'
:
'
100%
'
}
) `
break
;
case
'
slide-left
'
:
styles
.
transform
+=
`translateX(
${
type
?
'
0
'
:
'
-100%
'
}
) `
break
;
case
'
zoom-in
'
:
styles
.
transform
+=
`scale(
${
type
?
1
:
0.8
}
) `
break
;
case
'
zoom-out
'
:
styles
.
transform
+=
`scale(
${
type
?
1
:
1.2
}
) `
break
;
}
})
return
styles
},
_modeClassArr
(
type
)
{
let
mode
=
this
.
modeClass
if
(
typeof
(
mode
)
!==
"
string
"
)
{
let
modestr
=
''
mode
.
forEach
((
item
)
=>
{
modestr
+=
(
item
+
'
-
'
+
type
+
'
,
'
)
})
return
modestr
.
substr
(
0
,
modestr
.
length
-
1
)
}
else
{
return
mode
+
'
-
'
+
type
}
},
// getEl(el) {
// console.log(el || el.ref || null);
// return el || el.ref || null
// },
toLine
(
name
)
{
return
name
.
replace
(
/
([
A-Z
])
/g
,
"
-$1
"
).
toLowerCase
();
}
}
}
</
script
>
<
style
>
.uni-transition
{
transition-timing-function
:
ease
;
transition-duration
:
0.3s
;
transition-property
:
transform
,
opacity
;
}
.fade-in
{
opacity
:
0
;
}
.fade-active
{
opacity
:
1
;
}
.slide-top-in
{
/* transition-property: transform, opacity; */
transform
:
translateY
(
-100%
);
}
.slide-top-active
{
transform
:
translateY
(
0
);
/* opacity: 1; */
}
.slide-right-in
{
transform
:
translateX
(
100%
);
}
.slide-right-active
{
transform
:
translateX
(
0
);
}
.slide-bottom-in
{
transform
:
translateY
(
100%
);
}
.slide-bottom-active
{
transform
:
translateY
(
0
);
}
.slide-left-in
{
transform
:
translateX
(
-100%
);
}
.slide-left-active
{
transform
:
translateX
(
0
);
opacity
:
1
;
}
.zoom-in-in
{
transform
:
scale
(
0.8
);
}
.zoom-out-active
{
transform
:
scale
(
1
);
}
.zoom-out-in
{
transform
:
scale
(
1.2
);
}
</
style
>
main.js
View file @
68f197b8
...
...
@@ -17,6 +17,10 @@ import dayjs from 'dayjs'
Vue
.
prototype
.
$day
=
dayjs
// OSS静态资源
Vue
.
prototype
.
$ImgUrl
=
'
https://xiaopay2020.oss-cn-shenzhen.aliyuncs.com/static/weapp/
'
;
// #ifdef H5
// echarts图标
// var echarts = require('echarts')
...
...
pages/assignDeposit/assignDeposit.vue
View file @
68f197b8
This diff is collapsed.
Click to expand it.
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