Browse Source

dj s

master
pengjun 2 years ago
parent
commit
eecb40a0d3
  1. 24
      src/components/patientRegister/PatientRegisterEdit.vue
  2. 4
      src/components/patientRegister/PatientRegisterList.vue
  3. 3
      src/store/index.js
  4. 210
      src/views/charge/charge.vue
  5. 2
      src/views/customerOrg/patientRegisterImport.vue

24
src/components/patientRegister/PatientRegisterEdit.vue

@ -460,7 +460,7 @@
</el-dialog>
<!-- 收费 -->
<el-dialog title="" :visible.sync="chargeVisible" :close-on-click-modal="false"
<el-dialog title="" :visible.sync="dialogWin.charge" :close-on-click-modal="false"
:append-to-body="true" fullscreen @close="closeDialogCharge">
<div style="margin-top: -30px;">
<Charge :patientRegisterNo="chargePatientRegisterNo"/>
@ -480,6 +480,8 @@ import LisRequest from "./LisRequest.vue";
import MergeAsbitem from "./MergeAsbitem.vue";
import Charge from "../../views/charge/charge.vue";
import PatientRegisterEditQuery from "../../components/patientRegister/PatientRegisterEditQuery.vue";
import proApi from "../../utlis/proApi";
export default {
components: {
Camera,
@ -596,7 +598,6 @@ export default {
dialogCamera: false, //
chargeVisible:false, //
chargePatientRegisterNo:'', //
//
@ -1619,13 +1620,26 @@ export default {
this.patientRegister.mergeAsbitemVisble = true;
},
toCharge(patientRegisterNo) {
async toCharge(patientRegisterNo){
if(!patientRegisterNo){
this.$message.warning("请先保存人员信息!")
return
}
this.chargeVisible = true
try {
let res = await proApi.getPrAsb(this.form.id)
if(res.code == -1){
this.$message.warning(`操作失败,原因:${res.message}`)
return
}
} catch (error) {
this.$message.warning(`操作失败,原因:${error}`)
return
}
this.dialogWin.charge = true
//
this.chargePatientRegisterNo = patientRegisterNo
setTimeout(() => {

4
src/components/patientRegister/PatientRegisterList.vue

@ -309,8 +309,7 @@ export default {
//
let userPriv = window.sessionStorage.getItem('userPriv')
if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
this.headerCols = deepCopy(this.dropCol)
this.loadOptsInit = Object.assign({}, this.loadOpts)
},
@ -321,6 +320,7 @@ export default {
this.peisid = window.sessionStorage.getItem('peisid');
//
this.headerCols = deepCopy(this.dropCol)
this.dropCol = this.columnDrop(this.dropCol);
this.$nextTick(() => {

3
src/store/index.js

@ -359,7 +359,8 @@ export default new Vuex.Store({
// 弹窗控制
dialogWin: {
CustomerOrgGroupEdit: false, // 单位分组 新增/编辑
CustomerOrgGroupEdit: false, // 单位分组 新增/编辑
charge:false, // 收费窗口
PatientList: false, // 体检人员档案列表
PatientRegisterEdit: false, // 体检人员登记 新增/编辑
PatientRegisterForChoose: false, // 体检人员登记列表

210
src/views/charge/charge.vue

@ -1,21 +1,25 @@
<template>
<div>
<el-card>
<div slot="header">体检收费</div>
<div style="font-size: 14px;">
<div>
<div class="contenttitle">
体检登记 /<span class="contenttitleBold">收费</span>
</div>
<div style="display: flex; width: 100%;">
<!-- 查询条件 与列表 -->
<div class="queryDivClass">
<div :style="`display: block;width: ${Math.floor(bodyWidth * 3 / 5)}px;`">
<!-- 查询条件 -->
<div style="height: 80px;">
<div style="display:flex;">
<div>
<span>登记日期</span>
<el-date-picker v-model="query.startDate" type="date" placeholder="起始日期" size="small" style="width:90px;"/>
<span></span>
<el-date-picker v-model="query.endDate" type="date" placeholder="截止日期" size="small" style="width:90px;"/>
<el-date-picker v-model="query.startDate" type="date" placeholder="起始日期" size="small"
style="width:90px;" />
<span style="margin: 0 3px;"></span>
<el-date-picker v-model="query.endDate" type="date" placeholder="截止日期" size="small" style="width:90px;" />
</div>
<div style="margin-left:10px;">
<el-button type="primary" class="btnClass" @click="Query" size="small" style="width:95px;">查询</el-button>
<el-button type="primary" class="commonbutton" @click="Query" size="small"
style="width:95px;">查询</el-button>
</div>
</div>
<div style="display:flex;margin-top:10px;">
@ -26,15 +30,15 @@
</el-radio-group>
<div v-if="query.chargeFlag != 'N'" style="margin-left:20px;">
<span>发票号</span>
<el-input placeholder="发票/收据号" v-model="query.invoiceNo" size="small" style="width: 100px;" clearable
<el-input placeholder="发票/收据号" v-model="query.invoiceNo" size="small" style="margin-left: 3px; width: 100px;" clearable
@change="Query('invoiceNo')" />
</div>
</div>
</div>
<!-- 列表 -->
<div class="prListDivClass">
<el-table :data="patientList" border highlight-current-row ref="patientList"
:height="(window.pageHeight > 600 ? (window.pageHeight - 230) : 370)" @row-click="rowClick" size="small">
<div>
<el-table :data="patientList" border highlight-current-row ref="patientList" :height="tableListHeight"
@row-click="rowClick" size="small">
<!--
<el-table-column prop="patientRegisterId" label="体检记录ID" />
-->
@ -72,66 +76,66 @@
</div>
</div>
<!-- 收费操作 -->
<div class="queryDivClass" style="margin-left:5px;">
<div :style="`display: block;margin-left:5px;width: ${Math.floor(bodyWidth * 2 / 5)}px;`">
<!-- 查询信息 -->
<div style="height: 40px;">
<div style="display: flex; flex-wrap: wrap;margin-top:40px; height:40px; width: 100%;">
<div class="query">
<span>条码号</span>
<el-input placeholder="条码号" v-model="query.patientRegisterNo" size="small" style="width: 140px;" clearable
<el-input placeholder="条码号" v-model="query.patientRegisterNo" size="small" style="margin-left: 3px; width: 120px;" clearable
@change="Query('patientRegisterNo')" />
</div>
<div class="query">
<span>档案号</span>
<el-input placeholder="档案号" v-model="query.patientNo" size="small" style="width: 100px;" clearable
<el-input placeholder="档案号" v-model="query.patientNo" size="small" style="margin-left: 3px; width: 80px;" clearable
@change="Query('patientNo')" />
</div>
<div class="query">
<span>姓名</span>
<el-input placeholder="姓名" v-model="query.patientName" size="small" style="width: 100px;" disabled
<el-input placeholder="姓名" v-model="query.patientName" size="small" style="margin-left: 3px; width: 70px;" disabled
@change="Query" />
</div>
</div>
</div>
<!-- 收费信息 -->
<div class="prListDivClass">
<div>
<!-- charge -->
<div style="height:148px;">
<el-form ref="form" :model="form" label-width="80px" :rules="rules" size="small"
:disabled="query.chargeFlag != 'N'">
<div style="height:108px;">
<el-form ref="form" :model="form" label-width="80px" :rules="rules" size="medium"
:disabled="query.chargeFlag != 'N'" >
<el-row>
<el-col :span="12">
<el-form-item label="发票号" prop="invoiceNo">
<el-input v-model="form.invoiceNo" />
<el-input v-model="form.invoiceNo" size="small"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开票抬头" prop="invoiceOrgName">
<el-input v-model="form.invoiceOrgName" />
<el-input v-model="form.invoiceOrgName" size="small"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="折扣" prop="discount">
<el-input v-model="form.discount" @input="discountToDetails" />
<el-input v-model="form.discount" @input="discountToDetails" size="small"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="应收金额" prop="total">
<el-input v-model="form.total" @input="totalToDetails" />
<el-input v-model="form.total" @input="totalToDetails" size="small"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="query.chargeFlag == 'N'">
<el-col :span="12">
<el-form-item label="预收金额" prop="preTotal">
<el-input v-model="form.preTotal" disabled/>
<el-input v-model="form.preTotal" disabled size="small"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="找零" prop="balance">
<el-input v-model="form.balance" disabled />
<el-input v-model="form.balance" disabled size="small"/>
</el-form-item>
</el-col>
</el-row>
@ -141,7 +145,7 @@
<div>
<div style="margin-top:5px;font-size:10px;">{{ query.chargeFlag == 'B' ? '退' : '收' }}费方式</div>
<el-table :data="chargePays" border highlight-current-row size="small"
:height="window.pageHeight > 600 ? (window.pageHeight - 270 - 146) / 2 : 92">
:height="Math.floor((tableListHeight - 146)/2)">
<el-table-column prop="payModeId" :label="(query.chargeFlag == 'B' ? '退' : '收') + '费方式'" width="180">
<template slot-scope="scope">
<div>{{ dddw(dict.payMode, "id", scope.row.payModeId, "displayName") }}</div>
@ -168,7 +172,7 @@
<div style="margin-top:5px; font-size:10px;">{{ query.chargeFlag == 'N' ? '待收' : (query.chargeFlag == 'Y' ?
'已收' : '已退') }}费项目</div>
<el-table :data="asbItemsForFee" border highlight-current-row
:height="window.pageHeight > 600 ? (window.pageHeight - 270 - 146) / 2 : 92" size="small"
:height="Math.floor((tableListHeight - 146)/2)" size="small"
@selection-change="handleSelectionChange" ref="asbItemsForFeeTable">
<el-table-column type="selection" align="center" v-if="query.chargeFlag == 'N'" />
<el-table-column label="组合项目" width="120" prop="asbitemName" />
@ -213,24 +217,24 @@
</div>
<div class="btnDivClass">
<div class="btnListClass">
<el-button type="primary" class="btnClass" @click="btnCharge"
<el-button type="primary" class="commonbutton" @click="btnCharge"
:disabled="query.chargeFlag == 'N' ? false : true">收费</el-button>
</div>
<div class="btnListClass">
<el-button type="danger" class="btnClass" @click="btnChargeBack"
<el-button type="danger" class="commonbutton" @click="btnChargeBack"
:disabled="query.chargeFlag == 'Y' ? false : true">退费</el-button>
</div>
<div class="btnListClass">
<el-button type="success" class="btnClass" @click="chargePrint('0007', false, form.id)"
<el-button type="success" class="commonbutton" @click="chargePrint('0007', false, form.id)"
:disabled="query.chargeFlag == 'B' ? true : false">打印</el-button>
</div>
<div class="btnListClass">
<el-button type="success" class="btnClass" @click="chargePrint('0007', true, form.id)"
<el-button type="success" class="commonbutton" @click="chargePrint('0007', true, form.id)"
:disabled="query.chargeFlag == 'B' ? true : false">打印预览</el-button>
</div>
</div>
</div>
</el-card>
</div>
</div>
</template>
<script>
@ -247,7 +251,7 @@ export default {
PatientRegisterQuery,
PatientRegisterRefuseList,
},
props:["patientRegisterNo"],
props: ["patientRegisterNo"],
data() {
return {
query: {
@ -261,7 +265,7 @@ export default {
patientName: '',
},//
patientList: [],//
formInit:{},
formInit: {},
form: {
id: null,
patientRegisterId: null,
@ -323,21 +327,31 @@ export default {
},
created() {
this.formInit = Object.assign({},this.form)
this.dictInit();
this.formInit = Object.assign({}, this.form)
this.dictInit();
},
//
mounted() {
if(this.patientRegisterNo){
if (this.patientRegisterNo) {
this.Query('patientRegisterNo');
}else{
} else {
this.Query();
}
}
},
computed: {
...mapState(["window", "dict", "dataTransOpts", "patientRegister", "customerOrg"]),
tableListHeight() {
let tempH = this.window.pageHeight < 600 ? 600 : this.window.pageHeight
return tempH - 175
},
bodyWidth() {
let tempW = this.window.pageWidth < 600 ? 600 : this.window.pageWidth
return tempW - 110 - 20
}
},
methods: {
@ -347,8 +361,8 @@ export default {
//
Query(type) {
let url = '', ltype = type,body = {};
let url = '', ltype = type, body = {};
// {
// "skipCount": 2147483647,
@ -361,14 +375,14 @@ export default {
// "endDate": "string",
// "maxResultCount": 0
// }
if(this.patientRegisterNo){
if (this.patientRegisterNo) {
this.query.patientRegisterNo = this.patientRegisterNo
ltype = 'patientRegisterNo'
}
console.log('query', ltype, this.query,this.patientRegisterNo);
console.log('query', ltype, this.query, this.patientRegisterNo);
if (ltype == 'patientRegisterNo') {
if (!this.query.patientRegisterNo) return;
@ -383,7 +397,7 @@ export default {
if (this.query.startDate && this.query.endDate) {
body.startDate = moment(this.query.startDate).format("yyyy-MM-DD")
body.endDate = moment(this.query.endDate).format("yyyy-MM-DD")
if(body.startDate > body.endDate){
if (body.startDate > body.endDate) {
this.$message.warning("起始日期不能大于截止日期,数据校验不通过!")
return
}
@ -412,7 +426,7 @@ export default {
background: 'rgba(0, 0, 0, 0.7)'
});
postapi(url, body).then(res => {
console.log(url,body,res)
console.log(url, body, res)
if (res.code != - 1) {
this.patientList = res.data.items;
//this.patientList.length == 1 && this.query.chargeFlag == 'N'
@ -420,22 +434,22 @@ export default {
// this.query.patientRegisterNo = this.patientList[0].patientRegisterNo;
// this.query.patientName = this.patientList[0].patientName;
// this.query.patientNo = this.patientList[0].patientNo;
this.$nextTick(() =>{
this.$nextTick(() => {
setTimeout(() => {
this.$refs['patientList'].setCurrentRow(this.patientList[0])
this.$refs['patientList'].setCurrentRow(this.patientList[0])
this.rowClick(this.patientList[0])
}, 20)
})
}else{
})
} else {
this.asbItemsForFee = []
this.form = Object.assign({},this.formInit)
this.form = Object.assign({}, this.formInit)
}
}
loading.close();
})
.catch((err) => {
loading.close();
});
.catch((err) => {
loading.close();
});
},
@ -532,8 +546,8 @@ export default {
getCardRegister(idNo) {
this.cardRegister = [];
if(!idNo) return;
let body = { cardModeId: '0', idNo };
if (!idNo) return;
let body = { cardModeId: '0', idNo };
postapi(`/api/app/cardregister/getcardregisterlist`, body).then(res => {
if (res.code != - 1) {
this.cardRegister = res.data;
@ -545,7 +559,7 @@ export default {
//
getChargeAsbByChargeid(ChargeId) {
this.asbItemsForFee = [];
getapi(`/api/app/chargeasbitem/getchargeasbiteminchargeid?ChargeId=${ChargeId}`).then(res => {
getapi(`/api/app/chargeasbitem/getchargeasbiteminchargeid?ChargeId=${ChargeId}`).then(res => {
if (res.code != - 1) {
res.data.forEach(e => {
this.asbItemsForFee.push({
@ -702,24 +716,24 @@ export default {
},
//
findBalance() {
this.form.balance = Math.round((this.form.preTotal - this.form.total)*100)/100;
findBalance() {
this.form.balance = Math.round((this.form.preTotal - this.form.total) * 100) / 100;
},
//
inputMoney() {
// id = 01
let cashTotal= Number(0), unCashTotal= Number(0);
let cashTotal = Number(0), unCashTotal = Number(0);
this.chargePays.forEach(e => {
console.log('e',e)
if(e.payModeId == '01'){
console.log('e', e)
if (e.payModeId == '01') {
cashTotal += Number(e.chargeMoney);
}else{
} else {
unCashTotal += Number(e.chargeMoney);
}
}
});
this.form.preTotal = cashTotal + unCashTotal
this.findBalance()
this.findBalance()
if (unCashTotal > this.form.total) this.$message.warning(`数据校验失败:输入的非现金金额${unCashTotal}不能超过应收金额${this.form.total}`);
},
@ -758,7 +772,7 @@ export default {
//
btnCharge() {
let body = {};
let unCashTotal = Number(0) , cashTotal = Number(0);
let unCashTotal = Number(0), cashTotal = Number(0);
let msg = '';
let chargePays = [];
let asbitems = [];
@ -781,17 +795,17 @@ export default {
}
this.chargePays.forEach(e => {
if(e.payModeId == '01'){
if (e.payModeId == '01') {
cashTotal += Number(e.chargeMoney);
}else{
} else {
unCashTotal += Number(e.chargeMoney);
}
}
if (e.payModeId == '05' && e.chargeMoney) {
//console.log(e.payModeId,e.chargeMoney,e.cardRegisterId);
if (!e.cardRegisterId) msg = dddw(this.dict.payMode, "id", e.payModeId, "displayName") + '付费,必需选择会员卡号';
} else {
e.cardRegisterId = null;
}
}
});
if (msg) {
@ -813,14 +827,14 @@ export default {
this.chargePays.forEach(e => {
if (e.chargeMoney) {
if(e.payModeId == '01'){
if (e.payModeId == '01') {
//
chargePays.push({
payModeId: e.payModeId,
chargeMoney: e.chargeMoney - this.form.balance,
cardRegisterId: e.cardRegisterId,
});
}else{
} else {
chargePays.push({
payModeId: e.payModeId,
chargeMoney: e.chargeMoney,
@ -869,16 +883,16 @@ export default {
//console.log('body',body);
postapi('/api/app/registerasbitem/registerasbitemcharge', body).then(res => {
if (res.code != -1) {
this.form.id = res.data.chargeId; //
this.$confirm("操作成功, 是否打印发票?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
}).then(() => {
this.chargePrint('0007', false, res.data.chargeId)
setTimeout(() => {
setTimeout(() => {
this.Query();
}, 1000)
}).catch((err) => {
@ -970,20 +984,20 @@ export default {
if (err == "cancel") {
this.$message.info("已取消删除");
}
});
});
},
//
chargePrint(ReportCode, isPreview, chargeId) {
console.log('ReportCode, isPreview, chargeId',ReportCode, isPreview, chargeId)
console.log('ReportCode, isPreview, chargeId', ReportCode, isPreview, chargeId)
if (!chargeId) {
this.$message.info("人员信息尚未保存,不可执行此操作!");
return;
}
if(!this.$peisAPI) {
if (!this.$peisAPI) {
this.$message.info("此功能,需要在壳客户端才可运行!")
return
return
}
let token = window.sessionStorage.getItem('token');
@ -1006,9 +1020,9 @@ export default {
return this.$peisAPI.printPre(JSON.stringify(toOutShell));
}
})
.then(res =>{
.then(res => {
console.log(res)
if(JSON.parse(res).code < 0){
if (JSON.parse(res).code < 0) {
this.$message.error(JSON.parse(res).message)
}
})
@ -1024,9 +1038,9 @@ export default {
return this.$peisAPI.print(JSON.stringify(toOutShell));
}
})
.then(res =>{
.then(res => {
console.log(res)
if(JSON.parse(res).code < 0){
if (JSON.parse(res).code < 0) {
this.$message.error(JSON.parse(res).message)
}
})
@ -1039,7 +1053,7 @@ export default {
//
dictInit() {
this.query.startDate = new Date()
this.query.endDate = this.query.startDate
@ -1122,7 +1136,7 @@ export default {
});
//
postapi("/api/app/medicalpackage/getmedicalpackagelist",{}).then((res) => {
postapi("/api/app/medicalpackage/getmedicalpackagelist", {}).then((res) => {
if (res.code == 1) {
this.dict.medicalPackage = res.data;
}
@ -1156,7 +1170,7 @@ export default {
}
});
postapi("/api/app/asbitem/getasbitemlist",{}).then((res) => {
postapi("/api/app/asbitem/getasbitemlist", {}).then((res) => {
if (res.code == 1) {
this.dict.asbItemAll = res.data;
}
@ -1169,13 +1183,13 @@ export default {
//()
watch: {
"dataTransOpts.refresh.charge.S":{
"dataTransOpts.refresh.charge.S": {
immediate: true, //
// // deep: true, //
handler(newVal,oldVal){
console.log(`watch: 收费 newVal: ${newVal}, oldVal: ${oldVal}, 人员条码号: `,this.patientRegisterNo)
handler(newVal, oldVal) {
console.log(`watch: 收费 newVal: ${newVal}, oldVal: ${oldVal}, 人员条码号: `, this.patientRegisterNo)
this.query.patientRegisterNo = this.patientRegisterNo
this.Query("patientRegisterNo")
this.Query("patientRegisterNo")
}
},
},
@ -1191,18 +1205,8 @@ export default {
@import '../../assets/css/global.css';
.queryDivClass {
display: block;
width: v-bind("(window.pageWidth > 600 ? (window.pageWidth - 110 - 50) / 2 : 200) + 'px'");
height: v-bind("(window.pageHeight > 600 ? (window.pageHeight - 150) : 450) + 'px'");
}
.query {
margin-left: 10px;
}
.prListDivClass {
height: v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'");
margin-left: 5px;
}
.btnDivClass {

2
src/views/customerOrg/patientRegisterImport.vue

@ -1600,9 +1600,7 @@ export default {
let tableData = table.innerHTML
let fileName = moment(new Date()).format('yyyyMMDDHHmmss') + '.xls'
let blob = new Blob([tableData],{type:"text/plain;charset=utf-8"});
FileSaver.saveAs(blob, fileName);
},
},

Loading…
Cancel
Save