<template>
|
<div>
|
<el-dialog
|
title="派发患者选择"
|
:visible.sync="dialogVisiblepatient"
|
width="70%"
|
:before-close="handleClosehz"
|
>
|
<div class="examine-jic">
|
<div style="margin: 0 10px 20px 10px">
|
<el-card class="box-card">
|
<el-tag
|
v-for="item in overallCase"
|
:key="item.icdid"
|
type="primary"
|
closables
|
@close="handleClose(item)"
|
>
|
{{ item.name }}
|
</el-tag>
|
<div style="margin-top: 20px; text-align: right">
|
共选择<span
|
style="font-size: 18px; color: #409eff; margin: 0 10px"
|
>{{ overallCase.length }}</span
|
>位患者
|
</div>
|
</el-card>
|
</div>
|
<div class="jic-value">
|
<el-row :gutter="20">
|
<!--用户数据-->
|
<el-form
|
:model="patientqueryParams"
|
ref="queryForm"
|
size="small"
|
:inline="true"
|
label-width="98px"
|
>
|
<el-form-item label="患者:">
|
<el-input
|
v-model="patientqueryParams.name"
|
@keyup.enter.native="handleQuery"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="患者类型">
|
<el-select
|
v-model="patientqueryParams.allhosp"
|
placeholder="请选择新增类型"
|
>
|
<el-option
|
v-for="item in taskoptions"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="患者诊断:">
|
<el-input
|
v-model="patientqueryParams.leavediagname"
|
@keyup.enter.native="handleQuery"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="主治医生:">
|
<el-input
|
v-model="patientqueryParams.drname"
|
@keyup.enter.native="handleQuery"
|
></el-input>
|
</el-form-item>
|
|
<el-form-item>
|
<el-button
|
type="primary"
|
icon="el-icon-search"
|
size="medium"
|
@click="handleQuery"
|
>搜索</el-button
|
>
|
<el-button
|
icon="el-icon-refresh"
|
size="medium"
|
@click="resetQuery"
|
>重置</el-button
|
>
|
</el-form-item>
|
</el-form>
|
<!-- 选择患者列表 -->
|
<el-table
|
ref="multipleTable"
|
:data="donorchargeList"
|
tooltip-effect="dark"
|
style="width: 100%"
|
@selection-change="handleSelectionChange"
|
>
|
<el-table-column
|
fixed="left"
|
class="checkall"
|
type="selection"
|
width="55"
|
>
|
</el-table-column>
|
<div v-for="(item, index) in tableLabel">
|
<el-table-column
|
v-if="item.label == '出院日期'"
|
:key="index"
|
:prop="item.prop"
|
:width="item.width"
|
:label="item.label"
|
:formatter="formatData"
|
>
|
<template slot-scope="scope">
|
<span>{{ formatTime(scope.row.endtime) }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
v-if="item.label == '性别'"
|
:key="index"
|
:prop="item.prop"
|
:width="item.width"
|
:label="item.label"
|
:formatter="formatData"
|
>
|
<template slot-scope="scope">
|
<span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
|
</template>
|
</el-table-column>
|
|
<el-table-column
|
v-if="item.label != '性别' && item.label != '出院日期'"
|
:key="index"
|
:prop="item.prop"
|
:width="item.width"
|
:label="item.label"
|
:formatter="formatData"
|
>
|
</el-table-column>
|
</div>
|
</el-table>
|
</el-row>
|
<pagination
|
v-show="patienttotal > 0"
|
:total="patienttotal"
|
:page.sync="patientqueryParams.pageNum"
|
:limit.sync="patientqueryParams.pageSize"
|
@pagination="handleQuery"
|
/>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="$emit('addoption')">取 消</el-button>
|
<el-button type="primary" @click="AddDispatchpatients"
|
>确定添加</el-button
|
>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import {
|
getillnesslist,
|
deltargetillness,
|
getTaskpatientQC,
|
Questionnairetaskgetson,
|
Externallist,
|
Editsingletask,
|
} from "@/api/AiCentre/index";
|
export default {
|
name: "Diseasetotality",
|
data() {
|
return {
|
patienttotal: 0, //
|
allpids: [],
|
// 当前页选中数据
|
multipleSelection: [],
|
overallpatin: [],
|
form: {},
|
patientqueryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
allhosp: "4",
|
pids: null,
|
},
|
donorchargeList: [],
|
donorchargeanlList: [], //案例列表
|
taskoptions: [
|
{
|
value: "4",
|
label: "出院病人",
|
},
|
{
|
value: "1",
|
label: "在院病人",
|
},
|
{
|
value: "2",
|
label: "门诊病人",
|
},
|
{
|
value: "3",
|
label: "体检病人",
|
},
|
{
|
value: "6",
|
label: "院外患者",
|
},
|
{
|
value: "5",
|
label: "手术病人",
|
},
|
],
|
overallCase:[],
|
tableLabel: [
|
{ label: "出院日期", width: "150", prop: "inhosptime" },
|
{ label: "患者", width: "", prop: "name" },
|
{ label: "患者诊断", width: "", prop: "leavediagname" },
|
{ label: "身份证", width: "200", prop: "idcardno" },
|
{ label: "性别", width: "", prop: "sex" },
|
{ label: "年龄", width: "", prop: "age" },
|
{ label: "责任护士", width: "", prop: "nurseName" },
|
{ label: "主治医生", width: "", prop: "drname" },
|
{ label: "科室", width: "240", prop: "dept" },
|
{ label: "病区", width: "240", prop: "leavehospitaldistrictname" },
|
],
|
};
|
},
|
|
props: {
|
dialogVisiblepatient: {
|
type: Boolean,
|
default: () => {
|
return false;
|
},
|
},
|
|
// 5问卷模板、3随访模板、6宣教
|
type: {
|
type: Number,
|
default: () => {
|
return 5;
|
},
|
},
|
},
|
|
created() {},
|
|
mounted() {
|
// this.handleAddpatient();
|
},
|
|
watch: {},
|
|
methods: {
|
// 数据过滤
|
formatData(row, column, cellValue) {
|
if (column.property === "createType") {
|
if (cellValue === 1) {
|
return "自动";
|
}
|
return "手动";
|
}
|
if (
|
column.property === "createTime" ||
|
column.property === "inhosptime"
|
) {
|
if (cellValue === null) {
|
return "";
|
}
|
return dayjs(cellValue).format("YYYY-MM-DD ");
|
}
|
return cellValue;
|
},
|
handleClosehz() {
|
this.$emit("addoption");
|
},
|
// 选择数据标签删除事件
|
handleClose(item) {
|
console.log(item);
|
if (this.multipleSelection.indexOf(item) == -1 && !item.outid) {
|
this.overallCase.splice(this.overallCase.indexOf(item), 1);
|
} else if (item.outid) {
|
this.$modal
|
.confirm('是否确认删除名称为"' + item.icd10name + '"的数据项?')
|
.then(() => {
|
this.multipleSelection.splice(
|
this.multipleSelection.indexOf(item),
|
1
|
);
|
deltargetillness(item.id).then((res) => {
|
if (res.code == 200) {
|
this.$modal.msgSuccess("删除成功");
|
this.overallCase.splice(this.overallCase.indexOf(item), 1);
|
}
|
});
|
// 取消挂载状态
|
this.$refs.multipleTable.toggleRowSelection(item, false);
|
})
|
.catch(() => {});
|
} else {
|
this.overallCase.splice(this.overallCase.indexOf(item), 1);
|
this.multipleSelection.splice(this.multipleSelection.indexOf(item), 1);
|
// 取消挂载状态
|
this.$refs.multipleTable.toggleRowSelection(item, false);
|
}
|
},
|
resetQuery() {
|
this.patientqueryParams.name = null;
|
this.handleAddpatient();
|
},
|
// 触发查询事件
|
handleAddpatients() {
|
this.$emit("kkoption");
|
|
getillnesslist(this.patientqueryParams).then((res) => {
|
this.donorchargeList = res.rows;
|
this.patienttotal = res.total;
|
this.Restorecheck();
|
});
|
},
|
// 触发查询事件
|
handleAddpatient(taskid) {
|
this.$emit("kkoption");
|
if (taskid != this.taskid) {
|
this.recover();
|
}
|
if (taskid) {
|
this.taskid = taskid;
|
Questionnairetaskgetson({ taskid: this.taskid }).then((res) => {
|
if (res.code == 200) {
|
this.form = res.data;
|
this.overallpatin = this.form.patTaskRelevances.concat();
|
this.allpids = [];
|
this.overallpatin.forEach((item) => {
|
this.allpids.push(item.patid);
|
});
|
if (this.allpids[0]) {
|
this.patientqueryParams.pids = this.allpids;
|
} else {
|
this.patientqueryParams.pids = null;
|
}
|
this.handleQuery();
|
}
|
});
|
}
|
},
|
handleQuery() {
|
// 获取外部患者
|
if (this.patientqueryParams.allhosp == 6) {
|
this.Externallist();
|
return;
|
}
|
console.log(11);
|
|
if (this.patientqueryParams.allhosp == 4) {
|
this.tableLabel = [
|
// { label: "入院日期", width: "170", prop: "starttime" },
|
{ label: "出院日期", width: "150", prop: "endtime" },
|
{ label: "患者", width: "", prop: "name" },
|
{ label: "患者诊断", width: "", prop: "leavediagname" },
|
{ label: "身份证", width: "200", prop: "idcardno" },
|
{ label: "性别", width: "", prop: "sex" },
|
{ label: "年龄", width: "", prop: "age" },
|
{ label: "出院天数", width: "", prop: "endDay" },
|
{ label: "责任护士", width: "", prop: "nurseName" },
|
{ label: "医生", width: "", prop: "drname" },
|
{ label: "科室", width: "180", prop: "dept" },
|
{ label: "病区", width: "150", prop: "leavehospitaldistrictname" },
|
];
|
} else if (this.patientqueryParams.allhosp == 1) {
|
this.tableLabel = [
|
{ label: "入院日期", width: "150", prop: "starttime" },
|
{ label: "患者", width: "", prop: "name" },
|
{ label: "患者诊断", width: "", prop: "leavediagname" },
|
{ label: "身份证", width: "200", prop: "idcardno" },
|
{ label: "性别", width: "", prop: "sex" },
|
{ label: "年龄", width: "", prop: "age" },
|
{ label: "出院天数", width: "", prop: "endDay" },
|
{ label: "责任护士", width: "", prop: "nurseName" },
|
{ label: "医生", width: "", prop: "drname" },
|
{ label: "科室", width: "180", prop: "dept" },
|
{ label: "病区", width: "150", prop: "leavehospitaldistrictname" },
|
];
|
}
|
console.log(this.patientqueryParams.allhosp);
|
|
// 获取患者数据
|
getTaskpatientQC(this.patientqueryParams).then((response) => {
|
this.donorchargeList = response.rows;
|
this.donorchargeList.forEach((item) => {
|
if (item.endtime) {
|
item.endDay = this.daysBetween(item.endtime);
|
}
|
});
|
this.Restorecheck();
|
|
this.patienttotal = response.total;
|
});
|
},
|
// 获取外部患者导入列表
|
Externallist() {
|
this.tableLabel = [
|
{ label: "患者", width: "", prop: "name" },
|
{ label: "身份证", width: "200", prop: "idcardno" },
|
{ label: "性别", width: "", prop: "sex" },
|
{ label: "年龄", width: "", prop: "age" },
|
{ label: "出院天数", width: "", prop: "endDay" },
|
];
|
this.patientqueryParams.pageSize = 1000;
|
|
Externallist(this.patientqueryParams).then((response) => {
|
this.donorchargeList = response.rows;
|
this.donorchargeList.forEach((item) => {
|
if (item.endtime) {
|
item.endDay = this.daysBetween(item.endtime);
|
}
|
});
|
// this.dialogVisiblepatient = true;
|
this.patienttotal = response.total;
|
});
|
},
|
// 多选框选中数据
|
handleSelectionChange(selection) {
|
if (this.decision) return;
|
// 判断是否有删除
|
if (this.multipleSelection.length <= selection.length) {
|
this.multipleSelection = selection;
|
} else {
|
this.multipleSelection.forEach((item) => {
|
if (selection.includes(item)) {
|
} else {
|
if (this.multipleSelection.length == 1) {
|
this.multipleSelection = [];
|
} else {
|
this.multipleSelection.splice(
|
this.multipleSelection.indexOf(item),
|
1
|
);
|
}
|
if (this.overallCase.length == 1) {
|
this.overallCase = [];
|
} else {
|
this.overallCase.splice(this.overallCase.indexOf(item), 1);
|
}
|
}
|
});
|
}
|
// 赋值给整体选中数组
|
this.multipleSelection.forEach((item) => {
|
if (this.overallCase.every((obj) => obj.name != item.name)) {
|
item.isoperation = 1;
|
item.patid = item.id;
|
item.hospType = this.patientqueryParams.allhosp;
|
item.sfzh = item.idcardno;
|
item.deptCode = item.deptcode;
|
item.deptName = item.dept;
|
item.admindate = item.inhosptime;
|
item.diagname = item.leavediagname;
|
item.sfzh = item.idcardno;
|
if (this.patientqueryParams.allhosp == 6) {
|
item.patfrom = 1;
|
}
|
this.overallCase.push(item);
|
}
|
});
|
console.log(this.multipleSelection, "触发选择后multipleSelection");
|
},
|
// 切换页后恢复选中
|
Restorecheck() {
|
console.log(this.overallCase, "this.overallCase");
|
const allid = this.overallCase.map((item) => item.name);
|
const overlap = this.donorchargeList.filter((value) => {
|
return allid.includes(value.name);
|
});
|
// 保持ids和当前页面的同步性
|
this.multipleSelection = overlap;
|
console.log(this.multipleSelection, "进入分页multipleSelection");
|
|
this.toggleSelection(overlap);
|
},
|
// 挂载选择状态
|
toggleSelection(rows) {
|
if (rows) {
|
this.decision = true;
|
this.$nextTick(() => {
|
rows.forEach((row) => {
|
this.$refs.multipleTable.toggleRowSelection(row, true);
|
});
|
this.decision = false;
|
});
|
console.log(123);
|
} else {
|
this.$refs.multipleTable.clearSelection();
|
}
|
},
|
AddDispatchpatients() {
|
console.log(this.overallCase);
|
this.form.patTaskRelevances.push(...this.overallCase);
|
console.log(this.form.patTaskRelevances);
|
this.form.isoperation=2;
|
Editsingletask(this.form).then((res) => {
|
if (res.code == 200) {
|
if (this.form.taskid) {
|
this.$modal.msgSuccess("修改成功");
|
} else {
|
this.$modal.msgSuccess("新增成功");
|
}
|
this.recover();
|
this.$emit("addoption");
|
|
}
|
});
|
// this.dialogVisiblepatient = false;
|
// this.$emit("addoption");
|
},
|
recover() {
|
this.donorchargeList = [];
|
this.donorchargeanlList = [];
|
this.multipleSelection = [];
|
this.allpids = [];
|
this.overallpatin = [];
|
this.form = {};
|
this.patientqueryParams = {
|
pageNum: 1,
|
pageSize: 10,
|
allhosp: "4",
|
pids: null,
|
};
|
this.overallCase = [];
|
// this.dialogVisiblepatient = false;
|
},
|
},
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.examine-jic {
|
.headline {
|
font-size: 24px;
|
border-left: 5px solid #41a1be;
|
padding-left: 5px;
|
margin-bottom: 10px;
|
display: flex;
|
justify-content: space-between;
|
.Add-details {
|
font-size: 18px;
|
color: #02a7f0;
|
cursor: pointer;
|
}
|
}
|
.jic-value {
|
font-size: 20px;
|
border-top: 1px solid #a7abac;
|
padding: 10px;
|
margin-bottom: 10px;
|
.details-jic {
|
padding: 10px 15px;
|
border: 1px solid #dcdfe6;
|
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
|
0 0 6px 0 rgba(0, 0, 0, 0.04);
|
.details-title {
|
display: flex;
|
justify-content: space-between;
|
margin-bottom: 10px;
|
div:nth-child(2) {
|
color: #02a7f0;
|
cursor: pointer;
|
}
|
}
|
.details-renw {
|
background: #e4ebfc;
|
padding: 15px 5px;
|
border-radius: 5px;
|
margin-bottom: 20px;
|
}
|
}
|
}
|
}
|
::v-deep.el-table .el-table__header th:first-child .el-checkbox {
|
display: none;
|
}
|
.el-tag + .el-tag {
|
margin-left: 10px;
|
margin-bottom: 10px;
|
}
|
</style>
|