Commit a4b6a23a authored by 张九刚's avatar 张九刚

新增用户状态日志记录功能,并优化了个人页面的代码格式和样式

parent a83705bc
......@@ -178,6 +178,15 @@ const sensorPopLogTake = (logObj) => {
sensorPopLog(evt);
};
const sensorUserLogTake = (logObj) => {
if (!logObj) {
return;
}
sensors.track("xcxUserStatus", {
...logObj,
});
};
export default {
init,
sensors,
......@@ -188,4 +197,5 @@ export default {
sensorComponentLogTake,
sensorPopLog,
sensorPopLogTake,
sensorUserLogTake
};
<template>
<view class="person-page">
<image
class="icon-return"
:src="$baseUrl + 'person/icon_return.png'"
mode="aspectFit"
@click="handleReturn"
/>
<image
class="banner_upload"
:src="$baseUrl + 'person/customer.png'"
mode="aspectFit"
:data-log="{
<image class="icon-return" :src="$baseUrl + 'person/icon_return.png'" mode="aspectFit" @click="handleReturn" />
<image class="banner_upload" :src="$baseUrl + 'person/customer.png'" mode="aspectFit" :data-log="{
xcxClick: '我的页面-信息修改页点击',
pageName: '我的页面-信息修改页',
buttonName: '上传背景',
}"
@click="handleUploadBackground"
/>
}" @click="handleUploadBackground" />
<view class="person-header">
<image
class="banner_bg"
:src="formData.backgroundImg || $baseUrl + 'person/banner.png'"
mode="aspectFill"
/>
<image
class="banner_cover"
:src="$baseUrl + 'person/cover_white.png'"
mode="aspectFill"
/>
<image class="banner_bg" :src="formData.backgroundImg || $baseUrl + 'person/banner.png'" mode="aspectFill" />
<image class="banner_cover" :src="$baseUrl + 'person/cover_white.png'" mode="aspectFill" />
</view>
<!-- 头像 -->
<view class="person-avatar">
<view class="person-avatar-box">
<button
class="avatar-wrapper"
open-type="chooseAvatar"
@chooseavatar="onChooseAvatar"
>
<image
class="person-avatar-img"
mode="aspectFill"
:src="formData.babyAvatar || $baseUrl + 'common/default_avatar.png'"
></image>
<button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
<image class="person-avatar-img" mode="aspectFill"
:src="formData.babyAvatar || $baseUrl + 'common/default_avatar.png'"></image>
</button>
</view>
<image
class="avatar-edit"
:src="$baseUrl + 'person/icon_modify.png'"
mode="widthFix"
lazy-load="false"
binderror=""
bindload=""
/>
<image class="avatar-edit" :src="$baseUrl + 'person/icon_modify.png'" mode="widthFix" lazy-load="false"
binderror="" bindload="" />
</view>
<form @submit="onSubmit">
<view class="person-info">
<block
v-for="(item, index) in formItems
<block v-for="(item, index) in formItems
.filter(formItemFilter)
.slice(
0,
formData.babyStage == 2 && pageStatus.formStatus == 2
? 6
: formItems.length
)"
:key="item.name"
>
<view
class="form-row"
:style="{
)" :key="item.name">
<view class="form-row" :style="{
'border-bottom':
pageStatus.formStatus == 0 &&
index == formItems.filter(formItemFilter).length - 1
? 'none'
: '1rpx solid #f2f2f2',
}"
>
}">
<text class="form-label">
{{ getlabelFn(item) }}
<!-- {{ item.label }} -->
<text v-if="item.required" class="required">*</text>
</text>
<!-- 输入框类型 -->
<input
v-if="item.type === 'input'"
class="form-input"
:name="item.name"
:placeholder="item.placeholder"
v-model="formData[item.name]"
:maxlength="item.maxLength"
/>
<input v-if="item.type === 'input'" class="form-input" :name="item.name" :placeholder="item.placeholder"
v-model="formData[item.name]" :maxlength="item.maxLength" />
<!-- 只读展示类型 -->
<view v-else-if="item.type === 'display'" class="form-input-box">
<view class="form-input" style="color: #222">{{
formData[item.name] || item.placeholder
}}</view>
</view>
<view
v-else-if="item.type === 'display-obj'"
class="form-input-box"
>
<view v-else-if="item.type === 'display-obj'" class="form-input-box">
<view class="form-input" style="color: #222">{{
getLabelByValue(item, formData[item.name])
}}</view>
</view>
<!-- 选择器类型 -->
<picker-custom
v-else-if="item.type === 'picker'"
:mode="item.mode"
:range="item.range"
:value="
item.mode === 'date'
<picker-custom v-else-if="item.type === 'picker'" :mode="item.mode" :range="item.range" :value="item.mode === 'date'
? formData[item.name]
: getPickerIndex(item)
"
:onPickerChange="(e) => onPickerChange(e, item.name)"
:onLayerVisibleChange="(e) => (pageStatus.btnStatus = !e)"
:onStatusChange="onDateStatusChange"
>
" :onPickerChange="(e) => onPickerChange(e, item.name)"
:onLayerVisibleChange="(e) => (pageStatus.btnStatus = !e)" :onStatusChange="onDateStatusChange">
<view class="form-input-box">
<view class="form-input">{{
getLabelByValue(item, formData[item.name]) || item.placeholder
}}</view>
<image
class="form-input-icon"
:src="$baseUrl + 'person/icon_arrow_yellow_right.png'"
/>
<image class="form-input-icon" :src="$baseUrl + 'person/icon_arrow_yellow_right.png'" />
</view>
</picker-custom>
<!-- 多选弹窗类型 -->
<view
v-else-if="item.type === 'multi-picker'"
@click="handleMultiPickerOpen(item)"
>
<view v-else-if="item.type === 'multi-picker'" @click="handleMultiPickerOpen(item)">
<view class="form-input-box">
<view class="form-input">
{{
......@@ -151,52 +90,27 @@
item.placeholder
}}
</view>
<image
class="form-input-icon"
:src="$baseUrl + 'person/icon_arrow_yellow_right.png'"
/>
<image class="form-input-icon" :src="$baseUrl + 'person/icon_arrow_yellow_right.png'" />
</view>
</view>
<!-- 单选类型 -->
<radio-group
v-else-if="item.type === 'radio'"
@change="(e) => onRadioChange(e, item.name)"
>
<label
v-for="opt in item.options"
:key="opt.value"
class="form-radio"
>
<radio
:value="opt.value"
:checked="formData[item.name] === opt.value"
/>
<radio-group v-else-if="item.type === 'radio'" @change="(e) => onRadioChange(e, item.name)">
<label v-for="opt in item.options" :key="opt.value" class="form-radio">
<radio :value="opt.value" :checked="formData[item.name] === opt.value" />
{{ opt.label }}
</label>
</radio-group>
</view>
</block>
<view
v-if="formData.babyStage == 2"
class="form-bottom-btn"
@click="handleFormBottomBtn"
>
<view v-if="formData.babyStage == 2" class="form-bottom-btn" @click="handleFormBottomBtn">
<text class="form-bottom-text">
{{ pageStatus.formStatus == 1 ? "收起" : "展开" }}
</text>
<image
v-if="pageStatus.formStatus == 1"
class="form-bottom-icon"
:src="$baseUrl + 'person/icon_arrow_yellow_up.png'"
mode="aspectFit"
/>
<image
v-else
class="form-bottom-icon"
:src="$baseUrl + 'person/icon_arrow_yellow_down.png'"
mode="aspectFit"
/>
<image v-if="pageStatus.formStatus == 1" class="form-bottom-icon"
:src="$baseUrl + 'person/icon_arrow_yellow_up.png'" mode="aspectFit" />
<image v-else class="form-bottom-icon" :src="$baseUrl + 'person/icon_arrow_yellow_down.png'"
mode="aspectFit" />
</view>
</view>
<view class="form-bottom"></view>
......@@ -206,18 +120,11 @@
</button>
</form>
<MultiSelectLayer
v-if="multiPickerStatus && currentMultiPickerName"
v-model="multiPickerStatus"
:title="
formItems.find((i) => i.name === currentMultiPickerName)?.label +
<MultiSelectLayer v-if="multiPickerStatus && currentMultiPickerName" v-model="multiPickerStatus" :title="formItems.find((i) => i.name === currentMultiPickerName)?.label +
'(多选)'
"
:options="formItems.find((i) => i.name === currentMultiPickerName)?.range"
:modelSelected="multiPickerSelected[currentMultiPickerName]"
@confirm="handleMultiPickerConfirm"
@cancel="handleMultiPickerCancel"
/>
" :options="formItems.find((i) => i.name === currentMultiPickerName)?.range"
:modelSelected="multiPickerSelected[currentMultiPickerName]" @confirm="handleMultiPickerConfirm"
@cancel="handleMultiPickerCancel" />
</view>
</template>
......@@ -579,6 +486,13 @@ const onSubmit = async (e) => {
console.log("提交数据", data);
const pregnancyStatus = babyStageMap.find((i) => i.value === formData.value.babyStage)?.label || "";
md.sensorUserLogTake({
memberid: uni.getStorageSync('memberId'),
pregnancyStatus: pregnancyStatus,
})
showLoading();
const res = await updateBabyInfo(data);
......@@ -846,9 +760,11 @@ watch(
<style lang="less" scoped>
@import "@/common.less";
.person-page {
background-color: #f6f8fa;
min-height: 100vh;
.icon-return {
width: 20rpx;
height: 32rpx;
......@@ -870,6 +786,7 @@ watch(
.person-header {
position: relative;
height: 463rpx;
.banner_bg {
width: 100%;
height: 100%;
......@@ -942,6 +859,7 @@ watch(
position: relative;
z-index: 2;
box-sizing: border-box;
.form-row {
display: flex;
align-items: center;
......@@ -958,11 +876,13 @@ watch(
width: 250rpx;
color: #222;
font-size: 28rpx;
.required {
color: #b88a3a;
margin-left: -4rpx;
}
}
.form-input {
flex: 1;
color: #6f6d67;
......@@ -998,6 +918,7 @@ watch(
justify-content: center;
width: 100%;
height: 80rpx;
.form-bottom-text {
font-size: 28rpx;
color: #6f6d67;
......@@ -1015,6 +936,7 @@ watch(
height: 300rpx;
width: 100%;
}
.form-btn {
width: 686rpx;
height: 94rpx;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment