diff --git a/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue b/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue index e3f07eb..715ad52 100644 --- a/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue +++ b/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue @@ -147,10 +147,7 @@ 开票 - 确认收入 + 确认收入 @@ -191,7 +188,13 @@ - + @@ -210,7 +213,7 @@ import {isAllEqual} from '../../../utils/util' import AuditProofModule from './modules/AuditProofModule' // import AuditProofModule from "@views/financialManagement/arriveAndInvoicing/modules/AuditProofModule"; import AuditModal from '@views/incomePayments/meetManage/modules/AuditModal' -import PreComeModule from './modules/PreComeModule' +import ConfirmStageModule from './modules/ConfirmStageModule' // 项目类型 数据字典 的定义 和数据库的保持一致 const ProjectTypeEnums = { @@ -236,7 +239,7 @@ export default { BatchInvoicingModule, AuditProofModule, AuditModal, - PreComeModule + ConfirmStageModule }, mixins: [JeroListMixin], data() { @@ -360,6 +363,7 @@ export default { arriveVisible: false, selectedProject: [], batchInvoicingVisible: false, + confirmStageVisible: false, // 确认收入弹框是否隐藏 selectedCompany: {}, // 选中项目的企业信息 mailContactsId: null,// 项目邮寄联系人id meetingType: undefined, // 会议项目的会议类型 @@ -498,11 +502,14 @@ export default { * 确认收入 - 普通项目、工作组项目、资料网员 项目 可以确认收入(即记录跨年度提前来款) * @param record */ - preComeMoney(record) { + confirmPayment(record) { // 判断是否是 普通项目、工作组项目、资料网员 项目 不是 直接返回 // let canOpe = record.projectType === ProjectTypeEnums.GENERAL_PRO.value || record.projectType === ProjectTypeEnums.GROUP_PRO.value || record.projectType === ProjectTypeEnums.MEMBER_PRO.value // if(!canOpe) return - this.$refs.preComeModule.show(record) + this.selectProjectType = record.projectType + this.selectProjectId = record.id + this.confirmStageVisible = true + this.$refs.confirmStageModule.show(record) }, /** diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue index 0d130ef..39bef6d 100644 --- a/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue +++ b/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue @@ -15,6 +15,20 @@ e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"> + + + e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"> + + + e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"> @@ -83,6 +97,14 @@ export default { rules: [{ required: true, validator: this.checkMoney }], validateTrigger: 'blur' }, + noTaxAmount: { + rules: [{required: true, validator: this.checkNoTaxMoney}], + validateTrigger: 'blur' + }, + tax: { + rules: [{required: true, validator: this.checkTaxMoney}], + validateTrigger: 'blur' + }, paymentDate: { rules: [{ required: true, message: '请选择来款日期' }], validateTrigger: 'change' @@ -100,7 +122,7 @@ export default { this.model = Object.assign({}, record) this.visible = true this.$nextTick(() => { - this.form.setFieldsValue(pick(this.model, 'amountReceived', 'paymentDate', 'remark')) + this.form.setFieldsValue(pick(this.model, 'amountReceived', 'tax', 'noTaxAmount', 'paymentDate', 'remark')) }) }, handleOk() { @@ -150,16 +172,44 @@ export default { * @param rules * @param value * @param callback + * @param name --校验字段的名字 + * */ - checkMoney(rules, value, callback) { + checkMoneyTemplate(rules, value, callback, name) { if (value) { if (money(value)) { callback() } callback('请输入合法的金额数字,最多2位小数,10位整数') } - callback('请输入到账金额') - } + callback(`请输入${name}`) + }, + // 校验金额格式 + checkMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '到账金额') + }, + checkNoTaxMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '未税金额') + }, + checkTaxMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '税额') + }, + // 总金额做相关的处理 + addZeroAmount(event) { + this.addZero(event) + let finalValue = event.target.value + // 计算未税金额和税额的值 + let obj = this.calcOtherNumber(finalValue) + // console.log(event.target.value ) + this.$nextTick(() => { + this.form.setFieldsValue(obj) + }) + }, + calcOtherNumber(amount) { + let noTaxAmount = (amount / 1.06).toFixed(2) // 未税金额 + let tax = (amount - noTaxAmount).toFixed(2) // 税额 + return {noTaxAmount, tax} + }, } } diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/PreComeModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/ConfirmModule.vue similarity index 58% rename from src/views/financialManagement/arriveAndInvoicing/modules/PreComeModule.vue rename to src/views/financialManagement/arriveAndInvoicing/modules/ConfirmModule.vue index 711863a..51816c9 100644 --- a/src/views/financialManagement/arriveAndInvoicing/modules/PreComeModule.vue +++ b/src/views/financialManagement/arriveAndInvoicing/modules/ConfirmModule.vue @@ -16,6 +16,20 @@ e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"> + + + e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"> + + + e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"> @@ -48,8 +62,22 @@ import {addZero} from '../../../../utils/util' import { getPayConfirmList, addPayConfirm, editPayConfirm } from '../../../../api/incomePaymentsApi' export default { - name: 'PreComeModule', + name: 'ConfirmModule', components: {JDate}, + props:{ + // 项目id + projectId: { + type: String, + required: false, + default: null + }, + // 项目类型 + projectType: { + type: [Number, String], + required: false, + default: null + }, + }, data() { return { title: '确认信息', @@ -72,6 +100,14 @@ export default { rules: [{required: true, validator: this.checkMoney}], validateTrigger: 'blur' }, + noTaxAmount: { + rules: [{required: true, validator: this.checkNoTaxMoney}], + validateTrigger: 'blur' + }, + tax: { + rules: [{required: true, validator: this.checkTaxMoney}], + validateTrigger: 'blur' + }, paymentDate: { rules: [{required: true, message: '请选择确认日期'}], validateTrigger: 'change' @@ -81,6 +117,29 @@ export default { }, methods: { addZero, + add(projectInfo, isFirst) { + + let currentDate = new Date() + let paymentDate = currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate() + let record = { paymentDate } + //判断当前新增的是第一个阶段,并且有已开票金额则,默认回显已开票金额为确认金额 + if(isFirst && projectInfo.invoiceAmount) { + // 已确认金额 默认回显为 开票金额 + record.amountReceived = projectInfo.invoiceAmount + let obj = this.calcOtherNumber(record.amountReceived) + record = {...record, ...obj} + } + this.edit(record, projectInfo) + }, + // edit(record) { + // this.form.resetFields() + // this.model = Object.assign({}, record) + // this.getMailContactPostalCode() + // this.visible = true + // this.$nextTick(() => { + // this.form.setFieldsValue(pick(this.model, 'invoiceAmount', 'billNo', 'billDate', 'remark')) + // }) + // }, show(record) { this.form.resetFields() this.projectInfo = Object.assign({}, record) @@ -88,10 +147,13 @@ export default { this.getInfoById(record.id) this.visible = true }, - edit(record) { + edit(record, projectInfo) { + this.form.resetFields() this.model = Object.assign({}, record) + this.projectInfo = Object.assign({}, projectInfo) + this.visible = true this.$nextTick(() => { - this.form.setFieldsValue(pick(this.model, 'amountReceived', 'paymentDate', 'remark')) + this.form.setFieldsValue(pick(this.model, 'amountReceived', 'tax', 'noTaxAmount','paymentDate', 'remark')) }) }, getInfoById(id) { @@ -123,7 +185,7 @@ export default { values.projectType = this.projectInfo.projectType const obj = Object.assign(this.model, values) let okHttpMethod - if (this.isEdit) { + if (this.model.id) { okHttpMethod = editPayConfirm(obj) } else { okHttpMethod = addPayConfirm(obj) @@ -157,16 +219,46 @@ export default { * @param rules * @param value * @param callback + * @param name --校验字段的名字 + * */ - checkMoney(rules, value, callback) { + checkMoneyTemplate(rules, value, callback, name) { if (value) { if (money(value)) { callback() } callback('请输入合法的金额数字,最多2位小数,10位整数') } - callback('请输入确认金额') - } + callback(`请输入${name}`) + }, + /** + * 校验金额格式 + */ + checkMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '确认金额') + }, + checkNoTaxMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '未税金额') + }, + checkTaxMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '税额') + }, + // 总金额做相关的处理 + addZeroAmount(event) { + this.addZero(event) + let finalValue = event.target.value + // 计算未税金额和税额的值 + let obj = this.calcOtherNumber(finalValue) + // console.log(event.target.value ) + this.$nextTick(() => { + this.form.setFieldsValue(obj) + }) + }, + calcOtherNumber(amount) { + let noTaxAmount = (amount / 1.06).toFixed(2) // 未税金额 + let tax = (amount - noTaxAmount).toFixed(2) // 税额 + return {noTaxAmount, tax} + }, } } diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/ConfirmStageModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/ConfirmStageModule.vue new file mode 100644 index 0000000..843c4a9 --- /dev/null +++ b/src/views/financialManagement/arriveAndInvoicing/modules/ConfirmStageModule.vue @@ -0,0 +1,250 @@ + + + + + + + + 第{{ item.chinaNumIndex }}阶段 + + + + + + 确认金额: + {{ item.amountReceived }} + + + + + 税额: + {{ item.tax }} + + + + + 未税金额: + {{ item.noTaxAmount }} + + + + + 确认日期: + {{ item.paymentDate }} + + + + + + + 备注: + {{ item.remark }} + + + + + + + + + + 添加阶段 + + + + + + + + + \ No newline at end of file diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue index 8fba2ce..b2eaea3 100644 --- a/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue +++ b/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue @@ -15,6 +15,20 @@ e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim()"> + + + e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim()"> + + + e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim()"> @@ -108,6 +122,14 @@ export default { rules: [{ required: true, validator: this.checkMoney }], validateTrigger: 'blur' }, + noTaxAmount: { + rules: [{required: true, validator: this.checkNoTaxMoney}], + validateTrigger: 'blur' + }, + tax: { + rules: [{required: true, validator: this.checkTaxMoney}], + validateTrigger: 'blur' + }, billNo: { rules: [{ required: true, message: '请输入开票号' }], validateTrigger: 'blur' @@ -132,7 +154,7 @@ export default { this.getMailContactPostalCode() this.visible = true this.$nextTick(() => { - this.form.setFieldsValue(pick(this.model, 'invoiceAmount', 'billNo', 'billDate', 'remark')) + this.form.setFieldsValue(pick(this.model, 'invoiceAmount', 'tax', 'noTaxAmount', 'billNo', 'billDate', 'remark')) }) }, getMailContactPostalCode() { @@ -203,16 +225,45 @@ export default { * @param rules * @param value * @param callback + * @param name --校验字段的名字 + * */ - checkMoney(rules, value, callback) { + checkMoneyTemplate(rules, value, callback, name) { if (value) { if (money(value)) { callback() } callback('请输入合法的金额数字,最多2位小数,10位整数') } - callback('请输入到账金额') - } + callback(`请输入${name}`) + }, + + // 校验金额格式 + checkMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '开票金额') + }, + checkNoTaxMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '未税金额') + }, + checkTaxMoney(rules, value, callback) { + this.checkMoneyTemplate(rules, value, callback, '税额') + }, + // 总金额做相关的处理 + addZeroAmount(event) { + this.addZero(event) + let finalValue = event.target.value + // 计算未税金额和税额的值 + let obj = this.calcOtherNumber(finalValue) + // console.log(event.target.value ) + this.$nextTick(() => { + this.form.setFieldsValue(obj) + }) + }, + calcOtherNumber(amount) { + let noTaxAmount = (amount / 1.06).toFixed(2) // 未税金额 + let tax = (amount - noTaxAmount).toFixed(2) // 税额 + return {noTaxAmount, tax} + }, } } diff --git a/src/views/packManagement/PackProjectMaintenance.vue b/src/views/packManagement/PackProjectMaintenance.vue index 6253971..fd0abfb 100644 --- a/src/views/packManagement/PackProjectMaintenance.vue +++ b/src/views/packManagement/PackProjectMaintenance.vue @@ -132,6 +132,7 @@ 取消打包 开票 + 确认收入 @@ -176,6 +177,14 @@ :project-type="selectProjectType" :project-name="selectProjectName" @ok="modalFormOk"> + + @@ -195,6 +204,7 @@ import ArriveStageModule from '../financialManagement/arriveAndInvoicing/modules import InvoicingStageModule from '../financialManagement/arriveAndInvoicing/modules/InvoicingStageModule' import { getPackCompanyById, batchRemovePackProject, removePackProject } from '../../api/incomePaymentsApi' import ProjectDetailModal from '../../components/ProjectDetailModal' +import ConfirmStageModule from '../financialManagement/arriveAndInvoicing/modules/ConfirmStageModule' export default { name: 'PackProjectMaintenance', @@ -207,7 +217,8 @@ export default { BatchInvoicingModule, ArriveStageModule, InvoicingStageModule, - ProjectDetailModal + ProjectDetailModal, + ConfirmStageModule }, mixins: [JeroListMixin], data() { @@ -339,7 +350,7 @@ export default { dataIndex: 'action', align: 'center', fixed: 'right', - width: 180, + width: 280, scopedSlots: { customRender: 'action' } } ], @@ -350,6 +361,7 @@ export default { incomeVisible: false, // 批量来款对话框开启状态 arriveStageVisible: false, // 来款阶段对话框开启状态 invoicingStageVisible: false, // 开票阶段对话框开启状态 + confirmStageVisible: false, // 确认收入阶段对话框开启状态 selectProjectId: null, // 选中项目id selectProjectType: null, // 选中项目类型 selectProjectName: null, // 选中项目名称 @@ -559,7 +571,18 @@ export default { } resolve(arr) }) - } + }, + /** + * 确认收入 -(记录跨年度提前来款) + * @param record + */ + confirmPayment(record) { + this.selectProjectType = record.projectType + this.selectProjectId = record.id + this.confirmStageVisible = true + this.$refs.confirmStageModule.show(record) + + }, } }