This commit is contained in:
liuyuan
2025-08-07 16:39:54 +08:00
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" },
]; ];
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.taihumedId = this.tabsList[0].id;
this.statusTitle = ''; this.currentCateIndex = 0;
this.statusColor = ''; 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"
> >
@@ -290,7 +292,7 @@ export default {
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;
@@ -315,7 +317,6 @@ export default {
// this.tishi=true // this.tishi=true
} }
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
this.isRefreshing = false; this.isRefreshing = false;
console.log("下拉刷新已停止"); console.log("下拉刷新已停止");
@@ -383,16 +384,12 @@ export default {
} }
} }
if ( if (
["妇科", "儿科"].includes(this.medicalForm.labelTitle) &&
["妇科", "儿科"].includes(this.medicalForm.labelTitle)&&isNewSave!=1 isNewSave != 1
) {
if (
this.medicalForm.labelTitle == "妇科"
) { ) {
if (this.medicalForm.labelTitle == "妇科") {
const value = this.editableMap["personalAndFamilyHistory"] || ""; const value = this.editableMap["personalAndFamilyHistory"] || "";
const hasKeywords = const hasKeywords = value.includes("月经") || value.includes("婚育");
value.includes("月经") || value.includes("婚育");
if (!hasKeywords) { if (!hasKeywords) {
// 包含“月经”或“婚育” // 包含“月经”或“婚育”
@@ -406,10 +403,7 @@ export default {
return false; return false;
} }
} }
if ( if (this.medicalForm.labelTitle == "儿科") {
this.medicalForm.labelTitle == "儿科"
) {
const value = this.editableMap["pastHistory"] || ""; const value = this.editableMap["pastHistory"] || "";
const hasKeywords = value.includes("疫苗"); const hasKeywords = value.includes("疫苗");
if (!hasKeywords) { if (!hasKeywords) {
@@ -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",
}); });
@@ -498,7 +497,7 @@ export default {
// 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,14 +267,20 @@
></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
v-if="fileList1.length > 0"
class="form_item" class="form_item"
style=" style="
display: block; display: block;
@@ -255,8 +319,6 @@
</view> </view>
</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;
}, },
@@ -460,12 +528,12 @@ export default {
// If an <h1> is found, remove it and process the rest // If an <h1> is found, remove it and process the rest
if (h1Match) { if (h1Match) {
// Remove the first <h1> and its content, then return the rest of the HTML // Remove the first <h1> and its content, then return the rest of the HTML
html = html.replace(h1Match[0], ''); html = html.replace(h1Match[0], "");
} }
// Return the remaining HTML // Return the remaining HTML
return html; return html;
}, },
getTitleHtml(html, key) { getTitleHtml(html, key) {
const str = [ const str = [
@@ -487,7 +555,7 @@ export default {
// 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");
@@ -743,26 +811,35 @@ export default {
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) ? current : latest; return new Date(current.time) > new Date(latest.time)
}); ? current
if(data.state!=1&&data.state!=3&&latest){ : 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 {
@@ -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>

View File

@@ -1,23 +1,45 @@
<template> <template>
<view class="commonPage commonPageBox"> <view class="commonPage commonPageBox">
<view class="bg_top"> <view class="bg_top">
<u-icon @click="goSetting" class="setIcon" labelColor="#5188e5" labelPos="bottom" label="设置" name="setting" <u-icon
:style="`top:${(20 + statusBarHeight) * 2}rpx`" color="#5188e5" size="22"></u-icon> @click="goSetting"
class="setIcon"
labelColor="#5188e5"
labelPos="bottom"
label="设置"
name="setting"
:style="`top:${(20 + statusBarHeight) * 2}rpx`"
color="#5188e5"
size="22"
></u-icon>
</view> </view>
<view class="mine_box" :style="`top:${(80 + statusBarHeight) * 2}rpx`"> <view class="mine_box" :style="`top:${(80 + statusBarHeight) * 2}rpx`">
<view class="per_mes"> <view class="per_mes">
<view class="per_mes_user"> <view class="per_mes_user">
<view style="display: flex; align-items: center; flex-direction: column"> <view
<image @click="goUserInfo" :src="userMes.avatar" v-if="userMes.avatar&&userMes.avatar!=''" style="display: flex; align-items: center; flex-direction: column"
class="per_mes_img color_shandow"></image> >
<image src="../../static/image.png" v-if="userMes.avatar == null||userMes.avatar == ''" <image
class="per_mes_img color_shandow"></image> @click="goUserInfo"
:src="userMes.avatar"
v-if="userMes.avatar && userMes.avatar != ''"
class="per_mes_img color_shandow"
></image>
<image
src="../../static/image.png"
v-if="userMes.avatar == null || userMes.avatar == ''"
class="per_mes_img color_shandow"
></image>
</view> </view>
</view> </view>
<view class="userInfoBox"> <view class="userInfoBox">
<view class="name">{{ userMes.nickname ? userMes.nickname : "未设置" }}</view> <view class="name">{{
<view class="phone" v-if="userMes.tel">手机号({{ userMes.tel }})</view> userMes.nickname ? userMes.nickname : "未设置"
}}</view>
<view class="phone" v-if="userMes.tel"
>手机号({{ userMes.tel }})</view
>
</view> </view>
<br clear="both" /> <br clear="both" />
</view> </view>
@@ -53,30 +75,46 @@
<view class="chong_zhi boxShadow box_fillet chongzhi_box"> <view class="chong_zhi boxShadow box_fillet chongzhi_box">
<view class="chong_list"> <view class="chong_list">
<view class="left"> <view class="left">
<view class="chong_list_item" @click="onPageJump('/pages/wallet/account')"> <view
class="chong_list_item"
@click="onPageJump('/pages/wallet/account')"
>
<view class="pay_item_img"> <view class="pay_item_img">
天医币 天医币
<u-icon @click.native.stop="openInfo()" <u-icon
@click.native.stop="openInfo()"
name="question-circle" name="question-circle"
style="float: right; margin: 0 6rpx"> style="float: right; margin: 0 6rpx"
>
</u-icon> </u-icon>
</view> </view>
<view class="text" style="line-height:30rpx; display: flex"> <view class="text" style="line-height: 30rpx; display: flex">
{{userMes.peanutCoin ? userMes.peanutCoin : 0}} {{ userMes.peanutCoin ? userMes.peanutCoin : 0 }}
</view> </view>
</view> </view>
<view class="chong_list_item" @click="onPageJump('/pages/wallet/points')" v-if="$platform=='android'"> <view
<view class="pay_item_img"> class="chong_list_item"
积分 @click="onPageJump('/pages/wallet/points')"
</view> v-if="$platform == 'android'"
<view class="text" style="line-height:30rpx">{{userMes.jf ? userMes.jf : 0}}</view> >
<view class="pay_item_img"> 积分 </view>
<view class="text" style="line-height: 30rpx">{{
userMes.jf ? userMes.jf : 0
}}</view>
</view> </view>
</view> </view>
<view class="chong_list_item" style="flex-direction:initial;margin-right:0;"> <view
<view class="chong_btn" @click="onPageJump('/pages/wallet/recharge')"> </view> class="chong_list_item"
style="flex-direction: initial; margin-right: 0"
>
<view
class="chong_btn"
@click="onPageJump('/pages/wallet/recharge')"
> </view
>
</view> </view>
</view> </view>
</view> </view>
@@ -84,10 +122,33 @@
<view class="list_box"> <view class="list_box">
<view class="xiugai boxShadow box_fillet"> <view class="xiugai boxShadow box_fillet">
<common-list :dataList="pageList" @hancleClick="handleClickTab" label="name"> <common-list
:dataList="pageList"
@hancleClick="handleClickTab"
label="name"
>
<template slot="rightSlot" slot-scope="slotProps"> <template slot="rightSlot" slot-scope="slotProps">
<text class="fdButtonBox aui-text-success" <text
style="line-height: 40rpx">{{ slotProps.row.content }}</text> class="fdButtonBox aui-text-success"
style="line-height: 40rpx"
>{{ slotProps.row.content }}</text
>
<text
class="fdButtonBox aui-text-success"
v-if="
slotProps.row.contentType &&
slotProps.row.contentType == 'shengpi' &&
shengpiNumber > 0
"
style="
line-height: 40rpx;
font-size: 40rpx;
color: #5188e5;
float: right;
"
>{{ shengpiNumber }}</text
>
</template> </template>
</common-list> </common-list>
</view> </view>
@@ -106,9 +167,18 @@
</view> </view>
<view class="bottom"> <view class="bottom">
<view class="button_box" style=" align-items: center; justify-content: center;"> <view
<u-button style="width: 200rpx; float: center" :plain="true" text="知道啦" color="#9b9b9b" class="button_box"
size="small" @click="infoShow = false"></u-button> style="align-items: center; justify-content: center"
>
<u-button
style="width: 200rpx; float: center"
:plain="true"
text="知道啦"
color="#9b9b9b"
size="small"
@click="infoShow = false"
></u-button>
</view> </view>
</view> </view>
</view> </view>
@@ -121,14 +191,12 @@
<script> <script>
import $http from "@/config/requestConfig.js"; import $http from "@/config/requestConfig.js";
import { import { mapState, mapMutations } from "vuex";
mapState,
mapMutations
} from "vuex";
export default { export default {
data() { data() {
return { return {
userMes: {}, userMes: {},
shengpiNumber: 0,
pageList: [ pageList: [
// { // {
// name: "我的病历夹", // name: "我的病历夹",
@@ -143,22 +211,23 @@ export default {
{ {
name: "我的订单", name: "我的订单",
url: "/pages/order/index", url: "/pages/order/index",
type: "pageJump" type: "pageJump",
},
{
name: "我的文章",
url: "/pages/articleList/index",
type: "pageJump"
},
{
name: "我的医案",
url: "/pages/medicalRecords/index",
type: "pageJump"
}, },
// {
// name: "我的文章",
// url: "/pages/articleList/index",
// type: "pageJump"
// },
// {
// name: "待审核医案",
// url: "/pages/medicalRecords/PendingApprovalIndex",
// type: "pageJump"
// },
{ {
name: "我的课程", name: "我的课程",
url: "/pages/curriculum/index/index", url: "/pages/curriculum/index/index",
type: "pageJump" type: "pageJump",
}, },
{ {
name: "个人资料", name: "个人资料",
@@ -173,12 +242,12 @@ export default {
{ {
name: "问题反馈/申诉", name: "问题反馈/申诉",
url: "/pages/user/workOrder", url: "/pages/user/workOrder",
type: "pageJump" type: "pageJump",
} },
], ],
infoShow: false, // 显示电子书相关 infoShow: false, // 显示电子书相关
aiVipLog: null, aiVipLog: null,
flag: null flag: null,
}; };
}, },
computed: { computed: {
@@ -187,9 +256,15 @@ export default {
//第一次加载 //第一次加载
onLoad(e) { onLoad(e) {
uni.hideTabBar(); uni.hideTabBar();
this.getMedicalRecords();
this.getMedicalRecordsCanCheck();
}, },
//页面显示 //页面显示
onShow() { onShow() {
if(uni.getStorageSync('medicalRecordsStatusId')){
uni.removeStorageSync('medicalRecordsStatusId');
}
this.getShengpiNumber()
this.getData(); this.getData();
this.getVipData(); this.getVipData();
}, },
@@ -227,18 +302,74 @@ export default {
}); });
} }
}, },
//获取数据 getMedicalRecords() {
getVipData() { if (this.userInfo.id != undefined) {
this.$http.request({ this.$http
url: 'taihumed/aiVip/getUserAiVip', .post("common/medicalRecords/getMedicalRecordsRoleByUser")
.then((res) => {
console.log("res at line 237:", res);
if (res.code == 0 && res.roleFlag == 1) {
this.pageList.splice(1, 0, {
name: "我的医案",
url: "/pages/medicalRecords/index",
type: "pageJump",
});
}
});
}
},
getMedicalRecordsCanCheck() {
if (this.userInfo.id != undefined) {
this.$http.post("common/medicalRecords/canCheck").then((res) => {
console.log("res at line 237:", res);
if (res.code == 0 && res.flag == true) {
this.pageList.splice(1, 0, {
name: "待审批医案",
url: "/pages/medicalRecords/PendingApprovalIndex",
type: "pageJump",
contentType: "shengpi",
});
}
});
}
},
getShengpiNumber() {
this.$http
.request({
url: "common/medicalRecords/getMedicalRecordsCheckList",
method: "POST", method: "POST",
data: {}, data: {},
header: { header: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
}) })
.then(res=> { .then((res) => {
if(res.code==0){ // 过滤不包含自己的用户ID的对象
var list = [...res.list].filter((item) => {
// 判断是否有 stateInfo 属性且它不包含用户ID或者为空字符串
return (
!item.stateInfo ||
item.stateInfo === "" ||
!item.stateInfo.includes(this.userInfo.id.toString())
);
});
this.shengpiNumber = list.length;
});
},
//获取数据
getVipData() {
this.$http
.request({
url: "taihumed/aiVip/getUserAiVip",
method: "POST",
data: {},
header: {
"Content-Type": "application/json",
},
})
.then((res) => {
if (res.code == 0) {
this.aiVipLog = res.aiVipLog; this.aiVipLog = res.aiVipLog;
this.flag = res.flag; this.flag = res.flag;
} }
@@ -260,7 +391,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/static/mixin.scss"; @import "@/static/mixin.scss";
.commonPage{ .commonPage {
background-image: linear-gradient(to bottom, #d8e6ff 20%, #ffffff 100%); background-image: linear-gradient(to bottom, #d8e6ff 20%, #ffffff 100%);
} }
.per_mes { .per_mes {
@@ -278,12 +409,11 @@ export default {
margin: 0 0 0 0; margin: 0 0 0 0;
float: left; float: left;
} }
.userInfoBox{ .userInfoBox {
padding-left: 20rpx; padding-left: 20rpx;
} }
view { view {
.name { .name {
width: 100%; width: 100%;
font-size: 30rpx; font-size: 30rpx;
@@ -486,7 +616,7 @@ export default {
right: 30rpx; right: 30rpx;
} }
} }
.vip_block{ .vip_block {
padding-left: 10rpx; padding-left: 10rpx;
} }
@@ -563,7 +693,7 @@ export default {
} }
} }
.modal_vip{ .modal_vip {
margin-top: 40rpx; margin-top: 40rpx;
padding: 20rpx 30rpx 0; padding: 20rpx 30rpx 0;
height: auto; height: auto;
@@ -778,7 +908,7 @@ export default {
} }
.vip_info_bottom { .vip_info_bottom {
color: #3583C3; color: #3583c3;
} }
.vbg { .vbg {
@@ -804,13 +934,13 @@ export default {
height: 55rpx; height: 55rpx;
margin-right: 10rpx; margin-right: 10rpx;
} }
.user_vip_box{ .user_vip_box {
width: 125rpx; width: 125rpx;
position: absolute; position: absolute;
margin-top: - 37rpx; margin-top: -37rpx;
z-index: 99; z-index: 99;
} }
.user_vip_item{ .user_vip_item {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@@ -826,16 +956,16 @@ export default {
font-weight: bold; font-weight: bold;
margin-bottom: 5rpx; margin-bottom: 5rpx;
} }
.user_vip_item image{ .user_vip_item image {
width: 49rpx; width: 49rpx;
height: 16rpx; height: 16rpx;
} }
.vip_type{ .vip_type {
margin-top: 10rpx; margin-top: 10rpx;
display: flex; display: flex;
align-items: center; align-items: center;
} }
.vip_type_item{ .vip_type_item {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@@ -849,17 +979,16 @@ export default {
color: #fff; color: #fff;
margin-right: 10rpx; margin-right: 10rpx;
} }
.vip_type_item:last-child{ .vip_type_item:last-child {
margin-right: 0; margin-right: 0;
} }
.vip_type_item image{ .vip_type_item image {
width: 34rpx; width: 34rpx;
height: 24rpx; height: 24rpx;
} }
.vip_infor{ .vip_infor {
} }
.vip_infor_item{ .vip_infor_item {
display: block; display: block;
color: #fff; color: #fff;
font-size: 26rpx; font-size: 26rpx;
@@ -867,11 +996,11 @@ export default {
font-family: PangMenZhengDaoBiaoTiTiMianFeiBan; font-family: PangMenZhengDaoBiaoTiTiMianFeiBan;
font-weight: normal; font-weight: normal;
} }
.vip_infor_item text{ .vip_infor_item text {
color: #fff; color: #fff;
} }
.vip_btn button{ .vip_btn button {
background: none; background: none;
border: 1rpx solid #5188e5; border: 1rpx solid #5188e5;
border-radius: 40rpx; border-radius: 40rpx;
@@ -880,17 +1009,17 @@ export default {
color: #5188e5; color: #5188e5;
padding: 0 10rpx; padding: 0 10rpx;
} }
.vip_null{ .vip_null {
color: #fff; color: #fff;
font-size: 26rpx; font-size: 26rpx;
line-height: 34rpx; line-height: 34rpx;
padding-left: 30rpx; padding-left: 30rpx;
} }
.expired{ .expired {
opacity: 0.55; opacity: 0.55;
} }
.recharge_block{ .recharge_block {
padding: 20rpx 30rpx 0; padding: 20rpx 30rpx 0;
height: auto; height: auto;
display: flex; display: flex;

View File

@@ -1,48 +1,102 @@
<template> <template>
<view class="content"> <view class="content">
<z-nav-bar title="太湖英才" bgColor="#5188e5" fontColor="#fff" :backState="2000"></z-nav-bar> <z-nav-bar
title="太湖英才"
bgColor="#5188e5"
fontColor="#fff"
:backState="2000"
></z-nav-bar>
<view class="talents_module" :style="`top: ${42 + statusBarHeight}px;`"> <view class="talents_module" :style="`top: ${42 + statusBarHeight}px;`">
<view class="talents_tab"> <view class="talents_tab">
<view class="tab_item" @click="toggleFilter('city')"> <view class="tab_item" @click="toggleFilter('city')">
地区 地区
<text :class="['arrow', activeFilter === 'city' ? 'up' : 'down']"></text> <text
:class="['arrow', activeFilter === 'city' ? 'up' : 'down']"
></text>
</view> </view>
<view class="tab_item" @click="toggleFilter('department')"> <view class="tab_item" @click="toggleFilter('department')">
科室 科室
<text :class="['arrow', activeFilter === 'department' ? 'up' : 'down']"></text> <text
:class="['arrow', activeFilter === 'department' ? 'up' : 'down']"
></text>
</view> </view>
</view> </view>
<!-- 弹窗 --> <!-- 弹窗 -->
<view class="talents_tan" v-if="activeFilter"> <view class="talents_tan" v-if="activeFilter">
<view class="tan_item tan_city" v-if="activeFilter=='city'"> <view class="tan_item tan_city" v-if="activeFilter == 'city'">
<scroll-view scroll-y="true" class="city_scroll scroll_left" :class="!cityStatus?'width50':''" :scroll-into-view="'country_' + selectedPath[0]"> <scroll-view
<view class="city_item" scroll-y="true"
:class="countryIndex==index?'active':''" class="city_scroll scroll_left"
v-for="(item,index) in country" :key="index" :id="'country_' + item.areaId" @click="click_country(item,index)"> :class="!cityStatus ? 'width50' : ''"
<text>{{item.title}}</text> :scroll-into-view="'country_' + selectedPath[0]"
>
<view
class="city_item"
:class="countryIndex == index ? 'active' : ''"
v-for="(item, index) in country"
:key="index"
:id="'country_' + item.areaId"
@click="click_country(item, index)"
>
<text>{{ item.title }}</text>
</view> </view>
</scroll-view> </scroll-view>
<scroll-view scroll-y="true" class="city_scroll scroll_center" :class="!cityStatus?'width50':''" :scroll-into-view="'province_' + selectedPath[1]"> <scroll-view
<view class="city_item" scroll-y="true"
:class="provinceIndex==index?'active':''" class="city_scroll scroll_center"
v-for="(item,index) in province" :key="index" :id="'province_' + item.provId" @click="click_province(item,index)"> :class="!cityStatus ? 'width50' : ''"
<text>{{item.provName}}</text> :scroll-into-view="'province_' + selectedPath[1]"
>
<view
class="city_item"
:class="provinceIndex == index ? 'active' : ''"
v-for="(item, index) in province"
:key="index"
:id="'province_' + item.provId"
@click="click_province(item, index)"
>
<text>{{ item.provName }}</text>
</view> </view>
</scroll-view> </scroll-view>
<scroll-view scroll-y="true" class="city_scroll scroll_right" v-if="cityStatus" :scroll-into-view="'city_' + selectedPath[2]"> <scroll-view
<view class="city_item" scroll-y="true"
:class="cityIndex==index?'active':''" class="city_scroll scroll_right"
v-for="(item,index) in city" :key="index" :id="'city_' + item.cityId" @click="click_city(item,index)"> v-if="cityStatus"
<text>{{item.cityName}}</text> :scroll-into-view="'city_' + selectedPath[2]"
>
<view
class="city_item"
:class="cityIndex == index ? 'active' : ''"
v-for="(item, index) in city"
:key="index"
:id="'city_' + item.cityId"
@click="click_city(item, index)"
>
<text>{{ item.cityName }}</text>
</view> </view>
</scroll-view> </scroll-view>
</view> </view>
<view class="tan_item tan_department" v-if="activeFilter=='department'"> <!-- <view class="tan_item tan_department" v-if="activeFilter=='department'">
<view class="department_item" <view class="department_item"
:class="departmentIndex==index?'department_active':''" :class="deptLabelId==item.id?'department_active':''"
v-for="(item,index) in chatAssistants" :key="index" @click="click_department(item.name,index)"> v-for="(item,index) in chatAssistants" :key="index" @click="click_department(item,index)">
<text>{{item.name}}</text> <text>{{item.title}}</text>
</view>
</view> -->
<view
class="tan_item tan_department"
v-if="activeFilter == 'department'"
>
<view
class="department_item"
:class="deptLabelId == item.id ? 'department_active' : ''"
v-for="(item, index) in chatAssistants"
:key="index"
@click="click_department(item, index)"
>
<text>{{ item.title }}</text>
</view> </view>
</view> </view>
</view> </view>
@@ -60,40 +114,57 @@
<!-- 遮罩层 --> <!-- 遮罩层 -->
<view v-if="activeFilter" class="overlay" @click="closeFilter"></view> <view v-if="activeFilter" class="overlay" @click="closeFilter"></view>
<scroll-view scroll-y="true" <scroll-view
scroll-y="true"
:scroll-top="scrollTop" :scroll-top="scrollTop"
style="height: calc(100vh - 300rpx); margin-top: 185rpx; padding-bottom: 140rpx;" style="
v-if="list&&list.length>0"> height: calc(100vh - 300rpx);
margin-top: 185rpx;
padding-bottom: 140rpx;
"
v-if="list && list.length > 0"
>
<view class="talents_list"> <view class="talents_list">
<view class="talents_item" v-for="(item,index) in list" :key="index" @click="goToDetail(item.id)"> <view
class="talents_item"
v-for="(item, index) in list"
:key="index"
@click="goToDetail(item.id)"
>
<image :src="item.icon" class="item_image" mode="aspectFit"></image> <image :src="item.icon" class="item_image" mode="aspectFit"></image>
<view class="item_right"> <view class="item_right">
<view class="item_top"> <view class="item_top">
<text class="item_name">{{item.name}}</text> <text class="item_name">{{ item.name }}</text>
<text class="item_title">{{item.title}}</text> <text class="item_title">{{ item.title }}</text>
</view> </view>
<text class="item_con">{{item.introduce}}</text> <text class="item_con">{{ item.introduce }}</text>
</view> </view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
<text class="null_text" v-else>{{null_text}}</text> <text class="null_text" v-else>{{ null_text }}</text>
<z-navigation></z-navigation> <z-navigation></z-navigation>
</view> </view>
</template> </template>
<script> <script>
import $http from "@/config/requestConfig.js"; import $http from "@/config/requestConfig.js";
import DepartmentMenu from "../component/commonComponents/DepartmentMenu.vue"; // 引入递归组件
export default { export default {
components: {
DepartmentMenu,
},
data() { data() {
return { return {
name: '', name: "",
region: '', //地区 region: "", //地区
department: '', //科室 department: "", //科室
list: [], list: [],
null_text: '', null_text: "",
deptLabelId: null,
departmentIndex: null, departmentIndex: null,
activeFilter: '', activeFilter: "",
chatAssistants: [], //科室数据 chatAssistants: [], //科室数据
country: [], //国家数据 country: [], //国家数据
province: [], //省份数据 province: [], //省份数据
@@ -103,22 +174,22 @@ export default {
provinceIndex: null, provinceIndex: null,
cityIndex: null, cityIndex: null,
countryTitle: '', countryTitle: "",
provinceTitle: '', provinceTitle: "",
cityTitle: '', cityTitle: "",
//城市模块是否显示 //城市模块是否显示
cityStatus: false, cityStatus: false,
selectedPath: [], //存储选中路径 selectedPath: [], //存储选中路径
scrollTop: 0, //滚动位置 scrollTop: 0, //滚动位置
isRefreshing: false, //刷新状态 isRefreshing: false, //刷新状态
} };
}, },
onPullDownRefresh() { onPullDownRefresh() {
this.isRefreshing = true; this.isRefreshing = true;
console.log("下拉刷新"); console.log("下拉刷新");
setTimeout(() => { setTimeout(() => {
this.region = ''; this.region = "";
this.getData(); this.getData();
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
this.isRefreshing = false; this.isRefreshing = false;
@@ -137,207 +208,218 @@ export default {
//获取数据 //获取数据
getData(type) { getData(type) {
uni.showLoading({ uni.showLoading({
title: '加载中' title: "加载中",
}) });
this.$http.request({ this.$http
url: 'common/taihuTalent/getTaihuTalents', .request({
url: "common/taihuTalent/getTaihuTalents",
method: "POST", method: "POST",
data: { data: {
name: this.name, name: this.name,
region: this.region, region: this.region,
department: this.department deptLabelId: this.deptLabelId ? this.deptLabelId : "",
}, },
header: { header: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
}) })
.then(res=> { .then((res) => {
uni.hideLoading(); uni.hideLoading();
if (res.list&&res.list.length>0) { if (res.list && res.list.length > 0) {
this.list = res.list; this.list = res.list;
if(type){ if (type) {
this.scrollTop = 0 this.scrollTop = 0;
this.$nextTick(() => { this.$nextTick(() => {
this.scrollTop = 0.1; // 确保触发滚动 this.scrollTop = 0.1; // 确保触发滚动
}) });
} }
}else{ } else {
this.list = []; this.list = [];
this.null_text = '暂无数据'; this.null_text = "暂无数据";
} }
}); });
}, },
//获取科室数据 //获取科室数据
getChatAssistants() { getChatAssistants() {
this.$http.request({ this.$http
url: 'common/ragFlowApi/getChatAssistants', .request({
url: "common/medicalRecords/getMedicalRecordsLabelList",
method: "POST", method: "POST",
data: {}, data: {},
header: { header: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
}) })
.then(res=> { .then((res) => {
if (res.list&&res.list.length>0) { if (res.Medicals && res.Medicals.length > 0) {
this.chatAssistants = res.list; this.chatAssistants = res.Medicals;
} }
}) });
}, },
//获取国家 //获取国家
getAllBaseArea() { getAllBaseArea() {
this.$http.request({ this.$http
url: 'common/baseArea/getAllBaseArea', .request({
url: "common/baseArea/getAllBaseArea",
method: "POST", method: "POST",
data: {}, data: {},
header: { header: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
}) })
.then(res=> { .then((res) => {
if (res.baseAreas&&res.baseAreas.length>0) { if (res.baseAreas && res.baseAreas.length > 0) {
this.country = res.baseAreas; this.country = res.baseAreas;
//如果第一位是中国默认请求 //如果第一位是中国默认请求
if(this.country[0].code=='86'){ if (this.country[0].code == "86") {
this.countryTitle = this.country[0].title; this.countryTitle = this.country[0].title;
this.getProvinceList(); this.getProvinceList();
} }
} }
}) });
}, },
//获取中国省份 //获取中国省份
getProvinceList() { getProvinceList() {
this.$http.request({ this.$http
url: 'common/province/getProvinceList', .request({
url: "common/province/getProvinceList",
method: "POST", method: "POST",
data: {}, data: {},
header: { header: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
}) })
.then(res=> { .then((res) => {
if (res.provinceList&&res.provinceList.length>0) { if (res.provinceList && res.provinceList.length > 0) {
this.province = res.provinceList; this.province = res.provinceList;
} }
}) });
}, },
//获取城市 //获取城市
getCityList(provId) { getCityList(provId) {
this.$http.request({ this.$http
url: 'common/province/getCityList?provId='+provId, .request({
url: "common/province/getCityList?provId=" + provId,
method: "POST", method: "POST",
data: {}, data: {},
header: { header: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
}) })
.then(res=> { .then((res) => {
if (res.prov&&res.prov.length>0) { if (res.prov && res.prov.length > 0) {
this.city = res.prov; this.city = res.prov;
this.cityStatus = true; this.cityStatus = true;
} }
}) });
}, },
//点击国家 //点击国家
click_country(data, index){ click_country(data, index) {
this.provinceIndex = null; this.provinceIndex = null;
this.cityIndex = null; this.cityIndex = null;
this.city = []; this.city = [];
this.region = ''; this.region = "";
this.cityTitle = ''; this.cityTitle = "";
this.selectedPath = [data.areaId]; this.selectedPath = [data.areaId];
//只有中国有二级,如果没有二级则为海外国家 //只有中国有二级,如果没有二级则为海外国家
if(data.code!='86'){ if (data.code != "86") {
this.cityStatus = false; this.cityStatus = false;
if(this.countryTitle == data.title){ if (this.countryTitle == data.title) {
this.countryIndex = null; this.countryIndex = null;
this.provinceIndex = null; this.provinceIndex = null;
}else{ } else {
this.province = []; this.province = [];
this.countryIndex = index; this.countryIndex = index;
this.countryTitle = data.title; this.countryTitle = data.title;
this.region = data.title; this.region = data.title;
} }
this.activeFilter = ''; this.activeFilter = "";
this.getData(); this.getData();
}else{ } else {
this.countryIndex = index; this.countryIndex = index;
this.countryTitle = data.title; this.countryTitle = data.title;
this.getProvinceList(); this.getProvinceList();
} }
console.log(this.countryIndex, this.countryTitle) console.log(this.countryIndex, this.countryTitle);
}, },
//点击省份 //点击省份
click_province(data, index){ click_province(data, index) {
this.provinceIndex = index; this.provinceIndex = index;
this.cityIndex = null; this.cityIndex = null;
this.provinceTitle = data.provName; this.provinceTitle = data.provName;
this.selectedPath = [this.selectedPath[0], data.provId]; this.selectedPath = [this.selectedPath[0], data.provId];
console.log(this.provinceTitle) console.log(this.provinceTitle);
this.getCityList(data.provId); this.getCityList(data.provId);
}, },
//点击城市 //点击城市
click_city(data, index){ click_city(data, index) {
this.selectedPath = [this.selectedPath[0], this.selectedPath[1], data.cityId]; this.selectedPath = [
if(this.cityTitle == data.cityName){ this.selectedPath[0],
this.selectedPath[1],
data.cityId,
];
if (this.cityTitle == data.cityName) {
this.cityIndex = null; this.cityIndex = null;
this.cityTitle = ''; this.cityTitle = "";
this.region = ''; this.region = "";
}else{ } else {
this.cityIndex = index; this.cityIndex = index;
this.cityTitle = data.cityName; this.cityTitle = data.cityName;
this.region = this.provinceTitle + this.cityTitle; this.region = this.provinceTitle + this.cityTitle;
} }
this.activeFilter = ''; this.activeFilter = "";
this.getData(); this.getData();
console.log(this.region) console.log(this.region);
}, },
//详情 //详情
goToDetail(id){ goToDetail(id) {
if (this.isRefreshing) return; if (this.isRefreshing) return;
uni.navigateTo({ uni.navigateTo({
url: '/pages/talents/detail?id='+id, url: "/pages/talents/detail?id=" + id,
}); });
}, },
//点击 //点击
toggleFilter(type) { toggleFilter(type) {
this.activeFilter = this.activeFilter === type ? '' : type; this.activeFilter = this.activeFilter === type ? "" : type;
}, },
//关闭 //关闭
closeFilter() { closeFilter() {
this.activeFilter = ''; this.activeFilter = "";
}, },
//点击科室类别 //点击科室类别
click_department(name, index){ click_department(data, index) {
if(this.department==name){ if (this.department == data.title) {
this.deptLabelId = null;
this.departmentIndex = null; this.departmentIndex = null;
this.department = '' this.department = "";
}else{ } else {
this.deptLabelId = data.id;
this.departmentIndex = index; this.departmentIndex = index;
this.department = name; this.department = data.title;
} }
this.activeFilter = ''; this.activeFilter = "";
this.getData(); this.getData();
}
}, },
} },
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/static/mixin.scss'; @import "@/static/mixin.scss";
.content{ .content {
height: 100%; height: 100%;
overflow: auto; overflow: auto;
background-color: #fff; background-color: #fff;
} }
.talents_list{ .talents_list {
margin: 0 30rpx 20rpx; margin: 0 30rpx 20rpx;
} }
.talents_item{ .talents_item {
border: 1rpx solid $themeColor; border: 1rpx solid $themeColor;
border-radius: 15rpx; border-radius: 15rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
@@ -345,32 +427,32 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.item_image{ .item_image {
display: block; display: block;
width: 180rpx; width: 180rpx;
height: 200rpx; height: 200rpx;
background: #f3f3f3; background: #f3f3f3;
} }
.item_right{ .item_right {
width: calc(100% - 200rpx); width: calc(100% - 200rpx);
margin-left: 30rpx; margin-left: 30rpx;
} }
.item_top{ .item_top {
display: flex; display: flex;
align-items: center; align-items: center;
line-height: 40rpx; line-height: 40rpx;
} }
.item_name{ .item_name {
font-size: 34rpx; font-size: 34rpx;
color: #333; color: #333;
font-weight: bold; font-weight: bold;
} }
.item_title{ .item_title {
font-size: 32rpx; font-size: 32rpx;
color: #999; color: #999;
padding-left: 20rpx; padding-left: 20rpx;
} }
.item_con{ .item_con {
font-size: 30rpx; font-size: 30rpx;
color: #666; color: #666;
margin-top: 10rpx; margin-top: 10rpx;
@@ -381,7 +463,7 @@ export default {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.null_text{ .null_text {
display: block; display: block;
text-align: center; text-align: center;
font-size: 30rpx; font-size: 30rpx;
@@ -389,8 +471,7 @@ export default {
padding-top: 300rpx; padding-top: 300rpx;
} }
.talents_module {
.talents_module{
width: 100%; width: 100%;
position: fixed; position: fixed;
z-index: 99; z-index: 99;
@@ -431,63 +512,63 @@ export default {
background-color: rgba(0, 0, 0, 0.5); background-color: rgba(0, 0, 0, 0.5);
z-index: 9; z-index: 9;
} }
.talents_tan{ .talents_tan {
width: 100%; width: 100%;
background: #fff; background: #fff;
font-size: 28rpx; font-size: 28rpx;
.tan_department{ .tan_department {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
padding-bottom: 1rpx; padding-bottom: 1rpx;
.department_item{ .department_item {
display: flex; display: flex;
justify-content: center; justify-content: center;
width: 50%; width: 50%;
height: 85rpx; min-height: 85rpx;
line-height: 85rpx; line-height: 85rpx;
border-bottom: 1rpx solid #f3f3f3; border-bottom: 1rpx solid #f3f3f3;
border-right: 1rpx solid #f3f3f3; border-right: 1rpx solid #f3f3f3;
text{ text {
color: #333; color: #333;
} }
} }
.department_item:nth-of-type(2n){ .department_item:nth-of-type(2n) {
border-right: 0; border-right: 0;
} }
.department_item:nth-last-child(-n+2){ .department_item:nth-last-child(-n + 2) {
border-bottom: 0; border-bottom: 0;
} }
.department_active{ .department_active {
text {
text{
color: $themeColor; color: $themeColor;
font-weight: bold; font-weight: bold;
} }
} }
} }
.tan_city{ .tan_city {
display: flex; display: flex;
align-items: center; align-items: center;
.city_scroll{ .city_scroll {
width: 33.3%; width: 33.3%;
height: 395rpx; height: 395rpx;
} }
.scroll_left,.scroll_center{ .scroll_left,
.scroll_center {
border-right: 1rpx solid #f3f3f3; border-right: 1rpx solid #f3f3f3;
box-sizing: border-box; box-sizing: border-box;
} }
.width50{ .width50 {
width: 50% !important; width: 50% !important;
} }
} }
} }
.city_item{ .city_item {
padding-left: 20rpx; padding-left: 20rpx;
line-height: 78rpx; line-height: 78rpx;
border-bottom: 1rpx solid #f3f3f3; border-bottom: 1rpx solid #f3f3f3;
@@ -495,23 +576,23 @@ export default {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.city_item:last-child{ .city_item:last-child {
border-bottom: 0; border-bottom: 0;
} }
.active{ .active {
text{ text {
color: $themeColor; color: $themeColor;
font-weight: bold; font-weight: bold;
} }
} }
.name_search{ .name_search {
background-color: #fff; background-color: #fff;
padding: 20rpx 30rpx; padding: 20rpx 30rpx;
display: flex; display: flex;
align-items: center; align-items: center;
/deep/.is-input-border{ /deep/.is-input-border {
background-color: #f3f3f3; background-color: #f3f3f3;
border-radius: 50rpx; border-radius: 50rpx;
height: 60rpx; height: 60rpx;
@@ -520,16 +601,15 @@ export default {
font-size: 28rpx; font-size: 28rpx;
color: #666; color: #666;
} }
/deep/.uni-easyinput__content-input{ /deep/.uni-easyinput__content-input {
} }
.name-placeholder{ .name-placeholder {
font-size: 28rpx; font-size: 28rpx;
text-align: center; text-align: center;
color: #666; color: #666;
} }
button{ button {
background-color: $themeBgColor; background-color: $themeBgColor;
font-size: 26rpx; font-size: 26rpx;
line-height: 36rpx; line-height: 36rpx;

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