国际研讨会->添加参会人-嘉宾-演讲嘉宾表单样式调整;bug修改

This commit is contained in:
zhaoxiao
2021-10-19 17:18:13 +08:00
parent b0a50b19e1
commit e22de5b99a
6 changed files with 113 additions and 78 deletions
@@ -35,7 +35,8 @@
</a-col> </a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24">
<span class="table-page-search-submitButtons"> <span class="table-page-search-submitButtons">
<a-button type="primary" icon="search" @click="searchQuery" v-has="'incomePaymentAndInvoiving:search'">查询</a-button> <a-button type="primary" icon="search" @click="searchQuery"
v-has="'incomePaymentAndInvoiving:search'">查询</a-button>
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button> <a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
</span> </span>
</a-col> </a-col>
@@ -46,8 +47,12 @@
<!-- 操作按钮区域--> <!-- 操作按钮区域-->
<div class="table-operator"> <div class="table-operator">
<a-button type="primary" icon="export" @click="handleExportXls('到账开票')" v-has="'incomePaymentAndInvoiving:export'">导出</a-button> <a-button type="primary" icon="export" @click="handleExportXls('到账开票')"
<a-button type="primary" icon="file-text" @click="batchInvoicing" v-has="'incomePaymentAndInvoiving:batchInvoicing'">合并开票</a-button> v-has="'incomePaymentAndInvoiving:export'">导出
</a-button>
<a-button type="primary" icon="file-text" @click="batchInvoicing"
v-has="'incomePaymentAndInvoiving:batchInvoicing'">合并开票
</a-button>
</div> </div>
<!-- 操作按钮区域-end--> <!-- 操作按钮区域-end-->
@@ -98,7 +103,8 @@
<span slot="action" class="action-span-cell" slot-scope="text, record"> <span slot="action" class="action-span-cell" slot-scope="text, record">
<a @click="incomePayment(record)" v-has="'incomePaymentAndInvoiving:incomePayment'">来款</a> <a @click="incomePayment(record)" v-has="'incomePaymentAndInvoiving:incomePayment'">来款</a>
<a @click="invoicing(record)" :disabled="record.needInvoice === 0" v-has="'incomePaymentAndInvoiving:invoicing'">开票</a> <a @click="invoicing(record)" :disabled="record.needInvoice === 0"
v-has="'incomePaymentAndInvoiving:invoicing'">开票</a>
</span> </span>
</a-table> </a-table>
</div> </div>
@@ -271,7 +277,7 @@ export default {
selectedProject: [], selectedProject: [],
batchInvoicingVisible: false, batchInvoicingVisible: false,
selectedCompany: {}, // 选中项目的企业信息 selectedCompany: {}, // 选中项目的企业信息
mailContactsId: null, // 项目邮寄联系人id mailContactsId: null // 项目邮寄联系人id
} }
}, },
methods: { methods: {
@@ -329,7 +335,7 @@ export default {
// 开票 // 开票
if (operateType === 'invoic') { if (operateType === 'invoic') {
// 是否存在不需要发票的项目 // 是否存在不需要发票的项目
if (arr.some(item => item.needInvoice === 0 || Number(item.receivableAmount) === 0)){ if (arr.some(item => item.needInvoice === 0 || Number(item.receivableAmount) === 0)) {
reject('存在不需要发票的项目!') reject('存在不需要发票的项目!')
} }
// 是否存在企业不同的项目 // 是否存在企业不同的项目
@@ -341,7 +347,7 @@ export default {
if (!isAllEqual(companyArr)) { if (!isAllEqual(companyArr)) {
reject('请选择来款单位为同一企业的项目合并开票!') reject('请选择来款单位为同一企业的项目合并开票!')
} }
if (arr.some(item => item.invoiceAmount && Number(item.invoiceAmount) === Number(item.receivableAmount))) { if (arr.some(item => item.makeInvoice === 1)) {
reject('存在已完成开票的项目!') reject('存在已完成开票的项目!')
} }
this.selectedCompany = { this.selectedCompany = {
@@ -29,7 +29,7 @@
</a-row> </a-row>
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :xxl="18" :xl="18" :sm="24"> <a-col>
<a-form-item label="个人简介" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol"> <a-form-item label="个人简介" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea <a-textarea
:disabled="isEditBool" :disabled="isEditBool"
@@ -50,7 +50,8 @@
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24"> <a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否用餐" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="是否用餐" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['haveMeals',validatorRules.haveMealBools]" @change="selecthaveMealBools"> <a-radio-group :disabled="isEditBool" v-decorator="['haveMeals',validatorRules.haveMealBools]"
@change="selecthaveMealBools">
<a-radio :value="1">是</a-radio> <a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio> <a-radio :value="0">否</a-radio>
</a-radio-group> </a-radio-group>
@@ -74,12 +75,15 @@
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24"> <a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否住酒店" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="是否住酒店" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['checkInHotel',validatorRules.checkinHotel]" @change="changeHotel"> <a-radio-group :disabled="isEditBool" v-decorator="['checkInHotel',validatorRules.checkinHotel]"
@change="changeHotel">
<a-radio :value="1">是</a-radio> <a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio> <a-radio :value="0">否</a-radio>
</a-radio-group> </a-radio-group>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row>
<a-row :gutter="24">
<!--入住酒店选择是才显示--> <!--入住酒店选择是才显示-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="inHotelBool"> <a-col :xxl="8" :xl="12" :sm="24" v-if="inHotelBool">
<a-form-item label="入住酒店时间" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="入住酒店时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -95,7 +99,8 @@
</a-col> </a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-if="inHotelBool"> <a-col :xxl="8" :xl="12" :sm="24" v-if="inHotelBool">
<a-form-item label="房型" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="房型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="isEditBool" @change="event => event.target.value = event.target.value.trim()" :maxLength="50" <a-input :disabled="isEditBool" @change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
v-decorator="['roomLayout']" v-decorator="['roomLayout']"
placeholder="请输入房型"></a-input> placeholder="请输入房型"></a-input>
</a-form-item> </a-form-item>
@@ -115,7 +120,8 @@
</a-radio-group> </a-radio-group>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool"> <a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool">
<a-form-item label="抵达时间" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="抵达时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date :disabled="isEditBool" placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']" <j-date :disabled="isEditBool" placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']"
@@ -133,7 +139,6 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool"> <a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool">
<a-form-item label="到达班次" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="到达班次" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="isEditBool" placeholder="请输入到达班次" <a-input :disabled="isEditBool" placeholder="请输入到达班次"
@@ -145,12 +150,15 @@
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24"> <a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否需要送站" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="是否需要送站" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['deliveryStation',validatorRules.deliveryStation]" @change="changeSend"> <a-radio-group :disabled="isEditBool" v-decorator="['deliveryStation',validatorRules.deliveryStation]"
@change="changeSend">
<a-radio :value="1">是</a-radio> <a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio> <a-radio :value="0">否</a-radio>
</a-radio-group> </a-radio-group>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row>
<a-row :gutter="24">
<!--送站选择是才显示--> <!--送站选择是才显示-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="sendBool"> <a-col :xxl="8" :xl="12" :sm="24" v-if="sendBool">
<a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -191,8 +199,8 @@
</a-row> </a-row>
<!--特邀嘉宾没有备注--> <!--特邀嘉宾没有备注-->
<a-row :gutter="24" v-if="guestType!== 3"> <a-row v-if="guestType!== 3">
<a-col :xxl="18" :xl="18" :sm="24"> <a-col>
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol"> <a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea <a-textarea
:disabled="isEditBool" :disabled="isEditBool"
@@ -223,20 +231,24 @@ export default {
desription: '其他会议的参会情况的表单', desription: '其他会议的参会情况的表单',
form: this.$form.createForm(this), form: this.$form.createForm(this),
labelCol: { labelCol: {
xs: {span: 24}, xs: { span: 24 },
sm: {span: 6} sm: { span: 6 }
}, },
wrapperCol: { wrapperCol: {
xs: {span: 24}, xs: { span: 24 },
sm: {span: 18} sm: { span: 18 }
}, },
remarksLabelCol: { remarksLabelCol: {
xs: {span: 24}, xs: { span: 24 },
sm: {span: 3} sm: { span: 6 },
xxl: { span: 2 },
xl: { span: 3 }
}, },
remarksWrapperCol: { remarksWrapperCol: {
xs: {span: 24}, xs: { span: 24 },
sm: {span: 21} sm: { span: 18 },
xxl: { span: 22 },
xl: { span: 21 }
}, },
selectedCompany: null, selectedCompany: null,
// 是否用餐 // 是否用餐
@@ -248,26 +260,26 @@ export default {
// 是否接站 // 是否接站
pickUpBool: false, pickUpBool: false,
// 是否可编辑 // 是否可编辑
isEditBool:false, isEditBool: false,
validatorRules: { validatorRules: {
haveMealBools: { haveMealBools: {
rules: [{required: true, message: '请选择是否用餐'}], rules: [{ required: true, message: '请选择是否用餐' }],
validateTrigger: 'change' validateTrigger: 'change'
}, },
huiPeople: { huiPeople: {
rules: [{required: true, message: '请选择是否回民'}], rules: [{ required: true, message: '请选择是否回民' }],
validateTrigger: 'change' validateTrigger: 'change'
}, },
checkinHotel: { checkinHotel: {
rules: [{required: true, message: '请选择是否入住酒店'}], rules: [{ required: true, message: '请选择是否入住酒店' }],
validateTrigger: 'change' validateTrigger: 'change'
}, },
pickUp: { pickUp: {
rules: [{required: true, message: '请选择是否接站'}], rules: [{ required: true, message: '请选择是否接站' }],
validateTrigger: 'change' validateTrigger: 'change'
}, },
deliveryStation: { deliveryStation: {
rules: [{required: true, message: '请选择是否送站'}], rules: [{ required: true, message: '请选择是否送站' }],
validateTrigger: 'change' validateTrigger: 'change'
} }
} }
@@ -305,7 +317,7 @@ export default {
if (!err) { if (!err) {
this.$emit('formData', values) this.$emit('formData', values)
} else { } else {
this.$emit('formData', {stop: true}) this.$emit('formData', { stop: true })
} }
}) })
}, },
@@ -363,7 +375,7 @@ export default {
/* /*
* 编辑回显值 * 编辑回显值
* */ * */
setFormVal(record){ setFormVal(record) {
// 回显邮寄联系人 // 回显邮寄联系人
this.isEditBool = record.checkResult === 1 this.isEditBool = record.checkResult === 1
// this.selectPostPerson = { // this.selectPostPerson = {
@@ -371,19 +383,19 @@ export default {
// name:record.postContactName // name:record.postContactName
// } // }
// 是否用餐的显示 // 是否用餐的显示
if(record.haveMeals === 1){ if (record.haveMeals === 1) {
this.haveMealBool = true this.haveMealBool = true
this.$nextTick(() => { this.$nextTick(() => {
// 是否回民回显 // 是否回民回显
this.form.setFieldsValue(pick(record, this.form.setFieldsValue(pick(record,
'huiPeople', 'huiPeople'
)) ))
}) })
}else if(record.haveMeals === 0){ } else if (record.haveMeals === 0) {
this.haveMealBool = false this.haveMealBool = false
} }
// 是否住酒店 // 是否住酒店
if(record.checkInHotel === 1){ if (record.checkInHotel === 1) {
this.inHotelBool = true this.inHotelBool = true
// 入住酒店回显 离店时间回显 房型回显 // 入住酒店回显 离店时间回显 房型回显
this.$nextTick(() => { this.$nextTick(() => {
@@ -391,14 +403,14 @@ export default {
this.form.setFieldsValue(pick(record, this.form.setFieldsValue(pick(record,
'inHotelTime', 'inHotelTime',
'outHotelTime', 'outHotelTime',
'roomLayout', 'roomLayout'
)) ))
}) })
}else if(record.checkInHotel === 0){ } else if (record.checkInHotel === 0) {
this.inHotelBool = false this.inHotelBool = false
} }
// 是否接站 // 是否接站
if(record.pickUp === 1){ if (record.pickUp === 1) {
this.pickUpBool = true this.pickUpBool = true
// 抵达时间 到达站 到达班次 // 抵达时间 到达站 到达班次
this.$nextTick(() => { this.$nextTick(() => {
@@ -406,27 +418,27 @@ export default {
this.form.setFieldsValue(pick(record, this.form.setFieldsValue(pick(record,
'arrivalTime', 'arrivalTime',
'destination', 'destination',
'arrivalShift', 'arrivalShift'
)) ))
}) })
}else if(record.pickUp === 0){ } else if (record.pickUp === 0) {
this.pickUpBool = false this.pickUpBool = false
} }
// 是否送站 // 是否送站
if(record.deliveryStation === 1){ if (record.deliveryStation === 1) {
this.sendBool = true this.sendBool = true
this.$nextTick(() => { this.$nextTick(() => {
// 离开时间 离开站 离开班次 // 离开时间 离开站 离开班次
this.form.setFieldsValue(pick(record, this.form.setFieldsValue(pick(record,
'departureTime', 'departureTime',
'departureStation', 'departureStation',
'departureShift', 'departureShift'
)) ))
}) })
}else if(record.pickUp === 0){ } else if (record.pickUp === 0) {
this.sendBool = false this.sendBool = false
} }
console.log(record,'record') console.log(record, 'record')
this.$nextTick(() => { this.$nextTick(() => {
// 身份类型是嘉宾 内部企业只渲染 住店 抵达时间 离开时间 // 身份类型是嘉宾 内部企业只渲染 住店 抵达时间 离开时间
this.form.setFieldsValue(pick(record, this.form.setFieldsValue(pick(record,
@@ -444,7 +456,7 @@ export default {
}) })
}, }
} }
} }
</script> </script>
@@ -527,6 +527,9 @@ export default {
if (arr.some(item => item.needInvoice === 0 || Number(item.receivableAmount) === 0)) { if (arr.some(item => item.needInvoice === 0 || Number(item.receivableAmount) === 0)) {
reject('存在不需要发票的项目!') reject('存在不需要发票的项目!')
} }
if (arr.some(item => item.makeInvoice === 1)) {
reject('存在已完成开票的项目!')
}
} }
// 来款 // 来款
if (operateType === 'incomePayment') { if (operateType === 'incomePayment') {
@@ -534,6 +537,9 @@ export default {
if (arr.some(item => Number(item.receivableAmount) === 0)) { if (arr.some(item => Number(item.receivableAmount) === 0)) {
reject('存在应收金额为0的项目!') reject('存在应收金额为0的项目!')
} }
if (arr.some(item => item.inAccount === 1)) {
reject('不可选择已付全款的项目!')
}
} }
resolve(arr) resolve(arr)
}) })
@@ -258,10 +258,6 @@ export default {
this.addZero(e) this.addZero(e)
e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim()
this.inputIncomingAmount = Number(e.target.value) this.inputIncomingAmount = Number(e.target.value)
if (this.inputIncomingAmount > this.sumAmountOwed) {
this.$message.warn('来款金额大于当前欠款金额,输入有误!')
return
}
this.clearThisTimeAmount() this.clearThisTimeAmount()
this.calculateThisTimeAmount() this.calculateThisTimeAmount()
}, },
@@ -282,6 +278,10 @@ export default {
this.$message.warn('请输入大于0的来款金额') this.$message.warn('请输入大于0的来款金额')
return return
} }
if (this.inputIncomingAmount > this.sumAmountOwed) {
this.$message.warn('来款金额大于当前欠款金额,输入有误!')
return
}
this.dataSource.forEach((item, index) => { this.dataSource.forEach((item, index) => {
// 当前项目欠款是否 >0 // 当前项目欠款是否 >0
if (Number(item.amountOwed) > 0) { if (Number(item.amountOwed) > 0) {
@@ -274,10 +274,6 @@ export default {
this.addZero(e) this.addZero(e)
e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim()
this.inputInvoicingAmount = Number(e.target.value) this.inputInvoicingAmount = Number(e.target.value)
if (this.inputInvoicingAmount > this.sumAmountOwed) {
this.$message.warn('开票金额大于当前未开票金额,输入有误!')
return
}
this.clearThisTimeAmount() this.clearThisTimeAmount()
this.calculateThisTimeAmount() this.calculateThisTimeAmount()
}, },
@@ -317,6 +313,10 @@ export default {
this.$message.warn('请输入大于0的开票金额') this.$message.warn('请输入大于0的开票金额')
return return
} }
if (this.inputInvoicingAmount > this.sumAmountOwed) {
this.$message.warn('开票金额大于当前未开票金额,输入有误!')
return
}
this.dataSource.forEach((item, index) => { this.dataSource.forEach((item, index) => {
// 当前项目欠款是否 >0 // 当前项目欠款是否 >0
if (Number(item.amountOwed) > 0) { if (Number(item.amountOwed) > 0) {
@@ -196,23 +196,29 @@ export default {
return parseInt(index) + 1 return parseInt(index) + 1
} }
}, { }, {
title: '项目名称', title: '来款项目',
align: 'center', align: 'center',
// width: 200, width: 200,
dataIndex: 'projectName', dataIndex: 'projectName',
scopedSlots: { customRender: 'projectName' } scopedSlots: { customRender: 'projectName' }
}, { }, {
title: '负责人', title: '项目负责人',
align: 'center', align: 'center',
width: 140, width: 200,
dataIndex: 'principalName', dataIndex: 'principalName',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, { }, {
title: '所属科室', title: '所属科室',
align: 'center', align: 'center',
width: 140, width: 200,
dataIndex: 'depart', dataIndex: 'depart',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, {
title: '来款单位',
align: 'center',
width: 200,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'text' }
}, { }, {
title: '应收金额', title: '应收金额',
align: 'center', align: 'center',
@@ -236,27 +242,32 @@ export default {
{ {
title: '序号', title: '序号',
dataIndex: 'title', dataIndex: 'title',
key: 'rowIndex',
width: 120,
align: 'center'
}, {
title: '项目名称',
align: 'center', align: 'center',
// width: 200, width: 60,
}, {
title: '来款项目',
align: 'center',
width: 200,
dataIndex: 'projectName', dataIndex: 'projectName',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'projectName' }
}, { }, {
title: '负责人', title: '项目负责人',
align: 'center', align: 'center',
width: 140, width: 200,
dataIndex: 'principalName', dataIndex: 'principalName',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, { }, {
title: '所属科室', title: '所属科室',
align: 'center', align: 'center',
width: 140, width: 200,
dataIndex: 'depart', dataIndex: 'depart',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, {
title: '来款单位',
align: 'center',
width: 200,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'text' }
}, { }, {
title: '应收金额', title: '应收金额',
align: 'center', align: 'center',