diff --git a/src/api/incomePaymentsApi.js b/src/api/incomePaymentsApi.js index ef07b2a..15f9aae 100644 --- a/src/api/incomePaymentsApi.js +++ b/src/api/incomePaymentsApi.js @@ -76,6 +76,8 @@ const sysReminders = (param) => postAction('/reminders/edit', param) const checkCompanyAduit = (param) => getAction('/payMailContract/payMailContract/check', param) // 获取全部部门 const getAllDepartTreeList = (param) => getAction('/sys/sysDepart/queryTreeAllList', param) +// 验证项目是否关联合同 +const getIsAssociatedProject = (param) => getAction('/contract/payIncomeContract/getAssociatedProject', param) export { getWorkingGroupById, @@ -115,5 +117,6 @@ export { homePageDataStatistics, sysReminders, checkCompanyAduit, - getAllDepartTreeList + getAllDepartTreeList, + getIsAssociatedProject } diff --git a/src/components/ProjectDetailModal.vue b/src/components/ProjectDetailModal.vue index 78e722e..eef544e 100644 --- a/src/components/ProjectDetailModal.vue +++ b/src/components/ProjectDetailModal.vue @@ -202,7 +202,7 @@ const columns = [ { title: '开票人', align: 'center', - dataIndex: 'createBy' + dataIndex: 'realName' }, { title: '日期', @@ -227,7 +227,7 @@ const columns = [ { title: '邮寄人', align: 'center', - dataIndex: 'contactName' + dataIndex: 'mailName' }, { title: '快递', diff --git a/src/components/company/SelectContacts.vue b/src/components/company/SelectContacts.vue index 400cab6..369f319 100644 --- a/src/components/company/SelectContacts.vue +++ b/src/components/company/SelectContacts.vue @@ -82,6 +82,8 @@ export default { } }, created() { + // this.initContacts = null + this.contactsList = [] // 编辑 第一次不回显的问题 this.getContactsList() }, @@ -117,7 +119,7 @@ export default { * 获取联系人数据 */ getContactsList() { - if (this.selectedCompany && this.selectedCompany.hasOwnProperty.call(this.selectedCompany, 'id')) { + if (this.selectedCompany && this.selectedCompany.id) { const params = { companyId: this.selectedCompany.id } @@ -127,7 +129,7 @@ export default { return new Promise(resolve => { getContactsByCompanyNoLimit(params).then(res => { this.contactsList = res.result - if (this.initContacts && this.initContacts.hasOwnProperty.call(this.initContacts, 'id')) { + if (this.initContacts && this.initContacts.id) { this.contactsList.push(this.initContacts) } resolve() @@ -137,7 +139,8 @@ export default { return new Promise(resolve => { getContactsByCompany(params).then(res => { this.contactsList = res.result - if (this.initContacts && this.initContacts.hasOwnProperty.call(this.initContacts, 'id')) { + console.log(this.initContacts) + if (this.initContacts && this.initContacts.id) { this.contactsList.push(this.initContacts) } resolve() @@ -179,8 +182,11 @@ export default { option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0 ) }, + /** + * 第一次展开下拉,去掉和初始联系人一样的联系人 + */ handleDropdownOpen() { - if (this.isFirstOpen && this.initContacts && this.initContacts.hasOwnProperty.call(this.initContacts, 'id')) { + if (this.isFirstOpen && this.initContacts && this.initContacts.id) { this.contactsList.forEach((item, index) => { if (item.id === this.initContacts.id) { this.$emit('change', undefined) diff --git a/src/components/form/InstallmentForm.vue b/src/components/form/InstallmentForm.vue index deb699b..491bf9f 100644 --- a/src/components/form/InstallmentForm.vue +++ b/src/components/form/InstallmentForm.vue @@ -156,14 +156,14 @@ export default { * @param callback */ checkMoney(rules, value, callback) { + console.log(value, rules.field) if (value) { if (money(value)) { callback() - return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } - if (rules.field === 'accountsReceivableAmount') { + if (rules.field.indexOf('accountsReceivableAmount') > -1) { callback('请输入金额') } callback() diff --git a/src/components/tools/UserPassword.vue b/src/components/tools/UserPassword.vue index c82c11a..a320a65 100644 --- a/src/components/tools/UserPassword.vue +++ b/src/components/tools/UserPassword.vue @@ -17,7 +17,7 @@ @paste.native.capture.prevent="handleOperate" autocomplete="new-password" label="旧密码"> - + @@ -42,6 +43,7 @@ placeholder="请确认新密码" @paste.native.capture.prevent="handleOperate" autocomplete="new-password" + :maxLength='30' v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/> @@ -55,6 +57,7 @@ import { putAction } from '@/api/manage' import { getRSAPublicKey } from '@api/login' import { JSEncrypt } from 'jsencrypt' +import { passwordReg } from '../../utils/validate' export default { name: 'UserPassword', @@ -83,14 +86,19 @@ export default { validateTrigger: 'blur' }, confirmpassword: { - rules: [ - { required: true, message: '请确认新密码!' }, - { - pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/, - message: '密码由8位及以上数字、大小写字母和特殊符号组成!' - }, - { validator: this.handlePasswordCheck } - ], + rules: [{ + required: true, message: '请确认新密码', + }, { + validator: this.handlePasswordCheck, + }], + // rules: [ + // { required: true, message: '请确认新密码!' }, + // { + // pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/, + // message: '密码由8位及以上数字、大小写字母和特殊符号组成!' + // }, + // { validator: this.handlePasswordCheck } + // ], validateTrigger: 'blur' } }, @@ -177,6 +185,9 @@ export default { if (value && password && value.trim() !== password.trim()) { callback(new Error('两次密码不一致')) } + if (value && !passwordReg(value)) { + callback('密码由8位及以上数字、大小写字母和特殊符号组成!') + } callback() }, compareToFirstPassword(rule, value, callback) { diff --git a/src/utils/projectCheck.js b/src/utils/projectCheck.js new file mode 100644 index 0000000..9163812 --- /dev/null +++ b/src/utils/projectCheck.js @@ -0,0 +1,16 @@ +import { getIsAssociatedProject } from '../api/incomePaymentsApi' +/** + * 验证项目是否关联合同 + * @param projectId 项目id + */ +export function checkAssociatedProject(projectId) { + return new Promise(resolve => { + getIsAssociatedProject({projectId: projectId}).then(res => { + if (res.success) { + resolve(false) + } else { + resolve(true) + } + }) + }) +} \ No newline at end of file diff --git a/src/views/businessManagement/BusinessManagement.vue b/src/views/businessManagement/BusinessManagement.vue index a1ba605..62cd0c7 100644 --- a/src/views/businessManagement/BusinessManagement.vue +++ b/src/views/businessManagement/BusinessManagement.vue @@ -8,7 +8,7 @@ - + diff --git a/src/views/businessManagement/ContactManagement.vue b/src/views/businessManagement/ContactManagement.vue index 4b7181b..a116695 100644 --- a/src/views/businessManagement/ContactManagement.vue +++ b/src/views/businessManagement/ContactManagement.vue @@ -8,17 +8,17 @@ - + - + - + diff --git a/src/views/contractManagement/expenditureContract/ExpenditureContractList.vue b/src/views/contractManagement/expenditureContract/ExpenditureContractList.vue index 1e49ad9..0e3dbe8 100644 --- a/src/views/contractManagement/expenditureContract/ExpenditureContractList.vue +++ b/src/views/contractManagement/expenditureContract/ExpenditureContractList.vue @@ -8,12 +8,12 @@ - + - + diff --git a/src/views/contractManagement/expenditureContract/modules/ExpenditureContractModule.vue b/src/views/contractManagement/expenditureContract/modules/ExpenditureContractModule.vue index 204373c..0568089 100644 --- a/src/views/contractManagement/expenditureContract/modules/ExpenditureContractModule.vue +++ b/src/views/contractManagement/expenditureContract/modules/ExpenditureContractModule.vue @@ -641,7 +641,7 @@ export default { callback() return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } switch (rules.field) { case 'contractAmount': diff --git a/src/views/contractManagement/revenueContract/RevenueContractList.vue b/src/views/contractManagement/revenueContract/RevenueContractList.vue index 1f60655..398d655 100644 --- a/src/views/contractManagement/revenueContract/RevenueContractList.vue +++ b/src/views/contractManagement/revenueContract/RevenueContractList.vue @@ -8,17 +8,17 @@ - + - + - + @@ -94,6 +94,7 @@ @click="toRevenueContractDetail(record.id, record.contractNum)" v-if="record.chargeStatus === 1" :value="text" + style="cursor: pointer" :length="18"> \ No newline at end of file diff --git a/src/views/contractManagement/revenueContract/modules/AssociatedProject.vue b/src/views/contractManagement/revenueContract/modules/AssociatedProject.vue index 04efffa..2b8ae0c 100644 --- a/src/views/contractManagement/revenueContract/modules/AssociatedProject.vue +++ b/src/views/contractManagement/revenueContract/modules/AssociatedProject.vue @@ -72,7 +72,7 @@ export default { title: '来款单位', align: 'center', dataIndex: 'chargeCompanyName', - width: 250, + width: 280, scopedSlots: { customRender: 'text' } }, { title: '应收金额', @@ -90,13 +90,13 @@ export default { title: '负责人', align: 'center', dataIndex: 'principalName', - width: 250, + width: 280, scopedSlots: { customRender: 'text' } }, { title: '企业联系人', align: 'center', dataIndex: 'contactsName', - width: 250, + width: 280, scopedSlots: { customRender: 'text' } }, { title: '创建时间', diff --git a/src/views/contractManagement/revenueContract/modules/RevenueContractDetail.vue b/src/views/contractManagement/revenueContract/modules/RevenueContractDetail.vue index f506de6..031d5de 100644 --- a/src/views/contractManagement/revenueContract/modules/RevenueContractDetail.vue +++ b/src/views/contractManagement/revenueContract/modules/RevenueContractDetail.vue @@ -8,18 +8,18 @@
主体信息
- - - - +
+
+ + {{ item.title }}: + {{ detailData[item.fieldName] }}% + {{ detailData[item.fieldName] }} + +
+
+ @@ -28,18 +28,16 @@
日期节点
- - - - +
+
+ + {{ item.title }}: + {{ detailData[item.fieldName] }} + +
+
+ @@ -48,18 +46,16 @@
账款信息
- - - - +
+
+ + {{ item.title }}: + {{ detailData[item.fieldName] }} + +
+
+ @@ -68,18 +64,16 @@
其他信息
- - - - +
+
+ + {{ item.title }}: + {{ detailData[item.fieldName] }} + +
+
+ @@ -138,19 +132,17 @@
存档信息
-
- - +
+
+ + {{ item.createBy }} + {{ item.createTime }} + {{ item.contractStatus_dictText }} + +
+
@@ -159,20 +151,18 @@
审核记录
-
- - +
+
+ + {{ item.createBy }} + {{ item.createTime }} + {{ item.contractStatus_dictText }} + {{ item.explainRemarks }} + +
+
@@ -340,8 +330,13 @@ export default { id: this.$route.query.revenueId } getRevenueContractById(param).then(res => { - this.detailData = res.result - this.detailData.pack = this.detailData.pack === 1 ? '是' : this.detailData.pack === 0 ? '否' : '' + if (res.success) { + this.detailData = res.result + this.detailData.pack = this.detailData.pack === 1 ? '是' : this.detailData.pack === 0 ? '否' : '' + } else { + // 添加异常判断,防止消息进入详情无法正常获取数据造成卡死及控制台报错 + this.$message.warn(res.message) + } }).finally(() => { this.loading = false }) @@ -409,11 +404,16 @@ export default { @import '~@assets/less/common.less'; .detail { + display: flex; padding: 0 20px; + flex-wrap: wrap; &-item { + width: 25%; + min-width: 280px; padding-top: 10px; color: #2F3133; + word-break: break-all; &-title { color: #999999; @@ -433,4 +433,9 @@ export default { margin-right: 8px; } } + +.aduit-text { + color: #2F3133; + padding: 0 20px; +} \ No newline at end of file diff --git a/src/views/contractManagement/revenueContract/modules/RevenueContractModule.vue b/src/views/contractManagement/revenueContract/modules/RevenueContractModule.vue index 7a402c3..b156767 100644 --- a/src/views/contractManagement/revenueContract/modules/RevenueContractModule.vue +++ b/src/views/contractManagement/revenueContract/modules/RevenueContractModule.vue @@ -42,6 +42,7 @@ :selected-company="selectedCompany" :init-contacts="selectedContact" :is-cancel="isCancel" + :disabled="isSaved" v-decorator="['signedContactsId',validatorRules.signedContactsId]">
@@ -78,7 +79,7 @@
- + @@ -260,6 +263,7 @@ moment().add(1, 'year') } } } diff --git a/src/views/contractManagement/revenueContract/modules/SelectMeetingProjectModule.vue b/src/views/contractManagement/revenueContract/modules/SelectMeetingProjectModule.vue index 5c3b6ff..877a1c2 100644 --- a/src/views/contractManagement/revenueContract/modules/SelectMeetingProjectModule.vue +++ b/src/views/contractManagement/revenueContract/modules/SelectMeetingProjectModule.vue @@ -12,7 +12,7 @@ - + @@ -34,8 +34,9 @@ - - + + @@ -72,8 +73,7 @@ class="j-table-force-nowrap"> @@ -87,7 +87,7 @@ - + @@ -106,7 +106,7 @@ import '@/assets/less/TableExpand.less' export default { name: 'SelectMeetingProjectModule', mixins: [JeroListMixin], - components:{ + components: { JDate, JYearDate, StatusSlot, @@ -143,117 +143,125 @@ export default { align: 'center', dataIndex: 'meetingName', width: 160, - scopedSlots: {customRender: 'text'} + scopedSlots: { customRender: 'text' } }, { title: '参会单位', align: 'center', dataIndex: 'companyName', width: 260, - scopedSlots: {customRender: 'text'} + scopedSlots: { customRender: 'text' } }, // 合同里来款用途固定为会务费 { title: '来款用途', align: 'center', dataIndex: 'chargeUse', - width: 80, - customRender: () => {return '会务费'} + width: 200, + customRender: () => { + return '会务费' + } }, { title: '参会人员', align: 'center', dataIndex: 'companyContactName', - width: 80, - scopedSlots: {customRender: 'text'} + width: 260, + scopedSlots: { customRender: 'text' } }, { title: '应收金额', align: 'center', dataIndex: 'amountReceivable', - width: 80, - scopedSlots: {customRender: 'text'} + width: 200, + scopedSlots: { customRender: 'text' } }, { title: '实收金额', align: 'center', dataIndex: 'paidAmount', - width: 80, - scopedSlots: {customRender: 'text'} + width: 200, + scopedSlots: { customRender: 'text' } }, { title: '缴费方式', align: 'center', dataIndex: 'payMode_dictText', - width: 80, - scopedSlots: {customRender: 'text'} + width: 150, + scopedSlots: { customRender: 'text' } }, { title: '负责人', align: 'center', dataIndex: 'directorName', - width: 80, - scopedSlots: {customRender: 'text'} + width: 200, + scopedSlots: { customRender: 'text' } }, { title: '打包', align: 'center', dataIndex: 'pack', width: 80, - scopedSlots: {customRender: 'status-pack'} + scopedSlots: { customRender: 'status-pack' } }, { title: '需要发票', align: 'center', dataIndex: 'needInvoice', - scopedSlots: {customRender: 'status-pack'}, - width: 80, + scopedSlots: { customRender: 'status-pack' }, + width: 80 }, { title: '到账', align: 'center', dataIndex: 'inAccount', - scopedSlots: {customRender: 'status'}, - width: 80, + scopedSlots: { customRender: 'status' }, + width: 80 }, { title: '开票', align: 'center', dataIndex: 'makeInvoice', - scopedSlots: {customRender: 'status'}, - width: 80, + scopedSlots: { customRender: 'status' }, + width: 80 }, { title: '邮寄', align: 'center', dataIndex: 'mail', - scopedSlots: {customRender: 'status'}, - width: 80, + scopedSlots: { customRender: 'status' }, + width: 80 }, { title: '创建时间', align: 'center', dataIndex: 'createTime', width: 160, - scopedSlots: {customRender: 'text'}, - }, + scopedSlots: { customRender: 'text' } + } ], url: { - list: '/meeting/payMeetingSituation/contractPage', + list: '/meeting/payMeetingSituation/contractPage' }, disableMixinCreated: true, contractId: '', // 收入合同id // 合同信息 - contranctInfo:{}, + contranctInfo: {}, // 打包状态 - pack:'' + pack: '' } }, methods: { moment, + /** + * 运行年份变化 + */ + dateChange() { + this.$forceUpdate() + }, open(record) { - this.contranctInfo =Object.assign({},record) - console.log(record,'meetingPerson') + this.contranctInfo = Object.assign({}, record) + console.log(record, 'meetingPerson') this.filters.companyId = record.signedCompanyId // 列表查询加入打包年份 this.filters.packYear = record.packYear @@ -261,6 +269,9 @@ export default { this.contractId = this.contranctInfo.id // 记录打包状态 this.pack = this.contranctInfo.pack + // 运行年份默认为当年 + this.queryParam.particularYear = new Date().getFullYear().toString() + this.lastQueryParam.particularYear = new Date().getFullYear().toString() this.loadData(1) this.visible = true }, @@ -280,10 +291,17 @@ export default { this.onClearSelected() }, handleOk() { - if (this.selectedRowKeys.length <= 0) { - this.$message.warn('请选择项目后再提交关联') + if (this.confirmLoading) { return } + this.confirmLoading = true + if (this.selectedRowKeys.length <= 0) { + this.$message.warn('请选择项目后再提交关联') + this.confirmLoading = false + + return + } + let submitData = [] let projectItem this.selectedRowKeys.forEach(item => { @@ -298,10 +316,15 @@ export default { if (res.success) { this.$message.success(res.message) this.close() + this.confirmLoading = false this.$emit('ok') } else { this.$message.warn(res.message) } + }).finally(() => { + setTimeout(() => { + this.confirmLoading = false + }, 1000) }) }, handleCancel() { @@ -310,7 +333,7 @@ export default { /* * 打开新增会议参会人员 * */ - handleAdd(){ + handleAdd() { // 传进去一些需要的默认值 this.$refs.modalForm.open(this.contranctInfo) }, @@ -333,6 +356,15 @@ export default { return false } return startValue.valueOf() > endValue.valueOf() + }, + searchReset() { + this.lastQueryParam = { + particularYear: new Date().getFullYear().toString() + } + this.queryParam = { + particularYear: new Date().getFullYear().toString() + } + this.loadData(1) } } } diff --git a/src/views/contractManagement/revenueContract/modules/SelectMemberProjectModule.vue b/src/views/contractManagement/revenueContract/modules/SelectMemberProjectModule.vue index e97a8af..954d4b2 100644 --- a/src/views/contractManagement/revenueContract/modules/SelectMemberProjectModule.vue +++ b/src/views/contractManagement/revenueContract/modules/SelectMemberProjectModule.vue @@ -109,10 +109,6 @@ - @@ -157,6 +153,13 @@ export default { width: 200, scopedSlots: {customRender: 'text'}, }, + { + title: '收费标准', + align: 'center', + dataIndex: 'chargeStandard', + width: 100, + scopedSlots: {customRender: 'text'}, + }, { title: '负责人', align: 'center', @@ -329,8 +332,13 @@ export default { this.$emit('ok') }, handleOk() { + if (this.confirmLoading) { + return + } + this.confirmLoading = true if (this.selectedRowKeys.length <= 0) { this.$message.warn('请选择项目后再提交关联') + this.confirmLoading = false return } let submitData = [] @@ -348,10 +356,15 @@ export default { this.$message.success(res.message) this.close() this.$emit('ok') + this.confirmLoading = false } else { this.$message.warn(res.message) } - }) + }).finally( () => { + setTimeout(() => { + this.confirmLoading = false + }, 1000) + } ) }, handleCancel() { this.activeKey = '1' diff --git a/src/views/contractManagement/revenueContract/modules/SelectProjectModule.vue b/src/views/contractManagement/revenueContract/modules/SelectProjectModule.vue index cf8f78c..2e55228 100644 --- a/src/views/contractManagement/revenueContract/modules/SelectProjectModule.vue +++ b/src/views/contractManagement/revenueContract/modules/SelectProjectModule.vue @@ -20,6 +20,7 @@ v-model="queryParam.departId" placeholder="请选择科室" :disabled="pack === 0" + allowClear @change="departChange"> @@ -28,16 +29,24 @@ - {{ item.realname }} + + {{ item.realname }} +
- + @@ -133,13 +142,18 @@ export default { contractId: { type: String, requird: false, - default: null, + default: null }, // 项目类型,1--普通项目;2--工作组项目;3--会议项目;4--会员项目 projectType: { type: Number, requird: false, default: null + }, + principal: { + type: String, + requird: false, + default: '' } }, data() { @@ -243,17 +257,32 @@ export default { } ], treeDepartData: [], // 部门列表 - userList: [], // 用户列表 - } - }, - // 部门id变化时绑定查询条件 - watch: { - departId(val) { - this.queryParam.departId = val + userList: [] // 用户列表 } }, methods: { + + /** + * 运行年份变化 + */ + dateChange() { + this.$forceUpdate() + }, + /** + * 负责人变化 + */ + principalChange() { + this.$forceUpdate() + }, open() { + // 运行年份默认为当年 + this.queryParam.year = new Date().getFullYear().toString() + this.lastQueryParam.year = new Date().getFullYear().toString() + // + this.queryParam.principalId = this.principal + this.lastQueryParam.principalId = this.principal + this.queryParam.departId = this.departId + this.lastQueryParam.departId = this.departId this.loadDepartTreeData() this.visible = true this.loadData() @@ -352,13 +381,13 @@ export default { * 重置 */ searchReset() { - this.lastQueryParam = {} let obj = { departId: this.departId, - principalId: undefined, - year: undefined, + principalId: this.principal, + year: new Date().getFullYear().toString(), } this.queryParam = Object.assign(this.queryParam, obj) + this.lastQueryParam = Object.assign(this.lastQueryParam, obj) this.loadData(1) }, /** diff --git a/src/views/contractManagement/revenueContract/modules/SelectWorkingGroupProjectModule.vue b/src/views/contractManagement/revenueContract/modules/SelectWorkingGroupProjectModule.vue index fcde150..b229098 100644 --- a/src/views/contractManagement/revenueContract/modules/SelectWorkingGroupProjectModule.vue +++ b/src/views/contractManagement/revenueContract/modules/SelectWorkingGroupProjectModule.vue @@ -13,12 +13,12 @@ - + - + @@ -163,7 +163,16 @@ export default { } }, methods: { + /** + * 运行年份变化 + */ + dateChange() { + this.$forceUpdate() + }, open() { + // 运行年份默认为当年 + this.queryParam.year = new Date().getFullYear().toString() + this.lastQueryParam.year = new Date().getFullYear().toString() this.loadData() this.visible = true }, @@ -230,7 +239,19 @@ export default { addOk() { this.close() this.$emit('ok') - } + }, + /** + * 重置 + */ + searchReset() { + this.lastQueryParam = { + year: new Date().getFullYear().toString() + } + this.queryParam = { + year: new Date().getFullYear().toString() + } + this.loadData(1) + }, } } diff --git a/src/views/dashboard/Analysis.vue b/src/views/dashboard/Analysis.vue index 9b46ee6..71936fb 100644 --- a/src/views/dashboard/Analysis.vue +++ b/src/views/dashboard/Analysis.vue @@ -242,9 +242,18 @@ export default { if (this.personalData.length === 0) { return } - let strData = JSON.stringify(this.personalData) - strData = strData.replaceAll('principalName', 'name').replaceAll('comeAllMoney', 'value') - let arr = JSON.parse(strData) + let strData = this.personalData + let arr = [] + strData.forEach(item => { + item.name = item.principalName + item.value = item.comeAllMoney + arr.push(item) + }) + // IE不兼容的代码 + // let strData = JSON.stringify(this.personalData) + // console.log(typeof strData) + // strData = strData.replaceAll('principalName', 'name').replaceAll('comeAllMoney', 'value') + // let arr = JSON.parse(strData) arr.filter(tt => tt.value = Number(tt.value)) let legendData = [] arr.forEach(item => { @@ -267,9 +276,17 @@ export default { if (this.departData.length === 0) { return } - let strData = JSON.stringify(this.departData) - strData = strData.replaceAll('departName', 'name').replaceAll('comeAllMoney', 'value') - let arr = JSON.parse(strData) + let strData = this.departData + let arr = [] + strData.forEach(item => { + item.name = item.departName + item.value = item.comeAllMoney + arr.push(item) + }) + // IE不兼容的代码 + // let strData = JSON.stringify(this.departData) + // strData = strData.replaceAll('departName', 'name').replaceAll('comeAllMoney', 'value') + // let arr = JSON.parse(strData) arr.filter(tt => tt.value = Number(tt.value)) let legendData = [] arr.forEach(item => { @@ -292,9 +309,17 @@ export default { if (this.workingGroupData.length === 0) { return } - let strData = JSON.stringify(this.workingGroupData) - strData = strData.replaceAll('workGroup', 'name').replaceAll('comeAllMoney', 'value') - let arr = JSON.parse(strData) + let strData = this.workingGroupData + let arr = [] + strData.forEach(item => { + item.name = item.workGroup + item.value = item.comeAllMoney + arr.push(item) + }) + // IE不兼容的代码 + // let strData = JSON.stringify(this.workingGroupData) + // strData = strData.replaceAll('workGroup', 'name').replaceAll('comeAllMoney', 'value') + // let arr = JSON.parse(strData) arr.filter(tt => tt.value = Number(tt.value)) let legendData = [] arr.forEach(item => { @@ -317,14 +342,23 @@ export default { if (this.companyData.length === 0) { return } - let strData = JSON.stringify(this.companyData) - strData = strData.replaceAll('chargeCompanyName', 'name').replaceAll('comeAllMoney', 'value') - let arr = JSON.parse(strData) + let strData = this.companyData + let arr = [] + strData.forEach(item => { + item.name = item.chargeCompanyName + item.value = item.comeAllMoney + arr.push(item) + }) + // IE不兼容的代码 + // let strData = JSON.stringify(this.companyData) + // strData = strData.replaceAll('chargeCompanyName', 'name').replaceAll('comeAllMoney', 'value') + // let arr = JSON.parse(strData) arr.filter(tt => tt.value = Number(tt.value)) let legendData = [] arr.forEach(item => { legendData.push(item.name) }) + console.log(arr) let option = this.option option.series[0].data = arr option.legend.data = legendData @@ -397,10 +431,14 @@ export default { align-items: center; & > img { - max-width: 100%; + display: inline-block; + max-height: 68px; + max-width: 68px; + object-fit: cover; } &-text { + max-width: 100%; height: 40px; line-height: 20px; text-align: center; @@ -409,6 +447,7 @@ export default { font-family: PingFang SC, PingFang SC-Regular; font-weight: 400; color: #666666; + word-break: break-all; } } } diff --git a/src/views/dataNetworkDiskManagement/committee/CommitteeMaintenance.vue b/src/views/dataNetworkDiskManagement/committee/CommitteeMaintenance.vue index cc5348a..bd20d33 100644 --- a/src/views/dataNetworkDiskManagement/committee/CommitteeMaintenance.vue +++ b/src/views/dataNetworkDiskManagement/committee/CommitteeMaintenance.vue @@ -8,17 +8,17 @@ - + - + - + @@ -76,7 +76,7 @@ :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, columnWidth: 80}" class="j-table-force-nowrap"> diff --git a/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue b/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue index 3202450..fa20761 100644 --- a/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue +++ b/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue @@ -20,12 +20,12 @@ - + - + @@ -35,7 +35,8 @@ - 查询 + 查询 重置 @@ -46,8 +47,12 @@
- 导出 - 合并开票 + 导出 + + 合并开票 +
@@ -98,7 +103,8 @@ 来款 - 开票 + 开票 @@ -198,7 +204,7 @@ export default { }, { title: '项目负责人', align: 'center', - width: 140, + width: 280, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { @@ -216,7 +222,7 @@ export default { }, { title: '实收金额', align: 'center', - width: 100, + width: 120, dataIndex: 'paidAmount', scopedSlots: { customRender: 'text' } }, { @@ -271,7 +277,7 @@ export default { selectedProject: [], batchInvoicingVisible: false, selectedCompany: {}, // 选中项目的企业信息 - mailContactsId: null, // 项目邮寄联系人id + mailContactsId: null // 项目邮寄联系人id } }, methods: { @@ -329,7 +335,7 @@ export default { // 开票 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('存在不需要发票的项目!') } // 是否存在企业不同的项目 @@ -341,7 +347,7 @@ export default { if (!isAllEqual(companyArr)) { reject('请选择来款单位为同一企业的项目合并开票!') } - if (arr.some(item => item.invoiceAmount && Number(item.invoiceAmount) === Number(item.receivableAmount))) { + if (arr.some(item => item.makeInvoice === 1)) { reject('存在已完成开票的项目!') } this.selectedCompany = { diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue index 4e56274..7cd5b41 100644 --- a/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue +++ b/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue @@ -154,10 +154,14 @@ export default { checkMoney(rules, value, callback) { if (value) { if (money(value)) { - callback() + if (Number(value) > 0) { + callback() + } else { + callback('到账金额不能小于或等于0') + } return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } callback('请输入到账金额') } diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/ArriveStageModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/ArriveStageModule.vue index 9d8a2fe..7b94313 100644 --- a/src/views/financialManagement/arriveAndInvoicing/modules/ArriveStageModule.vue +++ b/src/views/financialManagement/arriveAndInvoicing/modules/ArriveStageModule.vue @@ -207,12 +207,15 @@ export default { &-content { padding-right: 20px; word-break: break-all; + white-space: nowrap; font-size: 14px; font-family: NotoSansHans, NotoSansHans-Light; color: #4D4D4D; &-money { color: #D40505; + word-break: break-all; + white-space: nowrap; } } } diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue index c07c7d5..1c4666a 100644 --- a/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue +++ b/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue @@ -197,7 +197,7 @@ export default { callback() return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } callback('请输入到账金额') } diff --git a/src/views/incomePayments/meetManage/AddOrDetailMeet.vue b/src/views/incomePayments/meetManage/AddOrDetailMeet.vue index bfe0528..24c72eb 100644 --- a/src/views/incomePayments/meetManage/AddOrDetailMeet.vue +++ b/src/views/incomePayments/meetManage/AddOrDetailMeet.vue @@ -525,7 +525,7 @@ export default { this.$nextTick(() => { // 加定时器是因为有可能赋值不成功 setTimeout(() => { - this.form.setFieldsValue(pick(this.model,'notice','meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone')), 200 + this.form.setFieldsValue(pick(this.model,'notice','paymentQrCode','meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone')), 200 }) // 如果是标协会议则回显 标协会议的字段 if (this.meetingType === '2') { @@ -561,6 +561,10 @@ export default { } let placeName = values.convokeLocale const formData = Object.assign(this.model, values, {venue: this.getPcaText(placeName)}) + // 如果会议的费用未为0 不能上传缴费凭证 + if(values.meetingCosts === '0.00' ){ + delete formData.paymentQrCode + } // 添加编辑会议需要增加会议类型 formData.meetingType = this.meetingType // 如果是工作会议维护跳转的需要加上会议类型为工作组会议和工作组id @@ -787,6 +791,10 @@ export default { // 会议费用为 0控制二维码显示隐藏 if (value === '0.00') { this.QRcodeBool = false + // 如果付款二维码有值 需要清空 + if(this.form.getFieldValue('paymentQrCode')){ + this.form.resetFields('paymentQrCode') + } } else { this.QRcodeBool = true } diff --git a/src/views/incomePayments/meetManage/Attendance.vue b/src/views/incomePayments/meetManage/Attendance.vue index 9c95365..dd049d5 100644 --- a/src/views/incomePayments/meetManage/Attendance.vue +++ b/src/views/incomePayments/meetManage/Attendance.vue @@ -5,7 +5,7 @@
会议信息
- + {{ currentMeetingInfo.meetingName }} @@ -66,10 +66,24 @@ {{ currentMeetingInfo.cooperativeInvitationCode }} - - + + + + + + {{ currentMeetingInfo.meetingContent }} + + + {{ currentMeetingInfo.remark }} + + +
+
报名信息
+
+ {{ signUpHerfUrl }} @@ -87,18 +101,12 @@ v-model="currentMeetingInfo.paymentQrCode" disabled>
- - {{ - item.hotelContacts + ':' + item.hotelContactsPhone + ' ' - }} - - - {{ currentMeetingInfo.meetingContent }} - - - {{ currentMeetingInfo.remark }} + + + + {{ item.hotelContacts + ':' + item.hotelContactsPhone + ' ' }}
参会人员信息
@@ -109,12 +117,12 @@ - + - + @@ -146,7 +154,7 @@ - @@ -160,7 +168,8 @@ - 查询 + 查询 重置 @@ -173,10 +182,14 @@
- 添加参会人 - 导出 + 添加参会人 + + 导出 + + + 批量删除 - 批量删除 @@ -241,7 +254,7 @@ - 审核凭证 diff --git a/src/views/incomePayments/memberManage/MemberProjectList.vue b/src/views/incomePayments/memberManage/MemberProjectList.vue index 4bddf74..0709ca7 100644 --- a/src/views/incomePayments/memberManage/MemberProjectList.vue +++ b/src/views/incomePayments/memberManage/MemberProjectList.vue @@ -9,7 +9,7 @@ - + diff --git a/src/views/incomePayments/memberManage/SafeguardMemberList.vue b/src/views/incomePayments/memberManage/SafeguardMemberList.vue index ce0a32b..9dd9836 100644 --- a/src/views/incomePayments/memberManage/SafeguardMemberList.vue +++ b/src/views/incomePayments/memberManage/SafeguardMemberList.vue @@ -239,7 +239,7 @@ export default { }, computed: { importExcelUrl: function () { - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}?projectId=${this.currentInfo.id}` }, }, created() { diff --git a/src/views/incomePayments/memberManage/StardsMemberProjectList.vue b/src/views/incomePayments/memberManage/StardsMemberProjectList.vue index 87686f4..28f7f31 100644 --- a/src/views/incomePayments/memberManage/StardsMemberProjectList.vue +++ b/src/views/incomePayments/memberManage/StardsMemberProjectList.vue @@ -8,7 +8,7 @@ - + diff --git a/src/views/incomePayments/memberManage/modules/SafeguardMemberModal.vue b/src/views/incomePayments/memberManage/modules/SafeguardMemberModal.vue index 72277fd..8f63e73 100644 --- a/src/views/incomePayments/memberManage/modules/SafeguardMemberModal.vue +++ b/src/views/incomePayments/memberManage/modules/SafeguardMemberModal.vue @@ -39,12 +39,13 @@ :selected-company="selectedCompany" :init-contacts="selectPerson" placeholder="请选择企业联系人" + @change="changetPerson" v-decorator="[ 'companyContactId', validatorRules.companyContactId, ]" :maxLength="50" - ref="selectMailContacts" + ref="selectContacts" @ok="addContactsOk" > @@ -203,11 +204,11 @@ - + + + + + @@ -216,7 +217,7 @@ import pick from 'lodash.pick' import { httpAction } from '@api/manage' import JUpload from '@comp/jero/JUpload' import CompanySelect from '@comp/company/CompanySelect' -import ContactManagementModule from '@views/businessManagement/modules/ContactManagementModule' +// import ContactManagementModule from '@views/businessManagement/modules/ContactManagementModule' import SelectContacts from '@comp/company/SelectContacts' import {addZero} from '@/utils/util' @@ -225,7 +226,7 @@ export default { components: { JUpload, CompanySelect, - ContactManagementModule, + // ContactManagementModule, SelectContacts, }, data() { @@ -263,11 +264,11 @@ export default { }, companyContactId: { rules: [{ required: true, message: '请选择企业联系人' }], - validateTrigger: 'blur', + validateTrigger: 'change', }, postContactId: { rules: [{ required: true, message: '请选择邮寄联系人' }], - validateTrigger: 'blur', + validateTrigger: 'change', }, paymentMethod: { rules: [{ required: true, message: '请选择来款方式' }], @@ -365,6 +366,13 @@ export default { ) }) }, + // 选择企业联系人 带出邮寄联系人 + changetPerson(val){ + // 只有邮寄联系人没有值的时候才去联动复制 + if(this.form.getFieldValue('postContactId') === undefined ){ + this.form.setFieldsValue({'postContactId':val}) + } + }, close() { this.incomePaysType = 3 this.$emit('close') @@ -413,10 +421,10 @@ export default { * 选择会员单位 * */ companyChange(val) { - this.selectedCompany = Object.assign({}, val, { companyName: val.name }) + this.selectedCompany = Object.assign({}, val, ) }, handleCancel() { - this.selectedCompany = {} + this.selectedCompany = null this.close() }, /* diff --git a/src/views/mailManagement/BillMail.vue b/src/views/mailManagement/BillMail.vue index 03406c1..625fce6 100644 --- a/src/views/mailManagement/BillMail.vue +++ b/src/views/mailManagement/BillMail.vue @@ -9,7 +9,7 @@ - + @@ -19,7 +19,7 @@ - + @@ -152,7 +152,7 @@ export default { { title: '票号', align: 'center', - width: 200, + width: 300, dataIndex: 'billNo', scopedSlots: { customRender: 'text' } }, @@ -166,21 +166,21 @@ export default { { title: '项目负责人', align: 'center', - width: 200, + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { title: '来款单位', align: 'center', - width: 200, + width: 300, dataIndex: 'chargeCompanyName', scopedSlots: { customRender: 'text' } }, { title: '邮寄联系人', align: 'center', - width: 200, + width: 300, dataIndex: 'contactName', scopedSlots: { customRender: 'text' } }, diff --git a/src/views/mailManagement/ContractMail.vue b/src/views/mailManagement/ContractMail.vue index 8afc412..2dbf221 100644 --- a/src/views/mailManagement/ContractMail.vue +++ b/src/views/mailManagement/ContractMail.vue @@ -9,17 +9,17 @@ - + - + - + @@ -124,28 +124,28 @@ export default { { title: '合同编号', align: 'center', - width: 200, + width: 300, dataIndex: 'contractNum', scopedSlots: { customRender: 'htmlSlot' } }, { title: '合同名称', align: 'center', - width: 250, + width: 300, dataIndex: 'contractName', scopedSlots: { customRender: 'projectName' } }, { title: '签订单位', align: 'center', - width: 200, + width: 300, dataIndex: 'signedCompanyTemporaryName', scopedSlots: { customRender: 'projectName' } }, { title: '负责人', align: 'center', - width: 200, + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'projectName' } }, @@ -159,7 +159,7 @@ export default { { title: '邮寄联系人', align: 'center', - width: 200, + width: 300, dataIndex: 'liaisonMan', scopedSlots: { customRender: 'projectName' } }, diff --git a/src/views/modules/message/SysMessageTemplateList.vue b/src/views/modules/message/SysMessageTemplateList.vue index 79f614d..ce5738d 100644 --- a/src/views/modules/message/SysMessageTemplateList.vue +++ b/src/views/modules/message/SysMessageTemplateList.vue @@ -9,7 +9,7 @@ - + diff --git a/src/views/packManagement/PackCompanyList.vue b/src/views/packManagement/PackCompanyList.vue index 68ad6ec..78a7eef 100644 --- a/src/views/packManagement/PackCompanyList.vue +++ b/src/views/packManagement/PackCompanyList.vue @@ -9,7 +9,7 @@ - + diff --git a/src/views/packManagement/PackProjectMaintenance.vue b/src/views/packManagement/PackProjectMaintenance.vue index 9ae84c1..d3501a7 100644 --- a/src/views/packManagement/PackProjectMaintenance.vue +++ b/src/views/packManagement/PackProjectMaintenance.vue @@ -39,7 +39,7 @@ - + @@ -527,6 +527,9 @@ export default { if (arr.some(item => item.needInvoice === 0 || Number(item.receivableAmount) === 0)) { reject('存在不需要发票的项目!') } + if (arr.some(item => item.makeInvoice === 1)) { + reject('存在已完成开票的项目!') + } } // 来款 if (operateType === 'incomePayment') { @@ -534,6 +537,9 @@ export default { if (arr.some(item => Number(item.receivableAmount) === 0)) { reject('存在应收金额为0的项目!') } + if (arr.some(item => item.inAccount === 1)) { + reject('不可选择已付全款的项目!') + } } resolve(arr) }) diff --git a/src/views/packManagement/modules/BatchIncomePaymentModule.vue b/src/views/packManagement/modules/BatchIncomePaymentModule.vue index 799a91c..7b4b020 100644 --- a/src/views/packManagement/modules/BatchIncomePaymentModule.vue +++ b/src/views/packManagement/modules/BatchIncomePaymentModule.vue @@ -258,10 +258,6 @@ export default { this.addZero(e) e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() this.inputIncomingAmount = Number(e.target.value) - if (this.inputIncomingAmount > this.sumAmountOwed) { - this.$message.warn('来款金额大于当前欠款金额,输入有误!') - return - } this.clearThisTimeAmount() this.calculateThisTimeAmount() }, @@ -282,6 +278,10 @@ export default { this.$message.warn('请输入大于0的来款金额') return } + if (this.inputIncomingAmount > this.sumAmountOwed) { + this.$message.warn('来款金额大于当前欠款金额,输入有误!') + return + } this.dataSource.forEach((item, index) => { // 当前项目欠款是否 >0 if (Number(item.amountOwed) > 0) { @@ -310,10 +310,14 @@ export default { checkMoney(rules, value, callback) { if (value) { if (money(value)) { - callback() + if (Number(value) > 0) { + callback + } else { + callback('来款金额不能小于或等于0') + } return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } callback('请输入来款金额') } diff --git a/src/views/packManagement/modules/BatchInvoicingModule.vue b/src/views/packManagement/modules/BatchInvoicingModule.vue index 587d08e..886722e 100644 --- a/src/views/packManagement/modules/BatchInvoicingModule.vue +++ b/src/views/packManagement/modules/BatchInvoicingModule.vue @@ -274,10 +274,6 @@ export default { this.addZero(e) e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() this.inputInvoicingAmount = Number(e.target.value) - if (this.inputInvoicingAmount > this.sumAmountOwed) { - this.$message.warn('开票金额大于当前未开票金额,输入有误!') - return - } this.clearThisTimeAmount() this.calculateThisTimeAmount() }, @@ -317,6 +313,10 @@ export default { this.$message.warn('请输入大于0的开票金额') return } + if (this.inputInvoicingAmount > this.sumAmountOwed) { + this.$message.warn('开票金额大于当前未开票金额,输入有误!') + return + } this.dataSource.forEach((item, index) => { // 当前项目欠款是否 >0 if (Number(item.amountOwed) > 0) { @@ -409,7 +409,7 @@ export default { callback() return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } callback('请输入开票金额') } diff --git a/src/views/packManagement/modules/PackCompanyModule.vue b/src/views/packManagement/modules/PackCompanyModule.vue index 8314de3..c8e5c98 100644 --- a/src/views/packManagement/modules/PackCompanyModule.vue +++ b/src/views/packManagement/modules/PackCompanyModule.vue @@ -198,6 +198,9 @@ export default { close() { this.$emit('close') this.visible = false + // 清空选中联系人相关信息 + this.initContact = null + this.initPackContact = null }, handleOk() { if (this.confirmLoading) { @@ -271,7 +274,7 @@ export default { callback() return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } callback('请输入打包费用总计') }, diff --git a/src/views/packManagement/modules/PackProjectSelectProjectModule.vue b/src/views/packManagement/modules/PackProjectSelectProjectModule.vue index df34ad1..372eb63 100644 --- a/src/views/packManagement/modules/PackProjectSelectProjectModule.vue +++ b/src/views/packManagement/modules/PackProjectSelectProjectModule.vue @@ -15,7 +15,7 @@ - + diff --git a/src/views/projectManagement/ConferenceMaintenance.vue b/src/views/projectManagement/ConferenceMaintenance.vue index 9f90b17..aede2a2 100644 --- a/src/views/projectManagement/ConferenceMaintenance.vue +++ b/src/views/projectManagement/ConferenceMaintenance.vue @@ -12,7 +12,7 @@ - + diff --git a/src/views/projectManagement/GeneralProjectManagement.vue b/src/views/projectManagement/GeneralProjectManagement.vue index 345b3d3..c43f1c9 100644 --- a/src/views/projectManagement/GeneralProjectManagement.vue +++ b/src/views/projectManagement/GeneralProjectManagement.vue @@ -8,12 +8,12 @@ - + - + @@ -29,7 +29,7 @@ - + diff --git a/src/views/projectManagement/InternationalSeminar.vue b/src/views/projectManagement/InternationalSeminar.vue index 22d6e26..4c5a648 100644 --- a/src/views/projectManagement/InternationalSeminar.vue +++ b/src/views/projectManagement/InternationalSeminar.vue @@ -8,7 +8,7 @@ - + diff --git a/src/views/projectManagement/OtherMeeting.vue b/src/views/projectManagement/OtherMeeting.vue index a185e9b..c5ae5d6 100644 --- a/src/views/projectManagement/OtherMeeting.vue +++ b/src/views/projectManagement/OtherMeeting.vue @@ -8,7 +8,7 @@ - + diff --git a/src/views/projectManagement/WorkingGroupMemberUnitMaintenance.vue b/src/views/projectManagement/WorkingGroupMemberUnitMaintenance.vue index 9bedd60..b9dbd75 100644 --- a/src/views/projectManagement/WorkingGroupMemberUnitMaintenance.vue +++ b/src/views/projectManagement/WorkingGroupMemberUnitMaintenance.vue @@ -41,7 +41,7 @@ - + diff --git a/src/views/projectManagement/WorkingGroupProjectDataMaintenance.vue b/src/views/projectManagement/WorkingGroupProjectDataMaintenance.vue index 1ff8123..1fb6ca8 100644 --- a/src/views/projectManagement/WorkingGroupProjectDataMaintenance.vue +++ b/src/views/projectManagement/WorkingGroupProjectDataMaintenance.vue @@ -8,7 +8,7 @@ - + diff --git a/src/views/projectManagement/WorkingGroupProjectManagement.vue b/src/views/projectManagement/WorkingGroupProjectManagement.vue index 6208c54..4f7cb59 100644 --- a/src/views/projectManagement/WorkingGroupProjectManagement.vue +++ b/src/views/projectManagement/WorkingGroupProjectManagement.vue @@ -8,7 +8,7 @@ - + diff --git a/src/views/projectManagement/modules/GeneralProjectModule.vue b/src/views/projectManagement/modules/GeneralProjectModule.vue index 08b2671..114f5d8 100644 --- a/src/views/projectManagement/modules/GeneralProjectModule.vue +++ b/src/views/projectManagement/modules/GeneralProjectModule.vue @@ -42,7 +42,7 @@ @@ -111,7 +111,7 @@ 合同 + v-else :disabled="isAssociatedContract"> 合同 收费通知 @@ -123,7 +123,7 @@ @@ -187,6 +187,8 @@ import SelectContacts from '@comp/company/SelectContacts' import { addZero } from '../../../utils/util' import Vue from 'vue' import { USER_INFO } from '../../../store/mutation-types' +import { money } from '../../../utils/validate' +import { checkAssociatedProject } from '../../../utils/projectCheck' export default { name: 'GeneralProjectModule', @@ -290,7 +292,7 @@ export default { validateTrigger: 'change' }, receivableAmount: { - rules: [{ required: true, message: '请输入应收金额' }], + rules: [{ required: true, validator: this.checkMoney }], validateTrigger: 'blur' }, needInvoice: { @@ -314,6 +316,8 @@ export default { selectedCompany: null, // 当前选中的企业 selectedContact: null, // 编辑时的联系人 selectedMailContact: null, // 编辑时的邮寄联系人 + disabledCompany: false, // 企业是否可以编辑 + isAssociatedContract: false, // 是否已关联合同 url: { add: '/project/payCommonProject/add', edit: '/project/payCommonProject/edit' @@ -346,9 +350,17 @@ export default { companyName: record.chargeCompanyTemporaryName } } - + // 判断企业是否可以编辑,项目来款、开票、邮寄、打包、关联合同后,企业不可更改 + 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 + } // 是否存在从收入合同传入的签订联系人id - console.log(record, this.signedContactId) record.contactsId = this.signedContactId || record.contactsTemporaryId || undefined record.mailContactsId = this.signedContactId || record.mailContactsTemporaryId || undefined // 回显选中的企业 @@ -382,6 +394,12 @@ export default { this.$emit('close') this.chargeWayType = null this.selectedCompany = null + // 清空选中联系人的相关信息 + this.selectedContact = null + this.selectedMailContact = null + // 清除能否编辑企业、来款方式的限制 + this.isAssociatedContract = false + this.disabledCompany = false this.visible = false }, handleOk() { @@ -487,6 +505,22 @@ export default { this.form.setFieldsValue(pick(this.model, 'mailContactsId')) }) } + }, + /** + * 校验金额格式 + * @param rules + * @param value + * @param callback + */ + checkMoney(rules, value, callback) { + console.log(value, rules.field) + if (value) { + if (money(value)) { + callback() + } + callback('请输入合法的金额数字,最多2位小数,10位正数') + } + callback('请输入应收金额') } } } diff --git a/src/views/projectManagement/modules/WorkingGroupMemberUnitModule.vue b/src/views/projectManagement/modules/WorkingGroupMemberUnitModule.vue index 5be039f..713e304 100644 --- a/src/views/projectManagement/modules/WorkingGroupMemberUnitModule.vue +++ b/src/views/projectManagement/modules/WorkingGroupMemberUnitModule.vue @@ -28,7 +28,7 @@ @@ -89,13 +89,23 @@ 合同 + v-else :disabled="isAssociatedContract"> 合同 收费通知 + + + + + + @@ -216,6 +226,7 @@ import { getWorkingGroupListByNotCompany } from '../../../api/incomePaymentsApi' import { isRepeat } from '../../../utils/util' import { addZero } from '../../../utils/util' import { money } from '../../../utils/validate' +import { checkAssociatedProject } from '../../../utils/projectCheck' export default { name: 'WorkingGroupMemberUnitModule', @@ -342,6 +353,8 @@ export default { selectedChargeNotice: null, // 选中的收费通知号 workingGroupId: null, workingGroupList: [], + disabledCompany: false, // 企业是否禁用 + isAssociatedContract: false, // 是否关联合同 url: { add: '/project/payWorkingGroupSubitem/add', edit: '/project/payWorkingGroupSubitem/edit' @@ -393,6 +406,15 @@ export default { companyName: record.chargeCompanyTemporaryName } } + // 验证项目是否关联收入合同,项目来款、开票、邮寄、打包、关联合同后,企业不可更改 + 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 + } // 回显选中的企业 this.selectedCompany = record.chargeCompany this.companyChange(this.selectedCompany) @@ -433,6 +455,14 @@ export default { this.$emit('close') this.chargeWayType = null this.selectedCompany = null + // 清除选中联系人信息 + this.selectedContact1 = null + this.selectedContact2 = null + this.selectedContact3 = null + this.selectedMailContact = null + // 清除企业、来款方式、合同号的限制 + this.isAssociatedContract = false + this.disabledCompany = false this.visible = false }, handleOk() { @@ -520,7 +550,7 @@ export default { this.chargeNoticeList.forEach(item => { if (item.type === 'chargeNoticeA' && key === 'a') { this.selectedChargeNotice = 'A' - if (!isFirst) { + if (!isFirst) { this.model.receivableAmount = item.yearCharge this.model.chargeNoticeId = item.chargeNoticeId } @@ -577,7 +607,7 @@ export default { callback() return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } callback('请输入应收金额') }, diff --git a/src/views/projectManagement/modules/WorkingGroupProjectModule.vue b/src/views/projectManagement/modules/WorkingGroupProjectModule.vue index ad3ea0d..7d5340b 100644 --- a/src/views/projectManagement/modules/WorkingGroupProjectModule.vue +++ b/src/views/projectManagement/modules/WorkingGroupProjectModule.vue @@ -333,7 +333,7 @@ export default { callback() return } - callback('请输入正确格式的金额') + callback('请输入合法的金额数字,最多2位小数,10位正数') } callback() }, diff --git a/src/views/signUp/SignUpEntrance.vue b/src/views/signUp/SignUpEntrance.vue index 6928e82..83522e6 100644 --- a/src/views/signUp/SignUpEntrance.vue +++ b/src/views/signUp/SignUpEntrance.vue @@ -26,7 +26,7 @@ - {{ currentMeetingInfo.directorName }} + {{ currentMeetingInfo.directorName }} {{currentMeetingInfo.directorPhone}} @@ -36,7 +36,7 @@ - {{holdtime}} + {{ holdtime }} @@ -46,7 +46,7 @@ - {{holdAddress}} + {{ holdAddress }} @@ -60,7 +60,8 @@ - + @@ -69,7 +70,8 @@ - 立即报名 + 立即报名 +
@@ -84,7 +86,7 @@ import {getMeetInfoById} from '@api/incomeMeetingApi' export default { name: 'SignUpEntrance', - components:{ + components: { PreviewFile }, data() { @@ -97,11 +99,13 @@ export default { // 会议费用 meetingMoney: '', // 召开时间 - holdtime:'', + holdtime: '', // 召开地点 - holdAddress:'', + holdAddress: '', // 会议id - meetingId:'' + meetingId: '', + // 当前时间是否超过报名截止时间 + invalidationBool: false } }, created() { @@ -109,7 +113,7 @@ export default { let id = this.GetQueryString('id') this.meetingId = id document.title = '报名入口' - if(id){ + if (id) { this.getMeetingInfo(id) } }, @@ -141,7 +145,7 @@ export default { this.$router.push({ path: '/signUpPage', query: { - id:this.meetingId + id: this.meetingId } }) }, @@ -152,6 +156,14 @@ export default { getMeetInfoById({id: params}).then(res => { if (res.success) { this.currentMeetingInfo = res.result + // true超过了 false 未超过 + this.invalidationBool = this.compareCurrentTime(res.result.registerDeadline) + if (this.invalidationBool) { + this.$notification.error({ + message: '系统提示', + description: '当前会议超出报名时间,不可报名!' + }) + } // 初始化会议费用 if (this.currentMeetingInfo.meetingCostsVip) { this.meetingMoney = `普通会员(${this.currentMeetingInfo.meetingCosts}/人) 标协会员(${this.currentMeetingInfo.meetingCostsVip}/人)` @@ -159,11 +171,11 @@ export default { this.meetingMoney = `普通会员(${this.currentMeetingInfo.meetingCosts}/人)` } // 初始化召开时间 - if(this.currentMeetingInfo.startTime){ + if (this.currentMeetingInfo.startTime) { this.holdtime = this.currentMeetingInfo.startTime + '~' + this.currentMeetingInfo.endTime } // 初始化召开地点 - if(this.currentMeetingInfo.venue){ + if (this.currentMeetingInfo.venue) { this.holdAddress = this.currentMeetingInfo.venue + '/' + this.currentMeetingInfo.address } } else { @@ -172,6 +184,18 @@ export default { }) }, /* + * 当前时间是否超过会议报名时间 + * */ + compareCurrentTime(time) { + let date = new Date() + let compareTime = new Date(time) + if (date.getTime() > compareTime.getTime()) { + return true + } else { + return false + } + }, + /* * 会议类型 * */ initMeetingType(val) { @@ -193,9 +217,9 @@ export default { } }, /** - * 获取url的参数 - * @param name要获取的参数名 - * */ + * 获取url的参数 + * @param name要获取的参数名 + * */ GetQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)') var r = window.location.search.substr(1).match(reg) diff --git a/src/views/signUp/SignUpPage.vue b/src/views/signUp/SignUpPage.vue index ca4a01e..4a2e48c 100644 --- a/src/views/signUp/SignUpPage.vue +++ b/src/views/signUp/SignUpPage.vue @@ -36,7 +36,7 @@ - {{ currentMeetingInfo.directorName }} + {{ currentMeetingInfo.directorName }}({{ currentMeetingInfo.directorPhone }}) @@ -146,7 +146,7 @@ - + 参会人 @@ -175,13 +175,14 @@ @@ -321,6 +322,10 @@ export default { inviteCodeBool: false, // 邀请码错误状态 codeErrorBool: true, + // 是否是打包 + isPackBool:false, + // 国际研讨会身份的控制 + identityBool:false, url: { add: '/meeting/payMeetingSituation/signUp' } @@ -344,15 +349,15 @@ export default { if (res.success) { this.currentMeetingInfo = res.result this.meetingType = this.currentMeetingInfo.meetingType - // 初始化会议费用 + // 初始化会议费用 这里的判断有问题 应该根据单位是否是标协会员单位 显示不同的会议费用 if (this.currentMeetingInfo.meetingCostsVip) { this.meetingMoney = `普通会员(${this.currentMeetingInfo.meetingCosts}/人) 标协会员(${this.currentMeetingInfo.meetingCostsVip}/人)` // 费用合计 - this.meetingCostSum = Number(this.currentMeetingInfo.meetingCosts) + Number(this.currentMeetingInfo.meetingCostsVip) + this.meetingCostSum = this.currentMeetingInfo.meetingCosts } else { this.meetingMoney = `普通会员(${this.currentMeetingInfo.meetingCosts}/人)` // 费用合计 - this.meetingCostSum = Number(this.currentMeetingInfo.meetingCosts) + this.meetingCostSum = this.currentMeetingInfo.meetingCosts } // 初始化召开时间 if (this.currentMeetingInfo.startTime) { @@ -425,6 +430,15 @@ export default { if (r != null) return unescape(r[2]) return null }, + // 是否打包 打包会议费用为0 + isPack(val){ + this.isPackBool = val + if(this.isPackBool){ + this.meetingCostSum = '0.00' + }else { + this.meetingCostSum = this.currentMeetingInfo.meetingCosts + } + }, /* * 确定 * */ @@ -537,10 +551,17 @@ export default { // 选择是说明身份是嘉宾 this.identifyType = 1 this.inviteCodeBool = true + this.identityBool = false } else if (e.target.value === 0) { this.inviteCodeBool = false + this.identityBool = true // 选的否 身份置空 this.identifyType = null + this.$nextTick(() => { + if(this.$refs.formother){ + this.$refs.formother.isLimitBool = true + } + }) } }, /* @@ -555,7 +576,6 @@ export default { nextSetp() { // 获取邀请码 let code = this.form.getFieldValue('code') - console.log(this.currentMeetingInfo.cooperativeInvitationCode === code) switch (code) { // 合作伙伴 case this.currentMeetingInfo.cooperativeInvitationCode: diff --git a/src/views/statisticalReport/WholeInstituteStatisticsList.vue b/src/views/statisticalReport/WholeInstituteStatisticsList.vue index a86b048..9af6a5a 100644 --- a/src/views/statisticalReport/WholeInstituteStatisticsList.vue +++ b/src/views/statisticalReport/WholeInstituteStatisticsList.vue @@ -10,12 +10,12 @@ - + - + @@ -96,6 +96,7 @@
+ @@ -132,7 +132,6 @@ :dataSource="footerDataSource" :showHeader="false" :pagination="false" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" class="j-table-force-nowrap footer-table"> @@ -196,23 +195,29 @@ export default { return parseInt(index) + 1 } }, { - title: '项目名称', + title: '来款项目', align: 'center', - // width: 200, + width: 300, dataIndex: 'projectName', scopedSlots: { customRender: 'projectName' } }, { - title: '负责人', + title: '项目负责人', align: 'center', - width: 140, + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { title: '所属科室', align: 'center', - width: 140, + width: 300, dataIndex: 'depart', scopedSlots: { customRender: 'text' } + }, { + title: '来款单位', + align: 'center', + width: 300, + dataIndex: 'chargeCompanyTemporaryName', + scopedSlots: { customRender: 'text' } }, { title: '应收金额', align: 'center', @@ -236,27 +241,32 @@ export default { { title: '序号', dataIndex: 'title', - key: 'rowIndex', - width: 120, - align: 'center' - }, { - title: '项目名称', align: 'center', - // width: 200, + width: 60 + }, { + title: '来款项目', + align: 'center', + width: 300, dataIndex: 'projectName', - scopedSlots: { customRender: 'text' } + scopedSlots: { customRender: 'projectName' } }, { - title: '负责人', + title: '项目负责人', align: 'center', - width: 140, + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { title: '所属科室', align: 'center', - width: 140, + width: 300, dataIndex: 'depart', scopedSlots: { customRender: 'text' } + }, { + title: '来款单位', + align: 'center', + width: 300, + dataIndex: 'chargeCompanyTemporaryName', + scopedSlots: { customRender: 'text' } }, { title: '应收金额', align: 'center', @@ -458,7 +468,7 @@ export default { } console.log('导出参数', param) downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param) - }, + } } } diff --git a/src/views/statisticalReport/departmentStatistics/IndividualPaymentStatisticsDetail.vue b/src/views/statisticalReport/departmentStatistics/IndividualPaymentStatisticsDetail.vue index 6a5acbf..b0920ea 100644 --- a/src/views/statisticalReport/departmentStatistics/IndividualPaymentStatisticsDetail.vue +++ b/src/views/statisticalReport/departmentStatistics/IndividualPaymentStatisticsDetail.vue @@ -9,7 +9,7 @@ - + @@ -170,7 +170,7 @@ export default { }, { title: '来款项目', align: 'center', - width: 160, + width: 300, dataIndex: 'projectName', scopedSlots: { customRender: 'projectName' } }, { @@ -203,7 +203,7 @@ export default { }, { title: '来款项目', align: 'center', - width: 160, + width: 300, dataIndex: 'workGroup', scopedSlots: { customRender: 'text' } }, { diff --git a/src/views/statisticalReport/departmentStatistics/IndividualPaymentStatisticsList.vue b/src/views/statisticalReport/departmentStatistics/IndividualPaymentStatisticsList.vue index 87a0605..959e49c 100644 --- a/src/views/statisticalReport/departmentStatistics/IndividualPaymentStatisticsList.vue +++ b/src/views/statisticalReport/departmentStatistics/IndividualPaymentStatisticsList.vue @@ -156,7 +156,7 @@ export default { }, { title: '项目负责人', align: 'center', - width: 140, + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'projectName' } }, { @@ -186,7 +186,7 @@ export default { }, { title: '项目负责人', align: 'center', - width: 140, + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { diff --git a/src/views/statisticalReport/departmentStatistics/ProjectPaymentStatisticsList.vue b/src/views/statisticalReport/departmentStatistics/ProjectPaymentStatisticsList.vue index 55e505d..f234ddb 100644 --- a/src/views/statisticalReport/departmentStatistics/ProjectPaymentStatisticsList.vue +++ b/src/views/statisticalReport/departmentStatistics/ProjectPaymentStatisticsList.vue @@ -9,12 +9,12 @@ - + - + @@ -178,19 +178,19 @@ export default { }, { title: '项目负责人', align: 'center', - width: 160, + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { title: '来款项目', align: 'center', - width: 160, + width: 300, dataIndex: 'projectName', scopedSlots: { customRender: 'projectName' } }, { title: '来款单位', align: 'center', - width: 160, + width: 300, dataIndex: 'chargeCompanyTemporaryName', scopedSlots: { customRender: 'text' } }, { @@ -223,19 +223,19 @@ export default { }, { title: '项目负责人', align: 'center', - width: 160, + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { title: '来款项目', align: 'center', - width: 160, + width: 300, dataIndex: 'projectName', scopedSlots: { customRender: 'text' } }, { title: '来款单位', align: 'center', - width: 160, + width: 300, dataIndex: 'chargeCompanyTemporaryName', scopedSlots: { customRender: 'text' } }, { diff --git a/src/views/statisticalReport/enterprisePaymentStatistics/EnterprisePaymentStatisticsDetail.vue b/src/views/statisticalReport/enterprisePaymentStatistics/EnterprisePaymentStatisticsDetail.vue index 51924b1..50f03e8 100644 --- a/src/views/statisticalReport/enterprisePaymentStatistics/EnterprisePaymentStatisticsDetail.vue +++ b/src/views/statisticalReport/enterprisePaymentStatistics/EnterprisePaymentStatisticsDetail.vue @@ -9,7 +9,7 @@ - + @@ -72,7 +72,7 @@ :dataSource="dataSource" :pagination="ipagination" :loading="loading" - :scroll="{x: 1100}" + :scroll="{x: 1000}" @change="handleTableChange" :class="dataSource.length === 0 ? 'show-scroll' : ''" class="j-table-force-nowrap main-table"> @@ -101,7 +101,7 @@ :dataSource="footerDataSource" :showHeader="false" :pagination="false" - :scroll="{x: 1100}" + :scroll="{x: 1000}" class="j-table-force-nowrap footer-table"> @@ -161,6 +161,7 @@ export default { }, { title: '来款项目', align: 'center', + width: 300, dataIndex: 'projectName', scopedSlots: { customRender: 'projectName' } }, { @@ -193,6 +194,7 @@ export default { }, { title: '来款项目', align: 'center', + width: 300, dataIndex: 'projectName', scopedSlots: { customRender: 'text' } }, { diff --git a/src/views/statisticalReport/workingGroupPaymentStatistics/WorkingGroupPaymentStatisticsDetail.vue b/src/views/statisticalReport/workingGroupPaymentStatistics/WorkingGroupPaymentStatisticsDetail.vue index 8e32309..b89d462 100644 --- a/src/views/statisticalReport/workingGroupPaymentStatistics/WorkingGroupPaymentStatisticsDetail.vue +++ b/src/views/statisticalReport/workingGroupPaymentStatistics/WorkingGroupPaymentStatisticsDetail.vue @@ -9,7 +9,7 @@ - + @@ -73,6 +73,7 @@
+ @@ -173,12 +173,13 @@ export default { }, { title: '项目负责人', align: 'center', + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { title: '来款单位', align: 'center', - width: 160, + width: 300, dataIndex: 'chargeCompanyTemporaryName', scopedSlots: { customRender: 'text' } }, { @@ -214,17 +215,18 @@ export default { { title: '序号', dataIndex: 'title', - width: 100, + width: 60, align: 'center' }, { title: '项目负责人', align: 'center', + width: 300, dataIndex: 'principalName', scopedSlots: { customRender: 'text' } }, { title: '来款单位', align: 'center', - width: 160, + width: 300, dataIndex: 'chargeCompanyTemporaryName', scopedSlots: { customRender: 'text' } }, { diff --git a/src/views/statisticalReport/workingGroupPaymentStatistics/WorkingGroupPaymentStatisticsList.vue b/src/views/statisticalReport/workingGroupPaymentStatistics/WorkingGroupPaymentStatisticsList.vue index e9a7cd7..12c908f 100644 --- a/src/views/statisticalReport/workingGroupPaymentStatistics/WorkingGroupPaymentStatisticsList.vue +++ b/src/views/statisticalReport/workingGroupPaymentStatistics/WorkingGroupPaymentStatisticsList.vue @@ -9,7 +9,7 @@ - + @@ -34,7 +34,8 @@ - 查询 + 查询 重置 @@ -45,12 +46,15 @@
- 导出 + 导出 +
- +