This commit is contained in:
2025-08-07 16:38:25 +08:00
parent b761ae562f
commit c0aab3d94c
25 changed files with 4204 additions and 1480 deletions

View File

@@ -35,6 +35,18 @@
} }
} }
}, },
{
"path": "pages/medicalRecords/PendingApprovalIndex",
"style": {
"navigationBarTitleText": "待审核医案",
"enablePullDownRefresh": true, // 禁止下拉刷新
"app-plus": {
"bounce": "none",
"titleNView": false,
"popGesture": "none"
}
}
},
{ {
"path": "pages/articleList/index", "path": "pages/articleList/index",
"style": { "style": {
@@ -59,6 +71,18 @@
} }
} }
}, },
{
"path": "pages/medicalRecords/evaluateDetail",
"style": {
"navigationBarTitleText": "医案",
"enablePullDownRefresh": true, // 禁止下拉刷新
"app-plus": {
"bounce": "none",
"titleNView": false,
"popGesture": "none"
}
}
},
{ {
"path": "pages/articleList/article", "path": "pages/articleList/article",

View File

@@ -187,6 +187,7 @@ export default {
fileList1: [], fileList1: [],
containerHeight: null, containerHeight: null,
pollInterval: null,
formData: { formData: {
message: "", message: "",
}, },
@@ -776,11 +777,12 @@ export default {
const poll = () => { const poll = () => {
this.getMedicalDetail(() => { this.getMedicalDetail(() => {
// 停止轮询 // 停止轮询
clearInterval(pollInterval); clearInterval(this.pollInterval);
this.pollInterval = null;
}); });
}; };
// 每5秒发送一次请求直到收到正确的响应 // 每5秒发送一次请求直到收到正确的响应
const pollInterval = setInterval(poll, 5000); this. pollInterval = setInterval(poll, 5000);
//调用后端 SSE 接口,发送问题并接收实时回答 //调用后端 SSE 接口,发送问题并接收实时回答
// this.startSSE(params); // this.startSSE(params);
@@ -1183,9 +1185,11 @@ export default {
}, },
}, },
onHide() { onHide() {
this.closeWebSocket(); this.closeWebSocket();
}, },
onUnload() { onUnload() {
this.pollInterval()
this.closeWebSocket(); this.closeWebSocket();
}, },
}; };

View File

@@ -176,7 +176,8 @@ export default {
this.tabsList = [ this.tabsList = [
{ id: 0, title: "草稿箱", statusTitle: '' }, { id: 0, title: "草稿箱", statusTitle: '' },
{ id: 1, title: "待审核",statusTitle: '待审核',color:'#f59442' }, { id: 1, title: "待审核",statusTitle: '待审核',color:'#f59442' },
{ id: 3, title: "已通过",statusTitle: '已通过' ,color:'#22be98' }, { id: 3, title: "质量检测中",statusTitle: '检测中' ,color:'#22be98' },
{ id: 4, title: "已通过",statusTitle: '已通过' ,color:'#22be98' },
{ id: 2, title: "未通过",statusTitle: '未通过',color:"#e78084" }, { id: 2, title: "未通过",statusTitle: '未通过',color:"#e78084" },
]; ];
this.taihumedId = this.tabsList[0].id; this.taihumedId = this.tabsList[0].id;

View File

@@ -0,0 +1,51 @@
<template>
<view>
<view class="department_item"
:class="deptLabelId == item.id ? 'department_active' : ''"
v-for="(item, index) in chatAssistants"
:key="index"
@click.stop="click_department(item, index)">
<text>{{ item.title }}</text>
<!-- 递归显示子菜单 -->
<view v-if="item.children && item.children.length > 0">
<department-menu :chat-assistants="item.children" @item-click="click_department"></department-menu>
</view>
</view>
</view>
</template>
<script>
import DepartmentMenu from "../commonComponents/DepartmentMenu.vue";
export default {
components: {
DepartmentMenu
},
props: {
chatAssistants: {
type: Array,
required: true
}
},
methods: {
click_department(item, index) {
this.$emit('item-click', item, index); // 向父组件传递点击事件
}
}
};
</script>
<style scoped>
.department_item {
padding-left: 10px; /* 左侧缩进 */
}
.department_active {
color: #ff4500; /* 选中的菜单项颜色 */
}
.department_item > .department_item {
padding-left: 20px; /* 子菜单项的缩进 */
}
</style>

View File

@@ -7,7 +7,7 @@
:backState="2000" :backState="2000"
></z-nav-bar> ></z-nav-bar>
<view class="doctors_module" :style="`top: ${42 + statusBarHeight}px;`"> <view class="doctors_module" :style="`top: ${42 + statusBarHeight}px;`">
<view class="tab-bar"> <!-- <view class="tab-bar">
<view <view
class="tab-item left-tab" class="tab-item left-tab"
:class="{ active: activeTab === 0 }" :class="{ active: activeTab === 0 }"
@@ -22,9 +22,9 @@
> >
名医天地 名医天地
</view> </view>
</view> </view> -->
<template v-if="activeTab == 0"> <template v-if="activeTab == 0">
<view class="cateList flexbox" style="background-color: #fff"> <view class="cateList flexbox" >
<common-sticky <common-sticky
itemStyle="width:33.3%; height: 38px;font-size:24rpx;" itemStyle="width:33.3%; height: 38px;font-size:24rpx;"
:list="tabsList" :list="tabsList"
@@ -58,14 +58,15 @@
</view> </view>
</template> </template>
</view> </view>
<!-- height: calc(100vh - ${activeTab==0?320:280}rpx);
margin-top: ${activeTab==0?280:180}rpx; -->
<scroll-view <scroll-view
scroll-y="true" scroll-y="true"
:scroll-top="scrollTop" :scroll-top="scrollTop"
@scrolltolower="loadMore" @scrolltolower="loadMore"
:style="` :style="`
height: calc(100vh - ${activeTab==0?320:280}rpx); height: calc(100vh - ${activeTab==0?280:280}rpx);
margin-top: ${activeTab==0?260:180}rpx; margin-top: ${activeTab==0?180:180}rpx;
padding-bottom: 140rpx;` padding-bottom: 140rpx;`
" "
v-if="show == true" v-if="show == true"
@@ -93,14 +94,23 @@
></image> ></image>
<view class="item_right" v-if="currentCateIndex != 2"> <view class="item_right" v-if="currentCateIndex != 2">
<view class="item_top"> <!-- <view class="item_top">
<text <text
class="item_name" class="item_name"
v-if="item.taihuTalent && item.taihuTalent.length > 0" v-if="item.taihuTalent && item.taihuTalent.length > 0"
>{{ item.taihuTalent[0].name }}</text >{{ item.taihuTalent[0].name }}</text
> >
</view> </view> -->
<text class="item_con">{{ item.title }}</text> <text class="item_con">{{ item.title }}</text>
<view class="item_info hidden2" style="margin-top: 20rpx;">
<rich-text style="color: #666;"
:nodes="item.content"
v-if="item.content"
></rich-text
>
</view>
</view> </view>
<view class="item_right" v-else> <view class="item_right" v-else>
@@ -424,7 +434,7 @@ else{
background-color: #fff; background-color: #fff;
} }
.doctors_list { .doctors_list {
margin: 0 30rpx 20rpx; margin: 0 20rpx 20rpx;
} }
.doctors_item { .doctors_item {
border: 1rpx solid $themeColor; border: 1rpx solid $themeColor;
@@ -602,4 +612,9 @@ else{
box-shadow: 0 0 8rpx rgba(0, 0, 0, 0.04), box-shadow: 0 0 8rpx rgba(0, 0, 0, 0.04),
/* 外部柔光阴影 */ inset -4rpx 0 6rpx rgba(0, 0, 0, 0.03); /* 内阴影模拟夹层效果 */ /* 外部柔光阴影 */ inset -4rpx 0 6rpx rgba(0, 0, 0, 0.03); /* 内阴影模拟夹层效果 */
} }
.hidden2{
line-height: 24px;
max-height: 48px;
height: auto;
}
</style> </style>

View File

@@ -0,0 +1,473 @@
<template>
<view class="content" style="background-color: #d8e6ff57">
<z-nav-bar title="待审批医案" bgColor="#5188e5" fontColor="#fff">
</z-nav-bar>
<scroll-view
scroll-y="true"
:scroll-top="scrollTop"
@scrolltolower="loadMore"
style="
height: calc(100vh - 140rpx);
margin-top: 40rpx;
padding-bottom: 120rpx;
"
v-if="show == true"
>
<view class="doctors_list" id="top">
<view
class="doctors_item"
v-for="(item, index) in list"
:key="index"
@click="goToDetail(item)"
>
<view class="flex">
<view class="flex">
<view class="item_right">
<view style="display: flex; align-items: center">
<text class="card_label" v-if="statusTitle" :style="`background-color:${statusColor} ;`">{{ statusTitle }}</text>
<text class="item_time">{{ item.createTime }}</text></view
>
<view class="item_top">
<view class="item_name">{{ item.title }}</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">
<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">
<text class="list_item_study">去评价</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 { mapState } from "vuex";
export default {
computed: {
...mapState(["userInfo"]),
},
data() {
return {
list: [],
null_text: "",
current: 1,
limit: 10,
courseName: "",
taihumedId: 3,
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(3);
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 = [ ];
this.taihumedId = 3;
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/getMedicalRecordsCheckList",
method: "POST",
data: {
},
header: {
"Content-Type": "application/json",
},
})
.then((res) => {
uni.hideLoading();
// 过滤不包含自己的用户ID的对象
this.list = [...res.list].filter(item => {
// 判断是否有 stateInfo 属性且它不包含用户ID或者为空字符串
return !item.stateInfo || item.stateInfo === "" || !item.stateInfo.includes(this.userInfo.id.toString());
});
console.log('this.list at line 191:', this.list)
this.show = true;
this.count = this.list.length; //总数
let length = this.list.length;
if(length == 0){
this.show = false;
this.null_text = "暂无数据";
}
// 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 = "暂无数据";
// }
});
},
//加载更多
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 = "";
navTitle = "医案详情";
type = "detail";
uni.navigateTo({
url: `/pages/medicalRecords/evaluateDetail?navTitle=${navTitle}&title=${navTitle}&id=${item.id}&type=${type}&statusId=${this.taihumedId}&isEvaluate=1`,
});
},
},
};
</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 60rpx;
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;
// }
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -11,7 +11,7 @@
<view class="doctors_module" :style="`top: ${42 + statusBarHeight}px;`"> <view class="doctors_module" :style="`top: ${42 + statusBarHeight}px;`">
<view class="cateList flexbox" style="background-color: #fff"> <view class="cateList flexbox" style="background-color: #fff">
<common-sticky <common-sticky
itemStyle="width:25%; height: 38px;font-size:24rpx;" itemStyle="width:20%; height: 38px;font-size:24rpx;"
:list="tabsList" :list="tabsList"
label="title" label="title"
:currentCateIndex="currentCateIndex" :currentCateIndex="currentCateIndex"
@@ -43,6 +43,7 @@
<view class="doctors_list" id="top"> <view class="doctors_list" id="top">
<view <view
class="doctors_item" class="doctors_item"
:style="taihumedId == 4 ? 'padding-bottom:80rpx;' : ''"
v-for="(item, index) in list" v-for="(item, index) in list"
:key="index" :key="index"
@click="goToDetail(item)" @click="goToDetail(item)"
@@ -64,12 +65,75 @@
<view class="item_right"> <view class="item_right">
<view style="display: flex; align-items: center"> <view style="display: flex; align-items: center">
<text class="card_label" v-if="statusTitle" :style="`background-color:${statusColor} ;`">{{ statusTitle }}</text> <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 <text class="item_time">{{ item.createTime }}</text></view
> >
<view class="item_top"> <view
<view class="item_name">{{ item.title }}</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 <rich-text
class="item_content" class="item_content"
:nodes="item.information" :nodes="item.information"
@@ -79,7 +143,10 @@
:nodes="item.chiefComplaint" :nodes="item.chiefComplaint"
></rich-text> --> ></rich-text> -->
</view> </view>
<view style="margin-top: 20rpx" v-if="item.img"> <view
style="margin-top: 20rpx"
v-if="item.img && taihumedId == 0"
>
<u-upload <u-upload
:fileList="item.fileList1" :fileList="item.fileList1"
multiple multiple
@@ -92,11 +159,43 @@
</u-upload> </u-upload>
</view> </view>
<view class="list_item_bt"> <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
@click.stop="changeShowFlag(item)"
v-if="taihumedId == 4"
:style="`color: ${
item.showFlag == 1 ? '#5188e5' : '#5e6d82'
};display: flex;align-items: center;`"
>
<text style="margin-right: 10rpx"
>是否在我的医案中展示</text
>
<uni-icons
:color="item.showFlag == 1 ? '#5188e5' : '#5e6d82'"
:type="
item.showFlag == 0 ? 'eye-slash-filled' : 'eye-filled'
"
size="24"
></uni-icons>
</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 class="list_item_study" v-if="taihumedId == 0"
>编辑医案</text >编辑医案</text
> >
<text class="list_item_study" v-else>医案详情</text> <!-- <text class="list_item_study" :class="`medicalDetailButton${item.state}`" v-else>医案详情</text> -->
</view> </view>
<!-- <text class="item_con">{{ item.taihuTalent.map(talent => talent.name).join(' ') }}</text> --> <!-- <text class="item_con">{{ item.taihuTalent.map(talent => talent.name).join(' ') }}</text> -->
</view> </view>
@@ -116,9 +215,11 @@
<script> <script>
import $http from "@/config/requestConfig.js"; import $http from "@/config/requestConfig.js";
import text from "uview-ui/libs/config/props/text";
export default { export default {
data() { data() {
return { return {
options: null,
tabsList: [], tabsList: [],
currentCateIndex: 0, currentCateIndex: 0,
list: [], list: [],
@@ -128,8 +229,8 @@ export default {
limit: 10, limit: 10,
courseName: "", courseName: "",
taihumedId: null, taihumedId: null,
statusTitle: '', statusTitle: "",
statusColor: '', statusColor: "",
timer: null, timer: null,
showText: false, showText: false,
@@ -194,14 +295,25 @@ export default {
// .then(res=> { // .then(res=> {
// if (res.list&&res.list.length>0) { // if (res.list&&res.list.length>0) {
this.tabsList = [ this.tabsList = [
{ id: 0, title: "草稿箱", statusTitle: '' }, { id: 0, title: "草稿箱", statusTitle: "" },
{ id: 1, title: "待审核",statusTitle: '待审核',color:'#f59442' }, { id: 1, title: "待审核", statusTitle: "待审核", color: "#f59442" },
{ id: 3, title: "已通过",statusTitle: '已通过' ,color:'#22be98' }, { id: 3, title: "质检中", statusTitle: "检测中", color: "#17A2B8" },
{ id: 2, title: "通过",statusTitle: '未通过',color:"#e78084" }, { id: 4, title: "通过", statusTitle: "", color: "#22be98" },
{ id: 2, title: "未通过", statusTitle: "审核未通过", color: "#e78084" },
]; ];
this.taihumedId = this.tabsList[0].id; if (uni.getStorageSync("medicalRecordsStatusId")) {
this.statusTitle = ''; const statusId = uni.getStorageSync("medicalRecordsStatusId");
this.statusColor = ''; 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); this.getListData(this.taihumedId);
// } // }
// }); // });
@@ -224,7 +336,8 @@ export default {
url: "common/medicalRecords/medicalRecordsList", url: "common/medicalRecords/medicalRecordsList",
method: "POST", method: "POST",
data: { data: {
state: taihumedId, state:
taihumedId == 4 ? "5,6" : taihumedId == 2 ? "2,4" : taihumedId,
}, },
header: { header: {
"Content-Type": "application/json", "Content-Type": "application/json",
@@ -232,7 +345,7 @@ export default {
}) })
.then((res) => { .then((res) => {
uni.hideLoading(); uni.hideLoading();
this.list=[...res.medicalRecordsList].filter(e=>e.data) this.list = [...res.medicalRecordsList].filter((e) => e.data);
this.list = [...this.list].map((e) => { this.list = [...this.list].map((e) => {
return { return {
...e, ...e,
@@ -271,6 +384,23 @@ export default {
} }
}); });
}, },
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);
});
},
//加载更多 //加载更多
loadMore() { loadMore() {
this.getListData(this.taihumedId); this.getListData(this.taihumedId);
@@ -309,13 +439,17 @@ export default {
navTitle = "医案详情"; navTitle = "医案详情";
type = "detail"; type = "detail";
break; break;
case 4:
navTitle = "医案详情";
type = "detail";
break;
case 2: case 2:
navTitle = "医案详情"; navTitle = "医案详情";
type = "detail"; type = "detail";
break; break;
} }
uni.navigateTo({ uni.navigateTo({
url: `/pages/medicalRecords/medical?navTitle=${navTitle}&title=${navTitle}&id=${item.id}&type=${type}&statusId=${this.taihumedId}`, url: `/pages/medicalRecords/medical?navTitle=${navTitle}&title=${navTitle}&id=${item.id}&type=${type}&statusId=${item.state}`,
}); });
}, },
}, },
@@ -336,7 +470,7 @@ export default {
// border: 1rpx solid $themeColor; // border: 1rpx solid $themeColor;
border-radius: 15rpx; border-radius: 15rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
padding: 12rpx 30rpx 60rpx; padding: 12rpx 30rpx 50rpx;
display: flex; display: flex;
align-items: center; align-items: center;
position: relative; position: relative;
@@ -528,4 +662,22 @@ export default {
// transform: rotate(45deg); /* 旋转45度形成斜角 */ // transform: rotate(45deg); /* 旋转45度形成斜角 */
// z-index: -1; // 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> </style>

View File

@@ -54,16 +54,13 @@
<!-- 固定的输入框部分 --> <!-- 固定的输入框部分 -->
<view style="height: calc(100% - 120rpx)"> <view style="height: calc(100% - 120rpx)">
<textarea <textarea
v-model="formData.message" v-model="formData.message"
maxlength="-1" maxlength="-1"
style=" style="
width: 100%; width: 100%;
min-height: calc(85vh - 100px) !important; min-height: calc(85vh - 100px) !important;
height: calc(85vh - 100px) !important; height: calc(85vh - 100px) !important;
max-height: calc(85vh - 100px) !important; max-height: calc(85vh - 100px) !important;
" "
auto-height auto-height
placeholder="请输入医案到此处,将自动解析医案信息 placeholder="请输入医案到此处,将自动解析医案信息
@@ -104,7 +101,12 @@
class="message_wrap" class="message_wrap"
:class="`${options.type == 'detail' ? 'message_wrap_detail' : ''}`" :class="`${options.type == 'detail' ? 'message_wrap_detail' : ''}`"
:style="`top: 1px;height:${ :style="`top: 1px;height:${
options.statusId == 1 || options.statusId == 3 ? '92vh' : '85vh' options.statusId == 1 ||
options.statusId == 5 ||
options.statusId == 6 ||
options.statusId == 4
? '92vh'
: '85vh'
}`" }`"
v-if="showMessages" v-if="showMessages"
> >
@@ -286,36 +288,35 @@ export default {
// this.clickRecord(this.pageData, index); // this.clickRecord(this.pageData, index);
// } // }
}, },
async onPullDownRefresh() { async onPullDownRefresh() {
this.isRefreshing = true; this.isRefreshing = true;
console.log("下拉刷新"); console.log("下拉刷新");
setTimeout(async() => { setTimeout(async () => {
if (this.options.type == "add") { if (this.options.type == "add") {
this.showMessages = false; this.showMessages = false;
this.loading = true; this.loading = true;
} else { } else {
this.showMessages = true; this.showMessages = true;
this.loading = true; this.loading = true;
await this.getMedicalDetail(() => { await this.getMedicalDetail(() => {
this.medicalForm = { ...this.medicalRecords }; this.medicalForm = { ...this.medicalRecords };
console.log("this.medicalForm at line 193:", this.medicalForm); console.log("this.medicalForm at line 193:", this.medicalForm);
if (this.medicalRecords.img) { if (this.medicalRecords.img) {
this.$refs.commonMedicalDetail.fileList1 = this.medicalRecords.img this.$refs.commonMedicalDetail.fileList1 = this.medicalRecords.img
.split(",") .split(",")
.map((image, i) => ({ .map((image, i) => ({
uid: i, // 假设 id 是唯一标识符 uid: i, // 假设 id 是唯一标识符
name: i, // 文件名 name: i, // 文件名
status: "done", // 状态 status: "done", // 状态
url: image, // 文件 URL url: image, // 文件 URL
})); }));
} }
}); });
// this.tishi=true // this.tishi=true
} }
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
this.isRefreshing = false; this.isRefreshing = false;
console.log("下拉刷新已停止"); console.log("下拉刷新已停止");
@@ -383,48 +384,41 @@ export default {
} }
} }
if ( if (
["妇科", "儿科"].includes(this.medicalForm.labelTitle) &&
["妇科", "儿科"].includes(this.medicalForm.labelTitle)&&isNewSave!=1 isNewSave != 1
) { ) {
if ( if (this.medicalForm.labelTitle == "妇科") {
const value = this.editableMap["personalAndFamilyHistory"] || "";
this.medicalForm.labelTitle == "妇科" const hasKeywords = value.includes("月经") || value.includes("婚育");
) {
const value = this.editableMap["personalAndFamilyHistory"] || "";
const hasKeywords =
value.includes("月经") || value.includes("婚育");
if (!hasKeywords) { if (!hasKeywords) {
// 包含“月经”或“婚育” // 包含“月经”或“婚育”
console.log("包含月经或婚育相关内容"); console.log("包含月经或婚育相关内容");
const titleHtml = this.getTitleHtml( const titleHtml = this.getTitleHtml(
this.record["personalAndFamilyHistory"] this.record["personalAndFamilyHistory"]
).replace(/<[^>]*>/g, ""); ).replace(/<[^>]*>/g, "");
this.$commonJS.showToast( this.$commonJS.showToast(
"请在 " + titleHtml + " 中输入月经或婚育相关内容" "请在 " + titleHtml + " 中输入月经或婚育相关内容"
); );
return false; return false;
}
}
if (
this.medicalForm.labelTitle == "儿科"
) {
const value = this.editableMap["pastHistory"] || "";
const hasKeywords = value.includes("疫苗");
if (!hasKeywords) {
// 包含“月经”或“婚育”
console.log("疫苗");
const titleHtml = this.getTitleHtml(
this.record["pastHistory"]
).replace(/<[^>]*>/g, "");
this.$commonJS.showToast(
"请在 " + titleHtml + " 中输入疫苗接种相关内容"
);
return false;
}
}
} }
}
if (this.medicalForm.labelTitle == "儿科") {
const value = this.editableMap["pastHistory"] || "";
const hasKeywords = value.includes("疫苗");
if (!hasKeywords) {
// 包含“月经”或“婚育”
console.log("疫苗");
const titleHtml = this.getTitleHtml(
this.record["pastHistory"]
).replace(/<[^>]*>/g, "");
this.$commonJS.showToast(
"请在 " + titleHtml + " 中输入疫苗接种相关内容"
);
return false;
}
}
}
var recordData = { ...this.record }; var recordData = { ...this.record };
for (const key in recordData) { for (const key in recordData) {
const titleHtml = this.getTitleHtml(recordData[key]); const titleHtml = this.getTitleHtml(recordData[key]);
@@ -465,6 +459,11 @@ export default {
url: `/pages/medicalRecords/medical?navTitle=编辑医案&title=编辑医案&id=${this.medicalId}&type=edit&statusId=0`, url: `/pages/medicalRecords/medical?navTitle=编辑医案&title=编辑医案&id=${this.medicalId}&type=edit&statusId=0`,
}); });
} else { } else {
if (type == "submit") {
uni.setStorageSync("medicalRecordsStatusId", 1);
} else {
uni.removeStorageSync("medicalRecordsStatusId");
}
uni.redirectTo({ uni.redirectTo({
url: "/pages/medicalRecords/index", url: "/pages/medicalRecords/index",
}); });
@@ -479,26 +478,26 @@ export default {
// 判断内容是否为空或无效 // 判断内容是否为空或无效
getTitleHtml(html, key) { getTitleHtml(html, key) {
const str = [ const str = [
"chiefComplaint", "chiefComplaint",
"historyOfPresentIllness", "historyOfPresentIllness",
"physicaExamination", "physicaExamination",
"treatmentPlan", "treatmentPlan",
].includes(key) ].includes(key)
? `<span style="color:#F56C6C;margin-right:4px">*</span>` ? `<span style="color:#F56C6C;margin-right:4px">*</span>`
: ""; : "";
// Regular expression to capture the first <h1> element in the HTML // Regular expression to capture the first <h1> element in the HTML
const h1Match = html.match(/<h1[^>]*>(.*?)<\/h1>/); const h1Match = html.match(/<h1[^>]*>(.*?)<\/h1>/);
if (h1Match) { if (h1Match) {
// If an <h1> is found, return it with the prepended star if needed // If an <h1> is found, return it with the prepended star if needed
return `<h1>${str}${h1Match[1]}</h1>`; return `<h1>${str}${h1Match[1]}</h1>`;
} else { } else {
// If no <h1> is found, return an empty <h1> // If no <h1> is found, return an empty <h1>
return "<h1></h1>"; return "<h1></h1>";
} }
}, },
async checkPermision() { async checkPermision() {
var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE"); var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE");
@@ -753,7 +752,7 @@ export default {
}, },
}) })
.then((res) => { .then((res) => {
console.log('res at line 713:', res) console.log("res at line 713:", res);
if (res.code == 0) { if (res.code == 0) {
this.medicalId = res.data; this.medicalId = res.data;

View File

@@ -6,61 +6,118 @@
:scroll-into-view="scrollIntoView" :scroll-into-view="scrollIntoView"
scroll-with-animation scroll-with-animation
> >
<view <view
class="message-container-block" class="message-container-block"
:class="{ :class="{
'message-container-detail': type == 'detail', 'message-container-detail': type == 'detail',
'content_detail_0': statusId == 0, content_detail_0: statusId == 0,
'content_detail_1': statusId == 1, content_detail_1: statusId == 1,
'content_detail_2': statusId == 2, content_detail_2: statusId == 2 || statusId == 4,
'content_detail_3': statusId == 3, content_detail_3: statusId == 3,
'content_detail_3_talents': page == 'talents', content_detail_4: statusId == 5 || statusId == 6,
}" content_detail_3_talents: page == 'talents',
content_detail_none: isEvaluate == '1',
}"
> >
<view class="loading-spinner" v-if="loading"></view> <view class="loading-spinner" v-if="loading"></view>
<uni-notice-bar :color="medicalRecords.state==0?'#eb3c41':medicalRecords.state==2?'#e78083':''" <uni-notice-bar
:background-color="medicalRecords.state==3?'#e7808330':medicalRecords.state==2?'#e7808330':''" :color="
:text="`审核备注:${markInfo}`" medicalRecords.state == 0
v-if="markInfo" style="margin-bottom: 0;"/> ? '#eb3c41'
: medicalRecords.state == 2 || medicalRecords.state == 4
? '#e78083'
: ''
"
:background-color="
medicalRecords.state == 6 || medicalRecords.state == 5
? '#e7808330'
: medicalRecords.state == 2 || medicalRecords.state == 4
? '#e7808330'
: ''
"
:text="`${medicalRecords.state == 4?'质检未通过':'审核备注'}${markInfo}`"
v-if="markInfo"
style="margin-bottom: 0"
/>
<view
<view style="" class="detail_top" :class="{ style=""
class="detail_top"
:class="{
'detail_top_0': statusId == 0, detail_top_0: statusId == 0,
'detail_top_1': statusId == 1, detail_top_1: statusId == 1,
'detail_top_2': statusId == 2, detail_top_2: statusId == 2 || statusId == 4,
'detail_top_3': statusId == 3, detail_top_3: statusId == 3,
'detail_top_3_talents': page == 'talents', detail_top_4: statusId == 5 || statusId == 6,
}" v-if="type == 'detail'"> detail_top_3_talents: page == 'talents',
<view class="detail_top_left" :style="`${page?'width:100%;padding-bottom:0':''}`"> detail_top_none: isEvaluate == '1',
}"
v-if="type == 'detail'"
>
<view
class="detail_top_left"
:style="`${page ? 'width:100%;padding-bottom:0' : ''}`"
>
<view class="detail_top_item"> <view class="detail_top_item">
<view class="detail_top_item_name">{{ formData.title }}</view> <view class="detail_top_item_name">
<view class="label_title">分类 : {{ formData.labelTitle }}</view> {{ formData.title }}</view
>
<view
class="label_title"
:style="isEvaluate == '1' ? 'color:#000' : ''"
>分类 : {{ formData.labelTitle }}
</view>
</view> </view>
</view> </view>
<image <image
class="image_box" class="image_box"
v-if="statusId == 1&&!page" v-if="statusId == 1 && !page && !isEvaluate"
src="../../static/icon/shenghezhong.png" src="../../static/icon/shenghezhong.png"
style="" style=""
></image> ></image>
<image <image
class="image_box" class="image_box"
v-if="statusId == 2&&!page" v-if="(statusId == 2) && !page && !isEvaluate"
src="../../static/icon/weitongguo.png" src="../../static/icon/weitongguo.png"
style="" style=""
></image> ></image>
<image <image
class="image_box" class="image_box"
v-if="statusId == 3&&!page" style="width: 150rpx"
v-if="statusId == 3 && !page && !isEvaluate"
src="../../static/icon/jiancezhong.png"
></image>
<!-- <image
class="image_box"
v-if="(statusId == 5) && !page && !isEvaluate"
src="../../static/icon/yitongguo.png" src="../../static/icon/yitongguo.png"
style="width: 150rpx;" style="width: 150rpx"
></image ></image
></view> > -->
<image
class="image_box"
v-if="(statusId == 6) && !page && !isEvaluate"
src="../../static/icon/a_.png"
style="width: 170rpx;right:40rpx;top: 60rpx;"
></image
>
<image
class="image_box"
v-if="(statusId == 5) && !page && !isEvaluate"
src="../../static/icon/b_.png"
style="width: 200rpx;"
></image
>
<image
class="image_box"
v-if="(statusId == 4) && !page && !isEvaluate"
src="../../static/icon/c_.png"
style="width: 200rpx;right: -10rpx;"
></image
>
</view>
<view class="home_wrap" style="margin: 0" v-if="!loading"> <view class="home_wrap" style="margin: 0" v-if="!loading">
<view <view
class="home_form" class="home_form"
@@ -182,6 +239,7 @@
justify-content: space-between; justify-content: space-between;
margin-bottom: 14px; margin-bottom: 14px;
" "
:style="isEvaluate == '1' ? 'text-align: justify;' : ''"
> >
<view style="width: calc(100%)"> <view style="width: calc(100%)">
<view <view
@@ -209,54 +267,58 @@
></view> ></view>
<!-- <view class="editor-wrapper"> --> <!-- <view class="editor-wrapper"> -->
<rich-text style="color: #474343;" <rich-text
style="color: #474343"
:nodes="editableMap[key]" :nodes="editableMap[key]"
v-if="editableMap[key]" v-if="editableMap[key]"
></rich-text> ></rich-text>
<rich-text nodes="<p>无</p>" v-else style="color: #474343;"></rich-text> <rich-text
nodes="<p>无</p>"
v-else
style="color: #474343"
></rich-text>
<!-- </view> --> <!-- </view> -->
</view> </view>
<view v-if="fileList1.length>0" <view
class="form_item" v-if="fileList1.length > 0"
style=" class="form_item"
display: block; style="
display: block;
margin-bottom: 14px; margin-bottom: 14px;
" "
>
<view
class="h1_box"
v-html="`<h1>图片</h1>`"
style="
margin-top: 0;
margin-bottom: 14px;
font-weight: bold;
display: flex;
align-items: center;
"
></view>
<view
class="in"
style="border: none; width: 100%"
@click="checkPermision"
>
<u-upload
:fileList="fileList1"
@afterRead="addPic"
@delete="deletePic"
multiple
width="55"
height="55"
:previewFullImage="true"
> >
</u-upload> <view
</view> class="h1_box"
</view> v-html="`<h1>图片</h1>`"
</view> style="
</view> margin-top: 0;
margin-bottom: 14px;
font-weight: bold;
display: flex;
align-items: center;
"
></view>
<view
class="in"
style="border: none; width: 100%"
@click="checkPermision"
>
<u-upload
:fileList="fileList1"
@afterRead="addPic"
@delete="deletePic"
multiple
width="55"
height="55"
:previewFullImage="true"
>
</u-upload>
</view>
</view>
</view>
</view>
</view> </view>
<!-- 搜索结果列表 --> <!-- 搜索结果列表 -->
@@ -284,10 +346,18 @@ export default {
components: { components: {
treeList, treeList,
}, },
props: ["loading", "form", "medicalRecords", "type", "statusId",'page'], props: [
"loading",
"form",
"medicalRecords",
"type",
"statusId",
"page",
"isEvaluate",
],
data() { data() {
return { return {
markInfo:'', markInfo: "",
editorOptions: { editorOptions: {
theme: "snow", // Quill 编辑器的主题 theme: "snow", // Quill 编辑器的主题
modules: { modules: {
@@ -389,8 +459,6 @@ export default {
onShow() {}, onShow() {},
methods: { methods: {
onStatusChange(e) { onStatusChange(e) {
this.formats = e.detail; this.formats = e.detail;
}, },
@@ -454,40 +522,40 @@ export default {
}, },
getInnerHtml(html) { getInnerHtml(html) {
// Regular expression to capture all HTML tags excluding the first <h1> tag // Regular expression to capture all HTML tags excluding the first <h1> tag
const h1Match = html.match(/<h1[^>]*>.*?<\/h1>/); const h1Match = html.match(/<h1[^>]*>.*?<\/h1>/);
// If an <h1> is found, remove it and process the rest
if (h1Match) {
// Remove the first <h1> and its content, then return the rest of the HTML
html = html.replace(h1Match[0], '');
}
// Return the remaining HTML // If an <h1> is found, remove it and process the rest
return html; if (h1Match) {
}, // Remove the first <h1> and its content, then return the rest of the HTML
html = html.replace(h1Match[0], "");
}
// Return the remaining HTML
return html;
},
getTitleHtml(html, key) { getTitleHtml(html, key) {
const str = [ const str = [
"chiefComplaint", "chiefComplaint",
"historyOfPresentIllness", "historyOfPresentIllness",
"physicaExamination", "physicaExamination",
"treatmentPlan", "treatmentPlan",
].includes(key) ].includes(key)
? `<span style="color:#F56C6C;margin-right:4px">*</span>` ? `<span style="color:#F56C6C;margin-right:4px">*</span>`
: ""; : "";
// Regular expression to capture the first <h1> element in the HTML // Regular expression to capture the first <h1> element in the HTML
const h1Match = html.match(/<h1[^>]*>(.*?)<\/h1>/); const h1Match = html.match(/<h1[^>]*>(.*?)<\/h1>/);
if (h1Match) { if (h1Match) {
// If an <h1> is found, return it with the prepended star if needed // If an <h1> is found, return it with the prepended star if needed
return `<h1>${str}${h1Match[1]}</h1>`; return `<h1>${str}${h1Match[1]}</h1>`;
} else { } else {
// If no <h1> is found, return an empty <h1> // If no <h1> is found, return an empty <h1>
return "<h1></h1>"; return "<h1></h1>";
} }
}, },
async checkPermision() { async checkPermision() {
var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE"); var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE");
@@ -742,27 +810,36 @@ export default {
this.chatId = item.id; this.chatId = item.id;
this.chatName = item.name; this.chatName = item.name;
}, },
initRecordData(data) { initRecordData(data) {
this.markInfo='' this.markInfo = "";
this.formData.title = data.title ? data.title : ""; this.formData.title = data.title ? data.title : "";
this.formData.labelId = data.labelId ? data.labelId : ""; this.formData.labelId = data.labelId ? data.labelId : "";
this.formData.labelTitle = data.labelTitle ? data.labelTitle : ""; this.formData.labelTitle = data.labelTitle ? data.labelTitle : "";
if(data.mark){ if (data.mark) {
this.markList = JSON.parse(data.mark);
this.markList = JSON.parse(data.mark); const latest = this.markList.reduce((latest, current) => {
const latest = this.markList.reduce((latest, current) => { return new Date(current.time) > new Date(latest.time)
return new Date(current.time) > new Date(latest.time) ? current : latest; ? current
}); : latest;
if(data.state!=1&&data.state!=3&&latest){ });
this.markInfo=latest.mark?latest.mark:'' if (
} data.state != 1 &&
data.state != 4 &&
data.state != 5 &&
data.state != 6 &&
data.state != 3 &&
latest
) {
this.markInfo = latest.mark ? latest.mark : "";
}
// medicalRecords.mark&&medicalRecords.state!=1&&medicalRecords.state!=3 // medicalRecords.mark&&medicalRecords.state!=1&&medicalRecords.state!=3
} }
if(data.state==4){
this.markInfo = '医案内容不够精准'
}
this.record = { this.record = {
information: data.information information: data.information
? data.information ? data.information
@@ -1386,8 +1463,6 @@ if(data.state!=1&&data.state!=3&&latest){
} }
} }
.message_title { .message_title {
text-align: center; text-align: center;
font-size: 34rpx; font-size: 34rpx;
@@ -1866,23 +1941,24 @@ h3 {
display: none !important; display: none !important;
} }
} }
.content_detail_1{ .content_detail_1 {
background: #fff4e026; background: #fff4e026;
} }
.content_detail_3{
.content_detail_3 {
background: linear-gradient(to bottom, #f4fbfa 0%, #fff 90%);
}
.content_detail_4 {
background: linear-gradient(to bottom, #f6fcfb 0%, #fff 90%); background: linear-gradient(to bottom, #f6fcfb 0%, #fff 90%);
} }
.content_detail_3_talents{ .content_detail_3_talents {
background: linear-gradient(to bottom, #e9f2fc 0%, #ffffff 90%); background: linear-gradient(to bottom, #e9f2fc 0%, #ffffff 90%);
} }
// .content_detail_2{ // .content_detail_2{
// background: linear-gradient(to bottom, #f2f1f6 0%, #fff 90%); // background: linear-gradient(to bottom, #f2f1f6 0%, #fff 90%);
// } // }
.content_detail_2{ .content_detail_2 {
// background: linear-gradient(to bottom, #e7808330 0%, #fff 90%); // background: linear-gradient(to bottom, #e7808330 0%, #fff 90%);
} }
.detail_top { .detail_top {
@@ -1890,7 +1966,7 @@ h3 {
min-height: 280rpx; min-height: 280rpx;
position: relative; position: relative;
// background: linear-gradient(to bottom, #fff4e0 0%, #fff 90%); // background: linear-gradient(to bottom, #fff4e0 0%, #fff 90%);
.image_box { .image_box {
width: 130rpx; width: 130rpx;
height: 130rpx; height: 130rpx;
@@ -1927,22 +2003,30 @@ h3 {
font-weight: bold; font-weight: bold;
margin-bottom: 40rpx; margin-bottom: 40rpx;
} }
.detail_top_1{ .detail_top_1 {
background: linear-gradient(to bottom, #fff4e0 0%, #fff4e026 90%); background: linear-gradient(to bottom, #fff4e0 0%, #fff4e026 90%);
} }
.detail_top_2{ .detail_top_2 {
background: linear-gradient(to bottom, #f2f1f6 0%, #fff 90%); background: linear-gradient(to bottom, #f2f1f6 0%, #fff 90%);
} }
.detail_top_3{ .detail_top_3 {
background: linear-gradient(to bottom, #67c2d070 0%, #f6fcfb 90%);
}
.detail_top_4 {
background: linear-gradient(to bottom, #22be973d 0%, #f6fcfb 90%); background: linear-gradient(to bottom, #22be973d 0%, #f6fcfb 90%);
} }
.detail_top_3_talents{ .detail_top_3_talents {
background: linear-gradient(to bottom, #d8e6ff 0%, #e9f2fc 90%); background: linear-gradient(to bottom, #d8e6ff 0%, #e9f2fc 90%);
min-height:260rpx; min-height: 260rpx;
}
.content_detail_none {
background: #d8e6ff57 !important;
}
.detail_top_none {
background: #d8e6ff0d !important;
min-height: auto;
.detail_top_left {
width: 100%;
}
} }
</style> </style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

BIN
static/icon/a.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
static/icon/a_.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
static/icon/aa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/icon/b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
static/icon/b_.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
static/icon/bb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/icon/c.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
static/icon/c_.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

BIN
static/icon/cc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/icon/jiancezhong.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
static/icon/jing2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
static/icon/jingpin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB