Commit 142df6e6 authored by 王炽's avatar 王炽

Merge branch 'dev' into 20250528-dev-king

parents 01721948 9e418629
No preview for this file type
import requestModule from './request.js';
const {
api
} = requestModule;
export const fetchBrandJSON = () => api.get('/c/front/content',{type:'brand'});
\ No newline at end of file
import requestModule from './request.js';
const {
api
} = requestModule;
/**
* 获取首页信息
* @returns
*/
export const fetchHomeInfo = () => api.get('/c/user/index');
export const fetchHomeJSON = () => api.get('/c/front/content',{type:'home'});
\ No newline at end of file
import requestModule from './request.js';
const {
api
} = requestModule;
/**
* 获取历史搜索
* @returns
*/
export const historySearch = () => api.get('/c/mini/historySearch');
/**
* 清空历史搜索
* @returns
*/
export const historyClear = () => api.get('/c/mini/historyClear');
/**
* 搜索
*/
export const search = (data) => api.get('/c/mini/search',data);
\ No newline at end of file
......@@ -45,3 +45,5 @@ export const fetchMemberInfo = () => api.get('/c/user/memberInfo');
* @returns
*/
export const updateBabyInfo = (data) => api.post('/c/user/saveBaby', data);
export const fetchUserJSON = () => api.get('/c/front/content',{type:'my'});
\ No newline at end of file
export const PRIVACY_URL = "https://secret.feihe.com/secret.html";
export const MEMBER_URL = "https://secret.feihe.com/index.html";
export const WHEEL_OPTIONS_YL = [
{ label: "1月龄", desc: "宝宝开始对外界产生兴趣,会追视物体" },
{ label: "2月龄", desc: "能发出咿咿呀呀的声音,会对妈妈微笑" },
{ label: "3月龄", desc: "抬头能力增强,喜欢玩自己的小手" },
{ label: "4月龄", desc: "会翻身了,对周围事物充满好奇" },
{ label: "5月龄", desc: "手眼协调能力提升,喜欢抓取玩具" },
{ label: "6月龄", desc: "可以独自坐立,开始尝试固体食物" },
{ label: "7月龄", desc: "会爬行了,语言能力逐渐发展" },
{ label: "8月龄", desc: "能扶物站立,认知能力显著提升" },
{ label: "9月龄", desc: "开始学步,能说简单的词语" },
{ label: "10月龄", desc: "独立行走能力增强,喜欢模仿大人" },
{ label: "11月龄", desc: "语言理解能力提高,会简单互动" },
{ label: "12月龄", desc: "基本能独立行走,表达欲望增强" },
{ label: "13月龄", desc: "动作更加协调,喜欢探索新事物" },
{ label: "14月龄", desc: "语言表达更丰富,独立意识增强" },
{ label: "15月龄", desc: "手部精细动作发展,创造力萌芽" },
{ label: "16月龄", desc: "记忆力提升,开始学习分类概念" },
{ label: "17月龄", desc: "想象力丰富,喜欢角色扮演游戏" },
{ label: "18月龄", desc: "语言交流更流畅,社交能力发展" },
{ label: "19月龄", desc: "运动技能全面发展,好奇心旺盛" },
{ label: "20月龄", desc: "逻辑思维初步形成,会简单推理" },
{ label: "21月龄", desc: "情感表达更丰富,记忆力增强" },
{ label: "22月龄", desc: "独立性增强,生活技能提升" },
{ label: "23月龄", desc: "语言组织能力提高,喜欢提问" },
{ label: "24月龄", desc: "社交圈子扩大,懂得分享" },
{ label: "25月龄", desc: "创造性思维发展,喜欢音乐" },
{ label: "26月龄", desc: "注意力更集中,会完成简单任务" },
{ label: "27月龄", desc: "空间认知能力提升,喜欢拼图" },
{ label: "28月龄", desc: "语言表达更准确,理解能力增强" },
{ label: "29月龄", desc: "自我意识增强,情绪管理提升" },
{ label: "30月龄", desc: "逻辑思维更成熟,会简单计数" },
{ label: "31月龄", desc: "艺术创造力发展,喜欢绘画" },
{ label: "32月龄", desc: "记忆力显著提升,会讲简单故事" },
{ label: "33月龄", desc: "运动协调性好,喜欢户外活动" },
{ label: "34月龄", desc: "社交技能成熟,懂得合作" },
{ label: "35月龄", desc: "思维更加灵活,解决问题能力增强" },
{ label: "36月龄", desc: "全面发展,准备进入幼儿园阶段" },
];
export const WHEEL_OPTIONS_YZ = [
{ label: "孕1周", desc: "胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化" },
{ label: "孕2周", desc: "胎盘开始形成,为胎儿提供营养" },
{ label: "孕3周", desc: "胎儿心脏开始跳动,神经系统发育" },
{ label: "孕4周", desc: "胎儿大小如花生,开始形成四肢" },
{ label: "孕5周", desc: "胎儿面部开始发育,可见眼睛雏形" },
{ label: "孕6周", desc: "胎儿开始运动,脊椎继续发育" },
{ label: "孕7周", desc: "胎儿手指脚趾形成,大脑发育加快" },
{ label: "孕8周", desc: "胎儿所有器官雏形完成,开始生长" },
{ label: "孕9周", desc: "胎儿开始吞咽羊水,肌肉发育" },
{ label: "孕10周", desc: "胎儿指甲开始生长,性别特征显现" },
{ label: "孕11周", desc: "胎儿可以做出简单动作,头部变圆" },
{ label: "孕12周", desc: "胎儿开始产生尿液,骨骼继续钙化" },
{ label: "孕13周", desc: "胎儿vocal cords形成,可发声" },
{ label: "孕14周", desc: "胎儿开始产生胎动,母体可感知" },
{ label: "孕15周", desc: "胎儿皮下脂肪开始形成,体型增大" },
{ label: "孕16周", desc: "胎儿听力开始发育,对声音敏感" },
{ label: "孕17周", desc: "胎儿免疫系统开始发育,产生抗体" },
{ label: "孕18周", desc: "胎儿睡眠周期形成,活动规律" },
{ label: "孕19周", desc: "胎儿肺部发育,为呼吸做准备" },
{ label: "孕20周", desc: "胎儿听力继续发育,对外界声音反应" },
{ label: "孕21周", desc: "胎儿眉毛睫毛生长,面部特征明显" },
{ label: "孕22周", desc: "胎儿皮肤变厚,开始长出胎毛" },
{ label: "孕23周", desc: "胎儿体重快速增长,运动更频繁" },
{ label: "孕24周", desc: "胎儿肺部继续发育,产生肺表面活性物质" },
{ label: "孕25周", desc: "胎儿脂肪积累加快,体型继续增大" },
{ label: "孕26周", desc: "胎儿眼睛可以睁开,对光有反应" },
{ label: "孕27周", desc: "胎儿大脑快速发育,神经系统成熟" },
{ label: "孕28周", desc: "胎儿各器官功能逐渐完善" },
{ label: "孕29周", desc: "胎儿骨骼继续钙化,头部下降" },
{ label: "孕30周", desc: "胎儿体重持续增加,活动空间减少" },
{ label: "孕31周", desc: "胎儿消化系统发育成熟,可消化羊水" },
{ label: "孕32周", desc: "胎儿皮下脂肪继续积累,体温调节能力增强" },
{ label: "孕33周", desc: "胎儿免疫系统继续发育,获得母体抗体" },
{ label: "孕34周", desc: "胎儿肺部发育接近成熟,准备独立呼吸" },
{ label: "孕35周", desc: "胎儿体重快速增加,为出生做准备" },
{ label: "孕36周", desc: "胎儿头部继续下降,为分娩做准备" },
{ label: "孕37周", desc: "胎儿各器官发育完善,可以安全出生" },
{ label: "孕38周", desc: "胎儿继续增重,准备出生" },
{ label: "孕39周", desc: "胎儿位置固定,随时可能出生" },
{ label: "孕40周", desc: "胎儿发育完全成熟,即将出生" },
];
......@@ -85,6 +85,9 @@ function onAdd() {
&:nth-child(3) {
border-bottom: none;
}
text {
white-space: nowrap;
}
}
.selected-icon {
width: 12rpx;
......
......@@ -79,11 +79,11 @@ const props = defineProps({
default: "custom", // 'date' | 'custom'
},
range: {
type: Array,
type: [Array, Object],
default: () => [],
},
value: {
type: [Number, Array],
type: [Number, Array, String],
default: 0,
},
onPickerChange: {
......@@ -195,8 +195,6 @@ const columns = computed(() => {
const defaultValue = computed(() => {
if (props.mode === "date") {
console.log("defaultValue", props.value);
// 1. value为索引数组
if (Array.isArray(props.value) && props.value.length === 3) {
return props.value;
......
......@@ -19,8 +19,11 @@
</template>
<script setup>
import { ref, getCurrentInstance,onMounted } from "vue";
import {useUserStore} from '@/stores/user.js';
import { ref, getCurrentInstance, onMounted, computed } from "vue";
import { useUserStore } from "@/stores/user.js";
import { useGlobalStore } from "@/stores/global.js";
const globalStore = useGlobalStore();
const userStore = useUserStore();
const { proxy } = getCurrentInstance();
......@@ -49,29 +52,22 @@ const tabList = ref([
},
]);
const props = defineProps({
curTabIndex: {
type: Number,
default: 0,
},
});
const emit = defineEmits(["tabClick"]);
const currentIndex = ref(props.curTabIndex);
const currentIndex = computed(() => globalStore.curTabIndex);
const handleTabClick = (index, item) => {
currentIndex.value = index;
globalStore.setCurTabIndex(index);
emit("tabClick", { index, item });
};
onMounted(() => {
userStore.wxAutoLogin();
})
userStore.wxAutoLogin();
});
</script>
<style lang="less" scoped>
@import '@/common.less';
@import "@/common.less";
.tab-bar {
position: fixed;
......
This diff is collapsed.
This diff is collapsed.
export const myObj = {
tool: [
[
{
bgUrl: "my/literature.png",
title: "育儿百科",
desc: "",
link: {
type: 1,
url: "/pages/library/ContentLibrary",
extra: {},
},
},
{
bgUrl: "my/suyuan.png",
title: "产品溯源",
desc: "",
link: {
type: 3,
url: "https://wic.feihe.com",
extra: {},
},
},
{
bgUrl: "my/book.png",
title: "奶娃宝典",
desc: "",
link: {
type: 3,
url: "https://mom.feihe.com/babyWikipedia",
extra: {},
},
},
{
bgUrl: "my/doctor.png",
title: "医生问诊",
desc: "",
link: {
type: 2,
url: "/pages/partner/redirect",
extra: {},
},
},
{
bgUrl: "my/babytest.png",
title: "宝宝体质测试",
desc: "",
link: {
type: 3,
url: "https://www.baidu.com",
extra: {},
},
},
],
],
contentCfg: {
contentLikeOptions: [
"奶粉选择",
"奶粉成分",
"奶粉冲泡",
"宝宝奶量",
"生长发育",
"常见疾病",
"体检疫苗",
"饮食营养补充",
"辅食营养",
"亲子关系",
"早教游戏",
],
productLikeOptions: [
"飞鹤星飞帆",
"星飞帆卓睿",
"星飞帆卓耀",
"星飞帆卓初",
"星飞帆臻稚卓蓓",
"星飞帆淳芮有机",
],
specialAttentionOptions: ["过敏", "长肉", "肠道", "消化", "脑发育"],
channelOptions: ["电商(京东/天猫)", "母婴店"],
},
wheelOptionsYL: [
{ label: "1月龄", desc: "宝宝开始对外界产生兴趣,会追视物体" },
{ label: "2月龄", desc: "能发出咿咿呀呀的声音,会对妈妈微笑" },
{ label: "3月龄", desc: "抬头能力增强,喜欢玩自己的小手" },
{ label: "4月龄", desc: "会翻身了,对周围事物充满好奇" },
{ label: "5月龄", desc: "手眼协调能力提升,喜欢抓取玩具" },
{ label: "6月龄", desc: "可以独自坐立,开始尝试固体食物" },
{ label: "7月龄", desc: "会爬行了,语言能力逐渐发展" },
{ label: "8月龄", desc: "能扶物站立,认知能力显著提升" },
{ label: "9月龄", desc: "开始学步,能说简单的词语" },
{ label: "10月龄", desc: "独立行走能力增强,喜欢模仿大人" },
{ label: "11月龄", desc: "语言理解能力提高,会简单互动" },
{ label: "12月龄", desc: "基本能独立行走,表达欲望增强" },
{ label: "13月龄", desc: "动作更加协调,喜欢探索新事物" },
{ label: "14月龄", desc: "语言表达更丰富,独立意识增强" },
{ label: "15月龄", desc: "手部精细动作发展,创造力萌芽" },
{ label: "16月龄", desc: "记忆力提升,开始学习分类概念" },
{ label: "17月龄", desc: "想象力丰富,喜欢角色扮演游戏" },
{ label: "18月龄", desc: "语言交流更流畅,社交能力发展" },
{ label: "19月龄", desc: "运动技能全面发展,好奇心旺盛" },
{ label: "20月龄", desc: "逻辑思维初步形成,会简单推理" },
{ label: "21月龄", desc: "情感表达更丰富,记忆力增强" },
{ label: "22月龄", desc: "独立性增强,生活技能提升" },
{ label: "23月龄", desc: "语言组织能力提高,喜欢提问" },
{ label: "24月龄", desc: "社交圈子扩大,懂得分享" },
{ label: "25月龄", desc: "创造性思维发展,喜欢音乐" },
{ label: "26月龄", desc: "注意力更集中,会完成简单任务" },
{ label: "27月龄", desc: "空间认知能力提升,喜欢拼图" },
{ label: "28月龄", desc: "语言表达更准确,理解能力增强" },
{ label: "29月龄", desc: "自我意识增强,情绪管理提升" },
{ label: "30月龄", desc: "逻辑思维更成熟,会简单计数" },
{ label: "31月龄", desc: "艺术创造力发展,喜欢绘画" },
{ label: "32月龄", desc: "记忆力显著提升,会讲简单故事" },
{ label: "33月龄", desc: "运动协调性好,喜欢户外活动" },
{ label: "34月龄", desc: "社交技能成熟,懂得合作" },
{ label: "35月龄", desc: "思维更加灵活,解决问题能力增强" },
{ label: "36月龄", desc: "全面发展,准备进入幼儿园阶段" },
],
wheelOptionsYZ: [
{
label: "孕1周",
desc: "胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化,胚胎开始着床,激素水平发生变化",
},
{ label: "孕2周", desc: "胎盘开始形成,为胎儿提供营养" },
{ label: "孕3周", desc: "胎儿心脏开始跳动,神经系统发育" },
{ label: "孕4周", desc: "胎儿大小如花生,开始形成四肢" },
{ label: "孕5周", desc: "胎儿面部开始发育,可见眼睛雏形" },
{ label: "孕6周", desc: "胎儿开始运动,脊椎继续发育" },
{ label: "孕7周", desc: "胎儿手指脚趾形成,大脑发育加快" },
{ label: "孕8周", desc: "胎儿所有器官雏形完成,开始生长" },
{ label: "孕9周", desc: "胎儿开始吞咽羊水,肌肉发育" },
{ label: "孕10周", desc: "胎儿指甲开始生长,性别特征显现" },
{ label: "孕11周", desc: "胎儿可以做出简单动作,头部变圆" },
{ label: "孕12周", desc: "胎儿开始产生尿液,骨骼继续钙化" },
{ label: "孕13周", desc: "胎儿vocal cords形成,可发声" },
{ label: "孕14周", desc: "胎儿开始产生胎动,母体可感知" },
{ label: "孕15周", desc: "胎儿皮下脂肪开始形成,体型增大" },
{ label: "孕16周", desc: "胎儿听力开始发育,对声音敏感" },
{ label: "孕17周", desc: "胎儿免疫系统开始发育,产生抗体" },
{ label: "孕18周", desc: "胎儿睡眠周期形成,活动规律" },
{ label: "孕19周", desc: "胎儿肺部发育,为呼吸做准备" },
{ label: "孕20周", desc: "胎儿听力继续发育,对外界声音反应" },
{ label: "孕21周", desc: "胎儿眉毛睫毛生长,面部特征明显" },
{ label: "孕22周", desc: "胎儿皮肤变厚,开始长出胎毛" },
{ label: "孕23周", desc: "胎儿体重快速增长,运动更频繁" },
{ label: "孕24周", desc: "胎儿肺部继续发育,产生肺表面活性物质" },
{ label: "孕25周", desc: "胎儿脂肪积累加快,体型继续增大" },
{ label: "孕26周", desc: "胎儿眼睛可以睁开,对光有反应" },
{ label: "孕27周", desc: "胎儿大脑快速发育,神经系统成熟" },
{ label: "孕28周", desc: "胎儿各器官功能逐渐完善" },
{ label: "孕29周", desc: "胎儿骨骼继续钙化,头部下降" },
{ label: "孕30周", desc: "胎儿体重持续增加,活动空间减少" },
{ label: "孕31周", desc: "胎儿消化系统发育成熟,可消化羊水" },
{ label: "孕32周", desc: "胎儿皮下脂肪继续积累,体温调节能力增强" },
{ label: "孕33周", desc: "胎儿免疫系统继续发育,获得母体抗体" },
{ label: "孕34周", desc: "胎儿肺部发育接近成熟,准备独立呼吸" },
{ label: "孕35周", desc: "胎儿体重快速增加,为出生做准备" },
{ label: "孕36周", desc: "胎儿头部继续下降,为分娩做准备" },
{ label: "孕37周", desc: "胎儿各器官发育完善,可以安全出生" },
{ label: "孕38周", desc: "胎儿继续增重,准备出生" },
{ label: "孕39周", desc: "胎儿位置固定,随时可能出生" },
{ label: "孕40周", desc: "胎儿发育完全成熟,即将出生" },
],
};
This diff is collapsed.
This diff is collapsed.
<template>
<view class="container">
<Home v-if="curTabIndex == 0"></Home>
<Brand v-if="curTabIndex == 1"></Brand>
<Integral v-if="curTabIndex == 2"></Integral>
<My v-if="curTabIndex == 3"></My>
<TabBar :curTabIndex="curTabIndex" @tabClick="handleTabClick" />
</view>
<view class="container">
<Home v-if="globalStore.curTabIndex == 0" />
<Brand v-if="globalStore.curTabIndex == 1" />
<Integral v-if="globalStore.curTabIndex == 2" />
<My v-if="globalStore.curTabIndex == 3" />
<TabBar :curTabIndex="globalStore.curTabIndex" @tabClick="handleTabClick" />
</view>
</template>
<script>
import TabBar from '@/components/TabBar.vue'
import Home from '@/views/Home.vue';
import Brand from '@/views/Brand.vue';
import Integral from '@/views/Integral.vue';
import My from '@/views/My.vue';
<script setup>
import { ref, getCurrentInstance } from "vue";
import { onLoad, onShareAppMessage, onShareTimeline } from "@dcloudio/uni-app";
import TabBar from "@/components/TabBar.vue";
import Home from "@/views/Home.vue";
import Brand from "@/views/Brand.vue";
import Integral from "@/views/Integral.vue";
import My from "@/views/My.vue";
import { useGlobalStore } from "@/stores/global.js";
export default {
data() {
return {
curTabIndex: 0,
};
},
onLoad() {},
methods: {
handleTabClick({
index,
item
}) {
console.log('Tab clicked:', index, item)
// 这里可以根据index或item进行相应的页面跳转或其他操作
this.curTabIndex = index
}
},
components: {
TabBar,
Home,
Brand,
Integral,
My
}
};
const globalStore = useGlobalStore();
const { proxy } = getCurrentInstance();
const $baseUrl = proxy.$baseUrl;
const shareOptions = {
0: {
title: "8000万中国妈妈信赖的育儿品牌",
path: "/pages/index/index?pageType=home",
imageUrl: $baseUrl + "share/share_home.png",
},
1: {
title: "飞鹤提供家庭营养一站式解决方案",
path: "/pages/index/index?pageType=brand",
imageUrl: $baseUrl + "share/share_brand.png",
},
2: {
title: "超凡吸收!更多妈妈推荐的奶粉",
path: "/pages/index/index?pageType=integral",
imageUrl: $baseUrl + "share/share_integral.png",
},
};
function handleTabClick({ index }) {
globalStore.setCurTabIndex(index);
}
onLoad((options) => {
if (options.pageType) {
switch (options.pageType) {
case "home":
globalStore.setCurTabIndex(0);
break;
case "brand":
globalStore.setCurTabIndex(1);
break;
case "integral":
globalStore.setCurTabIndex(2);
break;
case "my":
globalStore.setCurTabIndex(3);
break;
}
}
});
onShareAppMessage(() => {
const pageType = globalStore.curTabIndex;
return shareOptions[pageType] || shareOptions[0];
});
onShareTimeline(() => {
const pageType = globalStore.curTabIndex;
return shareOptions[pageType] || shareOptions[0];
});
</script>
<style lang="scss" scoped>
.container {
min-height: 100vh;
background-color: #f5f5f5;
.container {
min-height: 100vh;
background-color: #f5f5f5;
.content {
padding-bottom: 100rpx; // 为底部TabBar留出空间
}
}
.content {
padding-bottom: 100rpx; // 为底部TabBar留出空间
}
}
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
\ No newline at end of file
......@@ -37,6 +37,7 @@
>
<image
class="person-avatar-img"
mode="aspectFill"
:src="formData.babyAvatar || $baseUrl + 'common/default_avatar.png'"
></image>
</button>
......@@ -45,7 +46,7 @@
<image
class="avatar-edit"
:src="$baseUrl + 'person/icon_modify.png'"
mode="aspectFit|aspectFill|widthFix"
mode="widthFix"
lazy-load="false"
binderror=""
bindload=""
......@@ -126,8 +127,10 @@
<view class="form-input-box">
<view class="form-input">
{{
(formData[item.name] &&
formData[item.name].split(",").join("、")) ||
(formData[item.name] &&
(formData[item.name].split(",").join("、").length > 11
? formData[item.name].split(",").join("、").slice(0, 11) + "..."
: formData[item.name].split(",").join("、"))) ||
item.placeholder
}}
</view>
......@@ -292,15 +295,16 @@ watch(
);
const pageCfgStore = usePageCfgStore();
// 直接取store中的配置项(非响应式),后续store变化不会自动更新
const contentLikeOptions = pageCfgStore.conetntCfg.contentLikeOptions;
const productLikeOptions = pageCfgStore.conetntCfg.productLikeOptions;
const specialAttentionOptions = pageCfgStore.conetntCfg.specialAttentionOptions;
const channelOptions = pageCfgStore.conetntCfg.channelOptions;
console.log("contentLikeOptions", contentLikeOptions);
// 内容偏好选项
const contentLikeOptions = ref([]);
// 产品偏好选项
const productLikeOptions = ref([]);
// 特别关注选项
const specialAttentionOptions = ref([]);
// 购买渠道选项
const channelOptions = ref([]);
// 表单项配置
const formItems = [
{
label: "当前状态",
......@@ -377,7 +381,7 @@ const formItems = [
required: false,
placeholder: "未选择",
type: "multi-picker",
range: contentLikeOptions,
range: [],
mode: "custom",
},
{
......@@ -386,7 +390,7 @@ const formItems = [
required: false,
placeholder: "未选择",
type: "multi-picker",
range: productLikeOptions,
range: [],
mode: "custom",
},
{
......@@ -395,7 +399,7 @@ const formItems = [
required: false,
placeholder: "未选择",
type: "multi-picker",
range: specialAttentionOptions,
range: [],
mode: "custom",
},
{
......@@ -404,7 +408,7 @@ const formItems = [
required: false,
placeholder: "未选择",
type: "picker",
range: channelOptions,
range: [],
mode: "custom",
},
];
......@@ -446,6 +450,31 @@ const getPickerIndex = (item) => {
const onPickerChange = (e, name) => {
const item = formItems.find((i) => i.name === name);
if (name === "babyStage") {
if (
pageType.value === "edit" &&
babyStageMap[e].value < formData.value[name]
) {
uni.showToast({
title: "不能选择更早的阶段",
icon: "none",
});
return;
}
// 当阶段变化时清空相关表单项
if (formData.value[name] !== babyStageMap[e].value) {
formData.value.babyBirthday = "";
formData.value.dueDate = "";
formData.value.babyType = "";
formData.value.babyGender = "";
formData.value.feedingType = "";
formData.value.contentPreference = "";
formData.value.productPreference = "";
formData.value.followInfo = "";
formData.value.purchaseChannel = "";
formData.value.gestationalWeeks = "";
}
formData.value[name] = babyStageMap[e].value;
return;
}
......@@ -576,11 +605,11 @@ const handleUploadBackground = async (e) => {
sizeType: ["original", "compressed"],
sourceType: ["album", "camera"],
success: async (res) => {
showLoading();
const tempFilePath = res.tempFilePaths[0];
const fs = uni.getFileSystemManager();
const base64 =
"data:image/jpeg;base64," + fs.readFileSync(tempFilePath, "base64");
showLoading();
const uploadRes = await uploadImage(base64);
......@@ -613,10 +642,6 @@ const getLabelByValue = (item, value) => {
}
return value;
};
const getValueByLabel = (map, label) => {
const found = map.find((i) => i.label === label);
return found ? found.value : "";
};
const multiPickerStatus = ref(false); // 控制弹窗显示
const currentMultiPickerName = ref(""); // 当前弹窗对应的item.name
......@@ -643,6 +668,32 @@ function handleMultiPickerCancel() {
currentMultiPickerName.value = "";
}
const initData = () => {
const contentCfg = JSON.parse(JSON.stringify(pageCfgStore.contentCfg));
contentLikeOptions.value = contentCfg.contentLikeOptions;
productLikeOptions.value = contentCfg.productLikeOptions;
specialAttentionOptions.value = contentCfg.specialAttentionOptions;
channelOptions.value = contentCfg.channelOptions;
// 更新表单项的选项数据
formItems.forEach((item) => {
if (item.name === "contentPreference") {
item.range = contentLikeOptions.value;
} else if (item.name === "productPreference") {
item.range = productLikeOptions.value;
} else if (item.name === "followInfo") {
item.range = specialAttentionOptions.value;
} else if (item.name === "purchaseChannel") {
item.range = channelOptions.value;
}
});
};
onMounted(() => {
initData();
});
onLoad((options) => {
pageType.value = options.type || "add";
babyId.value = options.id || "";
......@@ -779,8 +830,8 @@ watch(
}
.person-avatar-img {
width: 126rpx;
height: 126rpx;
width: 135rpx;
height: 135rpx;
display: block;
}
}
......
<template>
<view class="container">
<image mode="widthFix" class="productimg" :src="$baseUrl + 'brandpage/products/' + productId + '.jpg'"></image>
<image :key="index" v-for="(item,index) in imgList" mode="widthFix" class="productimg" :src="item.imgUrl"></image>
<view class="btnbox">
<image @tap="buyHandler" class="btnbuy" :src="$baseUrl + 'brandpage/btnbuy.png'"></image>
<button class="btnshare" open-type="share" style="background: none; border: none; padding: 0;">
......@@ -14,21 +14,46 @@
export default {
data() {
return {
productId: ''
productId: '',
imgLength:0,
imgList:[],
productId:'',
skuId:'',
contentImg:'',
contentImgLen:'',
shareTitle:'',
shareImg:''
}
},
onLoad(options) {
// options 就是跳转时传递的参数对象
console.log('页面参数:', options);
this.productId = options.id;
const {productId,skuId,contentImg,contentImgLen,shareTitle,shareImg} = options;
this.productId = productId;
this.skuId = skuId;
this.contentImg = contentImg;
this.contentImgLen = contentImgLen;
this.shareTitle = shareTitle;
this.shareImg = this.$baseUrl + shareImg;
console.log("this.shareImg:",this.shareImg);
this.imgList = Array.from({ length: this.contentImgLen }, (_, index) => {
return {
imgUrl: this.$baseUrl + 'brandpage/products/' + contentImg.split('-')[0] + '/'
+ contentImg+'/product_'+contentImg.replace('-','_')+'_'+index + '.jpg'
}
});
console.log(this.imgList);
},
methods: {
buyHandler() {
const _path = `/subPackages/shopMainProcess/product/index?productId=${this.productId}&skuId=${this.skuId}&entrySource=xmh_wechatmp_brand_profamily`
uni.navigateToMiniProgram({
appId: 'wx1234567890abcdef',
path: 'pages/index/index',
envVersion: 'release',
appId: 'wx4205ec55b793245e',
path: _path,
success(res) {
console.log('跳转成功', res)
},
......@@ -37,15 +62,13 @@ export default {
}
})
},
shareHandler() {
}
},
onShareAppMessage() {
return {
title: '商品详情',
path: '/pages/product/product?id=123',
imageUrl: 'https://你的图片链接.jpg'
title: this.shareTitle,
path: '/pages/product/product?id='+this.productId,
imageUrl: this.shareImg
}
},
}
......@@ -56,6 +79,7 @@ export default {
.productimg {
width: 750rpx;
vertical-align: top;
}
.btnbox {
......
This diff is collapsed.
......@@ -5,20 +5,27 @@
<script setup>
import { ref } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import * as CFG from "@/cfg";
let src = ref("");
const PRIVACY_URL = "https://secret.feihe.com/secret.html";
const MEMBER_URL = "https://secret.feihe.com/index.html";
const urlMap = {
PRIVACY_URL,
MEMBER_URL,
};
onLoad((options) => {
let url = "";
if (options.type) {
const type = options.type;
url = CFG[type];
url = urlMap[type];
} else {
url = decodeURIComponent(options.url) || "";
}
src.value = url;
});
</script>
\ No newline at end of file
import {
defineStore
} from 'pinia';
} from 'pinia';
const cuk = uni.getStorageSync('cuk')
export const useGlobalStore = defineStore('global', {
state: () => {
return {
cuk: cuk, // 用户登录后获取的凭证,调用接口时headers中携带
curTabIndex: 0, // 当前Tab索引
};
},
actions: {
......@@ -16,8 +17,15 @@ export const useGlobalStore = defineStore('global', {
* @param {Object} cuk
*/
setCuk(cuk) {
this.cuk = cuk;
this.cuk = cuk;
uni.setStorageSync('cuk', cuk);
},
/**
* 设置当前Tab索引
* @param {number} index
*/
setCurTabIndex(index) {
this.curTabIndex = index;
}
},
});
\ No newline at end of file
import {
defineStore
} from 'pinia';
import {
fetchHomeInfo
} from '../api/home.js';
export const useHomeStore = defineStore('homeInfo', {
state: () => {
return {
homeInfo: null,
isLogin:false,
babyExistence:false
};
},
actions: {
/**
* 更新首页信息
* @param {Object} homeInfo
*/
setHomeInfo(homeInfo) {
this.homeInfo = homeInfo;
if(homeInfo?.memberId === "not_login"){
this.isLogin = false;
}else{
this.isLogin = true;
}
},
setBabyExistence(babyExistence){
console.log('setBabyExistence', babyExistence);
this.babyExistence = !babyExistence;
},
/**
* 获取首页信息
*/
async loadHomeInfo() {
const {
data
} = await fetchHomeInfo();
console.log('loadHomeInfo', data);
if(data){
this.setHomeInfo(data);
}
},
},
});
\ No newline at end of file
import { defineStore } from "pinia";
import { JumpType } from "@/utils";
import { WHEEL_OPTIONS_YL, WHEEL_OPTIONS_YZ } from "@/cfg";
import { myObj } from "../mock/my";
import { fetchUserJSON } from "@/api/user";
export const usePageCfgStore = defineStore("pageCfg", {
state: () => {
return {
toolList: [
{
icon: "my/literature.png",
title: "育儿百科",
url: "https://secret.feihe.com/secret.html",
jumpType: JumpType.H5,
},
{
icon: "my/suyuan.png",
title: "产品溯源",
url: "",
jumpType: JumpType.H5,
},
{
icon: "my/book.png",
title: "奶娃宝典",
url: "",
jumpType: JumpType.INNER,
},
{
icon: "my/doctor.png",
title: "医生问诊",
url: "",
jumpType: JumpType.MINI,
checkRegister: true,
},
{
icon: "my/babytest.png",
title: "宝宝体质测试",
url: "",
jumpType: JumpType.H5,
},
],
conetntCfg: {
wheelOptionsYL: WHEEL_OPTIONS_YL || [],
wheelOptionsYZ: WHEEL_OPTIONS_YZ || [],
contentLikeOptions: [
"奶粉选择",
"奶粉成分",
"奶粉冲泡",
"宝宝奶量",
"生长发育",
"常见疾病",
"体检疫苗",
"饮食营养补充",
"辅食营养",
"亲子关系",
"早教游戏",
],
productLikeOptions: [
"飞鹤星飞帆",
"星飞帆卓睿",
"星飞帆卓耀",
"星飞帆卓初",
"星飞帆臻稚卓蓓",
"星飞帆淳芮有机",
],
specialAttentionOptions: ["过敏", "长肉", "肠道", "消化", "脑发育"],
channelOptions: ["电商(京东/天猫)", "母婴店"],
toolList: [],
wheelOptionsYL: [],
wheelOptionsYZ: [],
contentCfg: {
contentLikeOptions: [],
productLikeOptions: [],
specialAttentionOptions: [],
channelOptions: [],
},
};
},
actions: {
/**
* 设置用户cuk
* @param {Object} cuk
*/
setCuk(cuk) {
this.cuk = cuk;
uni.setStorageSync("cuk", cuk);
async fetchCfg() {
const { data } = await fetchUserJSON();
if (!data) return;
this.toolList = data?.tool?.[0] || [];
this.contentCfg = data.contentCfg;
this.wheelOptionsYL = data.wheelOptionsYL;
this.wheelOptionsYZ = data.wheelOptionsYZ;
},
},
});
......@@ -10,6 +10,7 @@ import {
} from "../api/user.js";
import { useGlobalStore } from "./global.js";
import { showLoading, hideLoading } from "../utils/index.js";
import { useHomeStore } from "./home.js";
const globalStore = useGlobalStore();
......@@ -44,14 +45,11 @@ export const useUserStore = defineStore("userInfo", {
async changeBabySelected(babyId) {
// 更新选中状态
showLoading();
const { data } = await fetchBabyInfoById(babyId);
console.log("babyInfo", data);
if (data?.memberId !== "not_login") {
this.babyInfo = data;
}
hideLoading();
},
saveBabyInfo(babyInfo) {
......@@ -70,12 +68,15 @@ export const useUserStore = defineStore("userInfo", {
// console.log('wxAutoLogin', res);
if (res.errMsg === "login:ok") {
// 用户手机授权
await fetchAutoPhone({
const { data: babyExistence } = await fetchAutoPhone({
phoneEncryptedData: data.encryptedData,
phoneIv: data.iv,
code: data.code,
codeLogin: res.code,
});
const homeStore = useHomeStore();
await homeStore.setBabyExistence(babyExistence);
// 授权注册成功后做一次登录
this.wxAutoLogin();
} else {
......@@ -109,19 +110,26 @@ export const useUserStore = defineStore("userInfo", {
this.babyInfo = data;
}
},
/**
* 获取用户积分信息
*/
async loadMemberInfo() {
const { data } = await fetchMemberInfo();
console.log("fetchMemberInfo=", data);
this.setMemberInfo(data);
// this.memberInfo = data;
// if (data?.memberId !== "not_login") {
// this.babyInfo = data;
// }
},
/**
* 获取用户积分信息
*/
async loadMemberInfo() {
const { data } = await fetchMemberInfo();
console.log("fetchMemberInfo=", data);
this.setMemberInfo(data);
// this.memberInfo = data;
// if (data?.memberId !== "not_login") {
// this.babyInfo = data;
// }
},
* 获取宝宝信息
*/
async loadHomeInfo() {
const homeStore = useHomeStore();
await homeStore.loadHomeInfo();
},
/**
* wx.login 获取code后,调用此方法完成登录
......@@ -134,8 +142,9 @@ export const useUserStore = defineStore("userInfo", {
if (data && data.cuk) {
globalStore.setCuk(data.cuk);
this.loadUserInfo();
this.loadBabyInfo();
await this.loadUserInfo();
await this.loadBabyInfo();
await this.loadHomeInfo();
}
},
......
This diff is collapsed.
This diff is collapsed.
......@@ -16,7 +16,7 @@
:src="
babyInfo?.content?.backgroundImg || $baseUrl + 'my/cover_white_bg.png'
"
mode="aspectFit"
mode="widthFix"
lazy-load="false"
binderror=""
bindload=""
......@@ -44,7 +44,7 @@
babyInfo?.content?.babyAvatar ||
$baseUrl + 'common/default_avatar.png'
"
mode="aspectFill"
mode="widthFix"
/>
</view>
<image
......@@ -128,11 +128,11 @@
>
<image
class="tool-icon"
:src="$baseUrl + item.icon"
:src="$baseUrl + item.bgUrl"
mode="aspectFit"
/>
<button
v-if="item.checkRegister && !cfgStatus.isRegister"
v-if="item.title == '医生问诊' && !cfgStatus.isRegister"
class="tool-btn-register"
type="primary"
open-type="getPhoneNumber"
......@@ -161,6 +161,8 @@ import { useUserStore } from "@/stores/user";
import { usePageCfgStore } from "@/stores/pageCfg";
import { jump, JumpType } from "@/utils";
import { getHealthField } from "@/api/common";
import { hideLoading, showLoading } from "../utils";
const { proxy } = getCurrentInstance();
const $baseUrl = proxy.$baseUrl;
......@@ -176,7 +178,7 @@ const cfgStatus = ref({
const wheelOptions = ref([]);
const wheelSelectedIndex = ref(0);
const toolList = computed(() => pageCfgStore?.toolList);
const toolList = computed(() => pageCfgStore?.toolList || []);
const babyInfo = computed(() => userStore?.babyInfo || {});
......@@ -242,7 +244,7 @@ const handleToolClick = async (item) => {
},
});
} else {
jump({ type: item.jumpType, url: item.url });
jump({ type: item.link.type, url: item.link.url });
}
};
......@@ -289,8 +291,8 @@ const initData = async () => {
if (__showDetail) {
wheelOptions.value =
babyInfo.value.babyStage == 2
? pageCfgStore.conetntCfg.wheelOptionsYL
: pageCfgStore.conetntCfg.wheelOptionsYZ;
? pageCfgStore.wheelOptionsYL
: pageCfgStore.wheelOptionsYZ;
const index = wheelOptions.value.findIndex(
(item) => item.label == babyInfo.value.babyAge
);
......@@ -320,12 +322,14 @@ const handleChangeBaby = () => {
showBabySwitcher.value = true;
};
function onSelectBaby(baby) {
async function onSelectBaby(baby) {
// 处理宝宝切换逻辑
showBabySwitcher.value = false;
userStore.changeBabySelected(baby.id);
showLoading();
await userStore.changeBabySelected(baby.id);
hideLoading();
console.log("onSelectBaby", baby);
}
......@@ -336,9 +340,11 @@ function onAddBaby() {
}
// 页面加载
onMounted(() => {
console.log("onMounted");
onMounted(async () => {
showLoading();
await pageCfgStore.fetchCfg();
initData();
hideLoading();
});
watch([() => userStore.userInfo, () => userStore.babyInfo], () => {
......
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