diff --git a/public/pic/hisLog.jpg b/public/pic/hisLog.jpg index 28d29ab..bdeb5c5 100644 Binary files a/public/pic/hisLog.jpg and b/public/pic/hisLog.jpg differ diff --git a/public/pic/peisQrCode.jpg b/public/pic/peisQrCode.jpg index 9bbe88b..8975082 100644 Binary files a/public/pic/peisQrCode.jpg and b/public/pic/peisQrCode.jpg differ diff --git a/public/pic/peisQrCodeMini.jpg b/public/pic/peisQrCodeMini.jpg new file mode 100644 index 0000000..b903a08 Binary files /dev/null and b/public/pic/peisQrCodeMini.jpg differ diff --git a/src/components/customerOrg/customerOrgEdit.vue b/src/components/customerOrg/customerOrgEdit.vue index 5c70e86..02261f7 100644 --- a/src/components/customerOrg/customerOrgEdit.vue +++ b/src/components/customerOrg/customerOrgEdit.vue @@ -83,20 +83,27 @@ --> - + + + + + + + - + - + @@ -249,7 +256,9 @@ export default { lastModifierName: "", lastModificationTime: null, salesPerson: "", - salesPersonPhone: "" + salesPersonPhone: "", + medicalTypeId:'', + personnelTypeId:'' }, //初始化 单位 记录 目前新增与更新是一致 formInit: {}, rules: { @@ -346,6 +355,13 @@ export default { } }); + //人员类别 + getapi("/api/app/personnel-type/in-filter").then((res) => { + if (res.code > -1) { + this.dict.personnelType = res.data; + } + }); + }, //更新获取单位树节点数据(局部刷新) diff --git a/src/components/doctorCheck/ButtonList.vue b/src/components/doctorCheck/ButtonList.vue index b6cbe7f..f41d74b 100644 --- a/src/components/doctorCheck/ButtonList.vue +++ b/src/components/doctorCheck/ButtonList.vue @@ -72,6 +72,21 @@ 职业病 +
+ + + 导入结果 + + + 导入检查结果 + 导入检验结果 + 导入迪安结果 + + +
重置
@@ -686,6 +701,51 @@ export default { location.reload() }, + // 导入结果(检查、检验、迪安) + btnImportResult(checkType) { + if (!this.dataTransOpts.tableS.patient_register.id) { + this.$message.warning({ showClose: true, message: "请先选择记录!" }) + return + } + + let url = '/api/app/ImportLisResult/ImportResultByPatientRegisterId' + let patientRegisterId = this.dataTransOpts.tableS.patient_register.id + switch (checkType) { + case 'pacs': + url = '/api/app/ImportPacsResult/ImportResultByPatientRegisterId' + postapi(url, { patientRegisterId }) + .then(res => { + if (res.code > -1) { + // 心电图(格尔木) + return postapi('/api/app/ImportElectrocardiogramResult/ImportElectrocardiogramResultByPatientRegisterId', { patientRegisterId }) + } + }) + .then(res => { + if (res && res.code > -1) { + this.$message.success({ showClose: true, message: '导入成功!' }) + } + }) + break; + case 'diAn': + url = "/api/app/ImportLisResult/ImportDianResultByPatientRegisterId"; + postapi(url, { patientRegisterId }).then(res => { + if (res.code > -1) { + this.$message.success({ showClose: true, message: '导入成功!' }) + } + }) + break; + default: //lis + postapi(url, { patientRegisterId }).then(res => { + if (res.code > -1) { + this.$message.success({ showClose: true, message: '导入成功!' }) + } + }) + break; + } + + + }, + // AI诊断 AI重新诊断 btnAIdiagnosis(again) { if (!again) { diff --git a/src/components/doctorCheck/CheckPicture.vue b/src/components/doctorCheck/CheckPicture.vue index c90e429..540040a 100644 --- a/src/components/doctorCheck/CheckPicture.vue +++ b/src/components/doctorCheck/CheckPicture.vue @@ -277,22 +277,22 @@ export default { mounted() { // 监听来自 Electron 的调用 if (this.$peisAPI) { - //采集图像 + //热键--采集图像 this.$peisAPI.onEventFromPictureHotKeyMain((data) => { this.acceptHotKeyData('add', data) }); - //采集图像设为打印 + //热键--采集图像设为打印 this.$peisAPI.onEventFromPictureAndPrintHotKeyMain((data) => { this.acceptHotKeyData('addPrint', data) }); - //设为打印 + //热键--设为打印 this.$peisAPI.onEventFromPicturePrintHotKeyMain(() => { this.acceptHotKeyData('print') }); - //取消打印 + //热键--取消打印 this.$peisAPI.onEventFromPictureCancelPrintHotKeyMain(() => { this.acceptHotKeyData('unPrint') }); @@ -362,17 +362,17 @@ export default { let image = curImag.pictureFilename.indexOf('http') > -1 ? curImag.pictureFilename : (this.sysConfig.pacsApi || this.sysConfig.apiurl) + curImag.pictureFilename; - srcList.push(image) + srcList.push(image + `?r=${Math.random()}`) let lfind = arrayExistObj(oriList, 'id', curImag.id) if (lfind > -1) { for (let i = lfind + 1; i < oriList.length; i++) { let e = oriList[i]; - image = this.imageFilePlus(e.pictureFilename) + image = this.imageFilePlus(e.pictureFilename + `?r=${Math.random()}`) srcList.push(image) } for (let index = 0; index < lfind; index++) { let e = oriList[index]; - image = this.imageFilePlus(e.pictureFilename) + image = this.imageFilePlus(e.pictureFilename + `?r=${Math.random()}`) srcList.push(image) } } diff --git a/src/components/patientRegister/PatientRegisterEdit.vue b/src/components/patientRegister/PatientRegisterEdit.vue index f666cae..167da89 100644 --- a/src/components/patientRegister/PatientRegisterEdit.vue +++ b/src/components/patientRegister/PatientRegisterEdit.vue @@ -846,17 +846,6 @@ export default { // isDoctor: '0:标准人员登记/1:医生诊台登记(可修改单位)' props: ['isDoctor', 'patientRegisterId', 'editTimes', 'refreshRegister', 'refFuncSetData'], data() { - var validateMobileTelephone = (rule, value, callback) => { - if (value) { - if (!isValidMobileNumber(value)) { - callback(new Error('请填写正确的手机号!')); - } else { - callback(); - } - } else { - callback(); - } - }; return { pagePriv: { routeUrlorPageName: 'PatientRegisterEdit', //当前页面归属路由或归属页面权限名称 @@ -1041,6 +1030,8 @@ export default { customerOrgAll: [], customerOrgRegisterList: [], //当前体检次数集合 customerOrgRegister: {}, // 当前选择体检次数 + + hc_warn_mode: '1', //0-仅提醒;1-提醒并决择;2-有互斥项目时不允许保存 }; }, @@ -1128,6 +1119,18 @@ export default { // console.log('form', this.form) }, + validateMobileTelephone(rule, value, callback) { + if (value) { + if (!isValidMobileNumber(value)) { + callback(new Error('请填写正确的手机号!')); + } else { + callback(); + } + } else { + callback(); + } + }, + //数据初始化 dictInit() { // 获取系统参数 -- 职业病 体检类别编号 @@ -1145,6 +1148,26 @@ export default { } }) + // 获取系统参数 -- 人员登记必填列 + postapi('/api/app/SysParmValue/GetSysParmValueBySysParmId', { sysParmId: 'patient_register_required_field' }) + .then(res => { + if (res.code > -1) { + try { + let masterCols = JSON.parse(res.data) + let cols = Object.keys(masterCols) + cols.forEach(key => { + if (!this.rules[key]) { + this.rules[key] = [{ + required: true, message: `请填写${masterCols[key]}`, trigger: "blur" + }] + } + }); + } catch (error) { + console.error(error) + } + } + }) + //性别(仅档案用) getapi("/api/app/sex").then((res) => { if (res.code == 1) { @@ -1376,6 +1399,10 @@ export default { this.form.customerOrgId = customerOrgId //体检单位 this.form.customerOrgParentId = customerOrgParentId //体检父单位 this.form.customerOrgName = customerOrgName + + // 登记时继承单位的体检类别 + this.getMedicalTypeByOrg(customerOrgId) + this.completeFlag = '0' this.handleFormData().then(() => { resolve() @@ -1397,6 +1424,20 @@ export default { }) }, + // 根据体检单位ID,获取体检类别 + getMedicalTypeByOrg(customerOrgId) { + return new Promise((resolve, reject) => { + postapi('/api/app/Customerorg/GetMedicalTypeIdByCustomerOrgId', { customerOrgId }) + .then(res => { + if (res.code > -1) { + this.form.medicalTypeId = res.data.medicalTypeId + this.form.personnelTypeId = res.data.personnelTypeId + } + }) + }) + }, + + handleFormData() { return new Promise((resolve, reject) => { // 判断是否职业健康检查 @@ -1915,14 +1956,24 @@ export default { //提交 btnSubmit(formName, msgTip) { - console.log('btnSubmit,formName,form', formName, JSON.stringify(this.form)) + //console.log('btnSubmit,formName,form', formName, JSON.stringify(this.form)) + console.log('this.rules', this.rules) this.$refs[formName].validate((valid, fields) => { // console.log('fields', fields) if (!valid) { this.$message.warning({ showClose: true, message: fields[Object.keys(fields)[0]][0].message }); return false } - console.log('btnSubmit1', formName) + // 手机号必填时,再验证手机号是否合法 + if (this.rules['mobileTelephone']) { + if (!isValidMobileNumber(this.form['mobileTelephone'])) { + this.$message.warning({ showClose: true, message: '请填写正确的手机号!' }); + return false + } + } + + + //console.log('btnSubmit1', formName) if (this.form.customerOrgId != this.dict.personOrgId) { if (!this.form.customerOrgRegisterId) { this.$message.warning({ showClose: true, message: "请填写单位体检次数!" }); @@ -1957,9 +2008,14 @@ export default { } else { delete body.id; } - console.log('btnSubmit3', formName) + //console.log('btnSubmit3', formName) // // console.log(`/api/patientregister/createreturninfo`, body); - postapi(`/api/PatientRegister/CreatePatientRegister`, body) + + // 保存前,判断是否有互斥项目 + this.checkAsbItemHC() + .then(() => { + return postapi(`/api/PatientRegister/CreatePatientRegister`, body) + }) .then(async (res) => { if (res.code > -1) { // 因为 res.data 返回的 isPatientOccupationalDisease 是错误的(因为职业病尚未保存,所以以form里的值为准) @@ -2017,11 +2073,70 @@ export default { } } } - ); - + ) + .catch(err => { + console.error(err) + }) + ; }); }, + // 检查项目互斥 + checkAsbItemHC() { + return new Promise((resolve, reject) => { + let asbitemIds = [] + //console.log('this.dataTransOpts.tableM.register_check_asbitem',this.dataTransOpts.tableM.register_check_asbitem) + this.dataTransOpts.tableM.register_check_asbitem.forEach(e => { + asbitemIds.push(e.asbitemId) + }); + + let message = '' + if (asbitemIds.length == 0) { + resolve() + } else { + postapi('/api/app/AsbitemMutualExclusion/GetAsbitemIsMutualExclusion', { asbitemIds }) + .then(res => { + if (res.code > -1) { + if (res?.data?.message) message = res.data.message + } + }) + .finally(() => { + if (message) { + switch (this.hc_warn_mode) { + case '1':'' + this.$confirm(`${message} 是否继续?`, "提示", { + confirmButtonText: "是", + cancelButtonText: " 否 ", + type: "warning", + }) + .then(() => { + resolve() + }) + .catch((err) => { + reject(message) + // if (err == "cancel") { + // console.log("已取消删除"); + // } + }); + break; + case '2': + this.$message.error({ showClose: true, message }) + reject(message) + break; + default: + this.$message.warning({ showClose: true, message }) + resolve() + break; + } + } else { + resolve() + } + }) + } + }) + + }, + // 保存职业病信息 async occUpdate() { // 职业病基本信息 @@ -2159,6 +2274,7 @@ export default { this.form.patientName = ''; this.form.photo = ''; this.form.completeFlag = '1'; // + this.form.planuserid = '' //清除青藏公司的计划ID // this.patientRegister.patientRegisterAbs.forEach(e => { // e.id = ''; @@ -3295,9 +3411,9 @@ export default { //双击选套餐,并确认复制 rowDblclick(row) { this.packageRowClick(row) - .then(res => { - this.copyMedicalPackage() - }) + .then(res => { + this.copyMedicalPackage() + }) }, //复制套餐(确认选中套餐) diff --git a/src/components/patientRegister/PatientRegisterList.vue b/src/components/patientRegister/PatientRegisterList.vue index 138d39d..210f81f 100644 --- a/src/components/patientRegister/PatientRegisterList.vue +++ b/src/components/patientRegister/PatientRegisterList.vue @@ -429,7 +429,7 @@ - +
{{ qrCode.barcodeNo + ' ' + qrCode.patientName }}
@@ -673,7 +673,8 @@ export default { merge_lis_pacs_label: "0", //默认0 检验检查条码合并 0:不合并,1:合并 qrCode: { winDisplay: false, // 页面显示 - url: 'https://ccjktj.cn:5081/', //二维码 地址 + url: 'https://ccjktj.cn:5081/', //二维码 前辍地址 + personUrl:'', // 个人云胶片地址 barcodeNo: '条码号', patientName: '姓 名' }, @@ -2368,7 +2369,7 @@ export default { //let canvas = this.$refs.canvas; let url = `${this.qrCode.url}?reportparam=条码号&mrn=条码号` //`https://ccjktj.cn:5081/?reportparam=条码号&mrn=条码号` if (row?.patientRegisterNo) { - url = `${this.qrCode.url}?reportparam=${row.checkRequestNo}&mrn=${row.checkRequestNo}` + url = `${this.qrCode.url}?reportparam=${row.patientRegisterNo}&mrn=${row.patientRegisterNo}` this.qrCode.barcodeNo = row.patientRegisterNo } if (row?.patientName) { @@ -2395,7 +2396,7 @@ export default { QRCode.toDataURL(url, { errorCorrectionLevel: 'H' }) .then(res => { console.log(res) - this.qrCode.url = res + this.qrCode.personUrl = res this.qrCode.winDisplay = true }) .catch(err => { diff --git a/src/components/patientRegister/patientRegisterQuery.vue b/src/components/patientRegister/patientRegisterQuery.vue index 6be6fbd..0665481 100644 --- a/src/components/patientRegister/patientRegisterQuery.vue +++ b/src/components/patientRegister/patientRegisterQuery.vue @@ -68,11 +68,15 @@ + +
次数 diff --git a/src/components/report/BtnReport.vue b/src/components/report/BtnReport.vue index 8f90e93..4e96628 100644 --- a/src/components/report/BtnReport.vue +++ b/src/components/report/BtnReport.vue @@ -252,13 +252,15 @@ export default { Parameters: [ { Name: 'printer', Value: user }, { Name: 'LTS', Value: 'Y' }, //Y、N N只看不能打印 - { Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, - { Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, - { Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, - { Name: "orgSign", Value: "pic/orgSign.png" }, - { Name: 'picExtOne', Value: 'pic/hisLog.jpg' }, + { Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, //报告首页主图 + { Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, //报告页眉图片 + { Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, //报告页脚图片 + { Name: "orgSign", Value: "pic/orgSign.png" }, // 体检章 + { Name: 'picExtOne', Value: 'pic/hisLog.jpg' }, // 院徽 { Name: 'picExtTwo', Value: 'pic/orgSignCom.png' }, // 单位公章 - { Name: 'resultSign', Value: 'pic/resultSign.png' }, + { Name: 'resultSign', Value: 'pic/resultSign.png' }, // 结果章,如:职业病(本次体检未发现职业性异常) + { Name: 'picExtThree', Value: 'pic/peisQrCode.jpg' }, // 公众号二维码 + { Name: 'picExtFour', Value: 'pic/peisQrCodeMini.jpg' }, // 小程序二维码 ], IsHealthReport: 'Y' }; @@ -348,14 +350,16 @@ export default { BusinessCode: rds[0].patientRegisterId, Parameters: [ { Name: 'printer', Value: user }, - { Name: 'LTS', Value: 'Y' }, //Y、N N只看不能打印 - { Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, - { Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, - { Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, - { Name: "orgSign", Value: rds[0].isPatientOccupationalDisease == 'Y' ? "pic/orgSignOcc.png" : "pic/orgSign.png" }, //体检公章 - { Name: 'picExtOne', Value: 'pic/hisLog.jpg' }, //体检报告首页徽标 + { Name: 'LTS', Value: 'Y' }, //Y、N N只看不能打印 + { Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, //报告首页主图 + { Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, //报告页眉图片 + { Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, //报告页脚图片 + { Name: "orgSign", Value: rds[0].isPatientOccupationalDisease == 'Y' ? "pic/orgSignOcc.png" : "pic/orgSign.png" }, // 体检章 + { Name: 'picExtOne', Value: 'pic/hisLog.jpg' }, // 院徽 { Name: 'picExtTwo', Value: 'pic/orgSignCom.png' }, // 单位公章 - { Name: 'resultSign', Value: 'pic/resultSign.png' }, + { Name: 'resultSign', Value: 'pic/resultSign.png' }, // 结果章,如:职业病(本次体检未发现职业性异常) + { Name: 'picExtThree', Value: 'pic/peisQrCode.jpg' }, // 公众号二维码 + { Name: 'picExtFour', Value: 'pic/peisQrCodeMini.jpg' }, // 小程序二维码 ], }; @@ -459,13 +463,16 @@ export default { Parameters: [ { Name: 'printer', Value: user }, { Name: 'LTS', Value: 'Y' }, //Y、N N只看不能打印 - { Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, - { Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, - { Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, - { Name: "orgSign", Value: this.dataTransOpts.tableM.patient_register[0].isPatientOccupationalDisease == 'Y' ? "pic/orgSignOcc.png" : "pic/orgSign.png" }, - { Name: 'picExtOne', Value: 'pic/hisLog.jpg' }, + { Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, //报告首页主图 + { Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, //报告页眉图片 + { Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, //报告页脚图片 + { Name: "orgSign", Value: this.dataTransOpts.tableM.patient_register[0].isPatientOccupationalDisease == 'Y' ? "pic/orgSignOcc.png" : "pic/orgSign.png" }, // 体检章 + { Name: 'picExtOne', Value: 'pic/hisLog.jpg' }, // 院徽 { Name: 'picExtTwo', Value: 'pic/orgSignCom.png' }, // 单位公章 - { Name: 'resultSign', Value: 'pic/resultSign.png' }, + { Name: 'resultSign', Value: 'pic/resultSign.png' }, // 结果章,如:职业病(本次体检未发现职业性异常) + { Name: 'picExtThree', Value: 'pic/peisQrCode.jpg' }, // 公众号二维码 + { Name: 'picExtFour', Value: 'pic/peisQrCodeMini.jpg' }, // 小程序二维码 + ], IsHealthReport: 'Y' }; diff --git a/src/components/report/PatientRegisterListNobtn.vue b/src/components/report/PatientRegisterListNobtn.vue index c37f874..01ff841 100644 --- a/src/components/report/PatientRegisterListNobtn.vue +++ b/src/components/report/PatientRegisterListNobtn.vue @@ -23,6 +23,7 @@ +