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.
 
 
 

285 lines
9.9 KiB

<template>
<div style="margin-top: -10px;">
<div>
<el-tabs v-model="tabChoosed" style="margin-top: 0px;">
<el-tab-pane label="待收费项目" name="1">
<el-table :data="tableData" border style="width: 100%" row-key="id" height="450" highlight-current-row
size="small" @selection-change="handleSelectionChange" :row-style="{ height: '25px' }">
<el-table-column type="selection" align="center" width="40" />
<el-table-column type="index" label="序号" align="center" width="40" />
<el-table-column label="组合项目" min-width="150" prop="asbitemName"></el-table-column>
<el-table-column label="标准价格" prop="standardPrice" min-width="70" align="center" />
<el-table-column label="数量" prop="amount" min-width="50" align="center"></el-table-column>
<el-table-column label="实收价格" prop="chargePrice" min-width="70" align="center"></el-table-column>
<el-table-column prop="total" label="金额" min-width="70" align="center" />
<el-table-column prop="standardPrice" label="标准金额" min-width="70" align="center" />
</el-table>
</el-tab-pane>
<el-tab-pane label="已收费项目" name="2">
<el-table :data="hisRequestData" border style="width: 100%" row-key="id" height="160" highlight-current-row
size="small" @row-click="rowClick" :row-style="{ height: '25px' }">
<el-table-column type="index" label="序号" align="center" width="40" />
<el-table-column label="申请单号" min-width="100" prop="chargeRequestNo"></el-table-column>
<el-table-column prop="hisChargeNo" label="his收费单" min-width="80" align="center" />
<el-table-column prop="charges" label="金额" min-width="80" align="center" />
<el-table-column prop="chargeRequestFlag" label="收费状态" width="70" align="center">
<template slot-scope="scope">
<div>{{ setChargeRequestFlag(scope.row.chargeRequestFlag) }}</div>
</template>
</el-table-column>
<el-table-column prop="ch" label="收费人员" min-width="80" align="center" />
<el-table-column prop="creationTime" label="申请时间" min-width="150" align="center" />
<el-table-column label="操作" width="150" align="center">
<template slot-scope="scope">
<div style="display: flex;justify-content: space-between;">
<div>
<el-button class="commonbutton" @click="cancelRequest(scope.row)" style="width:80px;"
:disabled="setBtnDisabled(scope.row, 'cancel')">撤消申请</el-button>
</div>
<div>
<el-button class="commonbutton" @click="chargeBack(scope.row)" style="width:50px;"
:disabled="setBtnDisabled(scope.row, 'chargeBack')">退费申请</el-button>
</div>
</div>
</template>
</el-table-column>
</el-table>
<div style="padding: 10px 0 5px 0;">申请单包含项目</div>
<el-table :data="hisRequestDataDetails" border style="width: 100%" row-key="id" height="256"
highlight-current-row size="small" :row-style="{ height: '25px' }">
<el-table-column type="index" label="序号" align="center" width="40" />
<el-table-column label="组合项目" min-width="150" prop="asbitemName"></el-table-column>
<el-table-column label="数量" prop="amount" min-width="50" align="center"></el-table-column>
<el-table-column label="实收价格" prop="chargePrice" min-width="70" align="center"></el-table-column>
<el-table-column prop="total" label="金额" min-width="70" align="center" />
</el-table>
</el-tab-pane>
</el-tabs>
</div>
<!-- 按钮区域 -->
<div style="display: flex; margin-top: 10px; justify-content: space-between;">
<div></div>
<div style="display: flex;">
<div style="margin-left: 10px">
<el-button class="commonbutton" @click="btnRefresh">刷新</el-button>
</div>
<div style="margin-left: 10px" v-show="tabChoosed == '1'">
<el-button class="commonbutton" @click="btnSubmit">收费申请</el-button>
</div>
<div style="margin-left: 10px">
<el-button class="commonbutton" @click="dialogWin.AsbChargeRequest = false">关闭</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { dddw, arrayExistObj, deepCopy } from "../../utlis/proFunc";
// import
export default {
props: ["patientRegister"],
data() {
return {
tabChoosed: '1',
tableData: [], //组合项目数据 过滤后显示的数据
selectedData: [], //选中的组合项目
hisRequestData: [], //收费申请单
hisRequestDataDetails: [], //收费申请单明细
};
},
created() {
},
mounted() {
this.initData(this.patientRegister.id);
},
computed: {
...mapState(["dict", "dataTransOpts", "dialogWin"]),
},
methods: {
initData(patientRegisterId) {
this.tableData = []
this.hisRequestData = []
this.hisRequestDataDetails = []
if (!patientRegisterId) return
//待收费项目
this.asbList(patientRegisterId)
// 收费申请单
this.requestList(patientRegisterId)
},
// 待收费项目
asbList(patientRegisterId) {
this.tableData = []
postapi('/api/app/registerasbitem/GetCanChargeAsbitemsByPatientRegisterId', { patientRegisterId })
.then(res => {
if (res.code > -1) {
res.data.forEach(e => {
e.total = Number(e.chargePrice * e.amount)
this.tableData.push(e)
});
}
})
},
// 收费申请单列表查询
requestList(patientRegisterId) {
this.hisRequestData = []
this.hisRequestDataDetails = []
postapi('/api/app/ChargeRequest/GetChargeRequestsByPatientRegisterId', { patientRegisterId })
.then(res => {
if (res.code > -1) {
this.hisRequestData = res.data
}
})
},
setChargeRequestFlag(chargeRequestFlag) {
let ret = '收费申请'
switch (chargeRequestFlag) {
case '1':
ret = '已收费'
break;
case '2':
ret = '作废申请'
break;
case '3':
ret = '已作废'
break;
case '4':
ret = '退费申请'
break;
case '5':
ret = '已退费'
break;
default:
break;
}
return ret
},
handleSelectionChange(v) {
this.selectedData = v;
},
setBtnDisabled(row, oprType) {
let ret = true
if (oprType == 'chargeBack') {
if (row.chargeRequestFlag == '1') ret = false
} else {
if (row.chargeRequestFlag == '0') ret = false
}
return ret
},
// 获取申请单明细
rowClick(row) {
this.hisRequestDataDetails = []
postapi('/api/app/ChargeRequest/GetChargeRequestAsbitemsByChargeRequestId', { chargeRequestId: row.id })
.then(res => {
if (res.code > -1) {
res.data.forEach(e => {
e.total = Number(e.chargePrice * e.amount)
this.hisRequestDataDetails.push(e)
});
}
})
},
// 撤消申请(作废申请)
cancelRequest(row) {
postapi('/api/app/ChargeRequest/CancelChargeRequest', { chargeRequestId: row.id })
.then(res => {
if (res.code > -1) {
row.chargeRequestFlag = "2"
}
})
},
// 退费申请
chargeBack(row) {
postapi('/api/app/ChargeRequest/RefundChargeRequest', { chargeRequestId: row.id })
.then(res => {
if (res.code > -1) {
row.chargeRequestFlag = "4"
}
})
},
// 刷新
btnRefresh() {
if (this.tabChoosed == '1') {
this.asbList(this.patientRegister.id)
} else {
this.requestList(this.patientRegister.id)
}
},
btnSubmit() {
if (this.selectedData.length == 0) {
this.$message.warning({ showClose: true, message: `请勾选要发送收费申请的检查项目!` });
return;
}
let body = {
patientRegisterId: this.patientRegister.id,
registerCheckAsbitems: []
}
this.selectedData.forEach(e => {
body.registerCheckAsbitems.push({ registerCheckAsbitemId: e.registerCheckAsbitemId })
});
postapi("/api/app/ChargeRequest/Create", body)
.then(res => {
if (res.code > -1) {
this.initData(this.patientRegister.id)
}
});
},
},
//监听事件
watch: {
//
"dataTransOpts.refresh.charge.S": {
// immediate: true, // 立即执行
// // deep: true, // 深度监听复杂类型内变化
handler(newVal, oldVal) {
console.log(`watch: 收费 newVal: ${newVal}, oldVal: ${oldVal}, 人员条码号: `, this.patientRegister.id)
if (newVal != oldVal) this.initData(this.patientRegister.id)
}
},
"tabChoosed": {
// immediate: true, // 立即执行
// // deep: true, // 深度监听复杂类型内变化
handler(newVal, oldVal) {
console.log(`watch: 收费 newVal: ${newVal}, oldVal: ${oldVal}, 人员条码号: `, this.patientRegister.id)
if (newVal != oldVal) {
if (newVal == '1') {
this.asbList(this.patientRegister.id)
} else {
this.requestList(this.patientRegister.id)
}
}
}
},
},
};
</script>
<style scoped>
@import "../../assets/css/global_input.css";
@import "../../assets/css/global_table.css";
@import "../../assets/css/global.css";
</style>