Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
闫晓茹 2024-06-24 14:26:11 +08:00
commit 1cff6c4d5c
4 changed files with 664 additions and 18 deletions

View File

@ -0,0 +1,36 @@
import request from '@/utils/request'
// 左侧查询
export function groupingContent(query) {
return request({
url: 'manage/labelfieldcontent/groupingContent',
method: 'get',
params: query
})
}
// 生成数据---任务节点列表
export function getAllNodeByPatient(query) {
return request({
url: '/manage/signnode/getSpecialDiseaseNode',
method: 'get',
params: query
})
}
// 根据节点id提取参数列表
export function getParams(query) {
return request({
url: '/system/specialDiseaseNode/getParams',
method: 'get',
params: query
})
}
// 提交
export function inserList(data) {
return request({
url: '/manage/nodeParamsCurrent/inserList',
method: 'post',
data: data
})
}
//

View File

@ -0,0 +1,588 @@
<template>
<div class="app-container">
<div class="list">
<div class="timelist">
<div class="left" ref="box">
<div class="name">画像分组</div>
<div>
<el-input
v-model="name"
placeholder="请输入画像分组"
clearable
@keyup.enter.native="handleQuery"
/>
</div>
<!-- <div class="listitem">
<div
:class="itemname == null ? 'allactive' : 'all'"
@click="bottomclickevent()"
>
全部
</div>
<span class="count">{{ count }}</span>
</div> -->
<div
class="listitem"
v-for="(ulitem, index) in DepartmentoList"
:key="index"
@click="bottomclickevent(ulitem)"
>
<div :class="taskid == ulitem.taskPartitionDictId? 'allactive' : 'all'">
{{ ulitem.taskPartitionDictName }}
</div>
<!-- <span class="count">{{ ulitem.countNum }}</span> -->
</div>
</div>
<!-- <el-timeline>
<el-timeline-item
v-for="(uitem, uindex) in getAllNodeByPatientlist"
:key="uindex"
:color="listindex == uindex ? '#409EFF' : ''"
>
<div class="top">
<div class="toptop">
<el-select
v-model="uitem.routeNodeName"
style="width: 87px"
disabled
>
<el-option label="出院后" value="AFTER_DISCHARGE" />
<el-option label="入院后" value="AFTER_ADMISSION" />
<el-option label="就诊后" value="AFTER_CONSULTATION" />
<el-option
label="就诊/出院后"
value="AFTER_VISIT_DISCHARGE"
/>
<el-option label="术前" value="PREOPERATIVE" />
<el-option label="术后" value="POSTOPERATIVE" />
</el-select>
<el-input
disabled
v-model="uitem.routeNodeDay"
style="width: 70px"
type="number"
></el-input>
<span></span>
</div>
<div></div>
</div>
<el-card
v-for="(ulitem, ulindex) in uitem.list"
:key="ulindex"
@click.native="bottomclickevent(ulitem, uindex, ulindex)"
:class="
listindex == uindex && itemindex == ulindex ? 'cards' : ''
"
>
<h3 style="height: 20px">{{ ulitem.taskTypeName }}</h3>
<el-tag
v-if="ulitem.routeCheckStatus == 'AGREE'"
class="routeCheckStatus"
>已审核</el-tag
>
<el-tag
v-else-if="ulitem.routeCheckStatus == 'DISAGREE'"
type="danger"
class="routeCheckStatus"
>不同意</el-tag
>
<el-tag v-else type="warning" class="routeCheckStatus"
>未审核</el-tag
>
<p style="height: 16px">{{ ulitem.taskPartitionDictName }}</p>
</el-card>
</el-timeline-item>
</el-timeline> -->
</div>
<div class="texts">
<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-form-item
:label="ite.paramName"
v-for="(ite, ind) in item"
:key="ind"
>
<el-input
class="textarea"
v-model="ite.paramValue"
></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>
<!-- <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>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="TemporaryStorage" type="primary"> </el-button>
</div>
</div>
</template>
<script>
import { getAllNodeByPatient, getParams, inserList,groupingContent } from '@/api/manage/Portraitedit'
export default {
name: "Portraitedit",
data() {
return {
name:null,
taskid: 0,
count:'',
DepartmentoList: [],
//
querydepartmen: {
taskPartitionDictName: "",
},
itemid: null,
itemdata: {},
taskPartitionCode: "",
//
getAllNodeByPatientlist: [],
//
getParamslistData: [],
qurelist: {
patientId: '',
},
querytParams: {
id: '',
patientId: this.$route.query.patientId,
},
rules: {
routeCheckStatus: [
{ required: true, message: '请选择节点审核状态', trigger: 'change' }
],
},
totalNumber: 0,
agreeNumber: 0,
updata: {
specialDiseaseRouteId: '',
suitRange: '',
routeName: '',
specialDiseaseNodeList: [],
},
form: {},
itemindex: 0,
listindex: null,
input: '',
moban: [],
};
},
created() {
this.Departmentlist()
console.log(this.$route.query, 'this.$route.query')
this.qurelist.patientId = this.$route.query.patientId
this.getAllNodeBy()
},
beforeDestroy() { },
watch: {
name(val) {
this.querydepartmen.taskPartitionDictName = val
this.Departmentlist();
},
},
mounted() {
},
methods: {
//
Departmentlist() {
this.loading = true;
groupingContent(this.querydepartmen).then(response => {
this.DepartmentoList = response.data;
this.loading = false;
});
},
//
getAllNodeBy() {
const loading = this.$loading({
lock: true,
text: '数据加载中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.getAllNodeByPatientlist = []
if (this.$route.query) {
this.qurelist.patientId=15
getAllNodeByPatient(this.qurelist).then(res => {
// this.getAllNodeByPatientlist = res.data
loading.close();
this.getAllNodeByPatientlist = this.handleData(res.data, 'routeNodeDay', 'routeNodeName')
// console.log(this.getAllNodeByPatientlist, 'this.getAllNodeByPatientlist')
})
} else {
loading.close();
this.getAllNodeByPatientlist.push({
routeNodeName: "",
routeNodeDay: "",
list: [
{
routeCheckStatus: "AGREE",
routeId: '',
routeName: "",
routeNodeDay: "",
routeNodeId: "",
routeNodeName: "",
taskPartitionCode: "",
taskPartitionDictId: "",
taskPartitionDictName: "",
taskTypeCode: "",
taskTypeId: "",
taskTypeName: "",
},
],
});
}
},
handleData(list, key, keytwo) {
//
let keysArr = list.map((item) => {
return {
routeNodeDay: item[key],
routeNodeName: item[keytwo],
};
});
let array = keysArr.filter(
(item, index, arr) =>
index ===
arr.findIndex(
(ite) =>
ite.routeNodeDay == item.routeNodeDay &&
ite.routeNodeName == item.routeNodeName
)
);
let keys = [...new Set(array)];
let newList = keys.map((item) => {
return {
//
routeNodeDay: item[key], //1tian
routeNodeName: item[keytwo],
list: list.filter(
(i) => i[key] == item[key] && i[keytwo] == item[keytwo]
),
};
});
return newList;
},
getParams() {
this.querytParams={
id: 730,
patientId: this.$route.query.patientId,
}
getParams(this.querytParams).then(res => {
res.data.forEach(e => {
e.forEach(el => {
el.patientId = this.$route.query.patientId
el.patientName = this.$route.query.patientName
el.sn = Number(el.sn)
})
})
this.moban = JSON.parse(JSON.stringify(res.data))
this.getParamslistData = res.data
console.log(this.getParamslistData, '009090')
})
},
//
TemporaryStorage() {
var emptyItems = []
emptyItems = this.getParamslistData.flat().filter(f => f.paramValue == "")
this.getParamslistData.forEach(e => {
e.forEach(el => {
el.routeId = this.itemdata.routeId
el.routeName = this.itemdata.routeName
el.routeNodeId = this.querytParams.id
el.routeNodeName = this.itemdata.routeNodeName
el.taskPartitionCode = this.itemdata.taskPartitionCode
el.taskPartitionDictId = this.itemdata.taskPartitionDictId
el.taskPartitionDictName = this.itemdata.taskPartitionDictName
el.taskTypeCode = this.itemdata.taskTypeCode
el.taskTypeId = this.itemdata.taskTypeId
el.taskTypeName = this.itemdata.taskTypeName
})
})
// return
if (emptyItems && emptyItems.length > 0) {
this.$modal.msgError("请填写完整,再进行提交");
} else {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
}).then(() => {
const loading = this.$loading({
lock: true,
text: '提交中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
inserList(this.getParamslistData).then(res => {
if (res.code == 200) {
this.$modal.msgSuccess("提交成功!");
this.indexdata = null
loading.close();
}
else {
loading.close();
}
}).catch(() => {
loading.close();
});
})
}
},
bottomclickevent(ulitem) {
console.log(ulitem, '9999')
this.taskid = ulitem.taskPartitionDictId
this.loading = true;
// this.getList()
},
additem(index) {
this.moban[0].forEach(e => {
e.paramValue = ""
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.getParamslistData.splice(index, 1)
},
}
};
</script>
<style scoped lang="scss">
.pag {
top: 13px;
position: relative;
left: 61%;
}
::v-deep .el-card__body {
position: relative;
}
::v-deep .el-select .el-input.is-disabled .el-input__inner {
background: #fff !important;
}
::v-deep .el-input.is-disabled .el-input__inner {
background: #fff !important;
}
.routeCheckStatus {
position: absolute;
right: 10px;
top: 30px;
}
.dialog-footer {
padding: 2px 44px 0;
text-align: right;
}
.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;
.box-card {
// width:calc(100% - 149px);
width: 85%;
margin-left: 20px;
padding-top: 25px;
.textarea {
display: flex;
// width: 500px;
// width: 100%;
}
}
.icon {
width: 150px;
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;
}
}
}
}
.list {
margin: 20px auto;
width: 100%;
height: calc(100% - 80px);
background-color: #f2f4f5;
display: flex;
padding-top: 15px;
justify-content: space-evenly;
::v-deep .el-card {
margin-top: 20px !important;
}
.timelist {
width: 25%;
background-color: #fff;
padding: 17px 20px;
// height: 680px;
// height: calc(100vh - 294px);
overflow-y: scroll;
.left {
height: calc(100vh - 119px);
// overflow: auto;
.name {
font-weight: 700;
margin-bottom: 10px;
}
.listitem {
width: 100%;
height: 50px;
border-bottom: 1px solid #dcdfe6;
.count {
display: inline-block;
position: relative;
// right: -172px;
left: 210px;
color: #a4a6aa;
top: -35px;
font-size: 13px;
}
.all {
height: 50px;
line-height: 50px;
padding-left: 13px;
}
.allactive {
background: #e8f4ff;
height: 50px;
line-height: 50px;
padding-left: 13px;
border-left: 3px solid #4d9de7;
}
}
}
.timetitle {
height: 60px;
display: flex;
align-items: center;
justify-content: space-between;
}
::v-deep .el-timeline {
width: 100%;
padding: 15px 0 0 !important;
}
}
}
.cards {
border: 1px solid #409eff;
border-left: 5px solid #409eff;
}
.top {
display: flex;
justify-content: space-between;
align-items: center;
.toptop {
display: flex;
align-items: center;
}
span {
padding: 0 4px;
}
i {
font-size: 17px;
}
i:nth-child(2) {
padding-left: 12px;
}
}
::v-deep .el-timeline-item__timestamp {
margin: 0 !important;
padding: 0 !important;
}
::v-deep .el-timeline-item__wrapper {
padding-left: 14px !important;
}
::v-deep .el-timeline-item__content {
transform: translateY(-2%);
}
</style>

View File

@ -237,14 +237,6 @@
<!-- <el-input v-model="aitem.fieldSort" placeholder="请输入字段排序" oninput="value=value.replace(/[^\d]/g,'')"
maxlength="5"/> -->
</el-form-item>
<el-form-item label="字段备注信息" prop="fieldRemark">
<el-input
style="width: 210px"
v-model="aitem.fieldRemark"
placeholder="请输入字段备注信息"
type="textarea"
/>
</el-form-item>
<el-form-item label="任务细分" prop="taskPartitionDictId">
<el-button
type=""
@ -273,11 +265,20 @@
>{{ aitem.taskPartitionDictName }}</el-button
>
</el-form-item>
<el-form-item label="字段备注信息" prop="fieldRemark">
<el-input
style="width: 210px"
v-model="aitem.fieldRemark"
placeholder="请输入字段备注信息"
type="textarea"
/>
</el-form-item>
<el-button
type="primary"
plain
icon="el-icon-circle-plus-outline"
style="margin-left: 6px"
style="margin-left: 6px;margin-top: 9px;"
v-if="index == 0"
@click="addnurseClassifyitem"
></el-button>
@ -285,7 +286,7 @@
type="danger"
icon="el-icon-delete"
plain
style="margin-left: 6px"
style="margin-left: 6px;margin-top: 9px;"
v-if="index != 0"
@click="delnurseClassifyitem(index)"
></el-button>
@ -342,14 +343,6 @@
style="width: 210px"
/>
</el-form-item>
<el-form-item label="字段备注信息" prop="fieldRemark">
<el-input
style="width: 210px"
v-model="form.fieldRemark"
placeholder="请输入字段备注信息"
type="textarea"
/>
</el-form-item>
<el-form-item label="任务细分" prop="taskPartitionDictId">
<el-button
type=""
@ -378,6 +371,14 @@
>{{ form.taskPartitionDictName }}</el-button
>
</el-form-item>
<el-form-item label="字段备注信息" prop="fieldRemark">
<el-input
style="width: 210px"
v-model="form.fieldRemark"
placeholder="请输入字段备注信息"
type="textarea"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>

View File

@ -155,6 +155,7 @@
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:patientInfo:remove']">删除</el-button> -->
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
<el-button size="mini" type="text" @click="handleedit(scope.row)">画像编辑</el-button>
</template>
</el-table-column>
</el-table>
@ -258,6 +259,26 @@ export default {
age: row.birthDate ? getAge(row.birthDate) : ''
},
});
},
//
handleedit(row){
this.$router.push({
path: "/patient/Portraitedit",
query: {
patientId: row.patientId,
cardNo: row.cardNo,
patientName: row.patientName,
patientPhone: row.patientPhone,
sex: row.sex,
birthDate: row.birthDate,
familyMemberPhone: row.familyMemberPhone,
address: row.address,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.birthDate ? getAge(row.birthDate) : '',
},
});
},
/** 查询患者信息列表 */
getList() {