画像审核

This commit is contained in:
shidongli 2024-06-27 18:12:44 +08:00
parent e2afa2135f
commit 83cb8ef2d8
5 changed files with 316 additions and 238 deletions

View File

@ -58,4 +58,21 @@ export function getPortaitInfo(patientId) {
url: `/manage/signRecord/getPortaitInfo/${patientId}`,
method: 'get',
})
}
}
// 画像审核
export function updatePortaitCheckStatus(data) {
return request({
url: `/manage/signRecord/updatePortaitCheckStatus`,
method: 'post',
data
})
}
// 画像审核查询
export function getPortaitByPatient(query) {
return request({
url: '/manage/labelfieldcontent/getPortaitByPatient',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,9 @@
import request from '@/utils/request'
export function groupingValue(query) {
return request({
url: '/manage/labelfieldcontent/groupingValue',
method: 'get',
params: query
})
}

View File

@ -1,5 +1,5 @@
<template>
<div style="background-color: #f1f3f5;padding-top:16px">
<div style="background-color: #f1f3f5; padding-top: 16px">
<div slot="footer" class="topfooter">
<el-tabs v-model="activeNametab" @tab-click="handleClick">
<el-tab-pane label="画像审核" name="portrait"></el-tab-pane>
@ -7,15 +7,37 @@
</el-tabs>
<div class="right" v-if="activeNametab == 'portrait'">
<el-button size="mini" @click="cancel">返回</el-button>
<el-button size="mini" type="primary" @click="auditing">审核通过</el-button>
<el-button size="mini" type="info" @click="ignore">忽略</el-button>
<el-button
size="mini"
type="primary"
@click="auditing"
v-if="portaitCheckStatus != 'AGREE' && CheckStatus != 'DISAGREE'"
>审核通过</el-button
>
<el-button
size="mini"
type="info"
@click="ignore"
v-if="portaitCheckStatus != 'AGREE' && CheckStatus != 'DISAGREE'"
>忽略</el-button
>
</div>
<div class="right" v-else>
<el-button size="mini" @click="cancel">返回</el-button>
<el-button size="mini" type="primary" @click="auditing"
v-if="routeCheckStatus != 'AGREE' && routeCheckStatus != 'DISAGREE'">审核通过</el-button>
<el-button size="mini" type="info" @click="ignore"
v-if="routeCheckStatus != 'AGREE' && routeCheckStatus != 'DISAGREE'">忽略</el-button>
<el-button
size="mini"
type="primary"
@click="auditing"
v-if="routeCheckStatus != 'AGREE' && routeCheckStatus != 'DISAGREE'"
>审核通过</el-button
>
<el-button
size="mini"
type="info"
@click="ignore"
v-if="routeCheckStatus != 'AGREE' && routeCheckStatus != 'DISAGREE'"
>忽略</el-button
>
</div>
</div>
<!-- 画像审核 -->
@ -23,8 +45,16 @@
<div class="cardleft">
<div class="title">
<div style="display: flex; align-items: center">
<img class="headsculpture" v-if="list.sex == 'MALE'" src="../../../assets/manage/touxiang.png" />
<img class="headsculpture" v-else src="../../../assets/manage/nvtouxiang.png" />
<img
class="headsculpture"
v-if="list.sex == 'MALE'"
src="../../../assets/manage/touxiang.png"
/>
<img
class="headsculpture"
v-else
src="../../../assets/manage/nvtouxiang.png"
/>
<div class="name">
{{ list.patientName ? list.patientName : "" }}
</div>
@ -42,17 +72,27 @@
{{ list.visitMethod == "OUTPATIENT_SERVICE" ? "门诊" : "" }}
{{ list.visitMethod == "BE_IN_HOSPITAL" ? "住院" : "" }}
</div>
<div class="item" style="color: #00e06e; border-color: #00e06e"
v-if="list.patientSource == 'WE_CHAT_OFFICIAL_ACCOUNT'">
<div
class="item"
style="color: #00e06e; border-color: #00e06e"
v-if="list.patientSource == 'WE_CHAT_OFFICIAL_ACCOUNT'"
>
<img src="../../../assets/manage/gzh.png" alt="" />
<div>公众号</div>
</div>
<div class="item" style="color: #339de5; border-color: #339de5"
v-if="list.patientSource == 'WE_CHAT_APPLET'">
<div
class="item"
style="color: #339de5; border-color: #339de5"
v-if="list.patientSource == 'WE_CHAT_APPLET'"
>
<img src="../../../assets/manage/xcx.png" alt="" />
<div>小程序</div>
</div>
<div class="item" style="color: #f4881f; border-color: #f4881f" v-if="list.patientSource == 'MANAGE_END'">
<div
class="item"
style="color: #f4881f; border-color: #f4881f"
v-if="list.patientSource == 'MANAGE_END'"
>
<img src="../../../assets/manage/gld.png" alt="" />
<div>管理端</div>
</div>
@ -72,7 +112,7 @@
出院时间: {{ list.dischargeTime }}
</div>
<div class="text" v-if="list.visitMethod == 'BE_IN_HOSPITAL'">
审核时间: {{ list.dischargeTime }}
审核时间: {{ list.portaitCheckDate }}
</div>
<div class="text" v-if="list.visitMethod == 'OUTPATIENT_SERVICE'">
就诊时间: {{ list.dischargeTime }}
@ -80,34 +120,57 @@
</div>
<el-descriptions title="诊断信息" style="margin: 16px auto">
<el-descriptions-item label="主要诊断">{{
list.mainDiagnosis
}}</el-descriptions-item>
list.mainDiagnosis
}}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="手术信息" style="margin: 0 auto 16px;padding-top:16px; border-top: 1px solid #e6ebf5"
v-if="list.visitMethod != 'OUTPATIENT_SERVICE'">
<el-descriptions
title="手术信息"
style="
margin: 0 auto 16px;
padding-top: 16px;
border-top: 1px solid #e6ebf5;
"
v-if="list.visitMethod != 'OUTPATIENT_SERVICE'"
>
<el-descriptions-item label="手术名称">{{
list.surgicalName
}}</el-descriptions-item>
list.surgicalName
}}</el-descriptions-item>
</el-descriptions>
<el-collapse v-model="activeNames">
<el-collapse-item title="入院记录" name="-1">
<div v-html="list.inHospitalInfo"></div>
</el-collapse-item>
<el-collapse-item title="手术记录" name="-2" v-if="list.visitMethod != 'OUTPATIENT_SERVICE'">
<el-collapse-item
title="手术记录"
name="-2"
v-if="list.visitMethod != 'OUTPATIENT_SERVICE'"
>
<div v-html="list.surgicalRecord"></div>
</el-collapse-item>
<el-collapse-item title="出院记录" name="-3" v-if="list.visitMethod != 'OUTPATIENT_SERVICE'">
<el-collapse-item
title="出院记录"
name="-3"
v-if="list.visitMethod != 'OUTPATIENT_SERVICE'"
>
<div v-html="list.outHospitalInfo"></div>
</el-collapse-item>
</el-collapse>
</div>
<!-- 画像编辑右侧 -->
<div class="cardright">
<portrait @portraitlist="portraitlist"></portrait>
<portrait
v-if="patientId"
@portraitlist="portraitlist"
:patientId="patientId"
:portaitCheckStatus="portaitCheckStatus"
></portrait>
</div>
</div>
<div class="card" v-else>
<PathReview ref="PathReview" @on-routeCheckStatus="onrouteCheckStatus"></PathReview>
<PathReview
ref="PathReview"
@on-routeCheckStatus="onrouteCheckStatus"
></PathReview>
</div>
</div>
</template>
@ -116,8 +179,8 @@
import {
getRouteNodeList,
getByPatientId,
audit,
updateRouteCheckStatus
updateRouteCheckStatus,
updatePortaitCheckStatus
} from '@/api/manage/Auditing.js'
import { getAge } from "@/utils/age";
import portrait from '../components/portrait.vue'
@ -130,25 +193,42 @@ export default {
name: "Auditing",
data() {
return {
activeNametab: 'route',//
activeNametab: 'portrait',//
baseUrl: process.env.VUE_APP_BASE_API,
activeNames: ['-1', '-2', '-3'],
list: {},
// nodelist: [],
lookitem: {},
routeCheckStatus: undefined,
patientId: null,
portraitlistdata: [],
CheckStatus: undefined,
portaitCheckStatus: undefined,
};
},
created() {
this.info();
// this.info();
this.patientId = this.$route.query.patientId
this.CheckStatus = this.$route.query.routeCheckStatus
console.log(this.CheckStatus, 'CheckStatus')
getByPatientId(this.$route.query.patientId).then(res => {
res.data.birthDate ? res.data.age = getAge(res.data.birthDate) : ''
this.list = res.data
this.portaitCheckStatus = res.data.portaitCheckStatus
console.log(this.portaitCheckStatus, '------')
})
// console.log(this.portaitCheckStatus, '--------------')
},
methods: {
//
onrouteCheckStatus(e) {
this.routeCheckStatus = e.routeCheckStatus
},
//
portraitlist(val) {
console.log(val, '999999999')
this.portraitlistdata = val
console.log(this.portraitlistdata, '999999999')
},
handleClick(tab, event) {
console.log(tab, event, this.activeNametab);
@ -182,12 +262,14 @@ export default {
})
} else {
let obj = {
routeCheckPerson: JSON.parse(localStorage.getItem('user')).nickName,
routeCheckRemark: value,
routeCheckStatus: 'DISAGREE',
// manageRouteNodeIds: manageRouteNodeIds
patientId: this.patientId,
portaitCheckRemark: value,
portaitCheckStatus: 'DISAGREE',
signPatientRecordId: this.$route.query.signRecordId,
labelFieldContentList: [],
}
audit(obj).then(res => {
obj.labelFieldContentList = this.portraitlistdata
updatePortaitCheckStatus(obj).then(res => {
this.$notify({
type: 'success',
title: '提示',
@ -234,18 +316,23 @@ export default {
})
} else {
let obj = {
routeCheckPerson: JSON.parse(localStorage.getItem('user')).nickName,
routeCheckRemark: value,
routeCheckStatus: 'AGREE',
// manageRouteNodeIds: manageRouteNodeIds
patientId: this.patientId,
portaitCheckRemark: value,
portaitCheckStatus: 'AGREE',
signPatientRecordId: this.$route.query.signRecordId,
labelFieldContentList: [],
}
audit(obj).then(res => {
obj.labelFieldContentList = this.portraitlistdata
console.log(obj, 'tijiao')
// return
updatePortaitCheckStatus(obj).then(res => {
this.$notify({
type: 'success',
title: '提示',
message: '画像审核通过',
duration: 3000
});
this.info()
})
}
})
@ -254,6 +341,8 @@ export default {
getByPatientId(this.$route.query.patientId).then(res => {
res.data.birthDate ? res.data.age = getAge(res.data.birthDate) : ''
this.list = res.data
this.portaitCheckStatus = res.data.portaitCheckStatus
console.log(this.portaitCheckStatus, '===============')
})
// getRouteNodeList({ patientId: this.$route.query.patientId, taskCreateType: 'MANUAL_CREATE', routeCheckStatus: "UNAUDITED" }).then(res => {
// this.nodelist = res.data

View File

@ -1,178 +1,145 @@
<template>
<!-- <div class="texts"> -->
<div class="topform">
<div v-if="getParamslistData" style="margin-bottom: 20px;">
<el-card>
<div class="toptitle">健康档案</div>
<div
v-for="(item, index) in form.items"
:key="index"
style="display: flex"
<div class="topform">
<div v-if="getParamslistData">
<div
v-for="(item, index) in getParamslistData"
:key="index"
style="display: flex"
>
<el-card class="box-card">
<el-form
ref="form"
:inline="true"
:model="form"
class="form"
label-width="100px"
:rules="rules"
>
<el-card class="box-card">
<el-form
ref="form"
:inline="true"
:model="form"
class="form"
label-width="100px"
:rules="rules"
>
<el-form-item
v-for="(subItem, subIndex) in item.subItems"
:key="subIndex"
label="活动名称"
>
<!-- <span style="font-size:12px">{{subItem.name}}</span> -->
<el-input v-model="subItem.name"></el-input>
</el-form-item>
</el-form>
</el-card>
<div class="icon">
<i
class="el-icon-delete"
@click="delitem(index)"
v-if="index != 0"
></i>
<i
v-if="index == 0"
class="el-icon-circle-plus-outline"
@click="additem(index)"
></i>
</div>
</div>
</el-card>
</div>
<div>
<el-card>
<div class="toptitle">诊断信息</div>
<div
v-for="(item, index) in form.items"
:key="index"
style="display: flex"
>
<el-card class="box-card">
<el-form
ref="form"
:inline="true"
:model="form"
class="form"
label-width="100px"
:rules="rules"
>
<el-form-item
v-for="(subItem, subIndex) in item.subItems"
:key="subIndex"
label="活动名称"
>
<!-- <span style="font-size:12px">{{subItem.name}}</span> -->
<el-input v-model="subItem.name"></el-input>
</el-form-item>
</el-form>
</el-card>
<div class="icon">
<i
class="el-icon-delete"
@click="delitem(index)"
v-if="index != 0"
></i>
<i
v-if="index == 0"
class="el-icon-circle-plus-outline"
@click="additem(index)"
></i>
</div>
</div>
<!-- {{item}} -->
<el-form-item
v-for="(ite, ind) in item"
:label="ite.fieldName"
:key="ind"
>
<el-input class="textarea" v-model="ite.fieldValue" v-if="!portaitCheckStatus"></el-input>
<el-input class="textarea" v-model="ite.fieldValue" disabled v-else></el-input>
</el-form-item>
</el-form>
</el-card>
<div class="icon" v-if="!portaitCheckStatus">
<i
class="el-icon-delete"
@click="delitem(index)"
v-if="index != 0"
></i>
<i
v-if="index == 0"
class="el-icon-circle-plus-outline"
@click="additem(index)"
></i>
<!-- <el-button
v-if="
taskPartitionCode == 'MEDICATION_GUIDE' ||
taskPartitionCode == 'SPORT_GUIDE' ||
taskPartitionCode == 'DIET_GUIDE' ||
taskPartitionCode == 'NURSING_GUIDE'
"
round
style="margin-left: 10px"
@click="knowledge(index, item)"
>知识库获取</el-button
> -->
</div>
</div>
</div>
<!-- </div> -->
</div>
</template>
<script>
import {
getPortaitByPatient
} from '@/api/manage/Auditing.js'
export default {
props:['patientId','portaitCheckStatus'],//psMsg
data() {
return {
CheckStatus:'',
moban: [],
querytParams: {
taskPartitionDictId: 0,
// patientId: this.$route.query.patientId,
patientId: null,
},
rules: {
routeCheckStatus: [
{ required: true, message: '请选择节点审核状态', trigger: 'change' }
],
},
form: {
items: [
{
subItems: [{ name: '123' }, { name: '345' }],
},
],
},
moban: [],
getParamslistData: [
[{
paramName: "ceshi",
paramValue: ''
},
{
paramName: "ceshi222",
paramValue: ''
}
]
],
form:{},
getParamslistData: [],
}
},
watch: {
"form": {
"getParamslistData": {
handler(newValue, oldValue) {
console.log(newValue, "2222221111122");
console.log(newValue,'newValue')
this.$emit("portraitlist", newValue);
},
deep: true,
},
portaitCheckStatus: {
handler(newValue, oldValue) {
this.portaitCheckStatus=newValue
console.log(newValue, "portaitCheckStatus");
},
}
},
created() {
this.$emit("portraitlist", this.form);
},
mounted() { },
this.CheckStatus=this.$route.query.routeCheckStatus
},
mounted() {
this.querytParams.patientId=this.patientId
this.getParams()
},
methods: {
additem(index) {
const newDiv = {
subItems: [{ name: '' }, { name: '' }],
};
this.form.items.push(newDiv);
//
getParams() {
// getPortaitByPatient
getPortaitByPatient(this.querytParams).then(res => {
console.log(res, 'res')
this.moban = JSON.parse(JSON.stringify(res.data))
this.getParamslistData = res.data
// console.log(this.getParamslistData, '009090')
// this.getParamslistData.push(
// {
// paramName: "ceshi",
// paramValue: ''
// },
// {
// paramName: "ceshi2",
// paramValue: ''
// },
// )
console.log(this.getParamslistData)
// this.moban[0].forEach(e => {
// e.paramValue = ""
// e.id = ""
// })
// const newVal = JSON.parse(JSON.stringify(this.moban[0]))
// newVal.forEach(i => {
// i.sn = this.getParamslistData[this.getParamslistData.length - 1][0].sn + 1
// })
// this.getParamslistData.push(newVal)
})
},
//
additem(index) {
this.moban[0].forEach(e => {
e.fieldValue = ""
e.portraitSn = ''
// e.id = ""
})
const newVal = JSON.parse(JSON.stringify(this.moban[0]))
// const newVal = JSON.parse(JSON.stringify(this.getParamslistData[0]))
// newVal.forEach(i => {
// // i.sn = this.getParamslistData.length +1
// i.sn = this.getParamslistData[this.getParamslistData.length - 1][0].sn + 1
// })
this.getParamslistData.push(newVal)
},
//
delitem(index, item) {
this.form.items.splice(index, 1)
// this.getParamslistData.splice(index, 1)
// this.form.items.splice(index, 1)
this.getParamslistData.splice(index, 1)
},
@ -180,60 +147,55 @@ export default {
}
</script>
<style scoped lang="scss">
// .texts {
// // overflow-y: scroll;
// overflow-x: hidden;
// width: 72%;
// height: calc(100vh - 30px);
// background-color: #fff;
.topform {
width: 100%;
position: relative;
height: calc(100% - 177px);
// overflow-y: auto;
padding: 15px 70px 30px 15px;
.toptitle {
font-weight: 500;
padding: 20px;
font-size: 18px;
}
.box-card {
// width:calc(100% - 149px);
width: 97%;
margin-left: 20px;
padding-top: 25px;
margin-bottom: 20px;
.textarea {
display: flex;
// width: 500px;
// width: 100%;
}
}
.icon {
width: 45px;
right: -20px;
top: 40px;
position: relative;
}
.form {
width: 100%;
::v-deep .el-form-item {
display: flex;
}
::v-deep .el-form-item__content {
flex: 1;
}
::v-deep .el-input__inner {
height: 30px !important;
line-height: 30px !important;
}
::v-deep .el-form-item__label {
font-size: 12px !important;
}
::v-deep .el-input.is-disabled .el-input__inner{
background: #fff;
}
.topform {
width: 100%;
position: relative;
height: calc(100% - 177px);
// overflow-y: auto;
padding: 15px 70px 30px 15px;
.toptitle {
font-weight: 500;
padding: 20px;
font-size: 18px;
}
.box-card {
// width:calc(100% - 149px);
width: 97%;
margin-left: 20px;
padding-top: 25px;
margin-bottom: 20px;
.textarea {
display: flex;
// width: 500px;
// width: 100%;
}
}
// }
</style>
.icon {
width: 45px;
right: -20px;
top: 40px;
position: relative;
}
.form {
width: 100%;
::v-deep .el-form-item {
display: flex;
}
::v-deep .el-form-item__content {
flex: 1;
}
::v-deep .el-input__inner {
height: 30px !important;
line-height: 30px !important;
}
::v-deep .el-form-item__label {
font-size: 12px !important;
}
}
}
</style>

View File

@ -454,6 +454,7 @@ export default {
query: {
patientId: row.patientId,
signRecordId: row.id,
routeCheckStatus:row.routeCheckStatus
},
});
},