730 lines
20 KiB
Vue
730 lines
20 KiB
Vue
<template>
|
||
<view class="content" style="background-color: #d8e6ff57">
|
||
<z-nav-bar title="我的医案" bgColor="#5188e5" fontColor="#fff">
|
||
<template v-slot:right>
|
||
<view class="top_right" @tap="createFolder">
|
||
<uni-icons type="folder-add" size="17" color="#fff"></uni-icons>
|
||
<text>创建医案</text>
|
||
</view>
|
||
</template>
|
||
</z-nav-bar>
|
||
<view class="doctors_module" :style="`top: ${42 + statusBarHeight}px;`">
|
||
<view class="cateList flexbox" style="background-color: #fff">
|
||
<common-sticky
|
||
itemStyle="width:20%; height: 38px;font-size:24rpx;"
|
||
:list="tabsList"
|
||
label="title"
|
||
:currentCateIndex="currentCateIndex"
|
||
@handleselectCate="ordersTabCLi"
|
||
></common-sticky>
|
||
</view>
|
||
<!-- <view class="name_search">
|
||
<uni-easyinput
|
||
v-model="courseName"
|
||
prefixIcon="search"
|
||
placeholder="按医案标题搜索"
|
||
placeholderClass="name-placeholder"
|
||
class="center-input"
|
||
/>
|
||
<button @click="getListData(taihumedId, true)">查询</button>
|
||
</view> -->
|
||
</view>
|
||
<scroll-view
|
||
scroll-y="true"
|
||
:scroll-top="scrollTop"
|
||
@scrolltolower="loadMore"
|
||
style="
|
||
height: calc(100vh - 220rpx);
|
||
margin-top: 100rpx;
|
||
padding-bottom: 120rpx;
|
||
"
|
||
v-if="show == true"
|
||
>
|
||
<view class="doctors_list" id="top">
|
||
<view
|
||
class="doctors_item"
|
||
:style="taihumedId == 4 ? 'padding-bottom:80rpx;' : ''"
|
||
v-for="(item, index) in list"
|
||
:key="index"
|
||
@click="goToDetail(item)"
|
||
>
|
||
<view class="flex">
|
||
<view class="flex">
|
||
<!-- <image
|
||
v-if="item.squareImage"
|
||
:src="item.squareImage"
|
||
class="item_image"
|
||
mode="aspectFit"
|
||
></image>
|
||
<image
|
||
v-else
|
||
src="../../static/logo_zi.png"
|
||
class="item_image"
|
||
mode="aspectFit"
|
||
></image> -->
|
||
|
||
<view class="item_right">
|
||
<view style="display: flex; align-items: center">
|
||
<text
|
||
class="card_label"
|
||
v-if="statusTitle"
|
||
:style="`background-color:${statusColor} ;`"
|
||
>{{ item.state == 4 ? "质检未通过" : statusTitle }}</text
|
||
>
|
||
<image
|
||
v-if="currentCateIndex == 3 && item.state == 6"
|
||
style="
|
||
height: 60rpx;
|
||
width: 60rpx;
|
||
position: absolute;
|
||
right: 16rpx;
|
||
top: 0rpx;
|
||
"
|
||
src="../../static/icon/aa.png"
|
||
mode="aspectFit"
|
||
></image>
|
||
|
||
<image
|
||
v-if="currentCateIndex == 3 && item.state == 5"
|
||
style="
|
||
height: 60rpx;
|
||
width: 60rpx;
|
||
position: absolute;
|
||
right: 16rpx;
|
||
top: 0rpx;
|
||
"
|
||
src="../../static/icon/bb.png"
|
||
mode="aspectFit"
|
||
></image>
|
||
<image
|
||
v-if="currentCateIndex == 4 && item.state == 4"
|
||
style="
|
||
height: 60rpx;
|
||
width: 60rpx;
|
||
position: absolute;
|
||
right: 16rpx;
|
||
top: 0rpx;
|
||
"
|
||
src="../../static/icon/cc.png"
|
||
mode="aspectFit"
|
||
></image>
|
||
<text class="item_time">{{ item.createTime }}</text></view
|
||
>
|
||
|
||
<view
|
||
class="item_top"
|
||
:style="`${currentCateIndex == 4 ? 'opacity: 0.5;' : ''}${
|
||
currentCateIndex == 0 ? 'margin-top:0;' : ''
|
||
}`"
|
||
>
|
||
<view
|
||
class="item_name"
|
||
:style="
|
||
currentCateIndex != 3
|
||
? 'width:100%;'
|
||
: 'width:calc(100% - 100rpx);display: flex;align-items: center;'
|
||
"
|
||
>{{ item.title }}
|
||
|
||
<image
|
||
v-if="currentCateIndex == 3 && item.state == 6"
|
||
style="height: 50rpx; width: 50rpx; margin-left: 10rpx"
|
||
src="../../static/icon/jing2.png"
|
||
mode="aspectFit"
|
||
></image>
|
||
</view>
|
||
|
||
<rich-text
|
||
class="item_content"
|
||
:nodes="item.information"
|
||
></rich-text>
|
||
<!-- <rich-text
|
||
class="item_content"
|
||
:nodes="item.chiefComplaint"
|
||
></rich-text> -->
|
||
</view>
|
||
<view
|
||
style="margin-top: 20rpx"
|
||
v-if="item.img && taihumedId == 0"
|
||
>
|
||
<u-upload
|
||
:fileList="item.fileList1"
|
||
multiple
|
||
width="50"
|
||
height="50"
|
||
:disabled="true"
|
||
:previewFullImage="true"
|
||
@click.stop="handleClick"
|
||
>
|
||
</u-upload>
|
||
</view>
|
||
|
||
<view
|
||
class="list_item_bt"
|
||
:style="
|
||
taihumedId == 4
|
||
? 'width: 100%;display: block;align-items: center;justify-content: space-between;right: 0;padding:0 20rpx;'
|
||
: ''
|
||
"
|
||
>
|
||
<view
|
||
v-if="taihumedId == 4"
|
||
:style="`color: ${
|
||
item.showFlag == 1 ? '#5188e5' : '#5e6d82'
|
||
};display: flex;align-items: center;`"
|
||
>
|
||
<view @click.stop="changeShowFlag(item)">
|
||
<text style="margin-right: 10rpx"
|
||
>是否在我的医案中展示</text
|
||
>
|
||
<uni-icons style="margin-right: 10rpx;display: inline-block;"
|
||
:color="item.showFlag == 1 ? '#5188e5' : '#5e6d82'"
|
||
:type="
|
||
item.showFlag == 0 ? 'eye-slash-filled' : 'eye-filled'
|
||
"
|
||
size="24"
|
||
></uni-icons>
|
||
</view>
|
||
|
||
<view @click.stop="changeShowArticleFlag(item)"
|
||
v-if="item.articleFlag == 0"
|
||
style="
|
||
position: absolute;
|
||
right: 20rpx;
|
||
top: 0;
|
||
background-color: #0552c5;
|
||
padding: 2rpx 20rpx;
|
||
border-radius: 8rpx;
|
||
color: #fff;
|
||
"
|
||
>发布医案文章</view
|
||
>
|
||
<view
|
||
v-else
|
||
style="
|
||
position: absolute;
|
||
right: 20rpx;
|
||
top: 0;
|
||
background-color: #fff;
|
||
padding: 2rpx 20rpx;
|
||
border-radius: 8rpx;
|
||
color: #0552c5;
|
||
"
|
||
>已发布</view
|
||
>
|
||
</view>
|
||
<!-- <view @click.stop="changeShowFlag(item)" v-if="taihumedId == 4" :style="`color: ${item.article_flag==1?'#5188e5':'#5e6d82'};display: flex;align-items: center;`">
|
||
<text style="margin-right: 10rpx;">是否在我的文章中展示</text>
|
||
<uni-icons :color="item.article_flag==1?'#5188e5':'#5e6d82'" :type="item.article_flag==0?'eye-slash-filled':'eye-filled'" size="24" ></uni-icons>
|
||
|
||
|
||
</view> -->
|
||
|
||
<text class="list_item_study" v-if="taihumedId == 0"
|
||
>编辑医案</text
|
||
>
|
||
<!-- <text class="list_item_study" :class="`medicalDetailButton${item.state}`" v-else>医案详情</text> -->
|
||
</view>
|
||
<!-- <text class="item_con">{{ item.taihuTalent.map(talent => talent.name).join(' ') }}</text> -->
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<text v-show="showText && count > list.length" class="show-more"
|
||
>加载更多</text
|
||
>
|
||
<text v-show="noMore" class="no-more">没有更多了</text>
|
||
</scroll-view>
|
||
<text class="null_text" v-else>{{ null_text }}</text>
|
||
<z-navigation></z-navigation>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import $http from "@/config/requestConfig.js";
|
||
import text from "uview-ui/libs/config/props/text";
|
||
export default {
|
||
data() {
|
||
return {
|
||
options: null,
|
||
tabsList: [],
|
||
currentCateIndex: 0,
|
||
list: [],
|
||
null_text: "",
|
||
|
||
current: 1,
|
||
limit: 10,
|
||
courseName: "",
|
||
taihumedId: null,
|
||
statusTitle: "",
|
||
statusColor: "",
|
||
|
||
timer: null,
|
||
showText: false,
|
||
noMore: false,
|
||
show: null,
|
||
count: 0,
|
||
scrollTop: 0, //滚动位置
|
||
isRefreshing: false, //刷新状态
|
||
};
|
||
},
|
||
onPullDownRefresh() {
|
||
this.isRefreshing = true;
|
||
console.log("下拉刷新");
|
||
|
||
setTimeout(() => {
|
||
this.current = 1;
|
||
this.list = [];
|
||
this.noMore = false;
|
||
|
||
this.getListData(this.tabsList[this.currentCateIndex].id);
|
||
uni.stopPullDownRefresh();
|
||
this.isRefreshing = false;
|
||
console.log("下拉刷新已停止");
|
||
}, 800);
|
||
},
|
||
onLoad() {
|
||
uni.hideTabBar();
|
||
this.getTabData();
|
||
},
|
||
onShow() {
|
||
this.getListData(this.taihumedId);
|
||
},
|
||
methods: {
|
||
createFolder() {
|
||
uni.navigateTo({
|
||
url: `/pages/medicalRecords/medical?navTitle=创建医案&title=创建医案&type=add`,
|
||
});
|
||
},
|
||
//判断显示‘上/中/下’
|
||
formatContent(content) {
|
||
const keywords = ["上部", "中部", "下部"];
|
||
let result = [];
|
||
|
||
// 判断是否包含关键字
|
||
keywords.forEach((keyword) => {
|
||
if (content.includes(keyword)) {
|
||
result.push(keyword.substring(0, 1));
|
||
}
|
||
});
|
||
return result.join("");
|
||
},
|
||
//获取tab数据
|
||
getTabData() {
|
||
// this.$http.request({
|
||
// url: 'taihumed/course/getCourseTaihumedList',
|
||
// method: "POST",
|
||
// data: {},
|
||
// header: {
|
||
// "Content-Type": "application/json",
|
||
// },
|
||
// })
|
||
// .then(res=> {
|
||
// if (res.list&&res.list.length>0) {
|
||
this.tabsList = [
|
||
{ id: 0, title: "草稿箱", statusTitle: "" },
|
||
{ id: 1, title: "待审核", statusTitle: "待审核", color: "#f59442" },
|
||
{ id: 3, title: "质检中", statusTitle: "检测中", color: "#17A2B8" },
|
||
{ id: 4, title: "已通过", statusTitle: "", color: "#22be98" },
|
||
{ id: 2, title: "未通过", statusTitle: "审核未通过", color: "#e78084" },
|
||
];
|
||
if (uni.getStorageSync("medicalRecordsStatusId")) {
|
||
const statusId = uni.getStorageSync("medicalRecordsStatusId");
|
||
this.taihumedId = this.tabsList[statusId].id;
|
||
this.currentCateIndex = statusId;
|
||
this.statusTitle = this.tabsList[statusId].statusTitle;
|
||
this.statusColor = this.tabsList[statusId].color;
|
||
} else {
|
||
this.taihumedId = this.tabsList[0].id;
|
||
this.currentCateIndex = 0;
|
||
this.statusTitle = "";
|
||
this.statusColor = "";
|
||
}
|
||
|
||
this.getListData(this.taihumedId);
|
||
// }
|
||
// });
|
||
},
|
||
//获取列表数据
|
||
getListData(taihumedId, type) {
|
||
if (type) {
|
||
this.current = 1;
|
||
this.list = [];
|
||
this.noMore = false;
|
||
}
|
||
if (this.noMore) {
|
||
return false;
|
||
}
|
||
uni.showLoading({
|
||
title: "加载中",
|
||
});
|
||
this.$http
|
||
.request({
|
||
url: "common/medicalRecords/medicalRecordsList",
|
||
method: "POST",
|
||
data: {
|
||
state:
|
||
taihumedId == 4 ? "5,6" : taihumedId == 2 ? "2,4" : taihumedId,
|
||
},
|
||
header: {
|
||
"Content-Type": "application/json",
|
||
},
|
||
})
|
||
.then((res) => {
|
||
uni.hideLoading();
|
||
this.list = [...res.medicalRecordsList].filter((e) => e.data);
|
||
this.list = [...this.list].map((e) => {
|
||
return {
|
||
...e,
|
||
fileList1: e.img
|
||
? e.img.split(",").map((image, i) => ({
|
||
uid: i, // 假设 id 是唯一标识符
|
||
name: i, // 文件名
|
||
status: "done", // 状态
|
||
url: image, // 文件 URL
|
||
}))
|
||
: [],
|
||
};
|
||
});
|
||
this.count = this.list.length; //总数
|
||
let length = this.list.length;
|
||
if (res.medicalRecordsList && length > 0) {
|
||
this.show = true;
|
||
// //如果返回的数据少于每页数量,表示没有更多数据
|
||
// if(this.count==length || length < this.limit ||this.count/this.current==this.limit){
|
||
// this.noMore = true;
|
||
// }
|
||
// this.list = [...this.list, ...res.pageRes.records];
|
||
// this.current += 1; //更新页码
|
||
// //显示提示语
|
||
// this.showText = true;
|
||
|
||
// if(this.current==2||type){
|
||
// this.scrollTop = 0
|
||
// this.$nextTick(() => {
|
||
// this.scrollTop = 0.1; // 确保触发滚动
|
||
// })
|
||
// }
|
||
} else {
|
||
this.show = false;
|
||
this.null_text = "暂无数据";
|
||
}
|
||
});
|
||
},
|
||
changeShowFlag(data) {
|
||
this.$http
|
||
.request({
|
||
url: "common/medicalRecords/saveMedicalRecords",
|
||
method: "POST",
|
||
data: {
|
||
...data,
|
||
showFlag: data.showFlag == 0 ? 1 : 0,
|
||
},
|
||
header: {
|
||
"Content-Type": "application/json",
|
||
},
|
||
})
|
||
.then((res) => {
|
||
this.getListData(this.taihumedId);
|
||
});
|
||
},
|
||
changeShowArticleFlag(data) {
|
||
this.$http
|
||
.request({
|
||
url: "common/medicalRecords/addTaihuTalentArticle",
|
||
method: "POST",
|
||
data: {
|
||
...data,
|
||
showArticleFlag: 1,
|
||
|
||
},
|
||
header: {
|
||
"Content-Type": "application/json",
|
||
},
|
||
})
|
||
.then((res) => {
|
||
this.getListData(this.taihumedId);
|
||
});
|
||
},
|
||
//加载更多
|
||
loadMore() {
|
||
this.getListData(this.taihumedId);
|
||
},
|
||
//切换tab状态
|
||
ordersTabCLi(data, index) {
|
||
this.currentCateIndex = index;
|
||
this.courseName = "";
|
||
this.taihumedId = data.id;
|
||
this.statusTitle = data.statusTitle;
|
||
this.statusColor = data.color;
|
||
//重置
|
||
this.list = [];
|
||
this.noMore = false;
|
||
this.show = false;
|
||
this.count = 0;
|
||
this.current = 1;
|
||
this.getListData(this.taihumedId);
|
||
},
|
||
//详情
|
||
goToDetail(item) {
|
||
if (this.isRefreshing) return;
|
||
var navTitle = "";
|
||
var type = "";
|
||
|
||
switch (this.taihumedId) {
|
||
case 0:
|
||
navTitle = "编辑医案";
|
||
type = "edit";
|
||
break;
|
||
case 1:
|
||
navTitle = "医案详情";
|
||
type = "detail";
|
||
break;
|
||
case 3:
|
||
navTitle = "医案详情";
|
||
type = "detail";
|
||
break;
|
||
case 4:
|
||
navTitle = "医案详情";
|
||
type = "detail";
|
||
break;
|
||
case 2:
|
||
navTitle = "医案详情";
|
||
type = "detail";
|
||
break;
|
||
}
|
||
uni.navigateTo({
|
||
url: `/pages/medicalRecords/medical?navTitle=${navTitle}&title=${navTitle}&id=${item.id}&type=${type}&statusId=${item.state}`,
|
||
});
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
@import "@/static/mixin.scss";
|
||
.content {
|
||
height: 100%;
|
||
overflow: auto;
|
||
background-color: #fff;
|
||
}
|
||
.doctors_list {
|
||
margin: 0 20rpx 20rpx;
|
||
}
|
||
.doctors_item {
|
||
// border: 1rpx solid $themeColor;
|
||
border-radius: 15rpx;
|
||
margin-bottom: 20rpx;
|
||
padding: 12rpx 30rpx 50rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
position: relative;
|
||
background-color: #fff;
|
||
box-shadow: 0 1px 8px #e3e1e1;
|
||
}
|
||
.item_image {
|
||
display: block;
|
||
width: 120rpx;
|
||
height: 120rpx;
|
||
flex-shrink: 0;
|
||
background: #f3f3f3;
|
||
}
|
||
.item_right {
|
||
width: calc(100%);
|
||
// margin-left: 30rpx;
|
||
// padding-bottom: 20rpx;
|
||
}
|
||
.item_top {
|
||
// display: flex;
|
||
// align-items: center;
|
||
// line-height: 30rpx;
|
||
margin-top: 8rpx;
|
||
}
|
||
.item_name {
|
||
font-size: 34rpx;
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word; /* 避免长单词造成溢出 */
|
||
|
||
color: #333;
|
||
font-weight: bold;
|
||
margin-bottom: 8rpx;
|
||
}
|
||
.item_content {
|
||
h1 {
|
||
font-size: 28rpx;
|
||
line-height: 30px;
|
||
}
|
||
}
|
||
.item_title {
|
||
font-size: 32rpx;
|
||
color: #333;
|
||
}
|
||
.item_time {
|
||
font-size: 26rpx;
|
||
color: #aaacab;
|
||
}
|
||
.item_con {
|
||
font-size: 30rpx;
|
||
font-weight: bold;
|
||
color: #333;
|
||
margin-top: 10rpx;
|
||
line-height: 40rpx;
|
||
display: -webkit-box;
|
||
-webkit-line-clamp: 3;
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
.null_text {
|
||
display: block;
|
||
text-align: center;
|
||
font-size: 30rpx;
|
||
color: #999;
|
||
padding-top: 300rpx;
|
||
}
|
||
.doctors_module {
|
||
width: 100%;
|
||
position: fixed;
|
||
z-index: 99;
|
||
left: 0;
|
||
}
|
||
.cateList {
|
||
background: #f3f3f3;
|
||
}
|
||
.flex {
|
||
display: flex;
|
||
align-items: center;
|
||
width: 100%;
|
||
}
|
||
|
||
.name_search {
|
||
background-color: #fff;
|
||
padding: 20rpx 30rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
/deep/.is-input-border {
|
||
background-color: #f3f3f3;
|
||
border-radius: 50rpx;
|
||
height: 60rpx;
|
||
line-height: 30rpx;
|
||
padding: 15rpx;
|
||
font-size: 28rpx;
|
||
color: #666;
|
||
}
|
||
/deep/.uni-easyinput__content-input {
|
||
}
|
||
.name-placeholder {
|
||
font-size: 28rpx;
|
||
text-align: center;
|
||
color: #666;
|
||
}
|
||
|
||
button {
|
||
background-color: $themeBgColor;
|
||
font-size: 26rpx;
|
||
line-height: 36rpx;
|
||
border-radius: 15rpx;
|
||
color: #fff;
|
||
padding: 5rpx 20rpx;
|
||
margin-left: 15rpx;
|
||
}
|
||
}
|
||
.show-more,
|
||
.no-more {
|
||
display: inline-block;
|
||
width: 100%;
|
||
font-size: 24rpx;
|
||
padding-top: 5rpx;
|
||
color: #ccc;
|
||
text-align: center;
|
||
}
|
||
|
||
.list_item_study {
|
||
line-height: 48rpx;
|
||
background: $themeBgColor;
|
||
color: #fff;
|
||
border-radius: 40rpx;
|
||
font-size: 24rpx;
|
||
padding: 0 20rpx;
|
||
}
|
||
.list_item_bt {
|
||
display: flex;
|
||
align-items: center;
|
||
position: absolute;
|
||
right: 20rpx;
|
||
bottom: 16rpx;
|
||
}
|
||
.list_item_price {
|
||
font-size: 30rpx;
|
||
font-weight: 500;
|
||
margin-right: 30rpx;
|
||
color: red;
|
||
line-height: 54rpx;
|
||
}
|
||
.top_right {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-right: 30rpx;
|
||
|
||
text {
|
||
font-size: 28rpx;
|
||
color: #fff;
|
||
padding-left: 2rpx;
|
||
}
|
||
}
|
||
/deep/.u-upload__deletable {
|
||
display: none !important;
|
||
}
|
||
/deep/.u-upload__button {
|
||
display: none !important;
|
||
}
|
||
/* 状态样式 */
|
||
.card_label {
|
||
display: inline-block;
|
||
padding: 0px 16rpx;
|
||
background-color: #4caf50; /* 绿色背景 */
|
||
color: white;
|
||
// font-weight: bold;
|
||
font-size: 12px;
|
||
border-radius: 4px; /* 圆角 */
|
||
position: relative; /* 用于斜角效果 */
|
||
text-align: center;
|
||
transform: skew(-20deg); /* 倾斜效果 */
|
||
margin-right: 20rpx; /* 如果有多个标签时,之间保持间距 */
|
||
line-height: 38rpx;
|
||
}
|
||
|
||
/* 斜角效果 */
|
||
// .card_label::after {
|
||
// content: '';
|
||
// position: absolute;
|
||
// top: 0;
|
||
// right: -10px;
|
||
// width: 20px;
|
||
// height: 20px;
|
||
// background-color: inherit;
|
||
// transform: rotate(45deg); /* 旋转45度,形成斜角 */
|
||
// z-index: -1;
|
||
// }
|
||
|
||
.medicalDetailButton2,
|
||
.medicalDetailButton4 {
|
||
background: #f2f1f6 !important;
|
||
color: #635c5c;
|
||
}
|
||
.medicalDetailButton5,
|
||
.medicalDetailButton6 {
|
||
background: rgb(34, 190, 152) !important;
|
||
}
|
||
.medicalDetailButton1 {
|
||
background: #fff4e0 !important;
|
||
color: rgb(245, 148, 66);
|
||
}
|
||
.medicalDetailButton3 {
|
||
background: #82ddeb70 !important;
|
||
color: rgb(23, 162, 184);
|
||
}
|
||
</style>
|