Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-customer-new-master
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
lanbaoming
jiedao-app-customer-new-master
Commits
be9b8c86
Commit
be9b8c86
authored
Mar 28, 2025
by
knight
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
集运-客户端主页教程
parent
1abb49e5
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
661 additions
and
0 deletions
+661
-0
index.vue
src/pages/cons/index.vue
+51
-0
course.png
src/static/img/course.png
+0
-0
course_active.png
src/static/img/course_active.png
+0
-0
package_add.png
src/static/img/package_add.png
+0
-0
package_add_active.png
src/static/img/package_add_active.png
+0
-0
changelog.md
src/uni_modules/uni-fab/changelog.md
+25
-0
uni-fab.vue
src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue
+491
-0
package.json
src/uni_modules/uni-fab/package.json
+85
-0
readme.md
src/uni_modules/uni-fab/readme.md
+9
-0
No files found.
src/pages/cons/index.vue
View file @
be9b8c86
...
...
@@ -222,6 +222,9 @@
<!-- 签收图片 -->
<sign-in-picture
ref=
"popupImage"
/>
<uni-fab
ref=
"fab"
:pattern=
"pattern"
:content=
"content"
horizontal=
"right"
vertical=
"bottom"
direction=
"vertical"
@
fabClick=
"fabClick"
@
trigger=
"trigger"
/>
</view>
</view>
...
...
@@ -253,6 +256,31 @@ export default {
keyword
:
''
,
}
return
{
directionStr
:
'
垂直
'
,
horizontal
:
'
left
'
,
vertical
:
'
bottom
'
,
direction
:
'
horizontal
'
,
pattern
:
{
color
:
'
#7A7E83
'
,
backgroundColor
:
'
#fff
'
,
selectedColor
:
'
#007AFF
'
,
buttonColor
:
'
#007AFF
'
,
iconColor
:
'
#fff
'
},
content
:
[{
iconPath
:
'
/static/img/package_add.png
'
,
selectedIconPath
:
'
/static/img/package_add_active.png
'
,
text
:
'
预报
'
,
active
:
false
},
{
iconPath
:
'
/static/img/course.png
'
,
selectedIconPath
:
'
/static/img/course_active.png
'
,
text
:
'
教程
'
,
active
:
false
},
],
// 查询参数
queryParams
:
{...
initQueryParams
},
initQueryParams
,
...
...
@@ -350,6 +378,29 @@ export default {
}
},
/**
* 悬浮按钮点击事件
*/
fabClick
(){
},
/**
* 点击悬浮按钮内的图标
*/
trigger
(
e
){
this
.
content
[
e
.
index
].
active
=
!
e
.
item
.
active
console
.
log
(
e
.
index
)
switch
(
parseInt
(
e
.
index
)){
case
0
:
this
.
navigateTo
(
'
../cons/create
'
);
break
;
case
1
:
this
.
navigateTo
(
'
../help/help
'
);
break
;
}
},
/**
* 获取列表数据
*/
...
...
src/static/img/course.png
0 → 100644
View file @
be9b8c86
365 Bytes
src/static/img/course_active.png
0 → 100644
View file @
be9b8c86
386 Bytes
src/static/img/package_add.png
0 → 100644
View file @
be9b8c86
696 Bytes
src/static/img/package_add_active.png
0 → 100644
View file @
be9b8c86
777 Bytes
src/uni_modules/uni-fab/changelog.md
0 → 100644
View file @
be9b8c86
## 1.2.6(2024-10-12)
-
修复 微信小程序中的getSystemInfo警告
## 1.2.5(2023-03-29)
-
新增 pattern.icon 属性,可自定义图标
## 1.2.4(2022-09-07)
小程序端由于 style 使用了对象导致报错,
[
详情
](
https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false
)
## 1.2.3(2022-09-05)
-
修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:
[
https://ask.dcloud.net.cn/question/110638?notification_id=826310
](
https://ask.dcloud.net.cn/question/110638?notification_id=826310
)
## 1.2.2(2021-12-29)
-
更新 组件依赖
## 1.2.1(2021-11-19)
-
修复 阴影颜色不正确的bug
## 1.2.0(2021-11-19)
-
优化 组件UI,并提供设计资源,详见:
[
https://uniapp.dcloud.io/component/uniui/resource
](
https://uniapp.dcloud.io/component/uniui/resource
)
-
文档迁移,详见:
[
https://uniapp.dcloud.io/component/uniui/uni-fab
](
https://uniapp.dcloud.io/component/uniui/uni-fab
)
## 1.1.1(2021-11-09)
-
新增 提供组件设计资源,组件样式调整
## 1.1.0(2021-07-30)
-
组件兼容 vue3,如何创建vue3项目,详见
[
uni-app 项目支持 vue3 介绍
](
https://ask.dcloud.net.cn/article/37834
)
## 1.0.7(2021-05-12)
-
新增 组件示例地址
## 1.0.6(2021-02-05)
-
调整为uni_modules目录规范
-
优化 按钮背景色调整
-
优化 兼容pc端
src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue
0 → 100644
View file @
be9b8c86
<
template
>
<view
class=
"uni-cursor-point"
>
<view
v-if=
"popMenu && (leftBottom||rightBottom||leftTop||rightTop) && content.length > 0"
:class=
"
{
'uni-fab--leftBottom': leftBottom,
'uni-fab--rightBottom': rightBottom,
'uni-fab--leftTop': leftTop,
'uni-fab--rightTop': rightTop
}" class="uni-fab"
:style="nvueBottom"
>
<view
:class=
"
{
'uni-fab__content--left': horizontal === 'left',
'uni-fab__content--right': horizontal === 'right',
'uni-fab__content--flexDirection': direction === 'vertical',
'uni-fab__content--flexDirectionStart': flexDirectionStart,
'uni-fab__content--flexDirectionEnd': flexDirectionEnd,
'uni-fab__content--other-platform': !isAndroidNvue
}" :style="{ width: boxWidth, height: boxHeight, backgroundColor: styles.backgroundColor }"
class="uni-fab__content" elevation="5">
<view
v-if=
"flexDirectionStart || horizontalLeft"
class=
"uni-fab__item uni-fab__item--first"
/>
<view
v-for=
"(item, index) in content"
:key=
"index"
:class=
"
{ 'uni-fab__item--active': isShow }"
class="uni-fab__item" @click="_onItemClick(index, item)">
<image
:src=
"item.active ? item.selectedIconPath : item.iconPath"
class=
"uni-fab__item-image"
mode=
"aspectFit"
/>
<text
class=
"uni-fab__item-text"
:style=
"
{ color: item.active ? styles.selectedColor : styles.color }">
{{
item
.
text
}}
</text>
</view>
<view
v-if=
"flexDirectionEnd || horizontalRight"
class=
"uni-fab__item uni-fab__item--first"
/>
</view>
</view>
<view
:class=
"
{
'uni-fab__circle--leftBottom': leftBottom,
'uni-fab__circle--rightBottom': rightBottom,
'uni-fab__circle--leftTop': leftTop,
'uni-fab__circle--rightTop': rightTop,
'uni-fab__content--other-platform': !isAndroidNvue
}" class="uni-fab__circle uni-fab__plus" :style="{ 'background-color': styles.buttonColor, 'bottom': nvueBottom }" @click="_onClick">
<uni-icons
class=
"fab-circle-icon"
:type=
"styles.icon"
:color=
"styles.iconColor"
size=
"32"
:class=
"
{'uni-fab__plus--active': isShow
&&
content.length > 0}">
</uni-icons>
<!--
<view
class=
"fab-circle-v"
:class=
"
{'uni-fab__plus--active': isShow
&&
content.length > 0}">
</view>
<view
class=
"fab-circle-h"
:class=
"
{'uni-fab__plus--active': isShow
&&
content.length > 0}">
</view>
-->
</view>
</view>
</
template
>
<
script
>
let
platform
=
'
other
'
// #ifdef APP-NVUE
platform
=
uni
.
getSystemInfoSync
().
platform
// #endif
/**
* Fab 悬浮按钮
* @description 点击可展开一个图形按钮菜单
* @tutorial https://ext.dcloud.net.cn/plugin?id=144
* @property {Object} pattern 可选样式配置项
* @property {Object} horizontal = [left | right] 水平对齐方式
* @value left 左对齐
* @value right 右对齐
* @property {Object} vertical = [bottom | top] 垂直对齐方式
* @value bottom 下对齐
* @value top 上对齐
* @property {Object} direction = [horizontal | vertical] 展开菜单显示方式
* @value horizontal 水平显示
* @value vertical 垂直显示
* @property {Array} content 展开菜单内容配置项
* @property {Boolean} popMenu 是否使用弹出菜单
* @event {Function} trigger 展开菜单点击事件,返回点击信息
* @event {Function} fabClick 悬浮按钮点击事件
*/
export
default
{
name
:
'
UniFab
'
,
emits
:
[
'
fabClick
'
,
'
trigger
'
],
props
:
{
pattern
:
{
type
:
Object
,
default
()
{
return
{}
}
},
horizontal
:
{
type
:
String
,
default
:
'
left
'
},
vertical
:
{
type
:
String
,
default
:
'
bottom
'
},
direction
:
{
type
:
String
,
default
:
'
horizontal
'
},
content
:
{
type
:
Array
,
default
()
{
return
[]
}
},
show
:
{
type
:
Boolean
,
default
:
false
},
popMenu
:
{
type
:
Boolean
,
default
:
true
}
},
data
()
{
return
{
fabShow
:
false
,
isShow
:
false
,
isAndroidNvue
:
platform
===
'
android
'
,
styles
:
{
color
:
'
#3c3e49
'
,
selectedColor
:
'
#007AFF
'
,
backgroundColor
:
'
#fff
'
,
buttonColor
:
'
#007AFF
'
,
iconColor
:
'
#fff
'
,
icon
:
'
plusempty
'
}
}
},
computed
:
{
contentWidth
(
e
)
{
return
(
this
.
content
.
length
+
1
)
*
55
+
15
+
'
px
'
},
contentWidthMin
()
{
return
'
55px
'
},
// 动态计算宽度
boxWidth
()
{
return
this
.
getPosition
(
3
,
'
horizontal
'
)
},
// 动态计算高度
boxHeight
()
{
return
this
.
getPosition
(
3
,
'
vertical
'
)
},
// 计算左下位置
leftBottom
()
{
return
this
.
getPosition
(
0
,
'
left
'
,
'
bottom
'
)
},
// 计算右下位置
rightBottom
()
{
return
this
.
getPosition
(
0
,
'
right
'
,
'
bottom
'
)
},
// 计算左上位置
leftTop
()
{
return
this
.
getPosition
(
0
,
'
left
'
,
'
top
'
)
},
rightTop
()
{
return
this
.
getPosition
(
0
,
'
right
'
,
'
top
'
)
},
flexDirectionStart
()
{
return
this
.
getPosition
(
1
,
'
vertical
'
,
'
top
'
)
},
flexDirectionEnd
()
{
return
this
.
getPosition
(
1
,
'
vertical
'
,
'
bottom
'
)
},
horizontalLeft
()
{
return
this
.
getPosition
(
2
,
'
horizontal
'
,
'
left
'
)
},
horizontalRight
()
{
return
this
.
getPosition
(
2
,
'
horizontal
'
,
'
right
'
)
},
// 计算 nvue bottom
nvueBottom
()
{
// #ifdef APP-NVUE
const
safeBottom
=
uni
.
getSystemInfoSync
().
windowBottom
;
return
30
+
safeBottom
// #endif
// #ifndef APP-NVUE
return
30
// #endif
}
},
watch
:
{
pattern
:
{
handler
(
val
,
oldVal
)
{
this
.
styles
=
Object
.
assign
({},
this
.
styles
,
val
)
},
deep
:
true
}
},
created
()
{
this
.
isShow
=
this
.
show
if
(
this
.
top
===
0
)
{
this
.
fabShow
=
true
}
// 初始化样式
this
.
styles
=
Object
.
assign
({},
this
.
styles
,
this
.
pattern
)
},
methods
:
{
_onClick
()
{
this
.
$emit
(
'
fabClick
'
)
if
(
!
this
.
popMenu
)
{
return
}
this
.
isShow
=
!
this
.
isShow
},
open
()
{
this
.
isShow
=
true
},
close
()
{
this
.
isShow
=
false
},
/**
* 按钮点击事件
*/
_onItemClick
(
index
,
item
)
{
if
(
!
this
.
isShow
)
{
return
}
this
.
$emit
(
'
trigger
'
,
{
index
,
item
})
},
/**
* 获取 位置信息
*/
getPosition
(
types
,
paramA
,
paramB
)
{
if
(
types
===
0
)
{
return
this
.
horizontal
===
paramA
&&
this
.
vertical
===
paramB
}
else
if
(
types
===
1
)
{
return
this
.
direction
===
paramA
&&
this
.
vertical
===
paramB
}
else
if
(
types
===
2
)
{
return
this
.
direction
===
paramA
&&
this
.
horizontal
===
paramB
}
else
{
return
this
.
isShow
&&
this
.
direction
===
paramA
?
this
.
contentWidth
:
this
.
contentWidthMin
}
}
}
}
</
script
>
<
style
lang=
"scss"
>
$uni-shadow-base
:
0
1px
5px
2px
rgba
(
$color
:
#000000
,
$alpha
:
0
.3
)
!
default
;
.uni-fab
{
position
:
fixed
;
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
justify-content
:
center
;
align-items
:
center
;
z-index
:
10
;
border-radius
:
45px
;
box-shadow
:
$uni-shadow-base
;
}
.uni-cursor-point
{
/* #ifdef H5 */
cursor
:
pointer
;
/* #endif */
}
.uni-fab--active
{
opacity
:
1
;
}
.uni-fab--leftBottom
{
left
:
15px
;
bottom
:
30px
;
/* #ifdef H5 */
left
:
calc
(
15px
+
var
(
--
window-left
));
bottom
:
calc
(
30px
+
var
(
--
window-bottom
));
/* #endif */
// padding: 10px;
}
.uni-fab--leftTop
{
left
:
15px
;
top
:
30px
;
/* #ifdef H5 */
left
:
calc
(
15px
+
var
(
--
window-left
));
top
:
calc
(
30px
+
var
(
--
window-top
));
/* #endif */
// padding: 10px;
}
.uni-fab--rightBottom
{
right
:
15px
;
bottom
:
30px
;
/* #ifdef H5 */
right
:
calc
(
15px
+
var
(
--
window-right
));
bottom
:
calc
(
30px
+
var
(
--
window-bottom
));
/* #endif */
// padding: 10px;
}
.uni-fab--rightTop
{
right
:
15px
;
top
:
30px
;
/* #ifdef H5 */
right
:
calc
(
15px
+
var
(
--
window-right
));
top
:
calc
(
30px
+
var
(
--
window-top
));
/* #endif */
// padding: 10px;
}
.uni-fab__circle
{
position
:
fixed
;
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
justify-content
:
center
;
align-items
:
center
;
width
:
55px
;
height
:
55px
;
background-color
:
#3c3e49
;
border-radius
:
45px
;
z-index
:
11
;
// box-shadow: $uni-shadow-base;
}
.uni-fab__circle--leftBottom
{
left
:
15px
;
bottom
:
30px
;
/* #ifdef H5 */
left
:
calc
(
15px
+
var
(
--
window-left
));
bottom
:
calc
(
30px
+
var
(
--
window-bottom
));
/* #endif */
}
.uni-fab__circle--leftTop
{
left
:
15px
;
top
:
30px
;
/* #ifdef H5 */
left
:
calc
(
15px
+
var
(
--
window-left
));
top
:
calc
(
30px
+
var
(
--
window-top
));
/* #endif */
}
.uni-fab__circle--rightBottom
{
right
:
15px
;
bottom
:
30px
;
/* #ifdef H5 */
right
:
calc
(
15px
+
var
(
--
window-right
));
bottom
:
calc
(
30px
+
var
(
--
window-bottom
));
/* #endif */
}
.uni-fab__circle--rightTop
{
right
:
15px
;
top
:
30px
;
/* #ifdef H5 */
right
:
calc
(
15px
+
var
(
--
window-right
));
top
:
calc
(
30px
+
var
(
--
window-top
));
/* #endif */
}
.uni-fab__circle--left
{
left
:
0
;
}
.uni-fab__circle--right
{
right
:
0
;
}
.uni-fab__circle--top
{
top
:
0
;
}
.uni-fab__circle--bottom
{
bottom
:
0
;
}
.uni-fab__plus
{
font-weight
:
bold
;
}
// .fab-circle-v {
// position: absolute;
// width: 2px;
// height: 24px;
// left: 0;
// top: 0;
// right: 0;
// bottom: 0;
// /* #ifndef APP-NVUE */
// margin: auto;
// /* #endif */
// background-color: white;
// transform: rotate(0deg);
// transition: transform 0.3s;
// }
// .fab-circle-h {
// position: absolute;
// width: 24px;
// height: 2px;
// left: 0;
// top: 0;
// right: 0;
// bottom: 0;
// /* #ifndef APP-NVUE */
// margin: auto;
// /* #endif */
// background-color: white;
// transform: rotate(0deg);
// transition: transform 0.3s;
// }
.fab-circle-icon
{
transform
:
rotate
(
0deg
);
transition
:
transform
0
.3s
;
font-weight
:
200
;
}
.uni-fab__plus--active
{
transform
:
rotate
(
135deg
);
}
.uni-fab__content
{
/* #ifndef APP-NVUE */
box-sizing
:
border-box
;
display
:
flex
;
/* #endif */
flex-direction
:
row
;
border-radius
:
55px
;
overflow
:
hidden
;
transition-property
:
width
,
height
;
transition-duration
:
0
.2s
;
width
:
55px
;
border-color
:
#DDDDDD
;
border-width
:
1rpx
;
border-style
:
solid
;
}
.uni-fab__content--other-platform
{
border-width
:
0px
;
box-shadow
:
$uni-shadow-base
;
}
.uni-fab__content--left
{
justify-content
:
flex-start
;
}
.uni-fab__content--right
{
justify-content
:
flex-end
;
}
.uni-fab__content--flexDirection
{
flex-direction
:
column
;
justify-content
:
flex-end
;
}
.uni-fab__content--flexDirectionStart
{
flex-direction
:
column
;
justify-content
:
flex-start
;
}
.uni-fab__content--flexDirectionEnd
{
flex-direction
:
column
;
justify-content
:
flex-end
;
}
.uni-fab__item
{
/* #ifndef APP-NVUE */
display
:
flex
;
/* #endif */
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
width
:
55px
;
height
:
55px
;
opacity
:
0
;
transition
:
opacity
0
.2s
;
}
.uni-fab__item--active
{
opacity
:
1
;
}
.uni-fab__item-image
{
width
:
20px
;
height
:
20px
;
margin-bottom
:
4px
;
}
.uni-fab__item-text
{
color
:
#FFFFFF
;
font-size
:
12px
;
line-height
:
12px
;
margin-top
:
2px
;
}
.uni-fab__item--first
{
width
:
55px
;
}
</
style
>
src/uni_modules/uni-fab/package.json
0 → 100644
View file @
be9b8c86
{
"id"
:
"uni-fab"
,
"displayName"
:
"uni-fab 悬浮按钮"
,
"version"
:
"1.2.6"
,
"description"
:
"悬浮按钮 fab button ,点击可展开一个图标按钮菜单。"
,
"keywords"
:
[
"uni-ui"
,
"uniui"
,
"按钮"
,
"悬浮按钮"
,
"fab"
],
"repository"
:
"https://github.com/dcloudio/uni-ui"
,
"engines"
:
{
"HBuilderX"
:
""
},
"directories"
:
{
"example"
:
"../../temps/example_temps"
},
"dcloudext"
:
{
"sale"
:
{
"regular"
:
{
"price"
:
"0.00"
},
"sourcecode"
:
{
"price"
:
"0.00"
}
},
"contact"
:
{
"qq"
:
""
},
"declaration"
:
{
"ads"
:
"无"
,
"data"
:
"无"
,
"permissions"
:
"无"
},
"npmurl"
:
"https://www.npmjs.com/package/@dcloudio/uni-ui"
,
"type"
:
"component-vue"
},
"uni_modules"
:
{
"dependencies"
:
[
"uni-scss"
,
"uni-icons"
],
"encrypt"
:
[],
"platforms"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"aliyun"
:
"y"
,
"alipay"
:
"n"
},
"client"
:
{
"App"
:
{
"app-vue"
:
"y"
,
"app-nvue"
:
"y"
},
"H5-mobile"
:
{
"Safari"
:
"y"
,
"Android Browser"
:
"y"
,
"微信浏览器(Android)"
:
"y"
,
"QQ浏览器(Android)"
:
"y"
},
"H5-pc"
:
{
"Chrome"
:
"y"
,
"IE"
:
"y"
,
"Edge"
:
"y"
,
"Firefox"
:
"y"
,
"Safari"
:
"y"
},
"小程序"
:
{
"微信"
:
"y"
,
"阿里"
:
"y"
,
"百度"
:
"y"
,
"字节跳动"
:
"y"
,
"QQ"
:
"y"
},
"快应用"
:
{
"华为"
:
"u"
,
"联盟"
:
"u"
},
"Vue"
:
{
"vue2"
:
"y"
,
"vue3"
:
"y"
}
}
}
}
}
src/uni_modules/uni-fab/readme.md
0 → 100644
View file @
be9b8c86
## Fab 悬浮按钮
> **组件名:uni-fab**
> 代码块: `uFab`
点击可展开一个图形按钮菜单
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
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