Merge branch 'main' of git.zdool.com:xs/yxdt/h5

This commit is contained in:
汪汇 2023-12-07 17:15:57 +08:00
commit 9989ea718f
21 changed files with 1612 additions and 53 deletions

View File

@ -14,7 +14,7 @@ import { useRoute, useRouter } from 'vue-router'
// const route = useRoute()
// let routePath = ref(route.path)
const router = useRouter()
let bt_data = reactive([{ btname: '优惠服务', imgurl: s1, simgurl: sl1 ,path:'/'}, { btname: '生活助手', imgurl: s2, simgurl: sl2 ,path:'/chat'}, { btname: '智能优推', imgurl: s3, simgurl: sl3,path:'/' }, { btname: '大众点评', imgurl: s4, simgurl: sl4 ,path:'/'}])
let bt_data = reactive([{ btname: '优惠服务', imgurl: s1, simgurl: sl1 ,path:'/'}, { btname: '生活助手', imgurl: s2, simgurl: sl2 ,path:'/chat'}, { btname: '智能优推', imgurl: s3, simgurl: sl3,path:'/znyt' }, { btname: '大众点评', imgurl: s4, simgurl: sl4 ,path:'/comment'}])
let selctdeNum = ref(0)
let clickNum = (num,path) => {

BIN
src/assets/c1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
src/assets/c2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/assets/c3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/assets/c4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

BIN
src/assets/c5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

BIN
src/assets/cc3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
src/assets/cc4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/assets/dzdp1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

BIN
src/assets/dzdp2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
src/assets/list.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

BIN
src/assets/pf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

BIN
src/assets/pf1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

BIN
src/assets/xia.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,10 +1,5 @@
<script setup>
defineProps({
msg: {
type: String,
required: true
}
})
</script>
<template>

View File

@ -0,0 +1,109 @@
<template>
<div class="list-1">
<div class="top">
<strong class="yesDevelop"
>{{ newData.title
}}</strong
>
</div>
<div class="bottom-1">
<div class="left">{{ newData.createdAt }}</div>
<div class="right">
<img src="@/assets/eye.png" alt="" />{{ newData.eye }}
</div>
</div>
</div>
</template>
<script setup>
import { ref, defineProps } from "vue";
const props = defineProps(["newData"]);
const quanwen = () => {
console.log("全文");
};
</script>
<style lang='scss' scoped>
.list-1 {
padding-left: 16px;
padding-right: 16px;
.top {
display: flex;
justify-content: space-between;
margin-left: 6px;
.noDevelop {
display: inline-block;
// width: 343px;
width: 90vw;
height: 44px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
font-size: 15px;
font-weight: 500;
line-height: 22px;
position: relative;
}
a {
display: inline-block;
width: 35px;
position: absolute;
bottom: 0;
right: 0;
background-color: #fff;
color: #87ceeb;
font-size: 15px;
}
.noDevelop::after {
content: "...";
width: 16px;
position: absolute;
bottom: 0;
right: 35px;
background-color: #fff;
}
.yesDevelop {
display: inline-block;
// width: 343px;
width: 90vw;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
font-size: 15px;
font-weight: 500;
line-height: 22px;
position: relative;
font-family: PingFang SC, PingFang SC;
}
}
.bottom-1 {
display: flex;
justify-content: space-between;
margin-left: 6px;
margin-top: 9px;
font-size: 12px;
color: #999999;
.left {
align-items: center;
}
.right {
display: flex;
align-items: center;
img {
width: 12px;
height: 12px;
margin-right: 4px;
}
}
}
}
</style>

View File

@ -0,0 +1,124 @@
<template>
<div class="list-1">
<div class="left">
<strong class="yesDevelop"
>{{ newData.title
}}</strong
>
<div class="bottom-1">
<div class="left">{{ newData.createdAt }}</div>
<div class="right">
<img src="@/assets/eye.png" alt="" />{{ newData.eye }}
</div>
</div>
</div>
<div class="right">
<img :src="newData.imgUrl" alt="" />
</div>
</div>
</template>
<script setup>
import { ref } from "vue";
const props = defineProps(["newData"]);
const quanwen = () => {
console.log("全文");
};
</script>
<style lang='scss' scoped>
.list-1 {
display: flex;
min-height: 70px;
justify-content:space-between;
padding-left: 16px;
padding-right: 16px;
.left {
width: 230px;
min-height: 100%;
display: flex;
flex-direction: column;
.noDevelop {
display: inline-block;
width: 231px;
height: 44px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
font-size: 15px;
font-weight: 500;
line-height: 22px;
position: relative;
}
a {
display: inline-block;
width: 35px;
position: absolute;
bottom: 0;
right: 0;
background-color: #fff;
color: #87ceeb;
font-size: 15px;
}
.noDevelop::after {
content: "...";
width: 16px;
position: absolute;
bottom: 0;
right: 35px;
background-color: #fff;
}
.yesDevelop {
display: inline-block;
// width: 231px;
width: 61vw;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
font-size: 15px;
font-weight: 500;
line-height: 22px;
position: relative;
}
.bottom-1 {
display: flex;
justify-content: space-between;
// margin-left: 6px;
margin-top: 9px;
font-size: 12px;
color: #999999;
.left {
// align-items: center;
}
.right {
display: flex;
align-items: center;
img {
width: 12px;
height: 12px;
margin-right: 4px;
}
}
}
}
.right {
width: 94px;
img {
width: 100px;
height: 72px;
border-radius: 6px;
}
}
}
</style>

View File

@ -40,7 +40,23 @@ const router = createRouter({
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import('../views/test1.vue')
}
},
{
path: '/comment',
name: 'comment',
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import('../views/Dianping/comment.vue')
},
{
path: '/znyt',
name: 'znyt',
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import('../views/znyt.vue')
},
]
})

View File

@ -0,0 +1,552 @@
<template>
<div class="mian">
<div class="title">精选榜单</div>
<div class="List">
<div class="listbox" v-for="(item, i) in bd_data" :key="item">
<img :src="item.imgurl" class="imgList" />
<div class="listMin">
<span class="flList">{{ item.name }}</span>
<span class="phList">{{ item.List }}</span>
<div class="listBnt" @click="bdDetails(item.name)">查看详情</div>
</div>
</div>
</div>
<div style="display: flex">
<!-- <div v-for="(item, i) in data" :key="item">
<div class="tabsList">
<span
class="tabnames"
:class="{ tabName: cNum == i }"
@click="clickFun(item.name, i)"
>{{ item.name }}</span
>
<p></p>
<div></div>
</div>
<div v-if="item.name == bdName" style="display: flex">
<span
v-for="(item1, index) in item.lists"
:key="item1"
class="tabtitle"
>{{ item1.name }}</span
>
</div>
<div></div>
</div> -->
<div class="main">
<div class="main-t">
<div class="main-title">
<div
class="main-list"
:class="[chooseId == item.id ? 'numa' : '']"
v-for="(item, index) in mainList"
:key="index"
@click="choose(item.id)"
>
<div :class="[chooseId == item.id ? 'numa' : '']">
{{ item.title }}
</div>
<img
src="@/assets/xia.png"
alt=""
style="width: 48px; height: 5px; margin-bottom: 10px"
v-if="chooseId == item.id"
/>
</div>
</div>
<img src="@/assets/list.png" alt="" />
</div>
<div class="titles">
<span
v-for="(item, index) in mainLists"
:key="item"
class="tabtitle"
:class="[cNum == item.id ? 'tabtitles' : '']"
@click="clickFun(item.id)"
>{{ item.title }}</span
>
</div>
<div class="list">
<div v-for="(data, index) in records.list" :key="data.id">
<div class="line">
<div class="linetop">
<img :src="data.imgurl" alt="" />
<div class="linetopmin">
<div class="linetopTitle">{{ data.title }}</div>
<span class="linetopAddress">{{ data.address }}</span>
<span class="linetopScoring">
<div v-if="data.Scoring">
<img :src="f1" v-for="it in data.Scoring" />
<img :src="f2" v-for="it in 5 - data.Scoring" />
</div>
<div v-else>
<img :src="f2" v-for="it in 5" />
</div>
</span>
<span class="linetoprate">{{ data.rate }}</span>
</div>
</div>
<div class="linebot">
<p>热门评价</p>
<p>{{ data.comment }}</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive } from "vue";
import b1 from "../../assets/dzdp1.png";
import b2 from "../../assets/dzdp2.png";
import f1 from "../../assets/pf.png";
import f2 from "../../assets/pf1.png";
let bd_data = reactive([
{ name: "校园榜单", List: "高新区幼儿园好评榜", imgurl: b1, path: "/" },
{ name: "健身榜单", List: "必逛的十大体育公园", imgurl: b1, path: "/" },
{ name: "生活榜单", List: "高新区好评社区食堂", imgurl: b1, path: "/" },
{ name: "移动榜单", List: "高新区好评社区食堂", imgurl: b1, path: "/" },
]);
const mainList = reactive([
{
id: 1,
title: "老有康养",
},
{
id: 2,
title: "老有康养",
},
{
id: 3,
title: "老有康养",
},
{
id: 4,
title: "老有康养",
},
{
id: 5,
title: "老有康养",
},
{
id: 6,
title: "老有康养",
},
{
id: 7,
title: "老有康养",
},
]);
const mainLists = reactive([
{
id: 1,
title: "老年学校",
},
{
id: 2,
title: "养老服务中心",
},
{
id: 3,
title: "养老机构食堂",
},
{
id: 4,
title: "老有康养",
},
{
id: 5,
title: "老有康养",
},
{
id: 6,
title: "老有康养",
},
{
id: 7,
title: "老有康养",
},
]);
const records = reactive({
list: [
{
id: 1,
imgurl: b2,
title: "象山老年大学",
address: "宁波市象山县广场路39号",
Scoring: 4,
rate: "职业学校",
comment: "老师非常耐心,课程也很丰富!",
},
{
id: 2,
imgurl: b2,
title: "象山老年大学",
address: "宁波市象山县广场路39号",
Scoring: 1,
rate: "职业学校",
comment: "老师非常耐心,课程也很丰富!",
},
],
});
const data = reactive([
{
name: "老有康养",
lists: [
{
name: "老年学校",
lists: [
{
imgurl: b2,
name: "象山老年大学",
address: "宁波市象山县广场路39号",
Scoring: 4,
rate: "职业学校",
comment: "老师非常耐心,课程也很丰富!",
},
],
},
{
name: "养老服务中心",
lists: [
{
imgurl: b2,
name: "象山老年大学",
address: "宁波市象山县广场路39号",
Scoring: 3,
rate: "职业学校",
comment: "老师非常耐心,课程也很丰富!",
},
],
},
],
},
{
name: "幼有善育",
lists: [
{
name: "老年学校",
lists: [
{
imgurl: b2,
name: "象山老年大学",
address: "宁波市象山县广场路39号",
Scoring: 4,
rate: "职业学校",
comment: "老师非常耐心,课程也很丰富!",
},
],
},
{
name: "养老服务中心",
lists: [
{
imgurl: b2,
name: "象山老年大学",
address: "宁波市象山县广场路39号",
Scoring: 3,
rate: "职业学校",
comment: "老师非常耐心,课程也很丰富!",
},
],
},
],
},
]);
const bdDetails = (name) => {
alert(name);
// router.push(path)
};
const bdName = ref("老有康养");
const cNum = ref(1);
const clickFun = (index) => {
cNum.value = index;
};
const chooseId = ref("1");
const choose = (id) => {
chooseId.value = id;
};
</script>
<style lang="scss" scoped>
.mian {
min-height: 100vh;
color: #000;
margin: 0 16px;
margin: 0 0 0 16px;
.title {
// width: 72px;
// height: 16px;
padding: 20px 0;
font-size: 18px;
font-family: PingFang SC, PingFang SC;
font-weight: 600;
color: #333333;
line-height: 16px;
}
.List {
display: flex;
overflow-x: auto; /* 允许横向滚动 */
white-space: nowrap; /* 防止换行 */
.listbox {
position: relative;
.imgList {
width: 42vw;
height: 50vw;
flex: 0 0 auto; /* 不要让图像拉伸 */
margin-right: 10px;
}
.listMin {
position: absolute;
top: 0;
left: 0;
z-index: 2;
display: flex;
flex-direction: column;
padding: 16px 12px;
.flList {
width: 64px;
height: 16px;
font-size: 16px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 16px;
}
.phList {
width: 126px;
height: 12px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 12px;
margin: 8px 0 12px;
}
.listBnt {
width: 56px;
height: 20px;
color: #ffffff;
background: rgba(255, 255, 255, 0.2);
border-radius: 40px 40px 40px 40px;
font-size: 10px;
font-weight: 500;
line-height: 18px;
font-family: PingFang SC, PingFang SC;
text-align: center;
}
}
}
}
// .tabsList {
// display: flex;
// .tabName {
// width: 72px;
// height: 16px;
// font-size: 18px;
// font-family: PingFang SC, PingFang SC;
// font-weight: 600;
// color: #333333;
// line-height: 16px;
// }
// .tabnames {
// width: 56px;
// height: 14px;
// font-size: 14px;
// font-family: PingFang SC, PingFang SC;
// font-weight: 400;
// color: #666666;
// line-height: 14px;
// }
// span {
// margin-right: 15px;
// // background: url();
// }
// // p {
// // width: 30px;
// // height: 8px;
// // border-radius: 5px;
// // background: rgb(181, 202, 255);
// // background: linear-gradient(
// // 90deg,
// // rgba(181, 202, 255, 1) 0%,
// // rgba(255, 255, 255, 1) 100%
// // );
// // }
// }
.main {
box-sizing: border-box;
padding-top: 0;
height: 68vh;
.main-t {
display: flex;
align-items: center;
justify-content: space-between;
padding-right: 16px;
.main-title {
width: 85vw;
height: 50px;
overflow-y: auto;
display: flex;
// border: 1px solid red;
align-items: center;
.main-list {
flex-shrink: 0;
min-width: 56px;
height: 14px;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 14px;
margin-right: 22px;
// text-align: center;
}
}
img {
width: 16px;
height: 16px;
}
}
.titles {
display: flex;
overflow-x: auto; /* 允许横向滚动 */
white-space: nowrap; /* 防止换行 */
width: 89vw;
margin-bottom: 22px;
margin-top: 8px;
.tabtitle {
height: 24px;
padding: 3px 6px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
line-height: 16px;
margin-right: 10px;
}
.tabtitles {
height: 24px;
background: #e0e7fb;
padding: 3px 6px;
border-radius: 24px 24px 24px 24px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #457bff;
line-height: 16px;
margin-right: 10px;
}
}
.list {
height: 150px;
width: 355px;
box-sizing: border-box;
.line {
margin-bottom: 20px;
width: 345px;
height: 132px;
background: #ffffff;
box-shadow: 0px 2px 12px 0px #ebeef3;
border-radius: 8px 8px 8px 8px;
padding: 16px 16px 12px 16px;
.linetop {
display: flex;
margin-bottom: 12px;
img {
width: 80px;
height: 80px;
margin-right: 12px;
}
.linetopmin {
display: flex;
flex-direction: column;
.linetopTitle {
width: 96px;
height: 16px;
font-size: 16px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 16px;
}
.linetopAddress {
width: 135px;
height: 12px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 12px;
margin: 8px 0 0 0;
}
.linetopScoring {
img {
width: 12px;
height: 12px;
margin-right: 2px;
}
// background-color: skyblue;
}
.linetoprate {
width: 48px;
height: 16px;
border-radius: 2px 2px 2px 2px;
border: 1px solid #b8ccff;
font-size: 10px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #4379ff;
line-height: 13px;
text-align: center;
// margin-top: 8px;
}
}
}
.linebot {
display: flex;
p:nth-child(1) {
width: 60px;
height: 12px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 12px;
}
p:nth-child(2) {
width: 168px;
height: 12px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 12px;
}
}
}
// border: 1px solid yellow;
}
}
.numa {
width: 72px !important;
font-size: 18px !important;
font-family: PingFang SC, PingFang SC;
font-weight: 600 !important;
color: #333333 !important;
line-height: 16px !important;
}
::-webkit-scrollbar {
display: none;
}
}
</style>

View File

@ -1,12 +1,43 @@
<template>
<div class="c_body">
<div class="message-container">
<!-- <div class="message-container">
<div class="Left">
<div class="Left_mesg">
<h4>你好呀</h4>
<h4>我是你的智能生活助手~</h4> 您可以点击下方快捷方式选择问题或直接编辑问题发送给我哟
</div>
</div>
<div class="Left">
<div class="card">
<div class="main_card">
<div class="card_top">
<img src="../assets/5.png" alt="">
<div class="desc">
<div class="name">象山县中医医院新院区</div>
<div class="addr">宁波市象山县南部新城新洋路...</div>
<div class="tag_wrp">
<div class="tag">医保定点</div>
<div style="width: 4px;"></div>
<div class="tag">医保定点</div>
</div>
<div class="detail"> 象山中医院建于1985年3月是一所集中医中西医结合医疗预防康复于一体的非...</div>
</div>
</div>
<div class="card_botm">
<div class="card_bt">换一家医院</div>
<div class="split_line"></div>
<div class="card_bt">帮我预约该医院</div>
</div>
</div>
<div class="prise_wrp">
<div class="prise">
<img src="../assets/1.png" alt="">
<div class="spl_line"></div>
<img src="../assets/2.png" alt="">
</div>
</div>
</div>
</div>
<div class="Right">
<div class="Right_mesg">
骨折去哪家医院
@ -20,10 +51,7 @@
基于您目前的地理位置时间医院号源等多种因素为您推荐如下结果您还可根据自身偏好重新选择继续为您推荐如偏好因素不在其列可继续提出您的需求
</div>
</div>
<!--
<div class="Left_mesg"> 基于您目前的地理位置时间医院号源等多种因素为您推荐如下结果您还可根据自身偏好重新选择继续为您推荐如偏好因素不在其列可继续提出您的需求</div> -->
<div class="card">
<div class="card">
<div class="main_card">
<div class="card_top">
<img src="../assets/5.png" alt="">
@ -52,8 +80,133 @@
</div>
</div>
</div>
</div> -->
<div class="message-container" id="chatform">
<div class="message" v-for="(message, index) in messages" :key="message.id">
<div class="Left" v-if="!message.isMe">
<div class="Left_mesg">
<div v-if="message.type == 'txt'" class="txt txt_l"> {{ message.text }}</div>
<div v-else-if="message.type == 'fstxt'" class="txt txt_l">
<div style="font-weight: 600;font-size: 14px;">你好呀</div>
<div style="font-weight: 600;font-size: 14px;">我是你的智能生活助手~</div>
<div> 您可以点击下方快捷方式选择问题或直接编辑问题发送给我哟</div>
</div>
<div v-else-if="message.type == 'card1'" class="card">
<div class="main_card">
<div class="card_top">
<img src="../assets/5.png" alt="">
<div class="desc">
<div class="name">象山县中医医院新院区</div>
<div class="addr">宁波市象山县南部新城新洋路...</div>
<div class="tag_wrp">
<div class="tag">医保定点</div>
<div style="width: 4px;"></div>
<div class="tag">医保定点</div>
</div>
<div class="detail"> 象山中医院建于1985年3月是一所集中医中西医结合医疗预防康复于一体的非...</div>
</div>
</div>
<div class="card_botm">
<div class="card_bt">换一家医院</div>
<div class="split_line"></div>
<div class="card_bt">帮我预约该医院</div>
</div>
</div>
<div class="prise_wrp">
<div class="prise">
<img src="../assets/1.png" alt="">
<div class="spl_line"></div>
<img src="../assets/2.png" alt="">
</div>
</div>
</div>
<div v-else-if="message.type == 'card2'" class="card2">
<div class="main_card">
<div class="card_top">
<img src="../assets/c1.png" alt="">
<div class="desc">
<div class="name">
<span class="fullname">白亮</span>
<span class="workername">主任医师</span>
</div>
<div class="work_tag">
<span>象山县中医医院</span>
<div class="xie"></div>
<span>神经外科</span>
</div>
<div class="detail"> 象山中医院建于1985年3月是一所集中医中西医结合医疗预防康复于一体的非...</div>
</div>
</div>
<div class="card_botm">
<div class="card_bt">换一家医院</div>
<div class="split_line"></div>
<div class="card_bt">帮我预约该医院</div>
</div>
</div>
<div class="prise_wrp">
<div class="prise">
<img src="../assets/1.png" alt="">
<div class="spl_line"></div>
<img src="../assets/2.png" alt="">
</div>
</div>
</div>
<div v-else-if="message.type == 'card3'" class="card3">
<div class="c_top">
推荐您可以挂神经内科您还可根据自身偏好重新选择继续为您推荐如偏好因素不在其列可继续提出您的需求
</div>
<div class="c_bt">
<div class="cbt_it" v-for=" v in 3">
<div class="it_name">神经内科</div>
<div class="book_btn">预约</div>
</div>
</div>
</div>
<div v-else-if="message.type == 'card4'" class="card3">
<div class="c_top">
{{ message.text }}
</div>
<div class="c_bt">
<div class="cbt_it" v-for=" v in 3">
<div class="it_name">神经内科</div>
<div class="book_btn">预约</div>
</div>
</div>
</div>
<div v-else-if="message.type == 'card5'" class="card5">
<div class="card_container">
<div class="cd_l">
<img src="@/assets/c2.png" alt="">
</div>
<div class="cd_r">
<div class="hostbital_name">象山第一人民医院</div>
<div class="second">
<div class="howway">
<img src="@/assets/c5.png" alt="">
<span>3公里</span>
</div>
<div class="addr">宁波市象山县东谷路28991</div>
</div>
<div class="tag_wrp">
<div class="tag">医保定点</div>
<div style="width: 4px;"></div>
<div class="tag">危重孕产妇救治中心</div>
</div>
</div>
<!-- <img src="@/assets/c5.png" alt=""> -->
</div>
<div class="guid_img">
<img src="@/assets/c3.png" alt="">
</div>
</div>
</div>
</div>
<div class="Right" v-else>
<div class="Right_mesg">
<div v-if="message.type == 'txt'" class="txt txt_r"> {{ message.text }}</div>
</div>
</div>
</div>
</div>
<div class="recomand">
@ -65,18 +218,55 @@
<div class="c_bottom">
<img src="../assets/3.png">
<Input type="text" placeholder="有问题尽管问我~" class="sendinput" />
<input v-model="inputText" type="text" placeholder="有问题尽管问我~" class="sendinput" />
<div class="w_icon">
<img src="../assets/4.png" alt="">
</div>
<div class="send">发送</div>
<div class="send" @click="sendMessage">发送</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive, nextTick, onMounted } from 'vue'
let inputText = ref('')
let messages = reactive([
{ id: 1, type: 'fstxt', text: '您可以点击下方快捷方式选择问题,或直接编辑问题发送给我哟', isMe: false },
{ id: 2, type: 'txt', text: '骨折去哪家医院', isMe: true },
{ id: 3, type: 'card1', text: '基于您目前的地理位置、时间、医院号源等多种因素为您推荐如下结果。您还可根据自身偏好重新选择,继续为您推荐;如偏好因素不在其列,可继续提出您的需求。', isMe: false },
{ id: 4, type: 'txt', text: '基于号源等多种因素考虑,以下是相关医生推荐:', isMe: false },
{ id: 5, type: 'card2', text: '基:', isMe: false },
{ id: 6, type: 'txt', text: '最近总是头疼可以挂什么科室', isMe: true },
{ id: 7, type: 'card3', text: '卡片3', isMe: false },
{ id: 8, type: 'card4', text: '为您推荐相关医生,也可选择查看更多医生。', isMe: false },
{ id: 9, type: 'txt', text: '人民医院怎么走', isMe: true },
{ id: 10, type: 'card5', text: '卡片5', isMe: false },
]);
const sendMessage = () => {
console.log("dddd", inputText.value)
/* setTimeout(() => {
console.log("inputText.value:", inputText.value);
}, 0); */
if (inputText.value.trim()) {
console.log("sendMessage", inputText.value.trim())
messages.push({ id: Date.now(), text: inputText.value, isMe: true, type: 'txt' });
console.log("messages", messages)
scollToButtom();
inputText.value = '';
}
}
const scollToButtom = () => {
nextTick(() => {
let chatForm = document.getElementById('chatform'); //
if (chatForm) {
chatForm.scrollTop = chatForm.scrollHeight; //
}
});
}
// onMounted(scrollToBottom);
</script>
<style lang="scss" scoped>
::-webkit-input-placeholder {
color: #999999;
@ -89,17 +279,14 @@
border-radius: 21px;
border: 0px;
background: #F5F5FB;
// background: transparent;
padding: 0px 12px;
padding-left: 36px;
// margin-left: 60px;
position: absolute;
left: 60px;
z-index: 1;
}
.sendinput:focus {
// outline: 1px solid #fff;
outline: 1px solid #4379FF;
}
@ -110,18 +297,7 @@
padding-right: 59px;
.Left_mesg {
min-height: 44px;
background: #fff;
border-radius: 0px 28px 28px 28px;
padding: 10px 16px;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #333333;
box-sizing: border-box;
margin-bottom: 16px;
// display: inline-block;
// float: left;
// margin-bottom: 16px;
}
}
@ -132,17 +308,7 @@
padding-left: 59px;
.Right_mesg {
min-height: 44px;
background: #4F82FF;
border-radius: 28px 0px 28px 28px;
padding: 10px 16px;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #FFFFFF;
box-sizing: border-box;
margin-bottom: 16px;
// display: inline-block;
// margin-bottom: 16px;
}
}
@ -180,7 +346,7 @@
height: 216px;
// margin: 0 auto;
// padding-left: 16px;
margin-left: 16px;
// margin-left: 16px;
.main_card {
border-radius: 16px;
@ -207,6 +373,7 @@
font-weight: 500;
color: #333333;
line-height: 14px;
}
.addr {
@ -218,13 +385,16 @@
margin: 8px 0px;
}
.tag_wrp {
display: flex;
.tag {
font-size: 10px;
color: #4379FF;
width: 48px;
// width: 48px;
padding: 0px 2px;
height: 16px;
text-align: center;
line-height: 16px;
@ -298,6 +468,295 @@
}
.card2 {
width: 300px;
height: 210px;
.main_card {
border-radius: 16px;
background: #FFFFFF;
height: 165px;
.card_top {
display: flex;
padding: 16px;
box-sizing: border-box;
img {
width: 50px;
height: 50px;
border-radius: 5px;
margin-right: 12px;
}
.desc {
.name {
.fullname {
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 14px;
}
.workername {
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #666666;
margin-left: 8px;
}
}
.work_tag {
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #999999;
display: flex;
align-items: center;
.xie {
width: 1px;
border: 1px solid #999999;
height: 12px;
margin: 0px 10px;
opacity: 0.5;
}
}
.detail {
font-size: 10px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 14px;
margin-top: 12px;
}
}
}
.card_botm {
border-top: 1px solid #F1F1F1;
display: flex;
align-items: center;
.card_bt {
height: 47px;
width: calc(50% - 1px);
color: #4379FF;
text-align: center;
line-height: 47px;
}
.split_line {
width: 1px;
height: 47px;
background-color: #F1F1F1;
}
}
}
.prise_wrp {
display: flex;
justify-content: end;
.prise {
width: 76px;
height: 28px;
background-color: #fff;
box-sizing: border-box;
padding: 6px 12px;
display: flex;
align-items: center;
margin-top: 8px;
// margin-right: -1px;
img {
width: 16px;
height: 16px;
}
.spl_line {
height: 12px;
width: 1px;
border: 1px solid #D6D6D6;
margin-left: 10px;
margin-right: 10px;
}
}
}
}
.card3 {
width: 300px;
height: 294px;
border-radius: 16px;
background-color: #fff;
box-sizing: border-box;
padding: 16px;
border: 1px solid red;
.c_top {
margin-bottom: 12px;
}
.c_bt {}
.cbt_it {
width: 268px;
height: 46px;
background: #EFF3FC;
border-radius: 8px 8px 8px 8px;
margin-bottom: 8px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px;
box-sizing: border-box;
.it_name {
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #333333;
}
.book_btn {
width: 48px;
height: 24px;
background: linear-gradient(90deg, #6591FF 0%, #4379FF 100%);
border-radius: 22px 22px 22px 22px;
text-align: center;
line-height: 24px;
color: #fff;
}
}
}
.card4 {}
.card5 {
width: 280px;
height: 90px;
border-radius: 16px;
background-color: #fff;
position: relative;
.guid_img {
width: 28px;
height: 28px;
position: absolute;
top: 50%;
transform: translateY(-44%);
right: -35px;
img {
width: 100%;
height: 100%;
}
}
.card_container {
padding: 16px;
box-sizing: border-box;
display: flex;
.cd_l {
img {
width: 40px;
height: 40px;
}
}
.cd_r {
margin-left: 8px;
.hostbital_name {
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 600;
color: #333333;
}
.second {
display: flex;
color: #999999;
margin-bottom: 6px;
.howway {
display: flex;
align-items: center;
img {
width: 12px;
height: 12px;
}
span {
margin-right: 8px;
font-size: 12px;
}
}
.addr {
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #999999;
}
}
.tag_wrp {
display: flex;
.tag {
font-size: 10px;
color: #4379FF;
// width: 48px;
padding: 0px 2px;
height: 16px;
text-align: center;
line-height: 16px;
border-radius: 2px 2px 2px 2px;
opacity: 1;
border: 1px solid #B8CCFF;
}
}
}
}
}
.txt {
min-height: 44px;
padding: 10px 16px;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
box-sizing: border-box;
font-weight: 400;
}
.txt_l {
background: #fff;
border-radius: 0px 12px 12px 12px;
color: #333333;
}
.txt_r {
border-radius: 12px 12px 0px 12px;
background: #4F82FF;
color: #fff;
}
/* @media (min-width: 1024px) {
.about {
min-height: 100vh;
@ -306,11 +765,6 @@
}
} */
.c_body {
// position: relative;
// background-color: rgb(245, 245, 251);
// width: 100vw;
// min-height: 100vh;
.message-container {
height: calc(100vh - 124px);
overflow: auto;
@ -319,6 +773,12 @@
position: relative;
padding-top: 20px;
padding-bottom: 45px;
.message {
/* width: 100%;
height: 100%; */
margin-bottom: 16px !important;
}
}
.c_bottom {

303
src/views/znyt.vue Normal file
View File

@ -0,0 +1,303 @@
<template>
<div class="body">
<div class="top">
<div class="content" v-for="(item, index) in topContent" :key="index">
<div class="biaoqian">{{ item.biaoqian }}</div>
<div class="title">
{{ item.content }}
</div>
<div class="time">
<div class="left">{{ item.time }}</div>
<div class="right">
<img src="@/assets/eye.png" alt="" />
<div>{{ item.eye }}</div>
</div>
</div>
</div>
</div>
<div class="main">
<div class="main-t">
<div class="main-title">
<div
class="main-list"
:class="[chooseId == item.id ? 'a' : '']"
v-for="(item, index) in mainList"
:key="index"
@click="choose(item.id)"
>
<div :class="[chooseId == item.id ? 'a' : '']">
{{ item.title }}
</div>
<img
src="@/assets/xia.png"
alt=""
style="width: 48px; height: 5px; margin-bottom: 10px"
v-if="chooseId == item.id"
/>
</div>
</div>
<img src="@/assets/list.png" alt="" />
</div>
<div class="list">
<div class="list-item">
<div v-for="(data, index) in records.list" :key="data.id">
<listNoImg v-if="data.display == 0" :newData="data" />
<listRightImg v-if="data.display == 1" :newData="data" />
<div class="container">
<div class="line"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive } from "vue";
import listRightImg from "@/components/list-right-img.vue";
import listNoImg from "@/components/list-no-img.vue";
const topContent = reactive([
{
content: "2024年养老金发放政策工龄30年内统一发放3200元可行吗",
time: "11月27日",
eye: "8888",
biaoqian: "热门话题",
},
{
content: "2024年养老金发放政策工龄30年内统一发放3200元可行吗",
time: "11月27日",
eye: "8888",
biaoqian: "政策资源",
},
{
content: "2024年养老金发放政策工龄30年内统一发放3200元可行吗",
time: "11月27日",
eye: "8888",
biaoqian: "政策资源",
},
]);
const mainList = reactive([
{
id: 1,
title: "老有康养",
},
{
id: 2,
title: "幼有善育",
},
{
id: 3,
title: "学有优教",
},
{
id: 4,
title: "劳有所得",
},
]);
const chooseId = ref("1");
const choose = (id) => {
chooseId.value = id;
// console.log()
};
const records = reactive({
list: [
{
id: 1,
display: 1,
title: "“三问”个人养老金:是什么、怎么缴、如何领?",
createdAt: "11月27日",
imgUrl: "/src/assets/cc4.png",
eye: "8888",
},
{
id: 2,
display: 1,
title: "100场社区活动——教你轻松玩转智能手机",
createdAt: "11月27日",
imgUrl: "/src/assets/cc3.png",
eye: "8888",
},
{
id: 3,
display: 0,
title: "2023年养老金政策震撼发布你的养老金将发生这样的变化",
createdAt: "11月27日",
eye: "8888",
},
{
id: 4,
display: 1,
title: "100场社区活动——教你轻松玩转智能手机",
createdAt: "11月27日",
imgUrl: "/src/assets/cc3.png",
eye: "8888",
},
{
id: 5,
display: 0,
title: "2023年养老金政策震撼发布你的养老金将发生这样的变化",
createdAt: "11月27日",
eye: "8888",
},
],
});
</script>
<style lang="scss" scoped>
.body {
box-sizing: border-box;
// width: 100%;
// height: 100%;
// border: 1px solid red;
.top {
width: 100vw;
padding: 16px 0px 16px 16px;
overflow-x: auto;
display: flex;
.content {
position: relative;
width: 300px;
height: 144px;
background: #ffffff;
box-shadow: 0px 2px 12px 0px #ebeef3;
border-radius: 10px 10px 10px 10px;
opacity: 1;
// display: flex;
flex-shrink: 0;
// margin: 16px 16px 16px 16px;
margin-right: 12px;
padding-left: 16px;
padding-right: 16px;
// &:last-child {
// margin-right: 16px;
// }
.biaoqian {
position: absolute;
top: 0;
left: 0;
min-width: 70px;
height: 24px;
background: #457aff;
opacity: 1;
border-radius: 10px 0px 10px 0px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 12px;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.title {
margin-top: 44px;
width: 268px;
height: 48px;
font-size: 16px;
font-family: PingFang SC, PingFang SC;
font-weight: 600;
color: #333333;
line-height: 24px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.time {
margin-top: 24px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #999999;
display: flex;
align-items: center;
justify-content: space-between;
.right {
display: flex;
align-items: center;
img {
width: 12px;
height: 12px;
margin-right: 4px;
}
}
}
}
}
.main {
box-sizing: border-box;
// border: 1px solid red;
// padding: 16px;
padding-top: 0;
// overflow: hidden;
background-color: #ffffff;
// height:calc(100vh - 150px);
.main-t {
display: flex;
align-items: center;
justify-content: space-between;
padding-left: 16px;
padding-right: 16px;
.main-title {
width: 85vw;
height: 50px;
overflow-y: auto;
display: flex;
// border: 1px solid red;
align-items: center;
.main-list {
flex-shrink: 0;
min-width: 56px;
height: 14px;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 14px;
margin-right: 22px;
// text-align: center;
}
}
img {
width: 16px;
height: 16px;
}
}
.list {
// box-sizing: border-box;
width: 100vw;
height: calc(100vh - 280px);
background-color: #ffffff;
overflow: auto;
// border: 1px solid yellow;
}
}
}
.a {
width: 72px !important;
font-size: 18px !important;
font-family: PingFang SC, PingFang SC;
font-weight: 600 !important;
color: #333333 !important;
line-height: 16px !important;
}
::-webkit-scrollbar {
display: none;
}
.container {
display: flex;
justify-content: center;
align-items: center;
}
.line {
width: calc(100vw - 32px);
height: 0px;
border-radius: 0px 0px 0px 0px;
opacity: 1;
border: 1px solid #f1f1f1;
margin-top: 12px;
margin-bottom: 16px;
text-align: center;
}
</style>