Browse Source

report

master
pengjun 2 years ago
parent
commit
0ab6d73daf
  1. 4
      src/components/occDisease/CheckDetails.vue
  2. 19
      src/components/occDisease/OccDisease.vue
  3. 42
      src/components/occDisease/OccDiseaseBase.vue
  4. 16
      src/components/occDisease/OccDiseasePoison.vue
  5. 238
      src/components/occDisease/OccDiseasePrevious.vue
  6. 16
      src/components/report/BtnReport.vue
  7. 5
      src/components/report/PatientRegisterListNobtn.vue
  8. 1
      src/store/index.js

4
src/components/occDisease/CheckDetails.vue

@ -102,11 +102,11 @@ export default {
//
watch: {
// sumDoctor.M
"dataTransOpts.refresh.sumDoctor.M": {
"dataTransOpts.plus.OccDisease": {
// immediate:true,
handler(newVal, oldVal) {
console.log(`watch 总检--检查明细结果 newVal: ${newVal}, oldVal: ${oldVal} patientRegisterId: ${this.dataTransOpts.tableS.patient_register.id}`);
if(newVal != oldVal && this.tabChoosed == '2') this.CheckDetails(this.dataTransOpts.tableS.patient_register.id);
if(newVal != oldVal) this.CheckDetails(this.dataTransOpts.tableS.patient_register.id);
}
},

19
src/components/occDisease/OccDisease.vue

@ -1,10 +1,12 @@
<template>
<div style="margin-top: -15px;">
<el-tabs v-model="tabChoosed" style="height: 510px;">
<el-tab-pane label="基本信息" name="1">
<el-tab-pane label="基本信息" name="0">
<OccDiseaseBase />
</el-tab-pane>
<el-tab-pane label="既往病史" name="1">
<OccDiseasePrevious/>
</el-tab-pane>
<el-tab-pane label="接害因素检查结论" name="2">
<OccDiseasePoison />
</el-tab-pane>
@ -18,10 +20,10 @@
<el-tab-pane label="体征" name="5">
<CheckDetails />
</el-tab-pane>
<el-tab-pane label="图文报告" name="5">
<CheckDetails />
<el-tab-pane label="图文报告" name="6">
</el-tab-pane>
<el-tab-pane label="职业健康检查结论" name="6">
<el-tab-pane label="职业健康检查结论" name="7">
<OccDiseaseConclusion />
</el-tab-pane>
</el-tabs>
@ -41,6 +43,7 @@ import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { deepCopy } from "../../utlis/proFunc";
import OccDiseaseBase from "./OccDiseaseBase.vue";
import OccDiseasePrevious from "./OccDiseasePrevious.vue";
import OccDiseasePoison from "./OccDiseasePoison.vue";
import OccDiseaseHistory from "./OccDiseaseHistory.vue";
import OccDiseaseSymptom from "./OccDiseaseSymptom.vue";
@ -50,6 +53,7 @@ import OccDiseaseConclusion from "./OccDiseaseConclusion.vue";
export default {
components: {
OccDiseaseBase,
OccDiseasePrevious,
OccDiseasePoison,
OccDiseaseHistory,
OccDiseaseSymptom,
@ -59,7 +63,7 @@ export default {
props: ["patientRegisterId"],
data() {
return {
tabChoosed: "1",
tabChoosed: "0",
};
},
@ -119,8 +123,7 @@ export default {
this.dataTransOpts.tableM.patient_occupational_history = deepCopy(res.data['patientOccupationalHistoryDtos'])
this.dataTransOpts.tableM.patient_symptom = deepCopy(res.data['patientSymptomDtos'])
}
})
this.dataTransOpts.refresh.sumDoctor.M++ //
})
},
btnTest() {

42
src/components/occDisease/OccDiseaseBase.vue

@ -25,6 +25,23 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="接害因素" >
<el-input type="textarea" v-model="dataTransOpts.tableS.patient_occupational_disease.poisonFactors" size="small"
:autosize="{ minRows: 1, maxRows: 10 }"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="家族遗传史" >
<el-input type="textarea" v-model="dataTransOpts.tableS.patient_occupational_disease.familyGeneticHistory" size="small"
:autosize="{ minRows: 1, maxRows: 10 }"></el-input>
</el-form-item>
</el-col>
</el-row>
<!--
<el-row>
<el-col :span="24">
<el-form-item label="一、既往病史:" label-width="105px">
@ -57,8 +74,9 @@
<el-checkbox v-model="dataTransOpts.tableS.patient_occupational_disease.recovery" true-label="Y" false-label="N"></el-checkbox>
</el-form-item>
</el-col>
</el-row>
<el-row>
</el-row>
-->
<el-row v-show="dataTransOpts.tableS.patient_register.sexId == 'F'">
<el-col :span="8">
<el-form-item label="三、月经史: 初经" label-width="120px">
<el-input type="number" v-model="dataTransOpts.tableS.patient_occupational_disease.firstMenstruation" size="small">
@ -81,9 +99,9 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row v-show="dataTransOpts.tableS.patient_register.sexId == 'F'">
<el-col :span="8">
<el-form-item label="是否经" label-width="120px">
<el-form-item label="是否经" label-width="120px">
<el-checkbox v-model="dataTransOpts.tableS.patient_occupational_disease.menstruationFlag" true-label="Y" false-label="N"></el-checkbox>
</el-form-item>
</el-col>
@ -101,7 +119,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row v-show="dataTransOpts.tableS.patient_register.sexId == 'F'">
<el-col :span="8">
<el-form-item label="四、生育史:现有子女" label-width="145px">
<el-input type="number" v-model="dataTransOpts.tableS.patient_occupational_disease.childrenNum" size="small">
@ -304,13 +322,13 @@ export default {
watch: {
// id
"dataTransOpts.refresh.contact_person.S": {
// immediate: true,
handler(newVal, oldVal) {
console.log(`watch 联系人 newVal:${newVal} oldVal:${oldVal} customerOrgId: ${this.dataTransOpts.tableS.contact_person.id}`);
this.getFormData(this.dataTransOpts.tableS.contact_person.id)
}
},
// "dataTransOpts.refresh.contact_person.S": {
// // immediate: true,
// handler(newVal, oldVal) {
// console.log(`watch newVal:${newVal} oldVal:${oldVal} customerOrgId: ${this.dataTransOpts.tableS.contact_person.id}`);
// this.getFormData(this.dataTransOpts.tableS.contact_person.id)
// }
// },
},
};

16
src/components/occDisease/OccDiseasePoison.vue

@ -2,7 +2,7 @@
<div>
<el-table :data="dataTransOpts.tableM.patient_poison" border height="465" row-key="id" size="small"
highlight-current-row ref="patientPoison">
<el-table-column prop="poisonId" label="害因素" min-width="200">
<el-table-column prop="poisonId" label="害因素" min-width="200">
<template slot-scope="scope">
<el-select v-model="scope.row.poisonId" size="small" style="width:220px" clearable filterable
:filter-method="filterMethod">
@ -12,10 +12,16 @@
</el-select>
</template>
</el-table-column>
<el-table-column prop="occupationalAbnormalId" label="职业体检结论" min-width="80" align="center" />
<el-table-column prop="occupationalContraindicationsId" label="职业禁忌症" min-width="80" align="center" />
<el-table-column prop="suspectedOccupationalDiseaseId" label="疑似职业病" min-width="80" align="center" />
<el-table-column prop="otherDiseases" label="其他疾病" min-width="80" align="center" />
<el-table-column prop="occupationalAbnormalId" label="接害因素检查结论" min-width="200" align="center">
<template slot-scope="scope">
<el-select v-model="scope.row.occupationalAbnormalId" size="small" style="width:220px" clearable filterable
:filter-method="filterMethod">
<el-option-group v-for="group in postion" :key="group.poisonTypeName" :label="group.poisonTypeName">
<el-option v-for="item in group.poisonDtos" :key="item.id" :label="item.displayName" :value="item.id" />
</el-option-group>
</el-select>
</template>
</el-table-column>
<el-table-column prop="lastModifierName" label="修改人员" min-width="80" align="center" />
<el-table-column prop="lastModificationTime" label="修改时间" min-width="150" align="center" />
<el-table-column prop="creatorName" label="创建人员" min-width="80" align="center" />

238
src/components/occDisease/OccDiseasePrevious.vue

@ -0,0 +1,238 @@
<template>
<div>
<div style="margin-left: 10px;font-weight: 700;">既往病史</div>
<el-table :data="dataTransOpts.tableM.patient_previous" border height="200" row-key="id" size="small"
highlight-current-row ref="Previous">
<el-table-column prop="disease" label="疾病名称" min-width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.disease" size="small"/>
</template>
</el-table-column>
<el-table-column prop="diagnosisDate" label="诊断日期" min-width="100">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.diagnosisDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="诊断日期" size="small" />
</template>
</el-table-column>
<el-table-column prop="disease" label="诊断单位" min-width="200">
<template slot-scope="scope">
<el-input v-model="scope.row.diagnosisHospital" size="small"/>
</template>
</el-table-column>
<el-table-column prop="recovery" label="治愈" min-width="40" align="center">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.recovery" true-label="Y" false-label="N"></el-checkbox>
</template>
</el-table-column>
<el-table-column prop="handleMode" label="治疗方式" min-width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.handleMode" size="small"/>
</template>
</el-table-column>
<el-table-column prop="lastModifierName" label="修改人员" min-width="80" align="center" />
<el-table-column prop="lastModificationTime" label="修改时间" min-width="150" align="center" />
<el-table-column prop="creatorName" label="创建人员" min-width="80" align="center" />
<el-table-column prop="creationTime" label="创建时间" min-width="150" align="center" />
<el-table-column fixed="right" width="30" align="center">
<template slot="header">
<div style="display: flex;justify-content:space-between;">
<div></div>
<div>
<i class="el-icon-plus" @click="btnAdd" style="font-size: 24px;color: blue;cursor:pointer;"></i>
</div>
</div>
</template>
<template slot-scope="scope">
<i class="el-icon-delete" @click="deleteRow(scope.$index)"
style="font-size: 24px;color: red;cursor:pointer;"></i>
</template>
</el-table-column>
</el-table>
<div style="margin: 10px 0 0 10px;font-weight: 700;">职业病史</div>
<el-table :data="dataTransOpts.tableM.patient_previous" border height="200" row-key="id" size="small"
highlight-current-row ref="Previous">
<el-table-column prop="disease" label="疾病名称" min-width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.disease" size="small"/>
</template>
</el-table-column>
<el-table-column prop="diagnosisDate" label="诊断日期" min-width="100">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.diagnosisDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="诊断日期" size="small" />
</template>
</el-table-column>
<el-table-column prop="disease" label="诊断单位" min-width="200">
<template slot-scope="scope">
<el-input v-model="scope.row.diagnosisHospital" size="small"/>
</template>
</el-table-column>
<el-table-column prop="recovery" label="治愈" min-width="40" align="center">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.recovery" true-label="Y" false-label="N"></el-checkbox>
</template>
</el-table-column>
<el-table-column prop="handleMode" label="治疗方式" min-width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.handleMode" size="small"/>
</template>
</el-table-column>
<el-table-column prop="lastModifierName" label="修改人员" min-width="80" align="center" />
<el-table-column prop="lastModificationTime" label="修改时间" min-width="150" align="center" />
<el-table-column prop="creatorName" label="创建人员" min-width="80" align="center" />
<el-table-column prop="creationTime" label="创建时间" min-width="150" align="center" />
<el-table-column fixed="right" width="30" align="center">
<template slot="header">
<div style="display: flex;justify-content:space-between;">
<div></div>
<div>
<i class="el-icon-plus" @click="btnAdd" style="font-size: 24px;color: blue;cursor:pointer;"></i>
</div>
</div>
</template>
<template slot-scope="scope">
<i class="el-icon-delete" @click="deleteRow(scope.$index)"
style="font-size: 24px;color: red;cursor:pointer;"></i>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import moment from "moment";
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { getPagePriv, checkPagePriv, objCopy, deepCopy, arrayExistObj } from "../../utlis/proFunc";
export default {
components: {},
props: ["refFunc"],
data() {
return {
pagePriv: {
routeUrlorPageName: 'customerOrg', //
privs: [] //
},
postion: [
{
poisonTypeName: "职业史",
poisonDtos: [
{
id: "3a12ad8e-3b84-75a2-415e-c03ed69bda66",
displayName: "噪声,粉尘",
simpleCode: "ZS,FC"
}
]
}
], //
};
},
created() {
//
let userPriv = window.sessionStorage.getItem('userPriv')
if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
},
//
mounted() {
this.$nextTick(() => {
this.postion = deepCopy(this.dict.postion)
})
},
computed: {
...mapState(["window", "dict", "dialogWin", "dataTransOpts"]),
},
methods: {
moment, checkPagePriv,
filterMethod(v) {
if (v) {
let lv = v.toUpperCase()
let postion = []
let postionList = this.dict.postionList.filter(e => {
return e.poisonTypeName.indexOf(lv) > -1 || e.displayName.indexOf(lv) > -1 || e.simpleCode.indexOf(lv) > -1
})
postionList.forEach(e => {
let lfind = arrayExistObj(postion, "poisonTypeName", e.poisonTypeName)
if (lfind == -1) {
postion.push({ poisonTypeName: e.poisonTypeName, poisonDtos: [{ id: e.id, displayName: e.displayName, simpleCode: e.simpleCode }] })
} else {
postion[lfind]['poisonDtos'].push({ id: e.id, displayName: e.displayName, simpleCode: e.simpleCode })
}
});
this.postion = postion
} else {
this.postion = deepCopy(this.dict.postion)
}
console.log('filterMethod', v)
},
//
deleteRow(index) {
this.$confirm("此操作确定后将永久删除该记录, 是否继续?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
}).then(() => {
this.dataTransOpts.tableM.patient_previous.splice(index, 1);
//this.submit('form');
}).catch((err) => {
if (err != 'cancel') {
this.$message.info({ showClose: true, message: err });
}
});
},
//
btnAdd() {
this.postion = deepCopy(this.dict.postion)
this.dataTransOpts.tableM.patient_previous.push({
patientRegisterId: this.patientRegisterId,
poisonId: ''
});
},
},
watch: {
// id
"dataTransOpts.refresh.contact_person.S": {
// immediate: true,
handler(newVal, oldVal) {
console.log(`watch 联系人 newVal:${newVal} oldVal:${oldVal} customerOrgId: ${this.dataTransOpts.tableS.contact_person.id}`);
this.getFormData(this.dataTransOpts.tableS.contact_person.id)
}
},
// 'customerOrgId' (newVal,oldVal){
// console.log('watch customerOrgId',newVal,oldVal)
// if(newVal != oldVal){
// this.personId = ''
// }
// }
},
};
</script>
<style scoped>
@import '../../assets/css/global_table.css';
@import '../../assets/css/global_input.css';
@import '../../assets/css/global_form.css';
@import '../../assets/css/global_dialog.css';
::v-deep .el-select-group__title {
font-size: 15px;
background-color: #EEEEEE;
color: black;
font-weight: 700;
}
.btnClass {
width: 110px;
}
</style>

16
src/components/report/BtnReport.vue

@ -18,6 +18,9 @@
<div class="listBtn">
<el-button type="primary" class="commonbutton" @click="btnGetReport">领用报告</el-button>
</div>
<div class="listBtn">
<el-button type="primary" class="commonbutton" @click="btnUpReport">上传报告</el-button>
</div>
</div>
</template>
<script>
@ -89,6 +92,19 @@ export default {
this.dataTransOpts.tableS.patient_register.completeFlag = '2'
},
//
async btnUpReport() {
if(this.dataTransOpts.tableM.patient_register && this.dataTransOpts.tableM.patient_register.length > 0){
this.$message.warning({ showClose: true, message: "暂未开放……" })
}else{
this.$message.warning({ showClose: true, message: "请勾选择记录!" })
return
}
},
//

5
src/components/report/PatientRegisterListNobtn.vue

@ -160,7 +160,7 @@ export default {
props: ['fromType'],
data() {
return {
multipleSelection: [], //
dialogVisible: false,
dialogCamera: false,
dialogGuide: false,
@ -202,8 +202,7 @@ export default {
dddw, setPrStatusColor,
handleSelectionChange(val) {
this.multipleSelection = val;
//console.log('this.multipleSelection',this.multipleSelection)
this.dataTransOpts.tableM.patient_register = val
},
// /api/app/customer-org-group/in-customer-org-id/3a0c0444-d7a0-871f-4074-19faf1655caf

1
src/store/index.js

@ -392,6 +392,7 @@ export default new Vuex.Store({
patient_poison: [], // 病人毒害因素
patient_occupational_history: [],// 病人职业史
patient_symptom: [], // 病人症状
patient_previous:[], // 既往病史
},
plus: {
PatientRegisterEditQuery: 0, // 更新查询条件

Loading…
Cancel
Save