Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
CFFP-HB
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chao Sun
CFFP-HB
Commits
cc6d6067
Commit
cc6d6067
authored
Jul 09, 2026
by
yuzhenWang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复登录状态,增加图片预览已经发布生产
parent
ad8ab7bb
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
361 additions
and
93 deletions
+361
-93
myPackageA/businessCard/businessCard.vue
+267
-85
myPackageA/myTeam/myTeam.vue
+3
-3
myPackageA/poster/poster.vue
+2
-2
pages/courseDetail/courseDetail.vue
+41
-3
pages/personalCenter/detail.vue
+1
-0
pages/personalCenter/personalCenter.vue
+3
-0
pages/personalCenter/system/settings.vue
+2
-0
util/previewImage.js
+42
-0
No files found.
myPackageA/businessCard/businessCard.vue
View file @
cc6d6067
...
...
@@ -89,13 +89,25 @@
controls
ref=
"myVideo"
></video>
</view>
</view>
<view
class=
"gapBox"
>
<!-- 动态渲染:全球经验 ~ 合规保障 -->
<view
class=
"gapBox"
v-for=
"(section, idx) in sectionList"
:key=
"idx"
>
<view
class=
"tabTitle"
>
{{ section.title }}
</view>
<view
v-if=
"section.descriptions && section.descriptions.length"
>
<view
class=
"destxt"
v-for=
"(desc, dIdx) in section.descriptions"
:key=
"dIdx"
>
{{ desc }}
</view>
</view>
<view
class=
"boxImage"
>
<image
v-for=
"(img, imgIdx) in section.images"
:key=
"imgIdx"
:src=
"img"
mode=
"widthFix"
@
click=
"previewGroup(section.images, imgIdx,idx)"
/>
</view>
</view>
<!-- <view class="gapBox">
<view class="tabTitle">
全球经验
</view>
<view class="boxImage">
<image
src=
"/myPackageA/assets/images/quanqiu1.webp"
mode=
"widthFix"
></image>
<image
src=
"/myPackageA/assets/images/quanqiu2.webp"
mode=
"widthFix"
></image>
<image src="/myPackageA/assets/images/quanqiu1.webp" mode="widthFix"
@click="previewGroup('quanqiu1',0)"
></image>
<image src="/myPackageA/assets/images/quanqiu2.webp" mode="widthFix"
@click="previewGroup('quanqiu2',0)"
></image>
</view>
</view>
...
...
@@ -104,8 +116,8 @@
十余载本土深耕
</view>
<view class="boxImage">
<image
src=
"/myPackageA/assets/images/shiyu1.webp"
mode=
"widthFix"
></image>
<image
src=
"/myPackageA/assets/images/shiyu2.webp"
mode=
"widthFix"
></image>
<image src="/myPackageA/assets/images/shiyu1.webp" mode="widthFix"
@click="previewGroup('shiyu1',0)"
></image>
<image src="/myPackageA/assets/images/shiyu2.webp" mode="widthFix"
@click="previewGroup('shiyu2',0)"
></image>
</view>
</view>
...
...
@@ -114,8 +126,8 @@
AI智能硬核支撑
</view>
<view class="boxImage">
<image
src=
"/myPackageA/assets/images/ai1.webp"
mode=
"widthFix"
></image>
<image
src=
"/myPackageA/assets/images/ai2.webp"
mode=
"widthFix"
></image>
<image src="/myPackageA/assets/images/ai1.webp" mode="widthFix"
@click="previewGroup('ai1',0)"
></image>
<image src="/myPackageA/assets/images/ai2.webp" mode="widthFix"
@click="previewGroup('ai2',0)"
></image>
</view>
</view>
...
...
@@ -124,8 +136,8 @@
生态资源
</view>
<view class="boxImage">
<image
src=
"/myPackageA/assets/images/shengtai1.webp"
mode=
"widthFix"
></image>
<image
src=
"/myPackageA/assets/images/shengtai2.webp"
mode=
"widthFix"
></image>
<image src="/myPackageA/assets/images/shengtai1.webp" mode="widthFix"
@click="previewGroup('shengtai1',0)"
></image>
<image src="/myPackageA/assets/images/shengtai2.webp" mode="widthFix"
@click="previewGroup('shengtai2',0)"
></image>
</view>
</view>
...
...
@@ -140,8 +152,8 @@
<view class="destxt">-被行业权威机构评为"家庭财事治理标杆机构"</view>
<view class="destxt">-十年服务零投诉,积累极高市场美誉度,成为客户信赖的财事治理首选品牌</view>
<view class="boxImage" style="margin-top: 15rpx;">
<image
src=
"/myPackageA/assets/images/pinpai1.webp"
mode=
"widthFix"
></image>
<image
src=
"/myPackageA/assets/images/pinpai2.webp"
mode=
"widthFix"
></image>
<image src="/myPackageA/assets/images/pinpai1.webp" mode="widthFix"
@click="previewGroup('pinpai1',0)"
></image>
<image src="/myPackageA/assets/images/pinpai2.webp" mode="widthFix"
@click="previewGroup('pinpai2',0)"
></image>
</view>
</view>
<view class="gapBox">
...
...
@@ -149,32 +161,48 @@
合规保障 国际认证
</view>
<view class="boxImage">
<image
src=
"/myPackageA/assets/images/hegui1.webp"
mode=
"widthFix"
></image>
<image
src=
"/myPackageA/assets/images/hegui2.webp"
mode=
"widthFix"
></image>
<image src="/myPackageA/assets/images/hegui1.webp" mode="widthFix"
@click="previewGroup('hegui1',0)"
></image>
<image src="/myPackageA/assets/images/hegui2.webp" mode="widthFix"
@click="previewGroup('hegui2',0)"
></image>
</view>
</view>
</view>
-->
<view
class=
"tipTxt"
>
—— 已经到底部了 ——
</view>
</view>
<view
v-show=
"current === 1"
class=
"tabcontent"
>
<view
class=
"tabTitle"
>
合作模式
</view>
<view
class=
"boxImage"
>
<image
class=
"imgItem"
v-for=
"(img, index) in cooperationImages"
:key=
"index"
:src=
"img"
mode=
"widthFix"
@
click=
"previewGroup(cooperationImages, index,6)"
/>
</view>
<view
class=
"tipTxt"
>
—— 已经到底部了 ——
</view>
</view>
<!-- <view v-show="current === 1" class="tabcontent">
<view class="tabTitle">
合作模式
</view>
<view class="boxImage">
<image
class=
"imgItem"
src=
"/myPackageA/assets/images/hezuo1.webp"
mode=
"widthFix"
></image>
<image
class=
"imgItem"
src=
"/myPackageA/assets/images/hezuo2.webp"
mode=
"widthFix"
></image>
<image
class=
"imgItem"
src=
"/myPackageA/assets/images/hezuo3.webp"
mode=
"widthFix"
></image>
<image
class=
"imgItem"
src=
"/myPackageA/assets/images/hezuo4.webp"
mode=
"widthFix"
></image>
<image
class=
"imgItem"
src=
"/myPackageA/assets/images/hezuo5.webp"
mode=
"widthFix"
></image>
<image
class=
"imgItem"
src=
"/myPackageA/assets/images/hezuo6.webp"
mode=
"widthFix"
></image>
<image class="imgItem" src="/myPackageA/assets/images/hezuo1.webp" mode="widthFix"
@click="previewGroup('hezuo1',0)"></image>
<image class="imgItem" src="/myPackageA/assets/images/hezuo2.webp" mode="widthFix"
@click="previewGroup('hezuo2',0)"></image>
<image class="imgItem" src="/myPackageA/assets/images/hezuo3.webp" mode="widthFix"
@click="previewGroup('hezuo3',0)"></image>
<image class="imgItem" src="/myPackageA/assets/images/hezuo4.webp" mode="widthFix"
@click="previewGroup('hezuo4',0)"></image>
<image class="imgItem" src="/myPackageA/assets/images/hezuo5.webp" mode="widthFix"
@click="previewGroup('hezuo5',0)"></image>
<image class="imgItem" src="/myPackageA/assets/images/hezuo6.webp" mode="widthFix"
@click="previewGroup('hezuo6',0)"></image>
</view>
<view class="tipTxt">
—— 已经到底部了 ——
</view>
</view>
</view>
-->
<view
v-show=
"current === 2"
class=
"tabcontent"
>
<view
class=
"tabTitle"
>
关注官微
...
...
@@ -241,6 +269,45 @@
</template>
<
script
>
import
quanqiu1
from
'@/myPackageA/assets/images/quanqiu1.webp'
;
import
quanqiu2
from
'@/myPackageA/assets/images/quanqiu2.webp'
;
import
shiyu1
from
'@/myPackageA/assets/images/shiyu1.webp'
;
import
shiyu2
from
'@/myPackageA/assets/images/shiyu2.webp'
;
import
ai1
from
'@/myPackageA/assets/images/ai1.webp'
;
import
ai2
from
'@/myPackageA/assets/images/ai2.webp'
;
import
shengtai1
from
'@/myPackageA/assets/images/shengtai1.webp'
;
import
shengtai2
from
'@/myPackageA/assets/images/shengtai2.webp'
;
import
pinpai1
from
'@/myPackageA/assets/images/pinpai1.webp'
;
import
pinpai2
from
'@/myPackageA/assets/images/pinpai2.webp'
;
import
hegui1
from
'@/myPackageA/assets/images/hegui1.webp'
;
import
hegui2
from
'@/myPackageA/assets/images/hegui2.webp'
;
import
hezuo1
from
'@/myPackageA/assets/images/hezuo1.webp'
;
import
hezuo2
from
'@/myPackageA/assets/images/hezuo2.webp'
;
import
hezuo5
from
'@/myPackageA/assets/images/hezuo5.webp'
;
import
hezuo3
from
'@/myPackageA/assets/images/hezuo3.webp'
;
import
hezuo4
from
'@/myPackageA/assets/images/hezuo4.webp'
;
import
hezuo6
from
'@/myPackageA/assets/images/hezuo6.webp'
;
// 新增:图片映射
const
imageMap
=
{
quanqiu1
,
quanqiu2
,
shiyu1
,
shiyu2
,
ai1
,
ai2
,
shengtai1
,
shengtai2
,
pinpai1
,
pinpai2
,
hegui1
,
hegui2
,
hezuo1
,
hezuo2
,
hezuo3
,
hezuo4
,
hezuo5
,
hezuo6
};
import
{
initJssdkShare
,
setWechatShare
,
hshare
}
from
'@/util/fiveshare'
;
import
{
shareURL
,
companyInfo
}
from
"@/environments/environment"
;
import
api
from
"@/api/api"
;
...
...
@@ -248,6 +315,8 @@
import
dataHandling
from
"@/util/dataHandling"
;
import
customSegmentedControl
from
'@/components/customSegmentedControl/customSegmentedControl.vue'
;
import
wx
from
'weixin-js-sdk'
import
{
previewImages
}
from
'@/util/previewImage.js'
;
export
default
{
name
:
'businessCard'
,
components
:
{
...
...
@@ -255,7 +324,7 @@
},
data
()
{
return
{
visitorUuid
:
''
,
visitorUuid
:
''
,
sharelogin
:
false
,
//是否需要登录
isLogin
:
true
,
//登录状态
shareTipsFlag
:
false
,
...
...
@@ -286,7 +355,107 @@
description1
:
'银盾家办(Supguard Family Office)由BHL(Budget Holdings Limited)全资控股,来自英国拥有半个世纪的历史。依托BHL亚太区核心平台—Auto&General(A&G)集团专业能力,打造中国首个AI普惠型新家办。它带着国际先进的家庭财事治理经验来到中国,致力于成为中国领先的家事治理与风险管理解决方案供应商,为家庭提供全生命周期的风险管理、财产保值增值以及财富传承规划方案。'
,
description2
:
'银盾家办以“去风险、增确定、传家业”为使命,秉持“纯粹中立、系统赋能、长期陪伴”核心理念,打破传统家办精英壁垒,覆盖中产家庭、中小企业主、高净值家族全客层,银盾家办以千万家庭的“韧性架构师”自居,守护万家灯火,助力家业长青。'
}]
}],
ImagesPreviewList
:
[
[
quanqiu1
,
quanqiu2
],
[
shiyu1
,
shiyu2
],
[
ai1
,
ai2
],
[
shengtai1
,
shengtai2
],
[
pinpai1
,
pinpai2
],
[
hegui1
,
hegui2
],
[
hezuo1
,
hezuo2
,
hezuo3
,
hezuo4
,
hezuo5
,
hezuo6
]
],
sectionList
:
[
{
title
:
'全球经验'
,
images
:
[
quanqiu1
,
quanqiu2
]
// 直接使用导入的变量
},
{
title
:
'十余载本土深耕'
,
images
:
[
shiyu1
,
shiyu2
]
},
{
title
:
'AI智能硬核支撑'
,
images
:
[
ai1
,
ai2
]
},
{
title
:
'生态资源'
,
images
:
[
shengtai1
,
shengtai2
]
},
{
title
:
'企业荣誉'
,
descriptions
:
[
'-品牌入选"中国金融品牌价值 100 强"候选名单'
,
'-获得澳大利亚投资与财务规划师协会(AIOFP)中国地区独家授权资质'
,
'-被行业权威机构评为"家庭财事治理标杆机构"'
,
'-十年服务零投诉,积累极高市场美誉度,成为客户信赖的财事治理首选品牌'
],
images
:
[
pinpai1
,
pinpai2
]
},
{
title
:
'合规保障 国际认证'
,
images
:
[
hegui1
,
hegui2
]
}
],
cooperationImages
:
[
hezuo1
,
hezuo2
,
hezuo3
,
hezuo4
,
hezuo5
,
hezuo6
]
// cooperationImages: [
// '/myPackageA/assets/images/hezuo1.webp',
// '/myPackageA/assets/images/hezuo2.webp',
// '/myPackageA/assets/images/hezuo3.webp',
// '/myPackageA/assets/images/hezuo4.webp',
// '/myPackageA/assets/images/hezuo5.webp',
// '/myPackageA/assets/images/hezuo6.webp'
// ],
// sectionList: [{
// title: '全球经验',
// images: [
// '/myPackageA/assets/images/quanqiu1.webp',
// '/myPackageA/assets/images/quanqiu2.webp'
// ]
// },
// {
// title: '十余载本土深耕',
// images: [
// '/myPackageA/assets/images/shiyu1.webp',
// '/myPackageA/assets/images/shiyu2.webp'
// ]
// },
// {
// title: 'AI智能硬核支撑',
// images: [
// '/myPackageA/assets/images/ai1.webp',
// '/myPackageA/assets/images/ai2.webp'
// ]
// },
// {
// title: '生态资源',
// images: [
// '/myPackageA/assets/images/shengtai1.webp',
// '/myPackageA/assets/images/shengtai2.webp'
// ]
// },
// {
// title: '企业荣誉',
// descriptions: [
// '-品牌入选"中国金融品牌价值 100 强"候选名单',
// '-获得澳大利亚投资与财务规划师协会(AIOFP)中国地区独家授权资质',
// '-被行业权威机构评为"家庭财事治理标杆机构"',
// '-十年服务零投诉,积累极高市场美誉度,成为客户信赖的财事治理首选品牌'
// ],
// images: [
// '/myPackageA/assets/images/pinpai1.webp',
// '/myPackageA/assets/images/pinpai2.webp'
// ]
// },
// {
// title: '合规保障 国际认证',
// images: [
// '/myPackageA/assets/images/hegui1.webp',
// '/myPackageA/assets/images/hegui2.webp'
// ]
// }
// ]
}
},
computed
:
{
...
...
@@ -356,14 +525,14 @@
this
.
isShare
=
true
this
.
userId
=
options
.
userId
this
.
cardId
=
options
.
cardId
}
this
.
systemInfo
=
uni
.
getSystemInfoSync
();
const
{
platform
,
deviceType
,
screenWidth
,
screenHeight
}
=
this
.
systemInfo
;
},
onShow
()
{
if
(
uni
.
getStorageSync
(
'visitorUuid'
))
{
if
(
uni
.
getStorageSync
(
'visitorUuid'
))
{
this
.
visitorUuid
=
uni
.
getStorageSync
(
'visitorUuid'
)
}
if
(
this
.
companyType
==
'1'
)
{
...
...
@@ -371,7 +540,7 @@
}
else
if
(
this
.
companyType
==
'2'
)
{
this
.
companyLogo
=
'../../static/suplogo.png'
;
}
if
(
this
.
isShare
)
{
this
.
businessCradStatic
()
this
.
getShareCard
()
...
...
@@ -384,7 +553,7 @@
setWechatShare
();
},
window
.
location
.
href
);
}
// #endif
},
onUnload
()
{
...
...
@@ -398,32 +567,45 @@
// #endif
},
methods
:
{
previewGroup
(
images
,
current
,
idx
)
{
// let urls = this.ImagesPreviewList[idx]
// console.log('urls', urls);
// return
if
(
!
images
||
images
.
length
===
0
)
return
;
previewImages
(
images
,
current
,
{
indicator
:
'number'
,
loop
:
false
});
},
// previewGroup(type, current) {
// const urls = imageMap[type];
// if (!urls || urls.length === 0) return;
// previewImages(urls, current, { indicator: 'number', loop: false });
// },
// 新增方法:设置真实 meta 并初始化分享
setRealPageMetaAndShare
()
{
const
data
=
{
title
:
`
${
this
.
cardInfo
.
userName
}
|
${
this
.
cardInfo
.
companyInfoList
[
0
].
position
}
-
${
this
.
cardInfo
.
companyInfoList
[
0
].
companyName
}
`
,
desc
:
'AI普惠型新家办领创家庭财事治理蓝海生态'
,
link
:
`
${
shareURL
}
/myPackageA/businessCard/businessCard?userId=
${
this
.
userId
}
&cardId=
${
this
.
cardId
}
&isShareCard=1`
,
imgUrl
:
`
${
shareURL
}
/static/suplogo.png`
};
// #ifdef H5
setRealPageMetaAndShare
()
{
const
data
=
{
title
:
`
${
this
.
cardInfo
.
userName
}
|
${
this
.
cardInfo
.
companyInfoList
[
0
].
position
}
-
${
this
.
cardInfo
.
companyInfoList
[
0
].
companyName
}
`
,
desc
:
'AI普惠型新家办领创家庭财事治理蓝海生态'
,
link
:
`
${
shareURL
}
/myPackageA/businessCard/businessCard?userId=
${
this
.
userId
}
&cardId=
${
this
.
cardId
}
&isShareCard=1`
,
imgUrl
:
`
${
shareURL
}
/static/suplogo.png`
};
// #ifdef H5
// 分享的时候一定要加这段代码,否则ios首次分享会使用系统默认分享
//安卓机型获取当前页面路径
let
url
=
window
.
location
.
href
.
split
(
'#'
)[
0
];
//ios机型获取当前页面路径
let
ua
=
navigator
.
userAgent
.
toLowerCase
();
let
isWeixin
=
ua
.
indexOf
(
'micromessenger'
)
!==
-
1
;
if
(
isWeixin
)
{
let
isiOS
=
/
(
iPhone|iPad|iPod|iOS
)
/i
.
test
(
navigator
.
userAgent
);
//ios终端
if
(
isiOS
&&
window
.
sessionStorage
.
getItem
(
'firstEntryUrl'
))
{
url
=
window
.
sessionStorage
.
getItem
(
'firstEntryUrl'
).
split
(
'#'
)[
0
];
}
if
(
isiOS
&&
window
.
sessionStorage
.
getItem
(
'firstEntryUrl'
))
{
url
=
window
.
sessionStorage
.
getItem
(
'firstEntryUrl'
).
split
(
'#'
)[
0
];
}
}
hshare
(
data
,
url
);
// #endif
},
hshare
(
data
,
url
);
// #endif
},
handleInfo
(
item
)
{
if
(
item
.
key
==
'phone'
)
{
...
...
@@ -455,7 +637,7 @@
this
.
isLogin
=
true
this
.
getCard
()
},
// 分享状态下获取名片信息
getShareCard
()
{
api
.
getShareBusinessCard
(
...
...
@@ -476,24 +658,24 @@
if
(
dataHandling
.
h5RuntimeEnv
()
!==
'miniprogram'
)
{
this
.
setRealPageMetaAndShare
()
}
if
(
dataHandling
.
h5RuntimeEnv
()
==
'wechat-miniprogram'
)
{
if
(
dataHandling
.
h5RuntimeEnv
()
==
'wechat-miniprogram'
)
{
let
shareInfo
=
{
title
:
`
${
this
.
cardInfo
.
userName
}
|
${
this
.
cardInfo
.
companyInfoList
[
0
].
position
}
-
${
this
.
cardInfo
.
companyInfoList
[
0
].
companyName
}
`
,
desc
:
'AI普惠型新家办领创家庭财事治理蓝海生态'
,
link
:
`
${
shareURL
}
/pages/lanch/index?userId=
${
this
.
userId
}
&cardId=
${
this
.
cardId
}
&isShareCard=1&landingPage=businessCard&miniShare=1`
,
imgUrl
:
`
${
shareURL
}
/myPackageA/static/images/logo3.png`
,
//图片
sharePage
:
'businessCard'
,
//分享的哪个页面
userId
:
this
.
userId
,
cardId
:
this
.
cardId
,
commonId
:
this
.
cardId
sharePage
:
'businessCard'
,
//分享的哪个页面
userId
:
this
.
userId
,
cardId
:
this
.
cardId
,
commonId
:
this
.
cardId
}
wx
.
miniProgram
.
postMessage
({
data
:
{
type
:
'share'
,
shareData
:
JSON
.
stringify
(
shareInfo
)
}
})
wx
.
miniProgram
.
postMessage
({
data
:
{
type
:
'share'
,
shareData
:
JSON
.
stringify
(
shareInfo
)
}
})
}
console
.
log
(
'cardInfo'
,
this
.
cardInfo
);
}
else
{
...
...
@@ -524,29 +706,29 @@
this
.
btnList
[
1
].
phoneNumber
=
this
.
cardInfo
.
phone
||
null
this
.
infoList
[
1
].
value
=
this
.
cardInfo
.
email
||
null
this
.
infoList
[
2
].
value
=
this
.
cardInfo
.
address
||
'暂无'
if
(
dataHandling
.
h5RuntimeEnv
()
!==
'miniprogram'
)
{
this
.
setRealPageMetaAndShare
()
}
if
(
dataHandling
.
h5RuntimeEnv
()
==
'wechat-miniprogram'
)
{
if
(
dataHandling
.
h5RuntimeEnv
()
==
'wechat-miniprogram'
)
{
let
shareInfo
=
{
title
:
`
${
this
.
cardInfo
.
userName
}
|
${
this
.
cardInfo
.
companyInfoList
[
0
].
position
}
-
${
this
.
cardInfo
.
companyInfoList
[
0
].
companyName
}
`
,
desc
:
'AI普惠型新家办领创家庭财事治理蓝海生态'
,
link
:
`
${
shareURL
}
/pages/lanch/index?userId=
${
this
.
userId
}
&cardId=
${
this
.
cardId
}
&isShareCard=1&landingPage=businessCard&miniShare=1`
,
imgUrl
:
`
${
shareURL
}
/myPackageA/static/images/logo3.png`
,
//图片
sharePage
:
'businessCard'
,
//分享的哪个页面
userId
:
this
.
userId
,
cardId
:
this
.
cardId
,
commonId
:
this
.
cardId
sharePage
:
'businessCard'
,
//分享的哪个页面
userId
:
this
.
userId
,
cardId
:
this
.
cardId
,
commonId
:
this
.
cardId
}
wx
.
miniProgram
.
postMessage
({
data
:
{
type
:
'share'
,
shareData
:
JSON
.
stringify
(
shareInfo
)
}
})
wx
.
miniProgram
.
postMessage
({
data
:
{
type
:
'share'
,
shareData
:
JSON
.
stringify
(
shareInfo
)
}
})
}
this
.
getCardStatic
()
}
else
{
...
...
@@ -578,10 +760,10 @@
},
// 统计名片查看次数
businessCradStatic
()
{
api
.
statusBusinessCard
({
visitorUuid
:
this
.
visitorUuid
,
cardId
:
this
.
cardId
}).
then
(
res
=>
{
api
.
statusBusinessCard
({
visitorUuid
:
this
.
visitorUuid
,
cardId
:
this
.
cardId
}).
then
(
res
=>
{
if
(
res
[
'success'
])
{
}
else
{
uni
.
showToast
({
title
:
res
[
'message'
],
...
...
@@ -637,25 +819,25 @@
}
// 如果是移动端
this
.
shareTipsFlag
=
true
;
//提示用户点击小程序的右上角胶囊进行分享
if
(
dataHandling
.
h5RuntimeEnv
()
==
'wechat-miniprogram'
)
{
if
(
dataHandling
.
h5RuntimeEnv
()
==
'wechat-miniprogram'
)
{
let
shareInfo
=
{
title
:
`
${
this
.
cardInfo
.
userName
}
|
${
this
.
cardInfo
.
companyInfoList
[
0
].
position
}
-
${
this
.
cardInfo
.
companyInfoList
[
0
].
companyName
}
`
,
desc
:
'AI普惠型新家办领创家庭财事治理蓝海生态'
,
link
:
`
${
shareURL
}
/pages/lanch/index?userId=
${
this
.
userId
}
&cardId=
${
this
.
cardId
}
&isShareCard=1&landingPage=businessCard&miniShare=1`
,
// link: `${shareURL}/myPackageA/businessCard/businessCard?userId=${this.userId}&cardId=${this.cardId}&isShareCard=1`, //分享链接
imgUrl
:
`
${
shareURL
}
/myPackageA/static/images/logo3.png`
,
//图片
sharePage
:
'businessCard'
,
//分享的哪个页面
userId
:
this
.
userId
,
cardId
:
this
.
cardId
,
commonId
:
this
.
userId
sharePage
:
'businessCard'
,
//分享的哪个页面
userId
:
this
.
userId
,
cardId
:
this
.
cardId
,
commonId
:
this
.
userId
}
wx
.
miniProgram
.
postMessage
({
data
:
{
type
:
'share'
,
shareData
:
JSON
.
stringify
(
shareInfo
)
}
wx
.
miniProgram
.
postMessage
({
data
:
{
type
:
'share'
,
shareData
:
JSON
.
stringify
(
shareInfo
)
}
})
})
}
}
},
...
...
myPackageA/myTeam/myTeam.vue
View file @
cc6d6067
...
...
@@ -643,7 +643,7 @@
return
data
.
map
(
item
=>
{
// 创建 remarkName
const
remarkName
=
item
.
name
?
(
item
.
name
.
length
>
3
?
item
.
name
.
substring
(
0
,
3
)
+
'...'
:
item
.
name
)
:
(
item
.
name
.
length
>
5
?
item
.
name
.
substring
(
0
,
5
)
+
'...'
:
item
.
name
)
:
''
;
// 创建新对象,保持原数据不变
...
...
@@ -966,12 +966,12 @@
justify-content
:
space-between
;
margin-top
:
20
rpx
;
.left{
width
:
76
%
;
width
:
100
%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-start
;
.line{
width
:
20
%
;
width
:
18
%
;
display
:
flex
;
justify-content
:
flex-end
;
margin-top
:
-40
rpx
;
...
...
myPackageA/poster/poster.vue
View file @
cc6d6067
...
...
@@ -378,7 +378,7 @@ export default {
height
:
100%
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
align-items
:
flex-start
;
overflow
:
hidden
;
.preview-image
{
...
...
@@ -493,7 +493,7 @@ export default {
height
:
100%
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
align-items
:
flex-start
;
overflow
:
hidden
;
.preview-image
{
...
...
pages/courseDetail/courseDetail.vue
View file @
cc6d6067
...
...
@@ -91,7 +91,10 @@
<view
class=
"tabContent"
>
<!-- 课程介绍 -->
<view
class=
"courseIntroContent"
v-if=
"tabType===1"
style=
"margin-top: 20rpx;"
>
<view
v-html=
"courseInfo.fileIntroduce"
class=
"richTextContent"
></view>
<!--
<view
v-html=
"courseInfo.fileIntroduce"
class=
"richTextContent"
></view>
-->
<image
class=
"imageStyle"
v-for=
"(item,index) in imagesList"
:key=
"index"
style=
"width: 100%"
:src=
"item"
mode=
"widthFix"
@
click=
"previewImage(index)"
>
</image>
</view>
<!-- 服务流程 -->
<view
class=
"courseIntroContent"
v-if=
"tabType===4"
style=
"margin-top: 20rpx;"
>
...
...
@@ -265,6 +268,7 @@
import
loadingIcon
from
'@/components/loading/loading.vue'
;
import
ShareGuide
from
'@/components/ShareGuide/ShareGuide.vue'
;
import
wx
from
'weixin-js-sdk'
import
{
previewImages
}
from
'@/util/previewImage.js'
;
export
default
{
components
:
{
UniShareWx
,
...
...
@@ -357,10 +361,22 @@
isOrderLoading
:
false
,
posterShareTxt
:
'长按图片分享给朋友'
,
orderCodeUrl
:
''
,
posterImgType
:
'sharePoster'
posterImgType
:
'sharePoster'
,
imagesList
:[]
};
},
methods
:
{
previewImage
(
index
)
{
// 过滤掉无效的图片地址(空字符串或非http开头)
const
validUrls
=
this
.
imagesList
.
filter
(
url
=>
url
&&
url
.
trim
()
!==
''
);
if
(
validUrls
.
length
===
0
)
{
uni
.
showToast
({
title
:
'暂无图片'
,
icon
:
'none'
});
return
;
}
// 确保索引有效
const
idx
=
Math
.
min
(
index
,
validUrls
.
length
-
1
);
previewImages
(
validUrls
,
idx
);
},
gotoJoinPartner
()
{
dataHandling
.
pocessTracking
(
'加盟'
,
...
...
@@ -782,6 +798,16 @@
}
})
},
extractImageUrls
(
htmlString
)
{
if
(
!
htmlString
)
return
[];
const
imgRegex
=
/<img
[^
>
]
+src=
[
"'
]([^
"'
]
+
)[
"'
]
/g
;
const
urls
=
[];
let
match
;
while
((
match
=
imgRegex
.
exec
(
htmlString
))
!==
null
)
{
urls
.
push
(
match
[
1
]);
}
return
urls
;
},
// 课程详情页面
courseDetail
()
{
this
.
userId
=
uni
.
getStorageSync
(
'cffp_userId'
)
...
...
@@ -798,6 +824,10 @@
this
.
bannerViewType
=
"2"
;
this
.
getBanner
(
Number
(
this
.
courseInfo
.
filePathOss
));
}
if
(
this
.
courseInfo
.
fileIntroduce
){
this
.
imagesList
=
this
.
extractImageUrls
(
this
.
courseInfo
.
fileIntroduce
)
console
.
log
(
' this.imagesList'
,
this
.
imagesList
);
}
//this.courseInfo.serviceContent = res['data']['data']['filePathOss'];
this
.
lecturerId
=
res
[
'data'
][
'data'
][
'fileLecturerId'
];
// this.lecturerQuery();
...
...
@@ -1501,12 +1531,20 @@
</
script
>
<
style
lang=
"scss"
scoped
>
.imageStyle
{
display
:
block
;
/* 将图像转为块级元素以去除底部空白 */
width
:
100%
;
/* 确保图像宽度适应容器 */
margin-top
:
-1
rpx
;
}
.container
{
width
:
100%
;
height
:
auto
;
box-sizing
:
border-box
;
position
:
relative
;
.generateImageBox
{
position
:
absolute
;
top
:
-100%
;
...
...
pages/personalCenter/detail.vue
View file @
cc6d6067
...
...
@@ -263,6 +263,7 @@
};
const
initPdfAfterPermission
=
()
=>
{
console
.
log
(
'initPdfAfterPermission执行了'
);
loading
.
value
=
true
;
const
filteredTabs
=
filteredCurrentTabs
.
value
;
if
(
currentType
.
value
>=
2
&&
currentType
.
value
<=
4
)
{
...
...
pages/personalCenter/personalCenter.vue
View file @
cc6d6067
...
...
@@ -484,6 +484,9 @@
},
gotoPoster
()
{
if
(
!
uni
.
getStorageSync
(
'loginType'
)
||
uni
.
getStorageSync
(
'loginType'
)
==
'visitor'
)
{
uni
.
redirectTo
({
url
:
'/myPackageA/login/login'
})
uni
.
setStorageSync
(
'loginType'
,
'visitor'
)
uni
.
setStorageSync
(
'islogin'
,
'1'
)
}
...
...
pages/personalCenter/system/settings.vue
View file @
cc6d6067
...
...
@@ -138,6 +138,8 @@
console
.
log
(
e
)
// error
}
console
.
log
(
'退出登录'
);
uni
.
clearStorageSync
();
uni
.
redirectTo
({
url
:
'/myPackageA/login/login'
})
...
...
util/previewImage.js
0 → 100644
View file @
cc6d6067
/**
* 图片预览
* @param {String|Array} images - 图片列表,可以是字符串URL数组,或对象数组(需指定urlKey)
* @param {Number} current - 当前显示图片的索引(从0开始)
* @param {Object} options - 其他配置
* @param {String} options.urlKey - 当images为对象数组时,指定url字段名,默认 'url'
* @param {String} options.indicator - 指示器样式,可选 'default'、'number'、'none'
* @param {Boolean} options.loop - 是否循环播放,默认 false
*/
export
function
previewImages
(
images
,
current
=
0
,
options
=
{})
{
const
{
urlKey
=
'url'
,
indicator
=
'default'
,
loop
=
false
}
=
options
;
// 统一转换为字符串数组
let
urls
=
[];
if
(
Array
.
isArray
(
images
))
{
if
(
typeof
images
[
0
]
===
'string'
)
{
urls
=
images
;
}
else
if
(
typeof
images
[
0
]
===
'object'
)
{
urls
=
images
.
map
(
item
=>
item
[
urlKey
]);
}
}
else
if
(
typeof
images
===
'string'
)
{
urls
=
[
images
];
}
if
(
urls
.
length
===
0
)
{
console
.
warn
(
'预览图片列表为空'
);
return
;
}
// 确保 current 在有效范围
const
index
=
Math
.
min
(
Math
.
max
(
current
,
0
),
urls
.
length
-
1
);
console
.
log
(
'urls'
,
urls
);
uni
.
previewImage
({
urls
,
current
:
index
,
indicator
,
loop
,
// 长按可自定义菜单,但一般使用默认
// 支持 success/fail/complete 回调
});
}
\ 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