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 = {}) { ...@@ -10,7 +10,7 @@ export function getFollowSearch(params = {}) {
url: "/disease-data/follow/search", url: "/disease-data/follow/search",
method: "get", method: "get",
params, params,
}); })
} }
//随访调查 列表 //随访调查 列表
export function getFollowSurvey(params = {}) { export function getFollowSurvey(params = {}) {
...@@ -18,7 +18,7 @@ export function getFollowSurvey(params = {}) { ...@@ -18,7 +18,7 @@ export function getFollowSurvey(params = {}) {
url: "/disease-data/follow/survey", url: "/disease-data/follow/survey",
method: "get", method: "get",
params, params,
}); })
} }
///////////////审核质控///////////////////// ///////////////审核质控/////////////////////
//随访已审核列表 //随访已审核列表
...@@ -27,7 +27,7 @@ export function getFollowCheck(params = {}) { ...@@ -27,7 +27,7 @@ export function getFollowCheck(params = {}) {
url: "/disease-data/dataCheck/follow/check", url: "/disease-data/dataCheck/follow/check",
method: "get", method: "get",
params, params,
}); })
} }
//随访待审核列表 //随访待审核列表
export function getFollowUncheck(params = {}) { export function getFollowUncheck(params = {}) {
...@@ -35,19 +35,19 @@ export function getFollowUncheck(params = {}) { ...@@ -35,19 +35,19 @@ export function getFollowUncheck(params = {}) {
url: "/disease-data/dataCheck/follow/unCheck", url: "/disease-data/dataCheck/follow/unCheck",
method: "get", method: "get",
params, params,
}); })
} }
//随访病例待审核(详情数据) //随访病例待审核(详情数据)
export function getFollowUnCheckDetail(id) { export function getFollowUnCheckDetail(id) {
return request({ return request({
url: `/disease-data/dataCheck/follow/unCheck/detail/${id}`, url: `/disease-data/dataCheck/follow/unCheck/detail/${id}`,
method: "get", method: "get",
}); })
} }
//随访病例审核 //随访病例审核
export function putFollowCheck(data = {}) { export function putFollowCheck(data = {}) {
return request({ return request({
url: "/disease-data/dataCheck/follow/check", url: "/disease-data/dataCheck/follow/uncheck",
method: "put", method: "put",
data, data,
}) })
...@@ -60,3 +60,12 @@ export function putFollowCheckAdvice(data = {}) { ...@@ -60,3 +60,12 @@ export function putFollowCheckAdvice(data = {}) {
data, data,
}) })
} }
// 随访查询详情list
export function getFollowRecord(params = {}) {
return request({
url: "/disease-data/follow/search/detail",
method: "get",
params,
})
}
...@@ -76,7 +76,8 @@ export default { ...@@ -76,7 +76,8 @@ export default {
}, },
methods: { methods: {
handleUnionName(v) { 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: { filters: {
......
<template> <template>
<div id="con"> <div id="con">
<Notice v-show="isNotice"></Notice>
<div v-show="!isNotice">
<div class="top flex"> <div class="top flex">
<div class="left box"> <div class="left box">
<video :src="videoSrc" controls class="video" /> <video :src="videoSrc" controls class="video" />
...@@ -24,9 +26,7 @@ ...@@ -24,9 +26,7 @@
<div class="circle"></div> <div class="circle"></div>
{{ item.articleTitle }} {{ item.articleTitle }}
</div> </div>
<div class="right"> <div class="right">{{ item.createTime }}11</div>
{{ item.createTime }}
</div>
</li> </li>
</ul> </ul>
</el-tab-pane> </el-tab-pane>
...@@ -49,7 +49,11 @@ ...@@ -49,7 +49,11 @@
:label="e.title" :label="e.title"
:name="e.title" :name="e.title"
> >
<ul class="tabslist" style="height: 380px" :loading="listLoading"> <ul
class="tabslist"
style="height: 380px"
:loading="listLoading"
>
<li <li
v-for="(item, index) in exampleList" v-for="(item, index) in exampleList"
:key="index" :key="index"
...@@ -100,7 +104,9 @@ ...@@ -100,7 +104,9 @@
</div> </div>
<div class="range"> <div class="range">
<div class="text-center"> <div class="text-center">
<span class="range_title text-center">近90天上报量机构排名</span> <span class="range_title text-center"
>近90天上报量机构排名</span
>
</div> </div>
<div class="rangecontent"> <div class="rangecontent">
...@@ -199,6 +205,8 @@ ...@@ -199,6 +205,8 @@
</el-popover> </el-popover>
</ul> </ul>
</div> </div>
</div>
<!-- 弹窗 --> <!-- 弹窗 -->
<pdf-dialog <pdf-dialog
ref="pdfDialog" ref="pdfDialog"
...@@ -212,10 +220,12 @@ import { getRankTotal, getCurrentQuarter } from "@/api/Home" ...@@ -212,10 +220,12 @@ import { getRankTotal, getCurrentQuarter } from "@/api/Home"
import { articleList } from "@/api/operation-management" import { articleList } from "@/api/operation-management"
import Map from "./Map" import Map from "./Map"
import PdfDialog from "./PdfDialog/index.vue" import PdfDialog from "./PdfDialog/index.vue"
import Notice from "./notice/index.vue"
export default { export default {
components: { Map, PdfDialog }, components: { Map, PdfDialog, Notice },
data() { data() {
return { return {
isNotice: false,
curPdf: {}, curPdf: {},
pdfSrc: "", pdfSrc: "",
fixIndex: -1, fixIndex: -1,
...@@ -311,6 +321,10 @@ export default { ...@@ -311,6 +321,10 @@ export default {
}, },
methods: { methods: {
setPdf(item) { setPdf(item) {
if (item.moduleType === 2) {
this.isNotice = true
return
}
this.$refs.pdfDialog.showPdf = true this.$refs.pdfDialog.showPdf = true
this.curPdf = item this.curPdf = item
this.pdfSrc = 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>
This diff is collapsed.
<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 { ...@@ -227,8 +227,12 @@ export default {
this.$router.push({ this.$router.push({
path: "/followaudit", path: "/followaudit",
query: { query: {
id: data["id"],
unionId: data["unionId"], unionId: data["unionId"],
unionName: data["unionName"], unionName: data["unionName"],
patientId: data.patientId,
checkStatus: data["checkStatus"],
checkNote: data["checkNote"],
}, },
}) })
} else { } else {
......
<template> <template>
<div> <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="content"></slot>
<slot name="footer"></slot> <slot name="footer"></slot>
</el-dialog> </el-dialog>
...@@ -24,4 +30,9 @@ export default { ...@@ -24,4 +30,9 @@ export default {
}, },
} }
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped>
::v-deep .el-dialog__body {
border-top: none;
text-align: center;
}
</style>
This diff is collapsed.
...@@ -88,10 +88,11 @@ export default { ...@@ -88,10 +88,11 @@ export default {
this.$router.push({ path: "/followupquery", query: {} }) this.$router.push({ path: "/followupquery", query: {} })
}, },
getFollowList() { getFollowList() {
const followId = this.followId
const key = followId ? "followId" : "patientId"
getFollowList({ getFollowList({
patientId: this.patientId, [key]: this[key],
}).then((res) => { }).then((res) => {
// console.log(res)
if (res.code == 1) { if (res.code == 1) {
this.screenList = res.data || [] 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> <template>
<!-- 随访查询 --> <!-- 随访查询 -->
<div class="screeningSearch"> <div class="screeningSearch">
<div v-show="!isDetail">
<div class="top"> <div class="top">
<form-components <form-components
ref="form" ref="form"
...@@ -25,23 +26,29 @@ ...@@ -25,23 +26,29 @@
/> />
</div> </div>
</div> </div>
<FollowUpDetail
:currentRow="currentRow"
v-if="isDetail"
@back="back"
></FollowUpDetail>
</div>
</template> </template>
<script> <script>
import FormComponents from "@/components/FormComponents" import FormComponents from "@/components/FormComponents"
import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin" import paginationMixin from "@/components/TabComponents/mixin"
import searchMixin from "../searchMixin" import searchMixin from "../searchMixin"
import { getCurrentFormByType } from "@/api/coop-group.js" import { getCurrentFormByType } from "@/api/coop-group.js"
import { getFollowSearch } from "@/api/followup" import { getFollowSearch } from "@/api/followup"
import { getDictDetail } from "@/api/dict.js" import FollowUpDetail from "./FollowUpDetail.vue"
export default { export default {
components: { components: {
FormComponents, FormComponents,
// CustomsTable, FollowUpDetail,
}, },
mixins: [paginationMixin, searchMixin], mixins: [paginationMixin, searchMixin],
data() { data() {
return { return {
isDetail: false,
followId: "", followId: "",
listLoading: false, listLoading: false,
keyword: "", keyword: "",
...@@ -98,6 +105,17 @@ export default { ...@@ -98,6 +105,17 @@ export default {
return row.screeningTime ? row.screeningTime : "--" return row.screeningTime ? row.screeningTime : "--"
}, },
}, },
{
label: "审核状态",
value: "checkStatus",
minWidth: 120,
formatter: (row) => {
return this.$handle.formatDicList(
this.dictMap["checkStatus"],
String(row.checkStatus)
)
},
},
{ {
label: "风险评估结果", label: "风险评估结果",
minWidth: 120, minWidth: 120,
...@@ -138,34 +156,29 @@ export default { ...@@ -138,34 +156,29 @@ export default {
operations: [ operations: [
{ {
isIndex: true, isIndex: true,
func: this.rowOpration, func: this.handleDetail,
formatter(row) { formatter(row) {
return { return {
label: "", label: "",
type: "text", type: "text",
} }
}, },
}, },
// { {
// isIndex: true, isIndex: true,
// func: this.handleEdit, func: this.handleEdit,
// formatter(row) { formatter(row) {
// if (row.checkStatus != 3 && row.checkStatus != 4) { return {
// return { label: "修改",
// label: "修改", type: "text",
// type: "text", }
// } },
// } else { isHidden({ checkStatus, followBatch }) {
// return { return (
// label: "", checkStatus === 3 || checkStatus === 4 || followBatch === 0
// type: "text", )
// style: { },
// display: "none", },
// },
// }
// }
// },
// },
], ],
}, },
], ],
...@@ -252,6 +265,7 @@ export default { ...@@ -252,6 +265,7 @@ export default {
}, },
], ],
formEdit: {}, formEdit: {},
currentRow: {},
} }
}, },
watch: { watch: {
...@@ -262,28 +276,15 @@ export default { ...@@ -262,28 +276,15 @@ export default {
pageIndex(val) { pageIndex(val) {
sessionStorage.setItem("followQuery-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() { created() {
this.initSearchForm() this.initSearchForm()
}, },
mounted() { 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.formEdit = sessionStorage.getItem('followQuery-form') ? JSON.parse(sessionStorage.getItem('followQuery-form')) : {}
this.pageSize = Number(sessionStorage.getItem("followQuery-pageSize")) || 10 this.pageSize = Number(sessionStorage.getItem("followQuery-pageSize")) || 10
this.pageIndex = this.pageIndex =
...@@ -291,6 +292,13 @@ export default { ...@@ -291,6 +292,13 @@ export default {
this.getCurrentFormByType(2) this.getCurrentFormByType(2)
}, },
methods: { methods: {
back() {
this.isDetail = false
const followId = this.$route.query.followId
if (followId) {
this.$router.replace({ path: "/followupquery", query: {} })
}
},
changeModified() { changeModified() {
this.modifiedFlag = !this.modifiedFlag this.modifiedFlag = !this.modifiedFlag
}, },
...@@ -310,35 +318,13 @@ export default { ...@@ -310,35 +318,13 @@ export default {
followId: data.id, followId: data.id,
model: "edit", model: "edit",
getData: 1, getData: 1,
},
})
},
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, formType: 2,
}, },
}) })
} },
handleDetail(row) {
this.isDetail = true
this.currentRow = row
}, },
onSearch(form) { onSearch(form) {
console.log(form) console.log(form)
...@@ -352,7 +338,6 @@ export default { ...@@ -352,7 +338,6 @@ export default {
}, },
async handleSearch() { async handleSearch() {
this.listLoading = true this.listLoading = true
console.log(this.$refs.form.form)
let params = { let params = {
pageSize: this.pageSize, pageSize: this.pageSize,
......
...@@ -95,6 +95,7 @@ export default { ...@@ -95,6 +95,7 @@ export default {
return row.screeningTime ? row.screeningTime : "--" return row.screeningTime ? row.screeningTime : "--"
}, },
}, },
{ {
label: "风险评估结果", label: "风险评估结果",
minWidth: 120, minWidth: 120,
...@@ -275,7 +276,6 @@ export default { ...@@ -275,7 +276,6 @@ export default {
}, },
changePage(v) { changePage(v) {
this.page[v.type] = v.value this.page[v.type] = v.value
console.log(this.page)
this.$refs.customTable.loading = false this.$refs.customTable.loading = false
}, },
onSearch(form) { onSearch(form) {
...@@ -285,7 +285,6 @@ export default { ...@@ -285,7 +285,6 @@ export default {
this.handleSearch() this.handleSearch()
}, },
rowOpration(data, i) { rowOpration(data, i) {
console.log("跳转", data, i)
sessionStorage.setItem("formEdit", JSON.stringify(data)) sessionStorage.setItem("formEdit", JSON.stringify(data))
this.$router.push({ this.$router.push({
path: `/followupentry`, path: `/followupentry`,
......
...@@ -393,8 +393,7 @@ export default { ...@@ -393,8 +393,7 @@ export default {
query: { query: {
patientId: this.patientId, patientId: this.patientId,
followId: this.followId || this.tabFollowId, followId: this.followId || this.tabFollowId,
model: "view", followBatch: 1,
getData: 1,
}, },
}) })
this.$refs.followDialog.dialogVisible = false this.$refs.followDialog.dialogVisible = false
......
...@@ -306,8 +306,9 @@ export default { ...@@ -306,8 +306,9 @@ export default {
params.statusMap.is_draft = this.isDraft params.statusMap.is_draft = this.isDraft
} }
// 处理followId 针对随访查询的列表数据的查询和修改操作 // 处理followId 针对随访查询的列表数据的查询和修改操作
if (this.$route.path == "/followupentry" && this.activeName != "index0") { if (this.$route.path == "/followupentry") {
params.followId = this.followId || this.getTabFollowId params.followId = this.followId || this.getTabFollowId
params.formRecordId = this.formData.formRecordId
} }
this.$emit("handleConfirm", params, done, (res) => { 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