You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
496 lines
18 KiB
496 lines
18 KiB
<template>
|
|
<div style="display: flex">
|
|
<div :style="'width:' + (window.pageWidth - 200 - 120 - 70) + 'px;'">
|
|
<el-table :data="patientRegister.prList" border :height="patientRegister.prListHeight" highlight-current-row
|
|
@row-click="rowick" size="small" @selection-change="handleSelectionChange">
|
|
<el-table-column type="selection" width="40">
|
|
|
|
</el-table-column>
|
|
<el-table-column prop="completeFlag" label="体检进度">
|
|
<template slot-scope="scope">
|
|
<div>{{ ldddw(dict.completeFlag, "id", scope.row.completeFlag, "displayName") }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="isLock" label="锁住">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.isLock == "Y" ? "是" : "否" }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="customerOrgParentName" label="单位" width="180">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgParentName : scope.row.customerOrgName }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="customerOrgName" label="部门" width="180">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgName : "" }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="patientName" label="姓名" />
|
|
<el-table-column prop="sexId" label="性别">
|
|
<template slot-scope="scope">
|
|
<div>{{ ldddw(dict.sex, "id", scope.row.sexId, "displayName") }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="age" label="年龄" />
|
|
<el-table-column prop="patientRegisterNo" label="条码号" width="150" />
|
|
<el-table-column prop="patientNo" label="档案号" />
|
|
<el-table-column prop="medicalTimes" label="体检次数"></el-table-column>
|
|
<el-table-column label="分组/套餐" width="150">
|
|
<template slot-scope="scope">
|
|
<div v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId === dict.personOrgId">
|
|
{{ ldddw(dict.medicalPackage, "id", scope.row.medicalPackageId, "displayName") }}
|
|
</div>
|
|
<div v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId !== dict.personOrgId">
|
|
{{ ldddw(dict.customerOrgGroupAll, "id", scope.row.customerOrgGroupId, "displayName") }}
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="nationId" label="民族">
|
|
<template slot-scope="scope">
|
|
<div>
|
|
{{ ldddw(dict.nation, "nationId", scope.row.nationId, "displayName") }}
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="idNo" label="身份证" width="150" />
|
|
<el-table-column prop="birthDate" label="出生日期" width="100">
|
|
<template slot-scope="scope">
|
|
<div v-if="scope.row.birthDate">
|
|
{{ lmoment(scope.row.birthDate, "yyyy-MM-DD") }}
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="email" label="邮箱" width="180" />
|
|
<el-table-column prop="mobileTelephone" label="手机" width="100" />
|
|
<el-table-column prop="telephone" label="电话" width="100" />
|
|
<el-table-column prop="address" label="地址" width="300" />
|
|
<el-table-column prop="medicalCardNo" label="体检卡号" />
|
|
<el-table-column prop="jobCardNo" label="工卡号" />
|
|
<el-table-column prop="maritalStatusId" label="婚姻状况">
|
|
<template slot-scope="scope">
|
|
<div>
|
|
{{ ldddw(dict.maritalStatus, "id", scope.row.maritalStatusId, "displayName") }}
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="medicalTypeId" label="体检类别">
|
|
<template slot-scope="scope">
|
|
<div v-if="scope.row.medicalTypeId !== dict.personOrgId">
|
|
{{ ldddw(dict.medicalType, "id", scope.row.medicalTypeId, "displayName") }}
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="personnelTypeId" label="人员类别">
|
|
<template slot-scope="scope">
|
|
<div v-if="scope.row.personnelTypeId !== dict.personOrgId">
|
|
{{ ldddw(dict.personnelType, "id", scope.row.personnelTypeId, "displayName") }}
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="jobPost" label="职务" />
|
|
<el-table-column prop="jobTitle" label="职称" />
|
|
<el-table-column prop="salesman" label="介绍人" />
|
|
<el-table-column prop="isVip" label="是否VIP">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.isVip == "Y" ? "是" : "否" }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="creatorName" label="登记人" />
|
|
<el-table-column prop="creationTime" label="登记日期" width="100">
|
|
<template slot-scope="scope">
|
|
<div>{{ lmoment(scope.row.creationTime, "yyyy-MM-DD") }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="isUpload" label="是否上传">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.isUpload == "Y" ? "是" : "否" }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
|
|
<!--
|
|
"sexHormoneTermId": "00000000-0000-0000-0000-000000000000",
|
|
"interposeMeasure": null,
|
|
"medicalConclusionId": "00000000-0000-0000-0000-000000000000",
|
|
"reportPrintTimes": 0,
|
|
"isMedicalStart": "N",
|
|
"medicalStartDate": "6/28/2023",
|
|
"isRecoverGuide": "N",
|
|
"summaryDate": "",
|
|
"summaryDoctor": null,
|
|
"isAudit": "N",
|
|
"auditDoctor": null,
|
|
"auditDate": "",
|
|
"isNameHide": "N",
|
|
"isPhoneFollow": "N",
|
|
"thirdInfo": null,
|
|
"guidePrintTimes": null,
|
|
"remark": null,
|
|
"organizationUnitId": "00000000-0000-0000-0000-000000000000",
|
|
"customerOrgRegisterId": "00000000-0000-0000-0000-000000000000",
|
|
"lastModifierName": "",
|
|
"lastModificationTime": null,
|
|
"lastModifierId": null,
|
|
"creatorId": null,
|
|
"id": "3a0c196d-a6d0-37fe-5c32-4806bdc4530f"
|
|
-->
|
|
</el-table>
|
|
<!-- 给合项目 基本信息 -->
|
|
<el-tabs v-model="tabChoosed">
|
|
<!-- 给合项目 -->
|
|
<el-tab-pane label="已选组合项目" name="1">
|
|
<PatientRegisterAsbItem />
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</div>
|
|
<div style="margin-left: 10px;width:110px;">
|
|
<div class="listBtn">
|
|
<el-button type="success" class="btnClass" @click="add">人员登记</el-button>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="btnClass" @click="edit">编辑</el-button>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="danger" class="btnClass" @click="del">删除</el-button>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="btnClass" @click="openCamera" icon="el-icon-camera">拍照</el-button>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="btnClass">健康档案</el-button>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="btnClass">调整分组</el-button>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="btnClass">调整项目</el-button>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="btnClass" @click="guidePrint">打指引单</el-button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 体检人员登记 -->
|
|
<el-dialog :title="patientRegister.patientRegisterId ? '体检人员--编辑' : '体检人员--新增'" :visible.sync="dialogVisible"
|
|
:close-on-click-modal="false" fullscreen>
|
|
<PatientRegisterEdit :formInitData="formInitData" :editTimes="editTimes" />
|
|
</el-dialog>
|
|
|
|
<!-- 拍照 -->
|
|
<el-dialog title="拍照" :visible.sync="patientRegister.cameraVisble" width="400" height="800" :show-close="false"
|
|
:append-to-body="true" :close-on-click-modal="false">
|
|
<Camera :id="patientRegister.patientRegisterId" />
|
|
</el-dialog>
|
|
|
|
<!-- 指引单 -->
|
|
<el-dialog title="指引单" :visible.sync="dialogGuide" width="400" height="800"
|
|
:append-to-body="true" :close-on-click-modal="false">
|
|
<div>{{ guideMsg }}</div>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
|
|
import moment from "moment";
|
|
import { mapState, mapActions } from "vuex";
|
|
import { getapi, postapi, putapi, deletapi } from "@/api/api";
|
|
import { dddw, objCopy, arrayReduce } from "@/utlis/proFunc";
|
|
|
|
import PatientRegisterEdit from "../../components/patientRegister/PatientRegisterEdit.vue";
|
|
import Camera from "../../components/patientRegister/Camera.vue";
|
|
import PatientRegisterAsbItem from "../../components/patientRegister/patientRegisterAsbItem.vue";
|
|
|
|
export default {
|
|
components: {
|
|
PatientRegisterEdit,
|
|
Camera,
|
|
PatientRegisterAsbItem,
|
|
},
|
|
data() {
|
|
return {
|
|
multipleSelection: [], //选中的数据列表
|
|
dialogVisible: false,
|
|
dialogCamera: false,
|
|
dialogGuide:false,
|
|
guideMsg:'guideMsg',
|
|
tabChoosed: "1",
|
|
formInitData: {}, //体检登记初始表单数据
|
|
editTimes: 0,
|
|
};
|
|
},
|
|
|
|
created() { },
|
|
|
|
//挂载完成
|
|
mounted() { },
|
|
computed: {
|
|
...mapState(["window", "dict", "patientRegister", "customerOrg"]),
|
|
},
|
|
methods: {
|
|
...mapActions(["getCustomerOrgGroup", "getPatientRegisterAbs"]),
|
|
|
|
// 打印指引单(isPreview)
|
|
async guidePrint(isPreview){
|
|
let token = localStorage.getItem('token');
|
|
let user = localStorage.getItem('user');
|
|
let toOutShell = '';
|
|
let lfind = -1;
|
|
|
|
|
|
if(this.multipleSelection.length < 1){
|
|
this.$message.info("请勾选要打印指引单的人员记录!");
|
|
return;
|
|
}
|
|
|
|
this.multipleSelection.forEach((item,index) =>{
|
|
getapi(`/api/app/printreport/getpatientregisterguidereport?PatientRegisterId=${item.id}`)
|
|
.then((res) => {
|
|
if (res.code != -1) {
|
|
res.data;
|
|
return this.$electronAPI.printPre('web 传入参数');
|
|
}
|
|
})
|
|
.then(res => {
|
|
if(res.toLowerCase() == 'success'){
|
|
//更新打印次数
|
|
return postapi('api/app/patientregister/updatepatientregisterguideprinttimesmany',[item.id])
|
|
}
|
|
})
|
|
.then(res =>{
|
|
if (res.code != -1) {
|
|
//
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
console.log(msg);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
handleSelectionChange(val) {
|
|
this.multipleSelection = val;
|
|
//console.log('this.multipleSelection',this.multipleSelection)
|
|
},
|
|
|
|
//获取单位分组 /api/app/customer-org-group/in-customer-org-id/3a0c0444-d7a0-871f-4074-19faf1655caf
|
|
getCustomerOrgGroup(customerOrgld) {
|
|
getapi(`/api/app/customer-org-group/in-customer-org-id/${customerOrgld}`)
|
|
.then((res) => {
|
|
console.log("getCustomerOrgGroup", res.data);
|
|
if (res.code == 1) {
|
|
this.patientRegister.customerOrgGroup = res.data;
|
|
}
|
|
});
|
|
},
|
|
|
|
//点击体检次数行
|
|
rowick(row) {
|
|
this.patientRegister.photo = ""; //清除照片缓存
|
|
|
|
this.patientRegister.patientRegisterId = row.id;
|
|
this.patientRegister.patientRegisterRd = row;
|
|
this.patientRegister.query.customerOrgParentId = row.customerOrgParentId;
|
|
this.patientRegister.customerOrgGroupChange = 0; //控制体检列表记录切换时,0 无需触发更换分组操作
|
|
this.patientRegister.medicalPackageChange = 0; //控制体检列表记录切换时,0 无需触发更换套餐操作
|
|
this.getCustomerOrgGroup(row.customerOrgParentId);
|
|
this.dict.asbItem = [...this.dict.asbItemAll]
|
|
this.getPatientRegisterAbs(row.id);
|
|
},
|
|
|
|
//体检次数 相关操作
|
|
add() {
|
|
let customerOrgId = this.patientRegister.query.customerOrgId;
|
|
if (!customerOrgId) {
|
|
alert("请选择单位或个人");
|
|
return;
|
|
}
|
|
//console.log('customerOrgId',customerOrgId)
|
|
// this.patientRegister.patientRegisterId = "";
|
|
// this.patientRegister.patientRegisterRd.photo = '';
|
|
// this.patientRegister.patientRegisterRdInit.id = "";
|
|
// this.patientRegister.patientRegisterRdInit.customerOrgId = this.patientRegister.query.customerOrgId;
|
|
// this.patientRegister.addTimes++;
|
|
// this.patientRegister.patientRegisterTimes++;
|
|
this.patientRegister.patientRegisterRdInit.customerOrgId = this.patientRegister.query.customerOrgId;
|
|
this.formInitData = { ...this.patientRegister.patientRegisterRdInit };
|
|
this.patientRegister.patientRegisterAbs = [];
|
|
this.dialogVisible = true;
|
|
this.editTimes++; //触发表单窗口,数据更新
|
|
this.getPatientRegisterAbs();
|
|
},
|
|
|
|
edit() {
|
|
if (!this.patientRegister.patientRegisterRd.id) {
|
|
alert("请选择要操作的记录");
|
|
return;
|
|
}
|
|
//this.patientRegister.patientRegisterTimes++;
|
|
this.getPatientRegisterAbs(this.patientRegister.patientRegisterRd.id);
|
|
this.formInitData = { ...this.patientRegister.patientRegisterRd };
|
|
this.dialogVisible = true;
|
|
this.editTimes++; //触发表单窗口,数据更新
|
|
},
|
|
|
|
//拍照
|
|
openCamera() {
|
|
if (!this.patientRegister.patientRegisterId) {
|
|
alert("请选择要操作的记录");
|
|
return;
|
|
}
|
|
this.patientRegister.cameraVisble = true;
|
|
},
|
|
|
|
//删除(可批量删除)
|
|
// /api/app/patient-register/many?PatientRegisterIds=3a0c2cac-f44c-f407-9504-c1fc5e80a159&PatientRegisterIds=3a0c2cb3-d10c-ed70-db6a-b835e75ce641
|
|
del() {
|
|
if (this.multipleSelection.length < 1) {
|
|
alert("请先勾选要操作的记录");
|
|
return;
|
|
}
|
|
let patientRegisterIds = [];
|
|
for (let i = 0; i < this.multipleSelection.length; i++) {
|
|
patientRegisterIds.push(this.multipleSelection[i]["id"]);
|
|
}
|
|
|
|
this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
type: "warning",
|
|
})
|
|
.then(() => {
|
|
//console.log('{patientRegisterIds}',{patientRegisterIds})
|
|
return postapi(`/api/app/patient-register/delete-many`, {
|
|
patientRegisterIds,
|
|
});
|
|
})
|
|
.then((res) => {
|
|
this.$message.success("删除成功");
|
|
this.patientRegister.query.times++;
|
|
this.patientRegister.patientRegisterId = "";
|
|
})
|
|
.catch(() => {
|
|
this.$message({
|
|
type: "info",
|
|
message: "已取消删除",
|
|
});
|
|
});
|
|
},
|
|
|
|
//单个删除方式
|
|
delBak() {
|
|
if (!this.patientRegister.patientRegisterId) {
|
|
alert("请选择要操作的记录");
|
|
return;
|
|
}
|
|
|
|
this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
type: "warning",
|
|
})
|
|
.then(() => {
|
|
//console.log('${this.patientRegister.patientRegisterId}',this.patientRegister.patientRegisterId)
|
|
return deletapi(`/api/app/patient-register/${this.patientRegister.patientRegisterId}`);
|
|
})
|
|
.then((res) => {
|
|
this.$message.success("删除成功");
|
|
this.patientRegister.query.times++;
|
|
this.patientRegister.patientRegisterId = "";
|
|
})
|
|
.catch(() => {
|
|
this.$message({ type: "info", message: "已取消删除", });
|
|
});
|
|
},
|
|
|
|
ldddw(arrayData, key, value, display) {
|
|
return dddw(arrayData, key, value, display);
|
|
},
|
|
|
|
lmoment(date, forMat) {
|
|
return moment(new Date(date)).format(forMat);
|
|
},
|
|
|
|
//查询
|
|
query() {
|
|
let body = {}
|
|
|
|
console.log(`this.patientRegister.query`, this.patientRegister.query)
|
|
if (this.patientRegister.query.customerOrgFlag) {
|
|
if (this.patientRegister.query.CustomerOrgParentId) {
|
|
body.customerOrgId = this.patientRegister.query.CustomerOrgParentId
|
|
} else {
|
|
if (this.patientRegister.query.customerOrgId) body.customerOrgId = this.patientRegister.query.customerOrgId
|
|
}
|
|
}
|
|
|
|
if (this.patientRegister.query.sex) body.sexId = this.patientRegister.query.sex
|
|
|
|
if (this.patientRegister.query.patientName) body.patientName = this.patientRegister.query.patientName
|
|
|
|
if (this.patientRegister.query.completeFlag) body.completeFlag = this.patientRegister.query.completeFlag
|
|
|
|
//StartDate EndDate
|
|
if (this.patientRegister.query.dateRange) {
|
|
body.startDate = moment(new Date(this.patientRegister.query.dateRange[0])).format("yyyy-MM-DD")
|
|
body.endDate = moment(new Date(this.patientRegister.query.dateRange[1])).format("yyyy-MM-DD")
|
|
}
|
|
|
|
|
|
if (this.patientRegister.query.idCardNo) body = { idNo: this.patientRegister.query.idCardNo }
|
|
|
|
if (this.patientRegister.query.patientNo) body = { patientNo: this.patientRegister.query.patientNo }
|
|
|
|
if (this.patientRegister.query.patientRegisterNo) body = { patientRegisterNo: this.patientRegister.query.patientRegisterNo }
|
|
|
|
|
|
console.log('/api/app/patientregister/getlistinfilter', body)
|
|
postapi('/api/app/patientregister/getlistinfilter', body)
|
|
.then((res) => {
|
|
this.patientRegister.prList = res.data;
|
|
});
|
|
},
|
|
|
|
},
|
|
|
|
//监听事件
|
|
watch: {
|
|
//触发查询事件
|
|
"patientRegister.query.times"(newVal, oldVal) {
|
|
if (newVal != oldVal) {
|
|
//alert('触发查询事件')
|
|
this.query();
|
|
}
|
|
},
|
|
|
|
//新增后,触发赋值
|
|
"patientRegister.patientRegisterRd.id"(newVal, oldVal) {
|
|
if (newVal != oldVal) {
|
|
//console.log('patientRegister.patientRegisterRd.customerOrgId',this.patientRegister.patientRegisterRd.customerOrgId)
|
|
objCopy(this.patientRegister.patientRegisterRd, this.form);
|
|
}
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style scoped>
|
|
.box {
|
|
display: flex;
|
|
}
|
|
|
|
.listBtn {
|
|
margin-top: 5px;
|
|
text-align: center;
|
|
}
|
|
|
|
.btnClass {
|
|
width: 110px;
|
|
}
|
|
</style>
|