Browse Source

doctor_check

master
pengjun 2 years ago
parent
commit
facc19cb06
  1. 44
      src/components/doctorCheck/ButtonList.vue
  2. 69
      src/components/doctorCheck/CheckItemList.vue
  3. 88
      src/components/doctorCheck/CheckSumSug.vue
  4. 146
      src/components/doctorCheck/PatientRegisterBase.vue
  5. 66
      src/components/doctorCheck/RegisterCheckList.vue
  6. 42
      src/components/patientRegister/PatientRegisterEdit.vue
  7. 12
      src/router/index.js
  8. 26
      src/store/index.js
  9. 14
      src/views/Home.vue
  10. 69
      src/views/doctorCheck/doctorCheck.vue
  11. 195
      src/views/doctorCheck/sumDoctorCheck.vue

44
src/components/doctorCheck/ButtonList.vue

@ -0,0 +1,44 @@
<template>
<div>
<div class="listBtn">
<el-button type="primary">人员列表</el-button>
</div>
<div class="listBtn">
<el-button type="primary">保存结果</el-button>
</div>
<div class="listBtn">
<el-button type="primary">修改结果</el-button>
</div>
<div class="listBtn">
<el-button type="primary">删除结果</el-button>
</div>
<div class="listBtn">
<el-button type="primary">历次结果</el-button>
</div>
<div class="listBtn">
<el-button type="primary">体检报告</el-button>
</div>
<div class="listBtn">
<el-button type="primary">生成小结</el-button>
</div>
<div class="listBtn">
<el-button type="primary">总检</el-button>
</div>
<div class="listBtn">
<el-button type="primary">审核</el-button>
</div>
<div class="listBtn">
<el-button type="primary">取消审核</el-button>
</div>
<div class="listBtn">
<el-button type="primary">排队</el-button>
</div>
</div>
</template>
<script>
</script>
<style scoped>
.listBtn {
margin-top: 10px;
}
</style>

69
src/components/doctorCheck/CheckItemList.vue

@ -0,0 +1,69 @@
<template>
<div>
<el-table :data="doctorCheck.checkItemList" style="width: 100%" height="350" border
@row-click="rowClick">
<el-table-column prop="itemName" label="项目" width="180" />
<el-table-column prop="itemName" label="结果" width="500" />
<el-table-column prop="itemName" label="单位" width="80" />
<el-table-column prop="itemName" label="参考范围" width="120" />
</el-table>
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
components: {},
data() {
return {
};
},
created() {},
//
mounted() {},
computed:{
...mapState(['dict','doctorCheck']),
},
methods: {
tableRowClassName({row, rowIndex}) {
if (row.completeFlag === '0') {
return 'warning-row'; //
} else if (row.completeFlag === '2') {
return 'refuse-row'; //
}
return '';
},
//
rowClick(row){
//registerCheckId
getapi(`/api/app/customer-org-group/in-customer-org-id/${customerOrgld}`)
.then((res) => {
console.log("getCustomerOrgGroup", res.data);
if (res.code == 1) {
this.doctorCheck.checkItemList = res.data;
}
})
.catch((err) => {
this.$message({type: "error",message: `操作失败,原因:${err}`});
});
},
},
};
</script>
<style scoped>
.el-table .warning-row {
background: rgb(240, 125, 125);
}
.el-table .refuse-row {
background: rgb(192, 192, 192);
}
</style>

88
src/components/doctorCheck/CheckSumSug.vue

@ -0,0 +1,88 @@
<template>
<div style="display: flex;">
<div style="width:50%;">
<el-table :data="doctorCheck.checkItemList" width="100%" height="350" border
@row-click="rowClick">
<el-table-column prop="itemName" label="小结" width="380" />
<el-table-column label="排序" width="50">
<template>
<el-tag class="move" style="cursor: move; margin-left: 15px" draggable="true" >
<i class="el-icon-d-caret" style="width: 1rem; height: 1rem"></i>
</el-tag>
</template>
</el-table-column>
</el-table>
</div>
<div style="width:50%;">
<el-table :data="doctorCheck.checkItemList" width="100%" height="350" border
@row-click="rowClick">
<el-table-column prop="itemName" label="建议" width="380" />
<el-table-column label="排序" width="50">
<template>
<el-tag class="move" style="cursor: move; margin-left: 15px" draggable="true" >
<i class="el-icon-d-caret" style="width: 1rem; height: 1rem"></i>
</el-tag>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
components: {},
data() {
return {
};
},
created() {},
//
mounted() {},
computed:{
...mapState(['dict','doctorCheck']),
},
methods: {
tableRowClassName({row, rowIndex}) {
if (row.completeFlag === '0') {
return 'warning-row'; //
} else if (row.completeFlag === '2') {
return 'refuse-row'; //
}
return '';
},
//
rowClick(row){
//registerCheckId
getapi(`/api/app/customer-org-group/in-customer-org-id/${customerOrgld}`)
.then((res) => {
console.log("getCustomerOrgGroup", res.data);
if (res.code == 1) {
this.doctorCheck.checkItemList = res.data;
}
})
.catch((err) => {
this.$message({type: "error",message: `操作失败,原因:${err}`});
});
},
},
};
</script>
<style scoped>
.el-table .warning-row {
background: rgb(240, 125, 125);
}
.el-table .refuse-row {
background: rgb(192, 192, 192);
}
</style>

146
src/components/doctorCheck/PatientRegisterBase.vue

@ -0,0 +1,146 @@
<template>
<div style="display: flex">
<div style="display: flex; flex-wrap: wrap; width: 100%">
<div class="query">
<span>条码号</span>
<el-input placeholder="条码号" v-model="doctorCheck.prBase.patientRegisterNo" size="small" style="width: 140px"
clearable @blur="onQueryByPatientRegisterNo(doctorCheck.prBase.patientRegisterNo)"/>
</div>
<div class="query">
<span>档案号</span>
<el-input placeholder="档案号" v-model="doctorCheck.prBase.patientNo" size="small" style="width: 130px"
clearable @blur="onQueryByPatientNo(doctorCheck.prBase.patientNo)"/>
</div>
<div class="query">
<span>姓名</span>
<el-input placeholder="姓名" v-model="doctorCheck.prBase.patientName" size="small" style="width: 100px"
clearable @blur="onQuery()"/>
</div>
<div class="query">
<span>性别</span>
<el-select v-model="doctorCheck.prBase.sex" style="width: 80px" size="small" disabled>
<el-option v-for="item in dict.sex" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span>体检次数</span>
<el-input v-model="doctorCheck.prBase.medicalTimes" size="small" style="width: 40px" disabled/>
</div>
<div class="query">
<span>婚姻</span>
<el-select v-model="doctorCheck.prBase.maritalStatusId" style="width: 80px" size="small" disabled>
<el-option v-for="item in dict.maritalStatus" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span>体检日期</span>
<el-input :value="doctorCheck.prBase.creationTime ? lmoment(doctorCheck.prBase.creationTime, 'yyyy-MM-DD') :''" style="width: 100px" size="small" disabled></el-input>
</div>
<div class="query">
<span>单位</span>
<el-input :value="doctorCheck.prBase.customerOrgParentName" style="width: 120px" size="small" disabled />
</div>
<div class="query">
<span>部门</span>
<el-input :value="doctorCheck.prBase.customerOrgName" style="width: 120px" size="small" disabled />
</div>
<div class="query">
<span>体检类别</span>
<el-select v-model="doctorCheck.prBase.medicalTypeId" disabled style="width: 80px" size="small">
<el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span>人员类别</span>
<el-select v-model="doctorCheck.prBase.personnelTypeId" disabled style="width: 80px" size="small">
<el-option v-for="item in dict.personnelType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span>民族</span>
<el-select v-model="doctorCheck.prBase.nationId" disabled style="width: 80px" size="small">
<el-option v-for="item in dict.nation" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span>手机</span>
<el-input :value="doctorCheck.prBase.mobileTelephone" style="width: 120px" size="small" disabled />
</div>
</div>
</div>
</template>
<script>
import moment from "moment";
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
export default {
components: {},
data() {
return {
dialogVisible: false,
pickerOptions: {
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
},
},
],
},
};
},
created() {},
//
mounted() {},
computed: {
...mapState(["dict", "doctorCheck","patientRegister", "customerOrg"]),
lmoment(date, forMat) {
return moment(new Date(date)).format(forMat);
},
},
methods: {
//
btnQuery() {
this.doctorCheck.prBase.times++;
console.log("this.doctorCheck.prBase", this.doctorCheck.prBase);
},
//
readIdCard() {
alert("读身份证");
},
},
};
</script>
<style scoped>
.query {
margin-left: 10px;
}
</style>

66
src/components/doctorCheck/RegisterCheckList.vue

@ -0,0 +1,66 @@
<template>
<div>
<el-table :data="doctorCheck.RegisterCheckList" style="width: 100%" height="700" border
:row-class-name="tableRowClassName" @row-click="rowClick">
<el-table-column prop="asbitemName" label="组合项目" width="180" />
</el-table>
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
components: {},
data() {
return {
};
},
created() {},
//
mounted() {},
computed:{
...mapState(['dict','doctorCheck']),
},
methods: {
tableRowClassName({row, rowIndex}) {
if (row.completeFlag === '0') {
return 'warning-row'; //
} else if (row.completeFlag === '2') {
return 'refuse-row'; //
}
return '';
},
//
rowClick(row){
//registerCheckId
getapi(`/api/app/customer-org-group/in-customer-org-id/${customerOrgld}`)
.then((res) => {
console.log("getCustomerOrgGroup", res.data);
if (res.code == 1) {
this.doctorCheck.checkItemList = res.data;
}
})
.catch((err) => {
this.$message({type: "error",message: `操作失败,原因:${err}`});
});
},
},
};
</script>
<style scoped>
.el-table .warning-row {
background: rgb(240, 125, 125);
}
.el-table .refuse-row {
background: rgb(192, 192, 192);
}
</style>

42
src/components/patientRegister/PatientRegisterEdit.vue

@ -108,35 +108,15 @@
<el-row>
<el-col :span="6">
<el-form-item label="体检类别" prop="medicalTypeId">
<el-select
v-model="form.medicalTypeId"
placeholder="请选择"
filterable
>
<el-option
v-for="item in dict.medicalType"
:key="item.id"
:label="item.displayName"
:value="item.id"
>
</el-option>
<el-select v-model="form.medicalTypeId" placeholder="请选择" filterable>
<el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="人员类别" prop="personnelTypeId">
<el-select
v-model="form.personnelTypeId"
placeholder="请选择"
filterable
>
<el-option
v-for="item in dict.personnelType"
:key="item.id"
:label="item.displayName"
:value="item.id"
>
</el-option>
<el-select v-model="form.personnelTypeId" placeholder="请选择" filterable>
<el-option v-for="item in dict.personnelType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
@ -195,18 +175,8 @@
</el-col>
<el-col :span="6">
<el-form-item label="民族" prop="nationId">
<el-select
v-model="form.nationId"
placeholder="请选择"
filterable
>
<el-option
v-for="item in dict.nation"
:key="item.id"
:label="item.displayName"
:value="item.id"
>
</el-option>
<el-select v-model="form.nationId" placeholder="请选择" filterable>
<el-option v-for="item in dict.nation" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>

12
src/router/index.js

@ -233,6 +233,18 @@ const routes = [
import("../views/customerOrg/patientRegisterRefuse.vue"),
},
//---------------------- 体检登记 start ----------------------
//---------------------- 体 检 start ----------------------
{
path: "/doctorCheck",
name: "体检医生诊台",
component: () => import("../views/doctorCheck/doctorCheck.vue"),
},
{
path: "/sumDoctorCheck",
name: "总检医生诊台",
component: () => import("../views/doctorCheck/sumDoctorCheck.vue"),
},
//---------------------- 体 检 end ----------------------
],
},
];

26
src/store/index.js

@ -96,6 +96,32 @@ export default new Vuex.Store({
patientRegisterAbs: [], //人员已选组合项目
},
//体检医生诊台
doctorCheck:{
prBase:{
id:'', //体检登记ID
patientRegisterNo:'', //条码号
patientNo:'', //档案号
patientName:'', //姓名
sex:'', //性别
medicalTimes:'', //体检次数
maritalStatusId:'', //婚姻
creationTime:'', //体检日期
customerOrgParentName:'', //单位
customerOrgName:'', //部门
medicalTypeId:'', //体检类别
personnelTypeId:'', //人员类别
nationId:'', //民族
mobileTelephone:'', //手机
}, //人员体检登记显示基本信息
RegisterCheckList:[], //人员体检 组合项目列表
checkItemList:[], //组合项目包含的明细项目
checkSummaryList:[], //小结
checkSuggestionList:[], //建议
},
//公共字典数据 add by pengjun
dict: {
personOrgId: "00000000-0000-0000-0000-000000000000", //个人体检单位ID

14
src/views/Home.vue

@ -213,6 +213,20 @@
<i class="el-icon-menu"></i> <span slot="title">弃检登记</span>
</el-menu-item>
</el-submenu>
<el-submenu index="6">
<template slot="title">
<i class="el-icon-document"></i>
<span>体检</span>
</template>
<el-menu-item index="doctorCheck">
<i class="el-icon-menu"></i>
<span slot="title">体检医生诊台</span>
</el-menu-item>
<el-menu-item index="sumDoctorCheck">
<i class="el-icon-menu"></i>
<span slot="title">总检医生诊台</span>
</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
<el-main>

69
src/views/doctorCheck/doctorCheck.vue

@ -1,30 +1,28 @@
<template>
<div class="box">
<div style="width: 100%">
<el-card>
<div style="display: flex">
<!-- 单位树组件 -->
<div style="width: 15%; border: 1px solid">
<CustomerOrgTreeAll />
</div>
<div style="margin-left: 10px; width: 85%">
<!-- 查询条件 -->
<PatientRegisterQuery />
<!-- 人员列表信息 -->
<PatientRegisterList />
<!-- 给合项目 基本信息 -->
<el-tabs v-model="tabChoosed">
<!-- 给合项目 -->
<el-tab-pane label="组合项目" name="1">
<PatientRegisterAsbItem />
</el-tab-pane>
</el-tabs>
</div>
</div>
</el-card>
</div>
<div style="display: flex;">
<table width="100%">
<tr>
<td colspan="2" width="90%">
<PatientRegisterBase/>
</td>
<td rowspan="3" width="10%">
<ButtonList/>
</td>
</tr>
<tr>
<td rowspan="2" width="15%" >
<RegisterCheckList/>
</td>
<td width="75%">
<CheckItemList/>
</td>
</tr>
<tr>
<td width="75%">
<CheckSumSug/>
</td>
</tr>
</table>
</div>
</template>
<script>
@ -32,17 +30,20 @@
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { tcdate } from "../../utlis/proFunc";
import CustomerOrgTreeAll from "../../components/patientRegister/customerOrgTreeAll.vue";
import PatientRegisterQuery from "../../components/patientRegister/patientRegisterQuery.vue";
import PatientRegisterList from "../../components/patientRegister/PatientRegisterList.vue";
import PatientRegisterAsbItem from "../../components/patientRegister/patientRegisterAsbItem.vue";
import PatientRegisterBase from "../../components/doctorCheck/PatientRegisterBase.vue";
import ButtonList from "../../components/doctorCheck/ButtonList.vue";
import RegisterCheckList from "../../components/doctorCheck/RegisterCheckList.vue";
import CheckItemList from "../../components/doctorCheck/CheckItemList.vue";
import CheckSumSug from "../../components/doctorCheck/CheckSumSug.vue";
export default {
components: {
CustomerOrgTreeAll,
PatientRegisterQuery,
PatientRegisterList,
PatientRegisterAsbItem,
RegisterCheckList,
PatientRegisterBase,
ButtonList,
CheckItemList,
CheckSumSug,
},
data() {
return {

195
src/views/doctorCheck/sumDoctorCheck.vue

@ -1,194 +1,3 @@
<template>
<div class="box">
<div style="width: 100%">
<el-card>
<div style="display: flex">
<!-- 单位树组件 -->
<div style="width: 15%; border: 1px solid">
<CustomerOrgTreeAll />
</div>
<div style="margin-left: 10px; width: 85%">
<!-- 查询条件 -->
<PatientRegisterQuery />
<!-- 人员列表信息 -->
<PatientRegisterList />
<!-- 给合项目 基本信息 -->
<el-tabs v-model="tabChoosed">
<!-- 给合项目 -->
<el-tab-pane label="组合项目" name="1">
<PatientRegisterAsbItem />
</el-tab-pane>
</el-tabs>
</div>
</div>
</el-card>
</div>
</div>
</template>
<script>
import { mapState, mapActions } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { tcdate } from "../../utlis/proFunc";
import CustomerOrgTreeAll from "../../components/patientRegister/customerOrgTreeAll.vue";
import PatientRegisterQuery from "../../components/patientRegister/patientRegisterQuery.vue";
import PatientRegisterList from "../../components/patientRegister/PatientRegisterList.vue";
import PatientRegisterAsbItem from "../../components/patientRegister/patientRegisterAsbItem.vue";
export default {
components: {
CustomerOrgTreeAll,
PatientRegisterQuery,
PatientRegisterList,
PatientRegisterAsbItem,
},
data() {
return {
tabChoosed: "1",
};
},
created() {},
//
mounted() {
this.dictInit();
},
computed: {
...mapState(["dict", "patientRegister", "customerOrg"]),
},
methods: {
...mapActions(["getCustomerOrgGroup"]),
//
dictInit() {
//
getapi("/api/app/sex").then((res) => {
if (res.code == 1) {
this.dict.sex = res.data;
}
});
//
getapi("/api/app/organization-units/organization-unit-by-is-peis").then(
(res) => {
if (res.code == 1) {
this.dict.organization = res.data;
}
}
);
//
getapi("/api/app/customer-org/in-filter").then((res) => {
if (res.code == 1) {
this.dict.customerOrg = res.data.items;
}
});
//
getapi("/api/app/medical-type/in-filter").then((res) => {
if (res.code == 1) {
this.dict.medicalType = res.data.items;
}
});
//
getapi("/api/app/personnel-type/in-filter").then((res) => {
if (res.code == 1) {
this.dict.personnelType = res.data.items;
}
});
//
getapi("/api/app/marital-statuses").then((res) => {
if (res.code == 1) {
this.dict.maritalStatus = res.data.items;
}
});
//
getapi("/api/app/sex-hormone-term/in-filter").then((res) => {
if (res.code == 1) {
this.dict.sexHormoneTerm = res.data.items;
}
});
//
getapi("/api/app/nation/in-filter").then((res) => {
if (res.code == 1) {
this.dict.nation = res.data.items;
}
});
//
getapi("/api/app/birth-place/in-filter").then((res) => {
if (res.code == 1) {
this.dict.birthPlace = res.data.items;
}
});
//
getapi("/api/app/medical-package/in-filter").then((res) => {
if (res.code == 1) {
this.dict.medicalPackage = res.data.items;
}
});
//
getapi("/api/app/customer-org-group").then((res) => {
if (res.code == 1) {
this.dict.customerOrgGroupAll = res.data.items;
}
});
//
getapi("/api/app/pay-mode").then((res) => {
if (res.code == 1) {
this.dict.payMode = res.data;
}
});
//
getapi("/api/app/item-type/by-code-all").then((res) => {
if (res.code == 1) {
this.dict.itemTypeTree = res.data;
tcdate(this.dict.itemTypeTree);
}
});
getapi("/api/app/asbitem/in-filter?Filter").then((res) => {
if (res.code == 1) {
this.dict.asbItemAll = res.data.items;
}
});
console.log("dict", this.dict);
},
},
//()
watch: {
//1
"patientRegister.query.CustomerOrgParentld"(newVal, oldVal) {
console.log(
"watch patientRegister.query.CustomerOrgParentld newVal:",
newVal,
" oldVal:",
oldVal
);
if (newVal != oldVal && newVal !== this.dict.personOrgId) {
this.getCustomerOrgGroup(newVal);
}
},
},
};
</script>
<style scoped>
.box {
display: flex;
}
</style>
<div>开发中</div>
</template>
Loading…
Cancel
Save