diff --git a/src/api/incomePaymentsApi.js b/src/api/incomePaymentsApi.js index 17d86d0..b8dd259 100644 --- a/src/api/incomePaymentsApi.js +++ b/src/api/incomePaymentsApi.js @@ -42,6 +42,14 @@ const addPayBill = (projectId, projectType, param) => postAction(`/paymentRecord const editPayBill = (param) => postAction('/paymentRecord/payPaymentRecord/editPayBill', param) // 普通项目管理-通过项目id查询其他的信息 const queryCommonProjectById = (param) => getAction('/project/payCommonProject/queryById', param) +// 通过id查询打包企业信息 +const getPackCompanyById = (param) => getAction('/pack/payPackCompany/queryById', param) +// 添加打包项目 +const addPackProject = (param) => postAction('/pack/payPackCompanyProject/add', param) +// 取消打包 +const removePackProject = (param) => postAction('/pack/payPackCompanyProject/remove', param) +// 批量取消打包 +const batchRemovePackProject = (param) => postAction('/pack/payPackCompanyProject/removeBatch', param) export { getWorkingGroupById, @@ -64,5 +72,9 @@ export { payBillList, addPayBill, editPayBill, - queryCommonProjectById + queryCommonProjectById, + getPackCompanyById, + addPackProject, + removePackProject, + batchRemovePackProject } diff --git a/src/views/packManagement/PackProjectMaintenance.vue b/src/views/packManagement/PackProjectMaintenance.vue index d27b0c1..561e9db 100644 --- a/src/views/packManagement/PackProjectMaintenance.vue +++ b/src/views/packManagement/PackProjectMaintenance.vue @@ -118,7 +118,8 @@ - @@ -142,6 +143,7 @@ import BatchIncomePaymentModule from './modules/BatchIncomePaymentModule' import BatchInvoicingModule from './modules/BatchInvoicingModule' import ArriveStageModule from '../financialManagement/arriveAndInvoicing/modules/ArriveStageModule' import InvoicingStageModule from '../financialManagement/arriveAndInvoicing/modules/InvoicingStageModule' +import { getPackCompanyById, batchRemovePackProject, removePackProject } from '../../api/incomePaymentsApi' export default { name: 'PackProjectMaintenance', @@ -159,6 +161,7 @@ export default { data() { return { IconImg, + // 企业信息名称字段对应 companyDataField: [ { title: '企业名称', @@ -171,7 +174,7 @@ export default { dataIndex: 'phone' }, { title: '邮箱', - dataIndex: 'mail' + dataIndex: 'email' }, { title: '打包费用总计', dataIndex: 'packChargeTotal' @@ -183,13 +186,14 @@ export default { dataIndex: '' }, { title: '已来款未开票金额', - dataIndex: '' + dataIndex: 'uninvoicedAmount' }, { title: '打包年份', dataIndex: 'packYear' } - ], // 企业信息名称字段对应 - companyDataById: {}, // 通过id获取的企业信息 + ], + // 通过id获取的企业信息 + companyDataById: {}, labelCol: { xs: { span: 24 }, sm: { span: 5 } @@ -287,24 +291,44 @@ export default { scopedSlots: { customRender: 'action' } } ], - dataSource: [ - { - id: 1, - chargeProject: 'asd' - } - ], + disableMixinCreated: true, + selectPackProjectVisible: false, url: { - list: '', - exportXlsUrl: '' + list: '/pack/payPackCompanyProject/listAll', + exportXlsUrl: '/pack/payPackCompanyProject/exportXls' } } }, + created() { + this.loadCompanyDetail().then(() => { + this.filters.packId = this.companyDataById.id + this.loadData() + }) + }, methods: { + /** + * 获取企业信息 + */ + loadCompanyDetail() { + let param = { + id: this.$route.query.packCompanyId + } + return new Promise(resolve => { + getPackCompanyById(param).then(res => { + if (res.success) { + this.companyDataById = res.result + resolve() + } else { + console.log(res.message) + } + }) + }) + }, /** * 添加打包项目 */ handlePack() { - this.$refs.selectPackProjectModal.open() + this.selectPackProjectVisible = true }, /** * 批量取消打包 @@ -314,11 +338,23 @@ export default { this.$message.warn('请至少选中一个项目') return } + let that = this this.$confirm({ title: '确认取消打包', content: '确定要取消选中项目的打包状态吗?', onOk: function () { - console.log('批量取消打包') + let param = { + packId: that.companyDataById.id, + packProjectIds: that.selectedRowKeys.join(',') + } + batchRemovePackProject(param).then(res => { + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warn(res.message) + } + }) } }) }, @@ -342,8 +378,30 @@ export default { console.log(id) this.$refs.arriveStage.open() }, - cancelPack() { - + /** + * 取消打包 + * @param id + */ + cancelPack(id) { + let that = this + this.$confirm({ + title: '确认取消打包', + content: '确定要取消该项目的打包状态吗?', + onOk: function () { + let param = { + id: id, + packId: that.companyDataById.id + } + removePackProject(param).then(res => { + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warn(res.message) + } + }) + } + }) }, /** * 开票 diff --git a/src/views/packManagement/modules/BatchIncomePaymentModule.vue b/src/views/packManagement/modules/BatchIncomePaymentModule.vue index 2d512b9..dfbae9b 100644 --- a/src/views/packManagement/modules/BatchIncomePaymentModule.vue +++ b/src/views/packManagement/modules/BatchIncomePaymentModule.vue @@ -154,7 +154,7 @@ export default { id: 1, chargeProject: '项目名称', receivableAmount: 100, - paidAmount: 0, + paidAmount: 50, thisIncomingAmount: null, remark: '' }, { @@ -197,6 +197,10 @@ export default { close() { this.visible = false }, + /** + * 来款金额输入失去焦点,进行金额分配 + * @param e + */ incomingAmountBlur(e) { e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() this.inputIncomingAmount = Number(e.target.value) @@ -204,6 +208,10 @@ export default { this.calculateThisTimeAmount() }) }, + /** + * 清空本次来款金额 + * @returns {Promise} + */ clearThisTimeAmount() { return new Promise(resolve => { this.dataSource.forEach(item => { diff --git a/src/views/packManagement/modules/PackCompanyModule.vue b/src/views/packManagement/modules/PackCompanyModule.vue index aca625b..f12f9d2 100644 --- a/src/views/packManagement/modules/PackCompanyModule.vue +++ b/src/views/packManagement/modules/PackCompanyModule.vue @@ -24,9 +24,11 @@ + ref="companyContact" + @ok="companyContactOk"> @@ -55,8 +57,11 @@ + ref="packContact" + v-decorator="['packContactId', validatorRules.packContactId]" + @ok="packContactOk"> @@ -151,7 +156,9 @@ export default { rules: [{ required: true, message: '请选择打包联系人' }], validateTrigger: 'change' } - } + }, + initContact: null, // 编辑回显的企业联系人信息 + initPackContact: null // 编辑回显的打包联系人信息 } }, methods: { @@ -161,11 +168,24 @@ export default { edit(record) { this.form.resetFields() record.company = { - id: record.companyTemporaryId, + id: record.companyId, companyName: record.companyTemporaryName } + // 回显企业信息 + this.selectedCompany = record.company record.companyContactId = record.companyContactTemporaryId record.packContactId = record.packContactTemporaryId + // 编辑时,将企业联系人、打包联系人添加至候选项中 + if (record.id) { + this.initContact = { + id: record.companyContactTemporaryId, + name: record.companyContactTemporaryName + } + this.initPackContact = { + id: record.packContactTemporaryId, + name: record.packContactTemporaryName + } + } this.model = Object.assign({}, record) this.visible = true this.$nextTick(() => { @@ -215,18 +235,13 @@ export default { handleCompanyChange(value) { this.selectedCompany = value }, - /** - * 企业联系人变化,打包联系人默认为企业联系人,打包联系人未选择时进行回显 - * @param value - */ - handleContactChange(value) { - console.log(Object.values(this.form.getFieldValue(['packContactId'])).indexOf(undefined) !== -1) - if (Object.values(this.form.getFieldValue(['packContactId'])).indexOf(undefined) !== -1) { - this.model.packContactId = value - this.$nextTick(() => { - this.form.setFieldsValue(pick(this.model, 'packContactId')) - }) - } + // 企业联系人新增回调 + companyContactOk() { + this.$refs.packContact.getContactsList() + }, + // 打包联系人新增回调 + packContactOk() { + this.$refs.companyContact.getContactsList() }, /** * 校验金额格式 diff --git a/src/views/packManagement/modules/PackProjectSelectProjectModule.vue b/src/views/packManagement/modules/PackProjectSelectProjectModule.vue index 891e910..8cf76cc 100644 --- a/src/views/packManagement/modules/PackProjectSelectProjectModule.vue +++ b/src/views/packManagement/modules/PackProjectSelectProjectModule.vue @@ -15,7 +15,7 @@ - + @@ -78,16 +78,36 @@ import { JeroListMixin } from '../../../mixins/JeroListMixin' import JYearDate from '../../../components/jero/JYearDate' import StatusSlot from '../../../components/tools/StatusSlot' +import { addPackProject } from '../../../api/incomePaymentsApi' export default { name: 'PackProjectSelectProjectModule', components: { JYearDate, StatusSlot }, mixins: [JeroListMixin], + props: { + // 打包id + packId: { + type: String, + required: false, + default: null + }, + visible: { + type: Boolean, + required: false, + default: false + } + }, + watch:{ + visible(value) { + if (value) { + this.open() + } + } + }, data() { return { title: '添加打包项目', - width: 1000, - visible: false, + width: 1200, confirmLoading: false, labelCol: { xs: { span: 24 }, @@ -98,7 +118,7 @@ export default { sm: { span: 10 } }, url:{ - list: '' + list: '/pack/payPackCompanyProject/queryNotPackListAll' }, columns: [ { @@ -119,8 +139,8 @@ export default { }, { title: '来款用途', align: 'center', - width: 180, - dataIndex: 'chargeUse', + width: 160, + dataIndex: 'chargeUse_dictText', scopedSlots: { customRender: 'text' } }, { title: '项目负责人', @@ -163,21 +183,45 @@ export default { dataIndex: 'mail', scopedSlots: { customRender: 'status' } } - ] + ], + disableMixinCreated: true, + filters: { + packId: this.packId + } } }, methods: { handleOk() { - + if (this.selectedRowKeys.length === 0) { + this.$message.warn('请至少选择一个项目') + return + } + let projectIds = this.selectedRowKeys.join(',') + let params = { + projectIds: projectIds, + packId: this.packId + } + addPackProject(params).then(res => { + if (res.success) { + this.$message.success(res.message) + this.close() + this.$emit('ok') + } else { + this.$message.warn(res.message) + } + }) }, handleCancel() { this.close() }, open() { - this.visible = true + this.filters.packId = this.packId + console.log(this.filters) + this.loadData() }, close() { - this.visible = false + this.selectedRowKeys = [] + this.$emit('update:visible', false) } } } diff --git a/src/views/projectManagement/WorkingGroupMemberUnitMaintenance.vue b/src/views/projectManagement/WorkingGroupMemberUnitMaintenance.vue index b38bdb8..4984f32 100644 --- a/src/views/projectManagement/WorkingGroupMemberUnitMaintenance.vue +++ b/src/views/projectManagement/WorkingGroupMemberUnitMaintenance.vue @@ -13,9 +13,8 @@ :key="index">
{{ item.title }}:
- {{ workingGroupDetail[item.fieldName].fileName }} + v-if="(item.fieldName === 'chargeNoticeAId' || item.fieldName === 'chargeNoticeBId') && workingGroupDetail[item.fieldName]"> +
{{ workingGroupDetail[item.fieldName] }}
@@ -139,6 +138,7 @@ import WorkingGroupMemberSetChargeNotice from './modules/WorkingGroupMemberSetCh import { getFileInfo } from '../../api/api' import Vue from 'vue' import { ACCESS_TOKEN } from '../../store/mutation-types' +import PreviewFile from '../../components/jero/PreviewFile' const Base64 = require('js-base64').Base64 export default { @@ -149,7 +149,8 @@ export default { StatusSlot, ProjectDetailModal, WorkingGroupMemberUnitModule, - WorkingGroupMemberSetChargeNotice + WorkingGroupMemberSetChargeNotice, + PreviewFile }, mixins: [JeroListMixin], computed: { @@ -187,7 +188,7 @@ export default { fieldName: 'chargeNoticeNoA' }, { title: '收费通知A', - fieldName: 'chargeNoticeA' + fieldName: 'chargeNoticeAId' }, { title: '本年应收款B', fieldName: 'yearChargeB' @@ -196,7 +197,7 @@ export default { fieldName: 'chargeNoticeNoB' }, { title: '收费通知B', - fieldName: 'chargeNoticeB' + fieldName: 'chargeNoticeBId' } ], labelCol: { @@ -309,23 +310,11 @@ export default { } getWorkingGroupById(param).then(res => { this.workingGroupDetail = res.result - // this.workingGroupDetail.chargeNoticeA = {} - // this.workingGroupDetail.chargeNoticeB = {} - this.getFile() }).finally(() => { this.spinning = false }) }, - async getFile() { - await getFileInfo({ id: this.workingGroupDetail.chargeNoticeAId }).then(res => { - this.workingGroupDetail.chargeNoticeA = res.result - this.$forceUpdate() - }) - await getFileInfo({ id: this.workingGroupDetail.chargeNoticeBId }).then(res => { - this.workingGroupDetail.chargeNoticeB = res.result - this.$forceUpdate() - }) - }, + handleAdd: function () { this.getChargeNoticeList() this.$refs.modalForm.workingGroupId = this.workingGroupProjectId @@ -342,9 +331,13 @@ export default { this.$refs.modalForm.title = '编辑' this.$refs.modalForm.disableSubmit = false }, + /** + * 获取收费通知列表 + */ getChargeNoticeList() { this.chargeNoticeList = [] let chargeNoticeA, chargeNoticeB + // 是否存在收费通知A if (this.workingGroupDetail.chargeNoticeNoA && this.workingGroupDetail.chargeNoticeNoA !== '') { chargeNoticeA = { type: 'chargeNoticeA', @@ -353,7 +346,9 @@ export default { yearCharge: this.workingGroupDetail.yearChargeA, chargeNoticeId: this.workingGroupDetail.chargeNoticeAId } + this.chargeNoticeList.push(chargeNoticeA) } + // 是否存在收费通知B if (this.workingGroupDetail.chargeNoticeNoB && this.workingGroupDetail.chargeNoticeNoB !== '') { chargeNoticeB = { type: 'chargeNoticeB', @@ -362,11 +357,6 @@ export default { yearCharge: this.workingGroupDetail.yearChargeB, chargeNoticeId: this.workingGroupDetail.chargeNoticeBId } - } - if (chargeNoticeA && chargeNoticeA.hasOwnProperty.call(chargeNoticeA, 'value')) { - this.chargeNoticeList.push(chargeNoticeA) - } - if (chargeNoticeB && chargeNoticeB.hasOwnProperty.call(chargeNoticeA, 'value')) { this.chargeNoticeList.push(chargeNoticeB) } },