Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
梁建民
/
wmsMin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
aa427f92
authored
May 07, 2024
by
LJM
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
add
parent
c9f608e9
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
708 additions
and
498 deletions
pages/tally/index.vue
pages/tally/unboxing.vue
uni_modules/uni-popup/changelog.md
uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
uni_modules/uni-popup/components/uni-popup/uni-popup.vue
uni_modules/uni-popup/package.json
uni_modules/uni-transition/changelog.md
uni_modules/uni-transition/components/uni-transition/createAnimation.js
uni_modules/uni-transition/components/uni-transition/uni-transition.vue
uni_modules/uni-transition/package.json
pages/tally/index.vue
View file @
aa427f92
...
...
@@ -192,7 +192,7 @@
</uni-popup>
<!-- 关单封箱弹窗 -->
<uni-popup
ref=
"inputDialog"
type=
"dialog"
:mask-click=
"true"
>
<uni-popup-dialog
ref=
"inputClose"
mode=
"input"
:title=
"title"
value=
""
confirmText=
"新箱子"
cancelText=
"不需要换箱"
placeholder=
"请输入毛重"
@
close=
"dialogInputClose"
@
confirm=
"dialogInputConfirm"
:before-close=
"true"
></uni-popup-dialog>
<uni-popup-dialog
ref=
"inputClose"
mode=
"input"
:title=
"title"
v
-model=
"gross_weight"
v
alue=
""
confirmText=
"新箱子"
cancelText=
"不需要换箱"
placeholder=
"请输入毛重"
@
close=
"dialogInputClose"
@
confirm=
"dialogInputConfirm"
:before-close=
"true"
></uni-popup-dialog>
</uni-popup>
</view>
</template>
...
...
@@ -225,7 +225,8 @@
origin
:
''
,
//搜索国家携带的参数
form
:
{},
isRequestSent
:
false
,
isStopRequest
:
false
isStopRequest
:
false
,
gross_weight
:
''
};
},
watch
:
{
...
...
@@ -677,11 +678,18 @@
}
this
.
request
(
API
.
closeBox
,
'POST'
,
{
wsty_id
:
this
.
wsty_id
,
gross_weight
:
val
},
true
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
this
.
box_sn
=
''
;
this
.
wsty_id
=
''
;
this
.
tallyData
=
[];
this
.
erp_order_sn
=
''
;
this
.
$refs
.
inputDialog
.
close
()
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'success'
,
duration
:
2000
});
setTimeout
(()
=>
{
this
.
box_sn
=
''
;
this
.
wsty_id
=
''
;
this
.
tallyData
=
[];
this
.
erp_order_sn
=
''
;
this
.
$refs
.
inputDialog
.
close
()
},
2000
);
}
else
{
uni
.
showToast
({
title
:
res
.
err_msg
,
...
...
@@ -694,11 +702,25 @@
* 不需要换箱
*/
dialogInputClose
()
{
this
.
request
(
API
.
closeBox
,
'POST'
,
{
wsty_id
:
this
.
wsty_id
,
gross_weight
:
''
},
true
).
then
(
res
=>
{
if
(
!
this
.
gross_weight
)
{
uni
.
showToast
({
title
:
'请输入毛重'
,
icon
:
'error'
});
return
false
;
}
this
.
request
(
API
.
closeBox
,
'POST'
,
{
wsty_id
:
this
.
wsty_id
,
gross_weight
:
this
.
gross_weight
},
true
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
this
.
$refs
.
inputDialog
.
close
();
this
.
tallyData
=
[];
this
.
erp_order_sn
=
''
;
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'success'
,
duration
:
2000
});
setTimeout
(()
=>
{
this
.
$refs
.
inputDialog
.
close
();
this
.
tallyData
=
[];
this
.
erp_order_sn
=
''
;
},
2000
);
}
else
{
uni
.
showToast
({
title
:
res
.
err_msg
,
...
...
pages/tally/unboxing.vue
View file @
aa427f92
...
...
@@ -2,7 +2,12 @@
<view
class=
"unboxing"
>
<view
class=
"input-box row bothSide verCenter"
>
<input
class=
"uni-input"
placeholder=
"输入或扫描入箱号"
placeholder-style=
"color:#000;font-weight: bold;"
v-model=
"box_sn"
@
input=
"handleInput($event)"
/>
<view
class=
"btn row rowCenter verCenter"
@
click=
"unboxing()"
>
开 箱
</view>
<template
v-if=
"tallyData.detail && tallyData.detail.length > 0"
>
<view
class=
"btn1 row rowCenter verCenter"
@
click=
"closeBox()"
>
重新封箱
</view>
</
template
>
<
template
v-else
>
<view
class=
"btn row rowCenter verCenter"
@
click=
"unboxing()"
>
开 箱
</view>
</
template
>
</view>
<!-- 列表 -->
<view
class=
"list"
v-if=
"tallyData && tallyData.detail"
>
...
...
@@ -108,7 +113,7 @@
</uni-popup>
<!-- 关单封箱弹窗 -->
<uni-popup
ref=
"inputDialog"
type=
"dialog"
:mask-click=
"true"
>
<uni-popup-dialog
ref=
"inputClose"
mode=
"input"
:title=
"title"
v
alue=
"
"
confirmText=
"新箱子"
cancelText=
"不需要换箱"
placeholder=
"请输入毛重"
@
close=
"dialogInputClose"
@
confirm=
"dialogInputConfirm"
:before-close=
"true"
></uni-popup-dialog>
<uni-popup-dialog
ref=
"inputClose"
mode=
"input"
:title=
"title"
v
-model=
"gross_weight
"
confirmText=
"新箱子"
cancelText=
"不需要换箱"
placeholder=
"请输入毛重"
@
close=
"dialogInputClose"
@
confirm=
"dialogInputConfirm"
:before-close=
"true"
></uni-popup-dialog>
</uni-popup>
</view>
</template>
...
...
@@ -128,7 +133,10 @@
origin_list
:
[],
//产地
curr
:
-
1
,
//当前打开的是哪个产地
origin
:
''
,
//搜索国家携带的参数
form
:
{}
form
:
{},
title
:
''
,
gross_weight
:
''
};
},
watch
:
{
...
...
@@ -314,7 +322,7 @@
goods_check_pic
:
item
.
goods_check_pic
,
// 商检的必须上传图片
wstydl_id
:
item
.
wstydl_id
,
// 理货明细ID
erp_order_sn
:
this
.
erp_order_sn
,
// 入仓号
wsty_id
:
this
.
wsty_id
,
// 箱子id
box_sn
:
this
.
box_sn
,
// 箱子
is_goods_check
:
item
.
is_goods_check
//是否商检
}));
...
...
@@ -395,7 +403,7 @@
content
:
'确定取消该商品理货吗?'
,
success
:
(
res
)
=>
{
if
(
res
.
confirm
)
{
this
.
request
(
API
.
cancelTallyDetail
,
'POST'
,
{
wstydl_id
:
this
.
form
[
index
].
wstydl_id
,
wsty_id
:
this
.
form
[
index
].
wsty_id
},
true
).
then
(
res
=>
{
this
.
request
(
API
.
cancelTallyDetail
,
'POST'
,
{
wstydl_id
:
this
.
form
[
index
].
wstydl_id
,
box_sn
:
box_sn
},
true
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
this
.
getTallyData
(
1
);
}
else
{
...
...
@@ -410,6 +418,74 @@
}
}
});
},
/**
* 关单封箱
*/
closeBox
()
{
this
.
title
=
`箱号
${
this
.
box_sn
}
已经全部验货完毕是否更换新的箱子?`
;
this
.
$refs
.
inputDialog
.
open
();
},
/**
* 新箱子
*/
dialogInputConfirm
(
val
)
{
if
(
!
val
)
{
uni
.
showToast
({
title
:
'请输入毛重'
,
icon
:
'error'
});
return
false
;
}
this
.
request
(
API
.
closeBox
,
'POST'
,
{
box_sn
:
this
.
box_sn
,
gross_weight
:
val
},
true
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'success'
,
duration
:
2000
});
setTimeout
(()
=>
{
this
.
box_sn
=
''
;
this
.
tallyData
=
[];
this
.
$refs
.
inputDialog
.
close
()
},
2000
);
}
else
{
uni
.
showToast
({
title
:
res
.
err_msg
,
icon
:
'none'
});
}
});
},
/**
* 不需要换箱
*/
dialogInputClose
()
{
if
(
!
this
.
gross_weight
)
{
uni
.
showToast
({
title
:
'请输入毛重'
,
icon
:
'error'
});
return
false
;
}
this
.
request
(
API
.
closeBox
,
'POST'
,
{
box_sn
:
this
.
box_sn
,
gross_weight
:
this
.
gross_weight
},
true
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'success'
,
duration
:
2000
});
setTimeout
(()
=>
{
this
.
$refs
.
inputDialog
.
close
();
this
.
tallyData
=
[];
},
2000
);
}
else
{
uni
.
showToast
({
title
:
res
.
err_msg
,
icon
:
'none'
});
}
});
}
}
};
...
...
uni_modules/uni-popup/changelog.md
View file @
aa427f92
## 1.9.1(2024-04-02)
-
修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法)
## 1.9.0(2024-03-28)
-
修复 uni-popup-dialog 双向绑定时初始化逻辑修正
## 1.8.9(2024-03-20)
-
修复 uni-popup-dialog 数据输入时修正为双向绑定
## 1.8.8(2024-02-20)
-
修复 uni-popup 在微信小程序下出现文字向上闪动的bug
## 1.8.7(2024-02-02)
-
新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦
## 1.8.6(2024-01-30)
-
新增 uni-popup-dialog 新增属性maxLength:限制输入框字数
## 1.8.5(2024-01-26)
-
新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示
## 1.8.4(2023-11-15)
-
新增 uni-popup 支持uni-app-x 注意暂时仅支持
`maskClick`
`@open`
`@close`
## 1.8.3(2023-04-17)
-
修复 uni-popup 重复打开时的 bug
## 1.8.2(2023-02-02)
-
uni-popup-dialog 组件新增 inputType 属性
## 1.8.1(2022-12-01)
...
...
uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
View file @
aa427f92
...
...
@@ -10,14 +10,15 @@
</view>
<view
v-else
class=
"uni-dialog-content"
>
<slot>
<input
class=
"uni-dialog-input"
v-model=
"val"
:type=
"inputType"
:placeholder=
"placeholderText"
:focus=
"focus"
>
<input
class=
"uni-dialog-input"
:maxlength=
"maxlength"
v-model=
"val"
:type=
"inputType"
:placeholder=
"placeholderText"
:focus=
"focus"
>
</slot>
</view>
<view
class=
"uni-dialog-button-group"
>
<view
class=
"uni-dialog-button"
@
click=
"closeDialog"
>
<view
class=
"uni-dialog-button"
v-if=
"showClose"
@
click=
"closeDialog"
>
<text
class=
"uni-dialog-button-text"
>
{{
closeText
}}
</text>
</view>
<view
class=
"uni-dialog-button
uni-border-left
"
@
click=
"onOk"
>
<view
class=
"uni-dialog-button
"
:class=
"showClose?'uni-border-left':''
"
@
click=
"onOk"
>
<text
class=
"uni-dialog-button-text uni-button-color"
>
{{
okText
}}
</text>
</view>
</view>
...
...
@@ -28,16 +29,19 @@
<
script
>
import
popup
from
'../uni-popup/popup.js'
import
{
initVueI18n
initVueI18n
}
from
'@dcloudio/uni-i18n'
import
messages
from
'../uni-popup/i18n/index.js'
const
{
t
}
=
initVueI18n
(
messages
)
const
{
t
}
=
initVueI18n
(
messages
)
/**
* PopUp 弹出层-对话框样式
* @description 弹出层-对话框样式
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} value input 模式下的默认值
* @property {String} placeholder input 模式下输入提示
* @property {Boolean} focus input模式下是否自动聚焦,默认为true
* @property {String} type = [success|warning|info|error] 主题样式
* @value success 成功
* @value warning 提示
...
...
@@ -46,8 +50,10 @@
* @property {String} mode = [base|input] 模式、
* @value base 基础对话框
* @value input 可输入对话框
* @showClose {Boolean} 是否显示关闭按钮
* @property {String} content 对话框内容
* @property {Boolean} beforeClose 是否拦截取消事件
* @property {Number} maxlength 输入
* @event {Function} confirm 点击确认按钮触发
* @event {Function} close 点击取消按钮触发
*/
...
...
@@ -55,16 +61,30 @@
export
default
{
name
:
"uniPopupDialog"
,
mixins
:
[
popup
],
emits
:
[
'confirm'
,
'close
'
],
emits
:
[
'confirm'
,
'close'
,
'update:modelValue'
,
'input
'
],
props
:
{
inputType
:{
inputType
:
{
type
:
String
,
default
:
'text'
},
showClose
:
{
type
:
Boolean
,
default
:
true
},
// #ifdef VUE2
value
:
{
type
:
[
String
,
Number
],
default
:
''
},
// #endif
// #ifdef VUE3
modelValue
:
{
type
:
[
Number
,
String
],
default
:
''
},
// #endif
placeholder
:
{
type
:
[
String
,
Number
],
default
:
''
...
...
@@ -89,19 +109,26 @@
type
:
Boolean
,
default
:
false
},
cancelText
:{
cancelText
:
{
type
:
String
,
default
:
''
},
confirmText
:{
confirmText
:
{
type
:
String
,
default
:
''
},
maxlength
:
{
type
:
Number
,
default
:
-
1
,
},
focus
:
{
type
:
Boolean
,
default
:
true
,
}
},
data
()
{
return
{
dialogType
:
'error'
,
focus
:
false
,
val
:
""
}
},
...
...
@@ -129,7 +156,21 @@
}
},
value
(
val
)
{
this
.
val
=
val
if
(
this
.
maxlength
!=
-
1
&&
this
.
mode
===
'input'
)
{
this
.
val
=
val
.
slice
(
0
,
this
.
maxlength
);
}
else
{
this
.
val
=
val
}
},
val
(
val
)
{
// #ifdef VUE2
// TODO 兼容 vue2
this
.
$emit
(
'input'
,
val
);
// #endif
// #ifdef VUE3
// TODO 兼容 vue3
this
.
$emit
(
'update:modelValue'
,
val
);
// #endif
}
},
created
()
{
...
...
@@ -138,25 +179,25 @@
// this.popup.closeMask()
if
(
this
.
mode
===
'input'
)
{
this
.
dialogType
=
'info'
this
.
val
=
this
.
value
this
.
val
=
this
.
value
;
// #ifdef VUE3
this
.
val
=
this
.
modelValue
;
// #endif
}
else
{
this
.
dialogType
=
this
.
type
}
},
mounted
()
{
this
.
focus
=
true
},
methods
:
{
/**
* 点击确认按钮
*/
onOk
()
{
if
(
this
.
mode
===
'input'
){
if
(
this
.
mode
===
'input'
)
{
this
.
$emit
(
'confirm'
,
this
.
val
)
}
else
{
}
else
{
this
.
$emit
(
'confirm'
)
}
if
(
this
.
beforeClose
)
return
if
(
this
.
beforeClose
)
return
this
.
popup
.
close
()
},
/**
...
...
@@ -164,17 +205,17 @@
*/
closeDialog
()
{
this
.
$emit
(
'close'
)
if
(
this
.
beforeClose
)
return
if
(
this
.
beforeClose
)
return
this
.
popup
.
close
()
},
close
(){
close
()
{
this
.
popup
.
close
()
}
}
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.uni-popup-dialog
{
width
:
300px
;
border-radius
:
11px
;
...
...
uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
View file @
aa427f92
...
...
@@ -47,7 +47,7 @@
{
text
:
'支付宝'
,
icon
:
'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/d684ae40-50be-11eb-8ff1-d5dcf8779628.png'
,
name
:
'
wx
'
name
:
'
ali
'
},
{
text
:
'QQ'
,
...
...
uni_modules/uni-popup/components/uni-popup/uni-popup.vue
View file @
aa427f92
<
template
>
<view
v-if=
"showPopup"
class=
"uni-popup"
:class=
"[popupstyle, isDesktop ? 'fixforpc-z-index' : '']"
>
<view
@
touchstart=
"touchstart"
>
<uni-transition
key=
"1"
v-if=
"maskShow"
name=
"mask"
mode-class=
"fade"
:styles=
"maskClass"
:duration=
"duration"
:show=
"showTrans"
@
click=
"onTap"
/>
<uni-transition
key=
"2"
:mode-class=
"ani"
name=
"content"
:styles=
"transClass"
:duration=
"duration"
:show=
"showTrans"
@
click=
"onTap"
>
<view
class=
"uni-popup__wrapper"
:style=
"
{ backgroundColor: bg }" :class="[popupstyle]" @click="clear">
<slot
/></view>
</uni-transition>
</view>
<!-- #ifdef H5 -->
<keypress
v-if=
"maskShow"
@
esc=
"onTap"
/>
<!-- #endif -->
</view>
<view
v-if=
"showPopup"
class=
"uni-popup"
:class=
"[popupstyle, isDesktop ? 'fixforpc-z-index' : '']"
>
<view
@
touchstart=
"touchstart"
>
<uni-transition
key=
"1"
v-if=
"maskShow"
name=
"mask"
mode-class=
"fade"
:styles=
"maskClass"
:duration=
"duration"
:show=
"showTrans"
@
click=
"onTap"
/>
<uni-transition
key=
"2"
:mode-class=
"ani"
name=
"content"
:styles=
"transClass"
:duration=
"duration"
:show=
"showTrans"
@
click=
"onTap"
>
<view
class=
"uni-popup__wrapper"
:style=
"getStyles"
:class=
"[popupstyle]"
@
click=
"clear"
>
<slot
/>
</view>
</uni-transition>
</view>
<!-- #ifdef H5 -->
<keypress
v-if=
"maskShow"
@
esc=
"onTap"
/>
<!-- #endif -->
</view>
</
template
>
<
script
>
// #ifdef H5
import
keypress
from
'./keypress.js'
;
// #endif
// #ifdef H5
import
keypress
from
'./keypress.js'
// #endif
/**
* PopUp 弹出层
* @description 弹出层组件,为了解决遮罩弹层的问题
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} type = [top|center|bottom|left|right|message|dialog|share] 弹出方式
* @value top 顶部弹出
* @value center 中间弹出
* @value bottom 底部弹出
* @value left 左侧弹出
* @value right 右侧弹出
* @value message 消息提示
* @value dialog 对话框
* @value share 底部分享示例
* @property {Boolean} animation = [true|false] 是否开启动画
* @property {Boolean} maskClick = [true|false] 蒙版点击是否关闭弹窗(废弃)
* @property {Boolean} isMaskClick = [true|false] 蒙版点击是否关闭弹窗
* @property {String} backgroundColor 主窗口背景色
* @property {String} maskBackgroundColor 蒙版颜色
* @property {Boolean} safeArea 是否适配底部安全区
* @event {Function} change 打开关闭弹窗触发,e={show: false}
* @event {Function} maskClick 点击遮罩触发
*/
/**
* PopUp 弹出层
* @description 弹出层组件,为了解决遮罩弹层的问题
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} type = [top|center|bottom|left|right|message|dialog|share] 弹出方式
* @value top 顶部弹出
* @value center 中间弹出
* @value bottom 底部弹出
* @value left 左侧弹出
* @value right 右侧弹出
* @value message 消息提示
* @value dialog 对话框
* @value share 底部分享示例
* @property {Boolean} animation = [true|false] 是否开启动画
* @property {Boolean} maskClick = [true|false] 蒙版点击是否关闭弹窗(废弃)
* @property {Boolean} isMaskClick = [true|false] 蒙版点击是否关闭弹窗
* @property {String} backgroundColor 主窗口背景色
* @property {String} maskBackgroundColor 蒙版颜色
* @property {String} borderRadius 设置圆角(左上、右上、右下和左下) 示例:"10px 10px 10px 10px"
* @property {Boolean} safeArea 是否适配底部安全区
* @event {Function} change 打开关闭弹窗触发,e={show: false}
* @event {Function} maskClick 点击遮罩触发
*/
export
default
{
name
:
'uniPopup'
,
components
:
{
// #ifdef H5
keypress
// #endif
},
emits
:
[
'change'
,
'maskClick'
],
props
:
{
// 开启动画
animation
:
{
type
:
Boolean
,
default
:
true
},
// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
// message: 消息提示 ; dialog : 对话框
type
:
{
type
:
String
,
default
:
'center'
},
// maskClick
isMaskClick
:
{
type
:
Boolean
,
default
:
null
},
// TODO 2 个版本后废弃属性 ,使用 isMaskClick
maskClick
:
{
type
:
Boolean
,
default
:
null
},
backgroundColor
:
{
type
:
String
,
default
:
'none'
},
safeArea
:
{
type
:
Boolean
,
default
:
true
},
maskBackgroundColor
:
{
type
:
String
,
default
:
'rgba(0, 0, 0, 0.4)'
}
},
export
default
{
name
:
'uniPopup'
,
components
:
{
// #ifdef H5
keypress
// #endif
},
emits
:
[
'change'
,
'maskClick'
],
props
:
{
// 开启动画
animation
:
{
type
:
Boolean
,
default
:
true
},
// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
// message: 消息提示 ; dialog : 对话框
type
:
{
type
:
String
,
default
:
'center'
},
// maskClick
isMaskClick
:
{
type
:
Boolean
,
default
:
null
},
// TODO 2 个版本后废弃属性 ,使用 isMaskClick
maskClick
:
{
type
:
Boolean
,
default
:
null
},
backgroundColor
:
{
type
:
String
,
default
:
'none'
},
safeArea
:
{
type
:
Boolean
,
default
:
true
},
maskBackgroundColor
:
{
type
:
String
,
default
:
'rgba(0, 0, 0, 0.4)'
},
borderRadius
:{
type
:
String
,
}
},
watch
:
{
/**
* 监听type类型
*/
type
:
{
handler
:
function
(
type
)
{
if
(
!
this
.
config
[
type
])
return
;
this
[
this
.
config
[
type
]](
true
);
},
immediate
:
true
},
isDesktop
:
{
handler
:
function
(
newVal
)
{
if
(
!
this
.
config
[
newVal
])
return
;
this
[
this
.
config
[
this
.
type
]](
true
);
},
immediate
:
true
},
/**
* 监听遮罩是否可点击
* @param {Object} val
*/
maskClick
:
{
handler
:
function
(
val
)
{
this
.
mkclick
=
val
;
},
immediate
:
true
},
isMaskClick
:
{
handler
:
function
(
val
)
{
this
.
mkclick
=
val
;
},
immediate
:
true
},
// H5 下禁止底部滚动
showPopup
(
show
)
{
// #ifdef H5
// fix by mehaotian 处理 h5 滚动穿透的问题
document
.
getElementsByTagName
(
'body'
)[
0
].
style
.
overflow
=
show
?
'hidden'
:
'visible'
;
// #endif
}
},
data
()
{
return
{
duration
:
300
,
ani
:
[],
showPopup
:
false
,
showTrans
:
false
,
popupWidth
:
0
,
popupHeight
:
0
,
config
:
{
top
:
'top'
,
bottom
:
'bottom'
,
center
:
'center'
,
left
:
'left'
,
right
:
'right'
,
message
:
'top'
,
dialog
:
'center'
,
share
:
'bottom'
},
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
:
this
.
isDesktop
?
'fixforpc-top'
:
'top'
};
},
computed
:
{
isDesktop
()
{
return
this
.
popupWidth
>=
500
&&
this
.
popupHeight
>=
500
;
},
bg
()
{
if
(
this
.
backgroundColor
===
''
||
this
.
backgroundColor
===
'none'
)
{
return
'transparent'
;
}
return
this
.
backgroundColor
;
}
},
mounted
()
{
const
fixSize
=
()
=>
{
const
{
windowWidth
,
windowHeight
,
windowTop
,
safeArea
,
screenHeight
,
safeAreaInsets
}
=
uni
.
getSystemInfoSync
();
this
.
popupWidth
=
windowWidth
;
this
.
popupHeight
=
windowHeight
+
(
windowTop
||
0
);
// TODO fix by mehaotian 是否适配底部安全区 ,目前微信ios 、和 app ios 计算有差异,需要框架修复
if
(
safeArea
&&
this
.
safeArea
)
{
// #ifdef MP-WEIXIN
this
.
safeAreaInsets
=
screenHeight
-
safeArea
.
bottom
;
// #endif
// #ifndef MP-WEIXIN
this
.
safeAreaInsets
=
safeAreaInsets
.
bottom
;
// #endif
}
else
{
this
.
safeAreaInsets
=
0
;
}
};
fixSize
();
// #ifdef H5
// window.addEventListener('resize', fixSize)
// this.$once('hook:beforeDestroy', () => {
// window.removeEventListener('resize', fixSize)
// })
// #endif
},
// #ifndef VUE3
// TODO vue2
destroyed
()
{
this
.
setH5Visible
();
},
// #endif
// #ifdef VUE3
// TODO vue3
unmounted
()
{
this
.
setH5Visible
();
watch
:
{
/**
* 监听type类型
*/
type
:
{
handler
:
function
(
type
)
{
if
(
!
this
.
config
[
type
])
return
this
[
this
.
config
[
type
]](
true
)
},
immediate
:
true
},
isDesktop
:
{
handler
:
function
(
newVal
)
{
if
(
!
this
.
config
[
newVal
])
return
this
[
this
.
config
[
this
.
type
]](
true
)
},
immediate
:
true
},
/**
* 监听遮罩是否可点击
* @param {Object} val
*/
maskClick
:
{
handler
:
function
(
val
)
{
this
.
mkclick
=
val
},
immediate
:
true
},
isMaskClick
:
{
handler
:
function
(
val
)
{
this
.
mkclick
=
val
},
immediate
:
true
},
// H5 下禁止底部滚动
showPopup
(
show
)
{
// #ifdef H5
// fix by mehaotian 处理 h5 滚动穿透的问题
document
.
getElementsByTagName
(
'body'
)[
0
].
style
.
overflow
=
show
?
'hidden'
:
'visible'
// #endif
}
},
data
()
{
return
{
duration
:
300
,
ani
:
[],
showPopup
:
false
,
showTrans
:
false
,
popupWidth
:
0
,
popupHeight
:
0
,
config
:
{
top
:
'top'
,
bottom
:
'bottom'
,
center
:
'center'
,
left
:
'left'
,
right
:
'right'
,
message
:
'top'
,
dialog
:
'center'
,
share
:
'bottom'
},
maskClass
:
{
position
:
'fixed'
,
bottom
:
0
,
top
:
0
,
left
:
0
,
right
:
0
,
backgroundColor
:
'rgba(0, 0, 0, 0.4)'
},
transClass
:
{
backgroundColor
:
'transparent'
,
borderRadius
:
this
.
borderRadius
||
"0"
,
position
:
'fixed'
,
left
:
0
,
right
:
0
},
maskShow
:
true
,
mkclick
:
true
,
popupstyle
:
'top'
}
},
computed
:
{
getStyles
()
{
let
res
=
{
backgroundColor
:
this
.
bg
};
if
(
this
.
borderRadius
||
"0"
)
{
res
=
Object
.
assign
(
res
,
{
borderRadius
:
this
.
borderRadius
})
}
return
res
;
},
isDesktop
()
{
return
this
.
popupWidth
>=
500
&&
this
.
popupHeight
>=
500
},
bg
()
{
if
(
this
.
backgroundColor
===
''
||
this
.
backgroundColor
===
'none'
)
{
return
'transparent'
}
return
this
.
backgroundColor
}
},
mounted
()
{
const
fixSize
=
()
=>
{
const
{
windowWidth
,
windowHeight
,
windowTop
,
safeArea
,
screenHeight
,
safeAreaInsets
}
=
uni
.
getSystemInfoSync
()
this
.
popupWidth
=
windowWidth
this
.
popupHeight
=
windowHeight
+
(
windowTop
||
0
)
// TODO fix by mehaotian 是否适配底部安全区 ,目前微信ios 、和 app ios 计算有差异,需要框架修复
if
(
safeArea
&&
this
.
safeArea
)
{
// #ifdef MP-WEIXIN
this
.
safeAreaInsets
=
screenHeight
-
safeArea
.
bottom
// #endif
// #ifndef MP-WEIXIN
this
.
safeAreaInsets
=
safeAreaInsets
.
bottom
// #endif
}
else
{
this
.
safeAreaInsets
=
0
}
}
fixSize
()
// #ifdef H5
// window.addEventListener('resize', fixSize)
// this.$once('hook:beforeDestroy', () => {
// window.removeEventListener('resize', fixSize)
// })
// #endif
},
// #ifndef VUE3
// TODO vue2
destroyed
()
{
this
.
setH5Visible
()
},
// #endif
// #ifdef VUE3
// TODO vue3
unmounted
()
{
this
.
setH5Visible
()
},
// #endif
activated
()
{
this
.
setH5Visible
(
!
this
.
showPopup
);
},
// #endif
created
()
{
// this.mkclick = this.isMaskClick || this.maskClick
if
(
this
.
isMaskClick
===
null
&&
this
.
maskClick
===
null
)
{
this
.
mkclick
=
true
;
}
else
{
this
.
mkclick
=
this
.
isMaskClick
!==
null
?
this
.
isMaskClick
:
this
.
maskClick
;
}
if
(
this
.
animation
)
{
this
.
duration
=
300
;
}
else
{
this
.
duration
=
0
;
}
// TODO 处理 message 组件生命周期异常的问题
this
.
messageChild
=
null
;
// TODO 解决头条冒泡的问题
this
.
clearPropagation
=
false
;
this
.
maskClass
.
backgroundColor
=
this
.
maskBackgroundColor
;
deactivated
()
{
this
.
setH5Visible
(
true
);
},
methods
:
{
setH5Visible
()
{
// #ifdef H5
// fix by mehaotian 处理 h5 滚动穿透的问题
document
.
getElementsByTagName
(
'body'
)[
0
].
style
.
overflow
=
'visible'
;
// #endif
},
/**
* 公用方法,不显示遮罩层
*/
closeMask
()
{
this
.
maskShow
=
false
;
},
/**
* 公用方法,遮罩层禁止点击
*/
disableMask
()
{
this
.
mkclick
=
false
;
},
// TODO nvue 取消冒泡
clear
(
e
)
{
// #ifndef APP-NVUE
e
.
stopPropagation
();
// #endif
this
.
clearPropagation
=
true
;
},
created
()
{
// this.mkclick = this.isMaskClick || this.maskClick
if
(
this
.
isMaskClick
===
null
&&
this
.
maskClick
===
null
)
{
this
.
mkclick
=
true
}
else
{
this
.
mkclick
=
this
.
isMaskClick
!==
null
?
this
.
isMaskClick
:
this
.
maskClick
}
if
(
this
.
animation
)
{
this
.
duration
=
300
}
else
{
this
.
duration
=
0
}
// TODO 处理 message 组件生命周期异常的问题
this
.
messageChild
=
null
// TODO 解决头条冒泡的问题
this
.
clearPropagation
=
false
this
.
maskClass
.
backgroundColor
=
this
.
maskBackgroundColor
},
methods
:
{
setH5Visible
(
visible
=
true
)
{
// #ifdef H5
// fix by mehaotian 处理 h5 滚动穿透的问题
document
.
getElementsByTagName
(
'body'
)[
0
].
style
.
overflow
=
visible
?
"visible"
:
"hidden"
;
// #endif
},
/**
* 公用方法,不显示遮罩层
*/
closeMask
()
{
this
.
maskShow
=
false
},
/**
* 公用方法,遮罩层禁止点击
*/
disableMask
()
{
this
.
mkclick
=
false
},
// TODO nvue 取消冒泡
clear
(
e
)
{
// #ifndef APP-NVUE
e
.
stopPropagation
()
// #endif
this
.
clearPropagation
=
true
},
open
(
direction
)
{
// fix by mehaotian 处理快速打开关闭的情况
if
(
this
.
showPopup
)
{
clearTimeout
(
this
.
timer
);
this
.
showPopup
=
false
;
}
let
innerType
=
[
'top'
,
'center'
,
'bottom'
,
'left'
,
'right'
,
'message'
,
'dialog'
,
'share'
];
if
(
!
(
direction
&&
innerType
.
indexOf
(
direction
)
!==
-
1
))
{
direction
=
this
.
type
;
}
if
(
!
this
.
config
[
direction
])
{
console
.
error
(
'缺少类型:'
,
direction
);
return
;
}
this
[
this
.
config
[
direction
]]();
this
.
$emit
(
'change'
,
{
show
:
true
,
type
:
direction
});
},
close
(
type
)
{
this
.
showTrans
=
false
;
this
.
$emit
(
'change'
,
{
show
:
false
,
type
:
this
.
type
});
clearTimeout
(
this
.
timer
);
// // 自定义关闭事件
// this.customOpen && this.customClose()
this
.
timer
=
setTimeout
(()
=>
{
this
.
showPopup
=
false
;
},
300
);
},
// TODO 处理冒泡事件,头条的冒泡事件有问题 ,先这样兼容
touchstart
()
{
this
.
clearPropagation
=
false
;
},
open
(
direction
)
{
// fix by mehaotian 处理快速打开关闭的情况
if
(
this
.
showPopup
)
{
return
}
let
innerType
=
[
'top'
,
'center'
,
'bottom'
,
'left'
,
'right'
,
'message'
,
'dialog'
,
'share'
]
if
(
!
(
direction
&&
innerType
.
indexOf
(
direction
)
!==
-
1
))
{
direction
=
this
.
type
}
if
(
!
this
.
config
[
direction
])
{
console
.
error
(
'缺少类型:'
,
direction
)
return
}
this
[
this
.
config
[
direction
]]()
this
.
$emit
(
'change'
,
{
show
:
true
,
type
:
direction
})
},
close
(
type
)
{
this
.
showTrans
=
false
this
.
$emit
(
'change'
,
{
show
:
false
,
type
:
this
.
type
})
clearTimeout
(
this
.
timer
)
// // 自定义关闭事件
// this.customOpen && this.customClose()
this
.
timer
=
setTimeout
(()
=>
{
this
.
showPopup
=
false
},
300
)
},
// TODO 处理冒泡事件,头条的冒泡事件有问题 ,先这样兼容
touchstart
()
{
this
.
clearPropagation
=
false
},
onTap
()
{
if
(
this
.
clearPropagation
)
{
// fix by mehaotian 兼容 nvue
this
.
clearPropagation
=
false
;
return
;
}
this
.
$emit
(
'maskClick'
);
if
(
!
this
.
mkclick
)
return
;
this
.
close
();
},
/**
* 顶部弹出样式处理
*/
top
(
type
)
{
this
.
popupstyle
=
this
.
isDesktop
?
'fixforpc-top'
:
'top'
;
this
.
ani
=
[
'slide-top'
];
this
.
transClass
=
{
position
:
'fixed'
,
left
:
0
,
right
:
0
,
backgroundColor
:
this
.
bg
};
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
;
this
.
showPopup
=
true
;
this
.
showTrans
=
true
;
this
.
$nextTick
(()
=>
{
if
(
this
.
messageChild
&&
this
.
type
===
'message'
)
{
this
.
messageChild
.
timerClose
();
}
});
},
/**
* 底部弹出样式处理
*/
bottom
(
type
)
{
this
.
popupstyle
=
'bottom'
;
this
.
ani
=
[
'slide-bottom'
];
this
.
transClass
=
{
position
:
'fixed'
,
left
:
0
,
right
:
0
,
bottom
:
0
,
paddingBottom
:
this
.
safeAreaInsets
+
'px'
,
backgroundColor
:
this
.
bg
,
borderRadius
:
'20rpx'
};
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
;
this
.
showPopup
=
true
;
this
.
showTrans
=
true
;
},
/**
* 中间弹出样式处理
*/
center
(
type
)
{
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'
};
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
;
this
.
showPopup
=
true
;
this
.
showTrans
=
true
;
},
left
(
type
)
{
this
.
popupstyle
=
'left'
;
this
.
ani
=
[
'slide-left'
];
this
.
transClass
=
{
position
:
'fixed'
,
left
:
0
,
bottom
:
0
,
top
:
0
,
backgroundColor
:
this
.
bg
,
/* #ifndef APP-NVUE */
display
:
'flex'
,
flexDirection
:
'column'
/* #endif */
};
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
;
this
.
showPopup
=
true
;
this
.
showTrans
=
true
;
},
right
(
type
)
{
this
.
popupstyle
=
'right'
;
this
.
ani
=
[
'slide-right'
];
this
.
transClass
=
{
position
:
'fixed'
,
bottom
:
0
,
right
:
0
,
top
:
0
,
backgroundColor
:
this
.
bg
,
/* #ifndef APP-NVUE */
display
:
'flex'
,
flexDirection
:
'column'
/* #endif */
};
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
;
this
.
showPopup
=
true
;
this
.
showTrans
=
true
;
}
}
};
onTap
()
{
if
(
this
.
clearPropagation
)
{
// fix by mehaotian 兼容 nvue
this
.
clearPropagation
=
false
return
}
this
.
$emit
(
'maskClick'
)
if
(
!
this
.
mkclick
)
return
this
.
close
()
},
/**
* 顶部弹出样式处理
*/
top
(
type
)
{
this
.
popupstyle
=
this
.
isDesktop
?
'fixforpc-top'
:
'top'
this
.
ani
=
[
'slide-top'
]
this
.
transClass
=
{
position
:
'fixed'
,
left
:
0
,
right
:
0
,
backgroundColor
:
this
.
bg
,
borderRadius
:
this
.
borderRadius
||
"0"
}
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
this
.
showPopup
=
true
this
.
showTrans
=
true
this
.
$nextTick
(()
=>
{
if
(
this
.
messageChild
&&
this
.
type
===
'message'
)
{
this
.
messageChild
.
timerClose
()
}
})
},
/**
* 底部弹出样式处理
*/
bottom
(
type
)
{
this
.
popupstyle
=
'bottom'
this
.
ani
=
[
'slide-bottom'
]
this
.
transClass
=
{
position
:
'fixed'
,
left
:
0
,
right
:
0
,
bottom
:
0
,
paddingBottom
:
this
.
safeAreaInsets
+
'px'
,
backgroundColor
:
this
.
bg
,
borderRadius
:
this
.
borderRadius
||
"0"
,
}
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
this
.
showPopup
=
true
this
.
showTrans
=
true
},
/**
* 中间弹出样式处理
*/
center
(
type
)
{
this
.
popupstyle
=
'center'
//微信小程序下,组合动画会出现文字向上闪动问题,再此做特殊处理
// #ifdef MP-WEIXIN
this
.
ani
=
[
'fade'
]
// #endif
// #ifndef MP-WEIXIN
this
.
ani
=
[
'zoom-out'
,
'fade'
]
// #endif
this
.
transClass
=
{
position
:
'fixed'
,
/* #ifndef APP-NVUE */
display
:
'flex'
,
flexDirection
:
'column'
,
/* #endif */
bottom
:
0
,
left
:
0
,
right
:
0
,
top
:
0
,
justifyContent
:
'center'
,
alignItems
:
'center'
,
borderRadius
:
this
.
borderRadius
||
"0"
}
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
this
.
showPopup
=
true
this
.
showTrans
=
true
},
left
(
type
)
{
this
.
popupstyle
=
'left'
this
.
ani
=
[
'slide-left'
]
this
.
transClass
=
{
position
:
'fixed'
,
left
:
0
,
bottom
:
0
,
top
:
0
,
backgroundColor
:
this
.
bg
,
borderRadius
:
this
.
borderRadius
||
"0"
,
/* #ifndef APP-NVUE */
display
:
'flex'
,
flexDirection
:
'column'
/* #endif */
}
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
this
.
showPopup
=
true
this
.
showTrans
=
true
},
right
(
type
)
{
this
.
popupstyle
=
'right'
this
.
ani
=
[
'slide-right'
]
this
.
transClass
=
{
position
:
'fixed'
,
bottom
:
0
,
right
:
0
,
top
:
0
,
backgroundColor
:
this
.
bg
,
borderRadius
:
this
.
borderRadius
||
"0"
,
/* #ifndef APP-NVUE */
display
:
'flex'
,
flexDirection
:
'column'
/* #endif */
}
// TODO 兼容 type 属性 ,后续会废弃
if
(
type
)
return
this
.
showPopup
=
true
this
.
showTrans
=
true
}
}
}
</
script
>
<
style
lang=
"scss"
>
.uni-popup
{
position
:
fixed
;
/* #ifndef APP-NVUE */
z-index
:
99
;
.uni-popup
{
position
:
fixed
;
/* #ifndef APP-NVUE */
z-index
:
99
;
/* #endif */
&.top,
&.left,
&.right
{
/* #ifdef H5 */
top
:
var
(
--window-top
);
/* #endif */
/* #ifndef H5 */
top
:
0
;
/* #endif */
}
/* #endif */
&.top,
&.left,
&.right
{
/* #ifdef H5 */
top
:
var
(
--window-top
);
/* #endif */
/* #ifndef H5 */
top
:
0
;
/* #endif */
}
.uni-popup__wrapper
{
border-radius
:
20
rpx
20
rpx
0
rpx
0
rpx
;
/* #ifndef APP-NVUE */
display
:
block
;
/* #endif */
position
:
relative
;
.uni-popup__wrapper
{
/* #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 */
&.left,
&.right
{
/* #ifdef H5 */
padding-top
:
var
(
--window-top
);
/* #endif */
/* #ifndef H5 */
padding-top
:
0
;
/* #endif */
flex
:
1
;
}
}
}
/* iphonex 等安全区设置,底部安全区适配 */
/* #ifndef APP-NVUE */
//
padding-bottom
:
constant
(
safe-area-inset-bottom
);
//
padding-bottom
:
env
(
safe-area-inset-bottom
);
/* #endif */
&.left,
&.right
{
/* #ifdef H5 */
padding-top
:
var
(
--window-top
);
/* #endif */
/* #ifndef H5 */
padding-top
:
0
;
/* #endif */
flex
:
1
;
}
}
}
.fixforpc-z-index
{
/* #ifndef APP-NVUE */
z-index
:
999
;
/* #endif */
}
.fixforpc-z-index
{
/* #ifndef APP-NVUE */
z-index
:
999
;
/* #endif */
}
.fixforpc-top
{
top
:
0
;
}
.fixforpc-top
{
top
:
0
;
}
</
style
>
uni_modules/uni-popup/package.json
View file @
aa427f92
{
"id"
:
"uni-popup"
,
"displayName"
:
"uni-popup 弹出层"
,
"version"
:
"1.
8.2
"
,
"version"
:
"1.
9.1
"
,
"description"
:
" Popup 组件,提供常用的弹层"
,
"keywords"
:
[
"uni-ui"
,
...
...
@@ -46,7 +46,8 @@
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
"aliyun"
:
"y"
,
"alipay"
:
"n"
},
"client"
:
{
"App"
:
{
...
...
uni_modules/uni-transition/changelog.md
View file @
aa427f92
## 1.3.3(2024-04-23)
-
修复 当元素会受变量影响自动隐藏的bug
## 1.3.2(2023-05-04)
-
修复 NVUE 平台报错的问题
## 1.3.1(2021-11-23)
-
修复 init 方法初始化问题
## 1.3.0(2021-11-19)
...
...
uni_modules/uni-transition/components/uni-transition/createAnimation.js
View file @
aa427f92
...
...
@@ -10,7 +10,10 @@ const nvueAnimation = uni.requireNativePlugin('animation')
class
MPAnimation
{
constructor
(
options
,
_this
)
{
this
.
options
=
options
this
.
animation
=
uni
.
createAnimation
(
options
)
// 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误
this
.
animation
=
uni
.
createAnimation
({
...
options
})
this
.
currentStepAnimates
=
{}
this
.
next
=
0
this
.
$
=
_this
...
...
uni_modules/uni-transition/components/uni-transition/uni-transition.vue
View file @
aa427f92
<
template
>
<view
v-if=
"isShow"
ref=
"ani"
:animation=
"animationData"
:class=
"customClass"
:style=
"transformStyles"
@
click=
"onClick"
><slot></slot></view>
<!-- #ifndef APP-NVUE -->
<view
v-show=
"isShow"
ref=
"ani"
:animation=
"animationData"
:class=
"customClass"
:style=
"transformStyles"
@
click=
"onClick"
><slot></slot></view>
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
<view
v-if=
"isShow"
ref=
"ani"
:animation=
"animationData"
:class=
"customClass"
:style=
"transformStyles"
@
click=
"onClick"
><slot></slot></view>
<!-- #endif -->
</
template
>
<
script
>
...
...
@@ -48,7 +53,11 @@ export default {
customClass
:{
type
:
String
,
default
:
''
}
},
onceRender
:{
type
:
Boolean
,
default
:
false
},
},
data
()
{
return
{
...
...
@@ -245,7 +254,7 @@ export default {
},
animationType
(
type
)
{
return
{
fade
:
type
?
1
:
0
,
fade
:
type
?
0
:
1
,
'slide-top'
:
`translateY(
${
type
?
'0'
:
'-100%'
}
)`
,
'slide-right'
:
`translateX(
${
type
?
'0'
:
'100%'
}
)`
,
'slide-bottom'
:
`translateY(
${
type
?
'0'
:
'100%'
}
)`
,
...
...
uni_modules/uni-transition/package.json
View file @
aa427f92
{
"id"
:
"uni-transition"
,
"displayName"
:
"uni-transition 过渡动画"
,
"version"
:
"1.3.
1
"
,
"version"
:
"1.3.
3
"
,
"description"
:
"元素的简单过渡动画"
,
"keywords"
:
[
"uni-ui"
,
...
...
@@ -17,11 +17,7 @@
"directories"
:
{
"example"
:
"../../temps/example_temps"
},
"dcloudext"
:
{
"category"
:
[
"前端组件"
,
"通用组件"
],
"dcloudext"
:
{
"sale"
:
{
"regular"
:
{
"price"
:
"0.00"
...
...
@@ -38,7 +34,8 @@
"data"
:
"无"
,
"permissions"
:
"无"
},
"npmurl"
:
"https://www.npmjs.com/package/@dcloudio/uni-ui"
"npmurl"
:
"https://www.npmjs.com/package/@dcloudio/uni-ui"
,
"type"
:
"component-vue"
},
"uni_modules"
:
{
"dependencies"
:
[
"uni-scss"
],
...
...
@@ -46,7 +43,8 @@
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
"aliyun"
:
"y"
,
"alipay"
:
"n"
},
"client"
:
{
"App"
:
{
...
...
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