Commit e7cc4f5a authored by miaojiale's avatar miaojiale

Merge branch 'dev' into dev_Miaojiale

No related merge requests found
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,
})
}
src/assets/img/Home/download.png

604 Bytes

src/assets/img/Home/file.png

507 Bytes

src/assets/img/Home/trustee.png

260 KB

......@@ -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: {
......
This diff is collapsed.
<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 {
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>
This diff is collapsed.
......@@ -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