Commit 695590b1 authored by miaojiale's avatar miaojiale

①formItemSelf.vue :数组的inlcudes方法强校验,处理返回数据不规范导致的数据回显问题。

②审核合格接口联调
③首页列表接口
④审核不合格标签组接口
parent 4198bb1c
......@@ -29,15 +29,31 @@ export function getScreeningUser(id) {
method: "get",
})
}
// //随访病例审核
// export function putFollowCheck(data = {}) {
// return request({
// url: "/disease-data/dataCheck/follow/check",
// method: "put",
// data,
// })
// }
// //修改随访审核意见
//筛查病例审核
export function putScreeningCheck(data = {}) {
return request({
url: "/disease-data/dataCheck/screening/uncheck",
method: "put",
data,
})
}
// 获取意见标签
export function getSysCheckNote() {
return request({
url: "/disease-data/sysCheckNote",
method: "get",
})
}
// 删除意见标签
export function saveSysCheckNote(data = {}) {
return request({
url: "/disease-data/sysCheckNote",
method: "post",
data,
})
}
// //修改筛查病例审核意见
// export function putFollowCheckAdvice(data = {}) {
// return request({
// url: "/disease-data/dataCheck/follow/check/advice",
......
......@@ -723,16 +723,18 @@ export default {
if (!targetItem) {
// !没有在表单子组件中找到,查找大表单id
targetItem = group.find((_) => _.prop === key)
console.log(targetItem)
}
if (!targetItem) return
const values = dyMap[key]
let display = false
const values = dyMap[key]
if (Array.isArray(val)) {
display = values.filter((v) => val.includes(v)).length > 0
} else {
display = values.includes(val)
display = values.includes(val + "")
}
//! 胃上皮瘤变(高级别)胃癌和进展性胃癌控制显隐+自定义规则
if (
prop == "early_gastric_cancer" ||
......@@ -785,7 +787,7 @@ export default {
this.$set(this.form, "$_hidden" + targetItem.prop, !display)
}, 200)
} else {
// ! 设置每个表单中每项显隐的rules
// ! 设置每个表单中每项的rules
if (!filterArr.includes(targetItem.prop)) {
if (targetItem.rules && Boolean(display)) {
......@@ -809,12 +811,12 @@ export default {
}
}
// !设置大表单里的每个小表单显隐rules
// !设置大表单里的每个小表单rules
if (targetItem.prop == "1669874397313_56690") {
console.log(display)
// !只能写死,当前情况下,定义一个字段用来缓存是否回显,根据val
// if (val == 0) {
// this.showChildren = false
targetItem.column.forEach((e, index) => {
// 去除esd报告
if (e.prop == "esd_path") {
......
......@@ -177,7 +177,7 @@ export default {
watch: {
formEdit: {
handler() {
console.log("configforms:", this.formEdit)
// console.log("configforms:", this.formEdit)
this.initfields(this.formEdit)
},
},
......
......@@ -6,21 +6,21 @@
</div>
<!-- 新闻会议tab -->
<div class="right box tabbox videoboxs">
<el-tabs v-model="curTab">
<el-tabs v-model="curTab" @tab-click="handleClick">
<el-tab-pane
v-for="(e, index) in tabList"
:key="index"
:label="e.title"
:name="e.title"
:name="index + 1 + ''"
>
<ul class="tabslist">
<li v-for="(item, index) in noticeList" :key="index">
<div class="left">
<div class="circle"></div>
{{ item.title }}
{{ item.articleTitle }}
</div>
<div class="right">
{{ item.date }}
{{ item.createTime }}
</div>
</li>
</ul>
......@@ -43,7 +43,7 @@
:label="e.title"
:name="e.title"
>
<ul class="tabslist" style="height: 380px">
<ul class="tabslist" style="height: 380px" :loading="listLoading">
<li v-for="(item, index) in exampleList" :key="index">
<div class="left">
<div class="circle"></div>
......@@ -192,6 +192,7 @@
</template>
<script>
import { getRankTotal, getCurrentQuarter } from "@/api/Home"
import { articleList } from "@/api/operation-management"
export default {
data() {
return {
......@@ -245,30 +246,6 @@ export default {
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
{
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
{
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
{
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
{
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
{
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
{
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
],
tabList: [
{
......@@ -322,12 +299,9 @@ export default {
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
{
title: "典型案例小标题典型案例小标题",
date: "2022-09-26",
},
],
curTab: "新闻会议",
curTab: "1",
listLoading: false,
rangeList: [], // 上报排名
curQuarterList: [], //当前季度排名
typeList: [
......@@ -373,6 +347,9 @@ export default {
showFixed: false,
}
},
created() {
this.getArticleList("1")
},
mounted() {
this.getRankTotal()
this.getCurrentQuarter()
......@@ -392,6 +369,29 @@ export default {
})
},
methods: {
handleClick() {
this.getArticleList(this.curTab)
},
// 获取新闻会议tab的数据
getArticleList(moduleType) {
this.listLoading = true
let params = {
size: 10,
current: 1,
moduleType: moduleType,
}
articleList(params)
.then((res) => {
if (res.code == 1) {
if (["1", "2", "3"].includes(moduleType)) {
this.noticeList = [...res.data.records]
}
}
})
.catch((e) => {
this.listLoading = false
})
},
getRankTotal() {
getRankTotal().then((res) => {
if (res.code == 1) {
......@@ -421,9 +421,11 @@ export default {
height: 100%;
// background: blue;
background: #fff;
.video {
width: 100%;
height: 400px;
border-radius: 5px;
height: 420px;
object-fit: fill;
}
}
......@@ -432,12 +434,15 @@ export default {
border-radius: 8px;
overflow: hidden;
.tabslist {
height: 332px;
height: 352px;
padding-right: 8px;
overflow: hidden;
&:hover {
overflow: overlay;
}
display: flex;
flex-direction: column;
justify-content: space-between;
// &:hover {
// overflow: overlay;
// }
li {
display: flex;
......
......@@ -3,8 +3,8 @@
<div>
<el-container v-loading="fromLoading">
<el-main class="transition-box">
<el-empty v-if="!isEmpty" description="暂无数据"></el-empty>
<template v-if="isEmpty">
<el-empty v-if="!isEmpty && noData" description="暂无数据"></el-empty>
<template v-if="isEmpty && !noData">
<div ref="my-form" class="my-form">
<template v-for="(item, index) in jsonList">
<custom-form
......@@ -42,13 +42,16 @@ import CustomForm from "@/components/FormComponents/CustomForm/index"
import { getCurrentFormByType } from "@/api/coop-group.js"
import { getFormDetail } from "@/api/field"
import { getPatientDetail } from "@/api/patient.js"
import { getScreeningUser } from "@/api/screeningAudit"
export default {
nameL: "组件",
components: { CustomForm },
props: {
patientId: String,
noData: Boolean,
},
data() {
return {
fromLoading: true,
fromLoading: false,
formTabs: [],
formTabsList: [],
jsonList: [],
......@@ -79,22 +82,14 @@ export default {
return this.asideShow ? "200px" : "0px"
},
},
watch: {},
created() {
watch: {
patientId(v) {
this.getCurrentFormByType()
let id = this.$route.query.id
this.getUser(id)
},
},
created() {},
mounted() {},
methods: {
// 获取当前用户
getUser(id) {
getScreeningUser(id).then((res) => {
if (res.code == 1) {
this.patientId = res.data[0].patientId
}
})
},
// 获取当前用户的表单
getPatientDetail() {
console.log(this.formTabs)
......@@ -122,11 +117,11 @@ export default {
const formTabs = []
this.formTabsList = res.data.map((item, index) => {
if (index === 0) {
formTabs.push({
silent: false,
...item,
label: item.tabName,
})
// formTabs.push({
// silent: false,
// ...item,
// label: item.tabName,
// })
} else {
formTabs.push({
id: item.id,
......
......@@ -3,8 +3,10 @@
<div class="top">
<div class="audit-detail_header p-24">
<div class="left">
<span>当前审核</span>
<span class="f-b">【无锡市人民医院医联体】【剩余7】</span>
<span v-if="!isEmpty">当前审核</span>
<span v-if="!isEmpty" class="f-b"
>{{ curUnion }}】【剩余{{ auditNum }}</span
>
</div>
<div class="right">
<el-button class="btn" @click="$router.go(-1)">返回</el-button>
......@@ -12,9 +14,13 @@
</div>
</div>
<div class="table-content p-24">
<component :is="curComponent"></component>
<component
:is="curComponent"
:patient-id="patientId"
:no-data="isEmpty"
></component>
</div>
<div class="choose-handle p-24">
<div v-if="!isEmpty" class="choose-handle p-24">
<span v-if="!editStatus">请选择审核结果:</span>
<div class="btn_group">
<el-button
......@@ -51,9 +57,14 @@
</div>
</template>
</public-dialog>
<public-dialog ref="publicDialog" @onSubmit="onSubmit" @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>
......@@ -69,10 +80,10 @@
>
<el-form-item
:label="curBtn == 2 ? '不合格原因' : '驳回修改建议'"
prop="reson"
prop="reason"
>
<el-input
v-model="form.reson"
v-model="form.reason"
type="textarea"
:placeholder="
curBtn == 2 ? '请填写不合格原因' : '请填写驳回修改建议'
......@@ -80,11 +91,93 @@
></el-input>
</el-form-item>
</el-form>
<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"
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
>
</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>
......@@ -98,14 +191,16 @@
<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" @click="nextExample">下一例</el-button>
<el-button type="primary" @click="nextExample"
>确认并进入下一列审核</el-button
>
</div>
</template>
</public-dialog>
......@@ -114,16 +209,31 @@
<script>
import publicDialog from "./components/publicDialog.vue"
import screenReview from "./components/screenReview.vue"
import {
getScreeningUser,
putScreeningCheck,
saveSysCheckNote,
getSysCheckNote,
} from "@/api/screeningAudit"
export default {
components: { publicDialog, screenReview },
data() {
return {
isEmpty: false,
editLabelFlag: false,
auditNum: 0,
editStatus: false, //进入的状态是第一次审核还是修改审核,false为第一次,true为修改
form: {},
form: {
reason: "",
},
patientId: "", // 当前人的patientId
curUnion: "", // 当前医联体
id: "",
rules: {
reson: [{ required: true, message: "请填写", trigger: "blur" }],
reason: [{ required: true, message: "请填写", trigger: "blur" }],
},
reasonList: [],
selectedReason: [],
btnGroup: [
{
text: "合格",
......@@ -144,51 +254,144 @@ export default {
confirmStatus: false,
}
},
computed: {
showClose() {
return this.curBtn == 1 ? false : true
},
},
watch: {},
mounted() {},
created() {
let id = this.$route.query.id
this.getUser(id)
},
mounted() {
// this.$refs.publicDialog.dialogVisible = true
},
methods: {
// 获取标签
getSysCheckNote() {
getSysCheckNote().then((res) => {
if (res.code == 1) {
let { data } = res
if (data && data.length > 0) {
console.log(data)
this.reasonList = data
} else {
this.reasonList = [{ note: "" }]
}
}
})
},
// 编辑标签
editLabel() {
this.editLabelFlag = true
},
// 提交接口
putScreeningCheck(checkStatus, func) {
let params = {
id: this.id,
checkStatus: checkStatus,
checkNote: this.form.reason,
patientId: this.patientId,
}
putScreeningCheck(params).then((res) => {
if (res.code == 1 && res.data) {
func()
// this.confirmStatus = true
this.$refs.publicDialog.dialogVisible = true
}
})
},
// 设置理由
setReason({ note }) {
if (this.selectedReason.includes(note)) {
this.selectedReason = this.selectedReason.filter((e) => e != note)
} else {
this.selectedReason.push(note)
}
// console.log("点击标签设置原因", reason)
this.form.reason = this.selectedReason.join("")
},
// 获取当前用户
getUser(id, func) {
getScreeningUser(id)
.then((res) => {
if (res.code == 1 && res.data.detail) {
this.patientId = res.data.detail.patientId
this.curUnion = res.data.detail.unionName
this.id = res.data.detail.id
this.auditNum = res.data.nums
this.isEmpty = false
} else {
this.isEmpty = true
}
})
.finally(() => {
if (func) {
func()
}
})
},
//! checkStatus 合格-3 不合格-4 驳回修改-2 待审核-1
showDialog(val) {
this.curBtn = val
if (val == 1) {
this.$confirm("确定要提交审核吗?", "警告", {
type: "warning",
})
.then(() => {
if (!this.editStatus) {
if (this.curBtn == 1) {
// 走接口,保存合格
this.putScreeningCheck("3", () => {
this.confirmStatus = true
} else if (this.curBtn == 2) {
this.rules.reson[0].message = "请输入不合格原因"
})
}
} else {
this.rules.reson[0].message = "请输入驳回修改建议"
this.$refs.editDialog.dialogVisible = true
}
})
.catch(() => {})
} else {
this.getSysCheckNote()
if (!this.editStatus) {
if (this.curBtn == 2) {
this.rules.reason[0].message = "请输入不合格原因"
} else {
this.rules.reason[0].message = "请输入驳回修改建议"
}
this.$refs.publicDialog.dialogVisible = true
} else {
this.$refs.editDialog.dialogVisible = true
}
}
},
// 不合格提交
onSubmit() {
this.loading = true
// 切换文本
if (this.curBtn != 1) {
this.$refs.form.validate((valid) => {
if (valid) {
// alert("submit!")
// 保存成功,回显,调用接口
// 回调
this.confirmStatus = true
this.putScreeningCheck("4", () => {
this.$message.success("提交审核成功")
this.nextExample()
})
} else {
console.log("error submit!!")
this.loading = false
return false
}
})
}
this.loading = false
// this.$refs.publicDialog.dialogVisible = true
},
onCancel() {
this.confirmStatus = false
this.editLabelFlag = false
if (this.curBtn != 1) {
this.form = {}
this.form = { reason: "" }
}
this.$refs.editDialog.dialogVisible = false
this.$refs.publicDialog.dialogVisible = false
......@@ -202,14 +405,50 @@ export default {
// 走接口,保存合格
this.confirmStatus = true
} else if (this.curBtn == 2) {
this.rules.reson[0].message = "请输入不合格原因"
this.rules.reason[0].message = "请输入不合格原因"
} else {
this.rules.reson[0].message = "请输入驳回修改建议"
this.rules.reason[0].message = "请输入驳回修改建议"
}
this.$refs.publicDialog.dialogVisible = true
},
nextExample() {
this.getUser(this.$route.query.id, () => {
this.loading = false
this.onCancel()
})
},
deleteLabel(i) {
this.$confirm("确定要删除该标签吗?", "警告", {
type: "warning",
})
.then(() => {
this.reasonList = this.reasonList.filter((e, index) => index != i)
if (this.reasonList.length == 0) {
this.reasonList = [
{
note: "",
},
]
}
})
.catch(() => {})
},
// 增加标签
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
}
})
},
},
}
......@@ -282,7 +521,8 @@ export default {
.btn {
margin-top: 20px;
.el-button {
width: 100px;
// width: 100px;
border-radius: 5px;
height: 32px;
}
}
......@@ -290,7 +530,7 @@ export default {
width: 100%;
text-align: left;
}
.reson {
.reason {
margin-top: 20px;
}
.showTips {
......@@ -313,4 +553,65 @@ export default {
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;
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;
user-select: none;
}
.active {
background: rgba(78, 104, 255, 0.1);
color: #4e68ff;
border-radius: 2px;
border: 1px solid #4e68ff;
}
}
.labelEdit {
font-size: 14px;
text-align: right;
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);
}
}
}
.edit_reasonList {
li {
display: flex;
margin-bottom: 16px;
.el-button {
margin-left: 12px;
font-size: 14px;
}
}
}
</style>
......@@ -153,7 +153,20 @@ export default {
{
label: "审核状态",
minWidth: 120,
value: "unCheckNums",
value: "checkStatus",
formatter: (row) => {
let text = ""
if (row.checkStatus == 3) {
text = "合格"
} else if (row.checkStatus == 4) {
text = "不合格"
} else if (row.checkStatus == 5) {
text = "驳回修改"
} else if (row.checkStatus) {
text = "--"
}
return text
},
},
{
label: "上报时间",
......
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