第一次提交

main
江桂泉 2023-10-27 15:11:24 +08:00
parent efaeecb0b8
commit 8820e27fbd
113 changed files with 5995 additions and 224 deletions

13
package-lock.json generated
View File

@ -10,6 +10,8 @@
"dependencies": {
"axios": "^1.5.1",
"core-js": "^3.8.3",
"jsencrypt": "^3.3.2",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"postcss-pxtorem": "^6.0.0",
"vant": "^2.13.1",
@ -6637,6 +6639,11 @@
"dev": true,
"license": "MIT"
},
"node_modules/jsencrypt": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/jsencrypt/-/jsencrypt-3.3.2.tgz",
"integrity": "sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A=="
},
"node_modules/jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
@ -6808,10 +6815,8 @@
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true,
"license": "MIT"
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.debounce": {
"version": "4.0.8",

View File

@ -9,6 +9,8 @@
"dependencies": {
"axios": "^1.5.1",
"core-js": "^3.8.3",
"jsencrypt": "^3.3.2",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"postcss-pxtorem": "^6.0.0",
"vant": "^2.13.1",

View File

@ -1,11 +1,18 @@
<template>
<div id="app">
<router-view></router-view>
<keep-alive include="TabBar">
<router-view></router-view>
</keep-alive>
<!-- <TabBar/> -->
</div>
</template>
<script>
<script src="./libs/flexible"></script>
<script src="./libs/touch.js"></script>
export default {
}
</script>
<style lang="scss" >

View File

@ -0,0 +1,107 @@
(function (d, f) {
var s = d.document;
var c = s.documentElement;
var m = s.querySelector('meta[name="viewport"]');
var n = s.querySelector('meta[name="flexible"]');
var a = 0;
var r = 0;
var b = 0;
var l;
var e = f.flexible || (f.flexible = {});
if (n) {
var j = n.getAttribute("content");
if (j) {
var q = j.match(/initial\-dpr=([\d\.]+)/);
var h = j.match(/maximum\-dpr=([\d\.]+)/);
if (q) {
a = parseFloat(q[1]);
r = parseFloat((1 / a).toFixed(2))
}
if (h) {
a = parseFloat(h[1]);
r = parseFloat((1 / a).toFixed(2))
}
}
}
if (!a && !r) {
var p = d.navigator.appVersion.match(/android/gi);
var o = d.navigator.appVersion.match(/iphone/gi);
var k = d.devicePixelRatio; // 获取设备像素比 = 物理像素 / 设备独立像素
if (k >= 3 && (!a || a >= 3)) {
a = 3
} else {
if (k >= 2 && (!a || a >= 2)) {
a = 2
} else {
a = 1
}
}
console.log(a)
r = 1 / a; // 初始比例
}
c.setAttribute("data-dpr", a); // 动态添加data-drp显示设备像素比
// 动态添加meta
m = s.createElement("meta");
m.setAttribute("name", "viewport");
m.setAttribute("content", "width=device-width, initial-scale=" + r + ", maximum-scale=" + r + ", minimum-scale=" + r + ", user-scalable=no");
if (c.firstElementChild) {
c.firstElementChild.appendChild(m)
} else {
var g = s.createElement("div");
g.appendChild(m);
s.write(g.innerHTML)
}
function i() {
var u = c.getBoundingClientRect().width; // 布局视图的宽 = 设备尺寸 * 像素比
if (u / a > 540) {
u = 540 * a
} // 根据设备像素比计算设计尺寸
var w = u / 10; // 动态设置字体大小
console.log(w)
c.style.fontSize = w + "px";
e.rem = d.rem = w;
var v = parseFloat(c.style.fontSize),
t = parseFloat(window.getComputedStyle(c).getPropertyValue("font-size"));
console.log("flexible.refreshRem: fontSize && finalFontSize => ", v, t);
if (v !== t) {
c.style.fontSize = v * (v / t) + "px";
console.log("flexible.refreshRem.fixed: fontSize => ", c.style.fontSize)
}
}
d.addEventListener("resize", function () {
clearTimeout(l);
l = setTimeout(i, 300)
}, false);
d.addEventListener("pageshow", function (t) {
if (t.persisted) {
clearTimeout(l);
l = setTimeout(i, 300)
}
}, false);
if (s.readyState === "complete") {
s.body.style.fontSize = 12 * a + "px"
} else {
s.addEventListener("DOMContentLoaded", function (t) {
s.body.style.fontSize = 12 * a + "px"
}, false)
}
i();
e.dpr = d.dpr = a;
e.refreshRem = i;
e.rem2px = function (u) {
var t = parseFloat(u) * this.rem;
if (typeof u === "string" && u.match(/rem$/)) {
t += "px"
}
return t
};
e.px2rem = function (u) {
var t = parseFloat(u) / this.rem;
if (typeof u === "string" && u.match(/px$/)) {
t += "rem"
}
return t
}
})(window, window["lib"] || (window["lib"] = {}));

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 952 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 965 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,29 @@
<template>
<div class="box">
<div @click="$router.push(url)">
<van-icon name="arrow-left" :style="{ color: color }"/>
</div>
<h3 :style="{ color: color }">{{con}}</h3>
</div>
</template>
<script>
export default {
props:['con','url','color']
}
</script>
<style lang="scss" scoped>
.box{
display: flex;
height: 46px;
align-items: center;
.van-icon{
font-size: 20px;
font-weight: 600;
margin-left: 15px;
}
h3{
margin-left: 120px;
}
}
</style>

View File

@ -0,0 +1,16 @@
<template>
<div>
<van-notice-bar
left-icon="volume-o"
text="本模块知识仅供参考,如有需要,请在医生指导下使用"
background='red'
color="#fff"
/>
</div>
</template>
<script>
export default {
}
</script>

View File

@ -0,0 +1,12 @@
<template>
<div></div>
</template>
<script>
export default {
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -1,59 +0,0 @@
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<p>
For a guide and recipes on how to configure / customize this project,<br>
check out the
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
</p>
<h3>Installed CLI Plugins</h3>
<ul>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
</ul>
<h3>Essential Links</h3>
<ul>
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
</ul>
<h3>Ecosystem</h3>
<ul>
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
</ul>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>

View File

@ -0,0 +1,22 @@
<template>
<div>{{con}}</div>
</template>
<script>
export default {
props:['con']
}
</script>
<style lang="scss" scoped>
div{
text-align: left;
height: 40px;
line-height: 30px;
border-left: 4px solid rgb(48,135,234);
padding-left: 10px;
color: rgb(48,135,234);
padding: 5px;
background: #fff;
font-size: 12px;
font-weight: bold;
}
</style>

View File

@ -0,0 +1,57 @@
<template>
<div class="header">
<img src="../../assets/images/icon/user.png" alt="" class="left" @click="$router.push('/my/myIndex')"/>
<slot name="center">
</slot>
<div>
<img src="../../assets/images/icon/common_nav_message_black_n.png" alt="" />
<img src="../../assets/images/icon/robot.jpg" alt="" />
</div>
</div>
</template>
<script>
// import '../../'
export default {
methods:{
goSearch(){
this.$router.push('/home/search')
}
}
};
</script>
<style lang="scss" scoped>
.header {
width: 100%;
display: flex;
justify-content: space-between;
height: 50px;
align-items: center;
background: #fff;
.inp {
border: 1px solid #ccc;
height: 70%;
border-radius: 20px;
width: 235px;
display: flex;
align-items: center;
span {
font-size: 12px;
padding-left: 20px;
}
}
img {
width: 30px;
height: 30px;
// margin: 0 10px;
}
.left{
margin-left: 10px;
}
div{
img{
margin: 0 10px;
}
}
}
</style>

View File

@ -0,0 +1,17 @@
<template>
<div>
<van-cell :title="con" is-link />
</div>
</template>
<script>
export default {
props:['con']
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,103 @@
<template>
<div class="box">
<slot name="home"></slot>
<div class="center">
<slot name="center"></slot>
</div>
<slot name="video"></slot>
<!-- <div @click="handleHome">
<img src="../../assets/images/icon/home_active.png" v-if="homeActive">
<img src="../../assets/images/icon/home.png" v-else>
</div>
<div class="center" @click="handleCenter">
<img src="../../assets/images/icon/center_active.png" v-if="EditActive" class="centerImg">
<img src="../../assets/images/icon/center.png" v-else class="centerImg">
</div>
<div @click="handleVideo">
<img src="../../assets/images/icon/video_active.png" v-if="VideActive">
<img src="../../assets/images/icon/video.png" v-else>
</div> -->
</div>
</template>
<script>
export default {
data(){
return{
homeActive:true,
EditActive:false,
VideActive:false
}
},
created(){
console.log(11);
},
methods:{
handleHome(){
this.homeActive=false
this.EditActive=false
this.VideActive=false
this.$router.push('/home')
this.$nextTick(()=>{
})
},
handleCenter(){
this.EditActive=true
this.homeActive=false
this.VideActive=false
console.log(this.homeActive);
this.$router.push('/patientCircle')
this.$nextTick(()=>{
})
},
handleVideo(){
// this.EditActive=!this.EditActive
// this.$router.push('/patientCircle')
}
},
mounted(){
console.log(222);
}
}
</script>
<style lang="scss" scoped>
.box{
background: url('../../assets/images/img/tab-bar.png');
background-size: 100% 100%;
position: fixed;
bottom: -5px;
width: 100%;
height: 50px;
display: flex;
justify-content: space-around;
align-items: center;
img{
width: 30px;
height: 30px;
}
.center{
position: relative;
img{
position: absolute;
top: -40px;
left: -20px;
width: 35px;
height: 35px;
}
// img{
// margin-top: -120px;
// }
}
}
</style>

View File

@ -0,0 +1,311 @@
import http from '../http/index'
//获取轮播图接口
export const getBanner=async()=>{
return await http.get('/health/share/v1/bannersShow')
}
//获取中间的菜单
export const getMenu=async ()=>{
return await http.get('/health/share/knowledgeBase/v1/findDepartment')
}
//获取tab头部标题接口
export const getHealth=async()=>{
return await http.get('/health/share/information/v1/findInformationPlateList')
}
//首页的tab列表接口
export const getTabList=async (data)=>{
return await http.get('/health/share/information/v1/findInformationList',{params:data})
}
//登录接口
export const isLogin=async (data)=>{
return await http.post('/health/user/v1/login',{...data},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//注册接口
export const isSigin=async (data)=>{
return await http.post('/health/user/v1/register',{...data},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//获取验证码接口
export const getCode=async (data)=>{
return await http.post('/health/user/v1/sendOutEmailCode',data,{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//获取常见病症接口 (查询科室列表)
export const CommonDisease=async()=>{
return await http.get('/health/share/knowledgeBase/v1/findDepartment')
}
//获取常见病症状的具体症状
export const EveryDisease=async(data)=>{
return await http.get('/health/share/knowledgeBase/v1/findDiseaseCategory',{params:data})
}
//获取常见药品接口 (药品科目分类列表查询)
export const CommonDrug=async()=>{
return await http.get('/health/share/knowledgeBase/v1/findDrugsCategoryList')
}
//获取常见具体的药品接口
export const EveryDrug=async (data)=>{
return await http.get('/health/share/knowledgeBase/v1/findDrugsKnowledgeList',{params:data})
}
//从首页中的列表跳转到详情页
export const jumpDetail = async(data)=>{
return await http.get('/health/share/information/v1/findInformation',{params:data})
}
// /health/share/knowledgeBase/v1/findDrugsKnowledge
//查询常见病症详情
export const CommonDiseaseDetail=async (data)=>{
return await http.get('/health/share/knowledgeBase/v1/findDiseaseKnowledge',{params:data})
}
//查询常见药品详情
export const CommonDrugDetail=async (data)=>{
return await http.get('/health/share/knowledgeBase/v1/findDrugsKnowledge',{params:data})
}
//查询问诊医生的接口
export const doctor=async(data)=>{
return await http.get('/health/user/inquiry/v1/findDoctorList',{params:{...data}})
}
//热门搜索接口
export const hot=async ()=>{
return await http.get('/health/share/v1/popularSearch')
}
//单个输入框搜索
export const getSearch=async (data)=>{
return await http.get('/health/share/v1/homePageSearch',{params:data})
}
//病友圈列表
export const PatientCircleList=async (data)=>{
return await http.get('/health/user/sickCircle/v1/findSickCircleList',{params:{...data}})
}
//查询病友圈详情
export const PatientCircleDetail=async (data)=>{
return await http.get('/health/user/sickCircle/v1/findSickCircleInfo',{params:{...data}})
}
//查询医生明细 就是问诊中的医生列表的哪一个医生的详情信息
export const DoctorDetail=async(data)=>{
return await http.get('/health/user/inquiry/v1/findDoctorInfo',{params:{...data}})
}
//病友圈 查询
export const PatientsSearch=async (data)=>{
// /health/user/sickCircle/v1/searchSickCircle
// return data
return await http.get('/health/user/sickCircle/v1/searchSickCircle',{params:{...data}})
}
//病友圈添加喜欢
export const addLike=async(data)=>{
// return {...data}
return await http.post('/health/user/verify/v1/addUserSickCollection',{...data},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//病友圈取消喜欢
export const cancelLike=async (data)=>{
return await http.delete('/health/user/verify/v1/cancelSickCollection',{params:{...data}},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//病友圈评论
export const patientsPl=async (data)=>{
return await http.post('/health/user/sickCircle/verify/v1/publishComment',{...data},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//查询病友圈评论的列表
export const patientsPlList=async(data)=>{
return await http.get('/health/user/sickCircle/v1/findSickCircleCommentList',{params:{...data}})
}
//关注医生
export const likeDoctor=async(data)=>{
return await http.post('/health/user/inquiry/verify/v1/followDoctor',{...data},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//取关医生
export const noLikeDoctor=async (data)=>{
return await http.delete('/health/user/inquiry/verify/v1/cancelFollow',{params:{...data}},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//发布病友圈
export const postPatientCircle=async(data)=>{
// return data
return await http.post('/health/user/sickCircle/verify/v1/publishSickCircle',data,{
'Content-Type': 'application/json',
})
}
//采纳评论区
export const adoptPl=async(data)=>{
// return data
return await http.put('/health/user/sickCircle/verify/v1/adoptionProposal',data,{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//上传图片
export const upPicture=async(data)=>{
return await http.post('/health/user/sickCircle/verify/v1/uploadSickCirclePicture',data,{
headers: {
'Content-type' : 'multipart/form-data'
}
})
}
//我的钱包
export const MyMoney=async()=>{
return await http.get('/health/user/verify/v1/findUserWallet')
}
//查询钱列表
export const MoneyList=async (data)=>{
return await http.get('/health/user/verify/v1/findUserConsumptionRecordList',{params:{...data}})
}
//收藏健康咨询
export const collectHealth=async(data)=>{
return await http.get('/health/user/verify/v1/findUserInfoCollectionList',{params:{...data}})
// return data
}
// 收藏健康视频
export const collectVideo=async(data)=>{
return await http.get('/health/user/verify/v1/findVideoCollectionList',{params:{...data}})
}
//收藏病友圈
export const collectCircle=async(data)=>{
return await http.get('/health/user/verify/v1/findUserSickCollectionList',{params:{...data}})
}
//查询我的被采纳的建议
export const adoptedSuggestion=async(data)=>{
return await http.get('/health/user/verify/v1/findMyAdoptedCommentList',{params:{...data}})
}
//充值
export const topUp=async(data)=>{
// return data
return await http.post('/health/user/verify/v1/recharge',data,{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//查询档案
export const fileList=async()=>{
return await http.get('/health/user/verify/v1/findUserArchives')
}
//保存档案
export const saveFile=async(data)=>{
return await http.post('/health/user/verify/v1/addUserArchives',{...data})
}
//咨询医生
export const consultDoctor=async(data)=>{
// return data
return await http.put('/health/user/inquiry/verify/v1/consultDoctor',{...data},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//查询历史问诊
export const historyInquiry=async (data)=>{
// return data
return await http.get('/health/user/inquiry/verify/v1/findHistoryInquiryRecord',{params:{...data}})
}
//用户评论问诊服务
export const plInquiry=async(data)=>{
// return data
return await http.put('/health/user/inquiry/verify/v1/evaluationInquiry',data,{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//查询用户关注医生列表
export const followDoctorList=async (data)=>{
return await http.get('/health/user/verify/v1/findUserDoctorFollowList',{params:{...data}},{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//查询当前问诊
export const currentInterview=async()=>{
return await http.get('/health/user/inquiry/verify/v1/findCurrentInquiryRecord')
}
//结束问诊
export const endInterview=async(data)=>{
return await http.put('/health/user/inquiry/verify/v1/endInquiry',data,{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
//查询健康讲堂类名
export const videoCategory=async()=>{
return await http.get('/health/user/video/v1/findVideoCategoryList')
}
//获取具体视频
export const concreteVideo=async(data)=>{
// return data
return await http.get('/health/user/video/v1/findVideoVoList',{params:{...data}})
}
//查询我的病友圈
export const myCommunity=async(data)=>{
return await http.get('/health/user/sickCircle/verify/v1/findMySickCircleList',{params:{...data}})
}
//查询我的病友圈中的评论列表
export const myCommunityList=async(data)=>{
// return data
return await http.get('/health/user/sickCircle/verify/v1/findMySickCircleCommentList',{params:{...data}})
}

View File

@ -1,12 +1,29 @@
import axios from "axios";
import { Toast } from "vant";
// axios.defaults.baseURL='http://10.59.9.18/'
const http = axios.create({
baseURL: 'https://some-domain.com/api/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
// baseURL: 'https://some-domain.com/api/',
timeout: 9000,
// headers: {'X-Custom-Header': 'foobar'}
// baseURL:'http://10.59.9.18'
});
// 添加请求拦截器
http.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
// config.headers.userId=432
// console.log(location.pathname);
if(location.pathname.includes('/my/myPatientCircle/myPatientCommentList')||location.pathname.includes('/my/myPatientCircle/myPatientIndex')||location.pathname.includes('/vedio')||location.pathname.includes('/consultation/consultationServer/consultationChat')||location.pathname.includes('/consultation/myConsultation/MyConsultationCurrent')||location.pathname.includes('/my/myAttention')||
location.pathname.includes('/consultation/myConsultation/MyConsultationComment')||
location.pathname.includes('/consultation/myConsultation/MyConsultationHistory')||location.pathname.includes('/wallet/recharge')||location.pathname.includes('/my/myProFile/myProFileIndex')||location.pathname.includes('/my/myProFile/myProFileAddModifyProfile')||location.pathname.includes('/wallet/myWallet')||location.pathname.includes('/my/myCollection')||location.pathname.includes('/wallet/myWallet')||location.pathname.includes('/patientCircle/patientWrite')||location.pathname.includes('/patientCircle/patientDetail')||location.pathname.includes('consultation/consultationServer/consultationCDetail')){
config.headers.userId=JSON.parse(localStorage.getItem('userId'))
config.headers.sessionId=JSON.parse(localStorage.getItem('sessionId'))+''
}
Toast.loading({
message: '加载中...',
forbidClick: true,
loadingType: 'spinner',
});
return config;
}, function (error) {
// 对请求错误做些什么
@ -16,6 +33,7 @@ http.interceptors.request.use(function (config) {
// 添加响应拦截器
http.interceptors.response.use(function (response) {
// 对响应数据做点什么
Toast.clear()
return response;
}, function (error) {
// 对响应错误做点什么

View File

@ -3,13 +3,35 @@ import App from './App.vue'
import router from './router'
import store from './store'
import Vant from 'vant';
// import './assets/flexible'
import 'vant/lib/index.css';
import "normalize.css/normalize.css"
import instance from "./http/index"
import http from "./http/index"
import TabBar from './components/TabBar/TabBar.vue'
// 头部
import MyHeader from './components/MyHeader/MyHeader.vue'
// 首页的标题
import HomeTitle from './components/HomeTitle/Title.vue'
//详情页顶部的红色标题
import DetailRedTitle from './components/DetailRedTitle/index.vue'
//带返回的头部
import Back from './components/BackAndTit/index.vue'
Vue.prototype.$http=instance
//设置中
import Set from './components/Set/index.vue'
Vue.component('TabBar',TabBar)
Vue.prototype.$http=http
Vue.use(Vant);
Vue.config.productionTip = false
// 注册组件
Vue.component('MyHeader',MyHeader)
Vue.component('MyTitle',HomeTitle)
Vue.component('RedTitle',DetailRedTitle)
Vue.component('Back',Back)
Vue.component('Set',Set)
new Vue({
router,

View File

@ -0,0 +1,40 @@
import {JSEncrypt} from 'jsencrypt'
export const mixinTime={
data(){
return{
publicKey:`MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCuQd3gESx7VdIyRYUWjmjg61VIgUK6F45hClmqUMZ7xNiT5rlLM6e78osMvBF/yP7cVm7pK+NMCDWoVS1/AETpxJYqUlIC77ZAU8/MnP96IupnJL87vqhPcpdv7+VqLM38ls++yuD/F/HSoOQTv/leJh+dgE/4EYAJjOWFAbYfXwIDAQAB`
}
},
methods: {
changeTime(time){
const timestamp = time; // 待转换的时间戳
const date = new Date(timestamp); // 根据时间戳创建Date对象
const year = date.getFullYear(); // 获取年份
const month = date.getMonth() + 1; // 获取月份需要加1
const day = date.getDate(); // 获取日期
const hour = date.getHours(); // 获取小时
const minute = date.getMinutes(); // 获取分钟
const second = date.getSeconds(); // 获取秒数
const formattedDate = `${year}-${month}-${day} ${hour}:${minute}:${second}`; // 拼接成格式化后的日期字符串
return formattedDate
},
changeTimeTwo(data){
let date = new Date(data+'');
let year = date.getFullYear();
let month = date.getMonth() + 1; // getMonth()返回值是0~11
let day = date.getDate();
let result = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day);
return result
},
Encipher(data){
// 创建JSEncrypt对象
const encryptor=new JSEncrypt()
// 设置公钥
encryptor.setPublicKey(this.publicKey)
// 对数据进行加密
return encryptor.encrypt(data)
}
}
}

View File

@ -12,25 +12,33 @@ const routes = [
// 一级home页面
{
path: '/home',
name: 'home',
component: () => import('../views/home/home.vue'),
children: [{
children: [
{
path: '/',
name:"home",
component: () => import('../views/home/default/default.vue'),
},
{
path: 'information',
name: 'information',
component: () => import('../views/home/information/information.vue'),
children: [{
path: 'informationDetail',
path: 'informationDetail/:id',
name: 'informationDetail',
component: () => import('../views/home/information/detail/detail.vue'),
}]
},
},
{
path: 'knowledgeBase',
name: 'knowledgeBase',
component: () => import('../views/home/knowledgeBase/knowledgeBase.vue'),
children: [{
path: 'knowledgeDetail',
path: '/',
component: () => import('../views/home/knowledgeBase/bigPage/index.vue'),
},{
path: 'knowledgeDetail/:code/:id/:name',
name: 'knowledgeDetail',
component: () => import('../views/home/knowledgeBase/detail/detail.vue'),
@ -56,12 +64,12 @@ const routes = [
name: 'consultationServer',
component: () => import('../views/consultation/consultationServer/consultationServer.vue'),
children: [{
path: 'consultationChat',
path: 'consultationChat/:id/:name',
name: 'consultationChat',
component: () => import('../views/consultation/consultationServer/chat/chat.vue')
},
{
path: 'consultationCommentList',
path: 'consultationCommentList/:id',
name: 'consultationCommentList',
component: () => import('../views/consultation/consultationServer/commentList/commentList.vue')
},
@ -71,7 +79,7 @@ const routes = [
component: () => import('../views/consultation/consultationServer/doctorList/doctorList.vue')
},
{
path: 'consultationCDetail',
path: 'consultationCDetail/:id',
name: 'consultationCDetail',
component: () => import('../views/consultation/consultationServer/detail/detail.vue')
},
@ -152,8 +160,13 @@ const routes = [
path: '/patientCircle',
name: 'patientCircle',
component: () => import('../views/patientCircle/patientCircle.vue'),
children: [{
path: 'patientDetail',
children: [
{
path: '/',
component: () => import('../views/patientCircle/Default/index.vue')
},
{
path: 'patientDetail/:id',
name: 'patientDetail',
component: () => import('../views/patientCircle/detail/detail.vue')
}, {
@ -161,7 +174,10 @@ const routes = [
name: 'patientSearch',
component: () => import('../views/patientCircle/search/search.vue'),
children: [{
path: 'patientResult',
path: '/',
component: () => import('../views/patientCircle/search/default/index.vue'),
},{
path: 'patientResult/:name',
name: 'patientResult',
component: () => import('../views/patientCircle/search/result/result.vue'),
}]
@ -175,7 +191,7 @@ const routes = [
// -------------------------视频-------------------------
{
path: 'vedio',
path: '/vedio',
name: 'vedio',
component: () => import('../views/vedio/vedio.vue')
},
@ -184,6 +200,7 @@ const routes = [
{
path: '/my',
name: 'my',
component:() => import('../views/my/my.vue'),
children: [{
path: 'myAdoptIdea',
name: 'myAdoptIdea',
@ -209,7 +226,7 @@ const routes = [
name: 'myIndex',
component: () => import('../views/my/index/index.vue')
}, {
path: 'myLogin',
path: 'login',
name: 'myLogin',
component: () => import('../views/my/login/login.vue')
}, {
@ -243,6 +260,7 @@ const routes = [
{
path: 'myPatientCircle',
name: 'myPatientCircle',
component:()=>import('../views/my/myPatientCircle/index.vue'),
children: [{
path: 'myPatientCommentList',
name: 'myPatientCommentList',
@ -258,6 +276,7 @@ const routes = [
{
path: 'myProFile',
name: 'myProFile',
component:()=>import('../views/my/proFile/index.vue'),
children: [{
path: 'myProFileAddModifyProfile',
name: 'myProFileAddModifyProfile',

View File

@ -5,10 +5,26 @@ Vue.use(Vuex)
export default new Vuex.Store({
state: {
tabTopTitle:0,
//常见病症的选中下标
tabConLeftActive:0,
//常见药品的选中下标
tabConRightActive:0,
},
getters: {
},
mutations: {
changeTabTopTitle(state,payload){
state.tabTopTitle=payload
},
//改变常见病症的选中下标
changTabConLeftActive(state,payload){
state.tabConLeftActive=payload
},
//改变常见药品的选中下标
changeTabConRightActive(state,payload){
state.tabConRightActive=payload
}
},
actions: {
},

View File

@ -1,6 +1,6 @@
<template>
<div>
consultation<router-view></router-view>
<router-view></router-view>
</div>
</template>

View File

@ -1,13 +1,97 @@
<template>
<div>chat</div>
<div class="bigBox">
<Back :con="name" url="/consultation/consultationServer/consultationDoctorList" class="top"></Back>
<div class="main">
<div class="con">
</div>
<div class="bot">
<img src="../../../../assets/images/icon/语音.png" alt="">
<input type="text">
<p>+</p>
<div class="btn">发送</div>
</div>
</div>
</div>
</template>
<script>
// import '../../../../assets/images/icon'
import {consultDoctor} from '../../../../getData/index'
export default {
data(){
return{
name:null,
id:null
}
},
created(){
// name
this.name=this.$route.params.name
this.id=this.$route.params.id
console.log(this.id);
// console.log(this.$route.params.id);
// console.log(this.$route.params.name);
},
methods:{
async getDoctor(){
let {data}=await consultDoctor({doctorId:this.id})
console.log(data);
}
},
mounted(){
this.getDoctor()
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
background: rgb(244, 244, 244);
display: flex;
flex-direction: column;
.top{
background: #fff;
}
.main{
flex: 1;
margin-top: 10px;
background: #fff;
.bot{
display: flex;
position: fixed;
bottom: 0px;
padding-top: 10px;
padding-bottom: 10px;
// background: pink;
// border-top: 1px solid #ededed;
background: #ededed;
width: 100%;
img{
margin: 0 10px;
}
input{
margin: 0 10px;
}
p{
line-height: 30px;
margin: 0 10px;
font-size: 20px;
font-weight: bold;
}
.btn{
// color: rgb( 233,233,233);
color: #fff;
background: rgb(48,135,234);
font-weight: bold;
padding: 0 14px;
line-height: 30px;
border-radius: 4px;
}
}
}
}
</style>

View File

@ -1,15 +1,74 @@
<template>
<div>
commentList
<van-nav-bar
title="评论列表"
left-text="返回"
left-arrow
@click-left="onClickLeft"
/>
<div class="pl-box">
<div v-for="(item,index) in list" :key="index" class="everyBox">
<div class="user">
<img :src="item.headPic" alt="">
<span>{{item.nickName}}</span>
</div>
<p>{{item.content}}</p>
</div>
</div>
</div>
</template>
<script>
import {DoctorDetail} from '../../../../getData/index'
export default {
data(){
return{
id:0,
list:[]
}
},
created(){
this.getId()
},
mounted(){
this.getCon()
},
methods:{
onClickLeft(){
this.$router.push(`/consultation/consultationServer/consultationCDetail/${this.id}`)
},
getId(){
this.id=this.$route.params.id
console.log(this.id);
},
async getCon(){
let {data}=await DoctorDetail({doctorId:this.id})
this.list=data.result.commentList
console.log(this.list);
}
}
}
</script>
<style>
<style lang="scss" scoped>
.everyBox{
height: 100px;
width: 100%;
border-bottom: 1px solid #ccc;
padding: 10px 20px;
.user{
display: flex;
align-items: center;
img{
width: 40px;
height: 40px;
border-radius: 20px;
}
span{
padding-left: 10px;
}
}
}
</style>

View File

@ -1,5 +1,7 @@
<template>
<div>ftgbjnkml,<router-view></router-view></div>
<div>
<router-view></router-view>
</div>
</template>
<script>

View File

@ -1,13 +1,266 @@
<template>
<div>cons detail</div>
<div class="bigBox">
<van-nav-bar
title="医生详情"
left-text="返回"
left-arrow
@click-left="onClickLeft"
/>
<div class="bigMain">
<div class="main">
<div class="main-left">
<img :src="list.imagePic" alt="">
</div>
<div class="main-right">
<div class="div-one">
<p>{{list.doctorName}}</p>
<span>{{list.jobTitle}}</span>
<div class="follow-box" @click="handleDoctor">
<img src="../../../../assets/images/icon/common_icon_attention_large_n.png" v-if="list.followFlag==2" alt="">
<img src="../../../../assets/images/icon/common_icon_attention_large_s.png" alt="" v-if="list.followFlag==1">
</div>
</div>
<p class="hospital">{{list.inauguralHospital}}</p>
<div class="div-two">
<p>好评率{{list.praise}}</p>
<p>患者服务数{{list.serverNum}}</p>
</div>
<div class="gif">
<div class="text">他收到的礼物</div>
<div class="img-box">
<div v-for="(item,index) in list.doctorReceiveGiftList" :key="index">
<img :src="item.giftPic" alt="">
<span>{{item.receiveNum}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="bot">
<MyTitle con="个人介绍" class="compTit"/>
<p>{{list.personalProfile}}</p>
<MyTitle con="擅长领域" class="compTit"/>
<p>{{list.goodField}}</p>
<MyTitle con="用户评价" class="compTit"/>
<div>
<div v-for="(item,index) in list.commentList" :key="index" class="pl">
<div class="user">
<img :src="item.headPic" alt="">
<span>{{item.nickName}}</span>
</div>
<p>{{item.content}}</p>
</div>
</div>
</div>
<div class="pl-box">
<p @click="goMore"></p>
</div>
<div class="bot-last">
<div>
{{list.servicePrice}}元子/
</div>
<div>立即咨询</div>
</div>
</div>
</div>
</template>
<script>
// import '../../../../assets'
import {DoctorDetail,likeDoctor,noLikeDoctor} from '../../../../getData/index'
export default {
data(){
return{
id:0,
// 1 2
list:{}
}
},
created(){
this.getId()
},
methods:{
//
async handleDoctor(){
if(this.list.followFlag==2){
let data=await likeDoctor({doctorId:this.list.doctorId})
console.log(data);
this.list.followFlag=1
}else{
let data=await noLikeDoctor({doctorId:this.list.doctorId})
console.log(data);
this.list.followFlag=2
}
},
goMore(){
this.$router.push(`/consultation/consultationServer/consultationCommentList/${this.id}`)
},
onClickLeft(){
this.$router.push('/consultation/consultationServer/consultationDoctorList')
},
getId(){
// console.log(this.$route.params.id);
this.id=this.$route.params.id
},
async getCon(){
let {data}=await DoctorDetail({doctorId:this.id})
console.log(data);
this.list=data.result
}
},
mounted(){
this.getCon()
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;;
// background: #ccc;
background: rgb(244,244,244);
display: flex;
flex-direction: column;
.van-nav-bar{
width: 100%;
height: 46px;
}
.bigMain{
flex: 1;
height: 100%;
overflow-y: scroll;
}
.main{
display: flex;
justify-content: space-between;
margin-top: 20px;
.main-left{
img{
width: 128px;
height: 160px;
}
}
.main-right{
background: #fff;
width: 200px;
padding: 10px;
.div-one{
display: flex;
align-items: center;
line-height: 30px;
align-items: center;
p{
font-weight: bold;
font-size: 20px;
}
span{
font-size: 12px;
padding-left: 20px;
}
.follow-box{
padding-left: 10px;
padding-top: 10px;
img{
width: 24px;
height: 24px;
}
}
}
.hospital{
font-size: 13px;
line-height: 25px;
text-align: left;
}
.div-two{
display: flex;
font-size: 13px;
font-size: 12px;
justify-content: space-between;
line-height: 30px;
}
.gif{
.text{
border-left: 3px solid rgb(48,135,234);
text-align: left;
font-size: 12px;
padding-left: 10px;
}
.img-box{
display: flex;
justify-content: space-around;
div{
display: flex;
flex-direction: column;
}
}
img{
width: 40px;
height: 40px;
}
}
}
}
.bot{
// margin-top: 30px;
text-align: left;
p{
padding: 0 10px;
}
.compTit{
margin-top: 20px;
margin-bottom: 10px;
}
.pl{
width: 100%;
height: 100px;
border-bottom: 1px solid #ccc;
padding: 0 10px;
.user{
display: flex;
align-items: center;
padding-top: 10px;
span{
padding-left: 8px;
font-size: 12px;
}
}
img{
width: 40px;
height: 40px;
border-radius: 20px;
}
p{
padding-top: 15px;
}
}
}
.pl-box{
padding: 20px 0;
border-bottom: 1px solid #ccc;
color: rgb(32, 122, 196);
}
.bot-last{
height: 50px;
display: flex;
div:nth-child(1){
flex: 1;
line-height: 50px;
font-size: 20px;
}
div:nth-child(2){
width: 125px;
color: #fff;
line-height: 50px;
background: rgb(48,135,234);
}
}
}
</style>

View File

@ -1,15 +1,287 @@
<template>
<div>
doctorList
<div class="big">
<MyHeader/>
<div class="bigTop">
<ul class="top">
<li v-for="(item,index) in topList" :key="index" :class="tabActive==index?'active':''" @click="handleTabTop(index,item.id)">{{item.departmentName}}</li>
</ul>
</div>
<!-- 选择 -->
<van-dropdown-menu>
<van-dropdown-item v-model="value1" :options="option1" @change="changeMenuOne(value1)"/>
<van-dropdown-item v-model="value2" :options="option2" @change="changeMenuTwo(value2)"/>
</van-dropdown-menu>
<!-- 主体 -->
<div class="bigMain">
<div class="main">
<img :src="mainConData.imagePic" alt="">
<div class="mainCon">
<div class="conOne">
<h4>{{mainConData.doctorName}}</h4>
<p>{{mainConData.jobTitle}}</p>
</div>
<div class="conTwo">
<span>{{mainConData.inauguralHospital}}</span>
<img src="../../../../assets/images/icon/common_icon_more_n.png" alt="" @click="goDetail(mainConData.doctorId)">
</div>
<div class="conThree">
<span>好评率:{{mainConData.praise}}</span>
<span>服务患者数量:{{mainConData.serverNum}}</span>
</div>
<div class="conFour">
<div>{{mainConData.servicePrice}}/</div>
<div class="btn" @click="$router.push(`/consultation/consultationServer/consultationChat/${mainConData.doctorId}/${mainConData.doctorName}`)"></div>
</div>
</div>
</div>
</div>
<!-- 底部tab切换 -->
<div class="botDoctor">
<div v-for="(item,index) in doctorList" @click="handleTabBot(index)" :key="index" :class="botActive===index?'active':''">
<img :src="item.imagePic">
<p>{{item.doctorName}}</p>
</div>
<div class="icon" @click="changePage">>></div>
</div>
</div>
</template>
<script>
import {Toast} from 'vant'
import {getMenu,doctor} from '../../../../getData/index'
export default {
data(){
return{
topList:[],
doctorId:7,
tabActive:0,
value1: 1,
value2: 'aa',
botActive:0,
botPage:1,
condition:1,
sortBy:'',
option1: [
{ text: '综合', value: 1 },
{ text: '好评', value: 2 },
{ text: '咨询数',value:3 },
{ text: '价格', value: 4 },
],
option2: [
{ text: '默认价格', value: 'aa' },
{ text: '价格降序', value: 1 },
],
doctorList:[],
mainConData:{}
}
},
methods:{
// this.mainConData=this.doctorList[index]
goDetail(id){
this.$router.push(`/consultation/consultationServer/consultationCDetail/${id}`)
// console.log(id);
},
//
changeMenuOne(value){
this.condition=value
this.sortBy=''
this.getDoctor()
},
//
changeMenuTwo(value){
this.sortBy=value
if(this.sortBy===2){
this.getDoctor()
}
},
//
handleTabTop(index,id){
this.tabActive=index
this.doctorId=id
this.condition=1
this.sortBy=''
this.botPage=1
this.value1= 1,
this.value2= 'aa',
this.getDoctor()
},
//Tab
handleTabBot(index){
this.botActive=index
this.mainConData=this.doctorList[index]
},
changePage(){
this.botPage++
this.botActive=0
// if(this.botPage>5){
// Toast.fail('')
// return
// }else{
// this.getDoctor()
// // console.log(this.botPage);
// }
this.getDoctor()
},
async getTopList(){
let {data}=await getMenu()
// console.log(data.result);
this.topList=data.result
},
async getDoctor(){
let {data}=await doctor({deptId:this.doctorId,condition:this.condition,sortBy:this.sortBy,page:this.botPage,count:3})
console.log(data.result);
if(data.result.length){
this.doctorList=data.result
this.mainConData=data.result[0];
}else{
Toast.fail('已经加载完了')
}
}
},
created(){
this.getTopList()
this.getDoctor()
}
}
</script>
<style>
<style lang="scss" scoped>
.big{
width: 100%;
display: flex;
flex-direction: column;
}
.bigTop{
width: 100%;
overflow-x: scroll;
height: 40px;
line-height: 35px;
.top{
display: flex;
width: 200%;
.active{
color: red;
}
li{
width: 90px;
}
}
}
.bigMain{
margin-top: 20px;
width:273px ;
height: 330px;
margin: 20px auto;
.main{
border-radius: 20px;
position: relative;
img{
border-radius: 20px;
}
.mainCon{
position: absolute;
bottom: 0;
width: 100%;
text-align: left;
background: #fff;
p,span{
font-size: 13px;
}
.conOne{
display: flex;
padding-left: 20px;
margin-top: 15px;
p{
margin-left: 20px;
}
}
.conTwo{
padding-left: 20px;
margin-top: 10px;
display: flex;
align-items: center;
justify-content: space-between;
img{
height: 24px;
width: 24px;
margin-right: 30px;
}
}
.conThree{
padding-left: 20px;
margin-top: 10px;
margin-bottom: 10px;
span:nth-child(2){
padding-left: 20px;
}
}
.conFour{
border-top:1px solid #ccc ;
display: flex;
height: 40px;
align-items: center;
// padding-top: 10px;
// margin-top: 5px;
div:nth-child(1){
flex: 1;
text-align: center;
}
.btn{
background: rgb(48,135,234);
height: 100%;
line-height: 40px;
color: #fff;
padding: 0 5px;
border-radius: 0 0 10px 0;
}
}
}
}
}
.botDoctor{
display: flex;
justify-content: space-around;
position: relative;
margin-top: 20px;
div{
border-radius: 10px;
img{
width: 90px;
height: 100px;
border-radius: 10px;
}
p{
position: absolute;
bottom: 1px;
text-align: center;
width: 90px;
height: 30px;
line-height: 30px;
//
background: rgb(0, 0, 0,.5);
border-radius: 0 0 10px 10px;
font-size: 12px;
color: #fff;
}
}
.active{
p{
background: rgb(89,156,225);
}
}
.icon{
height: 100%;
line-height: 104px;
font-weight: bold;
}
}
</style>

View File

@ -1,13 +1,136 @@
<template>
<div>comment</div>
<div class="bigBox">
<Back con="评价问诊" url="/consultation/myConsultation/MyConsultationHistory" class="top"></Back>
<div class="main">
<div class="one">
<MyTitle con="文字评价" class="tit"></MyTitle>
<van-field
v-model="message"
rows="6"
autosize
type="textarea"
maxlength="200"
placeholder="请输入留言"
show-word-limit
/>
</div>
<div class="two">
<MyTitle con="星级评价" class="tit"></MyTitle>
<div class="con">
<p>医生专业度</p>
<van-rate v-model="value1" icon="like" void-icon="like-o" />
</div>
<div class="con">
<p>服务满意度</p>
<van-rate v-model="value2" icon="like" void-icon="like-o" />
</div>
</div>
<div class="bot">
<div class="up" @click="$router.push({path:'/consultation/myConsultation/MyConsultationHistory'})"></div>
<div class="ok" @click="ok"></div>
</div>
</div>
</div>
</template>
<script>
import {plInquiry} from '@/getData/index.js'
import { Toast } from 'vant'
export default {
data(){
return{
message:'',
value1:0,
value2:0,
id:null,
recordId:null
}
},
created(){
this.id=this.$route.query.id
this.recordId=this.$route.query.recordId
// console.log(this.$route.query.id);
// console.log(this.$route.query.recordId);
},
methods:{
ok(){
let res={
inquiryRecordId:this.recordId*1,
doctorId:this.id*1,
evaluate:this.message,
majorDegree:this.value1,
satisfactionDegree:this.value2
}
this.submit(res)
},
async submit(res){
let {data}=await plInquiry(res)
if(data.status=='0000'){
Toast.success(data.message)
this.$router.push('/consultation/myConsultation/MyConsultationHistory')
}
console.log(data);
}
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
// background: rgb(244, 244, 244);
display: flex;
flex-direction: column;
.top{
// background: #fff;
border-bottom: 1px solid rgb(244, 244, 244);
}
.main{
flex: 1;
overflow: scroll;
margin-top: 10px;
.tit{
margin-left: 10px;
}
.one{
border-bottom: 3px solid #ededed;
}
.two{
margin-top: 10px;
padding-bottom: 30px;
border-bottom: 3px solid #ededed;
.con{
display: flex;
align-items: center;
margin-left: 10px;
margin-top: 20px;
p{
font-size: 13px;
font-weight: bold;
margin-right: 10px;
}
}
}
.bot{
display: flex;
justify-content: space-around;
margin-top: 150px;
color: #fff;
.up{
background:rgb(135,135,135);
padding: 8px 15px;
border-radius: 3px;
}
.ok{
background:rgb(38,112,229);
padding: 8px 15px;
border-radius: 3px;
}
}
}
}
</style>

View File

@ -1,15 +1,108 @@
<template>
<div>
current
<div class="bigBox">
<Back con="当前问诊" url="/my/myIndex" class="top"></Back>
<div class="main" v-if="!list">
<van-empty description="空空如也" />
</div>
<div class="main1" v-else>
<img :src="list.imagePic" alt="">
<div class="con">
<h4>{{list.doctorName}}</h4>
<p>{{list.jobTitle}}</p>
<p>{{list.department}}</p>
<p>问诊时间{{changeTime(list.inquiryTime)}}</p>
</div>
<div class="bot">
<div>继续问诊</div>
<div @click="no"></div>
</div>
</div>
</div>
</template>
<script>
import {currentInterview,endInterview} from '@/getData/index.js'
import {mixinTime} from '@/mixins/mixins'
export default {
mixins:[mixinTime],
data(){
return{
list:null
}
},
methods:{
no(){
this.end()
},
async getList(){
let {data}=await currentInterview()
if(data.result){
this.list=data.result
}
console.log(this.list);
},
async end(){
let {data}=await endInterview({recordId:this.list.recordId})
// console.log(data);
this.getList()
}
},
mounted(){
this.getList()
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
height: 100vh;
width: 100vw;
background: rgb(244, 244, 244);
display: flex;
flex-direction: column;
.top{
background: #fff;
}
.main,.main1{
flex: 1;
overflow-y: scroll;
}
.main1{
display: flex;
flex-direction: column;
img{
width: 230px;
height: 250px;
margin: 40px auto;
}
.con{
width: 85%;
margin: 0 auto;
border: 1px solid #ccc;
padding: 20px 0;
background: rgb(241,241,241);
p{
line-height: 25px;
}
}
.bot{
width: 85%;
margin: 30px auto;
display: flex;
justify-content: space-around;
div{
color: #fff;
padding: 11px;
font-size: 12px;
border-radius: 5px;
}
div:first-child{
background: rgb(135,135,135);
}
div:last-child{
background: rgb(38,112,229);
}
}
}
}
</style>

View File

@ -1,13 +1,117 @@
<template>
<div>history</div>
<div class="bigBox">
<Back con="历史问诊" class="top" url="/my/myIndex"></Back>
<div class="main">
<div v-if="list.length == 0">
<van-empty description="空空如也" />
</div>
<div v-else>
<div v-for="(item, index) in list" :key="index" class="con">
<img :src="item.imagePic" alt="" />
<div class="right">
<div class="right-top">
<h3>{{item.doctorName}}</h3>
<span>{{item.jobTitle}}</span>
</div>
<div class="right-center">问诊时间
<p>
{{changeTime(item.inquiryTime)}}
</p>
</div>
<div class="right-bot">
<p>查看问诊记录</p>
<!-- /consultation/myConsultation/MyConsultationComment -->
<!-- -->
<p v-if="item.evaluateStatus=='1'" @click="$router.push({path:'/consultation/myConsultation/MyConsultationComment',query:{id:`${item.doctorId}`,recordId:`${item.recordId}`}})"></p>
<p v-else></p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {mixinTime} from '@/mixins/mixins'
import { historyInquiry } from "../../../../getData/index";
export default {
}
mixins:[mixinTime],
data() {
return {
list: [],
page:1,
count:5
};
},
created() {
this.getHistory();
},
methods: {
async getHistory() {
let { data } = await historyInquiry({ page: this.page, count: this.count });
console.log(data);
this.list = data.result;
},
},
};
</script>
<style>
</style>
<style lang="scss" scoped>
.bigBox {
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
background: rgb(244, 244, 244);
.top {
background: #fff;
}
.main{
flex: 1;
overflow-y: scroll;
.con{
display: flex;
padding: 0 20px;
margin: 20px 0;
border-bottom:3px solid #ccc ;
padding-bottom: 10px;
img{
width: 150px;
height: 150px;
}
.right{
display: flex;
flex: 1;
flex-direction: column;
justify-content: space-around;
margin-left: 25px;
.right-top{
display: flex;
align-items: center;
span{
font-size: 12px;
padding-left: 20px;
}
}
.right-center{
font-size: 12px;
p{
padding-top: 10px;
}
}
.right-bot{
display: flex;
justify-content: space-between;
p{
font-size: 12px;
background: rgb(38,112,229);
color: #fff;
padding:6px 5px;
border-radius: 5px;
}
}
}
}
}
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<div>
myConsultation<router-view></router-view>
<router-view></router-view>
</div>
</template>

View File

@ -0,0 +1,358 @@
<template>
<div class="bigBox">
<MyHeader>
<template slot="center">
<div class="inp" @click="$router.push('/home/search')">
<span>病证药品名称医生姓名</span>
</div>
</template>
</MyHeader>
<!-- 轮播图 -->
<van-swipe style="height: 200px;" vertical>
<van-swipe-item v-for="(item,index) in swiperList" :key="index">
<img :src="item.imageUrl" style="height:200px;width:100%"/>
</van-swipe-item>
</van-swipe>
<MyTitle con="知识宝典"/>
<div class="one">
<div @click="handleOne">
<!-- <router-link to="/home/knowledgeBase"> -->
<p>常见病症</p>
<img src="../../../assets/images/img/common_disease.png" alt="">
<!-- </router-link> -->
</div>
<div @click="handleTwo">
<!-- <router-link to="/home/knowledgeBase"> -->
<p>常见药品</p>
<img src="../../../assets/images/img/common_drugs.png" alt="">
<!-- </router-link> -->
</div>
</div>
<MyTitle con="问诊咨询" class="comm"/>
<div class="two">
<div class="menuBox">
<div v-for="(item,index) in MenuList" :key="index" @click="goBigPage(index)">
<img :src="item.pic" alt="">
<p>{{item.departmentName}}</p>
</div>
</div>
</div>
<MyTitle con="健康测评"/>
<img src="../../../assets/images/img/health_assessment.png" alt="" style="width:100%" @click="jumpDoctor">
<MyTitle con="健康咨询"/>
<ul class="tabTop">
<li v-for="(item,index) in TabTitle" :class="TabTopActive===index?'active':''" @click="changeTab(index,item.id)" :key="index">{{item.name}}</li>
</ul>
<!-- <div class="tabList">
<div v-for="(item,index) in tabList" :key="index" @click="toDetail(item.id)">
<dl v-if="item.thumbnail.length>1" class="tabBigLength" >
<dd>{{item.title}}</dd>
<dt>
<img :src="v" alt="" v-for="(v,i) in item.thumbnail" :key="i">
</dt>
<div class="tabListBtn">
<span>{{item.source}}</span>
<span>{{item.releaseTime}}</span>
</div>
</dl>
<div v-else class="tabSmallLength">
<div class="top">
<img :src="v" alt="" v-for="(v,i) in item.thumbnail" :key="i">
<dd>{{item.title}}</dd>
</div>
<div class="tabListBtn">
<span>{{item.source}}</span>
<span>{{item.releaseTime}}</span>
</div>
</div>
</div>
</div> -->
<van-list
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
>
<div class="tabList">
<div v-for="(item,index) in tabList" :key="index" @click="toDetail(item.id)">
<dl v-if="item.thumbnail.length>1" class="tabBigLength" >
<dd>{{item.title}}</dd>
<dt>
<img :src="v" alt="" v-for="(v,i) in item.thumbnail" :key="i">
</dt>
<div class="tabListBtn">
<span>{{item.source}}</span>
<span>{{item.releaseTime}}</span>
</div>
</dl>
<div v-else class="tabSmallLength">
<div class="top">
<img :src="v" alt="" v-for="(v,i) in item.thumbnail" :key="i">
<dd>{{item.title}}</dd>
</div>
<div class="tabListBtn">
<span>{{item.source}}</span>
<span>{{item.releaseTime}}</span>
</div>
</div>
</div>
</div>
</van-list>
<TabBar>
<template slot="home">
<img src="../../../assets/images/icon/home_active.png" alt="">
</template>
<template slot="center">
<img src="../../../assets/images/icon/center.png" @click="$router.push('/patientCircle')" alt="">
</template>
<template slot="video">
<img src="../../../assets/images/icon/video.png" @click="$router.push('/vedio')">
</template>
</TabBar>
</div>
</template>
<script>
import {mapState,mapMutations} from 'vuex'
import {mixinTime} from '../../../mixins/mixins.js'
import {getBanner, getMenu,getHealth,getTabList} from '../../../getData/index'
import { Toast } from 'vant';
export default {
mixins:[mixinTime],
data(){
return{
swiperList:[],
MenuList:[],
TabTitle:[],
tabList:[],
TabTopActive:0,
tabListId:1,
tabListPage:1,
tabListCount:5,
//
loading: false,
finished: false,
}
},
computed:{
...mapState(['tabTopTitle'])
},
methods:{
...mapMutations(['changeTabTopTitle','changTabConLeftActive','changeTabConRightActive']),
goBigPage(index){
this.$router.push('/home/knowledgeBase')
this.changeTabTopTitle(0)
this.changTabConLeftActive(index)
},
//
onLoad() {
this.tabListPage++
this.getTabList()
},
//
handleOne(){
this.$router.push('/home/knowledgeBase')
this.changeTabTopTitle(0)
this.changTabConLeftActive(0)
this.changeTabConRightActive(0)
},
//
handleTwo(){
this.$router.push('/home/knowledgeBase')
this.changeTabTopTitle(1)
this.changTabConLeftActive(0)
this.changeTabConRightActive(0)
},
jumpDoctor(){
this.$router.push('/consultation/consultationServer/consultationDoctorList')
},
changeTab(index,id){
this.TabTopActive=index
this.tabList=[]
this.tabListPage=1
this.tabListId=id
this.finished = false;
this.getTabList()
},
toDetail(id){
this.$router.push(`/home/information/informationDetail/${id}`)
},
tabListImg(data){
data.forEach(v=>{
})
},
//
async getBannerList(){
let {data}=await getBanner()
// console.log(data);
this.swiperList=data.result
},
//
async getMenuList(){
let {data}=await getMenu()
this.MenuList=data.result
},
//tab
async getTabTitle(){
let data=await getHealth()
this.TabTitle=data.data.result
},
//tab
async getTabList(){
console.log(this.tabListPage);
let {data}=await getTabList({plateId:this.tabListId,page:this.tabListPage,count:this.tabListCount})
if(data.result.length){
data.result.forEach(v=>{
let thumbnail=v.thumbnail.split(';')
let releaseTime=this.changeTime(v.releaseTime)
let newV=Object.assign({...v},{thumbnail},{releaseTime})
this.tabList.push(newV)
})
Toast.success('加载成功')
this.loading = false;
}else{
//
Toast.fail('没有更多了')
this.finished = true;
}
console.log(data);
},
},
mounted(){
this.getBannerList()
this.getMenuList()
this.getTabTitle()
this.getTabList()
}
};
</script>
<style lang="scss" scoped>
.bigBox{
background: rgb(244,244,244);
}
.one{
display: flex;
background: rgb(244,244,244);
justify-content: space-between;
div{
background: #fff;
width: 184px;
margin: 2px 0;
p{
text-align: left;
font-size: 15px;
padding: 10px 5px;
color: black;
}
img{
width: 165px;
height: 165px;
}
}
}
.two{
background: rgb(244,244,244);
margin-top: 2px;
margin-bottom: 2px;
.menuBox{
display: flex;
flex-wrap: wrap;
// background: #fff;
div{
width: 25%;
padding-top: 2px;
background: #fff;
padding-top: 2px;
img{
width: 60%;
height: 60%;
}
p{
font-size: 12px;
padding-top: 3px;
}
}
}
}
.tabTop{
display: flex;
font-size: 10px;
justify-content: space-around;
background: #fff;
margin: 2px 0;
padding: 12px 0;
.active{
color: red;
}
}
.tabList{
.tabBigLength{
background: #fff;
margin: 10px 0;
text-align: left;
padding: 7px;
dd{
font-weight: bold;
}
dt{
display: flex;
justify-content: space-around;
margin-top: 9px;
img{
width: 30%;
}
}
}
.tabSmallLength{
background: #fff;
margin: 10px 0;
padding: 7px 7px 10px 7px;
dd{
font-weight: bold;
}
.top{
display: flex;
text-align: left;
justify-content: space-around;
}
img{
width: 30%;
margin-right: 10px;
}
}
.tabListBtn{
display: flex;
justify-content: space-between;
// color: #ccc;
font-size: 13px;
padding-top: 15px;
}
}
</style>

View File

@ -1,15 +1,179 @@
<template>
<div>
<router-view></router-view>
</div>
<router-view></router-view>
</template>
<script>
export default {};
import {mixinTime} from '../../mixins/mixins.js'
import {getBanner, getMenu,getHealth,getTabList} from '../../getData/index'
export default {
mixins:[mixinTime],
data(){
return{
swiperList:[],
MenuList:[],
TabTitle:[],
tabList:[],
TabTopActive:0,
tabListId:1,
tabListPage:1,
tabListCount:5,
}
},
methods:{
changeTab(index,id){
this.TabTopActive=index
// console.log(index,id);
this.tabList=[]
this.tabListId=id
this.getTabList()
},
tabListImg(data){
data.forEach(v=>{
})
},
async getBannerList(){
let {data}=await getBanner()
// console.log(data);
this.swiperList=data.result
},
async getMenuList(){
let {data}=await getMenu()
this.MenuList=data.result
},
async getTabTitle(){
let data=await getHealth()
this.TabTitle=data.data.result
},
async getTabList(){
let {data}=await getTabList({plateId:this.tabListId,page:this.tabListPage,count:this.tabListCount})
data.result.forEach(v=>{
let thumbnail=v.thumbnail.split(';')
// console.log(thumbnail);
let releaseTime=this.changeTime(v.releaseTime)
let newV=Object.assign({...v},{thumbnail},{releaseTime})
this.tabList.push(newV)
})
}
},
mounted(){
this.getBannerList()
this.getMenuList()
this.getTabTitle()
this.getTabList()
}
};
</script>
<style lang="scss" >
<style lang="scss" scoped>
.bigBox{
background: rgb(244,244,244);
}
.one{
display: flex;
background: rgb(244,244,244);
justify-content: space-between;
div{
background: #fff;
width: 184px;
margin: 2px 0;
p{
text-align: left;
font-size: 15px;
padding: 10px 5px;
}
img{
width: 165px;
height: 165px;
}
}
}
.two{
background: rgb(244,244,244);
margin-top: 2px;
margin-bottom: 2px;
.menuBox{
display: flex;
flex-wrap: wrap;
// background: #fff;
div{
width: 25%;
padding-top: 2px;
background: #fff;
padding-top: 2px;
img{
width: 60%;
height: 60%;
}
p{
font-size: 12px;
padding-top: 3px;
}
}
}
}
.tabTop{
display: flex;
font-size: 10px;
justify-content: space-around;
background: #fff;
margin: 2px 0;
padding: 12px 0;
.active{
color: red;
}
}
.tabList{
.tabBigLength{
background: #fff;
margin: 10px 0;
text-align: left;
padding: 7px;
dd{
font-weight: bold;
}
dt{
display: flex;
justify-content: space-around;
margin-top: 9px;
img{
width: 30%;
}
}
}
.tabSmallLength{
background: #fff;
margin: 10px 0;
padding: 7px 7px 10px 7px;
dd{
font-weight: bold;
}
.top{
display: flex;
text-align: left;
justify-content: space-around;
}
img{
width: 30%;
margin-right: 10px;
}
}
.tabListBtn{
display: flex;
justify-content: space-between;
// color: #ccc;
font-size: 13px;
padding-top: 15px;
}
}
</style>

View File

@ -1,10 +1,43 @@
<template>
<div>detail</div>
<div>
<MyHeader/>
<div v-html="html.content">
</div>
</div>
</template>
<script>
import {jumpDetail} from '../../../../getData/index.js'
export default {
data(){
return{
detailId:0,
html:""
}
},
beforeCreate(){
this.$nextTick(()=>{
this.detailId=this.$route.params.id
console.log(this.detailId);
})
},
created(){
this.$nextTick(()=>{
this.goDetail()
})
},
methods:{
async goDetail(){
let {data}=await jumpDetail({infoId:this.detailId})
// console.log(data);
this.html=data.result
console.log(this.html);
}
}
}
</script>

View File

@ -1,5 +1,7 @@
<template>
<div>infomationsearch<router-view></router-view></div>
<div>
<router-view></router-view>
</div>
</template>
<script>

View File

@ -0,0 +1,168 @@
<template>
<div class="bigBox">
<MyHeader />
<van-tabs v-model="active" >
<van-tab title="常见病症">
<ul class="one-left">
<li v-for="(item,index) in oneTitle" :key="index" :class="index===tabConLeftActive?'active':''" @click="changeLeftLi(index,item.id)">{{item.departmentName}}</li>
</ul>
<ul class="one-right">
<li v-for="(item,index) in oneList" :key="index" @click="goDetailLeft(item.id,item.name)">{{item.name}}</li>
</ul>
</van-tab>
<van-tab title="常见药品">
<ul class="one-left">
<li v-for="(item,index) in twoTitle" :key="index" :class="index===tabConRightActive?'active':''" @click="changeRightLi(index,item.id)">{{item.name}}</li>
</ul>
<ul class="two-right">
<li v-for="(item,index) in twoList" :key="index" @click="goDetailRight(item.id,item.name)">{{item.name}}</li>
</ul>
</van-tab>
</van-tabs>
</div>
</template>
<script>
import {mapState,mapMutations} from 'vuex'
import {CommonDisease ,CommonDrug,EveryDisease,EveryDrug} from '../../../../getData/index'
export default {
computed:{
...mapState(['tabTopTitle','tabConLeftActive','tabConRightActive'])
},
data(){
return{
active:0,
oneTitle:[],
oneList:[],
twoTitle:[],
twoList:[],
leftActive:0,
leftId:7,
rightActive:0,
rightId:1,
}
},
beforeCreate(){
this.$nextTick(()=>{
this.active=this.tabTopTitle
})
},
methods:{
...mapMutations(['changTabConLeftActive','changeTabConRightActive']),
//
goDetailLeft(id,name){
// console.log(id);
this.$router.push(`/home/knowledgeBase/knowledgeDetail/1/${id}/${name}`)
},
//
goDetailRight(id,name){
// console.log(id);
this.$router.push(`/home/knowledgeBase/knowledgeDetail/2/${id}/${name}`)
},
//li
changeLeftLi(index,id){
this.changTabConLeftActive(index)
this.oneList=[]
this.leftId=id
this.getEveryLeft()
},
//li
changeRightLi(index,id){
this.changeTabConRightActive(index)
this.twoList=[]
this.rightId=id
this.getEveryRight()
},
async getTabLeft(){
let {data}=await CommonDisease()
this.oneTitle=data.result
},
async getEveryLeft(){
let {data}=await EveryDisease({departmentId:this.leftId})
this.oneList=data.result
},
async getTabRight(){
let {data}=await CommonDrug()
this.twoTitle=data.result
console.log(this.twoTitle);
},
async getEveryRight(){
let {data}=await EveryDrug({drugsCategoryId:this.rightId,page:1,count:5})
this.twoList=data.result
console.log(this.twoList);
}
},
mounted(){
this.getTabLeft()
this.getTabRight()
this.getEveryLeft()
this.getEveryRight()
}
}
</script>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
background: rgb(244,244,244);
display: flex;
flex-direction: column;
.van-tabs{
margin-top: 5px;
height: 100%;
display: flex;
flex-direction: column;
.van-tabs__content{
flex: 1;
background: red;
}
.van-tab__pane{
height: 562px;
margin-top: 5px;
display: flex;
justify-content: space-between;
.one-left{
width: 28%;
height: 100%;
li{
height: 38px;
line-height: 38px;
margin: 10px 0;
}
li.active{
background: #fff;
border-left: 3px solid rgb(48,135,234);
}
}
.one-right{
width: 72%;
background: #fff;
overflow-y: scroll;
display: flex;
flex-wrap: wrap;
li{
width: 50%;
height: 20px;
margin: 20px 0;
}
}
.two-right{
width: 72%;
background: #fff;
font-size: 13px;
li{
height: 40px;
line-height: 40px;
text-align: left;
}
}
}
}
}
</style>

View File

@ -1,13 +1,109 @@
<template>
<div>infor detail</div>
<div>
<MyHeader/>
<RedTitle/>
<div class="con" v-if="this.code==1">
<h3>{{name}}</h3>
<h4>[药品成分]</h4>
<p>{{listCon.chineseMedicineTreatment}}</p>
<h4>[注意事项]</h4>
<p>{{listCon.benefitTaboo}}</p>
<h4>[主治功能]</h4>
<p>{{listCon.pathology}}</p>
<h4>[副作用]</h4>
<p>{{listCon.symptom}}</p>
<h4>[原因]</h4>
<p>{{listCon.westernMedicineTreatment}}</p>
</div>
<div class="con" v-else-if="this.code==2">
<h3>{{name}}</h3>
<h4>[药品成分]</h4>
<p>{{listCon.component}}</p>
<h4>[用药禁忌]</h4>
<p>{{listCon.mindMatter}}</p>
<h4>[主治功能]</h4>
<p>{{listCon.effect}}</p>
<h4>[用法用量]</h4>
<p>{{listCon.usage}}</p>
<h4>[药品性状]</h4>
<p>{{listCon.shape}}</p>
<h4>[包装规格]</h4>
<p>{{listCon.packing}}</p>
<h4>[储存条件]</h4>
<p>{{listCon.storage}}</p>
<h4>[注意事项]</h4>
<p>{{listCon.sideEffects}}</p>
<h4>[批准文号]</h4>
<p>{{listCon.approvalNumber}}</p>
</div>
</div>
</template>
<script>
import {CommonDiseaseDetail,CommonDrugDetail} from '../../../../getData/index.js'
export default {
data(){
return{
detailId:0,
name:"",
code:1,
listCon:{}
}
},
beforeCreate(){
this.$nextTick(()=>{
this.detailId=this.$route.params.id
this.name=this.$route.params.name
this.code=this.$route.params.code
})
},
created(){
this.$nextTick(()=>{
if(this.code==1){
console.log(1);
this.goDetailLeft()
}else{
console.log(2);
this.goDetailRight()
}
})
},
methods:{
async goDetailLeft(){
let {data}=await CommonDiseaseDetail({id:this.detailId})
// console.log(data.result);
this.listCon=data.result
console.log(this.listCon);
},
async goDetailRight(){
let {data}=await CommonDrugDetail({id:this.detailId})
// console.log(data.result);
this.listCon=data.result
console.log(this.listCon);
}
}
}
</script>
<style>
<style lang="scss" scoped>
.con{
text-align: left;
padding: 0 15px;
h3{
margin: 10px 0;
}
h4{
margin: 10px 0;
}
p{
font-size: 13px;
line-height: 20px;
}
}
</style>

View File

@ -1,12 +1,14 @@
<template>
<div>knowledgeBasesearchz,<router-view></router-view></div>
<div>
<router-view></router-view>
</div>
</template>
<script>
export default {
<script>
export default {
}
</script>
}
</script>
<style>

View File

@ -1,13 +1,198 @@
<template>
<div>search</div>
<div class="bigBox">
<div class="top">
<van-icon name="arrow-left" @click="handlePage"/>
<input type="text" v-model="inp" placeholder="病症、药品名称、医生姓名">
<span @click="onSearch"></span>
</div>
<div class="main" v-if="show">
<div class="hot">
<p>热门搜索</p>
<ul>
<li v-for="(item,index) in hotList" :key="index">{{item.name}}</li>
</ul>
</div>
<div class="history">
<p>历史搜索</p>
<ul>
<li v-for="(item,index) in historyArr" :key="index">
<span>{{item}}</span>
<span @click="removeHistory(index)">x</span>
</li>
</ul>
</div>
</div>
<div class="mainTwo" v-else>
<ul>
<h4>医生</h4>
<li v-for="(item,index) in doctorSearchVoList" :key="index">{{item.doctorName}}</li>
</ul>
<ul>
<h4>药品</h4>
<li v-for="(item,index) in drugsSearchVoList" :key="index">{{item.drugsName}}</li>
</ul>
<ul>
<h4>病症</h4>
<li v-for="(item,index) in diseaseSearchVoList" :key="index">{{item.diseaseName}}</li>
</ul>
</div>
</div>
</template>
<script>
export default {
<script>
import {hot,getSearch} from '../../../getData/index.js'
//
import _ from 'lodash'
export default{
data(){
return{
hotList:[],
inp:'',
repeatIndex:null,
historyArr:JSON.parse(localStorage.getItem('history'))||[],
show:true,
//
doctorSearchVoList:[],
//
diseaseSearchVoList:[],
//
drugsSearchVoList:[]
}
},
created(){
this.getHot()
},
computed:{
},
methods:{
handlePage(){
if(this.show){
this.$router.push('/home')
}else{
this.show=true
}
},
//
removeHistory(index){
this.historyArr.splice(index,1)
localStorage.setItem('history',JSON.stringify(this.historyArr))
},
//
onSearch:_.debounce(function(){
this.historyArr.unshift(this.inp)
this.historyArr=[...new Set(this.historyArr)]
//console.log(this.historyArr)
localStorage.setItem('history',JSON.stringify(this.historyArr))
this.show=false
this.handleSearch()
},1000),
async getHot(){
let {data}=await hot();
this.hotList=data.result
},
async handleSearch(){
let {data}=await getSearch({keyWord:this.inp})
console.log(data)
this.doctorSearchVoList=data.result.doctorSearchVoList
this.diseaseSearchVoList=data.result.diseaseSearchVoList
this.drugsSearchVoList=data.result.drugsSearchVoList
}
},
}
</script>
<style lang="scss">
.bigBox{
width: 100vw;
height: 100vh;
background: rgb(244,244,244);
.top{
display: flex;
width: 100%;
height: 50px;
background: #fff;
align-items: center;
justify-content: space-around;
.van-icon{
font-weight: bold;
}
input{
height: 36px;
width: 270px;
border-radius: 20px;
border: 1px solid #ccc;
font-size: 12px;
padding-left: 20px;
}
}
</script>
<style>
</style>
.main{
background: #fff;
margin-top: 20px;
.hot{
text-align: left;
padding: 10px 20px;
p{
color: rgb(48,135,234);
}
ul{
display: flex;
flex-wrap: wrap;
margin-top: 10px;
li{
padding: 5px 8px;
background: rgb(242,242,242);
margin: 5px;
border-radius: 20px;
font-size: 12px;
}
}
}
.history{
p{
color: rgb(48,135,234);
text-align: left;
padding-left:20px ;
}
ul{
margin-top: 20px;
padding:0 20px ;
li{
display: flex;
justify-content: space-between;
text-align: left;
width: 100%;
height: 30px;
line-height: 30px;
font-size: 12px;
}
}
}
}
.mainTwo{
margin-top: 20px;
background: #fff;
display: flex;
flex-direction: column;
text-align: left;
ul{
margin-top: 20px;
padding: 0 20px;
h4{
color: rgb(48,135,234);
}
li{
line-height: 30px;
padding-left: 10px;
}
}
}
}
</style>

View File

@ -1,15 +1,120 @@
<template>
<div>
attention
<div class="bigBox">
<Back con="我的关注" url="/my/myIndex" class="top"></Back>
<div class="main" v-if="list.length==0">
<van-empty description="空空如也" />
</div>
<div class="main1" v-else>
<div v-for="(item,index) in list" :key="index" class="every">
<img :src="item.imagePic" alt="">
<van-swipe-cell class="right">
<div class="one">
<h3>{{item.name}}</h3>
<span>{{item.jobTitle}}</span>
</div>
<div class="two">{{item.inauguralHospital}}</div>
<div class="three">
<p>好评率:{{item.praise}}</p>
<p>服务患者指数:{{item.number}}</p>
</div>
<template #right>
<van-button square text="删除" type="danger" class="delete-button" @click="unfollow(item.doctorId)"/>
</template>
</van-swipe-cell>
</div>
</div>
</div>
</template>
<script>
import {followDoctorList,noLikeDoctor} from '@/getData/index.js'
export default {
data(){
return{
list:[]
}
},
methods:{
//
async unfollow(id){
let {data}=await noLikeDoctor({doctorId:id})
console.log(data);
this.getList()
},
//
async getList(){
let {data}=await followDoctorList({page:1,count:5})
this.list=data.result
console.log(this.list);
},
},
created(){
this.getList()
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
background: rgb(244, 244, 244);
.top{
background: #fff;
}
.main,.main1{
margin-top: 10px;
background: #fff;
flex: 1;
overflow-y: scroll;
}
.main1{
.every{
width: 90%;
display: flex;
// border: 2px solid red;
box-shadow: 2px 2px 2px 3px #ccc ;
margin: 10px auto;
padding: 15px 0;
.goods-card {
margin: 0;
background-color: #fff;
}
.delete-button {
height: 100%;
}
img{
width: 65px;
height: 78px;
margin: 0 20px;
}
.right{
text-align: left;
flex: 1;
margin-left: 25px;
.one{
display: flex;
align-items: center;
margin-top: 10px;
span{
font-size: 12px;
}
}
.two{
margin-top: 10px;
}
.three{
justify-content: space-between;
display: flex;
margin-top: 10px;
font-size: 12px;
padding-right: 15px;
}
}
}
}
}
</style>

View File

@ -1,15 +1,258 @@
<template>
<div>
collection
<div class="bigBox">
<Back con="我的收藏" color="#000" url="/my/myIndex" class="back" />
<div class="main">
<ul class="tabTit">
<li
v-for="(item, index) in tabTit"
@click="changeTit(index)"
:class="index == active ? 'active' : ''"
:key="index"
>
{{ item }}
</li>
</ul>
<div class="con" v-if="list.length > 0">
<div class="one" v-if="active == 0">
<div
v-for="(item, index) in list"
:key="index"
@click="toDetail(item.id)"
>
<dl v-if="item.thumbnail.length > 1" class="tabBigLength">
<dd>{{ item.title }}</dd>
<dt>
<img
:src="v"
alt=""
v-for="(v, i) in item.thumbnail"
:key="i"
/>
</dt>
<div class="tabListBtn">
<span>{{ item.source }}</span>
<span>{{ item.releaseTime }}</span>
</div>
</dl>
<div v-else class="tabSmallLength">
<div class="top">
<img
:src="v"
alt=""
v-for="(v, i) in item.thumbnail"
:key="i"
/>
<dd>{{ item.title }}</dd>
</div>
<div class="tabListBtn">
<span>{{ item.source }}</span>
<span>{{ item.releaseTime }}</span>
</div>
</div>
</div>
</div>
<div class="three" v-else-if="active==2">
<div class="everyList" v-for="(v,i) in list" :key="i" >
<h3>{{v.title}}</h3>
<p class="twoCol">{{v.releaseTime}}
<span v-if="v.amount">{{v.amount}}H</span>
</p>
<p>{{v.detail}}</p>
<ul>
<li>建议{{v.commentNum}}</li>
<li>收藏{{v.collectionNum}}</li>
</ul>
</div>
</div>
</div>
<div class="con1" v-else>
<img src="../../../assets/images/img/鱼.png" alt="" />
<p>空空如也</p>
</div>
</div>
</div>
</template>
<script>
// import '../../../assets/images/img/'
import {
collectHealth,
collectVideo,
collectCircle,
} from "../../../getData/index";
import { mixinTime } from "../../../mixins/mixins";
export default {
}
mixins: [mixinTime],
data() {
return {
tabTit: ["健康咨询", "健康视频", "病友圈"],
active: 0,
list: [],
};
},
mounted() {
this.getOne();
},
methods: {
changeTit(index) {
this.active = index;
this.list = [];
if (index == 0) {
this.getOne();
} else if (index == 1) {
this.getTwo();
} else if (index == 2) {
this.getThree();
}
},
async getOne() {
let { data } = await collectHealth({ page: 1, count: 10 });
console.log(data);
// this.list=data.result
data.result.forEach((v) => {
let thumbnail = v.thumbnail.split(";");
let releaseTime = this.changeTime(v.createTime);
let newV = Object.assign({ ...v }, { thumbnail }, { releaseTime });
this.list.push(newV);
});
},
async getTwo() {
let { data } = await collectVideo({ page: 1, count: 10 });
console.log(data);
},
async getThree() {
let { data } = await collectCircle({ page: 1, count: 10 });
// console.log(data);
data.result.forEach((v) => {
let createTime = this.changeTime(v.createTime);
let newV = Object.assign({ ...v }, { createTime });
this.list.push(newV);
});
console.log(this.list);
// this.list=data.result
},
},
};
</script>
<style>
</style>
<style lang="scss" scoped>
.bigBox {
width: 100vw;
height: 100vh;
background: rgb(244, 244, 244);
display: flex;
flex-direction: column;
.back {
background: #fff;
}
.main {
background: #fff;
margin-top: 5px;
overflow-y: scroll;
flex: 1;
display: flex;
flex-direction: column;
.tabTit {
display: flex;
justify-content: space-around;
border-bottom: 1px solid #ededed;
height: 40px;
line-height: 35px;
.active {
color: rgb(48, 135, 234);
padding-bottom: 10px;
border-bottom: 4px solid rgb(48, 135, 234);
}
}
.con1 {
flex: 1;
margin-top: 130px;
img {
width: 126px;
width: 135px;
}
p {
padding-top: 10px;
font-size: 12px;
font-weight: bold;
}
}
}
.one{
.tabBigLength{
background: #fff;
margin: 10px 0;
text-align: left;
padding: 7px;
dd{
font-weight: bold;
}
dt{
display: flex;
justify-content: space-around;
margin-top: 9px;
img{
width: 30%;
}
}
}
.tabSmallLength{
background: #fff;
margin: 10px 0;
padding: 7px 7px 10px 7px;
dd{
font-weight: bold;
}
.top{
display: flex;
text-align: left;
justify-content: space-around;
}
img{
width: 30%;
margin-right: 10px;
}
}
.tabListBtn{
display: flex;
justify-content: space-between;
// color: #ccc;
font-size: 13px;
padding-top: 15px;
}
}
.three{
.everyList{
background: #fff;
margin-top: 10px;
padding: 0 20px;
text-align: left;
border-bottom: 1px solid #ccc;
.twoCol{
display: flex;
justify-content: space-between;
span{
color: red;
}
}
h3,p{
line-height: 30px;
}
h3{
padding-top: 10px;
}
ul{
text-align: right;
li{
display: inline-block;
margin: 0 10px;
}
}
}
}
}
</style>

View File

@ -1,15 +1,193 @@
<template>
<div>
index
<div class="bigBox">
<div class="nav">
<van-icon name="arrow-left" @click="$router.push('/')"/>
<img src="../../../assets/images/icon/common_nav_message_black_n.png" alt="">
</div>
<div class="user">
<div>
<img src="../../../assets/images/icon/common_nav_message_black_n.png" alt="">
<span>饭局热人更好</span>
</div>
<div>签到</div>
</div>
<div class="wz">
<h3>我的问诊</h3>
<div class="now">
<div @click="$router.push({path:'/consultation/myConsultation/MyConsultationCurrent'})">
<img src="../../../assets/images/img/the_current_inquiry.png" alt="">
<span>当前问诊</span>
</div>
<van-icon name="arrow" />
</div>
<div class="history" >
<div @click="$router.push('/consultation/myConsultation/MyConsultationHistory')">
<img src="../../../assets/images/img/historical_inquiry.png" alt="">
<span>历史问诊</span>
</div>
<van-icon name="arrow" />
</div>
</div>
<div class="bot">
<dl @click="$router.push('/my/myProFile/myProFileIndex')">
<dt><img src="../../../assets/images/img/我的档案.png" alt=""></dt>
<dd>我的档案</dd>
</dl>
<dl @click="$router.push('/wallet/myWallet')">
<dt><img src="../../../assets/images/img/我的钱包.png" alt=""></dt>
<dd>我的钱包</dd>
</dl>
<dl @click="$router.push('/my/myCollection')">
<dt><img src="../../../assets/images/img/我的收藏.png" alt=""></dt>
<dd>我的收藏</dd>
</dl>
<dl>
<dt><img src="../../../assets/images/img/被采纳建议.png" alt=""></dt>
<dd>被采纳建议</dd>
</dl>
<dl>
<dt><img src="../../../assets/images/img/我的视频.png" alt=""></dt>
<dd>我的视频</dd>
</dl>
<dl @click="$router.push('/my/myPatientCircle/myPatientIndex')">
<dt><img src="../../../assets/images/img/我的病友圈.png" alt=""></dt>
<dd>我的病友圈</dd>
</dl>
<dl @click="$router.push('/my/myAttention')">
<dt><img src="../../../assets/images/img/我的关注.png" alt=""></dt>
<dd>我的关注</dd>
</dl>
<dl>
<dt><img src="../../../assets/images/img/我的任务.png" alt=""></dt>
<dd>我的任务</dd>
</dl>
<dl @click="$router.push('/set/index')">
<dt><img src="../../../assets/images/img/设置管理.png" alt=""></dt>
<dd>设置管理</dd>
</dl>
</div>
</div>
</template>
<script>
// import '../../../assets/images/img/my_background.png'
export default {
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
background-image: url('../../../assets/images/img/my_background.png');
background-size:100% 30%;
background-repeat: no-repeat;
display: flex;
flex-direction: column;
.nav{
width: 85%;
display: flex;
margin: 30px auto;
// color: #fff;
justify-content: space-between;
.van-icon{
font-size: 20px;
}
img{
width: 24px;
height: 24px;
}
}
.user{
width: 85%;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
color: #fff;
div:nth-child(1){
img{
width: 30px;
height: 30px;
}
span{
padding-left:20px ;
}
line-height: 34px;
}
div:nth-child(2){
background: #fff;
width: 58px;
height: 30px;
color: rgb(48,135,234);
border-radius: 2px;
font-weight: bold;
font-size: 15px;
line-height: 30px;
}
span{
// font-size: 12px;
}
}
.wz{
width: 85%;
height: 180px;
margin: 20px auto;
background: #fff;
box-shadow: 2px 2px 2px 0.5px rgba(48,135,234,0.2);
border-radius: 10px;
// padding-left: 20px;
display: flex;
flex-direction: column;
padding: 0 20px;
img{
width: 40px;
height: 40px;
}
h3{
text-align: left;
padding: 10px 0;
}
.now,.history{
display: flex;
justify-content: space-between;
align-items: center;
margin: 10px 0;
div{
display: flex;
align-items: center;
font-size: 16px;
span{
padding-left: 10px;
}
}
.van-icon{
font-weight: bold;
font-size: 20px;
}
}
}
.bot{
display: flex;
flex-wrap: wrap;
justify-content: space-around;
dl{
width: 30%;
margin: 20px 0;
dd{
padding-top: 10px;
font-size: 12px;
}
}
img{
width: 30px;
height: 30px;
}
}
}
</style>

View File

@ -1,15 +1,218 @@
<template>
<div>
login
<div class="box">
<div class="top">
<img src="../../../assets/images/login-img/login_hand_03.png" alt="">
</div>
<div class="main">
<div class="one"></div>
<div class="two"></div>
<div class="three">
<div class="username">
<img src="../../../assets/images/login-img/login_icon_mail_n.png" alt="" class="icon">
<input type="text" v-model="userInfo.email" placeholder="请输入电子邮箱">
</div>
<div class="pwd">
<img src="../../../assets/images/login-img/login_icon_lock_n.png" alt="" class="icon">
<input :type="Eyes?'text':'password'" placeholder="请输入密码" v-model="userInfo.pwd">
<img :src="Eyes?show:hide" alt="" class="eles" @click="changeEyes">
</div>
<button class="btn" @click="onLogin"></button>
<div class="text">
<p>忘记密码</p>
<div>
<span>暂无账号?</span>
<h5 @click="tz"></h5>
</div>
</div>
</div>
</div>
<div class="bot">
<div class="botTop">
<hr>
<p>其他登录方式</p>
<hr>
</div>
<img src="../../../assets/images/login-img/common_icon_weixin_n.png">
</div>
</div>
</template>
<script>
import { isLogin } from '../../../getData'
import { mixinTime } from '../../../mixins/mixins'
export default {
mixins:[mixinTime],
data(){
return{
userInfo:{
email:"",
pwd:""
},
Eyes:false,
show:'data:image/png;base64,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',
hide:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAYAAAEPN03jAAAAAXNSR0IArs4c6QAAAixJREFUOBGdkz9oU3EQx/OSlwSNEVsymKAgOCh0KQSLk6NLO9il0KFVKOQfdYiEN/gHYodCwdIhocl70KEQhy6C9A84Ktgt4KSTcTIJGKhERAx5L35+Ifd4xjroD467+37vd/e7e/d86XT6jW90NKVTqdRA07RpAf+iVZhQ+Xx+cugXi0W/gKIpYPoymYxBxLaA2D2xXe0N0HK53Ll+v/8tEAhMViqVEzdqzCD9C6AJfTAYJHl3QwVTbtVxnJKKBTuBm8B8l0gkkp1OZ7XX631W3G+H8t8FoKMzZN4VX+kAgFWv1/e94Gk21bR2u32sRnGdrK9OCxKsUChESOzQ523v/B2yXLIsqyWBSpNsA2Ugm3AFjZt2MBi8HIvFOs1m8z3EVeQrcgFRzS+Zplkj7iPufYW5J5vNJiFMAcjuflLBdDGUZqQPo9HosmBk74otWj1pn7fPQT6Px+P32Im+kP+j1U61Wi2LnCvkPJIhncWpAc6jG8hytVp9+y8F2LBpNqzGnSlkNxwOp0ul0s9hy36/f4l25yE+II8ptMN8rlHoB/6eklAodMyF4QgMw4h2u90b3FkgZpH487Zt14l7gL+Ff5eta+CvaQz+JuQ6CVbK5fInQPfQrs6X/MIlG/A1khiRTZLcwrb59BdHmKtY+SsUfwbwdDgilxkz6OIJ0BoF7rAaL7003Cz+AfKIIutezmv/8ZN7Sbqq6bo+M55cxZD0kMJTkUik6r0zbv8Cp9LrV4K0CCQAAAAASUVORK5CYII="
}
},
methods:{
tz(){
this.$router.push('/my/register')
},
changeEyes(){
this.Eyes=!this.Eyes
},
async onLogin(){
// console.log(this.userInfo);
let newPwd=this.Encipher(this.userInfo.pwd)
let {data}=await isLogin({email:this.userInfo.email,pwd:newPwd})
console.log(data);
if(data.result){
localStorage.setItem('sessionId',JSON.stringify(data.result.sessionId))
localStorage.setItem('userId',JSON.stringify(data.result.userId))
}
}
}
}
</script>
<style>
<style lang="scss" scoped>
.box{
width: 100vw;
height: 100vh;
background: url('../../../assets/images/login-img/login_bg.png');
background-size: 100% 100%;
display: flex;
flex-direction: column;
.top{
margin: 30px 0;
img{
width: 60px;
height: 60px;
}
}
.main{
position: relative;
width: 100%;
height: 50%;
.one{
width: 240px;
height: 218px;
background: rgb(255,255,255,.7);
border-radius: 3px;
position: absolute;
top: 0;
left: 0;
bottom: -20px;
right: 0;
margin: auto;
}
.two{
width: 260px;
height: 218px;
background: rgb(255,255,255,.7);
border-radius: 3px;
position: absolute;
top: 0;
left: 0;
bottom: -10px;
right: 0;
margin: auto;
}
.three{
width: 280px;
height: 218px;
background: rgb(255,255,255,1);
border-radius: 3px;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
.eles{
width: 16px;
height: 12px;
}
.pwd,.username{
height: 40px;
width: 70%;
margin: 0 auto;
display: flex;
align-items: center;
margin-top: 30px;
font-size: 12px;
border-bottom: 1px solid #ccc;
.icon{
width: 26px;
height: 20px;
}
input{
border: none;
flex: 1;
width: 100%;
padding-left: 20px;
}
}
.btn{
// display: inline-block;
width: 70%;
height: 30px;
margin-top: 20px;
background: rgb(48,135,234);
border: 0;
color: #fff;
border-radius: 2px;
font-size: 15px;
}
}
}
.text{
width: 85%;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
// position: absolute;
margin-top: 50px;
color: #fff;
p,span{
font-size: 11px;
}
div{
display: flex;
align-items: center;
}
}
.bot{
display: flex;
flex-direction: column;
.botTop{
display: flex;
align-items: center;
justify-content: center;
margin-top: 120px;
hr{
width: 60px;
background: #fff;
}
p{
font-size: 13px;
color: #fff;
margin: 0 10px;
}
}
img{
width: 24px;
height: 24px;
margin: 10px auto;
}
}
}
</style>

View File

@ -0,0 +1,6 @@
<template>
<div>
<router-view></router-view>
</div>
</template>

View File

@ -1,15 +1,81 @@
<template>
<div>
commentList
<div class="bigBox">
<Back con="评论列表" url="/my/myPatientCircle/myPatientIndex" class="top"></Back>
<div class="con" v-if="list.length==0">
<van-empty description="空空如也" />
</div>
<div class="main" v-else>
<div class="every" v-for="(item,index) in list" :key="index">
<div class="every-left">
<img :src="item.headPic" alt="">
<p>{{item.nickName}}</p>
</div>
<div class="every-right">
<p>{{item.content}}</p>
</div>
</div>
</div>
</div>
</template>
<script>
import {myCommunityList} from '@/getData/index.js'
export default {
data(){
return{
id:null,
list:[]
}
},
created(){
this.id=this.$route.query.sickCircleId
},
mounted(){
this.getList()
},
methods:{
async getList(){
let {data} =await myCommunityList({sickCircleId:this.id*1,page:1,count:5})
// console.log(data);
this.list=data.result.otherSickCircleCommentList
console.log(this.list);
// otherSickCircleCommentList
}
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
background: rgb(244, 244, 244);
display: flex;
flex-direction: column;
.top{
background: #fff;
}
.con,.main{
background: #fff;
margin-top: 10px;
flex: 1;
overflow-y: scroll;
}
.every{
display: flex;
width: 90%;
height: 140px;
box-shadow: 4px 4px 9px rgba(0, 0, 0, 0.2);
margin: 10px auto;
.every-left{
width: 40%;
}
.every-right{
text-align: center;
flex: 1;
line-height: 140px;
}
}
}
</style>

View File

@ -0,0 +1,4 @@
<template>
<router-view></router-view>
</template>

View File

@ -1,15 +1,83 @@
<template>
<div>
index
<div class="bigBox">
<Back con="我的病友圈" url="/my/myIndex" class="top"></Back>
<div class="con">
<!-- /my/myPatientCircle/myPatientCommentList -->
<!-- @click="$router.push({path:'/my/myPatientCircle/myPatientCommentList',query:{sickCircleId:`${item.sickCircleId}`}})" -->
<div v-for="(item,index) in list" :key="index" class="every" @click="$router.push({path:'/my/myPatientCircle/myPatientCommentList',query:{sickCircleId:`${item.sickCircleId}`}})">
<h3>{{item.title}}</h3>
<div>
<p>{{item.detail}}</p>
<p>{{changeTime(item.releaseTime)}}</p>
</div>
<p class="lastP">查看评论</p>
</div>
</div>
</div>
</template>
<script>
import {mixinTime} from '@/mixins/mixins.js'
import {myCommunity} from '@/getData/index.js'
export default {
mixins:[mixinTime],
data(){
return{
list:[]
}
},
created(){
this.getList()
},
methods:{
async getList(){
let {data}=await myCommunity({page:1,count:5})
console.log(data);
this.list=data.result
}
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
background: rgb(244, 244, 244);
display: flex;
flex-direction: column;
.top{
background: #fff;
margin-bottom: 10px;
}
.con{
flex: 1;
overflow-y: scroll;
}
.every{
text-align: left;
width: 85%;
background: #ededed;
margin: 10px auto;
padding: 10px 5px;
p{
line-height: 35px;
}
div{
display: flex;
justify-content: space-between;
padding-left: 10px;
padding-right: 5px;
p:last-child{
font-size: 8px;
}
}
.lastP{
text-align: right;
padding-right: 25px;
font-size: 12px;
color: rgb(48,135,234);
}
}
}
</style>

View File

@ -1,15 +1,205 @@
<template>
<div>
addModifyProfile
<div class="bigBox">
<Back con="我的档案" url="/my/myProFile/myProFileIndex" class="back"></Back>
<div class="main">
<div class="everyBox">
<p>[主要病症]</p>
<input type="text" placeholder="请输入您的主要病症" v-model="mainDisease">
</div>
<div class="everyBox">
<p>[现病史]</p>
<input type="text" placeholder="请详细输入您的当前病状" v-model="presentDisease">
</div>
<div class="everyBox">
<p>[既往病史]</p>
<input type="text" placeholder="请输入您的既往病史" v-model="beforeDisease">
</div>
<div class="everyBoxLast everyBox">
<p>[最近一次治疗经历]</p>
<input type="text" placeholder="请输入医院名称" v-model="hospitalName">
<div @click="handleStartTime">
<span>{{startTime}}</span>
</div>
<div @click="handleEndTime">
<span>{{endTime}}</span>
</div>
<input type="text" placeholder="请输入治疗过程" v-model="healDisease">
</div>
<div class="upload">
<p>[相关图片]</p>
<span>最多可添加6张图片,长按为图片排序</span>
<van-uploader :after-read="afterRead" />
</div>
<div class="btn" @click="btn">
保存
</div>
</div>
<!-- 时间选择器 -->
<van-popup v-model="show" position="bottom" :style="{ height: '45%' }" >
<van-datetime-picker
v-model="currentDate"
type="date"
title="选择年月日"
:min-date="minDate"
:max-date="maxDate"
@confirm="okTime"
/>
</van-popup>
</div>
</template>
<script>
import {mixinTime} from '../../../../mixins/mixins'
import {saveFile} from '../../../../getData/index'
export default {
mixins:[mixinTime],
data(){
return{
//
mainDisease:'',
//
presentDisease:"",
//
beforeDisease:"",
//
hospitalName:"",
//
healDisease:"",
show:false,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17),
startTime:null,
endTime:null,
onOff:false,
file:null
}
},
methods:{
//
handleStartTime(){
//onOfftrue
this.onOff=true
this.show=true
},
//
handleEndTime(){
//onOfffalse
this.onOff=false
this.show=true
},
//
async btn(){
let res={
//
diseaseMain:this.mainDisease,
//
diseaseNow:this.presentDisease,
//
diseaseBefore:this.beforeDisease,
//
treatmentHospitalRecent:this.hospitalName,
//
treatmentProcess:this.healDisease,
//
treatmentStartTime:this.startTime,
//
treatmentEndTime:this.endTime
}
let data=await saveFile(res)
console.log(data);
},
//
afterRead(file) {
//
console.log(file);
this.file=file
},
okTime(value){
if(this.onOff){
//
let a=this.changeTimeTwo(value)
this.startTime=a
}else{
//
let a=this.changeTimeTwo(value)
this.endTime=a
}
this.show=false
}
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
background: rgb(244, 244, 244);
display: flex;
flex-direction: column;
.back{
background: #fff;
}
.main{
flex: 1;
overflow-y: scroll;
background: #fff;
text-align: left;
padding: 0 20px;
margin-top: 10px;
.everyBox{
// background: red;
margin: 25px 0;
border-bottom: 0.5px solid #ededed;
p{
margin: 10px 0;
font-size: 14px;
color: rgb(48,135,234);
}
input{
margin-bottom: 10px;
font-size: 15px;
border: none;
}
}
.everyBoxLast{
border: none;
input,div{
width: 100%;
height: 40px;
line-height: 40px;
border-bottom: 0.5px solid #ededed;
}
}
.upload{
margin-top: -20px;
display: flex;
flex-direction: column;
p{
margin: 10px 0;
font-size: 14px;
color: rgb(48,135,234);
}
span{
font-size: 14px;
margin: 10px 0;
}
}
.btn{
width: 80%;
height: 40px;
border-radius: 5px;
background: rgb(48,135,234);
margin: 0 auto;
color: #fff;
text-align: center;
font-size: 16px;
line-height: 40px;
margin-top: 20px;
}
}
}
</style>

View File

@ -0,0 +1,3 @@
<template>
<router-view></router-view>
</template>

View File

@ -1,15 +1,139 @@
<template>
<div>
index
<div class="bigBox">
<Back con="我的档案" url="/my/myIndex"></Back>
<div class="main" v-if="list.length==0">
<img src="../../../../assets/images/img/鱼.png" alt="">
<p>您还没有档案哦</p>
<div class="btn" @click="$router.push('/my/myProFile/myProFileAddModifyProfile')">
添加
</div>
</div>
<div class="main1" v-else>
<div class="everyBox">
<p>[主要病症]</p>
<div>{{con.diseaseMain}}</div>
</div>
<div class="everyBox">
<p>[现病史]</p>
<div>{{con.diseaseNow}}</div>
</div>
<div class="everyBox">
<p>[既往病史]</p>
<div>{{con.diseaseBefore}}</div>
</div>
<div class="everyBoxLast everyBox">
<p>[最近一次治疗经历]</p>
<div>{{con.treatmentHospitalRecent}}</div>
<div>{{con.treatmentProcess}}</div>
</div>
<div class="upload">
<p>[相关图片]</p>
</div>
</div>
</div>
</template>
<script>
import {fileList} from '../../../../getData/index'
// import '../../../../assets/images/img'
export default {
data(){
return{
list:[],
con:{},
show:true
}
},
methods:{
async getList(){
let {data}=await fileList()
this.list=data.result
}
},
mounted(){
this.getList().then(()=>{
this.con=this.list[0]
console.log(this.list);
})
// console.log(this.list);
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
}
.main{
width: 100%;
height: 100%;
img{
width: 126px;
height: 135px;
margin:0 auto;
margin-top: 140px;
}
p{
font-size: 14px;
padding-top: 20px;
}
.btn{
width: 300px;
height: 35px;
background: rgb(48,135,234);
margin: 0 auto;
color: #fff;
line-height: 35px;
border-radius: 5px;
margin-top: 200px;
}
}
.main1{
text-align: left;
text-align: left;
padding: 0 20px;
margin-top: 10px;
.everyBox{
// background: red;
margin: 25px 0;
border-bottom: 0.5px solid #ededed;
p{
margin: 10px 0;
font-size: 14px;
color: rgb(48,135,234);
}
input{
margin-bottom: 10px;
font-size: 15px;
border: none;
}
}
.everyBoxLast{
border: none;
input,div{
width: 100%;
height: 40px;
line-height: 40px;
border-bottom: 0.5px solid #ededed;
}
}
.upload{
margin-top: -20px;
display: flex;
flex-direction: column;
p{
margin: 10px 0;
font-size: 14px;
color: rgb(48,135,234);
}
span{
font-size: 14px;
margin: 10px 0;
}
}
}
</style>

View File

@ -1,15 +1,239 @@
<template>
<div>
register
<div class="box">
<div class="top">
<img src="../../../assets/images/login-img/login_hand_03.png" alt="">
</div>
<div class="main">
<div class="one"></div>
<div class="two"></div>
<div class="three">
<div class="username">
<img src="../../../assets/images/login-img/login_icon_mail_n.png" alt="" class="icon">
<input type="text" v-model="userInfo.email" placeholder="请输入电子邮箱">
<div @click="AcquireCode()"></div>
</div>
<div class="code">
<img src="../../../assets/images/login-img/register_icon_verification_code_n.png" alt="" class="icon">
<input type="text" v-model="userInfo.code" placeholder="请输入验证码">
</div>
<div class="pwd">
<img src="../../../assets/images/login-img/login_icon_lock_n.png" alt="" class="icon">
<input :type="Eyes?'text':'password'" placeholder="请输入密码" v-model="userInfo.pwd">
<img :src="Eyes?show:hide" alt="" class="eles" @click="changeEyes">
</div>
<div class="lastPwd">
<img src="../../../assets/images/login-img/login_icon_lock_n.png" alt="" class="icon">
<input :type="Eyes?'text':'password'" placeholder="请再次输入密码" v-model="userInfo.twoPwd">
<img :src="Eyes?show:hide" alt="" class="eles" @click="changeEyes">
</div>
<div class="lastCode">
<img src="../../../assets/images/login-img/register_icon_invitatiion_code_n.png" alt="" class="icon">
<input type="text" v-model="userInfo.last" placeholder="请输入邀请码(非必填)">
</div>
<button class="btn" @click="onSigin"></button>
</div>
</div>
</div>
</template>
<script>
import { Toast } from 'vant';
import { mixinTime } from '../../../mixins/mixins'
import {getCode,isSigin} from '../../../getData'
export default {
mixins:[mixinTime],
data(){
return{
userInfo:{
email:"",
pwd:"",
code:'',
twoPwd:'',
last:''
},
Eyes:false,
show:'data:image/png;base64,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',
hide:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAYAAAEPN03jAAAAAXNSR0IArs4c6QAAAixJREFUOBGdkz9oU3EQx/OSlwSNEVsymKAgOCh0KQSLk6NLO9il0KFVKOQfdYiEN/gHYodCwdIhocl70KEQhy6C9A84Ktgt4KSTcTIJGKhERAx5L35+Ifd4xjroD467+37vd/e7e/d86XT6jW90NKVTqdRA07RpAf+iVZhQ+Xx+cugXi0W/gKIpYPoymYxBxLaA2D2xXe0N0HK53Ll+v/8tEAhMViqVEzdqzCD9C6AJfTAYJHl3QwVTbtVxnJKKBTuBm8B8l0gkkp1OZ7XX631W3G+H8t8FoKMzZN4VX+kAgFWv1/e94Gk21bR2u32sRnGdrK9OCxKsUChESOzQ523v/B2yXLIsqyWBSpNsA2Ugm3AFjZt2MBi8HIvFOs1m8z3EVeQrcgFRzS+Zplkj7iPufYW5J5vNJiFMAcjuflLBdDGUZqQPo9HosmBk74otWj1pn7fPQT6Px+P32Im+kP+j1U61Wi2LnCvkPJIhncWpAc6jG8hytVp9+y8F2LBpNqzGnSlkNxwOp0ul0s9hy36/f4l25yE+II8ptMN8rlHoB/6eklAodMyF4QgMw4h2u90b3FkgZpH487Zt14l7gL+Ff5eta+CvaQz+JuQ6CVbK5fInQPfQrs6X/MIlG/A1khiRTZLcwrb59BdHmKtY+SsUfwbwdDgilxkz6OIJ0BoF7rAaL7003Cz+AfKIIutezmv/8ZN7Sbqq6bo+M55cxZD0kMJTkUik6r0zbv8Cp9LrV4K0CCQAAAAASUVORK5CYII="
}
},
methods:{
async AcquireCode(){
let {data}=await getCode({email:this.userInfo.email})
console.log(data);
if(data.status==='0000'){
Toast.success('发送成功')
}else{
Toast.fail('发送失败')
}
},
tz(){
this.$router.push('/my/register')
},
changeEyes(){
this.Eyes=!this.Eyes
},
async onSigin(){
if(this.userInfo.pwd===this.userInfo.twoPwd){
let newPwd= this.Encipher(this.userInfo.pwd)
let data=await isSigin({email:this.userInfo.email,pwd1:newPwd,pwd2:newPwd,code:this.userInfo.code})
console.log(data);
}else{
Toast.fail('两次密码不一致');
}
}
}
}
</script>
<style>
<style lang="scss" scoped>
.box{
width: 100vw;
height: 100vh;
background: url('../../../assets/images/login-img/login_bg.png');
background-size: 100% 100%;
display: flex;
flex-direction: column;
.top{
margin: 30px 0;
img{
width: 60px;
height: 60px;
}
}
.main{
position: relative;
width: 100%;
height: 65%;
.one{
width: 240px;
height: 385px;
background: rgb(255,255,255,.7);
border-radius: 3px;
position: absolute;
top: 0;
left: 0;
bottom: -20px;
right: 0;
margin: auto;
}
.two{
width: 260px;
height: 385px;
background: rgb(255,255,255,.7);
border-radius: 3px;
position: absolute;
top: 0;
left: 0;
bottom: -10px;
right: 0;
margin: auto;
}
.three{
width: 280px;
height: 385px;
background: rgb(255,255,255,1);
border-radius: 3px;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
.eles{
width: 16px;
height: 12px;
}
.pwd,.username,.lastCode,.lastPwd,.code{
height: 40px;
width: 70%;
margin: 0 auto;
display: flex;
align-items: center;
margin-top: 13px;
font-size: 12px;
border-bottom: 1px solid #ccc;
.icon{
width: 22px;
height: 20px;
}
input{
border: none;
flex: 1;
width: 100%;
padding-left: 20px;
}
}
.username div{
background: rgb(48,135,234);
padding: 3px;
color: #fff;
border-radius: 2px;
}
.btn{
// display: inline-block;
width: 70%;
height: 30px;
margin-top: 20px;
background: rgb(48,135,234);
border: 0;
color: #fff;
border-radius: 2px;
font-size: 15px;
}
}
}
.text{
width: 85%;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
// position: absolute;
margin-top: 50px;
color: #fff;
p,span{
font-size: 11px;
}
div{
display: flex;
align-items: center;
}
}
.bot{
display: flex;
flex-direction: column;
.botTop{
display: flex;
align-items: center;
justify-content: center;
margin-top: 120px;
hr{
width: 60px;
background: #fff;
}
p{
font-size: 13px;
color: #fff;
margin: 0 10px;
}
}
img{
width: 24px;
height: 24px;
margin: 10px auto;
}
}
}
</style>

View File

@ -0,0 +1,255 @@
<template>
<div class="bigBox" >
<MyHeader/>
<!-- v-if="scroll>130" -->
<div class="one" v-if="scroll>130" >
<p>{{topCon}}</p>
<div>
<div class="inp" @click="$router.push('/home/search')">
<span>病证药品名称医生姓名</span>
</div>
</div>
<img src="../../../assets/images/icon/common_nav_message_black_n.png" alt="">
</div>
<div class="bigTop1" >
<div class="bigTop">
<ul class="top">
<li v-for="(item,index) in menuList" :key="index" @click="changeTit(index,item.id)" :class="tabTopTitle===index?'active':''">
{{item.departmentName}}
</li>
</ul>
</div>
<van-icon name="search" @click="goSearch"/>
</div>
<div class="main">
<van-pull-refresh v-model="isLoading" @refresh="onRefresh">
<van-list
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
>
<div class="everyList" v-for="(v,i) in conList" :key="i" @click="handleDetail(v.sickCircleId)">
<h3>{{v.title}}</h3>
<p class="twoCol">{{v.releaseTime}}
<span v-if="v.amount">{{v.amount}}H</span>
</p>
<p>{{v.detail}}</p>
<ul>
<li>建议{{v.commentNum}}</li>
<li>收藏{{v.collectionNum}}</li>
</ul>
</div>
</van-list>
</van-pull-refresh>
</div>
<TabBar>
<template slot="home">
<img src="../../../assets/images/icon/home.png" alt="" @click="$router.push('/')">
</template>
<template slot="center">
<img src="../../../assets/images/icon/center_active.png" @click="$router.push('/patientCircle/patientWrite')" alt="">
</template>
<template slot="video">
<img src="../../../assets/images/icon/video.png" @click="$router.push('/vedio')">
</template>
</TabBar>
</div>
</template>
<script>
import {Toast} from 'vant'
import {mixinTime} from '../../../mixins/mixins'
import {getMenu,PatientCircleList} from '../../../getData/index'
// import '../../../assets/images/'
export default {
mixins:[mixinTime],
data(){
return{
menuList:[],
tabTopTitle:0,
conList:[],
tabId:7,
isLoading: false,
loading: false,
finished: false,
page:1,
topCon:'内科',
scroll:0
}
},
methods:{
//
scrollToTop(){
let scrollTop=document.documentElement.scrollTop
// console.log(scrollTop);
this.scroll=scrollTop
},
onLoad() {
// this.loading = false;
this.page++
this.getList()
},
onRefresh() {
this.page=1
this.conList=[],
this.getList()
this.isLoading = false;
},
goSearch(){
this.$router.push('/patientCircle/patientSearch')
},
//
handleDetail(id){
this.$router.push(`/patientCircle/patientDetail/${id}`)
console.log(id);
},
changeTit(index,id){
console.log(index,id);
this.tabTopTitle=index
this.tabId=id
this.conList=[]
this.page=1
this.getList()
this.topCon=this.menuList[index].departmentName
},
async MenuList(){
let {data}=await getMenu()
this.menuList=data.result
console.log(this.menuList);
},
async getList(){
let {data}=await PatientCircleList({departmentId:this.tabId,page:this.page,count:7})
if(data.result.length>0){
data.result.forEach(v=>{
let releaseTime=this.changeTime(v.releaseTime)
let a=Object.assign({...v},{releaseTime})
this.conList.push(a)
})
Toast.success('加载完成')
this.loading = false;
}else{
this.finished = true;
Toast.fail('我是有底线的')
}
console.log(data);
// this.conList=data.result
}
},
mounted(){
this.MenuList()
this.getList()
window.addEventListener("scroll", this.scrollToTop);
}
}
</script>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100%;
background: rgb(239,239,239);
display: flex;
flex-direction: column;
.one{
z-index: 1;
display: flex;
height: 50px;
position: sticky;
top: -3px;
background: #fff;
align-items: center;
justify-content: space-around;
p{
font-weight: bold;
font-size: 20px;
color: rgb(48,135,235);
}
img{
width: 24px;
height: 24px;
}
.inp {
border: 1px solid #ccc;
height: 30px;
border-radius: 20px;
width: 235px;
display: flex;
align-items: center;
span {
font-size: 12px;
padding-left: 20px;
}
}
}
.bigTop1{
width: 100%;
background: #fff;
display: flex;
align-items: center;
justify-content: space-between;
.van-icon{
font-size: 25px;
}
}
.bigTop{
width: 90%;
height: 40px;
line-height: 33px;
background: #fff;
overflow-x: scroll;
margin-top: 5px;
margin-left: 5px;
.top{
width: 150%;
display: flex;
justify-content: space-around;
.active{
color: rgb(66,145,235);
}
}
}
.main{
.everyList{
background: #fff;
margin-top: 10px;
padding: 0 20px;
text-align: left;
.twoCol{
display: flex;
justify-content: space-between;
span{
color: red;
}
}
h3,p{
line-height: 30px;
}
h3{
padding-top: 10px;
}
ul{
text-align: right;
li{
display: inline-block;
margin: 0 10px;
}
}
}
}
}
</style>

View File

@ -1,15 +1,312 @@
<template>
<div>
detail
<div class="bigBox">
<MyHeader/>
<div class="main">
<h3>{{list.title}}</h3>
<div class="everyBox">
<h4>[病症]</h4>
<p>{{list.disease}}</p>
</div>
<div class="everyBox">
<h4>[科室]</h4>
<p>{{list.department}}</p>
</div>
<div class="everyBox">
<h4>[病症详情]</h4>
<p>{{list.detail}}</p>
</div>
<div class="everyBox">
<h4>[治疗经理]</h4>
<p>{{list.treatmentHospital}}</p>
<p>{{list.treatmentProcess}}</p>
</div>
<div class="everyBox">
<h4>[相关图片]</h4>
<img :src="list.picture" alt="" class="imgOne">
<div class="controls">
<div class="like" @click="addLike">
<img src="../../../assets/images/icon/common_button_collection_large_n.png" v-if="list.collectionFlag==2">
<img src="../../../assets/images/icon/common_button_collection_large_s.png" v-else-if="list.collectionFlag==1">
<span>{{list.collectionNum}}</span>
</div>
<div class="review" @click="handlePl">
<img src="../../../assets/images/icon/common_icon_comment_large_n.png">
<span>{{list.commentNum}}</span>
</div>
</div>
</div>
<div class="everyBox">
<h4>[被采纳的建议]</h4>
<div class="user">
<img :src="list.adoptHeadPic" alt="" class="imgTwo">
<span>{{list.adoptNickName}}</span>
</div>
<p>{{list.adoptComment}}</p>
</div>
</div>
<div class="pl-box" v-if="plShow">
<div class="con">
<dl v-for="(item,index) in plList" :key="index">
<dt>
<img :src="item.headPic" alt="">
</dt>
<dd>
<span>{{item.nickName}}</span>
<p> {{item.content}}</p>
<div class="con-bot">
<span>
{{item.commentTime}}
</span>
<!-- commentId -->
<div @click="handleGood(item.commentId)">
<img src="../../../assets/images/icon/common_icon_agree_s.png" v-if="list.opinion!=2">
<img src="../../../assets/images/icon/common_icon_agree_n.png" v-else>
<span>{{item.supportNum}}</span>
</div>
<div>
<img src="../../../assets/images/icon/common_icon_disagree_n.png" >
<span>{{item.opposeNum}}</span>
</div>
</div>
</dd>
</dl>
</div>
<div class="btnInp">
<h2 @click="gb"></h2>
<input type="text" v-model="inp">
<h2 @click="okPl"></h2>
</div>
</div>
</div>
</template>
<script>
// import '../../../assets/images/icon/'
import { Toast } from 'vant'
import {mixinTime} from '../../../mixins/mixins'
import {PatientCircleDetail,cancelLike,patientsPlList,patientsPl,adoptPl} from '../../../getData/index'
import {addLike} from '../../../getData/index'
export default {
mixins:[mixinTime],
data(){
return{
good:false,
id:0,
list:{},
plShow:false,
plList:[],
inp:''
}
},
created(){
this.getId()
},
mounted(){
this.getDetail()
},
methods:{
//
//
gb(){
this.plShow=false
},
//
async handleGood(id){
let data=await adoptPl({commentId:id*1,sickCircleId:this.id*1})
console.log(data);
// this.patientsPlList()
this.good=true
},
//
async okPl(){
let {data}=await patientsPl({sickCircleId:this.id,content:this.inp})
console.log(data);
if(data.status==='0000'){
this.patientsPlList()
}
},
//
async addLike(){
if(this.list.collectionFlag==2){
let {data}=await addLike({sickCircleId:this.id*1})
console.log(data);
if(data.status=='0000'){
Toast.success('收藏成功')
}
this.list.collectionFlag=1
}else if(this.list.collectionFlag==1){
let {data}=await cancelLike({sickCircleId:this.id*1})
console.log(data);
if(data.status=='0000'){
Toast.success('取消收藏')
}
this.list.collectionFlag=2
}
},
//
async patientsPlList(){
let {data}=await patientsPlList({sickCircleId:this.id,page:1,count:5})
data.result.forEach(v=>{
let commentTime=this.changeTime(v.commentTime)
let a=Object.assign({},{...v},{commentTime})
this.plList.push(a)
})
console.log(this.plList);
// this.plList=data.result
},
handlePl(){
this.plShow=true
this.patientsPlList()
},
getId(){
// console.log(this.$route.params.id);
// this.$nextTick(()=>{
this.id=this.$route.params.id
// })
},
async getDetail(){
console.log(this.id);
let {data}=await PatientCircleDetail({sickCircleId:this.id})
console.log(data);
this.list=data.result
}
}
}
</script>
<style>
<style lang="scss" scoped>
.bigBox{
width: 100vw;
height: 100vh;
background: rgb(244,244,244);
// background: red;
.main{
margin-top: 10px;
background: #fff;
text-align: left;
padding: 3px 20px;
h3,h4{
color:rgb(48,135,234);
}
.everyBox{
margin-top: 15px;
p{
line-height: 30px;
}
.imgOne{
width: 100%;
}
.imgTwo{
width: 30px;
height: 30px;
}
.user{
margin-top: 10px;
display: flex;
align-items: center;
}
.controls{
display: flex;
padding-left: 230px;
height: 45px;
.like{
display: flex;
align-items: center;
span{
padding-left: 8px;
}
}
.review{
display: flex;
align-items: center;
padding-left: 10px;
span{
padding-left: 8px;
}
}
img{
width: 25px;
height: 25px;
}
}
}
}
.pl-box{
z-index: 1;
width: 100vw;
height: 100vh;
padding-top: 200px;
position: fixed;
top: 0;
overflow-y: scroll;
background: rgba(0, 0, 0, .5);
.btnInp{
display: flex;
position: fixed;
bottom: 0;
width: 100%;
// background: red;
color: black;
justify-content: space-around;
input{
height: 40px;
border-radius: 10px;
border: none;
color: black;
padding-left: 20px;
}
}
dl{
height: 130px;
// background: #fff;
margin: 10px 20px;
display: flex;
align-items: center;
dt{
img{
width: 30px;
height: 30px;
}
}
dd{
// background: red;
background: #fff;
display: flex;
flex-direction: column;
border-radius: 10px;
width: 280px;
text-align: left;
padding: 20px;
height: 110px;
margin-left: 20px;
.con-bot{
display: flex;
}
div{
span{
font-size: 12px;
}
}
p{
margin-top: 20px;
}
img{
width: 16px;
height: 16px;
margin: 0 10px;
}
}
}
}
}
</style>

Some files were not shown because too many files have changed in this diff Show More