Commit e7cc4f5a authored by miaojiale's avatar miaojiale

Merge branch 'dev' into dev_Miaojiale

parents b34d8d8f 617144fe
import request from "@/utils/request";
import request from "@/utils/request"
/**
* 随访
......@@ -10,7 +10,7 @@ export function getFollowSearch(params = {}) {
url: "/disease-data/follow/search",
method: "get",
params,
});
})
}
//随访调查 列表
export function getFollowSurvey(params = {}) {
......@@ -18,7 +18,7 @@ export function getFollowSurvey(params = {}) {
url: "/disease-data/follow/survey",
method: "get",
params,
});
})
}
///////////////审核质控/////////////////////
//随访已审核列表
......@@ -27,7 +27,7 @@ export function getFollowCheck(params = {}) {
url: "/disease-data/dataCheck/follow/check",
method: "get",
params,
});
})
}
//随访待审核列表
export function getFollowUncheck(params = {}) {
......@@ -35,19 +35,19 @@ export function getFollowUncheck(params = {}) {
url: "/disease-data/dataCheck/follow/unCheck",
method: "get",
params,
});
})
}
//随访病例待审核(详情数据)
export function getFollowUnCheckDetail(id) {
return request({
url: `/disease-data/dataCheck/follow/unCheck/detail/${id}`,
method: "get",
});
})
}
//随访病例审核
export function putFollowCheck(data = {}) {
return request({
url: "/disease-data/dataCheck/follow/check",
url: "/disease-data/dataCheck/follow/uncheck",
method: "put",
data,
})
......@@ -59,4 +59,13 @@ export function putFollowCheckAdvice(data = {}) {
method: "put",
data,
})
}
\ No newline at end of file
}
// 随访查询详情list
export function getFollowRecord(params = {}) {
return request({
url: "/disease-data/follow/search/detail",
method: "get",
params,
})
}
......@@ -76,7 +76,8 @@ export default {
},
methods: {
handleUnionName(v) {
return this.unionLists.filter((e) => e.id == v)[0].unionName
const union = this.unionList.find((e) => e.id == v) || {}
return union.unionName || ""
},
},
filters: {
......
<template>
<div id="con">
<div class="top flex">
<div class="left box">
<video :src="videoSrc" controls class="video" />
</div>
<!-- 新闻会议tab -->
<div class="right box tabbox videoboxs">
<el-tabs v-model="curTab" @tab-click="handleClick">
<el-tab-pane
v-for="(e, index) in tabList"
:key="index"
:label="e.title"
:name="index + 1 + ''"
>
<ul class="tabslist">
<li
v-for="(item, index) in noticeList"
:key="index"
title="点击查看pdf文件"
@click="setPdf(item)"
>
<div class="left">
<div class="circle"></div>
{{ item.articleTitle }}
</div>
<div class="right">
{{ item.createTime }}
</div>
</li>
</ul>
</el-tab-pane>
</el-tabs>
</div>
</div>
<!-- 联盟地图 -->
<div class="dataAnalysis map_box">
<div class="flex">
<div class="left box cenbox">
<div class="box_title text-center">联盟地图</div>
<!-- <img class="map" src="~@/assets/img/Home/map.png" alt="" /> -->
<Map></Map>
<Notice v-show="isNotice"></Notice>
<div v-show="!isNotice">
<div class="top flex">
<div class="left box">
<video :src="videoSrc" controls class="video" />
</div>
<div class="right box tabbox" style="height: 458px">
<el-tabs v-model="exTab">
<!-- 新闻会议tab -->
<div class="right box tabbox videoboxs">
<el-tabs v-model="curTab" @tab-click="handleClick">
<el-tab-pane
v-for="(e, index) in example"
v-for="(e, index) in tabList"
:key="index"
:label="e.title"
:name="e.title"
:name="index + 1 + ''"
>
<ul class="tabslist" style="height: 380px" :loading="listLoading">
<ul class="tabslist">
<li
v-for="(item, index) in exampleList"
v-for="(item, index) in noticeList"
:key="index"
title="点击查看pdf文件"
@click="setPdf(item)"
......@@ -60,145 +26,187 @@
<div class="circle"></div>
{{ item.articleTitle }}
</div>
<div class="right">
{{ item.createTime }}
</div>
<div class="right">{{ item.createTime }}11</div>
</li>
</ul>
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
<!-- 机构排名 -->
<div class="dataAnalysis" style="background: #fff">
<div class="flex" style="margin-bottom: 0px">
<div class="box cenbox cenboxs">
<div class="range left_range">
<div class="text-center">
<span class="range_title text-center">
累计上报合格病例数机构排名
</span>
</div>
<div class="rangecontent">
<div class="top20"></div>
<ul class="rangeList">
<li
v-for="(item, index) in rangeList"
:key="index"
:style="{
color: index < 3 ? '#4E68FF' : '#333333',
alignSelf: index > 9 ? 'flex-end' : '',
}"
<!-- 联盟地图 -->
<div class="dataAnalysis map_box">
<div class="flex">
<div class="left box cenbox">
<div class="box_title text-center">联盟地图</div>
<!-- <img class="map" src="~@/assets/img/Home/map.png" alt="" /> -->
<Map></Map>
</div>
<div class="right box tabbox" style="height: 458px">
<el-tabs v-model="exTab">
<el-tab-pane
v-for="(e, index) in example"
:key="index"
:label="e.title"
:name="e.title"
>
<ul
class="tabslist"
style="height: 380px"
:loading="listLoading"
>
<div>{{ index + 1 }}</div>
<div>{{ item.unionName }}</div>
<div>{{ item.nums }}</div>
</li>
</ul>
</div>
<li
v-for="(item, index) in exampleList"
:key="index"
title="点击查看pdf文件"
@click="setPdf(item)"
>
<div class="left">
<div class="circle"></div>
{{ item.articleTitle }}
</div>
<div class="right">
{{ item.createTime }}
</div>
</li>
</ul>
</el-tab-pane>
</el-tabs>
</div>
<div class="range">
<div class="text-center">
<span class="range_title text-center">近90天上报量机构排名</span>
</div>
</div>
<!-- 机构排名 -->
<div class="dataAnalysis" style="background: #fff">
<div class="flex" style="margin-bottom: 0px">
<div class="box cenbox cenboxs">
<div class="range left_range">
<div class="text-center">
<span class="range_title text-center">
累计上报合格病例数机构排名
</span>
</div>
<div class="rangecontent">
<div class="top20"></div>
<ul class="rangeList">
<li
v-for="(item, index) in rangeList"
:key="index"
:style="{
color: index < 3 ? '#4E68FF' : '#333333',
alignSelf: index > 9 ? 'flex-end' : '',
}"
>
<div>{{ index + 1 }}</div>
<div>{{ item.unionName }}</div>
<div>{{ item.nums }}</div>
</li>
</ul>
</div>
</div>
<div class="rangecontent">
<div class="top10"></div>
<ul class="rangeList">
<li
v-for="(item, index) in curQuarterList"
:key="index"
:style="{
color: index < 3 ? '#4E68FF' : '#333333',
}"
<div class="range">
<div class="text-center">
<span class="range_title text-center"
>近90天上报量机构排名</span
>
<div>{{ index + 1 }}</div>
<div>{{ item.unionName }}</div>
<div>{{ item.nums }}</div>
</li>
</ul>
</div>
<div class="rangecontent">
<div class="top10"></div>
<ul class="rangeList">
<li
v-for="(item, index) in curQuarterList"
:key="index"
:style="{
color: index < 3 ? '#4E68FF' : '#333333',
}"
>
<div>{{ index + 1 }}</div>
<div>{{ item.unionName }}</div>
<div>{{ item.nums }}</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 健康科普 -->
<div class="healthPopularization">
<div class="title_box">
<div class="title">健康科普</div>
<div class="empty"></div>
<!-- 健康科普 -->
<div class="healthPopularization">
<div class="title_box">
<div class="title">健康科普</div>
<div class="empty"></div>
</div>
<ul class="typeList">
<li
v-for="(item, index) in typeList"
:key="index"
:style="{ backgroundImage: 'url(' + item.src + ')' }"
@click="
$router.push({
path: '/healthpopularization',
query: { tabIndex: index },
})
"
>
{{ item.name }}
</li>
</ul>
</div>
<ul class="typeList">
<li
v-for="(item, index) in typeList"
:key="index"
:style="{ backgroundImage: 'url(' + item.src + ')' }"
@click="
$router.push({
path: '/healthpopularization',
query: { tabIndex: index },
})
"
>
{{ item.name }}
</li>
</ul>
</div>
<!-- 科学研究 -->
<div class="scientificresearch">
<div class="title_box">
<div class="title">科学研究</div>
<div class="empty"></div>
</div>
<ul class="researchList">
<li
v-for="(item, index) in researchList"
:key="index"
@click="
$router.push({
path: '/scientificresearch',
query: { tabIndex: index },
})
"
>
{{ item }}
</li>
</ul>
</div>
<!-- 粘性定位 -->
<div v-show="showFixed" class="fixed_box">
<ul class="f_list">
<el-popover
popper-class="poperbackground"
v-for="(item, index) in rigBarList"
:key="index"
placement="left-start"
title=""
width="200"
trigger="hover"
:content="item.content"
>
<!-- 科学研究 -->
<div class="scientificresearch">
<div class="title_box">
<div class="title">科学研究</div>
<div class="empty"></div>
</div>
<ul class="researchList">
<li
slot="reference"
:style="{ background: fixIndex == index ? '#4e68ff' : '#fff' }"
@mouseenter="fixIndex = index"
@mouseleave="fixIndex = -1"
v-for="(item, index) in researchList"
:key="index"
@click="
$router.push({
path: '/scientificresearch',
query: { tabIndex: index },
})
"
>
<template v-if="fixIndex == index">
<img :src="item.src2" alt="" /><span style="color: #fff">{{
item.name
}}</span>
</template>
<template v-else>
<img :src="item.src1" alt="" /><span>{{ item.name }}</span>
</template>
{{ item }}
</li>
</el-popover>
</ul>
</ul>
</div>
<!-- 粘性定位 -->
<div v-show="showFixed" class="fixed_box">
<ul class="f_list">
<el-popover
popper-class="poperbackground"
v-for="(item, index) in rigBarList"
:key="index"
placement="left-start"
title=""
width="200"
trigger="hover"
:content="item.content"
>
<li
slot="reference"
:style="{ background: fixIndex == index ? '#4e68ff' : '#fff' }"
@mouseenter="fixIndex = index"
@mouseleave="fixIndex = -1"
>
<template v-if="fixIndex == index">
<img :src="item.src2" alt="" /><span style="color: #fff">{{
item.name
}}</span>
</template>
<template v-else>
<img :src="item.src1" alt="" /><span>{{ item.name }}</span>
</template>
</li>
</el-popover>
</ul>
</div>
</div>
<!-- 弹窗 -->
<pdf-dialog
ref="pdfDialog"
......@@ -212,10 +220,12 @@ import { getRankTotal, getCurrentQuarter } from "@/api/Home"
import { articleList } from "@/api/operation-management"
import Map from "./Map"
import PdfDialog from "./PdfDialog/index.vue"
import Notice from "./notice/index.vue"
export default {
components: { Map, PdfDialog },
components: { Map, PdfDialog, Notice },
data() {
return {
isNotice: false,
curPdf: {},
pdfSrc: "",
fixIndex: -1,
......@@ -311,6 +321,10 @@ export default {
},
methods: {
setPdf(item) {
if (item.moduleType === 2) {
this.isNotice = true
return
}
this.$refs.pdfDialog.showPdf = true
this.curPdf = item
this.pdfSrc =
......
<template>
<div class="container">
<h2>申请加入国家消化道早癌防治中心联盟</h2>
<div class="sub_title">申请阶段</div>
<div class="content">
<h3>1、下载申请材料</h3>
<div class="upload_item" v-for="item in list" :key="item.id">
<div class="img-file">
<img src="@/assets/img/Home/file.png" alt="" />
</div>
<div style="float: left" class="upload_label">
<strong>{{ item.label }} </strong>
<span>{{ item.size }}</span>
</div>
<div class="img-load" @click="download(item)">
<img src="@/assets/img/Home/download.png" alt="" />
</div>
</div>
<h3>2、发送至邮箱</h3>
<p>service@gecachina.cn</p>
<h3>3、定期参与入盟培训</h3>
<p>培训内容:新系统使用、筛查方法及医患沟通等</p>
<h3>4、材料认证 - 开通账户</h3>
<p>a. 回复确认入盟邀请函</p>
<p>b. 账户开通:门诊、体检、、社区</p>
<h3>5、数据审核</h3>
<p>
a.
按要求上传足量病例后,联盟官网将公示入盟医院:三甲医院需上传100例数据,非三甲医院需上传50例
</p>
<p>b. 目前已入联盟但未公示的医院,需补充病例才可公示</p>
<h3>6、官网公示 - 申请成功</h3>
</div>
<div class="sub_title">运行阶段</div>
<div class="content">
<h3>1、定期沟通会 - 数据上传</h3>
<p>a. 根据指导建议做出积极响应:制定后续跟进计划</p>
<p>
b. 已在官网公示名单中的医院将定期开启回溯重申,如不合格将从名单中摘除
</p>
<h3>2、正式授牌</h3>
<p>正式入盟后需要定期上传筛查数据(高质量且有效)才可获得授牌</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{
id: 1,
url:
"http://www.ncrcgastro.org/d/file/coordination/apply/2020-05-27/67235e21623910e9e0c04f23fa3314d6.docx",
label: "国家消化道早癌防治中心”(早期胃癌筛查项目)申请表.docx",
size: "35.7 KB",
},
{
id: 2,
url:
"http://www.ncrcgastro.org/d/file/coordination/apply/2019-06-05/3ecfa10aa09afdf73526d41cda151d0f.pdf",
label: "早期胃癌筛查项目 申请表填写标准(1).pdf",
size: "351 KB",
},
{
id: 3,
url:
"http://www.ncrcgastro.org/d/file/coordination/apply/2019-06-05/a18cf8ea29d870da693ea8bd79d2ce33.docx",
label: "信息系统账号申请表(2).docx",
size: "22 KB",
},
{
id: 4,
url:
"http://www.ncrcgastro.org/d/file/coordination/apply/2019-06-12/206be4b4d462aa5812dbba723e69f518.docx",
label: "GECA联盟申请Q&A问答汇总.docx",
size: "216 KB",
},
],
}
},
methods: {
download({ url, label }) {
const el = document.createElement("a")
el.download = label
el.target = "_blank"
el.style.display = "none"
el.href = url
document.body.appendChild(el)
el.click()
URL.revokeObjectURL(el.href)
document.body.removeChild(el)
},
},
mounted() {},
watch: {},
}
</script>
<style lang="scss" scoped>
.container {
padding: 30px 10px;
h2 {
font-weight: bold;
font-size: 28px;
text-align: center;
height: 36px;
font-size: 32px;
font-family: AlibabaPuHuiTiB;
letter-spacing: 3px;
margin-bottom: 50px;
color: #4e68ff;
line-height: 36px;
}
.content {
padding-left: 30px;
letter-spacing: 1px;
h3 {
font-size: 18px;
font-weight: bold;
color: #333333;
line-height: 50px;
margin-top: 10px;
}
p {
line-height: 20px;
padding-left: 15px;
}
}
.upload_item {
width: 780px;
height: 60px;
background: #f5f5f5;
border-radius: 8px;
line-height: 60px;
overflow: hidden;
margin-bottom: 20px;
.img-file {
float: left;
padding: 0 10px;
width: 60px;
line-height: 60px;
img {
transform: translateY(10px);
width: 40px;
height: 40px;
}
}
.upload_label {
float: left;
}
.img-load {
float: right;
width: 60px;
height: 60px;
background-color: #ebeeff;
text-align: center;
cursor: pointer;
img {
transform: translateY(10px);
width: 28px;
height: 28px;
}
}
strong {
color: #333333;
font-size: 16px;
margin-right: 10px;
}
}
.sub_title {
font-size: 18px;
font-weight: bold;
color: #333333;
margin: 10px;
padding-left: 15px;
letter-spacing: 2px;
position: relative;
&::before {
content: " ";
border-left: 4px solid #4e68ff;
position: absolute;
height: 18px;
top: 4px;
left: 0;
}
}
}
</style>
<template>
<div class="container">
<h2>GECA联盟理事及医院名单</h2>
<div v-for="row in list" :key="row.label">
<div class="sub_title">
{{ row.label }}
</div>
<div class="content">
<span v-for="item in row.items" :key="item">{{ item }}</span>
</div>
</div>
<div style="padding-left: 48px">
<img src="@/assets/img/Home/trustee.png" alt="" />
</div>
<div class="sub_title">CEGA联盟医院名单</div>
<el-table :data="tableData" :span-method="objectSpanMethod" border>
<el-table-column width="60" type="index">
<template #header>
<div>序号</div>
</template>
</el-table-column>
<el-table-column prop="s" label="省份/直辖市" min-width="160px">
</el-table-column>
<el-table-column prop="n" label="医院名称" align="left" min-width="340px">
</el-table-column>
<el-table-column
prop="a"
label="授牌医院"
min-width="110px"
class-name="mark"
>
</el-table-column>
<el-table-column
prop="t"
label="填报数据医院"
min-width="140px"
class-name="mark"
>
</el-table-column>
</el-table>
</div>
</template>
<script>
import tableData from "./tpl"
export default {
data() {
return {
list: [
{
label: "名誉理事长",
items: [
"白书忠",
"程书钧",
"樊代明",
"赫捷",
"林东昕",
"沈洪兵",
"沈祖尧",
"王陇德",
"于金明",
"詹启敏",
"张雁灵",
"郑树",
],
},
{
label: "顾问",
items: [
"姜庆五",
"陆星华",
"夏玉亭",
"游苏宁",
"于中麟",
"袁媛",
"张齐联",
"张子琪",
],
},
{
label: "副理事长",
items: [
"曹志强",
"曾强",
"陈刚",
"陈广域",
"陈昱湖",
"陈薇娜",
"陈卫昌",
"丁俊峰",
"房静远",
"冯佶",
"高峰",
"郭学刚",
"何纳",
"吉朋松",
"季加孚",
"金震东",
"兰平",
"李少辉",
"李挺",
"李汛",
"李延青",
"廖专",
"令孤恩强",
"刘峰",
"刘小梅",
"吕宾",
"马进",
"唐承薇",
"王贵齐",
"王磊",
"王立东",
"邬堂春",
"吴开春",
"徐国良",
"杨爱明",
"杨嘉林",
"杨民",
"杨云生",
"姚俊杰",
"张澍田",
"张晓华",
"周丽雅",
"邹晓平",
],
},
{
label: "秘书长",
items: ["杜奕奇"],
},
{
label: "常务副秘书长",
items: ["柏愚", "蔡全才", "王洛伟"],
},
{
label: "副秘书长",
items: [
"柴宁莉",
"常佳",
"董莉君",
"冀明",
"李方",
"李锐",
"钱朝斌",
"颜杰",
"姚方",
"尹畅",
"张磊",
],
},
{
label: "秘书",
items: [
"陈丽竹",
"崔勇",
"杜寒",
"郝阳帆",
"胡良皞",
"胡亚琴",
"王天骄",
"吴萍",
"辛磊",
"徐美玲",
"张辉",
"张颖",
],
},
{
label: "常务理事",
},
],
tableData,
}
},
methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 1) {
if (row.span) {
return {
rowspan: row.span,
colspan: 1,
}
} else {
return {
rowspan: 0,
colspan: 0,
}
}
}
},
},
mounted() {},
watch: {},
}
</script>
<style lang="scss" scoped>
.container {
padding: 30px 10px;
::v-deep .el-table {
margin-top: 20px;
margin-left: 20px;
width: 820px;
font-size: 16px;
td.mark .cell {
font-weight: bold;
color: #4e68ff;
}
td.is-left {
text-align: left;
}
}
h2 {
font-weight: bold;
font-size: 28px;
text-align: center;
height: 36px;
font-size: 32px;
font-family: AlibabaPuHuiTiB;
letter-spacing: 3px;
margin-bottom: 50px;
color: #4e68ff;
line-height: 36px;
}
.sub_title {
font-size: 18px;
font-weight: bold;
color: #333333;
margin: 10px 20px;
padding-left: 15px;
letter-spacing: 2px;
position: relative;
&::before {
content: " ";
border-left: 4px solid #4e68ff;
position: absolute;
height: 18px;
top: 4px;
left: 0;
}
}
.content {
width: 800px;
font-size: 16px;
font-family: AlibabaPuHuiTiR;
color: #333333;
line-height: 35px;
padding-left: 50px;
padding-bottom: 10px;
span {
display: inline-block;
width: 65px;
margin-right: 50px;
text-align: justify;
text-align-last: justify;
}
}
}
</style>
export default [
//1
{ n: "北京大学第三医院", s: "北京市", a: "", span: 11 },
{ n: "北京京煤集团总医院", s: "北京市" },
{ n: "北京市和平里医院", s: "北京市", a: "", t: "" },
{ n: "北京协和医院", s: "北京市", a: "" },
{ n: "北京燕化医院", s: "北京市", a: "", t: "" },
{ n: "陆军总医院", s: "北京市", a: "" },
{ n: "清华大学第一附属医院", s: "北京市", a: "" },
{ n: "首都医科大学附属北京天坛医院", s: "北京市", a: "" },
{ n: "首都医科大学附属北京友谊医院", s: "北京市", a: "" },
{ n: "中国人民解放军总医院", s: "北京市", a: "" },
{ n: "中国医学科学院肿瘤医院", s: "北京市", a: "" },
//12
{ n: "复旦大学附属中山医院", s: "上海市", a: "", span: 10 },
{ n: "上海交通大学医学院附属仁济医院", s: "上海市", a: "" },
{ n: "上海交通大学医学院附属瑞金医院", s: "上海市", a: "" },
{ n: "上海市第八人民医院", s: "上海市" },
{ n: "上海市光华中西医结合医院", s: "上海市", a: "" },
{ n: "上海市浦东医院", s: "上海市", a: "" },
{ n: "上海市普陀区中心医院", s: "上海市" },
{ n: "上海市松江区中心医院", s: "上海市", a: "" },
{ n: "上海长海医院", s: "上海市", a: "", t: "" },
{ n: "同济大学附属同济医院", s: "上海市", a: "" },
//22
{ n: "陆军军医大学大坪医院", s: "重庆市", a: "", span: 7 },
{ n: "陆军军医大学西南医院", s: "重庆市", a: "" },
{ n: "陆军军医大学新桥医院", s: "重庆市", a: "" },
{ n: "沙坪坝区人民医院", s: "重庆市" },
{ n: "重庆市中医院", s: "重庆市", a: "", t: "" },
{ n: "重庆市肿瘤医院", s: "重庆市" },
{ n: "重庆医科大学附属第二医院", s: "重庆市", a: "" },
//29
{ n: "安徽淮南朝阳医院", s: "安徽省", span: 10 },
{ n: "安徽省蚌埠医学院第二附属医院", s: "安徽省" },
{ n: "安徽省立医院", s: "安徽省" },
{ n: "安徽医科大学第一附属医院", s: "安徽省", a: "" },
{ n: "安庆市立医院", s: "安徽省", a: "" },
{ n: "蚌埠医学院第一附属医院", s: "安徽省", a: "" },
{ n: "淮北市人民医院", s: "安徽省", t: "" },
{ n: "皖南医学院第二附属医院", s: "安徽省", t: "" },
{ n: "皖南医学院弋矶山医院", s: "安徽省", a: "" },
{ n: "中国人民解放军海军安庆医院", s: "安徽省" },
//39
{ n: "福建省老年医院", s: "福建省", span: 10 },
{ n: "福建省立医院南院(省立金山医院)", s: "福建省", t: "" },
{ n: "福建省肿瘤医院", s: "福建省", a: "" },
{ n: "福建医科大学附属第二医院", s: "福建省" },
{ n: "南京军区福州总医院", s: "福建省", a: "" },
{ n: "宁德市医院", s: "福建省" },
{ n: "宁德市中医院", s: "福建省" },
{ n: "三明市第一医院", s: "福建省" },
{ n: "石狮市总医院", s: "福建省", a: "" },
{ n: "漳州正兴医院", s: "福建省" },
// 49
{ n: "兰州大学第一医院", s: "甘肃省", a: "", span: 3 },
{ n: "兰州市第一人民医院", s: "甘肃省", a: "", t: "" },
{ n: "武威肿瘤医院", s: "甘肃省", a: "" },
//52
{ n: "潮州市人民医院", s: "广东省", span: 43 },
{ n: "东源县中医院", s: "广东省" },
{ n: "佛冈县人民医院", s: "广东省" },
{ n: "佛山市第二人民医院", s: "广东省" },
{ n: "佛山市中医院", s: "广东省" },
{ n: "广东韶关市第一人民医院", s: "广东省" },
{ n: "广东省佛山市南海区人民医院", s: "广东省" },
{ n: "广东省惠州市第一人民医院", s: "广东省" },
{ n: "广东省惠州市中心人民医院", s: "广东省", t: "" },
{ n: "广东省罗定市人民医院", s: "广东省" },
{ n: "广东省人民医院", s: "广东省" },
{ n: "广东省人民医院珠海医院", s: "广东省" },
{ n: "广东省四会市人民医院", s: "广东省" },
{ n: "广东省肇庆市高要区人民医院", s: "广东省" },
{ n: "广东省中山市黄圃人民医院", s: "广东省" },
{ n: "广东省中医院珠海医院", s: "广东省" },
{ n: "广州市第一人民医院", a: "", s: "广东省" },
{ n: "广州市番禺区中心医院", a: "", s: "广东省" },
{ n: "广州市花都区人民医院", s: "广东省" },
{ n: "广州市中西医结合医院", s: "广东省" },
{ n: "广州医科大学附属第二医院", a: "", s: "广东省", t: "" },
{ n: "广州医科大学附属第五医院", a: "", s: "广东省" },
{ n: "广州中医药大学第一附属医院", s: "广东省" },
{ n: "怀集县人民医院", s: "广东省" },
{ n: "暨南大学附属第一医(广州华侨医院)", s: "广东省" },
{ n: "江门市中心医院", s: "广东省" },
{ n: "茂名市人民医院", a: "", s: "广东省", t: "" },
{ n: "南方医科大学南方医院", a: "", s: "广东省", t: "" },
{ n: "南方医科大学深圳医院", a: "", s: "广东省" },
{ n: "南方医科大学珠江医院", s: "广东省" },
{ n: "清远市人民医院", s: "广东省", a: "" },
{ n: "韶关市粤北人民医院", s: "广东省" },
{ n: "深圳市宝安第二人民医院(集团)", s: "广东省", a: "" },
{ n: "深圳市罗湖区人民医院", s: "广东省" },
{ n: "中国人民解放军南部战区总医院", s: "广东省" },
{ n: "中山大学附属第二医院", s: "广东省" },
{ n: "中山大学附属第六医院", s: "广东省" },
{ n: "中山大学附属第五医院", s: "广东省" },
{ n: "中山大学附属第一医院", s: "广东省", a: "" },
{ n: "中山市小榄人民医院", s: "广东省", a: "", t: "" },
{ n: "中信健康管理中心", s: "广东省", a: "" },
{ n: "珠海市人民医院", s: "广东省", t: "", a: "" },
{ n: "遵义医学院第五附属珠海医院", s: "广东省" },
// 95
{ n: "贵州省第三人民医院", s: "贵州省", span: 4 },
{ n: "贵州省医科大学附属医院", s: "贵州省" },
{ n: "贵州省肿瘤医院", s: "贵州省" },
{ n: "遵义医学院附属医院", s: "贵州省", a: "" },
// 99
{ n: "海南省肿瘤医院", s: "海南省", a: "", span: 1 },
// 100
{ n: "哈励逊国际和平医院", s: "河北省", span: 7 },
{ n: "邯郸市第一医院", s: "河北省" },
{ n: "邯郸市中心医院", s: "河北省" },
{ n: "河北省人民医院", s: "河北省", a: "" },
{ n: "河北医科大学第二医院", s: "河北省", a: "" },
{ n: "河北医科大学第三医院", s: "河北省", a: "" },
{ n: "邢台医学高等专科学校第一附属医院", s: "河北省" },
// 107
{ n: "河南宏力医院", s: "河南省", span: 10 },
{ n: "河南中医药大学第三附属医院", s: "河南省", a: "" },
{ n: "黄河水利委员会黄河中心医院", s: "河南省", a: "" },
{ n: "平煤神马医疗集团总医院", s: "河南省" },
{ n: "西峡县人民医院", s: "河南省" },
{ n: "新乡市第一人民医院", s: "河南省" },
{ n: "新乡医学院第一附属医院", s: "河南省", a: "" },
{ n: "许昌市人民医院", s: "河南省" },
{ n: "郑州大学第五附属医院", s: "河南省", a: "" },
{ n: "郑州颐和医院", s: "河南省" },
// 117
{ n: "大庆油田总医院", s: "黑龙江省", span: 15, a: "" },
{ n: "哈尔滨汽轮机厂医院", s: "黑龙江省" },
{ n: "哈尔滨医科大学附属第二医院", s: "黑龙江省" },
{ n: "哈尔滨医科大学附属第一医院", s: "黑龙江省", a: "" },
{ n: "鹤岗鹤矿医院", s: "黑龙江省" },
{ n: "鹤岗市人民医院", s: "黑龙江省" },
{ n: "黑龙江省医院", s: "黑龙江省", a: "" },
{ n: "黑龙江中医药大学附属第二医院", s: "黑龙江省" },
{ n: "鸡西矿业集团总医院", s: "黑龙江省" },
{ n: "鸡西人民医院", s: "黑龙江省" },
{ n: "佳木斯大学附属第一医院", s: "黑龙江省" },
{ n: "七台河市七煤医院", s: "黑龙江省" },
{ n: "七台河市人民医院", s: "黑龙江省" },
{ n: "双鸭山人民医院", s: "黑龙江省", t: "" },
{ n: "双鸭山市双矿医院", s: "黑龙江省" },
// 132
{ n: "恩施土家族苗族自治州中心医院", span: 20, s: "湖北省" },
{ n: "湖北民族学院附属民大医院" },
{ n: "湖北省第三人民医院" },
{ n: "湖北省建始县人民医院" },
{ n: "华中科技大学同济医学院附属同济医院" },
{ n: "华中科技大学同济医学院附属协和医院" },
{ n: "荆门市第二人民医院" },
{ n: "荆门市第一人民医院" },
{ n: "荆门市中医医院" },
{ n: "荆州市第一人民医院" },
{ n: "荆州市中心医院" },
{ n: "三峡大学附属仁和医院" },
{ n: "十堰市人民医院" },
{ n: "十堰市太和医院" },
{ n: "武汉大学人民医院", a: "" },
{ n: "武汉大学中南医院", a: "" },
{ n: "武汉市中心医院", a: "" },
{ n: "宜昌市第一人民医院" },
{ n: "宜昌市夷陵医院" },
{ n: "宜昌市中心人民医院", a: "", t: "" },
// 152
{ n: "南华大学附属第二医院", span: 4, s: "湖南省" },
{ n: "南华大学附属第一医院", a: "" },
{ n: "中南大学湘雅二医院", a: "" },
{ n: "中南大学湘雅医院" },
// 156
{ n: "吉林大学第一医院", span: 3, s: "吉林省", a: "" },
{ n: "吉林大学中日联谊医院", a: "" },
{ n: "长春市中心医院", a: "" },
// 159
{ n: "鹅湖人民医院", s: "江苏省", a: "", span: 24 },
{ n: "江南大学附属医院", a: "" },
{ n: "江苏省第二中医院" },
{ n: "江苏省人民医院", a: "" },
{ n: "江阴市人民医院", a: "", t: "" },
{ n: "昆山市第三人民医院", t: "" },
{ n: "昆山中医医院", a: "", t: "" },
{ n: "连云港市第二人民医院" },
{ n: "南京鼓楼医院", a: "" },
{ n: "南京市第一医院", a: "" },
{ n: "南京医科大学第二附属医院", a: "" },
{ n: "苏州大学附属第一医院", a: "" },
{ n: "泰康仙林鼓楼医院", t: "" },
{ n: "无锡市第二人民医院", a: "", t: "" },
{ n: "无锡市第二中医医院", a: "", t: "" },
{ n: "无锡市第三人民医院", a: "", t: "" },
{ n: "无锡市人民医院", a: "", t: "" },
{ n: "无锡市锡山人民医院", a: "", t: "" },
{ n: "无锡市中医医院", a: "", t: "" },
{ n: "徐州医科大学附属医院", a: "" },
{ n: "盐城市大丰同仁医院" },
{ n: "宜兴市人民医院", a: "", t: "" },
{ n: "镇江市第一人民医院", a: "" },
{ n: "中国人民解放军第101医院", a: "", t: "" },
//183
{ n: "赣南医学院第一附属医院", s: "江西省", span: 13, a: "" },
{ n: "赣州市人民医院", a: "" },
{ n: "江西省九江学院附属医院" },
{ n: "南昌大学第一附属医院", a: "" },
{ n: "南昌市第一医院" },
{ n: "萍乡市人民医院", t: "" },
{ n: "上饶市立医院" },
{ n: "上饶市人民医院" },
{ n: "宜春市人民医院" },
{ n: "鹰潭市人民医院" },
{ n: "鹰潭市中医院" },
{ n: "于都县人民医院", a: "" },
{ n: "中国人民解放军联勤保障部队第九〇八医院" },
//196
{ n: "本溪市中心医院", s: "辽宁省", span: 3 },
{ n: "营口市中心医院" },
{ n: "中国医科大学附属盛京医院", a: "" },
//199
{ n: "青海大学附属医院", s: "青海省", span: 1 },
//200
{ n: "滨州医学院附属医院", s: "山东省", a: "", span: 15 },
{ n: "德州市人民医院" },
{ n: "临沂市中心医院" },
{ n: "青岛大学附属医院", a: "" },
{ n: "庆云县人民医院" },
{ n: "山东大学齐鲁医院", a: "" },
{ n: "山东省立医院", a: "" },
{ n: "胜利油田中心医院", a: "", t: "" },
{ n: "滕州市中心人民医院" },
{ n: "威海市立医院" },
{ n: "威海市中心医院", a: "" },
{ n: "烟台市烟台山医院", a: "" },
{ n: "烟台毓璜顶医院", a: "" },
{ n: "阳光融和医院" },
{ n: "中国人民解放军联勤保障部队第九七〇医院" },
//215
{ n: "大同大学附属医院", s: "山西省", span: 11 },
{ n: "大同市第二人民医院肿瘤医院", a: "" },
{ n: "大同市第三人民医院" },
{ n: "大同市第五人民医院" },
{ n: "山西晋城无烟煤矿业集团有限责任公司总医院" },
{ n: "山西省人民医院", a: "", t: "" },
{ n: "山西省中医药研究院" },
{ n: "太原市中心医院" },
{ n: "同煤集团公司总医院" },
{ n: "长治医学院附属和平医院", a: "" },
{ n: "中化二建集团医院" },
// 226
{ n: "安康市中心医院", s: "陕西省", span: 7, a: "" },
{ n: "宝鸡市人民医院" },
{ n: "西安交通大学第二附属医院", a: "" },
{ n: "西安交通大学第一附属医院", a: "" },
{ n: "西安市中心医院" },
{ n: "西安医学院第一附属医院" },
{ n: "榆林市第二医院", a: "" },
//233
{ n: "阿坝藏族羌族自治州人民医院", s: "四川省", span: 30, t: "" },
{ n: "成都市第二人民医院" },
{ n: "成都市第三人民医院", a: "", t: "" },
{ n: "成都市第五人民医院" },
{ n: "成都市龙泉驿区第一人民医院", t: "" },
{ n: "成都市郫都区人民医院" },
{ n: "成都市温江区人民医院" },
{ n: "成都天府新区人民医院" },
{ n: "成都医学院第一附属医院" },
{ n: "川北医学院附属医院" },
{ n: "达川区人民医院" },
{ n: "达州市中西医结合医院" },
{ n: "达州市中心医院" },
{ n: "都江堰市人民医院", t: "" },
{ n: "广元市第三人民医院" },
{ n: "广元市第四人民医院" },
{ n: "广元市中心医院" },
{ n: "乐山市人民医院", a: "" },
{ n: "绵阳市中心医院" },
{ n: "绵竹市人民医院" },
{ n: "四川宝石花医院" },
{ n: "四川大学华西医院", a: "" },
{ n: "四川简阳市人民医院", t: "" },
{ n: "四川省科学城医院" },
{ n: "四川省内江市中医院" },
{ n: "四川省人民医院", a: "" },
{ n: "四川省自贡市第一人民医院", t: "" },
{ n: "西藏自治区人民政府驻成都办事处医院", a: "" },
{ n: "雅安市人民医院" },
{ n: "中江县人民医院" },
//263
{ n: "大理白族自治州人民医院", a: "", s: "云南省", span: 6 },
{ n: "个旧市人民医院" },
{ n: "昆明医科大学第一附属医院", a: "" },
{ n: "曲靖市第一人民医院", a: "" },
{ n: "文山市人民医院" },
{ n: "云南省第一人民医院", a: "" },
//269
{ n: "滨海县人民医院", s: "浙江省", span: 9 },
{ n: "淳安县第一人民医院" },
{ n: "建德市第一人民医院" },
{ n: "宁波市医疗中心李惠利医院" },
{ n: "桐庐县中医院" },
{ n: "永康方大瑞金医院" },
{ n: "浙江衢化医院" },
{ n: "浙江省台州医院", a: "" },
{ n: "浙江省中医院", a: "" },
//278
{ n: "广西象州县中医医院", s: "广西壮族自治区", span: 5 },
{ n: "广西医科大学第一附属医院", a: "" },
{ n: "广西壮族自治区南溪山医院", a: "", t: "" },
{ n: "桂林市第二人民医院" },
{ n: "钦州第二人民医院", a: "", t: "" },
//283
{ n: "宁夏回族自治区人民医院", s: "宁夏回族自治区", span: 3 },
{ n: "宁夏人民医院宁南医院", s: "宁夏回族自治区", t: "" },
{ n: "宁夏医科大学总医院", s: "宁夏回族自治区", a: "", t: "" },
// 286
{ n: "巴彦淖尔市医院", s: "内蒙古自治区", span: 15 },
{ n: "包钢集团第三职工医院" },
{ n: "包头市蒙医中医医院" },
{ n: "包头市中心医院" },
{ n: "包头市肿瘤医院" },
{ n: "包头医学院第二附属医院" },
{ n: "鄂尔多斯市中心医院", a: "" },
{ n: "呼和浩特市第一医院" },
{ n: "呼伦贝尔市人民医院" },
{ n: "内蒙古科技大学包头医学院第一附属医院", a: "" },
{ n: "内蒙古医科大学附属医院", a: "" },
{ n: "内蒙古自治区人民医院" },
{ n: "内蒙古自治区中医医院" },
{ n: "乌海市人民医院" },
{ n: "准格尔旗中心医院" },
{ n: "新疆维吾尔自治区人民医院", s: "新疆维吾尔自治区", span: 3, a: "" },
{ n: "新疆伊犁哈萨克自治州友谊医院", s: "新疆维吾尔自治区", a: "" },
{ n: "新疆医科大学第一附属医院", s: "新疆维吾尔自治区", a: "" },
]
<template>
<el-container>
<el-aside width="240px">
<h3 class="side_title">通知公告</h3>
<ul class="side-list">
<li
:class="currentComponent === name ? 'active' : ''"
v-for="{ isTop, time, name, label } in list"
:key="name"
@click="currentComponent = name"
>
<h4>{{ label }}</h4>
<div>
<span class="isTop" v-if="isTop">置顶</span>
<span class="time">{{ time }}</span>
</div>
</li>
</ul>
</el-aside>
<el-main>
<component :is="currentComponent"></component>
</el-main>
</el-container>
</template>
<script>
import AllianceApply from "./components/AllianceApply.vue"
import HospitalsList from "./components/HospitalsList.vue"
export default {
name: "Notice",
components: {
AllianceApply,
HospitalsList,
},
data() {
return {
list: [
{
name: "AllianceApply",
label: "申请加入国家消化道早癌防治中心联盟",
time: "2022-09-20",
isTop: true,
},
{
name: "HospitalsList",
label: "GECA联盟理事及医院名单",
time: "2022-11-20",
isTop: true,
},
],
currentComponent: "AllianceApply",
}
},
methods: {},
mounted() {},
watch: {},
}
</script>
<style lang="scss" scoped>
.el-aside {
background-color: #fff;
border-radius: 4px;
.side_title {
font-size: 18px;
font-weight: bold;
color: #333333;
margin: 20px;
padding-left: 15px;
letter-spacing: 2px;
border-radius: 4px;
position: relative;
&::before {
content: " ";
border-left: 4px solid #4e68ff;
position: absolute;
height: 18px;
top: 4px;
left: 0;
}
}
.side-list {
li {
padding: 20px 15px;
cursor: pointer;
font-size: 12px;
&.active {
background: rgba(78, 104, 255, 0.06);
h4 {
color: #4e68ff;
}
}
h4 {
font-size: 16px;
letter-spacing: 1px;
font-weight: bold;
line-height: 26px;
}
.isTop {
width: 32px;
height: 20px;
padding: 2px 5px;
color: #7085fe;
background: rgba(112, 133, 254, 0.1);
border-radius: 1px;
}
.time {
color: #999999;
}
}
}
}
.el-main {
background-color: #fff;
border-radius: 4px;
margin-left: 20px;
}
</style>
......@@ -227,8 +227,12 @@ export default {
this.$router.push({
path: "/followaudit",
query: {
id: data["id"],
unionId: data["unionId"],
unionName: data["unionName"],
patientId: data.patientId,
checkStatus: data["checkStatus"],
checkNote: data["checkNote"],
},
})
} else {
......
<template>
<div>
<el-dialog center :visible.sync="dialogVisible" width="40%" show-close @closed="cancelSubmit">
<el-dialog
center
:visible.sync="dialogVisible"
width="40%"
show-close
@closed="cancelSubmit"
>
<slot name="content"></slot>
<slot name="footer"></slot>
</el-dialog>
......@@ -24,4 +30,9 @@ export default {
},
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
::v-deep .el-dialog__body {
border-top: none;
text-align: center;
}
</style>
......@@ -4,59 +4,80 @@
<div class="audit-detail_header p-24">
<div class="left">
<span>当前审核</span>
<span class="f-b"
>{{ medicalCombination }}】【剩余{{ mcCount }}</span
<span class="f-b">{{ $route.query.unionName }}</span>
<span v-if="!editStatus" class="f-b"
>【【剩余{{ auditNum || 0 }}</span
>
</div>
<div class="right">
<el-button class="btn" @click="$router.go(-1)">返回</el-button>
</div>
</div>
<div class="table-content p-24">
<follow-review
:form-data-list="followNum"
:tab-active="tabActive"
></follow-review>
</div>
<div class="choose-handle p-24">
<span v-if="!editStatus">请选择审核结果:</span>
<div class="btn_group">
<el-button
v-for="(item, index) in btnGroup"
:key="index"
type="primary"
class="p-btn"
size="medium"
@click="showDialog(item.value)"
>{{ item.text }}</el-button
>
<span v-if="editStatus" class="op">驳回修改建议:胃镜图片不合规</span>
<el-empty v-if="isEmpty"></el-empty>
<template v-if="!isEmpty">
<div class="table-content p-24">
<FollowReview :currentRow="currentRow" titlePosition="left">
</FollowReview>
</div>
</div>
<public-dialog ref="editDialog" @onCancel="onCancel">
<div class="choose-handle p-24">
<div class="btn_group">
<el-button
v-for="(item, index) in btnGroup"
:key="index"
type="primary"
class="p-btn"
size="medium"
@click="showDialog(item.value)"
>{{ item.text }}</el-button
>
<span v-if="editStatus" class="op"
>{{
checkStatus == "2"
? "驳回修改建议 : "
: checkStatus == "4"
? "不合格原因 : "
: ""
}}
{{ checkStatus == "3" ? "" : checkNote }}</span
>
</div>
</div>
</template>
<!-- 编辑提交前弹窗 -->
<public-dialog ref="editDialog" @onSubmit="onSubmit" @onCancel="onCancel">
<!-- 修改审核结果 优先触发提示 -->
<template v-if="!confirmStatus" slot="content">
<div class="title">温馨提示</div>
<div class="content">
<div class="showTips">
该病例已经审核【驳回修改】,需要改为{{
该病例已经审核【{{
checkStatus == 2
? "驳回修改"
: checkStatus == 3
? "合格"
: checkStatus == 4
? "不合格"
: ""
}}】,需要改为{{
btnGroup[curBtn - 1] ? btnGroup[curBtn - 1].text : ""
}}
</div>
</div>
<div class="btn">
<el-button type="primary" :loading="loading" @click="onCancel"
></el-button
>
<el-button type="primary" :loading="loading" @click="editSubmit"
></el-button
>
<el-button type="primary" @click="onCancel"></el-button>
<el-button type="primary" @click="editSubmit"></el-button>
</div>
</template>
</public-dialog>
<public-dialog ref="publicDialog" @onCancel="onCancel">
<public-dialog
ref="publicDialog"
:show-close="showClose"
@onSubmit="onSubmit"
@onCancel="onCancel"
>
<!-- 审核结果回显 -->
<template v-if="!confirmStatus" slot="content">
<template v-if="!confirmStatus && !editLabelFlag" slot="content">
<div class="title">
{{ btnGroup[curBtn - 1] ? btnGroup[curBtn - 1].text : "" }}
</div>
......@@ -72,7 +93,7 @@
>
<el-form-item
:label="curBtn == 2 ? '不合格原因' : '驳回修改建议'"
prop="reson"
prop="reason"
>
<el-input
v-model="form.reason"
......@@ -83,28 +104,103 @@
></el-input>
</el-form-item>
</el-form>
<!-- 标签 -->
<div v-loading="tagLoading" class="tag-form">
<el-tag
v-for="(item, index) in tagList"
:key="index"
size="medium"
:class="item.isSelect ? '' : 'unselect-tag'"
@click="seleckTag(item, index)"
>
<span>{{ item.note }}</span>
</el-tag>
<p class="handle-row" @click="showNote = true">编辑标签</p>
<!-- 标签部分 -->
<div class="labelPlace">
<div class="labelList">
<template v-for="(item, index) in reasonList">
<div
v-if="item.note ? item.note.length <= 8 : false"
:key="index"
:class="[
'listItem',
selectedReason.includes(item.note) ? 'active' : '',
]"
@click="setReason(item)"
>
<!-- selectedReason.includes(item) ? 'active' : '', -->
{{ item.note }}
</div>
<template v-if="item.note ? item.note.length > 8 : false">
<el-tooltip
:key="index"
class="item"
effect="dark"
:content="item.note"
placement="top"
>
<div
:class="[
'listItem',
selectedReason.includes(item.note) ? 'active' : '',
]"
@click="setReason(item)"
>
<!-- selectedReason.includes(item) ? 'active' : '', -->
{{ item.note }}
</div>
</el-tooltip>
</template>
</template>
</div>
<div class="labelEdit">
<span @click="editLabel">编辑标签</span>
</div>
</div>
</div>
</div>
<div class="btn">
<el-button type="primary" :loading="loading" @click="onSubmit"
>确 定</el-button
<el-button type="primary" :loading="loading" @click="onSubmit">{{
editStatus
? curBtn == 1
? "好的"
: "提交"
: "确认并进入下一例审核"
}}</el-button>
</div>
</template>
<!-- 标签的弹窗 -->
<template v-if="!confirmStatus && editLabelFlag" slot="content">
<div class="left-back" @click="editLabelFlag = false">
<i class="el-icon-back"></i>
</div>
<div class="title">编辑标签</div>
<div class="content">
<ul class="edit_reasonList">
<li v-for="(item, index) in reasonList" :key="index">
<el-input
v-model="item.note"
style="width: 86%"
placeholder="请输入标签内容"
clearable
>
</el-input>
<el-button
type="text"
style="color: red"
:disabled="reasonList.length == 1 && item.note == ''"
@click="deleteLabel(index)"
>删除</el-button
>
<el-button
v-show="index == reasonList.length - 1"
type="text"
@click="addLabel"
>新增</el-button
>
</li>
</ul>
</div>
<div class="btn">
<el-button
type="primary"
:loading="loading"
style="padding: 0 30px"
@click="saveLabel"
>保存</el-button
>
</div>
</template>
<!-- 提交后结果 -->
<!-- 提交后合格结果 -->
<template v-if="confirmStatus" slot="content">
<div class="title">{{ btnGroup[curBtn - 1].text }}</div>
<div class="content">
......@@ -114,23 +210,20 @@
<div class="label">
{{ curBtn == 2 ? "不合格原因" : "驳回修改建议" }}
</div>
<div class="reson">{{ form.reson }}</div>
<div class="reason">{{ form.reason }}</div>
</div>
</div>
<div v-if="curBtn != 1" class="showTips">
该病例审核{{ curBtn == 2 ? "不合格原因" : "驳回修改建议" }}提交成功!
</div>
<div class="btn">
<el-button
type="primary"
:loading="auditLoading"
@click="nextExample"
>
<span v-if="tabActive < formEdit.length - 1"
>确认并进入下一列审核</span
>
<span v-else>确 定</span>
</el-button>
<el-button type="primary" :loading="loading" @click="nextExample">{{
editStatus
? curBtn == 1
? "好的"
: "提交"
: "确认并进入下一例审核"
}}</el-button>
</div>
</template>
</public-dialog>
......@@ -138,240 +231,310 @@
</template>
<script>
import publicDialog from "./components/publicDialog.vue"
import followReview from "./components/followReview.vue"
import { getFollowUnCheckDetail, putFollowCheck } from "@/api/followup"
import { getSysCheckNote, postSysCheckNote } from "@/api/note"
import FollowReview from "../followupquery/components/FollowReview.vue"
import {
getFollowUnCheckDetail,
putFollowCheck,
putFollowCheckAdvice,
} from "@/api/followup"
import { saveSysCheckNote, getSysCheckNote } from "@/api/screeningAudit"
export default {
components: { publicDialog, followReview },
components: { publicDialog, FollowReview },
data() {
return {
medicalCombination: "无锡市人民医院医联体",
mcCount: 7,
isEmpty: false,
currentRow: {},
checkStatus: null,
editLabelFlag: false,
auditNum: 0,
editStatus: false, //进入的状态是第一次审核还是修改审核,false为第一次,true为修改
followNum: [
//随访次数数据
{ followId: 123, formRecordId: 123 },
{ followId: 123, formRecordId: 123 },
{ followId: 123, formRecordId: 123 },
{ followId: 123, formRecordId: 123 },
], //第几次随访数据
formEdit: {
name: "djksh",
contact_phone: "12345678",
is_accept: "0",
gas_exam: "15",
G_17: "5",
}, //填报数据
form: {},
form: {
reason: "",
},
patientId: "", // 当前人的patientId
checkNote: "",
checkStatus: "", // 传入的checkstatus
curUnion: "", // 当前医联体
id: "",
rules: {
reason: [{ required: true, message: "请填写", trigger: "blur" }],
},
reasonList: [],
selectedReason: [],
btnGroup: [
{
text: "合格",
value: 3,
value: 1,
},
{
text: "不合格",
value: 4,
value: 2,
},
{
text: "驳回修改",
value: 2,
value: 3,
},
],
loading: false,
curBtn: 0, //点击的按钮
curComponent: "followReview",
curBtn: 0,
curComponent: "screenReview",
confirmStatus: false,
tagList: [
// {
// note: "不合格原因",
// isSelect: false,
// },
// {
// note: "不合格原因不合格原因",
// },
// {
// note: "不合格原因",
// },
// {
// note: "不合格原因",
// },
// {
// note: "不合格原因",
// },
],
newNote: "",
minHeight: "170px",
showNote: false,
}
},
computed: {
unionId() {
return this.$route.query.id
return this.$route.query.unionId
},
showClose() {
return this.curBtn == 1 ? false : true
},
},
watch: {
// tagList(){
// this.$nextTick(() => {
// this.minHeight = this.$refs.publicContent.offsetHeight + "px"
// })
// }
},
created() {
// this.getDetail()
this.init()
},
methods: {
showDialog(val, index) {
console.log("显示框", val)
async getFollowUnCheckDetail() {
this.loading = true
let res = await getFollowUnCheckDetail(this.unionId)
const { now, nums } = res.data
this.auditNum = nums
this.currentRow = { ...now, followBatch: 1 }
this.loading = false
this.isEmpty = !nums
},
init() {
const { patientId, checkStatus, checkNote, id } = this.$route.query
this.editStatus = Boolean(patientId)
if (patientId) {
this.currentRow = {
id,
patientId: patientId,
followBatch: 1,
}
this.checkStatus = checkStatus
this.checkNote = checkNote
} else {
this.getFollowUnCheckDetail()
}
},
this.curBtn = index + 1
if (!this.editStatus) {
if (this.curBtn == 1) {
// 走接口,保存合格
this.confirmStatus = true
} else if (this.curBtn == 2) {
this.rules.reason[0].message = "请输入不合格原因"
//获取审核标签
this.getSysCheckNote()
} else {
d
this.rules.reason[0].message = "请输入驳回修改建议"
// 获取标签
getSysCheckNote() {
getSysCheckNote().then((res) => {
if (res.code == 1) {
let { data } = res
if (data && data.length > 0) {
this.reasonList = data
} else {
this.reasonList = [{ note: "" }]
}
}
this.$refs.publicDialog.dialogVisible = true
})
},
// 编辑标签
editLabel() {
this.editLabelFlag = true
},
// 提交接口
putFollowCheck(checkStatus, func) {
const { id, patientId } = this.currentRow
let params = {
id,
checkStatus: checkStatus,
checkNote: this.form.reason,
patientId,
}
putFollowCheck(params)
.then((res) => {
if (res.code == 1 && res.data) {
func()
} else {
this.loading = false
}
})
.catch(() => {
this.loading = false
})
},
//! 修改审核结果
putFollowCheckAdvice(checkStatus, func) {
const { id, patientId } = this.currentRow
let params = {
id,
checkStatus: checkStatus,
checkNote: this.form.reason,
patientId,
}
putFollowCheckAdvice(params)
.then((res) => {
if (res.code == 1 && res.data) {
this.loading = false
this.checkStatus = checkStatus
this.checkNote = this.form.reason
func()
} else {
this.loading = false
this.$refs.publicDialog.dialogVisible = false
}
})
.catch(() => {
this.loading = false
})
},
// 设置理由
setReason({ note }) {
if (this.selectedReason.includes(note)) {
this.selectedReason = this.selectedReason.filter((e) => e != note)
} else {
this.selectedReason.push(note)
}
this.form.reason = this.selectedReason.join("")
},
//! 合格提交 checkStatus 合格-3 不合格-4 驳回修改-2 待审核-1
showDialog(val) {
this.curBtn = val
if (this.editStatus) {
//! 精准编辑
this.$refs.editDialog.dialogVisible = true
} else {
//! 医联体的审核
if (val == 1) {
this.$confirm("确定要提交审核吗?", "警告", {
type: "warning",
})
.then(() => {
if (this.curBtn == 1) {
// 走接口,保存合格
this.putFollowCheck("3", () => {
this.confirmStatus = true
})
}
})
.catch(() => {})
} else {
this.getSysCheckNote()
if (this.curBtn == 2) {
this.rules.reason[0].message = "请输入不合格原因"
} else {
this.rules.reason[0].message = "请输入驳回修改建议"
}
this.$refs.publicDialog.dialogVisible = true
}
}
},
// 不合格提交
onSubmit() {
this.loading = true
// 切换文本
if (this.curBtn != 1) {
this.$refs.form.validate((valid) => {
if (valid) {
let status = this.curBtn == 2 ? "4" : this.curBtn == 3 ? "2" : ""
if (this.editStatus) {
this.putFollowCheckAdvice(status, () => {
this.$message.success("提交审核成功")
this.onCancel()
})
} else {
this.putFollowCheck(status, () => {
this.$message.success("提交审核成功")
this.nextExample()
})
}
} else {
this.loading = false
return false
}
})
}
// this.$refs.publicDialog.dialogVisible = true
},
onCancel() {
this.confirmStatus = false
this.editLabelFlag = false
this.selectedReason = []
if (this.curBtn != 1) {
this.form = {}
this.form = { reason: "" }
}
this.$refs.editDialog.dialogVisible = false
this.$refs.publicDialog.dialogVisible = false
// this.$refs.noteDialog.dialogVisible = false
if (this.$refs.form) {
this.$refs.form.clearValidate()
}
},
// 修改提交
editSubmit() {
// this.$refs.editDialog.dialogVisible = false
if (this.curBtn == 1) {
// 走接口,保存合格
this.confirmStatus = true
} else if (this.curBtn == 2) {
this.rules.reason[0].message = "请输入不合格原因"
if (this.editStatus) {
// 走接口,保存合格
this.putFollowCheckAdvice("3", () => {
this.confirmStatus = true
this.$refs.publicDialog.dialogVisible = true
this.selectedReason = []
})
}
} else {
this.rules.reason[0].message = "请输入驳回修改建议"
this.getSysCheckNote()
if (this.curBtn == 2) {
this.rules.reason[0].message = "请输入不合格原因"
} else {
this.rules.reason[0].message = "请输入驳回修改建议"
}
this.$refs.publicDialog.dialogVisible = true
}
this.$refs.publicDialog.dialogVisible = true
},
nextExample() {
if (Number(this.tabActive) < this.formEdit.length - 1) {
this.tabActive = String(Number(this.tabActive) + 1)
}
console.log("tab激活", this.tabActive)
this.onCancel()
},
async getDetail() {
this.loading = true
let res = await getFollowUnCheckDetail(this.unionId)
if (res.code == 1) {
this.formEdit = res.data[0]
}
this.loading = false
},
//审核
async handleCheck() {
this.auditLoading = true
let params = {
id: this.formEdit[this.tabActive],
checkStatus: this.btnGroup[this.curBtn].value,
checkNote: this.form.reason,
patientId: this.unionId,
}
console.log("审核值", params)
// let res = await putFollowCheck(params)
// if(res.code==1){
// // this.formEdit=res.data //调试注释
// }
this.auditLoading = false
},
// 获取审核标签
async getSysCheckNote() {
this.tagLoading = true
let res = await getSysCheckNote()
if (res.code == 1) {
this.tagList = res.data
}
this.tagLoading = false
},
//选择标签
seleckTag(item, index) {
this.tagList[index]["isSelect"] = true
this.form.reason = this.form.reason + item.note + ""
this.$forceUpdate()
},
//标签保存
async saveTag() {
let params = this.tagList.map((e) => e.note)
let res = await postSysCheckNote(params)
if (res.code == 1) {
this.$message.success("保存标签成功")
this.getSysCheckNote()
// this.$refs.noteDialog.dialogVisible = false
if (this.editStatus) {
this.loading = false
this.onCancel()
} else {
this.onCancel()
this.getFollowUnCheckDetail()
}
},
//标签添加
addTag() {
this.tagList.push({
note: "",
})
this.$forceUpdate()
},
//标签删除
delTag(item, index) {
deleteLabel(i) {
this.$confirm("确定要删除该标签吗?", "警告", {
type: "warning",
})
.then(() => {
this.tagList = this.tagList.filter((e, i) => i != index)
this.reasonList = this.reasonList.filter((e, index) => index != i)
if (this.reasonList.length == 0) {
this.reasonList = [
{
note: "",
},
]
}
})
.catch(() => {})
},
//标签对话框关闭
handleNoteDialog(i) {
this.showNote = false
this.getSysCheckNote()
// 增加标签
addLabel() {
this.reasonList.push({
note: "",
})
},
// 保存标签
saveLabel() {
let arr = this.reasonList.map((e) => e.note)
saveSysCheckNote(arr).then((res) => {
if (res.code == 1) {
this.$message.success("保存标签成功")
this.getSysCheckNote()
this.editLabelFlag = false
}
})
},
// //标签保存对话框操作
// noteSave(){
// this.$refs.noteDialog.dialogVisible = false
// this.getSysCheckNote()
// },
// //添加、编辑标签
// async handleTag(item){
// if(!item.note) return
// else{
// let params = {
// note:item.note
// }
// item.id ? params['id']=item.id : ''
// let res = item.id ? await putSysCheckNote(params) : await postSysCheckNote(params)
// }
// }
},
}
</script>
<style lang="scss" scoped>
::v-deep .el-dialog__body {
border-top: none;
text-align: center;
.tips {
font-size: 16px;
}
.tips {
font-size: 16px;
}
.p-24 {
padding: 0 24px;
......@@ -382,6 +545,8 @@ export default {
}
#audit-detail {
display: flex;
flex-direction: column;
// padding: 22px 24px;
.audit-detail_header {
height: 65px;
......@@ -390,11 +555,13 @@ export default {
display: flex;
justify-content: space-between;
.right {
display: flex;
align-items: center;
.btn {
margin-top: 0px;
width: 80px;
height: 32px;
border-radius: 4px;
margin-top: 0px;
}
}
}
......@@ -405,7 +572,7 @@ export default {
font-size: 14px;
font-family: AlibabaPuHuiTiM;
color: #333333;
box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.1);
// box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1);
border-top: 1px solid rgba(0, 0, 0, 0.1);
display: flex;
.btn_group {
......@@ -425,7 +592,7 @@ export default {
line-height: 26px;
}
.content {
margin: 28px 23px;
margin: 58px;
.pass {
font-size: 18px;
font-family: AlibabaPuHuiTiM;
......@@ -436,7 +603,8 @@ export default {
.btn {
margin-top: 20px;
.el-button {
// width: 100px;
min-width: 100px;
border-radius: 5px;
height: 32px;
}
}
......@@ -457,59 +625,75 @@ export default {
margin-left: 20px;
}
.table-content {
// height: calc(100vh - 260px);
// overflow: auto;
padding-top: 20px;
padding-bottom: 20px;
}
.tag-form {
text-align: initial;
::v-deep {
.el-tag {
margin: 0px 12px 12px 0px;
.empty {
width: 100%;
height: 15px;
background: #f6f8f9;
}
.left-back {
position: absolute;
padding: 7px 5px;
top: 10px;
font-size: 20px;
text-align: left;
cursor: pointer;
}
.labelPlace {
.labelList {
display: flex;
flex-wrap: wrap;
.listItem {
cursor: pointer;
border-color: #4e68ff;
span {
display: inline-block;
}
}
.unselect-tag {
max-width: 200px;
white-space: nowrap;
display: block;
overflow: hidden;
text-overflow: ellipsis;
padding: 8px 12px;
border: 1px solid rgba(78, 104, 255, 0.06);
background: rgba(78, 104, 255, 0.06);
border-radius: 2px;
margin: 0 12px 12px 0;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
color: #353a45;
border-color: #edf0ff;
user-select: none;
}
.active {
background: rgba(78, 104, 255, 0.1);
color: #4e68ff;
border-radius: 2px;
border: 1px solid #4e68ff;
}
}
.handle-row {
color: #4e68ff;
text-decoration: underline;
.labelEdit {
font-size: 14px;
text-align: right;
cursor: pointer;
}
}
.note-dialog {
::v-deep {
.tag-input {
.el-input__inner {
background-color: rgba(78, 104, 255, 0.06);
border-radius: 2px;
}
}
.handle-text {
line-height: 36px;
span {
cursor: pointer;
}
user-select: none;
font-family: PingFangSC-Medium, PingFang SC;
color: rgba(78, 120, 255);
text-decoration: underline;
&:active {
color: rgba(78, 50, 255);
}
}
}
.left-back {
position: absolute;
padding: 7px 5px;
top: 10px;
font-size: 22px;
text-align: left;
cursor: pointer;
}
::v-deep {
.el-dialog__headerbtn {
font-weight: bold;
font-size: 22px;
.edit_reasonList {
li {
display: flex;
margin-bottom: 16px;
.el-button {
margin-left: 12px;
font-size: 14px;
}
}
}
</style>
......@@ -88,10 +88,11 @@ export default {
this.$router.push({ path: "/followupquery", query: {} })
},
getFollowList() {
const followId = this.followId
const key = followId ? "followId" : "patientId"
getFollowList({
patientId: this.patientId,
[key]: this[key],
}).then((res) => {
// console.log(res)
if (res.code == 1) {
this.screenList = res.data || []
}
......
<template>
<div>
<FollowReview :currentRow="currentRow" titlePosition="top">
<template #button>
<el-button
style="padding: 8px 20px"
v-if="isShowEdit"
@click="handleEdit"
>修 改</el-button
>
<el-button
style="padding: 8px 20px; margin-left: 20px"
@click="$emit('back')"
>返 回</el-button
>
</template>
</FollowReview>
</div>
</template>
<script>
import FollowReview from "./components/FollowReview"
export default {
name: "FollowUpDetail",
props: {
currentRow: {},
},
components: {
FollowReview,
},
data() {
return {}
},
methods: {
handleEdit() {
const { patientId, followId } = this.currentRow
this.$router.push({
path: "/followupentry",
query: {
patientId,
followId,
model: "edit",
getData: 1,
formType: 2,
},
})
},
},
computed: {
isShowEdit() {
const { checkStatus, followBatch } = this.currentRow
return followBatch > 0 && checkStatus !== 3 && checkStatus !== 4
},
},
}
</script>
<template>
<!-- 随访审核详情 -->
<div class="follow-form">
<el-header v-if="titlePosition === 'top'">
<div class="follow-tab-top">
<el-tabs v-model="activeTab" type="card">
<el-tab-pane label="筛查" name="0"></el-tab-pane>
<el-tab-pane
v-for="(item, index) in followList"
:key="index"
:label="'第' + Number(index + 1) + '次随访数据'"
:name="String(index + 1)"
></el-tab-pane>
</el-tabs>
</div>
<div class="extra_btn">
<slot name="button"></slot>
</div>
</el-header>
<el-container>
<el-aside width="auto" v-if="titlePosition === 'left'">
<div class="follow-tab" ref="follow-tab">
<el-tabs
v-model="activeTab"
tab-position="right"
style="height: 200px"
>
<el-tab-pane label="筛查病例数据" name="0">
<template slot="label">
<div class="tab-label">筛查病例数据</div></template
>
</el-tab-pane>
<el-tab-pane
v-for="(item, index) in followList"
:key="index"
:name="String(index + 1)"
>
<template slot="label">
<div class="tab-label">
{{ "" + Number(index + 1) + "次随访数据" }}
</div></template
>
</el-tab-pane>
</el-tabs>
</div>
</el-aside>
<el-main class="transition-box" v-loading="fromLoading">
<div class="my_form">
<MyCustomForm
v-show="activeTab === '0'"
v-for="form in formTabs"
:key="form.id"
:form="form"
:patientId="currentRow.patientId"
></MyCustomForm>
<MyCustomForm
v-show="activeTab !== '0'"
v-for="form in followForms"
:key="form.id"
:form="form"
:patientId="currentRow.patientId"
:followId="followId"
></MyCustomForm>
</div>
</el-main>
<el-aside width="auto" class="transition-box">
<div class="follow-list">
<ul class="list">
<li v-for="(item, index) in screenList" :key="index">
<div class="time">{{ item.update_time || item.create_time }}</div>
<div class="time">
{{ item.update_user_name || item.create_time }}
</div>
<div class="time">{{ item.sub_title }}</div>
</li>
</ul>
</div>
</el-aside>
</el-container>
</div>
</template>
<script>
import { mapGetters } from "vuex"
import CustomForm from "@/components/FormComponents/CustomForm/index"
import MyCustomForm from "./MyCustomForm.vue"
import { getCurrentFormByType } from "@/api/coop-group.js"
import { getFollowList } from "@/api/patient"
import { getFollowRecord } from "@/api/followup"
export default {
name: "FollowReview",
components: {
CustomForm,
MyCustomForm,
},
provide() {
return {
showIndex: true,
}
},
props: {
currentRow: {},
titlePosition: {
type: String,
default: "left",
validator: function (value) {
return ["left", "top"].includes(value)
},
},
},
data() {
return {
fromLoading: false,
formTabs: [],
followForms: [],
activeTab: "0",
screenList: [],
followList: [],
}
},
computed: {
...mapGetters({
group: ["user/group"],
}),
isEmpty() {
return this.formTabs.length
},
followId() {
return (
(this.followList[this.activeTab - 1] &&
this.followList[this.activeTab - 1].followId) ||
null
)
},
},
watch: {
followId() {
this.getLogList()
},
"currentRow.patientId": {
handler(val) {
if (val) {
this.getCurrentFormByType()
this.getFollowInfo()
this.getLogList()
}
},
immediate: true,
},
},
methods: {
getLogList() {
const obj = {
patientId: this.currentRow.patientId,
followId: this.followId,
}
const key = obj.followId ? "followId" : "patientId"
getFollowList({
[key]: obj[key],
}).then((res) => {
if (res.code == 1) {
this.screenList = res.data || []
}
})
},
getCurrentFormByType(type = 1) {
this.fromLoading = true
getCurrentFormByType({
type,
groupId: this.group.groupId,
}).then((res) => {
this.fromLoading = false
if (res.code === 1) {
const list = res.data.map((item, index) => {
return {
id: item.id,
formId: item.formId,
label: item.tabName,
}
})
if (type === 2) {
this.followForms = list
} else {
this.formTabs = list
}
}
})
},
getFollowRecord() {
getFollowRecord({
patientId: this.currentRow.patientId,
patientFrom: this.$store.getters["table/selectedIndex"],
}).then((res) => {
this.followList = res.data.filter((_) => _.followBatch > 0)
const len = this.followList.length
this.activeTab = String(len)
const el = this.$refs["follow-tab"]
if (el && len > 10) {
setTimeout(() => {
el.scrollTop = (len - 10) * 60
}, 0)
}
})
},
getFollowInfo() {
const { followBatch } = this.currentRow
if (!followBatch) return
this.getCurrentFormByType(2)
this.getFollowRecord()
},
},
}
</script>
<style lang="scss" scoped>
.el-header {
display: flex;
margin-top: 20px;
padding-right: 0;
justify-content: space-between;
}
.follow-tab-top {
width: calc(100vh - 200px);
padding-left: 10px;
::v-deep {
.el-tabs--card > .el-tabs__header {
border-bottom: none;
}
.el-tabs--card > .el-tabs__header .el-tabs__nav {
border: none;
}
.el-tabs--card > .el-tabs__header .el-tabs__item {
min-width: 116px;
text-align: center;
background: #f0f1fa;
font-size: 14px;
border: none;
}
.el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
background: #4e68ff;
color: #fff;
}
}
}
.my_form {
height: calc(100vh - 280px);
overflow-y: auto;
}
.el-main {
padding: 0px 20px;
}
.extra_btn {
width: 170px;
text-align: right;
margin-top: 5px;
}
.follow-tab {
border-radius: 4px;
border: 1px solid #cccccc;
height: calc(100vh - 280px);
overflow: overlay;
::v-deep {
.tab-label {
border-bottom: 1px solid #ccc;
padding: 0 20px;
height: 52px;
line-height: 52px;
}
.el-tabs__header {
margin-left: 0px;
}
.el-tabs__nav-wrap.is-right::after {
width: 0px;
}
.el-tabs__active-bar.is-right {
width: 3px;
}
.el-tabs--right {
height: auto !important;
}
.tab-title {
padding: 16px;
background: #fafafa;
color: #333333;
border-bottom: 1px solid #cccccc;
}
.el-tabs__item {
width: 180px;
padding: 0;
background: #fafafa;
height: 52px;
line-height: 52px;
transition: all 1s;
}
.el-tabs__item.is-active {
background: transparent;
}
}
}
.follow-list {
border-radius: 4px;
border: 1px solid #cccccc;
height: 100%;
background: #fafafa;
height: calc(100vh - 280px);
overflow-y: overlay;
li {
padding: 18px 22px;
border-bottom: 1px solid #ccc;
// cursor: pointer;
.time {
font-size: 14px;
margin-bottom: 8px;
font-family: AlibabaPuHuiTiR;
text-align: left;
&:first-child {
color: #4e68ff;
}
}
}
}
</style>
<template>
<div>
<el-skeleton v-if="isEmpty" animated />
<custom-form
v-if="!isEmpty"
class="mb-20"
v-loading="pageLoading"
ref="form"
:options="widgetFormPreview"
:form-edit="formEdit"
></custom-form>
</div>
</template>
<script>
import { getPatientDetail, getFollowDetail } from "@/api/patient.js"
import { getFormDetail } from "@/api/field"
import CustomForm from "@/components/FormComponents/CustomForm/index"
export default {
name: "MyCustomForm",
components: { CustomForm },
props: {
form: {},
patientId: {},
followId: {},
},
data() {
return {
widgetFormPreview: {},
loading: false,
formLoading: false,
formEdit: {},
formRecordId: null,
}
},
computed: {
isEmpty() {
return !(Object.keys(this.widgetFormPreview) || this.widgetFormPreview)
.length
},
getTabFollowId() {
return this.tabFollowId()
},
pageLoading() {
return this.loading || this.formLoading
},
},
watch: {
followId: {
handler() {
this.getFollowDetail()
},
immediate: true,
},
},
created() {
this.initData()
this.initForm()
},
methods: {
initData() {
this.getPatientDetail()
},
initForm() {
this.formLoading = true
getFormDetail(this.form.formId)
.then((res) => {
if (res.code === 1 && res.data) {
const formJson = res.data.formJson
this.$emit("setFormJson", formJson)
const obj = eval("(" + formJson + ")")
obj.disabled = true
obj.closeBtn = true
obj.detail = true
this.widgetFormPreview = obj
}
})
.finally(() => {
this.formLoading = false
})
},
getFollowDetail() {
// 随访数据查询
if (!this.followId) return
this.$nextTick(() => {
this.$refs.form && this.$refs.form.resetForm()
})
this.loading = true
getFollowDetail({
followId: this.followId,
formId: this.form.formId,
})
.then((res) => {
this.formatData(res)
})
.finally(() => {
this.loading = false
})
},
getPatientDetail() {
// 筛查数据查询
this.$nextTick(() => {
this.$refs.form && this.$refs.form.resetForm()
})
if (!this.patientId || this.followId) return
this.loading = true
getPatientDetail({
patientId: this.patientId,
formId: this.form.formId,
})
.then((res) => {
this.formatData(res)
})
.finally(() => {
this.loading = false
})
},
formatData(res, cache) {
const d = res.data || {}
const form = d.data || {}
for (const key in form) {
Object.prototype.toString.call(form[key]) == "[object Number]"
? (form[key] = String(form[key]))
: ""
}
this.formEdit = form
},
},
}
</script>
<style scoped lang="scss">
.el-main {
position: relative;
padding: 0;
// box-shadow: 0px 5px 4px red;
.arrow {
position: absolute;
right: 0;
top: 0;
cursor: pointer;
font-size: 22px;
z-index: 9;
}
.header {
height: 5px;
box-shadow: 0px 3px 4px rgb(0 21 41 / 8%);
padding-right: 20px;
position: relative;
font-size: 15px;
z-index: 999;
}
}
.el-aside {
padding-left: 10px;
border-left: 1px solid #ccc;
.side-content {
height: calc(100vh - #{"272px"});
// overflow: auto;
}
}
.my-form {
// height: calc(100vh - #{"310px"});
overflow-y: auto;
padding-top: 20px;
// position: relative;
&::-webkit-scrollbar-thumb {
background-color: #fff;
}
&:hover::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.4);
}
&.no-scroll {
height: auto;
}
}
.label {
font-size: 14px;
color: #8492a6;
line-height: 38px;
float: left;
margin-right: 20px;
}
.value {
font-size: 14px;
line-height: 38px;
float: left;
font-weight: 600;
margin-right: 50px;
}
.el-slider {
float: left;
width: 150px;
}
</style>
<template>
<!-- 随访查询 -->
<div class="screeningSearch">
<div class="top">
<form-components
ref="form"
:forms="formList"
:form-edit="formEdit"
@handleSearch="onSearch"
></form-components>
</div>
<div class="bot">
<el-table-self
ref="table"
:table-data="tableData"
:columns="columns"
:header-class="'newHeader'"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
/>
<div v-show="!isDetail">
<div class="top">
<form-components
ref="form"
:forms="formList"
:form-edit="formEdit"
@handleSearch="onSearch"
></form-components>
</div>
<div class="bot">
<el-table-self
ref="table"
:table-data="tableData"
:columns="columns"
:header-class="'newHeader'"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
/>
</div>
</div>
<FollowUpDetail
:currentRow="currentRow"
v-if="isDetail"
@back="back"
></FollowUpDetail>
</div>
</template>
<script>
import FormComponents from "@/components/FormComponents"
import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin"
import searchMixin from "../searchMixin"
import { getCurrentFormByType } from "@/api/coop-group.js"
import { getFollowSearch } from "@/api/followup"
import { getDictDetail } from "@/api/dict.js"
import FollowUpDetail from "./FollowUpDetail.vue"
export default {
components: {
FormComponents,
// CustomsTable,
FollowUpDetail,
},
mixins: [paginationMixin, searchMixin],
data() {
return {
isDetail: false,
followId: "",
listLoading: false,
keyword: "",
......@@ -98,6 +105,17 @@ export default {
return row.screeningTime ? row.screeningTime : "--"
},
},
{
label: "审核状态",
value: "checkStatus",
minWidth: 120,
formatter: (row) => {
return this.$handle.formatDicList(
this.dictMap["checkStatus"],
String(row.checkStatus)
)
},
},
{
label: "风险评估结果",
minWidth: 120,
......@@ -138,34 +156,29 @@ export default {
operations: [
{
isIndex: true,
func: this.rowOpration,
func: this.handleDetail,
formatter(row) {
return {
label: "",
label: "",
type: "text",
}
},
},
// {
// isIndex: true,
// func: this.handleEdit,
// formatter(row) {
// if (row.checkStatus != 3 && row.checkStatus != 4) {
// return {
// label: "修改",
// type: "text",
// }
// } else {
// return {
// label: "",
// type: "text",
// style: {
// display: "none",
// },
// }
// }
// },
// },
{
isIndex: true,
func: this.handleEdit,
formatter(row) {
return {
label: "修改",
type: "text",
}
},
isHidden({ checkStatus, followBatch }) {
return (
checkStatus === 3 || checkStatus === 4 || followBatch === 0
)
},
},
],
},
],
......@@ -252,6 +265,7 @@ export default {
},
],
formEdit: {},
currentRow: {},
}
},
watch: {
......@@ -262,28 +276,15 @@ export default {
pageIndex(val) {
sessionStorage.setItem("followQuery-pageIndex", val)
},
followId(v) {
if (v) {
this.listLoading = true
this.$nextTick(() => {
setTimeout(() => {
this.listLoading = false
let query = { ...this.$route.query }
this.$router.replace({ query: {} })
this.$router.push({
path: "/followupentry",
query: query,
})
}, 500)
})
}
},
},
created() {
this.initSearchForm()
},
mounted() {
this.followId = this.$route.query.followId
const followId = this.$route.query.followId
if (followId) {
this.handleDetail({ ...this.$route.query })
}
// this.formEdit = sessionStorage.getItem('followQuery-form') ? JSON.parse(sessionStorage.getItem('followQuery-form')) : {}
this.pageSize = Number(sessionStorage.getItem("followQuery-pageSize")) || 10
this.pageIndex =
......@@ -291,6 +292,13 @@ export default {
this.getCurrentFormByType(2)
},
methods: {
back() {
this.isDetail = false
const followId = this.$route.query.followId
if (followId) {
this.$router.replace({ path: "/followupquery", query: {} })
}
},
changeModified() {
this.modifiedFlag = !this.modifiedFlag
},
......@@ -310,35 +318,13 @@ export default {
followId: data.id,
model: "edit",
getData: 1,
formType: 2,
},
})
},
rowOpration(data, i, index) {
console.log(data)
if (data.followBatch == 0) {
// 筛查
this.$router.push({
path: "/followupentry",
query: {
patientId: data.patientId,
followId: data.id,
model: "view",
getData: 1,
formType: 1, // 去筛查的表单还是随访的表单
},
})
} else {
this.$router.push({
path: "/followupentry",
query: {
patientId: data.patientId,
followId: data.id,
model: "view",
getData: 1,
formType: 2,
},
})
}
handleDetail(row) {
this.isDetail = true
this.currentRow = row
},
onSearch(form) {
console.log(form)
......@@ -352,7 +338,6 @@ export default {
},
async handleSearch() {
this.listLoading = true
console.log(this.$refs.form.form)
let params = {
pageSize: this.pageSize,
......
......@@ -95,6 +95,7 @@ export default {
return row.screeningTime ? row.screeningTime : "--"
},
},
{
label: "风险评估结果",
minWidth: 120,
......@@ -275,7 +276,6 @@ export default {
},
changePage(v) {
this.page[v.type] = v.value
console.log(this.page)
this.$refs.customTable.loading = false
},
onSearch(form) {
......@@ -285,7 +285,6 @@ export default {
this.handleSearch()
},
rowOpration(data, i) {
console.log("跳转", data, i)
sessionStorage.setItem("formEdit", JSON.stringify(data))
this.$router.push({
path: `/followupentry`,
......
......@@ -393,8 +393,7 @@ export default {
query: {
patientId: this.patientId,
followId: this.followId || this.tabFollowId,
model: "view",
getData: 1,
followBatch: 1,
},
})
this.$refs.followDialog.dialogVisible = false
......
......@@ -306,8 +306,9 @@ export default {
params.statusMap.is_draft = this.isDraft
}
// 处理followId 针对随访查询的列表数据的查询和修改操作
if (this.$route.path == "/followupentry" && this.activeName != "index0") {
if (this.$route.path == "/followupentry") {
params.followId = this.followId || this.getTabFollowId
params.formRecordId = this.formData.formRecordId
}
this.$emit("handleConfirm", params, done, (res) => {
// 多次填写的表单新增时,获取最新数据
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment