pengjun 3 months ago
parent
commit
beb306a751
  1. 252
      src/components/report/PatientRegisterQueryNobtn.vue
  2. 4
      src/components/report/RegisterCheckStatus.vue
  3. 6
      src/views/fee-settings/cardBill.vue
  4. 6
      src/views/fee-settings/cardBillSum.vue
  5. 1565
      src/views/report/report.vue

252
src/components/report/PatientRegisterQueryNobtn.vue

@ -1,109 +1,98 @@
<template>
<div style="display: flex;padding: 10px;background-color: #fff;border-radius: 8px;margin-bottom: 10px;">
<div style="display:block;">
<div style="display: flex;">
<div style="display:block;padding: 10px;background-color: #fff;border-radius: 8px;margin-bottom: 10px;">
<div style="display: flex;flex-wrap: wrap;height: 80px;align-items: center;">
<div class="query">
<span class="spanClass">体检单位</span>
<el-input placeholder="请选择单位" v-model="patientRegister.query.cusOrgOCX" style="width:240px;" size="small"
disabled>
<el-input placeholder="请选择单位" v-model="query.cusOrgOCXdisp" style="width:240px;" size="small" disabled>
<el-button slot="append" icon="el-icon-search" @click="report.dialogCusOrgOCX = true"
style="font-size: 20px;"></el-button>
</el-input>
</div>
<div class="query">
<span class="spanClass">连续扫码</span>
<el-checkbox v-model="patientRegister.query.isSeries" size="small" true-label="Y" false-label="N" />
<el-checkbox v-model="query.isSeries" size="small" true-label="Y" false-label="N" />
</div>
<div class="query">
<span class="spanClass">条码号</span>
<el-input placeholder="条码号" v-model="patientRegister.query.patientRegisterNo" size="small" clearable
style="width: 120px" />
<el-input placeholder="条码号" v-model="query.patientRegisterNo" size="small" clearable style="width: 120px" />
</div>
<div class="query">
<span class="spanClass">档案号</span>
<el-input placeholder="档案号" v-model="patientRegister.query.patientNo" size="small" clearable
style="width: 100px" />
<el-input placeholder="档案号" v-model="query.patientNo" size="small" clearable style="width: 100px" />
</div>
<div class="query">
<span class="spanClass">姓名</span>
<el-input placeholder="姓名" v-model="patientRegister.query.patientName" size="small" clearable
style="width: 80px" />
<el-input placeholder="姓名" v-model="query.patientName" size="small" clearable style="width: 80px" />
</div>
<div class="query">
<span class="spanClass">检查条码</span>
<el-input placeholder="检查条码" v-model="patientRegister.query.pacsNo" size="small" clearable
style="width: 120px" />
<el-input placeholder="检查条码" v-model="query.pacsNo" size="small" clearable style="width: 120px" />
</div>
<div class="query">
<span class="spanClass">检验条码</span>
<el-input placeholder="检验条码" v-model="patientRegister.query.lisNo" size="small" clearable
style="width: 120px" />
<el-input placeholder="检验条码" v-model="query.lisNo" size="small" clearable style="width: 120px" />
</div>
<div class="query">
<span class="spanClass">性别</span>
<el-select v-model="patientRegister.query.sex" placeholder="请选择" style="width: 60px" size="small">
<el-select v-model="query.sex" placeholder="请选择" style="width: 60px" size="small">
<el-option v-for="item in dict.sex" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<el-button type="primary" style="margin-left: 5px;margin-top: 3px; height: 22px;padding: 2px 2px;" @click="readIdCard">读身份证</el-button>
<el-input placeholder="身份证号" v-model="patientRegister.query.idCardNo" size="small" clearable
style="width: 150px" />
<span class="spanClass">身份证</span>
<el-input placeholder="身份证号" v-model="query.idCardNo" size="small" clearable style="width: 150px" />
</div>
<div class="query">
<span class="spanClass">电话</span>
<el-input placeholder="手机号及电话" v-model="patientRegister.query.phone" size="small" clearable
style="width: 110px" />
<el-input placeholder="手机号及电话" v-model="query.phone" size="small" clearable style="width: 110px" />
</div>
<div class="query">
<span class="spanClass">检查状态</span>
<el-select v-model="patientRegister.query.completeFlag" placeholder="请选择" clearable style="width: 80px"
size="small" align="center">
<el-select v-model="query.completeFlag" placeholder="请选择" clearable style="width: 80px" size="small"
align="center">
<el-option v-for="item in dict.completeFlag" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span class="spanClass">审核</span>
<el-select v-model="patientRegister.query.isAudit" placeholder="请选择" clearable style="width: 75px"
size="small">
<el-select v-model="query.isAudit" placeholder="请选择" clearable style="width: 75px" size="small">
<el-option label="未审核" value="N" />
<el-option label="已审核" value="Y" />
</el-select>
</div>
<div class="query">
<span class="spanClass">上传</span>
<el-select v-model="patientRegister.query.isUpload" placeholder="请选择" clearable style="width: 75px"
size="small">
<el-select v-model="query.isUpload" placeholder="请选择" clearable style="width: 75px" size="small">
<el-option label="未上传" value="N" />
<el-option label="已上传" value="Y" />
</el-select>
</div>
<div class="query">
<span class="spanClass">打印</span>
<el-select v-model="patientRegister.query.isReportPrint" placeholder="请选择" clearable style="width: 75px"
size="small">
<el-select v-model="query.isReportPrint" placeholder="请选择" clearable style="width: 75px" size="small">
<el-option label="未打印" value="N" />
<el-option label="已打印" value="Y" />
</el-select>
</div>
<div class="query">
<span class="spanClass">体检类别</span>
<el-select v-model="patientRegister.query.medicalTypeIds" placeholder="请选择" clearable filterable
style="width: 200px" size="small" multiple>
<el-select v-model="query.medicalTypeIds" placeholder="请选择" clearable filterable style="width: 200px"
size="small" multiple>
<el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span class="spanClass">人员类别</span>
<el-select v-model="patientRegister.query.personnelTypeId" placeholder="请选择" clearable filterable
style="width: 75px" size="small">
<el-select v-model="query.personnelTypeId" placeholder="请选择" clearable filterable style="width: 75px"
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 class="spanClass">检查结论</span>
<el-select v-model="patientRegister.query.medicalConclusionId" placeholder="请选择" clearable multiple collapse-tags style="width: 180px;"
size="small">
<el-select v-model="query.medicalConclusionId" placeholder="请选择" clearable multiple collapse-tags
style="width: 180px;" size="small">
<el-option-group v-for="group in medicalConclusionGroup" :key="group.value" :label="group.label">
<el-option v-for="item in group.options" :key="item.id" :label="item.displayName" :value="item.id" />
</el-option-group>
@ -111,15 +100,28 @@
</div>
</div>
</div>
<!--按钮-->
<div style="margin-left: 10px;">
<div class="listBtn">
<el-button type="primary" class="commonbutton" @click="btnQuery">查询</el-button>
</div>
<div class="listBtn">
<el-button type="primary" class="commonbutton" @click="readIdCard">读身份证</el-button>
</div>
<div class="listBtn">
<el-button type="primary" class="commonbutton" @click="btnClear">清除条件</el-button>
</div>
</div>
<!--通用选单位体检次数分组的控件-->
<el-dialog title="体检单位选择" :visible.sync="report.dialogCusOrgOCX" :close-on-click-modal="false" width="880px"
height="600px">
<CusOrgOCX />
height="600px" :append-to-body="true">
<CusOrgOCX :useCustomerOrg="false" :initDateType="'medicalStartDate'" @cusOrgOCXbak="cusOrgOCXbak"/>
</el-dialog>
</div>
</template>
<script>
import { mapState } from "vuex";
import moment from "moment";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { arrayExistObj, deepCopy, parsIcCardtoLocal } from "../../utlis/proFunc"
import CusOrgOCX from "./CusOrgOCX.vue"
@ -131,7 +133,45 @@ export default {
props: ["orgEnable"],
data() {
return {
dialogVisible: false,
query: {
cusOrgOCXdisp:'',
ocxDatas:[],
times:0, //
queryType:'', //
dateType: 'creationTime', //
dateRange: null, //
startDate: null,
endDate: null,
containRefuse: true, //
times: 0, //
customerOrgId: "", //ID
CustomerOrgParentId: "", //ID
customerOrgFlag: true, //
customerOrgRegister: { id: '' }, //
customerOrgGroupIds: [], //
checkAsbs: null,
patientRegisterNo: '',
patientNo:'',
pacsNo: '',
lisNo: '',
patientName: '', //
sex: '', //
idCardNo: '', //
isReportPrint: '', //
isSeries: 'N',
isSmsComplete: "N",
isPhoneComplete: "N",
diagnosisLevelId: [],
medicalTypeIds: [],
completeFlags: [],
medicalConclusionId: [],
personnelTypeIds: [],
personnelTypeId:'',
isRecoverGuide: '',
completeFlag:'',
},
local: {
completeFlag: []
},
@ -141,6 +181,11 @@ export default {
},
created() {
//
let today = moment(new Date()).format('yyyy-MM-DD');
this.query.ocxDatas = [{startDate: today, endDate: today, dateType: "2"}]
this.query.cusOrgOCXdisp = `(体检${today}~${today})`
this.distInit()
},
@ -158,7 +203,7 @@ export default {
},
computed: {
...mapState(["window", "dict", "patientRegister", "customerOrg", "report"]),
...mapState(["window", "dict", "report"]),
},
methods: {
distInit() {
@ -175,13 +220,13 @@ export default {
changeCustomerOrgId(v) {
console.log(v)
if (!v) {
this.patientRegister.query.customerOrgRegister = null;
this.query.customerOrgRegister = null;
return;
}
let customerOrgId = v[0];
if (customerOrgId == this.dict.personOrgId) {
this.patientRegister.query.customerOrgRegister = null;
this.query.customerOrgRegister = null;
return;
}
getapi(
@ -191,8 +236,8 @@ export default {
if (res.code != -1) {
this.customerOrg.customerOrgRegisterList = res.data;
if (res.data.length > 0) {
this.patientRegister.query.customerOrgRegister = res.data[res.data.length - 1];
this.patientRegister.query.dateRange = [
this.query.customerOrgRegister = res.data[res.data.length - 1];
this.query.dateRange = [
res.data[res.data.length - 1].beginTime,
res.data[res.data.length - 1].isComplete == 'N' ? new Date() : res.data[res.data.length - 1].endTime
]
@ -203,13 +248,29 @@ export default {
//
changeMedicalTimes(v) {
this.patientRegister.query.customerOrgRegister = v;
this.patientRegister.query.dateRange = [
this.query.customerOrgRegister = v;
this.query.dateRange = [
v.beginTime,
v.isComplete == 'N' ? new Date() : v.endTime
];
},
//
cusOrgOCXbak(cusOrgOCXdata){
console.log('cusOrgOCXbak.cusOrgOCXdata',cusOrgOCXdata,this.query.ocxDatas)
this.query.ocxDatas = []
if(Array.isArray(cusOrgOCXdata?.ocxDatas) && cusOrgOCXdata?.ocxDatas.length > 0){
cusOrgOCXdata.ocxDatas.forEach(e => {
this.query.ocxDatas.push(Object.assign({},e))
});
}
this.query.cusOrgOCXdisp = cusOrgOCXdata?.cusOrgOCXdisp //
},
btnQuery(){
this.$emit("triggerQuery",this.query)
},
//
readIdCard() {
if (!this.$peisAPI) {
@ -223,14 +284,15 @@ export default {
if (lres.code > -1) {
let idNos = parsIcCardtoLocal(lres.data, this.dict.sex, this.dict.nation)
this.patientRegister.query.patientRegisterNo = ''
this.patientRegister.query.patientNo = ''
this.patientRegister.query.pacsNo = ''
this.patientRegister.query.lisNo = ''
this.query.patientRegisterNo = ''
this.query.patientNo = ''
this.query.pacsNo = ''
this.query.lisNo = ''
this.patientRegister.query.patientName = idNos.Name
this.patientRegister.query.idNo = idNos.IDCode
this.patientRegister.query.times++;
this.query.patientName = idNos.Name
this.query.idNo = idNos.IDCode
this.query.queryType = 'idCardNo'
this.query.times++;
} else {
this.$message.error({ showClose: true, message: lres.message })
}
@ -240,21 +302,30 @@ export default {
})
},
btnClear(){
this.query.patientRegisterNo = ''
this.query.patientNo = ''
this.query.patientName = ''
this.query.pacsNo = ''
this.query.lisNo = ''
this.query.sex = ''
this.query.phone = ''
this.query.idCardNo = ''
this.query.medicalTypeIds = []
this.query.completeFlags = []
this.query.personnelTypeId = ''
this.query.isRecoverGuide = ''
this.query.medicalConclusionId = []
this.query.completeFlag =''
this.query.isAudit = ''
this.query.isUpload = ''
this.query.isReportPrint = ''
},
//
medicalConclusionHandle() {
// <el-option-group
// v-for="group in options"
// :key="group.label"
// :label="group.label">
// <el-option
// v-for="item in group.options"
// :key="item.value"
// :label="item.label"
// :value="item.value">
// </el-option>
// </el-option-group>
this.medicalConclusionGroup = []
this.medicalConclusion.forEach(e => {
let lfind = arrayExistObj(this.medicalConclusionGroup, 'value', e.medicalConclusionTypeId)
@ -274,8 +345,9 @@ export default {
onQueryByPacsNo(checkRequestNo) {
postapi('/api/app/PatientRegister/GetPatientRegisterNoByCheckRequestNo', { checkRequestNo }).then(res => {
if (res.code > 0) {
this.patientRegister.query.patientRegisterNo = res.data.patientRegisterNo
this.patientRegister.query.times++;
this.query.patientRegisterNo = res.data.patientRegisterNo
this.query.queryType = "patientRegisterNo"
this.query.times++;
}
})
},
@ -284,8 +356,9 @@ export default {
onQueryByLisNo(lisRequestNo) {
postapi('/api/app/PatientRegister/GetPatientRegisterNoByLisRequestNo', { lisRequestNo }).then(res => {
if (res.code > 0) {
this.patientRegister.query.patientRegisterNo = res.data.patientRegisterNo
this.patientRegister.query.times++;
this.query.patientRegisterNo = res.data.patientRegisterNo
this.query.queryType = "patientRegisterNo"
this.query.times++;
}
})
},
@ -309,11 +382,28 @@ export default {
let placeholder = input.getAttribute('placeholder')
switch (placeholder) {
case '条码号':
this.query.queryType = "patientRegisterNo"
if (input.value) this.query.times++;
input.select()
break;
case '档案号':
this.query.queryType = "patientNo"
if (input.value) this.query.times++;
input.select()
break;
case '姓名':
this.query.queryType = "patientName"
if (input.value) this.query.times++;
input.select()
break;
case '预约手机号':
this.query.queryType = "phone"
if (input.value) this.query.times++;
input.select()
break;
case '身份证号':
if (input.value) this.patientRegister.query.times++;
this.query.queryType = "idCardNo"
if (input.value) this.query.times++;
input.select()
break;
case '检查条码':
@ -346,6 +436,19 @@ export default {
});
},
},
//
watch: {
//
"query.times": {
// immediate:true,
handler(newVal, oldVal) {
console.log('watch:query.times', newVal, oldVal)
if (newVal != oldVal) {
this.$emit("triggerQuery",this.query);
}
}
},
},
};
</script>
<style scoped>
@ -368,6 +471,13 @@ export default {
/* 控件默认 0 20px;*/
}
::v-deep .el-select-group__title {
font-size: 15px;
background-color: #EEEEEE;
color: black;
font-weight: 700;
}
::v-deep .el-icon-search:before {
color: #00F;
}
@ -383,4 +493,10 @@ export default {
.spanClass {
padding: 0 2px 0 0;
}
.listBtn {
margin-top: 5px;
/*
text-align: center;
*/
}
</style>

4
src/components/report/RegisterCheckStatus.vue

@ -35,7 +35,7 @@ import { dddw, setCheckStatusColor,listOrderBy } from "../../utlis/proFunc"
export default {
components: {},
props: ["patientRegisterId"],
props: ["patientRegisterId","brushTimes"],
data() {
return {};
},
@ -87,7 +87,7 @@ export default {
watch: {
//ID
//
"dataTransOpts.refresh.register_check.M": {
"brushTimes": {
// immediate:true,
handler(newVal, oldVal) {
console.log(`watch 组合项目列表 newVal: ${newVal} oldVal: ${oldVal} patient_register.id: ${this.patientRegisterId}`);

6
src/views/fee-settings/cardBill.vue

@ -49,8 +49,8 @@
style="width: 190px" />
</div>
<div class="query">
<span>充值</span>
<el-select v-model="query.feeUserIds" placeholder="请选择" style="margin-left: 10px;width: 170px;" filterable
<span>收费</span>
<el-select v-model="query.operateUserIds" placeholder="请选择" style="margin-left: 10px;width: 170px;" filterable
clearable size="small" multiple collapse-tags>
<el-option v-for="item in users" :key="item.id" :label="item.surname" :value="item.id" />
</el-select>
@ -118,7 +118,7 @@ export default {
customerName: '',
idNo: '',
mobileTelephone: '',
feeUserIds: []
operateUserIds: []
}, //
dataList: [], //
users: [],

6
src/views/fee-settings/cardBillSum.vue

@ -49,8 +49,8 @@
style="width: 190px" />
</div>
<div class="query">
<span>充值</span>
<el-select v-model="query.feeUserIds" placeholder="请选择" style="margin-left: 10px;width: 170px;" filterable
<span>收费</span>
<el-select v-model="query.operateUserIds" placeholder="请选择" style="margin-left: 10px;width: 170px;" filterable
clearable size="small" multiple collapse-tags>
<el-option v-for="item in users" :key="item.id" :label="item.surname" :value="item.id" />
</el-select>
@ -99,7 +99,7 @@ export default {
customerName: '',
idNo: '',
mobileTelephone: '',
feeUserIds: []
operateUserIds: []
}, //
dataList: [], //
users: [],

1565
src/views/report/report.vue
File diff suppressed because it is too large
View File

Loading…
Cancel
Save