Commit 5a1c4f12 authored by 盖献康's avatar 盖献康

Merge remote-tracking branch 'origin/master'

parents d10dee53 3570df9b
import request from '../../utils/request'
// 查询药品列表
export function listDrug(query) {
return request({
url: '/finance/stock/drug/manage/list',
method: 'get',
params: query
})
}
// 查询配药出库列表
export function listDrugDelivery(query) {
return request({
url: '/finance/stock/outbound/list',
method: 'get',
params: query
})
}
// 新增药品
export function addDrug(data) {
return request({
url: '/finance/stock/drug/manage',
method: 'post',
data: data
})
}
// 修改药品
export function updateDrug(data) {
return request({
url: '/finance/stock/drug/manage',
method: 'put',
data: data
})
}
// 查询药品详情
export function getDrug(id) {
return request({
url: '/finance/stock/drug/manage/' + id,
method: 'get'
})
}
// 查询药品入库存信息
export function getDrugInventory(query) {
return request({
url: '/finance/stock/drug/detail/list',
method: 'get',
params: query
})
}
// 查询药品库存信息
export function getDrugInventoryDetail(id) {
return request({
url: '/finance/stock/outbound/' + id,
method: 'get'
})
}
// 详情药品入库
export function addQty(data) {
return request({
url: '/finance/stock/drug/manage/addQty',
method: 'post',
data: data
})
}
export function uploadByUrl(url) {
return request({
url: '/finance/stock/drug/manage/uploadByUrl?url=' + url,
method: 'post'
})
}
// 配药出库
export function drugOut(data) {
return request({
url: '/finance/stock/outbound/handleOut',
method: 'put',
data: data
})
}
// 药品导入下载模板
// export function upload(query) {
// return request({
// url: '/finance/common/download/template',
// method: 'get',
// params: query
// })
// }
export function uploadName(query) {
return request({
url: '/finance/common/getTemplate',
method: 'get',
params: query
})
}
......@@ -55,6 +55,14 @@ export function buyingOnCredit(data) {
data: data
})
}
// 押金充值提交
export function addDeposit(data) {
return request({
url: '/business/hospital/addDeposit',
method: 'post',
data: data
})
}
// 获取押金信息列表页
export function selectFinListById(query) {
return request({
......
......@@ -109,6 +109,37 @@
border: 1px solid #55A343!important;
}
}
// 四个字白色按钮
.fourWordswhiteBtn{
padding: 7px 13px 7px 11px;
width: 105px;
height: 32px;
background: #FFFFFF;
border-radius: 4px 4px 4px 4px;
border: 1px solid #E5E5E5;
opacity: 1;
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #333333;
i{
font-size: 11px;
width: 11px;
height: 11px;
}
&:hover {
background: rgba(95,181,75,0.08);
opacity: 1;
border: 1px solid #5FB54B;
color: #85C776!important;
}
&:focus {
background: rgba(85,163,67,0.08);
opacity: 1;
border: 1px solid #55A343;
color: #55A343!important;
}
}
/** 查询按钮样式*/
.queryBtn{
padding: 7px 13px 7px 11px;
......
......@@ -13,7 +13,7 @@ import store from './store'
import router from './router'
import directive from './directive' // directive
import plugins from './plugins' // plugins
import { download } from '@/utils/request'
import { download, importExclusive } from '@/utils/request'
import './assets/icons' // icon
import './permission' // permission control
......@@ -51,6 +51,7 @@ Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download
Vue.prototype.importExclusive = importExclusive
Vue.prototype.handleTree = handleTree
// 全局组件挂载
......
......@@ -104,6 +104,55 @@ export const constantRoutes = [
}
]
},
// 库存管理
{
path: '/inventory-management',
name: 'Inventory-management',
component: Layout,
hidden: true,
permissions: ['*:*:*'],
children: [
{
name: 'drug-management',
path: 'drug-management',
props: true,
component: () => import('@/views/inventory-management/drug-management/drug-management'),
meta: { title: '药物管理', icon: 'validCode' }
},
{
name: 'Add-drug',
path: 'add-drug',
props: true,
component: () => import('@/views/inventory-management/drug-management/add-drug'),
meta: { title: '新增', icon: 'validCode' }
},
{
name: 'Drug-detail',
path: 'drug-detail/:id/:identify',
props: true,
component: () => import('@/views/inventory-management/drug-management/drug-detail'),
meta: { title: '详情', icon: 'validCode' }
},
{
name: 'drug-delivery-management',
path: 'drug-delivery-management',
props: true,
component: () => import('@/views/inventory-management/drug-delivery-management/drug-delivery-management'),
meta: { title: '配药出库', icon: 'validCode' }
},
{
name: 'Drug-delivery-detail',
path: 'drug-delivery-detail/:id',
props: true,
component: () => import('@/views/inventory-management/drug-delivery-management/drug-delivery-detail'),
meta: { title: '详情', icon: 'validCode' }
}
]
},
{
path: '/financial-management',
name: 'Financial-management',
......@@ -162,6 +211,7 @@ export const constantRoutes = [
}
]
},
// 设备
{
path: '/equipment-management',
......
......@@ -5,12 +5,12 @@ import { parseTime } from './ruoyi'
*/
export function formatDate(cellValue) {
if (cellValue == null || cellValue == "") return "";
var date = new Date(cellValue)
var date = new Date(cellValue)
var year = date.getFullYear()
var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
}
......@@ -330,7 +330,7 @@ export function makeMap(str, expectsLowerCase) {
? val => map[val.toLowerCase()]
: val => map[val]
}
export const exportDefault = 'export default '
export const beautifierConf = {
......@@ -387,4 +387,18 @@ export function camelCase(str) {
export function isNumberStr(str) {
return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
}
// 金钱格式转换
export function moneyFormat(data) {
let result = 0
// 判断是不是数字
if (typeof data === 'number' && !isNaN(data)) {
result = data
} else {
let temp = parseFloat(data)
if (!isNaN(temp)){
result = temp
}
}
return result.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })
}
......@@ -143,5 +143,29 @@ export function download(url, params, filename, config) {
downloadLoadingInstance.close();
})
}
// 导入专用-- 成功啥都不返回,失败开启下载
export function importExclusive(url, params, filename, config) {
return service.post(url, params, {
transformRequest: [(params) => { return tansParams(params) }],
headers: { 'Content-Type': 'application/x-www-form-urlencoded', repeatSubmit: false },
responseType: 'blob',
...config
}).then(async (data) => {
const isBlob = blobValidate(data);
if (isBlob) {
Message.error('导入失败')
const blob = new Blob([data])
saveAs(blob, filename)
} else {
// const resText = await data.text();
// const rspObj = JSON.parse(resText);
// const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
Message.success('导入成功');
}
}).catch((r) => {
console.error(r)
Message.error('下载文件出现错误,请联系管理员!')
})
}
export default service
......@@ -13,35 +13,35 @@ export const tradeTypeOptions = (deptLevel) => {
} else {
opts = [
{
label: '现场门诊缴费',
value: '0'
label: '会员充值',
value: '6'
},
{
label: '预约门诊费',
label: '预约门诊诊察费',
value: '1'
},
{
label: '药物结算',
label: '现场门诊诊察费',
value: '0'
},
{
label: '药物处理',
value: '2'
},
{
label: '检查结算',
label: '辅助检查',
value: '3'
},
{
label: '治疗结算',
label: '辅助治疗',
value: '4'
},
{
label: '住院结算',
label: '住院治疗',
value: '5'
},
{
label: '会员卡充值',
value: '6'
},
{
label: '押金充值',
label: '住院押金',
value: '7'
}
]
......@@ -49,14 +49,14 @@ export const tradeTypeOptions = (deptLevel) => {
return opts
}
export const tradeTypeMap = {
'0': '现场门诊费',
'1': '预约门诊费',
'2': '药物结算',
'3': '检查结算',
'4': '治疗结算',
'5': '住院结算',
'6': '会员充值',
'7': '押金充值',
'0': '现场门诊诊察费',
'1': '预约门诊诊察费',
'2': '药物处理',
'3': '辅助检查',
'4': '辅助治疗',
'5': '住院治疗',
'6': '会员充值',
'7': '住院押金',
'8': '押金退费',
'9': '设备服务费',
'10': '医院预储值'
......@@ -71,3 +71,12 @@ export const refundTypeMap = {
'5': '原路退回',
'6': '退回会员卡余额'
}
export const payTypeMap = {
'0': '现结',
'1': '会员卡',
'2': '押金',
'3': '微信支付',
'4': '预储值',
'5': '原路退回',
'6': '退回会员卡余额'
}
<template>
<el-dialog :visible.sync="isShow" append-to-body class="deposit-modle" title="押金充值">
<el-dialog :close-on-click-modal="false" :visible.sync="isShow" append-to-body class="deposit-modle" title="押金充值">
<el-form ref="depositForm" :rules="rules" :model="depositForm" label-width="100px" size="small">
<el-row>
<el-col :span="8">
......@@ -21,7 +21,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="支付金额" prop="paymentAmount">
<el-input v-model="depositForm.paymentAmount" placeholder="请输入支付金额" @change="setDeduct">
<el-input v-model="depositForm.paymentAmount" placeholder="请输入支付金额" @input="handleInput" @change="setDeduct">
<template #suffix></template>
</el-input>
</el-form-item>
......@@ -29,15 +29,15 @@
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button class="queryBtn" icon="el-icon-check" @click="beforeSubmit">提 交</el-button>
<el-button class="backBth" icon="el-icon-back" @click="cancle">返 回</el-button>
<el-button class="backBth" icon="el-icon-back" @click="cancle">取 消</el-button>
<el-button class="queryBtn" icon="el-icon-check" @click="beforeSubmit">确 定</el-button>
</div>
</el-dialog>
</template>
<script>
import { paySettleBatch, treadHis } from '@/api/financial/payment'
import { addDeposit } from '@/api/financial/payment'
export default {
name: 'DepositModle',
......@@ -86,6 +86,11 @@ export default {
mounted() {
},
methods: {
handleInput() {
if (parseFloat(this.settlementForm.paymentAmount) > 99999.99) {
this.settlementForm.paymentAmount = '99999.99'
}
},
setDeduct(data) {
console.log('setDeduct', data)
const temp = this.depositForm.depositBalance - data
......@@ -109,61 +114,35 @@ export default {
// 结算提交前验证
beforeSubmit() {
console.log('this.depositForm', this.depositForm)
console.log(' this.ownerData', this.ownerData)
this.$refs['depositForm'].validate(valid => {
// const temp = {
// id: this.depositForm.id,
// payType: this.depositForm.payType,
// tradeType: '0', // 缴费列表结算固定填0--现场门诊缴费
// membershipCard: this.ownerData.membershipCard,
// linkId: this.depositForm.registerId,
// registerId: this.depositForm.registerId,
// paymentAmount: this.depositForm.paymentAmount,
// standardAmount: this.depositForm.standardAmount
// }
console.log(valid)
})
},
// 结算提交
submit() {
if (this.settlementData.settlementType === 'single') {
const temp = {
id: this.depositForm.id,
payType: this.depositForm.payType,
tradeType: '0', // 缴费列表结算固定填0--现场门诊缴费
membershipCard: this.ownerData.membershipCard,
linkId: this.depositForm.registerId,
registerId: this.depositForm.registerId,
paymentAmount: this.depositForm.paymentAmount,
standardAmount: this.depositForm.standardAmount
}
console.log('treadHis列表页结算提交', temp)
treadHis(temp).then(res => {
console.log(res)
this.$message.success('结算成功')
this.cancle('success')
}).catch(err => {
console.log(err)
})
} else {
const temp = {
mapIds: this.depositForm.mapIds,
payType: this.depositForm.payType,
paymentAmount: this.depositForm.paymentAmount || this.depositForm.standardAmount,
membershipCard: this.ownerData.membershipCard,
medicalRecordId: this.depositForm.medicalRecordId // 病历id ,必传
'medicalRecordId': this.depositData.medicalRecordId,
'linkId': this.depositData.medicalRecordId,
'tradeType': '7',
'hospitalId': this.depositData.hospitalId,
'payType': 0,
'paymentAmount': this.depositForm.paymentAmount,
'detail': this.depositData.medicalRecordNo,
'number': '1',
'hospitalName': this.depositData.hospitalName,
'petOwnerId': this.ownerData.ownerId, // 宠主主键
'petOwnerName': this.ownerData.nickName,
'petOwnerPhone': this.ownerData.phoneNumber,
'petInsurance': this.depositData.insure, // 宠物保险
'refundType': 0 // 写死
}
paySettleBatch(temp).then(res => {
console.log('paySettleBatch', res)
addDeposit(temp).then(() => {
this.$message.success('结算成功')
this.cancle('success')
}).catch(err => {
console.log('paySettleBatchErr', err)
console.log('addDeposit', err)
})
}
})
},
cancle(flag) {
this.$refs.depositForm.resetFields()
this.$emit('settlement-close', flag)
this.$emit('deposit-close', flag)
}
}
......
<template>
<el-dialog :visible.sync="isShow" append-to-body class="settlement-modle" title="结算">
<el-dialog :close-on-click-modal="false" :visible.sync="isShow" append-to-body class="settlement-modle" title="结算">
<el-form ref="settlementForm" :rules="rules" :model="settlementForm" label-width="100px" size="small">
<el-row>
<el-col :span="8" class="form__left">
......@@ -8,6 +8,7 @@
v-model="settlementForm.payType"
clearable
placeholder="请选择结算方式"
@change="payTypeChange"
>
<el-option
v-for="(item, index) in payTypeOptions"
......@@ -20,7 +21,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="标准价格">
<el-input v-model="settlementForm.standardAmount" placeholder="暂无数据" disabled />
<el-input v-model="settlementForm.standardAmount" placeholder="暂无数据" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -84,9 +85,9 @@
</div>
</el-row>
<el-row>
<el-col v-if="(settlementForm.settlementType === 'single' || settlementForm.isSinglePay === true)" :span="8">
<el-col v-if="settlementForm.payType" :span="8">
<el-form-item label="支付金额" prop="paymentAmount">
<el-input v-model="settlementForm.paymentAmount" placeholder="请输入支付金额" @change="setDeduct">
<el-input v-model="settlementForm.paymentAmount" :disabled="!(settlementForm.settlementType === 'single' || settlementForm.isSinglePay === true)" placeholder="请输入支付金额" @input="handleInput" @change="setDeduct">
<template #suffix></template>
</el-input>
</el-form-item>
......@@ -94,8 +95,8 @@
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button class="queryBtn" icon="el-icon-check" @click="beforeSubmit">提 交</el-button>
<el-button class="backBth" icon="el-icon-back" @click="cancle">返 回</el-button>
<el-button class="backBth" icon="el-icon-back" @click="cancle">取 消</el-button>
<el-button class="queryBtn" icon="el-icon-check" @click="beforeSubmit">确 定</el-button>
</div>
</el-dialog>
</template>
......@@ -103,6 +104,7 @@
<script>
import { paySettleBatch, treadHis } from '@/api/financial/payment'
import { mapGetters } from 'vuex'
export default {
name: 'SettlementModle',
......@@ -154,16 +156,7 @@ export default {
value: '5'
}
],
payTypeOptions: [
{
value: '0',
label: '现结'
},
{
value: '1',
label: '会员卡余额结算'
}
], // 结算方式列表
payTypeOptions: [], // 结算方式列表
// 结算提交表单
settlementForm: {
id: '',
......@@ -190,7 +183,7 @@ export default {
rules: {
paymentAmount: [
{ required: true, message: '请输入支付金额', trigger: 'blur' },
{ pattern: /^\d+$/, message: '请输入有效的数字', trigger: 'blur' }
{ pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: '仅支持数字、小数点(保留两位小数)', trigger: 'blur' }
],
payType: [
{ required: true, message: '请选择结算方式', trigger: 'change' }
......@@ -200,44 +193,64 @@ export default {
},
computed: {
...mapGetters(['name'])
},
watch: {
settlementData(val) {
console.log('settlementData', val)
if (val.settlementType !== 'multiple') {
// this.settlementForm.payType = val.payType
this.settlementForm.id = val.id
this.settlementForm.registerId = val.registerId
} else {
this.settlementForm.mapIds = val.mapIds
this.settlementForm.medicalRecordId = val.medicalRecordId
this.settlementForm.isSinglePay = val.isSinglePay
this.settlementForm.showHospatilOption = val.showHospatilOption
this.settlementForm.settlementType = val.settlementType
if (this.settlementForm.showHospatilOption) {
settlementData: {
handler(val) {
console.log('settlementData2333', val)
if (val.settlementType !== 'multiple') {
// this.settlementForm.payType = val.payType
this.settlementForm.id = val.id
this.settlementForm.registerId = val.registerId
const temp = [
{
value: '0',
label: '现结'
},
{
}
]
if (val.canUserMemberShip) {
temp.push({
value: '1',
label: '会员卡余额结算'
},
})
}
this.payTypeOptions = []
this.payTypeOptions.push(...temp)
} else {
this.settlementForm.mapIds = val.mapIds
this.settlementForm.medicalRecordId = val.medicalRecordId
this.settlementForm.isSinglePay = val.isSinglePay
this.settlementForm.showHospatilOption = val.showHospatilOption
this.settlementForm.settlementType = val.settlementType
const temp = [
{
value: '2',
label: '住院押金结算'
value: '0',
label: '现结'
}
]
if (val.canUserMemberShip) {
temp.push({
value: '1',
label: '会员卡余额结算'
})
}
if (this.settlementForm.showHospatilOption) {
temp.push({
value: '2',
label: '住院押金结算'
})
}
this.payTypeOptions = []
this.payTypeOptions.push(...temp)
}
}
this.settlementForm.standardAmount = val.payAmount
this.settlementForm.payRecipient = val.payRecipient
// this.settlementForm.paymentAmount = val.paymentAmount
Object.assign(this.ownerData, val.ownerData)
console.log('settlementData', this.settlementForm, this.ownerData)
this.settlementForm.standardAmount = val.payAmount
this.settlementForm.payRecipient = this.name
// this.settlementForm.paymentAmount = val.paymentAmount
this.ownerData = { ...val.ownerData }
console.log('ownerData', this.ownerData, val.ownerData)
},
deep: true
}
},
created() {
......@@ -246,6 +259,19 @@ export default {
mounted() {
},
methods: {
handleInput() {
if (parseFloat(this.settlementForm.paymentAmount) > 99999.99) {
this.settlementForm.paymentAmount = '99999.99'
}
},
payTypeChange(data) {
console.log(data)
// 如果勾选了多条缴费信息则支付金额为标准价格另如果结算方式为会员卡则需要乘以会员折扣
if (!this.settlementForm.isSinglePay) {
const discount = data === '1' ? this.ownerData.discount : '1'
this.settlementForm.paymentAmount = this.settlementForm.standardAmount * discount
}
},
setDeduct(data) {
console.log('setDeduct', data)
const temp = this.settlementForm.depositBalance - data
......@@ -270,19 +296,21 @@ export default {
beforeSubmit() {
console.log('this.settlementForm', this.settlementForm)
this.$refs['settlementForm'].validate(valid => {
if (this.settlementForm.payType === '0') {
// 现结
this.submit()
} else {
// 会员卡余额 判断支付金额 是否大于会员卡余额 及 会员卡状态是否启用
if (this.settlementForm.payType === '1' && this.settlementForm.paymentAmount > this.ownerData.cardBalance) {
this.$message.error('会员卡余额不足,请充值或更换其他结算方式')
} else if (this.settlementForm.payType === '1' && this.ownerData.status === '1') {
this.$message.error('会员卡状态未启用,请更换其他结算方式或联系管理员')
} else if (this.settlementForm.payType === '2' && this.settlementForm.deduct === '-') {
this.$message.error('押金余额不足,请充值或更换其他结算方式')
} else {
if (valid) {
if (this.settlementForm.payType === '0') {
// 现结
this.submit()
} else {
// 会员卡余额 判断支付金额 是否大于会员卡余额 及 会员卡状态是否启用
if (this.settlementForm.payType === '1' && parseFloat(this.settlementForm.paymentAmount) > parseFloat(this.ownerData.cardBalance)) {
this.$message.error('会员卡余额不足,请充值或更换其他结算方式')
} else if (this.settlementForm.payType === '1' && this.ownerData.status === '1') {
this.$message.error('会员卡状态未启用,请更换其他结算方式或联系管理员')
} else if (this.settlementForm.payType === '2' && this.settlementForm.deduct === '-') {
this.$message.error('押金余额不足,请充值或更换其他结算方式')
} else {
this.submit()
}
}
}
})
......@@ -303,7 +331,7 @@ export default {
console.log('treadHis列表页结算提交', temp)
treadHis(temp).then(res => {
console.log(res)
this.$message.success('结算成功')
this.$message.success('充值成功')
this.cancle('success')
}).catch(err => {
console.log(err)
......@@ -337,6 +365,7 @@ export default {
<style lang="scss" scoped>
.settlement-modle {
::v-deep .el-dialog {
margin-top: 15vh !important;
width: 1060px;
}
.owner-area{
......@@ -379,6 +408,9 @@ export default {
</style>
<style lang="scss">
.settlement-modle {
.el-form-item__content{
display: flex;
}
.el-input--small {
width: 188px !important;
}
......
<template>
<el-dialog :visible.sync="isShow" append-to-body class="refund-modle" title="结算">
<el-dialog :close-on-click-modal="false" :visible.sync="isShow" append-to-body class="refund-modle" title="结算">
<el-form ref="refundForm" :model="refundForm" label-width="100px" size="small">
<!-- 收入信息-->
<div v-if="refundForm.tradeType !== '7'" class="content-area">
......@@ -104,7 +104,7 @@
</el-table-column>
<el-table-column align="center" label="当前余额" prop="paymentAmount">
<template slot-scope="scope">
{{ (scope.row.tradeType === '7'? '+' : '-') + scope.row.amountAfterTrade }}
{{ scope.row.amountAfterTrade === '0' ? '0' : (scope.row.tradeType === '7'? '+' : '-') + scope.row.amountAfterTrade }}
</template>
</el-table-column>
</el-table>
......@@ -141,8 +141,8 @@
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button class="queryBtn" icon="el-icon-check" @click="submit">提 交</el-button>
<el-button class="backBth" icon="el-icon-back" @click="cancle">返 回</el-button>
<el-button class="backBth" icon="el-icon-back" @click="cancle">取 消</el-button>
<el-button class="queryBtn" icon="el-icon-check" @click="submit">确 定</el-button>
</div>
</el-dialog>
</template>
......
This diff is collapsed.
This diff is collapsed.
......@@ -51,7 +51,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="name" label="门诊诊费">
<el-form-item prop="name" label="门诊诊费">
<div style="display: flex;">
<el-input v-model="doctorForm.examinationFee" :disabled="true" maxlength="20" />
<div style="margin-left: 10px;"></div></div>
......
......@@ -49,7 +49,7 @@
<el-table-column label="总放号数" min-width="80" prop="allCount" show-overflow-tooltip />
<el-table-column label="剩余号数" min-width="80" prop="residueCount" show-overflow-tooltip />
<el-table-column
label="门诊诊费"
label="门诊诊费"
min-width="80"
prop="fees"
show-overflow-tooltip
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment