diff --git a/src/enums/commonEnums.js b/src/enums/commonEnums.js
index 6093942..234dd98 100644
--- a/src/enums/commonEnums.js
+++ b/src/enums/commonEnums.js
@@ -8,6 +8,7 @@ export const ProjectTypeEnums = {
STANDARD_MEMBER_PRO: {name: '标协会员项目', value: 5},
STANDARD_CERTIFICATE_PRO: {name: '标协证书项目', value: 6},
DRAFT_PRO: {name: '起草组项目', value: 7},
+ PACK_PRO: { name: '打包项目', value: 8 }
}
// 参会人员身份类型
diff --git a/src/views/packManagement/PackCompanyList.vue b/src/views/packManagement/PackCompanyList.vue
index 00ec08e..5a5dfdd 100644
--- a/src/views/packManagement/PackCompanyList.vue
+++ b/src/views/packManagement/PackCompanyList.vue
@@ -45,7 +45,7 @@
bordered
rowKey="id"
:columns="columns"
- :scroll="{x: 1600}"
+ :scroll="{x: 2100}"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
@@ -54,6 +54,19 @@
:class="dataSource.length === 0 ? 'show-scroll' : ''"
class="j-table-force-nowrap main-table">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 来款
+ 开票
+ 确认收入
编辑
删除
@@ -86,7 +104,7 @@
ref="footTable"
:rowKey="record=>record.id"
:columns="columnsFooter"
- :scroll="{x: 1600}"
+ :scroll="{x: 2100}"
:dataSource="footerDataSource"
:showHeader="false"
:pagination="false"
@@ -105,6 +123,32 @@
+
+
+
+
+
+
+
@@ -116,6 +160,12 @@ import { JeroListMixin } from '../../mixins/JeroListMixin'
import PackCompanyModule from './modules/PackCompanyModule'
import {formatMoney} from '@/utils/formatMoney'
import {getAction} from '../../api/manage'
+import StatusSlot from '@comp/tools/StatusSlot'
+import {getPayConfirmList} from '@api/incomePaymentsApi'
+import ArriveStageModule from '@views/financialManagement/arriveAndInvoicing/modules/ArriveStageModule'
+import ConfirmStageModule from '@views/financialManagement/arriveAndInvoicing/modules/ConfirmStageModule'
+import InvoicingStageModule from '@views/financialManagement/arriveAndInvoicing/modules/InvoicingStageModule'
+import {ProjectTypeEnums} from '@/enums/commonEnums'
const defaultTableColumns = [
{
@@ -173,13 +223,40 @@ const defaultTableColumns = [
dataIndex: 'packYear',
scopedSlots: { customRender: 'text' }
},
-
+ {
+ title: '需要发票',
+ align: 'center',
+ width: 80,
+ dataIndex: 'needInvoice',
+ scopedSlots: { customRender: 'status-pack' }
+ },
+ {
+ title: '到账',
+ align: 'center',
+ width: 80,
+ dataIndex: 'inAccount',
+ scopedSlots: { customRender: 'status' }
+ },
+ {
+ title: '开票',
+ align: 'center',
+ width: 80,
+ dataIndex: 'makeInvoice',
+ scopedSlots: { customRender: 'status-bill' }
+ },
+ {
+ title: '确收',
+ align: 'center',
+ width: 80,
+ dataIndex: 'affirmIncome',
+ scopedSlots: {customRender: 'status-confirm'}
+ },
{
title: '操作',
dataIndex: 'action',
align: 'center',
fixed: 'right',
- width: 160,
+ width: 330,
scopedSlots: { customRender: 'action' }
}
]
@@ -211,11 +288,20 @@ const firstColumnFooter = [
export default {
name: 'PackCompanyList',
- components: { PageHeaderTitle, JYearDate, PackCompanyModule },
+ components: {
+ InvoicingStageModule,
+ ConfirmStageModule,
+ ArriveStageModule,
+ StatusSlot,
+ PageHeaderTitle,
+ JYearDate,
+ PackCompanyModule
+ },
mixins: [JeroListMixin],
data() {
return {
IconImg,
+ footerDataSource: [],
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
@@ -231,11 +317,21 @@ export default {
delete: '/pack/payPackCompany/delete',
deleteBatch: '/pack/payPackCompany/deleteBatch',
exportXlsUrl: '/pack/payPackCompany/exportXls'
- }
+ },
+ arriveStageVisible: false, // 来款阶段对话框开启状态
+ invoicingStageVisible: false, // 开票阶段对话框开启状态
+ confirmStageVisible: false, // 确认收入阶段对话框开启状态
+ selectProjectId: null, // 选中项目id
+ projectType: ProjectTypeEnums.PACK_PRO.value, // 打包管理项目类型
+ selectProjectName: null, // 选中项目名称
+ selectNeedInvoice: null, // 选中项目是否需要发票
+ // 通过id获取的企业信息
+ companyDataById: {},
}
},
methods: {
formatMoney,
+ getPayConfirmList,
/**
* 跳转至打包企业维护页面
* 路由参数---打包企业的id
@@ -317,6 +413,41 @@ export default {
this.loading = false
})
},
+ /**
+ * 来款
+ * @param record
+ */
+ incomePayment(record) {
+ this.selectProjectId = record.id
+ this.arriveStageVisible = true
+ this.selectNeedInvoice = record.needInvoice
+ },
+ /**
+ * 开票
+ * @param record
+ */
+ invoicing(record) {
+ // if (record.projectType === 5 && record.inAccount !== 1) {
+ // this.$message.warn('标协会员项目必须先到账才可开票。')
+ // return
+ // }
+ this.companyDataById = record
+ this.selectProjectName = record.companyTemporaryName
+ this.selectProjectId = record.id
+ this.invoicingStageVisible = true
+ },
+ /**
+ * 确认收入 -(记录跨年度提前来款)
+ * @param record
+ */
+ confirmPayment(record) {
+ this.selectProjectId = record.id
+ this.confirmStageVisible = true
+ // 打包项目类型
+ record.projectType = this.projectType
+ this.$refs.confirmStageModule.show(record)
+
+ },
},
mounted() {
this.setScroll()
diff --git a/src/views/packManagement/PackProjectMaintenance.vue b/src/views/packManagement/PackProjectMaintenance.vue
index ceb92ae..6133c1e 100644
--- a/src/views/packManagement/PackProjectMaintenance.vue
+++ b/src/views/packManagement/PackProjectMaintenance.vue
@@ -68,11 +68,11 @@
批量取消打包
-
- 批量来款
-
- 批量开票
-
+
+
+
+
+
导出
@@ -138,14 +138,14 @@
- 来款
+
+
取消打包
- 开票
- 确认收入
+
+
+
- 开票类型
+
@@ -155,7 +155,7 @@
ref="footTable"
:rowKey="record=>record.id"
:columns="columnsFooter"
- :scroll="{x: 1600}"
+ :scroll="{x: 1000}"
:dataSource="footerDataSource"
:showHeader="false"
:pagination="false"
@@ -285,48 +285,6 @@ const defaultTableColumns = [
width: 120,
dataIndex: 'receivableAmount',
scopedSlots: { customRender: 'allMoney' }
- }, {
- title: '实收金额',
- align: 'center',
- width: 120,
- dataIndex: 'paidAmount',
- scopedSlots: { customRender: 'allMoney' }
- }, {
- title: '打包',
- align: 'center',
- width: 80,
- dataIndex: 'pack',
- scopedSlots: { customRender: 'status-pack' }
- }, {
- title: '需要发票',
- align: 'center',
- width: 80,
- dataIndex: 'needInvoice',
- scopedSlots: { customRender: 'status-pack' }
- }, {
- title: '到账',
- align: 'center',
- width: 80,
- dataIndex: 'inAccount',
- scopedSlots: { customRender: 'status' }
- }, {
- title: '收入',
- align: 'center',
- width: 80,
- dataIndex: 'affirmIncome',
- scopedSlots: {customRender: 'status-confirm'}
- }, {
- title: '开票',
- align: 'center',
- width: 80,
- dataIndex: 'makeInvoice',
- scopedSlots: { customRender: 'status-bill' }
- }, {
- title: '邮寄',
- align: 'center',
- width: 80,
- dataIndex: 'mail',
- scopedSlots: { customRender: 'status-mail' }
}, {
title: '企业联系人',
align: 'center',
@@ -350,7 +308,7 @@ const defaultTableColumns = [
dataIndex: 'action',
align: 'center',
fixed: 'right',
- width: 330,
+ width: 100,
scopedSlots: { customRender: 'action' }
}
]
diff --git a/src/views/packManagement/modules/PackCompanyModule.vue b/src/views/packManagement/modules/PackCompanyModule.vue
index 0fb41e6..71f58a6 100644
--- a/src/views/packManagement/modules/PackCompanyModule.vue
+++ b/src/views/packManagement/modules/PackCompanyModule.vue
@@ -16,6 +16,7 @@
@@ -75,6 +76,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 元
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {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 + '').trim()}">
+
+
+
+
+
+
+
+
@@ -113,10 +246,28 @@ import JYearDate from '../../../components/jero/JYearDate'
import { money } from '../../../utils/validate'
import { addZero } from '../../../utils/util'
import SelectPrincipal from '@comp/company/SelectPrincipal.vue'
+import SelectRevenueContract from '@comp/tools/SelectRevenueContract'
+import JUpload from '@comp/jero/JUpload'
+import JDate from '@comp/tools/JDate'
+import {checkAssociatedProject} from '@/utils/projectCheck'
export default {
name: 'PackCompanyModule',
- components: { CompanySelect, SelectContacts, JYearDate, SelectPrincipal },
+ components: {JDate, JUpload, SelectRevenueContract, CompanySelect, SelectContacts, JYearDate, SelectPrincipal },
+ props: {
+ // 合同号是否可编辑
+ isContractNumDisabled: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ // 是否可以修改来款企业
+ disabledChargeCompany: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ },
data() {
return {
title: '操作',
@@ -145,8 +296,7 @@ export default {
add: '/pack/payPackCompany/add',
edit: '/pack/payPackCompany/edit'
},
- selectedCompany: null,
- validatorRules: {
+ validatorRules: {
packChargeTotal: {
rules: [{ required: true, validator: this.checkMoney }],
validateTrigger: 'blur'
@@ -170,10 +320,56 @@ export default {
packPrincipalId: {
rules: [{ required: true, message: '请选择打包负责人' }],
validateTrigger: 'change'
+ },
+ mailContactsId: {
+ rules: [{ required: true, message: '请选择邮寄联系人' }],
+ validateTrigger: 'change'
+ },
+ taxRate: {
+ rules: [{ required: true,message: '请选择税率' }],
+ validateTrigger: 'change',initialValue:'0.06'
+ },
+ receivableAmount: {
+ rules: [{ required: true, validator: this.checkMoney }],
+ validateTrigger: 'blur'
+ },
+ tax: {
+ rules: [{ required: false, validator: this.checkTaxMoney }],
+ validateTrigger: 'blur'
+ },
+ noTaxAmount: {
+ rules: [{ required: false, validator: this.checkNoTaxMoney}],
+ validateTrigger: 'blur'
+ },
+ estimatedArrivalDate: {
+ rules: [{ required: true, message: '请选择预估到账日期' }],
+ validateTrigger: 'change'
+ },
+ needInvoice: {
+ rules: [{ required: true, message: '请选择发票类型' }],
+ validateTrigger: 'change'
+ },
+ chargeWay: {
+ rules: [{ required: true, message: '请选择来款方式' }],
+ validateTrigger: 'change'
+ },
+ contractNum: {
+ rules: [{ required: true, message: '请选择合同号' }],
+ validateTrigger: 'change'
+ },
+ chargeNoticeNo: {
+ rules: [{ required: true, message: '请输入收费通知号' }],
+ validateTrigger: 'blur'
}
},
initContact: null, // 编辑回显的企业联系人信息
- initPackContact: null // 编辑回显的打包联系人信息
+ initPackContact: null, // 编辑回显的打包联系人信息
+ /* 2024年2月变更 */
+ chargeWayType: null, // 来款方式
+ selectedCompany: null, // 当前选中的企业
+ initMailContact: null, // 编辑时的邮寄联系人
+ disabledCompany: false, // 企业是否可以编辑
+ isAssociatedContract: false, // 是否已关联合同
}
},
methods: {
@@ -189,9 +385,20 @@ export default {
}
// 回显企业信息
this.selectedCompany = record.company
+ this.chargeWayType = record.chargeWay
record.companyContactId = record.companyContactTemporaryId
record.packContactId = record.packContactTemporaryId
- // 编辑时,将企业联系人、打包联系人添加至候选项中
+ // 判断企业是否可以编辑,项目来款、开票、邮寄、打包、关联合同后,企业不可更改
+ if (record.id) {
+ // 验证项目是否关联收入合同
+ checkAssociatedProject(record.id).then(res => {
+ this.disabledCompany = this.disabledChargeCompany || res || (!!record.inAccount && record.inAccount !== 0) || (!!record.makeInvoice && record.makeInvoice !== 0) || (!!record.mail && record.mail !== 0)
+ this.isAssociatedContract = res
+ })
+ } else {
+ this.disabledCompany = this.disabledChargeCompany
+ }
+ // 编辑时,将企业联系人、打包联系人、邮寄联系人添加至候选项中
if (record.id) {
this.initContact = {
id: record.companyContactTemporaryId,
@@ -201,11 +408,35 @@ export default {
id: record.packContactTemporaryId,
name: record.packContactTemporaryName
}
+ this.initMailContact = {
+ id: record.mailContactsTemporaryId,
+ name: record.mailContactsTemporaryName
+ }
}
this.model = Object.assign({}, record)
this.visible = true
this.$nextTick(() => {
- this.form.setFieldsValue(pick(this.model, 'company', 'companyContactId', 'packYear', 'packChargeTotal', 'packContactId', 'packChargeRemark', 'remark', 'packPrincipalId'))
+ this.form.setFieldsValue(pick(this.model,
+ 'company',
+ 'companyContactId',
+ 'packYear',
+ 'packChargeTotal',
+ 'packContactId',
+ 'packChargeRemark',
+ 'remark',
+ 'packPrincipalId',
+ 'mailContactsId',
+ 'receivableAmount',
+ 'taxRate',
+ 'tax',
+ 'noTaxAmount',
+ 'estimatedArrivalDate',
+ 'needInvoice',
+ 'chargeWay',
+ 'contractNum',
+ 'chargeNoticeNo',
+ 'chargeNoticeId'
+ ))
})
},
close() {
@@ -214,6 +445,9 @@ export default {
// 清空选中联系人相关信息
this.initContact = null
this.initPackContact = null
+ this.initMailContact = null
+ // 清空来款方式
+ this.chargeWayType = null
},
handleOk() {
if (this.confirmLoading) {
@@ -303,7 +537,89 @@ export default {
return
}
callback('请选择企业')
- }
+ },
+ /* 2024年2月变更 */
+ /**
+ * 在新增成功后重新获取联系人列表
+ */
+ addMailContactsOk() {
+ this.$refs.selectContacts.getContactsList()
+ },
+ /**
+ * 改变待确收金额 计算税额 未税金额
+ * */
+ changeReceivableAmount(e){
+ e.target.value = (e.target.value.replace(/[^0-9.]/g,'')).trim()
+ this.$nextTick(() => {
+ this.calcAmount()
+ })
+ },
+ /**
+ * 改变税率计算税额 待确收金额
+ * */
+ changeRate(){
+ this.$nextTick(() => {
+ this.calcAmount()
+ })
+ },
+ /**
+ * 来款方式变化
+ * @param e
+ */
+ handlechargeWayChange(e) {
+ this.chargeWayType = e.target.value
+ },
+ /**
+ * 校验税额金额格式
+ * @param rules
+ * @param value
+ * @param callback
+ */
+ checkTaxMoney(rules, value, callback) {
+ console.log(value, rules.field)
+ if (value) {
+ if (money(value)) {
+ callback()
+ }
+ callback('请输入合法的金额数字,最多2位小数,10位整数')
+ }else{
+ callback()
+ }
+ },
+ /**
+ * 校验未税金额金额格式
+ * @param rules
+ * @param value
+ * @param callback
+ */
+ checkNoTaxMoney(rules, value, callback) {
+ if (value) {
+ if (money(value)) {
+ callback()
+ }
+ callback('请输入合法的金额数字,最多2位小数,10位整数')
+ }else {
+ callback()
+ }
+ },
+ /**
+ * 根据待确收金额、税率计算税额 、未税金额
+ * */
+ calcAmount(){
+ // 获取待确收金额
+ let ysje = Number(this.form.getFieldValue('receivableAmount'))
+ // 获取税率
+ let rate = this.form.getFieldValue('taxRate') * 1
+ // 计算未税金额 未税金额 = 待确收金额 * (税率 + 1)
+ let wsje = (ysje / (rate + 1)).toFixed(2)
+ // 计算税额 税额 = 待确收金额 - 未税金额 保留两位小数
+ let se = (ysje - Number(wsje)).toFixed(2)
+ // 表单赋值
+ this.form.setFieldsValue({
+ 'tax':se,
+ 'noTaxAmount':wsje
+ })
+ },
}
}