pengjun 3 years ago
parent
commit
af11a1702c
  1. 100
      src/components/patientRegister/PatientRegisterEdit.vue
  2. 14
      src/components/patientRegister/patientRegisterAsbItem.vue
  3. 148
      src/views/customerOrg/patientRegisterImport.vue

100
src/components/patientRegister/PatientRegisterEdit.vue

@ -1,15 +1,16 @@
<template>
<div>
<div style="display: flex">
<div :style="'width:'+(window.pageWidth - 120 - 30 )+'px;'">
<div :style="'width:' + (window.pageWidth - 120 - 30) + 'px;'">
<div>
<el-form ref="form" :model="form" label-width="80px" :rules="rules" size="medium">
<el-row>
<el-col :span="5">
<el-form-item label="单位名称" prop="customerOrgId">
<el-cascader v-model="form.customerOrgId" :options="patientRegister.customerOrgTreeAll"
:style="'width:'+ Math.floor((window.pageWidth - 530)/ 4.8)+'px;'"
:props="{checkStrictly: true,expandTrigger: 'hover',...customerOrg.treeprops,}" :show-all-levels="false" disabled>
<el-cascader v-model="form.customerOrgId" :options="patientRegister.customerOrgTreeAll"
:style="'width:' + Math.floor((window.pageWidth - 530) / 4.8) + 'px;'"
:props="{ checkStrictly: true, expandTrigger: 'hover', ...customerOrg.treeprops, }"
:show-all-levels="false" disabled>
</el-cascader>
</el-form-item>
</el-col>
@ -21,11 +22,11 @@
<el-col :span="5">
<el-form-item label="档案号" prop="patientNo">
<el-input v-model="form.patientNo" disabled></el-input>
</el-form-item>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="体检次数" prop="medicalTimes">
<el-input v-model="form.medicalTimes" disabled ></el-input>
<el-input v-model="form.medicalTimes" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
@ -40,7 +41,7 @@
<el-col :span="5">
<el-form-item label="性别" prop="sexId">
<el-select v-model="form.sexId" placeholder="请选择"
:style="'width:'+ Math.floor((window.pageWidth - 530)/ 4.8)+'px;'" >
:style="'width:' + Math.floor((window.pageWidth - 530) / 4.8) + 'px;'">
<el-option v-for="item in dict.sex" :key="item.id" :label="item.displayName" :value="item.id">
</el-option>
</el-select>
@ -49,8 +50,8 @@
<el-col :span="5">
<el-form-item label="出生日期" prop="birthDate">
<el-date-picker v-model="form.birthDate" type="date" value-format="yyyy-MM-dd" placeholder="出生日期"
:style="'width:'+ Math.floor((window.pageWidth - 530)/ 4.8)+'px;'"
@change="changeBirthDate" prefix-icon=""/>
:style="'width:' + Math.floor((window.pageWidth - 530) / 4.8) + 'px;'" @change="changeBirthDate"
prefix-icon="" />
</el-form-item>
</el-col>
<el-col :span="5">
@ -79,7 +80,7 @@
<el-col :span="5">
<el-form-item label="婚姻状况" prop="maritalStatusId">
<el-select v-model="form.maritalStatusId" placeholder="请选择"
:style="'width:'+ Math.floor((window.pageWidth - 530)/ 4.8)+'px;'" >
:style="'width:' + Math.floor((window.pageWidth - 530) / 4.8) + 'px;'">
<el-option v-for="item in dict.maritalStatus" :key="item.id" :label="item.displayName"
:value="item.id">
</el-option>
@ -104,29 +105,31 @@
<el-input v-model="form.postalCode"></el-input>
</el-form-item>
</el-col>
<el-col :span="4"/>
<el-col :span="4" />
</el-row>
<el-row>
<el-col :span="5">
<el-form-item label="民族" prop="nationId">
<el-select v-model="form.nationId" placeholder="请选择" filterable clearable
:style="'width:'+ Math.floor((window.pageWidth - 530)/ 4.8)+'px;'" >
<el-option v-for="item in dict.nation" :key="item.nationId" :label="item.displayName" :value="item.nationId" />
:style="'width:' + Math.floor((window.pageWidth - 530) / 4.8) + 'px;'">
<el-option v-for="item in dict.nation" :key="item.nationId" :label="item.displayName"
:value="item.nationId" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="籍惯" prop="birthPlaceId">
<el-select v-model="form.birthPlaceId" placeholder="请选择" filterable clearable
:style="'width:'+ Math.floor((window.pageWidth - 530)/ 4.8)+'px;'" >
<el-option v-for="item in dict.birthPlace" :key="item.id" :label="item.displayName" :value="item.id" />
:style="'width:' + Math.floor((window.pageWidth - 530) / 4.8) + 'px;'">
<el-option v-for="item in dict.birthPlace" :key="item.id" :label="item.displayName"
:value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="体检类别" prop="medicalTypeId">
<el-select v-model="form.medicalTypeId" placeholder="请选择" filterable clearable
:style="'width:'+ Math.floor((window.pageWidth - 530)/ 4.8)+'px;'" >
:style="'width:' + Math.floor((window.pageWidth - 530) / 4.8) + 'px;'">
<el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName"
:value="item.id" />
</el-select>
@ -135,7 +138,7 @@
<el-col :span="5">
<el-form-item label="人员类别" prop="personnelTypeId">
<el-select v-model="form.personnelTypeId" placeholder="请选择" filterable clearable
:style="'width:'+ Math.floor((window.pageWidth - 530)/ 4.8)+'px;'" >
:style="'width:' + Math.floor((window.pageWidth - 530) / 4.8) + 'px;'">
<el-option v-for="item in dict.personnelType" :key="item.id" :label="item.displayName"
:value="item.id" />
</el-select>
@ -144,7 +147,7 @@
<el-col :span="4">
<el-form-item label="性激素期" prop="sexHormoneTermId">
<el-select v-model="form.sexHormoneTermId" placeholder="请选择" filterable clearable
:style="'width:'+ Math.floor((window.pageWidth - 630)/6)+'px;'" >
:style="'width:' + Math.floor((window.pageWidth - 630) / 6) + 'px;'">
<el-option v-for="item in dict.sexHormoneTerm" :key="item.id" :label="item.displayName"
:value="item.id">
</el-option>
@ -185,7 +188,7 @@
<el-radio v-model="form.isVip" label="Y"></el-radio>
<el-radio v-model="form.isVip" label="N"></el-radio>
</el-form-item>
</el-col>
</el-col>
<el-col :span="5" style="margin-bottom: -15px; line-height: 40px">
<el-form-item label="电话随访" prop="isPhoneFollow">
<el-radio v-model="form.isPhoneFollow" label="Y"></el-radio>
@ -207,7 +210,7 @@
<el-col :span="4">
<el-form-item label="体检开始" prop="isMedicalStart">
<el-select v-model="form.isMedicalStart" placeholder="请选择" disabled
:style="'width:'+ Math.floor((window.pageWidth - 630)/6)+'px;'" >
:style="'width:' + Math.floor((window.pageWidth - 630) / 6) + 'px;'">
<el-option label="是" value="Y" />
<el-option label="否" value="N" />
</el-select>
@ -218,7 +221,7 @@
<el-col :span="6">
<el-form-item label="体检中心" prop="organizationUnitId">
<el-select v-model="form.organizationUnitId" placeholder="请选择" filterable
:style="'width:'+ Math.floor((window.pageWidth - 470)/4)+'px;'" >
:style="'width:' + Math.floor((window.pageWidth - 470) / 4) + 'px;'">
<el-option v-for="item in dict.organization" :key="item.id" :label="item.displayName"
:value="item.id">
</el-option>
@ -229,7 +232,7 @@
<el-form-item label="分组" prop="customerOrgGroupId">
<el-select v-model="form.customerOrgGroupId" placeholder="请选择" filterable clearable
@change="changeCustomerOrgGroupId" :disabled="form.customerOrgId === dict.personOrgId ? true : false"
:style="'width:'+ Math.floor((window.pageWidth - 470)/4)+'px;'">
:style="'width:' + Math.floor((window.pageWidth - 470) / 4) + 'px;'">
<el-option v-for="item in patientRegister.customerOrgGroup" :key="item.id" :label="item.displayName"
:value="item.id" />
</el-select>
@ -239,7 +242,7 @@
<el-form-item label="套餐" prop="medicalPackageId">
<el-select v-model="form.medicalPackageId" placeholder="请选择" filterable clearable
@change="changeMedicalPackageId" :disabled="form.customerOrgId === dict.personOrgId ? false : true"
:style="'width:'+ Math.floor((window.pageWidth - 470)/4)+'px;'">
:style="'width:' + Math.floor((window.pageWidth - 470) / 4) + 'px;'">
<el-option v-for="item in dict.medicalPackage" :key="item.id" :label="item.displayName"
:value="item.id" />
</el-select>
@ -248,7 +251,7 @@
<el-col :span="6">
<el-form-item label="完成标志" prop="completeFlag">
<el-select v-model="form.completeFlag" placeholder="请选择" disabled
:style="'width:'+ Math.floor((window.pageWidth - 470)/4)+'px;'">
:style="'width:' + Math.floor((window.pageWidth - 470) / 4) + 'px;'">
<el-option v-for="item in dict.completeFlag" :key="item.id" :label="item.displayName"
:value="item.id">
</el-option>
@ -270,8 +273,8 @@
<el-col :span="6">
<el-form-item label="创建时间">
<el-input :value="form.creationTime
? lmoment(form.creationTime, 'yyyy-MM-DD')
: ''
? lmoment(form.creationTime, 'yyyy-MM-DD')
: ''
" disabled></el-input>
</el-form-item>
</el-col>
@ -283,15 +286,16 @@
<el-col :span="6">
<el-form-item label="修改时间">
<el-input :value="form.lastModificationTime
? lmoment(form.lastModificationTime, 'yyyy-MM-DD')
: ''
? lmoment(form.lastModificationTime, 'yyyy-MM-DD')
: ''
" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-image :style="'position: absolute;top:65px;right:'+(110 + Math.floor((window.pageWidth - 360)/25))+'px; width: 150px; height: 160px;'"
:src="form.photo? (apiurl + '/' + form.photo):''">
<el-image
:style="'position: absolute;top:65px;right:' + (110 + Math.floor((window.pageWidth - 360) / 25)) + 'px; width: 150px; height: 160px;'"
:src="form.photo ? (apiurl + '/' + form.photo) : ''">
<div slot="placeholder" class="image-slot">
加载中<span class="dot">...</span>
</div>
@ -309,8 +313,8 @@
<el-button @click="readIdCard" class="btnClass">读身份证</el-button>
</div>
<div class="btn">
<el-button type="success" class="btnClass" @click="Onsubmit('form',true)">保存</el-button>
</div>
<el-button type="success" class="btnClass" @click="Onsubmit('form', true)">保存</el-button>
</div>
<div class="btn">
<el-button type="primary" class="btnClass">申请单</el-button>
</div>
@ -325,7 +329,7 @@
</div>
</div>
</div>
<!-- 人员档案列表 -->
<el-dialog title="人员档案列表" :visible.sync="dialogVisible" width="800" :append-to-body="true">
<el-table :data="patientList" border width="800" height="480" row-key="id" size="small"
@ -399,7 +403,7 @@ export default {
Camera,
PatientRegisterItem,
},
props:['formInitData','editTimes'],
props: ['formInitData', 'editTimes'],
data() {
return {
apiurl: mm.apiurl,
@ -421,7 +425,7 @@ export default {
personnelTypeId: null, //
jobPost: "", //
jobTitle: "", //
photo:"", //
photo: "", //
salesman: "", //
sexHormoneTermId: null, //
isNameHide: "N", //
@ -486,7 +490,7 @@ export default {
},
computed: {
...mapState(["window","dict", "patientRegister", "customerOrg"]),
...mapState(["window", "dict", "patientRegister", "customerOrg"]),
},
methods: {
readIdCard() {
@ -511,13 +515,13 @@ export default {
//
changeCustomerOrgGroupId() {
this.patientRegister.customerOrgGroupChange++;
if(this.form.id) this.Onsubmit('form',false);
if (this.form.id) this.Onsubmit('form', false);
},
//
changeMedicalPackageId() {
this.patientRegister.medicalPackageChange++;
if(this.form.id) this.Onsubmit('form',false);
if (this.form.id) this.Onsubmit('form', false);
},
//
@ -573,7 +577,7 @@ export default {
},
//
Onsubmit(formName,msgTip) {
Onsubmit(formName, msgTip) {
this.$refs[formName].validate((valid) => {
if (valid) {
//
@ -607,7 +611,7 @@ export default {
(res) => {
if (res.code == 1) {
//console.log('res',res)
if(msgTip) this.$message.success("创健 操作成功");
if (msgTip) this.$message.success("创健 操作成功");
objCopy(res.data, this.form);
this.patientRegister.patientRegisterId = res.data.id;
this.patientRegister.patientRegisterId = res.data.id;
@ -619,10 +623,10 @@ export default {
);
} else {
//id
console.log(`/api/app/patient-register?PatientRegisterId=${this.form.id}`,body);
putapi(`/api/app/patient-register?PatientRegisterId=${this.form.id}`,body).then((res) => {
console.log(`/api/app/patient-register?PatientRegisterId=${this.form.id}`, body);
putapi(`/api/app/patient-register?PatientRegisterId=${this.form.id}`, body).then((res) => {
if (res.code == 1) {
if(msgTip) this.$message.success("更新 操作成功");
if (msgTip) this.$message.success("更新 操作成功");
this.patientRegister.query.times++;
//this.patientRegister.saveTimes++; //
}
@ -662,13 +666,13 @@ export default {
},
//
watch: {
watch: {
//
"editTimes"(newVal, oldVal) {
"editTimes"(newVal, oldVal) {
//console.log('editTimes newVal',newVal,' oldVal',oldVal)
if (newVal != oldVal) {
console.log('this.editTimes',this.editTimes)
console.log('this.editTimes', this.editTimes)
objCopy(this.formInitData, this.form);
//console.log('this.form',this.form)
}
@ -711,9 +715,9 @@ export default {
::v-deep .el-table--small .el-table__cell {
padding: 0px 0;
}
::v-deep .el-input__inner {
text-align: left;
padding-left: 5px;
padding-right: 15px;
}
</style>
}</style>

14
src/components/patientRegister/patientRegisterAsbItem.vue

@ -1,15 +1,13 @@
<template>
<div>
<div style="display: flex">
<el-table :data="patientRegister.patientRegisterAbs" border :height="patientRegister.prAsbItemHeight"
size="small" highlight-current-row
:summary-method="getSummaries" show-summary
ref="patientRegister.patientRegisterAbs">
<el-table :data="patientRegister.patientRegisterAbs" border :height="patientRegister.prAsbItemHeight" size="small"
highlight-current-row :summary-method="getSummaries" show-summary ref="patientRegister.patientRegisterAbs">
<el-table-column type="index" label="序号" width="50" />
<el-table-column prop="asbitemName" label="已选组合项目" width="120" />
<el-table-column prop="standardPrice" label="标准价" />
<el-table-column prop="discount" label="折扣" />
<el-table-column prop="amount" label="数量" width="50"/>
<el-table-column prop="amount" label="数量" width="50" />
<el-table-column prop="chargePrice" label="价格" />
<el-table-column prop="payTypeFlag" label="支付方式">
<template slot-scope="scope">
@ -34,7 +32,7 @@
<el-table-column prop="creatorName" label="登记人"></el-table-column>
<el-table-column prop="creationTime" label="登记日期" width="90">
<template slot-scope="scope">
<div>{{ lmoment(scope.row.creationTime,'yyyy-MM-DD') }}</div>
<div>{{ lmoment(scope.row.creationTime, 'yyyy-MM-DD') }}</div>
</template>
</el-table-column>
</el-table>
@ -74,7 +72,7 @@ export default {
//
getSummaries(param) {
const { columns, data } = param;
const sumCol = [2,5] //
const sumCol = [2, 5] //
const sums = [];
columns.forEach((column, index) => {
//
@ -99,7 +97,7 @@ export default {
return prev;
}
}, 0);
sums[index] = Math.round(sums[index],2);
sums[index] = Math.round(sums[index], 2);
sums[index] += ' 元';
} else {
sums[index] = 'N/A';

148
src/views/customerOrg/patientRegisterImport.vue

@ -0,0 +1,148 @@
<template>
<div>
<div>123</div>
<el-dialog title="选择文件" :visible.sync="dialogGroup[0]" width="400" height="800" :show-close="false"
:append-to-body="true" :close-on-click-modal="false">
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="btnNext">下一步</el-button>
<el-button @click="seq = -1">关闭</el-button>
</span>
</el-dialog>
<el-dialog title="选择文件" :visible.sync="dialogGroup[1]" width="400" height="800" :show-close="false"
:append-to-body="true" :close-on-click-modal="false">
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="btnPre">上一步</el-button>
<el-button type="primary" @click="btnNext">上一步</el-button>
<el-button @click="seq = -1">关闭</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { mapState, mapActions } from "vuex";
import ExcelJS from "exceljs";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
export default {
components: {
},
data() {
return {
dialogGroup:[true,false,false],
seq: 0, //
excelCol: [], //excel
excelData: [], //excel
};
},
//
created() {
},
//
mounted() {
},
computed: {
...mapState(["window", "dict", "patientRegister", "customerOrg"]),
},
methods: {
//
btnPre() {
if(this.seq == 0) return;
this.seq--;
this.setDialogDisp();
},
//
btnNext() {
if(this.seq == 0) return;
this.seq++;
this.setDialogDisp();
},
//
setDialogDisp(){
this.dialogGroup.forEach((item,index) =>{
if(index == this.seq){
item = true;
}else{
item = false;
}
return item;
});
},
onFileChange(event) {
//
const file = event.target.files[0];
// Excel
this.importExcelFile(file);
},
importExcelFile(file) {
this.filepopupdialogVisible = true;
console.log("333");
// 簿
const workbook = new ExcelJS.Workbook();
// Excel
const reader = new FileReader();
console.log(reader);
reader.onload = () => {
const buffer = reader.result;
const typedArray = new Uint8Array(buffer);
const blob = new Blob([typedArray], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
});
// BlobExcel
workbook.xlsx.load(blob).then((workbook) => {
//
const worksheet = workbook.getWorksheet(1);
// Excel
worksheet.eachRow((row, rowNumber) => {
// const rowData = row.values;
// this.rowData = row.values;
// console.log(this.rowData,'rowdata');
// console.log(rowData);
//console.log('row,rowNumber',row,rowNumber);
this.importData.push(row.values);
// console.log(`${rowNumber}${rowData}`);
});
});
};
reader.readAsArrayBuffer(file);
},
parseImportData(importData) {
console.log("importData", importData.length, importData);
importData.forEach((item) => {
item.forEach((item2) => {
// this.$set(item2[0], "name", true);
item2[0]['names'] = true
console.log(item2);
// console.log(item2);
});
// console.log(item,'item',item.length);
});
},
},
};
</script>
<style scoped>
.box {
display: flex;
}
</style>
Loading…
Cancel
Save