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.
294 lines
10 KiB
294 lines
10 KiB
<template>
|
|
<div style="margin-top: -15px;">
|
|
<el-tabs v-model="tabChoosed" style="height: 510px;">
|
|
<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 :height="465" />
|
|
</el-tab-pane>
|
|
|
|
<el-tab-pane label="职业史" name="3">
|
|
<OccDiseaseHistory />
|
|
</el-tab-pane>
|
|
<el-tab-pane label="症状" name="4">
|
|
<OccDiseaseSymptom />
|
|
</el-tab-pane>
|
|
<el-tab-pane label="体征" name="5">
|
|
<CheckDetails />
|
|
</el-tab-pane>
|
|
<el-tab-pane label="图文报告" name="6">
|
|
<ImageTextReport />
|
|
</el-tab-pane>
|
|
<el-tab-pane label="职业健康检查结论" name="7">
|
|
<OccDiseaseConclusion />
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
<div style="display: flex;justify-content: space-between;">
|
|
<div></div>
|
|
<div>
|
|
<el-button v-if="false" @click="btnTest">测试</el-button>
|
|
<el-button class="deleteButton" @click="btnDel"
|
|
:disabled="dataTransOpts.tableS.patient_register.completeFlag == '3'">删除</el-button>
|
|
<el-button class="commonbutton" @click="btnOk">确定</el-button>
|
|
<el-button class="commonbutton" @click="btnClose">关闭</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import { mapState } from "vuex";
|
|
import { getapi, postapi, putapi, deletapi } from "@/api/api";
|
|
import { dddw, 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";
|
|
import CheckDetails from "./CheckDetails.vue";
|
|
import ImageTextReport from "./ImageTextReport.vue";
|
|
import OccDiseaseConclusion from "./OccDiseaseConclusion.vue";
|
|
|
|
export default {
|
|
components: {
|
|
OccDiseaseBase,
|
|
OccDiseasePrevious,
|
|
OccDiseasePoison,
|
|
OccDiseaseHistory,
|
|
OccDiseaseSymptom,
|
|
CheckDetails,
|
|
ImageTextReport,
|
|
OccDiseaseConclusion
|
|
},
|
|
props: ["patientRegisterId"],
|
|
data() {
|
|
return {
|
|
tabChoosed: "0",
|
|
};
|
|
},
|
|
|
|
created() {
|
|
|
|
},
|
|
|
|
//挂载完成
|
|
async mounted() {
|
|
await this.dictInit();
|
|
|
|
this.initOccDiseaseData()
|
|
|
|
},
|
|
|
|
computed: {
|
|
...mapState([
|
|
"window",
|
|
"dict",
|
|
"dataTransOpts",
|
|
"dialogWin"
|
|
]),
|
|
},
|
|
|
|
methods: {
|
|
|
|
//数据初始化
|
|
async dictInit() {
|
|
|
|
//职业病 接害因素
|
|
let res = await postapi("/api/app/Poison/GetPoisonWithTypeList")
|
|
if (res.code > -1) {
|
|
this.dict.poison = res.data;
|
|
this.dict.poisonList = []
|
|
this.dict.poison.forEach(e => {
|
|
e.poisonDtos.forEach(e2 => {
|
|
this.dict.poisonList.push({
|
|
poisonTypeName: e.poisonTypeName,
|
|
id: e2.id,
|
|
displayName: e2.displayName,
|
|
simpleCode: e2.simpleCode
|
|
})
|
|
});
|
|
});
|
|
}
|
|
|
|
// 职业病--症状列表
|
|
let res2 = await postapi("/api/app/Symptom/GetList")
|
|
if (res2.code > -1) {
|
|
this.dict.symptom = res2.data;
|
|
}
|
|
|
|
|
|
},
|
|
|
|
initOccDiseaseData() {
|
|
let patientRegisterId = this.dataTransOpts.tableS.patient_register.id
|
|
postapi('/api/app/OccupationalDisease/GetOccupationalDiseaseWithDetailByPatientRegisterId', { patientRegisterId })
|
|
.then(res => {
|
|
if (res.code > -1) {
|
|
this.dataTransOpts.tableS.patient_occupational_disease = deepCopy(res.data['patientOccupationalDisease']) || { patientRegisterId }
|
|
this.dataTransOpts.tableM.patient_past_medical_history = deepCopy(res.data['patientPastMedicalHistoryDtos'])
|
|
this.dataTransOpts.tableM.patient_occupational_medical_history = deepCopy(res.data['patientOccupationalMedicalHistoryDtos'])
|
|
this.dataTransOpts.tableM.patient_poison = deepCopy(res.data['patientPoisonDtos'])
|
|
// this.dataTransOpts.tableM.patient_poison.forEach(e => {
|
|
// e.poisonName = dddw(this.dict.poisonList,'id',e.poisonId,'displayName')
|
|
// });
|
|
this.dataTransOpts.tableM.patient_occupational_history = deepCopy(res.data['patientOccupationalHistoryDtos'])
|
|
if (Array.isArray(res.data['patientSymptomDtos']) && res.data['patientSymptomDtos'].length > 0) {
|
|
this.dataTransOpts.tableM.patient_symptom = deepCopy(res.data['patientSymptomDtos'])
|
|
} else {
|
|
this.dataTransOpts.tableM.patient_symptom = []
|
|
this.dict.symptom.forEach(e => {
|
|
// 男性 不显示月经/经期相关症状
|
|
if (!(this.dataTransOpts.tableS.patient_register.sexId != 'F' && (e.displayName.indexOf('月经') > -1 || e.displayName.indexOf('经期') > -1))) {
|
|
this.dataTransOpts.tableM.patient_symptom.push({ symptomId: e.id, symptomName: e.displayName, degree: '-' })
|
|
}
|
|
});
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
btnTest() {
|
|
console.log('this.dataTransOpts.tableS.patient_occupational_disease', this.dataTransOpts.tableS.patient_occupational_disease)
|
|
console.log('this.dataTransOpts.tableM.patient_poison', this.dataTransOpts.tableM.patient_poison)
|
|
console.log('this.dataTransOpts.tableM.patient_occupational_history', this.dataTransOpts.tableM.patient_occupational_history)
|
|
console.log('this.dataTransOpts.tableM.patient_symptom', this.dataTransOpts.tableM.patient_symptom)
|
|
},
|
|
|
|
btnDel() {
|
|
this.$confirm("此操作确定后将永久删除该记录, 是否继续?", "提示", {
|
|
confirmButtonText: "是",
|
|
cancelButtonText: "否",
|
|
type: "warning",
|
|
}).then(() => {
|
|
return postapi('/api/app/OccupationalDisease/DeleteOccupationalDiseaseWithDetail', { patientRegisterId: this.dataTransOpts.tableS.patient_register.id })
|
|
}).then(res => {
|
|
if (res && res.code > -1) {
|
|
this.dialogWin.OccDisease = false
|
|
}
|
|
})
|
|
},
|
|
|
|
// 数据验证
|
|
validiteData(){
|
|
let err = ''
|
|
let disease = this.dataTransOpts.tableS.patient_occupational_disease
|
|
if(!disease.ocCheckTypeId){
|
|
err = '请填写 检查类别'
|
|
return err
|
|
}
|
|
if(!disease.jobType){
|
|
err = '请填写 工种'
|
|
return err
|
|
}
|
|
|
|
if(!disease.riskFactors){
|
|
err = '请填写 基本信息-接害因素'
|
|
return err
|
|
}
|
|
|
|
if(disease.smokeFlag && disease.smokeFlag != '0'){
|
|
if(!disease.smokeNum){
|
|
err = '请填写 吸烟频次'
|
|
return err
|
|
}
|
|
if(!disease.smokeYears){
|
|
err = '请填写 烟龄'
|
|
return err
|
|
}
|
|
}
|
|
|
|
if(disease.drinkFlag && disease.drinkFlag != '0'){
|
|
if(!disease.drinkNum){
|
|
err = '请填写 饮酒频次'
|
|
return err
|
|
}
|
|
if(!disease.drinkYears){
|
|
err = '请填写 酒龄'
|
|
return err
|
|
}
|
|
}
|
|
|
|
this.dataTransOpts.tableM.patient_poison.forEach((e, i) => {
|
|
if (!e.poisonId) err = `接害因素,第 ${i + 1} 行,不能为空`
|
|
if (!e.occupationalAbnormalId) e.occupationalAbnormalId = null
|
|
});
|
|
|
|
// 日期为空串的,换成 null
|
|
this.dataTransOpts.tableM.patient_past_medical_history.forEach(e => {
|
|
if(!e.diagnosisDate) e.diagnosisDate = null
|
|
});
|
|
this.dataTransOpts.tableM.patient_occupational_medical_history.forEach(e => {
|
|
if(!e.diagnosisDate) e.diagnosisDate = null
|
|
});
|
|
this.dataTransOpts.tableM.patient_occupational_history.forEach(e => {
|
|
if(!e.beginDate) e.beginDate = null
|
|
if(!e.endDate) e.endDate = null
|
|
});
|
|
|
|
return err
|
|
},
|
|
// 点击确定
|
|
btnOk() {
|
|
let message = this.validiteData()
|
|
// console.log('this.dataTransOpts.tableM.patient_poison', this.dataTransOpts.tableM.patient_poison)
|
|
if (message) {
|
|
this.$message.warning({ showClose: true, message })
|
|
return
|
|
}
|
|
|
|
let body = {
|
|
patientRegisterId: this.dataTransOpts.tableS.patient_register.id,
|
|
patientOccupationalDisease: this.dataTransOpts.tableS.patient_occupational_disease,
|
|
patientPastMedicalHistorys: this.dataTransOpts.tableM.patient_past_medical_history,
|
|
patientOccupationalMedicalHistorys: this.dataTransOpts.tableM.patient_occupational_medical_history,
|
|
patientPoisons: this.dataTransOpts.tableM.patient_poison,
|
|
patientOccupationalHistorys: this.dataTransOpts.tableM.patient_occupational_history,
|
|
patientSymptoms: this.dataTransOpts.tableM.patient_symptom
|
|
}
|
|
|
|
postapi('/api/app/OccupationalDisease/CreateOccupationalDiseaseWithDetail', body)
|
|
.then(res => {
|
|
if (res.code > -1) {
|
|
this.$message.success({ showClose: true, message: "操作成功!" })
|
|
this.dataTransOpts.tableS.patient_occupational_disease.patientRegisterId = this.dataTransOpts.tableS.patient_register.id
|
|
return postapi('/api/app/OccupationalDisease/UpdateOccupationalDiseaseInspectionConclusion', this.dataTransOpts.tableS.patient_occupational_disease)
|
|
} else {
|
|
this.$message.warning({ showClose: true, message: res.message })
|
|
}
|
|
}).then(res => {
|
|
if (res && res.code > -1) {
|
|
this.dataTransOpts.plus.OccDisease++
|
|
}
|
|
})
|
|
},
|
|
|
|
// 点击关闭
|
|
btnClose() {
|
|
this.dialogWin.OccDisease = false
|
|
},
|
|
|
|
},
|
|
|
|
//监听事件()
|
|
watch: {
|
|
"dataTransOpts.plus.OccDisease": {
|
|
// immediate:true,
|
|
handler(newVal, oldVal) {
|
|
console.log(`watch 职业病 newVal: ${newVal}, oldVal: ${oldVal} `);
|
|
if (newVal != oldVal) this.initOccDiseaseData()
|
|
}
|
|
},
|
|
|
|
},
|
|
};
|
|
</script>
|
|
<style scoped>
|
|
@import '../../assets/css/global_card.css';
|
|
@import '../../assets/css/global_input.css';
|
|
@import '../../assets/css/global_table.css';
|
|
@import '../../assets/css/global.css';
|
|
</style>
|