11111
This commit is contained in:
@@ -11,16 +11,14 @@
|
||||
@query="queryList"
|
||||
>
|
||||
<template #top>
|
||||
<backDetailNav :navName="'肝胆相照临床病例库'"></backDetailNav>
|
||||
<backDetailNav :navName="type=='exchange'?'肝胆相照病例交流园地':'肝胆相照临床病例库'"></backDetailNav>
|
||||
|
||||
</template>
|
||||
<template #bottom>
|
||||
<view class="bottom">
|
||||
<view class="iptbox" @click="open">
|
||||
<up--image
|
||||
|
||||
:src="chatImg"
|
||||
|
||||
width="46rpx"
|
||||
height="46rpx"
|
||||
radius="50%"
|
||||
@@ -1345,7 +1343,7 @@ const collectVideo = (id) => {
|
||||
};
|
||||
|
||||
const collectExchange = (id) => {
|
||||
api.collectExchange(id).then((res) => {
|
||||
api.exchangeCollect(id).then((res) => {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "收藏成功",
|
||||
|
||||
+2
-2
@@ -17,7 +17,7 @@
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="databox">
|
||||
<view class="databox" v-if="numInfo.article_num+numInfo.video_num>=5">
|
||||
<view class="cell">
|
||||
<view class="num">{{ numInfo.article_num }}</view>
|
||||
<view class="name">文章</view>
|
||||
@@ -45,7 +45,7 @@
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#9CA3AF" size="18"></u-icon>
|
||||
</view>
|
||||
<view class="cell" @click="goCert">
|
||||
<view class="cell" @click="goCert" v-if="numInfo.article_num+numInfo.video_num>=5">
|
||||
<view class="left">
|
||||
<up--image
|
||||
:src="myDownload"
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
|
||||
</view>
|
||||
</template>
|
||||
<view class="item" v-for="(item, index) in dataList" @click="goDetail()" :key="item.collect_id">
|
||||
<view class="title ellipsis">{{item.data.title}}</view>
|
||||
<view class="item" v-for="(item, index) in dataList" @click="goDetail(item.data.id)" :key="item.collect_id">
|
||||
<view class="title ellipsis-two-lines">{{item.data.title}}</view>
|
||||
<view class="tagsbox">
|
||||
<view class="tag" v-for="tag in item.data.author" :key="tag.author_id">{{ tag.doctor_name }}</view>
|
||||
</view>
|
||||
@@ -132,9 +132,16 @@ const formatdate=(date)=>{
|
||||
return dayjs(date).format('YYYY-MM-DD')
|
||||
}
|
||||
const goDetail=(id)=>{
|
||||
console.log(11111)
|
||||
console.log(type1.value)
|
||||
console.log(id)
|
||||
let type=isArticle.value?'article':'video'
|
||||
let type="article";
|
||||
if(type2.value==1){
|
||||
type="article";
|
||||
}else if(type2.value==2){
|
||||
type="video";
|
||||
}else if(type2.value==3){
|
||||
type="exchange";
|
||||
}
|
||||
navTo({
|
||||
url: `/pages/detail/detail?id=${id}&type=${type}`
|
||||
})
|
||||
|
||||
+291
-120
@@ -10,7 +10,7 @@
|
||||
>
|
||||
<template #top>
|
||||
<navBarSearch
|
||||
:navName="'肝胆相照精选病例交流'"
|
||||
:navName="'肝胆相照病例交流园地'"
|
||||
@changeWord="changeWord"
|
||||
></navBarSearch>
|
||||
<!-- <view class="bar"></view> -->
|
||||
@@ -26,22 +26,31 @@
|
||||
<view class="filterbox">
|
||||
<!-- <view class="type" @click="swicthType">{{!isArticle?'文章':'视频'}}<up--image :src="switchImg" width="31rpx" height="31rpx"></up--image></view> -->
|
||||
<view class="casesdown" @click="openCase" >筛选<up--image :src="caseImg" width="31rpx" height="31rpx"></up--image></view>
|
||||
<up-dropdown class="u-dropdown" ref="uDropdownRef">
|
||||
|
||||
<up-dropdown-item
|
||||
v-model="order.push_date"
|
||||
title="发布时间"
|
||||
@change="changeDate"
|
||||
:options="options"
|
||||
></up-dropdown-item>
|
||||
<up-dropdown-item
|
||||
v-model="order.read_num"
|
||||
title="阅读量"
|
||||
@change="changeRead"
|
||||
:options="options"
|
||||
></up-dropdown-item>
|
||||
</up-dropdown>
|
||||
|
||||
<up-dropdown class="u-dropdown" ref="uDropdownRef">
|
||||
<up-dropdown-item :title="dropTitle">
|
||||
<view class="dropcontent">
|
||||
<up-radio-group
|
||||
@change="changeDate"
|
||||
v-model="orderFilter"
|
||||
iconPlacement="right"
|
||||
placement="column"
|
||||
>
|
||||
<view
|
||||
class="column"
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:class="[orderFilter==item.value?'active':'']"
|
||||
>
|
||||
<up-radio
|
||||
activeColor="#3CC7C0"
|
||||
:label="item.label"
|
||||
:name="item.value"
|
||||
></up-radio>
|
||||
</view>
|
||||
</up-radio-group>
|
||||
</view>
|
||||
</up-dropdown-item>
|
||||
</up-dropdown>
|
||||
</view>
|
||||
</template>
|
||||
<view class="box">
|
||||
@@ -74,7 +83,7 @@
|
||||
>{{ item.user_name }}({{ item.hospital_name }})</view
|
||||
>
|
||||
</view>
|
||||
<view class="content" @click="goDetail(item.exchange_id)"> {{ item.exchange_content }} </view>
|
||||
<view class="content ellipsis-two-lines" @click="goDetail(item.exchange_id)"> {{ htmlToText(item.exchange_content) }} </view>
|
||||
<view
|
||||
class="imgbox"
|
||||
@click="goDetail(item.exchange_id)"
|
||||
@@ -130,7 +139,7 @@
|
||||
<up-icon name="eye" color="#4B5563" size="28rpx"></up-icon>
|
||||
<view class="num">{{ item.read_num }}</view>
|
||||
</view>
|
||||
<view class="collect item">
|
||||
<view class="collect item" v-if="item.collect_num >0">
|
||||
<up-icon
|
||||
name="heart"
|
||||
color="#4B5563"
|
||||
@@ -138,7 +147,7 @@
|
||||
></up-icon>
|
||||
<view class="num">{{ item.collect_num }}</view>
|
||||
</view>
|
||||
<view class="chat item">
|
||||
<view class="chat item" v-if="item.comment_num >0">
|
||||
<up-icon name="chat" color="#4B5563" size="28rpx"></up-icon>
|
||||
<view class="num">{{ item.comment_num }}</view>
|
||||
</view>
|
||||
@@ -159,25 +168,54 @@
|
||||
<up-popup
|
||||
:round="10"
|
||||
zIndex="9"
|
||||
:closeOnClickOverlay="false"
|
||||
:show="showCase"
|
||||
mode="bottom"
|
||||
@close="closeCase"
|
||||
>
|
||||
<view class="votepop casepop">
|
||||
<view class="titlebox">
|
||||
<view class="left" @click="showCase = false">取消</view>
|
||||
<view class="left continue" @click="continueCase" v-show="level != 3"
|
||||
>继续选择</view
|
||||
>
|
||||
<view class="left" @click="cancelCase">取消</view>
|
||||
|
||||
<view class="right" @click="confirmCase">确定</view>
|
||||
</view>
|
||||
<view class="stepbox">
|
||||
<up-steps :current="level-1" direction="column" :key="freshKey">
|
||||
<up-steps-item >
|
||||
<template v-slot:content>
|
||||
<view class="slot-content" @click="openCaseLevel('1')">
|
||||
|
||||
<view class="left">{{!caseValue1.name?'请选择选项':caseValue1.name}}</view>
|
||||
<u-icon name="arrow-right"></u-icon>
|
||||
</view>
|
||||
</template>
|
||||
</up-steps-item>
|
||||
<up-steps-item v-if="caseValue1.name && labelObj.list2.length>0">
|
||||
<template v-slot:content>
|
||||
<view class="slot-content" @click="openCaseLevel('2')">
|
||||
<view class="left">{{!caseValue2.name?'请选择选项':caseValue2.name}}</view>
|
||||
<u-icon name="arrow-right"></u-icon>
|
||||
</view>
|
||||
</template>
|
||||
</up-steps-item>
|
||||
<up-steps-item v-if="caseValue2.name && labelObj.list3.length>0">
|
||||
<template v-slot:content>
|
||||
<view class="slot-content" @click="openCaseLevel('3')">
|
||||
<view class="left">{{!caseValue3.name?'请选择选项':caseValue3.name}}</view>
|
||||
<u-icon name="arrow-right"></u-icon>
|
||||
</view>
|
||||
</template>
|
||||
</up-steps-item>
|
||||
</up-steps>
|
||||
</view>
|
||||
<scroll-view class="casecon" scroll-y="true">
|
||||
<view v-show="level == 1" >
|
||||
<up-radio-group
|
||||
v-model="caseValue1"
|
||||
|
||||
v-model="caseValue1.value"
|
||||
name="group1"
|
||||
iconPlacement="right"
|
||||
placement="column"
|
||||
@change="groupChange1"
|
||||
>
|
||||
<view
|
||||
class="column"
|
||||
@@ -194,7 +232,9 @@
|
||||
</view>
|
||||
<view v-show="level == 2" >
|
||||
<up-radio-group
|
||||
v-model="caseValue2"
|
||||
name="group2"
|
||||
@change="groupChange2"
|
||||
v-model="caseValue2.value"
|
||||
iconPlacement="right"
|
||||
placement="column"
|
||||
>
|
||||
@@ -213,8 +253,9 @@
|
||||
</view>
|
||||
<view v-show="level == 3" >
|
||||
<up-radio-group
|
||||
v-model="caseValue3"
|
||||
|
||||
name="group3"
|
||||
@change="groupChange3"
|
||||
v-model="caseValue3.value"
|
||||
iconPlacement="right"
|
||||
placement="column"
|
||||
>
|
||||
@@ -288,35 +329,170 @@ const dataList = ref([]);
|
||||
const total = ref(0);
|
||||
const keyWord = ref("");
|
||||
const vote=ref(null);
|
||||
const showNum = ref(true);
|
||||
|
||||
const showNum = ref(false);
|
||||
const label_iden=ref('');
|
||||
const dropTitle=ref('发布时间');
|
||||
const orderFilter=ref('1')
|
||||
const uDropdownRef=ref(null);
|
||||
const options= ref([
|
||||
{
|
||||
label: "正序",
|
||||
value: 'asc',
|
||||
label: "发布时间",
|
||||
value: '1',
|
||||
},
|
||||
{
|
||||
label: "倒序",
|
||||
value: 'desc',
|
||||
label: "互动更新时间",
|
||||
value: '2',
|
||||
},
|
||||
{
|
||||
label: "互动次数",
|
||||
value: '3',
|
||||
},
|
||||
]);
|
||||
const isSearch=ref(true);
|
||||
const order=reactive({
|
||||
read_num:'',
|
||||
push_date:''
|
||||
push_date:'desc'
|
||||
})
|
||||
const label_iden=ref('')
|
||||
const showCase = ref(false);
|
||||
const canOpenCase = ref(false);
|
||||
const caseValue1 = ref("");
|
||||
const caseValue2 = ref("");
|
||||
const caseValue3 = ref("");
|
||||
const caseValue1 = reactive({
|
||||
value:'',
|
||||
name:'',
|
||||
});
|
||||
const caseValue2 = reactive({
|
||||
value:'',
|
||||
name:'',
|
||||
});
|
||||
const caseValue3 = reactive({
|
||||
value:'',
|
||||
name:'',
|
||||
});
|
||||
const level = ref(1);
|
||||
const dealId=ref('');
|
||||
const labelObj = reactive({
|
||||
list1: [],
|
||||
list2: [],
|
||||
list3: [],
|
||||
list3: []
|
||||
});
|
||||
const openCaseLevel=(lev)=>{
|
||||
freshKey.value++;
|
||||
level.value=lev;
|
||||
if(lev==1){
|
||||
caseValue2.name='';
|
||||
caseValue2.value='';
|
||||
labelObj.list2=[]
|
||||
}else if(lev==2){
|
||||
labelObj.list3=[];
|
||||
caseValue3.name='';
|
||||
caseValue3.value=''
|
||||
}
|
||||
};
|
||||
const groupChange1=(e)=>{
|
||||
caseValue1.value=e;
|
||||
for (var i = 0; i <labelObj.list1.length; i++) {
|
||||
if(labelObj.list1[i].app_iden==caseValue1.value){
|
||||
caseValue1.name=labelObj.list1[i].label_name;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
getCaseLabel(2,e)
|
||||
}
|
||||
const groupChange2=(e)=>{
|
||||
caseValue2.value=e;
|
||||
for (var i = 0; i <labelObj.list2.length; i++) {
|
||||
if(labelObj.list2[i].app_iden==caseValue2.value){
|
||||
caseValue2.name=labelObj.list2[i].label_name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
getCaseLabel(3,e)
|
||||
}
|
||||
const groupChange3=(e)=>{
|
||||
caseValue3.value=e;
|
||||
level.value =3
|
||||
for (var i = 0; i <labelObj.list3.length; i++) {
|
||||
if(labelObj.list3[i].app_iden==caseValue3.value){
|
||||
caseValue3.name=labelObj.list3[i].label_name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
const getCaseLabel = (lev,pid=0) => {
|
||||
api.getCaseLabel({
|
||||
pId:pid
|
||||
}).then((res) => {
|
||||
level.value = lev;
|
||||
if (lev == 1) {
|
||||
labelObj.list1 = res.data.data;
|
||||
//label_iden.value = caseValue1.value;
|
||||
|
||||
} else if (lev == 2) {
|
||||
labelObj.list2 = res.data.data;
|
||||
if(res.data.data.length==0){
|
||||
level.value = 1
|
||||
}
|
||||
//label_iden.value = caseValue2.value;
|
||||
|
||||
} else if (lev == 3) {
|
||||
labelObj.list3 = res.data.data;
|
||||
if(res.data.data.length==0){
|
||||
level.value = 2
|
||||
}
|
||||
//label_iden.value = caseValue3.value;
|
||||
}
|
||||
|
||||
});
|
||||
};
|
||||
const openCase=()=>{
|
||||
|
||||
showCase.value = true;
|
||||
|
||||
}
|
||||
const cancelCase=()=>{
|
||||
showCase.value=false;
|
||||
level.value=1;
|
||||
caseValue1.name='';
|
||||
caseValue1.value='';
|
||||
caseValue2.name='';
|
||||
caseValue2.value='';
|
||||
caseValue3.name='';
|
||||
caseValue3.value='';
|
||||
//labelObj.list1=[];
|
||||
labelObj.list2=[];
|
||||
labelObj.list3=[];
|
||||
}
|
||||
const confirmCase = () => {
|
||||
if (level.value == 1 && caseValue1.value == "") {
|
||||
uni.showToast({ title: "请选择疾病选项", icon: "none" });
|
||||
return false;
|
||||
};
|
||||
if(level.value == 1){
|
||||
label_iden.value = caseValue1.value;
|
||||
}
|
||||
if(level.value == 2 ){
|
||||
if(!caseValue2.value){
|
||||
label_iden.value = caseValue1.value;
|
||||
}else{
|
||||
label_iden.value = caseValue2.value;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
if(level.value == 3 ){
|
||||
if(!caseValue3.value){
|
||||
label_iden.value = caseValue2.value;
|
||||
}else{
|
||||
label_iden.value = caseValue3.value;
|
||||
}
|
||||
}
|
||||
paging.value.reload();
|
||||
showCase.value=false;
|
||||
//cancelCase();
|
||||
};
|
||||
const closeCase = () => {
|
||||
showCase.value = false;
|
||||
};
|
||||
const openDeal = (id,voteObj) => {
|
||||
showDeal.value = true;
|
||||
dealId.value=id;
|
||||
@@ -341,6 +517,14 @@ const goEdit=()=>{
|
||||
url:'/pages/publish/publish?exchange_id='+dealId.value
|
||||
})
|
||||
}
|
||||
const htmlToText=(html)=>{
|
||||
return html
|
||||
.replace(/<[^>]*>/g, '') // 移除所有HTML标签
|
||||
.replace(/ /gi, ' ') // 将HTML实体转换为字符
|
||||
.replace(/<br\s*\/?>/gi, '\n').replace(/<img\s[^>]*>/gi, '') // 移除<img>标签及其内容
|
||||
.replace(/<video[^>]*>[\s\S]*?/gi, ''); // 将换行符替换为实际的换行符
|
||||
}
|
||||
|
||||
const confirmDel = () => {
|
||||
//删除
|
||||
showModal.value = false;
|
||||
@@ -349,75 +533,7 @@ const confirmDel = () => {
|
||||
const closeDealPop = () => {
|
||||
showDeal.value = false;
|
||||
};
|
||||
const getCaseLabel = (lev,pid=0) => {
|
||||
api.getCaseLabel({
|
||||
pId:pid
|
||||
}).then((res) => {
|
||||
if (lev == 1) {
|
||||
labelObj.list1 = res.data.data;
|
||||
} else if (lev == 2) {
|
||||
labelObj.list2 = res.data.data;
|
||||
} else if (lev == 3) {
|
||||
labelObj.list3 = res.data.data;
|
||||
}
|
||||
level.value = lev;
|
||||
});
|
||||
};
|
||||
const openCase=()=>{
|
||||
getCaseLabel(1,0)
|
||||
showCase.value = true;
|
||||
|
||||
}
|
||||
const confirmCase = () => {
|
||||
if (level.value == 1 && caseValue1.value == "") {
|
||||
uni.showToast({ title: "请选择疾病", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if (level.value == 2 && caseValue2.value == "") {
|
||||
uni.showToast({ title: "请选择疾病", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if (level.value == 3 && caseValue3.value == "") {
|
||||
uni.showToast({ title: "请选择疾病", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
showCase.value = false;
|
||||
if(level.value == 1){
|
||||
label_iden.value = caseValue1.value
|
||||
}
|
||||
if(level.value == 2 ){
|
||||
label_iden.value = caseValue2.value
|
||||
}
|
||||
if(level.value == 3 ){
|
||||
label_iden.value = caseValue3.value
|
||||
}
|
||||
paging.value.reload();
|
||||
|
||||
};
|
||||
const continueCase = () => {
|
||||
if (level.value == 1 && caseValue1.value == "") {
|
||||
uni.showToast({ title: "请选择疾病", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
|
||||
if (level.value == 2 && caseValue2.value == "") {
|
||||
uni.showToast({ title: "请选择疾病", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if (level.value == 3 && caseValue3.value == "") {
|
||||
uni.showToast({ title: "请选择疾病", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if(level.value == 1 ){
|
||||
getCaseLabel(2,caseValue1.value);
|
||||
}else if(level.value == 2 ){
|
||||
getCaseLabel(3,caseValue2.value);
|
||||
}
|
||||
paging.value.reload();
|
||||
};
|
||||
const closeCase = () => {
|
||||
showCase.value = false;
|
||||
};
|
||||
|
||||
const formatdate = (date) => {
|
||||
return dayjs(date).format("YYYY-MM-DD");
|
||||
@@ -435,19 +551,31 @@ onLoad((options) => {
|
||||
if(options.type=="mine"){
|
||||
isMine.value=true;
|
||||
}
|
||||
getCaseLabel(1,0)
|
||||
});
|
||||
onShow(()=>{
|
||||
|
||||
paging.value?.refresh();
|
||||
})
|
||||
const changeDate=(e)=>{
|
||||
console.log(e);
|
||||
order.read_num='';
|
||||
paging.value.reload();
|
||||
}
|
||||
const changeRead=(e)=>{
|
||||
console.log(e);
|
||||
order.push_date=''
|
||||
if(e==1){
|
||||
order.push_date='desc';
|
||||
order.comment_num='';
|
||||
order.last_comment_time="";
|
||||
dropTitle.value="发布时间"
|
||||
}else if(e==2){
|
||||
order.push_date='';
|
||||
order.comment_num="";
|
||||
order.last_comment_time="desc";
|
||||
dropTitle.value="互动更新时间"
|
||||
}else{
|
||||
order.push_date='';
|
||||
order.last_comment_time="";
|
||||
order.comment_num="desc";
|
||||
dropTitle.value="互动数"
|
||||
}
|
||||
orderFilter.value=e;
|
||||
uDropdownRef.value.close();
|
||||
paging.value.reload();
|
||||
}
|
||||
const videoErrorCallback = (e) => {
|
||||
@@ -481,11 +609,17 @@ const searchList = async (params) => {
|
||||
user_id: user_id.value,
|
||||
label_iden:label_iden.value
|
||||
};
|
||||
if(!label_iden.value){
|
||||
delete searchForm.label_iden
|
||||
}
|
||||
if(Number(is_selected.value)){
|
||||
searchForm.is_selected=Number(is_selected.value)
|
||||
}
|
||||
if(!order.read_num){
|
||||
delete order.read_num
|
||||
if(!order.comment_num){
|
||||
delete order.comment_num
|
||||
}
|
||||
if(!order.last_comment_time){
|
||||
delete order.last_comment_time
|
||||
}
|
||||
if(!label_iden.value){
|
||||
delete searchForm.label_iden
|
||||
@@ -493,7 +627,7 @@ const searchList = async (params) => {
|
||||
if(!order.push_date){
|
||||
delete order.push_date
|
||||
}
|
||||
if(order.read_num || order.push_date){
|
||||
if(order.comment_num || order.push_date || order.last_comment_time){
|
||||
searchForm.order=order
|
||||
}
|
||||
api.searchExchage({
|
||||
@@ -511,6 +645,42 @@ const searchList = async (params) => {
|
||||
</script>
|
||||
|
||||
<style lang='scss' scoped>
|
||||
.dropcontent{
|
||||
padding-top: 40rpx;
|
||||
padding-bottom: 20rpx;
|
||||
background-color: #fff;
|
||||
:deep(.u-radio){
|
||||
margin-bottom: 6px!important;
|
||||
margin-top: 16px!important;
|
||||
}
|
||||
.column {
|
||||
padding: 0 30rpx;
|
||||
border-top: 2rpx solid #e5e7eb;
|
||||
:deep(.u-radio__text){
|
||||
color: #333 !important;
|
||||
}
|
||||
}
|
||||
.column.active{
|
||||
:deep(.u-radio__text){
|
||||
color: #3CC7C0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
.stepbox{
|
||||
padding:15rpx 30rpx;
|
||||
border-bottom: 2rpx dotted #f3f4f6;
|
||||
:deep(.u-steps-item__content){
|
||||
margin-top: -5rpx!important;
|
||||
}
|
||||
.slot-content{
|
||||
width:100%;
|
||||
margin-bottom: 25rpx;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
.dealbox {
|
||||
.dealcell {
|
||||
display: flex;
|
||||
@@ -530,6 +700,7 @@ const searchList = async (params) => {
|
||||
border-bottom: 2rpx solid #f3f4f6;
|
||||
:deep(.u-dropdown__menu__item__text){
|
||||
font-size: 14px!important;
|
||||
color: #3c9cff !important
|
||||
}
|
||||
.type{
|
||||
color: #606266;
|
||||
|
||||
Reference in New Issue
Block a user