Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
飞
飞鹤小程序
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
FH
飞鹤小程序
Commits
67e3f569
Commit
67e3f569
authored
Aug 27, 2025
by
张九刚
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: copyback
parent
d177b5a6
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
346 additions
and
124 deletions
+346
-124
BabyFeedSwitchPopup.vue
components/BabyFeedSwitchPopup.vue
+48
-48
BabySwitchPopup.vue
components/BabySwitchPopup.vue
+24
-0
BabyTestTipsPopup.vue
components/BabyTestTipsPopup.vue
+18
-1
DatePickerPopup.vue
components/DatePickerPopup.vue
+11
-1
shengzhangQuxianTipsPopup.vue
components/shengzhangQuxianTipsPopup.vue
+18
-1
md.js
md.js
+45
-0
feedingIndex.vue
pages/feedingIndex/feedingIndex.vue
+58
-3
feedingRecord.vue
pages/feedingRecord/feedingRecord.vue
+18
-0
postnatalCheckUp.vue
pages/postnatalCheckUp/postnatalCheckUp.vue
+77
-61
productionDetails.vue
pages/productionDetails/productionDetails.vue
+4
-0
shengzhangTools.vue
pages/shengzhangTools/shengzhangTools.vue
+5
-0
Home.vue
views/Home.vue
+20
-9
No files found.
components/BabyFeedSwitchPopup.vue
View file @
67e3f569
...
...
@@ -3,21 +3,12 @@
<view
class=
"popup-content"
@
click
.
stop
>
<!-- 喂养方式列表 -->
<view
class=
"feed-list"
>
<view
v-for=
"(item, index) in feedOptions"
:key=
"index"
class=
"feed-item"
:class=
"
{ selected: selectedIndex === index }"
@click="selectFeed(index)"
>
<view
v-for=
"(item, index) in feedOptions"
:key=
"index"
class=
"feed-item"
:class=
"
{ selected: selectedIndex === index }" @click="selectFeed(index)">
<!-- 选中背景 -->
<image
v-if=
"selectedIndex === index"
class=
"feed-item-bg"
:src=
"`$
{$baseUrl}shengzhangTool/1001/changeFeed/itemBg.png`"
mode="aspectFit"
/>
<image
v-if=
"selectedIndex === index"
class=
"feed-item-bg"
:src=
"`$
{$baseUrl}shengzhangTool/1001/changeFeed/itemBg.png`" mode="aspectFit" />
<!-- 喂养方式文本 -->
<text
class=
"feed-text"
>
{{
item
.
name
}}
</text>
</view>
...
...
@@ -25,30 +16,21 @@
<!-- 底部按钮 -->
<view
class=
"bottom-buttons"
>
<image
class=
"cancel-btn"
:class=
"
{'cancel-btn-active': isCancelPressed}"
<image
class=
"cancel-btn"
:class=
"
{ 'cancel-btn-active': isCancelPressed }"
:src="`${$baseUrl}shengzhangTool/1001/changeFeed/cancelBtn.png`"
@touchstart="handleCancelTouchStart"
@touchend="handleCancelTouchEnd"
mode="aspectFit"
/>
<image
class=
"ok-btn"
:class=
"
{'ok-btn-active': isOkPressed}"
:src="`${$baseUrl}shengzhangTool/1001/changeFeed/okBtn.png`"
@touchstart="handleOkTouchStart"
@touchend="handleOkTouchEnd"
mode="aspectFit"
/>
@touchstart="handleCancelTouchStart" @touchend="handleCancelTouchEnd" mode="aspectFit" />
<image
class=
"ok-btn"
:class=
"
{ 'ok-btn-active': isOkPressed }"
:src="`${$baseUrl}shengzhangTool/1001/changeFeed/okBtn.png`" @touchstart="handleOkTouchStart"
@touchend="handleOkTouchEnd" mode="aspectFit" />
</view>
</view>
</view>
</
template
>
<
script
setup
>
import
{
ref
,
defineEmits
,
defineProps
,
onMounted
}
from
'vue'
import
{
ref
,
defineEmits
,
defineProps
,
watch
,
onMounted
}
from
'vue'
import
md
from
'../md.js'
const
props
=
defineProps
({
visible
:
{
...
...
@@ -109,12 +91,18 @@ const handleOkTouchStart = () => {
const
handleOkTouchEnd
=
()
=>
{
isOkPressed
.
value
=
false
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"喂养方式选择弹窗"
,
buttonName
:
"确认"
});
const
index
=
selectIndex
.
value
const
selectedFeed
=
feedOptions
.
value
[
index
]
// 发送事件通知主页面
emit
(
'change'
,
selectedFeed
,
index
)
//只能传一个参数
closePopup
()
}
...
...
@@ -127,11 +115,11 @@ const openFeedSelector = () => {
// 处理喂养方式选择变化
const
onFeedChange
=
(
feedOption
,
index
)
=>
{
isLoadingFeed
.
value
=
true
console
.
log
(
'选择了喂养方式:'
,
feedOption
,
index
)
selectedFeedText
.
value
=
feedOption
.
name
currentFeedIndex
.
value
=
index
// 模拟保存数据
setTimeout
(()
=>
{
isLoadingFeed
.
value
=
false
...
...
@@ -139,10 +127,23 @@ const onFeedChange = (feedOption, index) => {
}
const
closePopup
=
()
=>
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"喂养方式选择弹窗"
,
buttonName
:
"取消"
});
emit
(
'update:visible'
,
false
)
}
onMounted
(()
=>
{
watch
(()
=>
props
.
visible
,
(
newVal
)
=>
{
if
(
newVal
)
{
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"喂养方式选择弹窗"
});
}
})
</
script
>
...
...
@@ -173,7 +174,7 @@ onMounted(() => {
overflow-y: auto;
padding-left: 30rpx;
padding-right: 30rpx;
.feed-item {
position: relative;
display: flex;
...
...
@@ -183,18 +184,18 @@ onMounted(() => {
margin-bottom: 20rpx;
border-radius: 16rpx;
background-color: #fff;
&.selected {
background-color: transparent;
}
.feed-item-bg {
position: absolute;
width: 689rpx;
height: 108rpx;
z-index: 1;
}
.feed-text {
position: relative;
z-index: 2;
...
...
@@ -212,22 +213,22 @@ onMounted(() => {
padding-top: 20rpx;
padding-left: 30rpx;
padding-right: 30rpx;
.cancel-btn {
width: 334rpx;
height: 97rpx;
transition: transform 0.1s ease-out;
&.cancel-btn-active {
transform: scale(0.95);
}
}
.ok-btn {
width: 334rpx;
height: 97rpx;
transition: transform 0.1s ease-out;
&.ok-btn-active {
transform: scale(0.95);
}
...
...
@@ -251,23 +252,22 @@ onMounted(() => {
display: flex;
align-items: center;
cursor: pointer; // 添加手型光标
.feeding-value {
font-size: 28rpx;
color: #666;
margin-right: 8rpx;
}
.dropdown-icon {
width: 20rpx;
height: 20rpx;
transition: transform 0.3s ease; // 添加旋转动画
}
// 可选:添加点击反馈效果
&:active {
opacity: 0.7;
}
}
</
style
>
components/BabySwitchPopup.vue
View file @
67e3f569
...
...
@@ -67,6 +67,7 @@
<
script
setup
>
import
{
ref
,
defineEmits
,
defineProps
,
onMounted
}
from
'vue'
import
{
useUserStore
}
from
"@/stores/user"
;
import
md
from
'../md.js'
// const props = defineProps({
// visible: {
...
...
@@ -104,6 +105,12 @@ const handleOkTouchStart = () => {
}
const
handleOkTouchEnd
=
async
()
=>
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"切换宝宝弹窗"
,
buttonName
:
"确认"
});
isOkPressed
.
value
=
false
const
index
=
selectIndex
.
value
;
...
...
@@ -116,11 +123,23 @@ const handleOkTouchEnd = async () => {
}
const
closePopup
=
()
=>
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"切换宝宝弹窗"
,
buttonName
:
"关闭"
});
emit
(
'update:visible'
,
false
)
}
const
selectIndex
=
ref
(
0
)
const
selectBaby
=
(
index
)
=>
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"切换宝宝弹窗"
,
buttonName
:
"宝宝列表"
});
selectIndex
.
value
=
index
;
emit
(
'update:selectedIndex'
,
index
);
}
...
...
@@ -135,6 +154,11 @@ onMounted(() => {
const
selectedIndexInList
=
babyList
.
value
.
findIndex
(
item
=>
item
.
selected
===
true
)
console
.
log
(
'选中宝宝的索引:'
,
selectedIndexInList
)
selectIndex
.
value
=
selectedIndexInList
;
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"切换宝宝弹窗"
});
})
...
...
components/BabyTestTipsPopup.vue
View file @
67e3f569
...
...
@@ -27,7 +27,8 @@
</
template
>
<
script
setup
>
import
{
ref
,
defineEmits
,
defineProps
}
from
'vue'
import
{
ref
,
defineEmits
,
defineProps
,
watch
}
from
'vue'
import
md
from
'../md.js'
const
props
=
defineProps
({
visible
:
{
...
...
@@ -67,11 +68,27 @@ const handleOkTouchStart = () => {
const
handleOkTouchEnd
=
()
=>
{
isOkPressed
.
value
=
false
closePopup
()
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"测量方式提示弹窗"
,
buttonName
:
"我知道了"
});
}
const
closePopup
=
()
=>
{
emit
(
'update:visible'
,
false
)
}
watch
(()
=>
props
.
visible
,
(
newVal
)
=>
{
if
(
newVal
)
{
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"测量方式提示弹窗"
});
}
})
</
script
>
<
style
lang=
"less"
scoped
>
...
...
components/DatePickerPopup.vue
View file @
67e3f569
...
...
@@ -65,7 +65,8 @@
</
template
>
<
script
setup
>
import
{
ref
,
defineEmits
,
defineProps
,
watch
,
computed
}
from
'vue'
import
{
ref
,
defineEmits
,
defineProps
,
watch
,
computed
,
onMounted
}
from
'vue'
import
md
from
'../md.js'
const
props
=
defineProps
({
visible
:
{
...
...
@@ -107,6 +108,9 @@ const yearRange = computed(() => {
return
yearRange
})
onMounted
(()
=>
{
})
// 生成月份范围 (1-12)
const
monthRange
=
computed
(()
=>
{
...
...
@@ -252,6 +256,12 @@ const handleOkTouchEnd = () => {
}
const
closePopup
=
()
=>
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"选择本次测评日期弹窗"
,
buttonName
:
"关闭"
});
// 格式化日期为 YYYY-MM-DD
const
year
=
currentDate
.
value
.
getFullYear
()
const
month
=
String
(
currentDate
.
value
.
getMonth
()
+
1
).
padStart
(
2
,
'0'
)
...
...
components/shengzhangQuxianTipsPopup.vue
View file @
67e3f569
...
...
@@ -25,7 +25,8 @@
</
template
>
<
script
setup
>
import
{
defineProps
,
defineEmits
}
from
'vue'
import
{
defineProps
,
defineEmits
,
watch
}
from
'vue'
import
md
from
'../md.js'
// 定义props
const
props
=
defineProps
({
...
...
@@ -40,8 +41,24 @@ const emit = defineEmits(['close'])
// 关闭弹窗
const
closePopup
=
()
=>
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"生长曲线介绍弹窗"
,
buttonName
:
"我知道了"
});
emit
(
'close'
)
}
watch
(()
=>
props
.
visible
,
(
newVal
)
=>
{
if
(
newVal
)
{
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"生长曲线介绍弹窗"
});
}
})
</
script
>
<
style
lang=
"less"
scoped
>
...
...
md.js
View file @
67e3f569
...
...
@@ -135,6 +135,49 @@ const sensorComponentLogTake = (logObj) => {
sensorComponentLog
(
evt
);
};
const
sensorPopLog
=
(
evt
)
=>
{
const
_dataset
=
evt
.
currentTarget
.
dataset
;
const
logObj
=
_dataset
.
poplog
;
if
(
!
logObj
)
{
return
;
}
const
{
xcxPopExposure
,
xcxPopClick
}
=
logObj
;
let
trackObj
=
{};
for
(
let
key
in
logObj
)
{
trackObj
[
key
]
=
logObj
[
key
];
}
if
(
xcxPopExposure
&&
xcxPopExposure
.
length
>
0
)
{
console
.
warn
(
"-----xcxPopExposure-----"
,
trackObj
);
sensors
.
track
(
"xcxPopExposure"
,
{
...
trackObj
,
});
}
if
(
xcxPopClick
&&
xcxPopClick
.
length
>
0
)
{
console
.
warn
(
"-----xcxPopClick-----"
,
trackObj
);
sensors
.
track
(
"xcxPopClick"
,
{
...
trackObj
,
});
}
};
/**
* 主动通过配置数据触发埋点
* @param {*} evt
*/
const
sensorPopLogTake
=
(
logObj
)
=>
{
if
(
!
logObj
)
{
return
;
}
const
evt
=
{
currentTarget
:
{
dataset
:
{
poplog
:
logObj
,
},
},
};
sensorPopLog
(
evt
);
};
export
default
{
init
,
sensors
,
...
...
@@ -143,4 +186,6 @@ export default {
sensorLogTake
,
sensorComponentLog
,
sensorComponentLogTake
,
sensorPopLog
,
sensorPopLogTake
,
};
pages/feedingIndex/feedingIndex.vue
View file @
67e3f569
...
...
@@ -1885,6 +1885,12 @@ async function completeRecord() {
// 显示成功弹窗
successPopup
.
value
.
open
()
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"添加成功弹窗"
});
...
...
@@ -2406,6 +2412,7 @@ function showAddFoodPopup(categoryName) {
pageName
:
"喂养工具首页"
,
buttonName
:
"辅食添加"
+
categoryName
,
});
// 防连点检查
if
(
foodSelectionState
.
value
.
isAddingFood
)
{
console
.
log
(
'防连点:添加辅食按钮被阻止'
)
...
...
@@ -2439,7 +2446,11 @@ function showAddFoodPopup(categoryName) {
foodSelectionState
.
value
.
newFoodItem
=
''
// 显示弹窗
addFoodPopup
.
value
.
open
()
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"新增辅食弹窗"
,
});
// 立即重置防连点状态(弹窗显示后)
setTimeout
(()
=>
{
foodSelectionState
.
value
.
isAddingFood
=
false
...
...
@@ -2458,6 +2469,12 @@ function toggleCategoryExpansion(categoryName) {
function
cancelAddFood
()
{
addFoodPopup
.
value
.
close
()
foodSelectionState
.
value
.
newFoodItem
=
''
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"新增辅食弹窗"
,
buttonName
:
"取消"
});
}
function
confirmAddFood
()
{
...
...
@@ -2465,6 +2482,12 @@ function confirmAddFood() {
console
.
log
(
'防连点:添加辅食按钮被阻止'
)
return
}
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"新增辅食弹窗"
,
buttonName
:
"添加"
});
foodSelectionState
.
value
.
isAddingFood
=
true
console
.
log
(
'防连点:设置添加辅食状态为true'
)
...
...
@@ -3246,7 +3269,11 @@ async function startPollingRecognitionResult(taskId) {
voiceRecognitionState
.
value
.
voiceDateTime
=
`
${
year
}
-
${
month
}
-
${
day
}
${
hours
}
:
${
minutes
}
:00`
}
voiceRecognitionState
.
value
.
showResultPage
=
true
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"语音识别结果弹窗"
});
// 显示识别成功提示
uni
.
showToast
({
title
:
'语音识别成功'
,
...
...
@@ -3402,7 +3429,12 @@ function formatRecordingDuration(seconds) {
function
reRecognize
()
{
console
.
log
(
'重新识别...'
)
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"语音识别结果弹窗"
,
buttonName
:
"不对,重新识别"
});
// 清理轮询状态
clearPollingInterval
()
...
...
@@ -3429,6 +3461,12 @@ async function completeVoiceRecord() {
if
(
isSubmitting
.
value
)
{
return
}
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"语音识别结果弹窗"
,
buttonName
:
"完成记录"
});
const
detailText
=
voiceRecognitionState
.
value
.
recognizedText
.
trim
()
...
...
@@ -3486,6 +3524,11 @@ async function completeVoiceRecord() {
// 显示成功弹窗
successPopup
.
value
.
open
()
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"添加成功弹窗"
});
}
catch
(
error
)
{
console
.
error
(
'保存语音记录失败:'
,
error
)
// uni.hideLoading()
...
...
@@ -3543,11 +3586,23 @@ async function onSuccessJump() {
},
});
// 关闭弹窗
successPopup
.
value
.
close
()
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"添加成功弹窗"
,
buttonName
:
"关闭"
});
}
function
onSuccessClose
()
{
// 关闭弹窗
successPopup
.
value
.
close
()
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"添加成功弹窗"
,
buttonName
:
"咨询专家"
});
// 跳转至记录页面
uni
.
navigateTo
({
url
:
'/pages/feedingRecord/feedingRecord'
...
...
pages/feedingRecord/feedingRecord.vue
View file @
67e3f569
...
...
@@ -723,9 +723,21 @@ function editRecord(index) {
editingRecord
.
value
=
{
index
,
record
}
showEditPopup
.
value
=
true
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"日历页确认修改内容弹窗"
});
}
function
closeEditPopup
()
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"日历页确认修改内容弹窗"
,
buttonName
:
"取消"
});
showEditPopup
.
value
=
false
editingRecord
.
value
=
null
editForm
.
value
=
{
time
:
''
,
type
:
''
,
content
:
''
}
...
...
@@ -800,6 +812,12 @@ function onEditTypeChange(event) {
}
async
function
saveEditRecord
()
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"喂养记录"
,
popName
:
"日历页确认修改内容弹窗"
,
buttonName
:
"保存修改"
});
if
(
!
editForm
.
value
.
time
||
!
editForm
.
value
.
type
)
{
uni
.
showToast
({
title
:
'请填写完整信息'
,
icon
:
'none'
})
return
...
...
pages/postnatalCheckUp/postnatalCheckUp.vue
View file @
67e3f569
<
template
>
<view>
<view
class=
"postnatal"
>
<!-- 自定义头部 -->
<!-- 自定义头部 -->
<!--
<customize-navigation>
<template
v-slot:navbar-content
>
<view
class=
"page-top"
>
...
...
@@ -11,10 +11,10 @@
<view
class=
"page_title"
>
产检提醒
</view>
</view>
</
template
>
</customize-navigation>
-->
</customize-navigation>
-->
<view
class=
"postnatal-con"
>
<!-- 轮播图 -->
<swiper
class=
"banner-swiper"
:autoplay=
"true"
:circular=
"true"
v-if=
"bannerList.length > 0
"
>
<swiper
class=
"banner-swiper"
:autoplay=
"true"
:circular=
"true"
v-if=
"bannerList.length > 0"
>
<swiper-item
v-for=
"(item, index) in bannerList"
:key=
"index"
>
<image
class=
"banner-img"
:src=
"`${item.img}`"
mode=
"aspectFill"
@
click=
"handleBannerClick(item, index)"
/>
...
...
@@ -46,7 +46,7 @@
</view>
<!-- 产检记录 -->
<scroll-view
class=
"postnatal-con-record"
scroll-y
:scroll-top=
"scrollTop"
>
<!-- <view class="postnatal-con-record"> -->
<!-- <view class="postnatal-con-record"> -->
<view
:class=
"['record-item', `item-${index}`]"
v-for=
"({ id, checkupDate, index, pregnancyWeek, status, examinationItems, type }, i) in homeInfo.checkupList"
@
click=
"onDetails(id, type)"
:key=
"i"
>
...
...
@@ -79,7 +79,7 @@
重点:{{ getProject(examinationItems) }}
</view>
</view>
<!-- </view> -->
<!-- </view> -->
</scroll-view>
</view>
<!-- 新增产检 -->
...
...
@@ -112,9 +112,9 @@
</view>
</view>
</view>
<!-- 提示弹窗 -->
<popup-tip
v-if=
"isTip"
type=
"2"
@
statusChange=
"onBabyChange"
@
close=
"isTip = false"
></popup-tip>
<popup-tip
v-if=
"isTip"
type=
"2"
@
statusChange=
"onBabyChange"
@
close=
"isTip = false"
></popup-tip>
<!-- 使用封装后的日期选择器组件 -->
<DatePicker
v-model:visible=
"visible"
:default-date=
"time"
@
confirm=
"handleDateConfirm"
/>
...
...
@@ -258,7 +258,7 @@ const backHandler = () => {
const
handleBannerClick
=
(
item
,
index
)
=>
{
console
.
log
(
item
)
let
buttonName
=
''
;
switch
(
index
)
{
switch
(
index
)
{
case
0
:
buttonName
=
'第一张焦点图'
;
break
;
...
...
@@ -285,7 +285,7 @@ const handleBannerClick = (item, index) => {
})
}
}
// 新增体检
const
onAdd
=
()
=>
{
...
...
@@ -306,7 +306,14 @@ const onBtn = (type) => {
switch
(
type
)
{
case
0
:
// 如果授权就不弹出提醒
showPicker
.
value
=
isWxNotification
.
value
?
true
:
false
showPicker
.
value
=
isWxNotification
.
value
?
true
:
false
if
(
showPicker
.
value
)
{
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"产检提醒"
,
popName
:
"设置提醒时间弹窗"
});
}
buttonName
=
'提醒'
break
;
...
...
@@ -336,6 +343,12 @@ const onBtn = (type) => {
// 提醒关闭
const
close
=
()
=>
{
showPicker
.
value
=
false
;
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"产检提醒"
,
popName
:
"设置提醒时间弹窗"
,
buttonName
:
"取消"
});
}
// 选择提醒事件
const
handleChange
=
(
e
)
=>
{
...
...
@@ -343,7 +356,7 @@ const handleChange = (e) => {
}
// 确认选择
const
handleConfirm
=
()
=>
{
selectedValue
.
value
=
options
[
pickerValue
.
value
].
id
;
console
.
log
(
selectedValue
.
value
,
homeInfo
.
value
.
wxTemplateId
,
babyId
.
value
)
close
();
...
...
@@ -382,35 +395,35 @@ const handleDateConfirm = (date) => {
}
// 添加计算滚动位置的方法
const
scrollToCurrentWeek
=
async
()
=>
{
// 确保数据已加载
if
(
!
homeInfo
.
value
||
!
homeInfo
.
value
.
gestationalWeeks
||
!
homeInfo
.
value
.
checkupList
)
return
;
// 找到当前孕周对应的产检项
const
currentItem
=
homeInfo
.
value
.
checkupList
.
find
(
item
=>
item
.
pregnancyWeek
==
homeInfo
.
value
.
gestationalWeeks
);
if
(
!
currentItem
)
return
;
// 等待DOM更新
await
nextTick
();
// 创建选择器查询
const
query
=
uni
.
createSelectorQuery
().
in
(
proxy
);
query
.
select
(
`.item-
${
currentItem
.
index
}
`
).
boundingClientRect
();
query
.
select
(
'.postnatal-con-record'
).
boundingClientRect
();
query
.
exec
((
rects
)
=>
{
if
(
!
rects
[
0
]
||
!
rects
[
1
])
return
;
const
[
itemRect
,
containerRect
]
=
rects
;
// 计算元素在容器内的相对位置
const
position
=
itemRect
.
top
-
containerRect
.
top
;
// 设置滚动位置(增加20px的缓冲距离)
scrollTop
.
value
=
position
+
20
;
});
// 确保数据已加载
if
(
!
homeInfo
.
value
||
!
homeInfo
.
value
.
gestationalWeeks
||
!
homeInfo
.
value
.
checkupList
)
return
;
// 找到当前孕周对应的产检项
const
currentItem
=
homeInfo
.
value
.
checkupList
.
find
(
item
=>
item
.
pregnancyWeek
==
homeInfo
.
value
.
gestationalWeeks
);
if
(
!
currentItem
)
return
;
// 等待DOM更新
await
nextTick
();
// 创建选择器查询
const
query
=
uni
.
createSelectorQuery
().
in
(
proxy
);
query
.
select
(
`.item-
${
currentItem
.
index
}
`
).
boundingClientRect
();
query
.
select
(
'.postnatal-con-record'
).
boundingClientRect
();
query
.
exec
((
rects
)
=>
{
if
(
!
rects
[
0
]
||
!
rects
[
1
])
return
;
const
[
itemRect
,
containerRect
]
=
rects
;
// 计算元素在容器内的相对位置
const
position
=
itemRect
.
top
-
containerRect
.
top
;
// 设置滚动位置(增加20px的缓冲距离)
scrollTop
.
value
=
position
+
20
;
});
};
// 保存订阅消息
const
getWxNotificationFn
=
async
(
notificationDate
,
wxTemplateId
,
babyId
)
=>
{
...
...
@@ -464,16 +477,16 @@ const getInfoFn = async () => {
uni
.
setStorageSync
(
'dueDate'
,
data
.
dueDate
)
// 新增:调用滚动方法
scrollToCurrentWeek
()
scrollToCurrentWeek
()
}
else
{
uni
.
showToast
({
title
:
message
,
icon
:
"none"
,
});
}
}
// 获取banner图
...
...
@@ -495,40 +508,40 @@ const getSettingFn = () => {
success
(
res
)
{
// console.log(res.authSetting, '授权信息')
console
.
log
(
res
.
subscriptionsSetting
,
'订阅信息'
)
if
(
res
.
subscriptionsSetting
.
itemSettings
)
{
isWxNotification
.
value
=
false
console
.
log
(
"🚀 ~ success ~ isWxNotification111:"
,
isWxNotification
.
value
)
if
(
res
.
subscriptionsSetting
.
itemSettings
)
{
isWxNotification
.
value
=
false
console
.
log
(
"🚀 ~ success ~ isWxNotification111:"
,
isWxNotification
.
value
)
}
else
{
isWxNotification
.
value
=
true
console
.
log
(
"🚀 ~ success ~ isWxNotification222:"
,
isWxNotification
.
value
)
isWxNotification
.
value
=
true
console
.
log
(
"🚀 ~ success ~ isWxNotification222:"
,
isWxNotification
.
value
)
}
}
})
}
// 提示弹窗回调
const
onBabyChange
=
()
=>
{
const
onBabyChange
=
()
=>
{
publicFn
()
}
// 公共函数
const
publicFn
=
()
=>
{
console
.
log
(
"🚀 ~ onShow ~ userStore:"
,
userStore
.
babyInfo
)
console
.
log
(
"🚀 ~ onShow ~ userStore:"
,
userStore
.
babyInfo
)
const
babyInfo
=
userStore
.
babyInfo
if
(
babyInfo
&&
babyInfo
.
babyStage
==
1
)
{
if
(
babyInfo
&&
babyInfo
.
babyStage
==
1
)
{
isTip
.
value
=
false
babyId
.
value
=
userStore
.
babyInfo
?.
content
?.
id
babyId
.
value
=
userStore
.
babyInfo
?.
content
?.
id
getSettingFn
()
// 获取banner图
postnatalJSONFn
()
// 获取banner图
postnatalJSONFn
()
// 获取信息
getInfoFn
()
}
else
{
}
else
{
isTip
.
value
=
true
}
}
onShow
(
async
()
=>
{
await
userStore
.
loadBabyInfo
()
console
.
log
(
'宝宝信息加载完成:'
,
userStore
.
babyInfo
)
publicFn
()
await
userStore
.
loadBabyInfo
()
console
.
log
(
'宝宝信息加载完成:'
,
userStore
.
babyInfo
)
publicFn
()
})
onMounted
(()
=>
{
...
...
@@ -561,8 +574,9 @@ onMounted(() => {
align-items: center;
margin-top: 50rpx;
font-weight: 500;
flex-shrink: 0;
flex-shrink: 0;
height: 32rpx;
.info-c {
width: 2rpx;
height: 22rpx;
...
...
@@ -582,7 +596,8 @@ onMounted(() => {
display: flex;
justify-content: space-between;
margin-bottom: 30rpx;
flex-shrink: 0;
flex-shrink: 0;
.btn-item {
display: flex;
align-items: center;
...
...
@@ -813,6 +828,7 @@ onMounted(() => {
height: 177rpx;
border-radius: 12rpx;
overflow: hidden;
.banner-img {
width: 100%;
height: 100%;
...
...
pages/productionDetails/productionDetails.vue
View file @
67e3f569
...
...
@@ -459,11 +459,14 @@ const onRemind = () => {
}
// 如果授权就不弹出提醒
showPicker
.
value
=
isWxNotification
.
value
?
true
:
false
}
// 提醒关闭
const
close
=
()
=>
{
showPicker
.
value
=
false
;
}
// 选择提醒事件
...
...
@@ -472,6 +475,7 @@ const handleChange = (e) => {
}
// 确认选择
const
handleConfirm
=
()
=>
{
selectedValue
.
value
=
options
[
pickerValue
.
value
].
id
;
console
.
log
(
selectedValue
.
value
,
infoData
.
value
.
wxTemplateId
,
babyId
.
value
)
close
();
...
...
pages/shengzhangTools/shengzhangTools.vue
View file @
67e3f569
...
...
@@ -380,6 +380,11 @@ const showDatePicker = () => {
});
console
.
log
(
'显示日期选择器'
)
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"生长曲线"
,
popName
:
"选择本次测评日期弹窗"
});
showDatePickerPopup
.
value
=
true
}
...
...
views/Home.vue
View file @
67e3f569
...
...
@@ -274,11 +274,12 @@
<view
id=
"fourthScreen"
class=
"bottomlink"
>
<image
class=
"bottombg"
:src=
"$baseUrl + 'homepage/bottombg.png'"
></image>
<view
class=
"box"
>
<image
class=
"icon"
:id=
"'bottomLink' + index"
v-for=
"(icon, index) in bottomLinkList"
:key=
"index"
:data-log=
"
{
xcxClick: '首页-四屏页面点击',
pageName: '首页-四屏',
buttonName: `${qrNameList[index]}`
}" :data-comlog="{
<image
class=
"icon"
:id=
"'bottomLink' + index"
v-for=
"(icon, index) in bottomLinkList"
:key=
"index"
:data-log=
"
{
xcxClick: '首页-四屏页面点击',
pageName: '首页-四屏',
buttonName: `${qrNameList[index]}`
}" :data-comlog="{
xcxComponentClick: 'true',
xcxComponentExposure: 'true',
pageName: '首页',
...
...
@@ -566,7 +567,7 @@ export default {
md
.
sensorComponentLogTake
({
xcxComponentExposure
:
"true"
,
pageName
:
"首页"
,
componentName
:
"
焦点图
"
,
componentName
:
"
首页banner
"
,
componentContent
:
this
.
swiperList
[
0
]?.
title
||
''
});
...
...
@@ -705,8 +706,7 @@ export default {
jumpLink
(
link
,
videoUrl
,
index
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
if
(
evt
.
currentTarget
.
dataset
.
comlog
)
{
if
(
evt
.
currentTarget
.
dataset
.
comlog
)
{
md
.
sensorComponentLog
(
evt
);
}
}
...
...
@@ -890,7 +890,7 @@ export default {
md
.
sensorComponentLogTake
({
xcxComponentExposure
:
"true"
,
pageName
:
"首页"
,
componentName
:
"
焦点图
"
,
componentName
:
"
首页banner
"
,
componentContent
:
this
.
swiperList
[
e
.
detail
.
current
].
title
});
},
...
...
@@ -1003,6 +1003,12 @@ export default {
},
imagePopupJump
()
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"首页"
,
popName
:
this
.
popupImageObj
.
title
||
"北纬47°鲜活溯源之旅"
,
buttonName
:
this
.
popupImageObj
.
btnName
||
"立即寻宝"
});
jump
({
type
:
this
.
popupImageObj
.
jumpType
,
url
:
this
.
popupImageObj
.
jumpUrl
,
...
...
@@ -1010,6 +1016,11 @@ export default {
});
},
showImagePopup
()
{
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"首页"
,
popName
:
this
.
popupImageObj
.
title
||
"北纬47°鲜活溯源之旅"
});
this
.
$refs
.
imagePopup
.
open
(
'center'
);
},
closePop1
()
{
...
...
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