Merge remote-tracking branch 'origin/branch20211008'

This commit is contained in:
fengachen
2021-10-21 09:42:12 +08:00
71 changed files with 1072 additions and 588 deletions
+4 -1
View File
@@ -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
}
+2 -2
View File
@@ -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: '快递',
+10 -4
View File
@@ -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)
+3 -3
View File
@@ -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()
+20 -9
View File
@@ -17,7 +17,7 @@
@paste.native.capture.prevent="handleOperate"
autocomplete="new-password"
label="旧密码">
<a-input-password type="password" placeholder="请输入旧密码" v-decorator="[ 'oldpassword', validatorRules.oldpassword]"/>
<a-input-password type="password" placeholder="请输入旧密码" :maxLength='30' v-decorator="[ 'oldpassword', validatorRules.oldpassword]"/>
</a-form-item>
<a-form-item
@@ -29,6 +29,7 @@
placeholder="请输入新密码"
@paste.native.capture.prevent="handleOperate"
autocomplete="new-password"
:maxLength='30'
v-decorator="[ 'password', validatorRules.password]"/>
</a-form-item>
@@ -42,6 +43,7 @@
placeholder="请确认新密码"
@paste.native.capture.prevent="handleOperate"
autocomplete="new-password"
:maxLength='30'
v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/>
</a-form-item>
@@ -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) {
+16
View File
@@ -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)
}
})
})
}
@@ -8,7 +8,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="企业名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName"></a-input>
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -8,17 +8,17 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入姓名" v-model="queryParam.name"></a-input>
<a-input placeholder="请输入姓名" v-model="queryParam.name" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="企业名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName"></a-input>
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入手机号" v-model="queryParam.phone"></a-input>
<a-input placeholder="请输入手机号" v-model="queryParam.phone" :maxLength='11'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -8,12 +8,12 @@
<a-row>
<a-col :xxl="4" :xl="10" :lg="12" :md="12" :sm="24">
<a-form-item label="合同编号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入合同编号" v-model="queryParam.contractNum"></a-input>
<a-input placeholder="请输入合同编号" v-model="queryParam.contractNum" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xxl="4" :xl="10" :lg="12" :md="12" :sm="24">
<a-form-item label="合同名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入合同名称" v-model="queryParam.contractName"></a-input>
<a-input placeholder="请输入合同名称" v-model="queryParam.contractName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="10" :lg="11" :md="12" :sm="24">
@@ -641,7 +641,7 @@ export default {
callback()
return
}
callback('请输入正确格式的金额')
callback('请输入合法的金额数字,最多2位小数,10位正数')
}
switch (rules.field) {
case 'contractAmount':
@@ -8,17 +8,17 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="合同编号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入合同编号" v-model="queryParam.contractNum"></a-input>
<a-input placeholder="请输入合同编号" v-model="queryParam.contractNum" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="合同名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入合同名称" v-model="queryParam.contractName"></a-input>
<a-input placeholder="请输入合同名称" v-model="queryParam.contractName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="关联项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入关联项目" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入关联项目" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -94,6 +94,7 @@
@click="toRevenueContractDetail(record.id, record.contractNum)"
v-if="record.chargeStatus === 1"
:value="text"
style="cursor: pointer"
:length="18"></j-ellipsis>
<j-ellipsis
class="primary-color"
@@ -323,7 +324,6 @@ export default {
/deep/ .aduit {
color: red !important;
cursor: pointer;
}
</style>
@@ -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: '创建时间',
@@ -8,18 +8,18 @@
<div class="part-title">
<div class="part-title-text">主体信息</div>
</div>
<a-row class="detail">
<template v-if="mainInfoShowList.length > 0">
<a-col :xxl="6" :xl="8" :sm="12" class="detail-item" v-for="(item, index) in mainInfoShowList"
:key="index">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col>
</a-row>
</a-col>
</template>
<a-empty v-else></a-empty>
</a-row>
<div class="detail" v-if="mainInfoShowList.length > 0">
<div class="detail-item"
v-for="(item, index) in mainInfoShowList"
:key="index">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}</a-col>
<a-col :sm="14" :xs="24" v-if="item.fieldName === 'rate'">{{ detailData[item.fieldName] }}%</a-col>
<a-col :sm="14" :xs="24" v-else>{{ detailData[item.fieldName] }}</a-col>
</a-row>
</div>
</div>
<a-empty v-else></a-empty>
</div>
<a-divider></a-divider>
@@ -28,18 +28,16 @@
<div class="part-title">
<div class="part-title-text">日期节点</div>
</div>
<a-row class="detail">
<template v-if="dateNodeShowList.length > 0">
<a-col :xxl="6" :xl="8" :sm="12" class="detail-item" v-for="(item, index) in dateNodeShowList"
:key="index">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col>
</a-row>
</a-col>
</template>
<a-empty v-else></a-empty>
</a-row>
<div class="detail" v-if="dateNodeShowList.length > 0">
<div class="detail-item" v-for="(item, index) in dateNodeShowList"
:key="index">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col>
</a-row>
</div>
</div>
<a-empty v-else></a-empty>
</div>
<a-divider></a-divider>
@@ -48,18 +46,16 @@
<div class="part-title">
<div class="part-title-text">账款信息</div>
</div>
<a-row class="detail">
<template v-if="accountInfoShowList.length > 0">
<a-col :xxl="6" :xl="8" :sm="12" class="detail-item" v-for="(item, index) in accountInfoShowList"
:key="index">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col>
</a-row>
</a-col>
</template>
<a-empty v-else></a-empty>
</a-row>
<div class="detail" v-if="accountInfoShowList.length > 0">
<div class="detail-item" v-for="(item, index) in accountInfoShowList"
:key="index">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col>
</a-row>
</div>
</div>
<a-empty v-else></a-empty>
</div>
<a-divider></a-divider>
@@ -68,18 +64,16 @@
<div class="part-title">
<div class="part-title-text">其他信息</div>
</div>
<a-row class="detail">
<template v-if="otherInfoShowList.length > 0">
<a-col :xxl="6" :xl="8" :sm="12" class="detail-item" v-for="(item, index) in otherInfoShowList"
:key="index">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col>
</a-row>
</a-col>
</template>
<a-empty v-else></a-empty>
</a-row>
<div class="detail" v-if="otherInfoShowList.length > 0">
<div class="detail-item" v-for="(item, index) in otherInfoShowList"
:key="index">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col>
</a-row>
</div>
</div>
<a-empty v-else></a-empty>
</div>
<a-divider></a-divider>
@@ -138,19 +132,17 @@
<div class="part-title">
<div class="part-title-text">存档信息</div>
</div>
<div class="detail">
<template v-if="detailData.listArchive && detailData.listArchive.length > 0">
<div class="detail-item" v-for="(item, index) in detailData.listArchive"
:key="index">
<a-row>
<a-col :sm="6" :xs="24">{{ item.createBy }}</a-col>
<a-col :sm="6" :xs="24">{{ item.createTime }}</a-col>
<a-col :sm="6" :xs="24">{{ item.contractStatus_dictText }}</a-col>
</a-row>
</div>
</template>
<a-empty v-else></a-empty>
<div class="detail" v-if="detailData.listArchive && detailData.listArchive.length > 0">
<div class="detail-item" v-for="(item, index) in detailData.listArchive"
:key="index">
<a-row>
<a-col :sm="6" :xs="24">{{ item.createBy }}</a-col>
<a-col :sm="6" :xs="24">{{ item.createTime }}</a-col>
<a-col :sm="6" :xs="24">{{ item.contractStatus_dictText }}</a-col>
</a-row>
</div>
</div>
<a-empty v-else></a-empty>
</div>
<a-divider></a-divider>
@@ -159,20 +151,18 @@
<div class="part-title">
<div class="part-title-text">审核记录</div>
</div>
<div class="detail">
<template v-if="detailData.listAudit && detailData.listAudit.length > 0">
<div class="detail-item" v-for="(item, index) in detailData.listAudit"
:key="index">
<a-row>
<a-col :sm="6" :xs="24">{{ item.createBy }}</a-col>
<a-col :sm="6" :xs="24">{{ item.createTime }}</a-col>
<a-col :sm="6" :xs="24">{{ item.contractStatus_dictText }}</a-col>
<a-col :sm="6" :xs="24">{{ item.explainRemarks }}</a-col>
</a-row>
</div>
</template>
<a-empty v-else></a-empty>
<div class="aduit-text" v-if="detailData.listAudit && detailData.listAudit.length > 0">
<div v-for="(item, index) in detailData.listAudit"
:key="index">
<a-row>
<a-col :sm="6" :xs="24">{{ item.createBy }}</a-col>
<a-col :sm="6" :xs="24">{{ item.createTime }}</a-col>
<a-col :sm="6" :xs="24">{{ item.contractStatus_dictText }}</a-col>
<a-col :sm="6" :xs="24">{{ item.explainRemarks }}</a-col>
</a-row>
</div>
</div>
<a-empty v-else></a-empty>
</div>
<!-- 状态非已存档显示-->
@@ -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;
}
</style>
@@ -42,6 +42,7 @@
:selected-company="selectedCompany"
:init-contacts="selectedContact"
:is-cancel="isCancel"
:disabled="isSaved"
v-decorator="['signedContactsId',validatorRules.signedContactsId]"></select-contacts>
</a-form-item>
</a-col>
@@ -78,7 +79,7 @@
</a-col>
<a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="税率" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row>
<a-row :gutter="10">
<a-col :span="20">
<a-input placeholder="请输入税率"
v-decorator="['rate',validatorRules.rate]"
@@ -215,6 +216,8 @@
<a-form-item label="打包年份" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="isPackage">
<j-year-date style="width:100%"
placeholder="请选择打包年份"
:disabledDate="disabledPackDate"
:disabled="isSaved"
v-decorator="['packYear',validatorRules.packYear]"></j-year-date>
</a-form-item>
</a-col>
@@ -260,6 +263,7 @@
<select-project-module ref="selectProjectModule"
@ok="selectProjectOk"
:depart-id="departId"
:principal="principal"
:pack="Number(model.pack)"
:contract-id="model.id"
:project-type="projectType"
@@ -307,6 +311,7 @@ import SelectMemberProjectModule from './SelectMemberProjectModule'
import { money } from '../../../../utils/validate'
import SelectWorkingGroupProjectModule from './SelectWorkingGroupProjectModule'
import { addZero } from '../../../../utils/util'
import moment from 'moment'
export default {
name: 'RevenueContractModule',
@@ -411,6 +416,7 @@ export default {
contractNum: '', // 合同号
isCancel: false, // 是否取消
departId: null, // 部门id普通项目列表查询
principal: null, // 负责人id,普通项目列表查询
projectType: null, //项目类型
signedContactId: null, //签订联系人正式id,用于新增工作组项目回显
newFormData: {} // 传入的数据
@@ -541,6 +547,8 @@ export default {
} else {
this.form.resetFields()
this.$refs.installmentForm.form.resetFields()
// 清除选中联系人相关信息
this.selectedContact = null
}
},
installmentFormOk(value) {
@@ -748,7 +756,7 @@ export default {
callback()
return
}
callback('请输入正确格式的金额')
callback('请输入合法的金额数字,最多2位小数,10位正数')
}
switch (rules.field) {
case 'contractAmount':
@@ -825,6 +833,7 @@ export default {
* 通过用户id获取用户信息
*/
getUserDetailByUserId() {
this.principal = this.model.principalId
let param = {
id: this.model.principalId
}
@@ -843,6 +852,14 @@ export default {
*/
selectProjectOk() {
this.$refs.associatedProject.loadAssociatedProject()
},
/**
* 限制可选打包年份范围---当年+1以及前推15年
* @param current
* @returns {boolean}
*/
disabledPackDate(current) {
return current < moment().subtract(15, 'year') || current > moment().add(1, 'year')
}
}
}
@@ -12,7 +12,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="会议名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName"></a-input>
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="12" :lg="11" :md="12" :sm="24">
@@ -34,8 +34,9 @@
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="年份">
<j-year-date style="width: 100%" placeholder="请选择年份" v-model="queryParam.particularYear"></j-year-date>
<a-form-item label="运行年份">
<j-year-date style="width: 100%" placeholder="请选择运行年份" v-model="queryParam.particularYear"
@change="dateChange"></j-year-date>
</a-form-item>
</a-col>
@@ -72,8 +73,7 @@
class="j-table-force-nowrap">
<template slot="text" slot-scope="text">
<j-ellipsis v-if="text && text.length > 0" :value="text" :length="18"></j-ellipsis>
<span v-else></span>
<j-ellipsis :value="text" :length="18"></j-ellipsis>
</template>
<!-- 打包需要发票到账开票邮寄状态-->
@@ -87,7 +87,7 @@
</a-table>
</div>
<!-- /表格区域-->
<!-- 添加会议参会人-->
<!-- 添加会议参会人-->
<add-meeting-person ref="modalForm" @ok="modalFormOk"></add-meeting-person>
</j-modal>
</template>
@@ -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)
}
}
}
@@ -109,10 +109,6 @@
</div>
<!-- 新增项目成员-->
<add-member-project ref="modalForm" @ok="modalFormOk"></add-member-project>
<template slot="footer">
<a-button @click="handleCancel">关闭</a-button>
<a-button @click="handleOk" type="primary" v-preventclick>确定</a-button>
</template>
</j-modal>
</template>
@@ -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'
@@ -20,6 +20,7 @@
v-model="queryParam.departId"
placeholder="请选择科室"
:disabled="pack === 0"
allowClear
@change="departChange">
</a-tree-select>
</a-form-item>
@@ -28,16 +29,24 @@
<a-form-item label="负责人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select v-model="queryParam.principalId"
show-search
allowClear
placeholder="请选择负责人"
option-filter-prop="children"
@change="principalChange"
:filter-option="filterOption">
<a-select-option v-for="item in userList" :key="item.id" :value="item.id">{{ item.realname }}</a-select-option>
<a-select-option v-for="item in userList" :key="item.id" :value="item.id">
{{ item.realname }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="运行年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-year-date style="width:100%" placeholder="请选择运行年份" v-model="queryParam.year"></j-year-date>
<j-year-date style="width:100%"
placeholder="请选择运行年份"
allowClear
v-model="queryParam.year"
@change="dateChange"></j-year-date>
</a-form-item>
</a-col>
@@ -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)
},
/**
@@ -13,12 +13,12 @@
<!-- 工作组项目查询-->
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="工作组项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入工作组项目" v-model="queryParam.workingGroupProject"></a-input>
<a-input placeholder="请输入工作组项目" v-model="queryParam.workingGroupProject" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="运行年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-year-date style="width:100%" placeholder="请选择运行年份" v-model="queryParam.year"></j-year-date>
<j-year-date style="width:100%" placeholder="请选择运行年份" v-model="queryParam.year" @change="dateChange"></j-year-date>
</a-form-item>
</a-col>
@@ -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)
},
}
}
</script>
+52 -13
View File
@@ -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;
}
}
}
@@ -8,17 +8,17 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="分标委名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入分标委名称" v-model="queryParam.fenBiaoWeiName"></a-input>
<a-input placeholder="请输入分标委名称" v-model="queryParam.fenBiaoWeiName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="企业名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName"></a-input>
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入姓名" v-model="queryParam.contactsName"></a-input>
<a-input placeholder="请输入姓名" v-model="queryParam.contactsName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -76,7 +76,7 @@
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, columnWidth: 80}"
class="j-table-force-nowrap">
<template slot="textRow" slot-scope="text">
<j-ellipsis :value="text" :length="20"></j-ellipsis>
<j-ellipsis :value="text" :length="12"></j-ellipsis>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, itemRecord">
@@ -20,12 +20,12 @@
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="项目名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入项目名称" v-model="queryParam.chargeProject"></a-input>
<a-input placeholder="请输入项目名称" v-model="queryParam.chargeProject" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName"></a-input>
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -35,7 +35,8 @@
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" icon="search" @click="searchQuery" v-has="'incomePaymentAndInvoiving:search'">查询</a-button>
<a-button type="primary" icon="search" @click="searchQuery"
v-has="'incomePaymentAndInvoiving:search'">查询</a-button>
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
</span>
</a-col>
@@ -46,8 +47,12 @@
<!-- 操作按钮区域-->
<div class="table-operator">
<a-button type="primary" icon="export" @click="handleExportXls('到账开票')" v-has="'incomePaymentAndInvoiving:export'">导出</a-button>
<a-button type="primary" icon="file-text" @click="batchInvoicing" v-has="'incomePaymentAndInvoiving:batchInvoicing'">合并开票</a-button>
<a-button type="primary" icon="export" @click="handleExportXls('到账开票')"
v-has="'incomePaymentAndInvoiving:export'">导出
</a-button>
<a-button type="primary" icon="file-text" @click="batchInvoicing"
v-has="'incomePaymentAndInvoiving:batchInvoicing'">合并开票
</a-button>
</div>
<!-- 操作按钮区域-end-->
@@ -98,7 +103,8 @@
<span slot="action" class="action-span-cell" slot-scope="text, record">
<a @click="incomePayment(record)" v-has="'incomePaymentAndInvoiving:incomePayment'">来款</a>
<a @click="invoicing(record)" :disabled="record.needInvoice === 0" v-has="'incomePaymentAndInvoiving:invoicing'">开票</a>
<a @click="invoicing(record)" :disabled="record.needInvoice === 0"
v-has="'incomePaymentAndInvoiving:invoicing'">开票</a>
</span>
</a-table>
</div>
@@ -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 = {
@@ -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('请输入到账金额')
}
@@ -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;
}
}
}
@@ -197,7 +197,7 @@ export default {
callback()
return
}
callback('请输入正确格式的金额')
callback('请输入合法的金额数字,最多2位小数,10位正数')
}
callback('请输入到账金额')
}
@@ -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
}
+167 -106
View File
@@ -5,7 +5,7 @@
<div class="part-title">
<div class="part-title-text">会议信息</div>
</div>
<a-row>
<a-row class="meeting-info flex-col">
<a-col :xxl="8" :xl="12" :sm="24">
<label class="label">会议名称</label><span>{{ currentMeetingInfo.meetingName }}</span>
</a-col>
@@ -66,10 +66,24 @@
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
<label>合作伙伴邀请码</label><span>{{ currentMeetingInfo.cooperativeInvitationCode }}</span>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<label>会议通知</label><span v-if="currentMeetingInfo.meetingFiles"><preview-file
</a-row>
<a-row class="flex-col">
<a-col>
<label class="label">会议通知</label><span v-if="currentMeetingInfo.meetingFiles"><preview-file
:file-id="currentMeetingInfo.meetingFiles"></preview-file></span>
</a-col>
</a-row>
<a-row class="meeting-textarea flex-col">
<label class="label">会议内容</label><span class="content">{{ currentMeetingInfo.meetingContent }}</span>
</a-row>
<a-row class="meeting-textarea flex-col">
<label class="label">备注</label><span class="content">{{ currentMeetingInfo.remark }}</span>
</a-row>
<div class="part-title">
<div class="part-title-text">报名信息</div>
</div>
<a-row class="flex-col">
<a-col :xxl="8" :xl="12" :sm="24">
<label>报名链接</label><span>{{ signUpHerfUrl }}</span>
</a-col>
@@ -87,18 +101,12 @@
v-model="currentMeetingInfo.paymentQrCode" disabled></j-image-upload>
</a-col>
</a-row>
<a-row v-show="currentMeetingInfo.meetingType === '2' ">
<label class="label">酒店联系人及手机号</label><span class="content"
v-for="(item,index) of currentMeetingInfo.hotelContactsList"
:key="index">{{
item.hotelContacts + ':' + item.hotelContactsPhone + ' '
}}</span>
</a-row>
<a-row>
<label class="label">会议内容</label><span class="content">{{ currentMeetingInfo.meetingContent }}</span>
</a-row>
<a-row>
<label class="label">备注</label><span class="content">{{ currentMeetingInfo.remark }}</span>
<a-row v-show="currentMeetingInfo.meetingType === '2' " class="flex-col">
<label class="label">酒店联系人及手机号</label>
<span class="content"
v-for="(item,index) of currentMeetingInfo.hotelContactsList"
:key="index">
{{ item.hotelContacts + ':' + item.hotelContactsPhone + ' ' }}</span>
</a-row>
<div class="part-title">
<div class="part-title-text">参会人员信息</div>
@@ -109,12 +117,12 @@
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="参会单位">
<a-input placeholder="请输入参会单位" v-model="queryParam.companyName"></a-input>
<a-input placeholder="请输入参会单位" v-model="queryParam.companyName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="参会人">
<a-input placeholder="请输入参会人" v-model="queryParam.companyContactName"></a-input>
<a-input placeholder="请输入参会人" v-model="queryParam.companyContactName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
@@ -146,7 +154,7 @@
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="身份">
<j-dict-select-tag v-model="queryParam.identity" placeholder="请选择身份"
<j-dict-select-tag v-model="queryParam.identity" placeholder="请选择身份" @input="selectIdentity"
dictCode="meet_identify_type"/>
</a-form-item>
</a-col>
@@ -160,7 +168,8 @@
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search" v-has:[authorCode.search]="'attendance:search'">查询</a-button>
<a-button type="primary" @click="searchQuery" icon="search"
v-has:[authorCode.search]="'attendance:search'">查询</a-button>
<a-button @click="searchReset" icon="reload" class="reset-button" style="margin-left: 8px">重置</a-button>
</span>
</a-col>
@@ -173,10 +182,14 @@
<div class="table-operator">
<!-- 变更去掉了此功能 暂时注释 2021-09-16 -->
<!-- <a-button type="primary" icon="import" @click="importParticipant">导入参会人</a-button>-->
<a-button type="primary" icon="plus" @click="addParticipant" v-has:[authorCode.add]="'attendance:add'">添加参会人</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('会员项目')" v-has:[authorCode.export]="'attendance:export'">导出
<a-button type="primary" icon="plus" @click="addParticipant" v-has:[authorCode.add]="'attendance:add'">添加参会人
</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('会员项目')"
v-has:[authorCode.export]="'attendance:export'">导出
</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has:[authorCode.batchDel]="'attendance:batchDel'">
批量删除
</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has:[authorCode.batchDel]="'attendance:batchDel'">批量删除</a-button>
<!--当会议费用为0不需要合并开票 -->
<!-- 变更将此功能添加到到账开票了 暂时注释 2021-09-16 -->
<!-- <a-button type="primary" @click="batchInvoice" v-show="currentMeetingInfo.meetingCosts !== 0">合并开票</a-button>-->
@@ -241,7 +254,7 @@
<span slot="action" slot-scope="text, record" class="action-span-cell">
<!-- 只有缴费方式为汇款并且上传了汇款凭证的的才会有审核按钮-->
<a @click="handleAudit(record)" v-if="record.payMode === 1 && record.paymentRecord"
<a @click="handleAudit(record)" v-if="(record.payMode === 1 || record.payMode === 2 ) && record.paymentRecord"
v-has:[authorCode.auditRecord]="'attendance:auditCredentials'">审核凭证</a>
<!-- 只有工作组会议与分标委会议才有审核报名信息-->
<a @click="handleAuditSignUp(record)"
@@ -268,9 +281,9 @@
</template>
<script>
import {JeroListMixin} from '@/mixins/JeroListMixin'
import {mixinDevice} from '@/utils/mixin'
import {getMeetInfoById, createQcCode} from '@api/incomeMeetingApi'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import { mixinDevice } from '@/utils/mixin'
import { getMeetInfoById, createQcCode } from '@api/incomeMeetingApi'
import JYearDate from '@comp/jero/JYearDate'
import JDictSelectTag from '@comp/dict/JDictSelectTag'
import ImportParticipantModal from '@views/incomePayments/meetManage/modules/ImportParticipantModal'
@@ -318,7 +331,7 @@ export default {
title: '参会单位',
align: 'center',
dataIndex: 'companyName',
scopedSlots: {customRender: 'htmlSlot'},
scopedSlots: { customRender: 'htmlSlot' },
width: 180
},
{
@@ -326,7 +339,7 @@ export default {
align: 'center',
dataIndex: 'companyContactName',
width: 160,
scopedSlots: {customRender: 'person'},
scopedSlots: { customRender: 'person' }
},
{
title: '应收金额',
@@ -357,35 +370,35 @@ export default {
align: 'center',
dataIndex: 'pack',
width: 100,
scopedSlots: {customRender: 'status-pack'}
scopedSlots: { customRender: 'status-pack' }
},
{
title: '需要发票',
align: 'center',
dataIndex: 'needInvoice',
width: 100,
scopedSlots: {customRender: 'status-pack'}
scopedSlots: { customRender: 'status-pack' }
},
{
title: '到账',
align: 'center',
width: 100,
dataIndex: 'inAccount',
scopedSlots: {customRender: 'status'}
scopedSlots: { customRender: 'status' }
},
{
title: '开票',
align: 'center',
width: 100,
dataIndex: 'makeInvoice',
scopedSlots: {customRender: 'status-bill'}
scopedSlots: { customRender: 'status-bill' }
},
{
title: '邮寄',
align: 'center',
width: 100,
dataIndex: 'mail',
scopedSlots: {customRender: 'status-mail'}
scopedSlots: { customRender: 'status-mail' }
},
{
title: '对接人',
@@ -397,67 +410,65 @@ export default {
align: 'center',
fixed: 'right',
width: 300,
scopedSlots: {customRender: 'action'}
scopedSlots: { customRender: 'action' }
}
],
// 权限编码
authorCode:{
},
authorCode: {},
// 其他会议的参会情况的权限编码
otherMeetingCode:{
search:'otherMeetingSituation:search',
add:'otherMeetingSituation:add',
export:'otherMeetingSituation:export',
batchDel:'otherMeetingSituation:batchDel',
edit:'otherMeetingSituation:edit',
delete:'otherMeetingSituation:delete',
auditRecord:'otherMeetingSituation:auditCredentials',
auditSignUpInfo:'otherMeetingSituation:auditSignUp'
otherMeetingCode: {
search: 'otherMeetingSituation:search',
add: 'otherMeetingSituation:add',
export: 'otherMeetingSituation:export',
batchDel: 'otherMeetingSituation:batchDel',
edit: 'otherMeetingSituation:edit',
delete: 'otherMeetingSituation:delete',
auditRecord: 'otherMeetingSituation:auditCredentials',
auditSignUpInfo: 'otherMeetingSituation:auditSignUp'
},
// 分标委会议的参会情况权限编码
committeeMeetingCode:{
search:'committeeMeetingSituation:search',
add:'committeeMeetingSituation:add',
export:'committeeMeetingSituation:export',
batchDel:'committeeMeetingSituation:batchDel',
edit:'committeeMeetingSituation:edit',
delete:'committeeMeetingSituation:delete',
auditRecord:'committeeMeetingSituation:auditCredentials',
auditSignUpInfo:'committeeMeetingSituation:auditSignUp'
committeeMeetingCode: {
search: 'committeeMeetingSituation:search',
add: 'committeeMeetingSituation:add',
export: 'committeeMeetingSituation:export',
batchDel: 'committeeMeetingSituation:batchDel',
edit: 'committeeMeetingSituation:edit',
delete: 'committeeMeetingSituation:delete',
auditRecord: 'committeeMeetingSituation:auditCredentials',
auditSignUpInfo: 'committeeMeetingSituation:auditSignUp'
},
// 工作组会议的参会情况的权限编码
workGroupMeetingCode:{
search:'workGroupMeetingSituation:search',
add:'workGroupMeetingSituation:add',
export:'workGroupMeetingSituation:export',
batchDel:'workGroupMeetingSituation:batchDel',
edit:'workGroupMeetingSituation:edit',
delete:'workGroupMeetingSituationS:delete',
auditRecord:'workGroupMeetingSituation:auditCredentials',
auditSignUpInfo:'workGroupMeetingSituation:auditSignUp'
workGroupMeetingCode: {
search: 'workGroupMeetingSituation:search',
add: 'workGroupMeetingSituation:add',
export: 'workGroupMeetingSituation:export',
batchDel: 'workGroupMeetingSituation:batchDel',
edit: 'workGroupMeetingSituation:edit',
delete: 'workGroupMeetingSituationS:delete',
auditRecord: 'workGroupMeetingSituation:auditCredentials',
auditSignUpInfo: 'workGroupMeetingSituation:auditSignUp'
},
// 国际研讨会的参会情况的权限编码
internalMeetingCode:{
search:'internalMeetingSituation:search',
add:'internalMeetingSituation:add',
export:'internalMeetingSituation:export',
batchDel:'internalMeetingSituation:batchDel',
edit:'internalMeetingSituation:edit',
delete:'internalMeetingSituation:delete',
auditRecord:'internalMeetingSituation:auditCredentials',
auditSignUpInfo:'internalMeetingSituation:auditSignUp',
internalMeetingCode: {
search: 'internalMeetingSituation:search',
add: 'internalMeetingSituation:add',
export: 'internalMeetingSituation:export',
batchDel: 'internalMeetingSituation:batchDel',
edit: 'internalMeetingSituation:edit',
delete: 'internalMeetingSituation:delete',
auditRecord: 'internalMeetingSituation:auditCredentials',
auditSignUpInfo: 'internalMeetingSituation:auditSignUp'
},
// 标协会议的参会情况的权限编码
standardsMeetingCode:{
search:'standardsMeetingSituation:search',
add:'standardsMeetingSituation:add',
export:'standardsMeetingSituation:export',
batchDel:'standardsMeetingSituation:batchDel',
edit:'standardsMeetingSituation:edit',
delete:'standardsMeetingSituation:delete',
auditRecord:'standardsMeetingSituation:auditCredentials',
auditSignUpInfo:'standardsMeetingSituation:auditSignUp'
standardsMeetingCode: {
search: 'standardsMeetingSituation:search',
add: 'standardsMeetingSituation:add',
export: 'standardsMeetingSituation:export',
batchDel: 'standardsMeetingSituation:batchDel',
edit: 'standardsMeetingSituation:edit',
delete: 'standardsMeetingSituation:delete',
auditRecord: 'standardsMeetingSituation:auditCredentials',
auditSignUpInfo: 'standardsMeetingSituation:auditSignUp'
},
disableMixinCreated: true,
// url: {
@@ -468,7 +479,7 @@ export default {
// importExcelUrl: '/meeting/payMeetingSituation/importExcel'
// },
// 其他会议的url
otherMeetingUrl:{
otherMeetingUrl: {
list: '/meeting/ohterMeetingSituation/page',
delete: '/meeting/ohterMeetingSituation/delete',
deleteBatch: '/meeting/ohterMeetingSituation/deleteBatch',
@@ -476,7 +487,7 @@ export default {
importExcelUrl: '/meeting/ohterMeetingSituation/importExcel'
},
// 分标委会议的url
committeeMeetingUrl:{
committeeMeetingUrl: {
list: '/meeting/committeeMeetingSituation/page',
delete: '/meeting/committeeMeetingSituation/delete',
deleteBatch: '/meeting/committeeMeetingSituation/deleteBatch',
@@ -484,7 +495,7 @@ export default {
importExcelUrl: '/meeting/committeeMeetingSituation/importExcel'
},
// 国际研讨会的url
internalMeetingUrl:{
internalMeetingUrl: {
list: '/meeting/internalMeetingSituation/page',
delete: '/meeting/internalMeetingSituation/delete',
deleteBatch: '/meeting/internalMeetingSituation/deleteBatch',
@@ -492,7 +503,7 @@ export default {
importExcelUrl: '/meeting/internalMeetingSituation/importExcel'
},
// 标协会议的url
standardsMeetingUrl:{
standardsMeetingUrl: {
list: '/meeting/standardsMeetingSituation/page',
delete: '/meeting/standardsMeetingSituation/delete',
deleteBatch: '/meeting/standardsMeetingSituation/deleteBatch',
@@ -500,7 +511,7 @@ export default {
importExcelUrl: '/meeting/standardsMeetingSituation/importExcel'
},
// 工作组会议的url
workGroupMeetingUrl:{
workGroupMeetingUrl: {
list: '/meeting/workGroupMeetingSituation/page',
delete: '/meeting/workGroupMeetingSituation/delete',
deleteBatch: '/meeting/workGroupMeetingSituation/deleteBatch',
@@ -589,25 +600,36 @@ export default {
}
},
// eslint-disable-next-line
url(){
switch (this.$route.query.meetingType){
case '1': return this.workGroupMeetingUrl
case '2': return this.standardsMeetingUrl
case '3': return this.internalMeetingUrl
case '4': return this.otherMeetingUrl
case '5': return this.committeeMeetingUrl
url() {
switch (this.$route.query.meetingType) {
case '1':
return this.workGroupMeetingUrl
case '2':
return this.standardsMeetingUrl
case '3':
return this.internalMeetingUrl
case '4':
return this.otherMeetingUrl
case '5':
return this.committeeMeetingUrl
}
},
// 报名链接
signUpHerfUrl() {
return `${window._CONFIG['singUpQRCodeURL']}?id=${this.$route.query.id}`
return `${ window._CONFIG['singUpQRCodeURL'] }?id=${ this.$route.query.id }`
},
// 签到地址
// 签到地址 只给一个会议id
signInUrl() {
return `${window._CONFIG['signInUrl']}?id=${this.$route.query.id}`
return this.$route.query.id
}
},
methods: {
selectIdentity(){
console.log(this.queryParam.identity)
if(this.queryParam.identity !== '1'){
delete this.queryParam.guestType
}
},
/*
* 审核
* */
@@ -742,7 +764,7 @@ export default {
generateQRCode(params) {
return new Promise(resolve => {
let code = ''
createQcCode({contact: params}).then(res => {
createQcCode({ contact: params }).then(res => {
if (res.success) {
code = res.result
} else {
@@ -759,7 +781,7 @@ export default {
toSignUpDetail(record) {
this.$router.push({
path: '/incomePayments/meetManage/SignUpInfoDetail',
query: {id: record.id, meetingType: this.currentMeetingInfo.meetingType,}
query: { id: record.id, meetingType: this.currentMeetingInfo.meetingType }
})
},
/*
@@ -789,13 +811,23 @@ export default {
* 通过会议类型设置权限编码
* type 会议类型
* */
setCodeByMeetingType(type){
switch (type){
case '1':this.authorCode = Object.assign({},this.workGroupMeetingCode);break
case '2':this.authorCode = Object.assign({},this.standardsMeetingCode);break
case '3':this.authorCode = Object.assign({},this.internalMeetingCode);break
case '4':this.authorCode = Object.assign({},this.otherMeetingCode);break
case '5':this.authorCode = Object.assign({},this.committeeMeetingCode);break
setCodeByMeetingType(type) {
switch (type) {
case '1':
this.authorCode = Object.assign({}, this.workGroupMeetingCode)
break
case '2':
this.authorCode = Object.assign({}, this.standardsMeetingCode)
break
case '3':
this.authorCode = Object.assign({}, this.internalMeetingCode)
break
case '4':
this.authorCode = Object.assign({}, this.otherMeetingCode)
break
case '5':
this.authorCode = Object.assign({}, this.committeeMeetingCode)
break
}
}
}
@@ -805,10 +837,39 @@ export default {
<style scoped lang="less">
@import '~@assets/less/common.less';
.meeting-info {
.ant-col {
span {
display: inline-block;
word-break: keep-all;
white-space: nowrap;
max-width: calc(100% - 100px);
overflow: hidden;
text-overflow: ellipsis;
}
}
}
//会议内容、备注的样式
.meeting-textarea {
display: flex;
label {
flex-shrink: 0;
}
}
.flex-col {
.ant-col {
display: flex;
}
}
.ant-row {
line-height: 3;
.ant-col {
label {
color: #999;
}
@@ -28,6 +28,49 @@
</a-row>
<!-- 选择嘉宾和内部企业缴费方式为打包也不显示-->
<!-- 会议费为0不显示 -->
<template v-if="!meetingCostBool">
<div class="item-title" v-if="identifyType === 2 && !payModeBool">缴费信息</div>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2">
<a-form-item label="缴费方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['payMode',validatorRules.payMode]" :disabled="isEditBool" @change="changePayMode">
<a-radio :value="1">汇款</a-radio>
<a-radio :value="2">线上缴费</a-radio>
<a-radio :value="3">打包</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<!-- 选择嘉宾和内部企业缴费方式为打包也不显示-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool ">
<a-form-item label="需要发票" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag style="width: 100%" dict-code="invoice_type"
v-decorator="['needInvoice',validatorRules.needInvoice]"
:trigger-change="true"
:disabled="isEditBool"
placeholder="请选择发票类型"></j-dict-select-tag>
</a-form-item>
</a-col>
<!-- 选择嘉宾和内部企业缴费方式为打包也不显示-->
<!-- <a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool ">-->
<!-- <a-form-item label="付款凭证" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <j-image-upload :disabled="isEditBool" v-decorator="['paymentRecord']" :return-id="true"></j-image-upload>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!--缴费方式为线上的需要上传 -->
<!-- 暂时注释 2021 10 14 author: fac 需求说是 不在报名和添加参会人的时候去上传 缴费凭证和订单后四位-->
<!-- <a-col :xxl="8" :xl="12" :sm="24" v-if="onlinePayModeBool">-->
<!-- <a-form-item label="订单号后四位" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <a-input placeholder="请输入订单号后四位"-->
<!-- :maxLength='4'-->
<!-- :disabled="isEditBool"-->
<!-- @change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"-->
<!-- v-decorator="[ 'orderCode',validatorRules.orderCode]"></a-input>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
</a-row>
</template>
<!-- 选择嘉宾和内部企业缴费方式为打包也不显示-->
<!-- 会议费为0不显示 -->
<template v-if="!meetingCostBool">
<div class="item-title" v-if="identifyType === 2 && !payModeBool ">邮寄信息</div>
<a-row :gutter="24">
@@ -36,9 +79,11 @@
<select-contacts :selected-company="selectedCompany"
:init-contacts="selectPostPerson"
:disabled="isEditBool"
:is-limit="true"
placeholder="请选择邮寄联系人"
v-decorator="['postContactId',validatorRules.postContactId]"
:maxLength='50'
@change="changePost"
ref="selectMailContacts"
@ok="addContactsOk"></select-contacts>
</a-form-item>
@@ -64,49 +109,7 @@
</a-row>
</template>
<!-- 选择嘉宾和内部企业缴费方式为打包也不显示-->
<!-- 会议费为0不显示 -->
<template v-if="!meetingCostBool">
<div class="item-title" v-if="identifyType === 2 && !payModeBool">缴费信息</div>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2">
<a-form-item label="缴费方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['payMode',validatorRules.payMode]" :disabled="isEditBool" @change="changePayMode">
<a-radio :value="1">汇款</a-radio>
<a-radio :value="2">线上缴费</a-radio>
<a-radio :value="3">打包</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<!-- 选择嘉宾和内部企业缴费方式为打包也不显示-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool ">
<a-form-item label="需要发票" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag style="width: 100%" dict-code="invoice_type"
v-decorator="['needInvoice',validatorRules.needInvoice]"
:trigger-change="true"
:disabled="isEditBool"
placeholder="请选择发票类型"></j-dict-select-tag>
</a-form-item>
</a-col>
<!-- 选择嘉宾和内部企业缴费方式为打包也不显示-->
<!-- <a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool ">-->
<!-- <a-form-item label="付款凭证" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <j-image-upload :disabled="isEditBool" v-decorator="['paymentRecord']" :return-id="true"></j-image-upload>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!--缴费方式为线上的需要上传 -->
<!-- 暂时注释 2021 10 14 author: fac 需求说是 不在报名和添加参会人的时候去上传 缴费凭证和订单后四位-->
<!-- <a-col :xxl="8" :xl="12" :sm="24" v-if="onlinePayModeBool">-->
<!-- <a-form-item label="订单号后四位" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <a-input placeholder="请输入订单号后四位"-->
<!-- :maxLength='4'-->
<!-- :disabled="isEditBool"-->
<!-- @change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"-->
<!-- v-decorator="[ 'orderCode',validatorRules.orderCode]"></a-input>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
</a-row>
</template>
</a-form>
</template>
@@ -117,6 +120,7 @@ import SelectContacts from '@comp/company/SelectContacts'
import pick from 'lodash.pick'
import JDictSelectTag from '@comp/dict/JDictSelectTag'
import moment from 'moment'
import {getContactsById} from '@api/api'
export default {
name: 'OtherMeetingForm',
@@ -222,13 +226,24 @@ export default {
}
})
},
/*
* 选择了联系人后给邮寄联系人和地址赋值
* */
setAddressVal(val) {
val = Object.assign({}, {postContactId: val.id, postContactAddress: val.contactAddress})
val = Object.assign({}, {postContactId: val.id, postContactAddress: val.contactAddress,postCode:val.postalCode})
this.$nextTick(() => {
this.form.setFieldsValue(pick(val, 'postContactId', 'postContactAddress'))
this.form.setFieldsValue(pick(val, 'postContactId', 'postContactAddress','postCode'))
})
},
/*
* 选择联系人之后地址邮编复制
* */
changePost(val){
getContactsById({id:val}).then(res => {
if(res.success){
this.setAddressVal(res.result)
}
})
},
/*
@@ -248,8 +263,10 @@ export default {
changePayMode(e) {
if (e.target.value === 3) {
this.payModeBool = true
this.$emit('isPack',true)
} else {
this.payModeBool = false
this.$emit('isPack',false)
}
// 缴费方式为线上 要输入订单后四位
if(e.target.value === 2){
@@ -174,7 +174,7 @@ export default {
if(value && money(value)){
callback()
}else {
callback('请输入正确格式的金额,')
callback('请输入合法的金额数字,最多2位小数,10位正数')
}
},
/*
@@ -29,7 +29,7 @@
</a-row>
<a-row :gutter="24">
<a-col :xxl="18" :xl="18" :sm="24">
<a-col>
<a-form-item label="个人简介" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
:disabled="isEditBool"
@@ -50,7 +50,8 @@
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否用餐" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['haveMeals',validatorRules.haveMealBools]" @change="selecthaveMealBools">
<a-radio-group :disabled="isEditBool" v-decorator="['haveMeals',validatorRules.haveMealBools]"
@change="selecthaveMealBools">
<a-radio :value="1"></a-radio>
<a-radio :value="0"></a-radio>
</a-radio-group>
@@ -74,12 +75,15 @@
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否住酒店" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['checkInHotel',validatorRules.checkinHotel]" @change="changeHotel">
<a-radio-group :disabled="isEditBool" v-decorator="['checkInHotel',validatorRules.checkinHotel]"
@change="changeHotel">
<a-radio :value="1"></a-radio>
<a-radio :value="0"></a-radio>
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<!--入住酒店选择是才显示-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="inHotelBool">
<a-form-item label="入住酒店时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -95,7 +99,8 @@
</a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-if="inHotelBool">
<a-form-item label="房型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="isEditBool" @change="event => event.target.value = event.target.value.trim()" :maxLength="50"
<a-input :disabled="isEditBool" @change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
v-decorator="['roomLayout']"
placeholder="请输入房型"></a-input>
</a-form-item>
@@ -115,7 +120,8 @@
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool">
<a-form-item label="抵达时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date :disabled="isEditBool" placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']"
@@ -133,7 +139,6 @@
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool">
<a-form-item label="到达班次" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="isEditBool" placeholder="请输入到达班次"
@@ -145,12 +150,15 @@
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否需要送站" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['deliveryStation',validatorRules.deliveryStation]" @change="changeSend">
<a-radio-group :disabled="isEditBool" v-decorator="['deliveryStation',validatorRules.deliveryStation]"
@change="changeSend">
<a-radio :value="1"></a-radio>
<a-radio :value="0"></a-radio>
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<!--送站选择是才显示-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="sendBool">
<a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -191,8 +199,8 @@
</a-row>
<!--特邀嘉宾没有备注-->
<a-row :gutter="24" v-if="guestType!== 3">
<a-col :xxl="18" :xl="18" :sm="24">
<a-row v-if="guestType!== 3">
<a-col>
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
:disabled="isEditBool"
@@ -223,20 +231,24 @@ export default {
desription: '其他会议的参会情况的表单',
form: this.$form.createForm(this),
labelCol: {
xs: {span: 24},
sm: {span: 6}
xs: { span: 24 },
sm: { span: 6 }
},
wrapperCol: {
xs: {span: 24},
sm: {span: 18}
xs: { span: 24 },
sm: { span: 18 }
},
remarksLabelCol: {
xs: {span: 24},
sm: {span: 3}
xs: { span: 24 },
sm: { span: 6 },
xxl: { span: 2 },
xl: { span: 3 }
},
remarksWrapperCol: {
xs: {span: 24},
sm: {span: 21}
xs: { span: 24 },
sm: { span: 18 },
xxl: { span: 22 },
xl: { span: 21 }
},
selectedCompany: null,
// 是否用餐
@@ -248,26 +260,26 @@ export default {
// 是否接站
pickUpBool: false,
// 是否可编辑
isEditBool:false,
isEditBool: false,
validatorRules: {
haveMealBools: {
rules: [{required: true, message: '请选择是否用餐'}],
rules: [{ required: true, message: '请选择是否用餐' }],
validateTrigger: 'change'
},
huiPeople: {
rules: [{required: true, message: '请选择是否回民'}],
rules: [{ required: true, message: '请选择是否回民' }],
validateTrigger: 'change'
},
checkinHotel: {
rules: [{required: true, message: '请选择是否入住酒店'}],
rules: [{ required: true, message: '请选择是否入住酒店' }],
validateTrigger: 'change'
},
pickUp: {
rules: [{required: true, message: '请选择是否接站'}],
rules: [{ required: true, message: '请选择是否接站' }],
validateTrigger: 'change'
},
deliveryStation: {
rules: [{required: true, message: '请选择是否送站'}],
rules: [{ required: true, message: '请选择是否送站' }],
validateTrigger: 'change'
}
}
@@ -305,7 +317,7 @@ export default {
if (!err) {
this.$emit('formData', values)
} else {
this.$emit('formData', {stop: true})
this.$emit('formData', { stop: true })
}
})
},
@@ -363,7 +375,7 @@ export default {
/*
* 编辑回显值
* */
setFormVal(record){
setFormVal(record) {
// 回显邮寄联系人
this.isEditBool = record.checkResult === 1
// this.selectPostPerson = {
@@ -371,19 +383,19 @@ export default {
// name:record.postContactName
// }
// 是否用餐的显示
if(record.haveMeals === 1){
this.haveMealBool = true
this.$nextTick(() => {
// 是否回民回显
this.form.setFieldsValue(pick(record,
'huiPeople',
))
})
}else if(record.haveMeals === 0){
this.haveMealBool = false
}
// 是否住酒店
if(record.checkInHotel === 1){
if (record.haveMeals === 1) {
this.haveMealBool = true
this.$nextTick(() => {
// 是否回民回显
this.form.setFieldsValue(pick(record,
'huiPeople'
))
})
} else if (record.haveMeals === 0) {
this.haveMealBool = false
}
// 是否住酒店
if (record.checkInHotel === 1) {
this.inHotelBool = true
// 入住酒店回显 离店时间回显 房型回显
this.$nextTick(() => {
@@ -391,14 +403,14 @@ export default {
this.form.setFieldsValue(pick(record,
'inHotelTime',
'outHotelTime',
'roomLayout',
'roomLayout'
))
})
}else if(record.checkInHotel === 0){
} else if (record.checkInHotel === 0) {
this.inHotelBool = false
}
// 是否接站
if(record.pickUp === 1){
if (record.pickUp === 1) {
this.pickUpBool = true
// 抵达时间 到达站 到达班次
this.$nextTick(() => {
@@ -406,27 +418,27 @@ export default {
this.form.setFieldsValue(pick(record,
'arrivalTime',
'destination',
'arrivalShift',
'arrivalShift'
))
})
}else if(record.pickUp === 0){
} else if (record.pickUp === 0) {
this.pickUpBool = false
}
// 是否送站
if(record.deliveryStation === 1){
if (record.deliveryStation === 1) {
this.sendBool = true
this.$nextTick(() => {
// 离开时间 离开站 离开班次
this.form.setFieldsValue(pick(record,
'departureTime',
'departureStation',
'departureShift',
'departureShift'
))
})
}else if(record.pickUp === 0){
} else if (record.pickUp === 0) {
this.sendBool = false
}
console.log(record,'record')
console.log(record, 'record')
this.$nextTick(() => {
// 身份类型是嘉宾 内部企业只渲染 住店 抵达时间 离开时间
this.form.setFieldsValue(pick(record,
@@ -444,7 +456,7 @@ export default {
})
},
}
}
}
</script>
@@ -9,7 +9,7 @@
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="会员项目名称">
<a-input placeholder="请输入会员项目名称" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入会员项目名称" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -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() {
@@ -8,7 +8,7 @@
<a-row :gutter="24">
<a-col :xxl="6" :xl="9" :sm="24">
<a-form-item label="标协会员项目名称">
<a-input placeholder="请输入会员项目名称" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入会员项目名称" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -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"
></select-contacts>
</a-form-item>
@@ -203,11 +204,11 @@
</a-row>
</a-form>
</a-spin>
<contact-management-module
ref="contactForm"
is-company-disabled
:selected-company="selectedCompany"
></contact-management-module>
<!-- <contact-management-module-->
<!-- ref="contactForm"-->
<!-- is-company-disabled-->
<!-- :selected-company="selectedCompany"-->
<!-- ></contact-management-module>-->
</j-modal>
</template>
@@ -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()
},
/*
+6 -6
View File
@@ -9,7 +9,7 @@
<a-row :gutter="24">
<a-col :xl="7" :lg="8" :md="8" :sm="24">
<a-form-item label="来款项目">
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="7" :lg="8" :md="8" :sm="24">
@@ -19,7 +19,7 @@
</a-col>
<a-col :xl="7" :lg="8" :md="8" :sm="24">
<a-form-item label="来款单位">
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyName"></a-input>
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
</a-row>
@@ -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' }
},
+8 -8
View File
@@ -9,17 +9,17 @@
<a-row :gutter="24">
<a-col :xl="5" :lg="8" :md="8" :sm="24">
<a-form-item label="合同编号">
<a-input placeholder="请输入来款项目" v-model="queryParam.contractNum"></a-input>
<a-input placeholder="请输入来款项目" v-model="queryParam.contractNum" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="5" :lg="8" :md="8" :sm="24">
<a-form-item label="合同名称">
<a-input placeholder="请输入来款单位" v-model="queryParam.contractName"></a-input>
<a-input placeholder="请输入来款单位" v-model="queryParam.contractName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="5" :lg="12" :md="16" :sm="24">
<a-form-item label="签订单位">
<a-input placeholder="请输入签订单位" v-model="queryParam.signedCompanyTemporaryName"></a-input>
<a-input placeholder="请输入签订单位" v-model="queryParam.signedCompanyTemporaryName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="5" :lg="8" :md="8" :sm="24">
@@ -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' }
},
@@ -9,7 +9,7 @@
<a-row :gutter="24">
<a-col :xl="6" :lg="8" :md="8" :sm="24">
<a-form-item label="模板CODE">
<a-input placeholder="请输入模板CODE" v-model="queryParam.templateCode"></a-input>
<a-input placeholder="请输入模板CODE" v-model="queryParam.templateCode" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="8" :md="8" :sm="24">
+1 -1
View File
@@ -9,7 +9,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="企业名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入企业名称" v-model="queryParam.companyTemporaryName"></a-input>
<a-input placeholder="请输入企业名称" v-model="queryParam.companyTemporaryName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -39,7 +39,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="项目名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入项目名称" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入项目名称" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -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)
})
@@ -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('请输入来款金额')
}
@@ -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('请输入开票金额')
}
@@ -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('请输入打包费用总计')
},
@@ -15,7 +15,7 @@
<a-row>
<a-col :xl="8" :lg="9" :md="10" :sm="24">
<a-form-item label="项目名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入项目名称" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入项目名称" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="8" :lg="9" :md="10" :sm="24">
@@ -12,7 +12,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="会议名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName"></a-input>
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="10" :lg="12" :md="12" :sm="24">
@@ -8,12 +8,12 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款项目" v-model="queryParam.chargeProject"></a-input>
<a-input placeholder="请输入来款项目" v-model="queryParam.chargeProject" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName"></a-input>
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -29,7 +29,7 @@
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入联系人" v-model="queryParam.contactsTemporaryName"></a-input>
<a-input placeholder="请输入联系人" v-model="queryParam.contactsTemporaryName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -8,7 +8,7 @@
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="会议名称">
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName"></a-input>
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="10" :lg="11" :md="12" :sm="24">
+1 -1
View File
@@ -8,7 +8,7 @@
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="会议名称">
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName"></a-input>
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="10" :lg="11" :md="12" :sm="24">
@@ -41,7 +41,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="成员单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入成员单位" v-model="queryParam.chargeCompanyTemporaryName"></a-input>
<a-input placeholder="请输入成员单位" v-model="queryParam.chargeCompanyTemporaryName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -8,7 +8,7 @@
<a-row>
<a-col :xxl="4" :xl="10" :lg="12" :md="12" :sm="24">
<a-form-item label="文件名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入文件名称" v-model="queryParam.fileName"></a-input>
<a-input placeholder="请输入文件名称" v-model="queryParam.fileName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<span class="table-page-search-submitButtons">
@@ -8,7 +8,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="工作组项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入工作组项目" v-model="queryParam.workingGroupProject"></a-input>
<a-input placeholder="请输入工作组项目" v-model="queryParam.workingGroupProject" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -42,7 +42,7 @@
<company-select placeholder="请选择来款企业"
v-decorator="['chargeCompany',validatorRules.chargeCompany]"
@change="companyChange"
:disabled="disabledChargeCompany"
:disabled="disabledCompany"
:maxLength='50'>
</company-select>
</a-form-item>
@@ -111,7 +111,7 @@
<a-form-item label="来款方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<span v-if="defaultChargeWay === 2 && chargeWayType === 2">合同</span>
<a-radio-group v-decorator="['chargeWay',validatorRules.chargeWay]" @change="handlechargeWayChange"
v-else>
v-else :disabled="isAssociatedContract">
<a-radio :value="1"></a-radio>
<a-radio :value="2">合同</a-radio>
<a-radio :value="3">收费通知</a-radio>
@@ -123,7 +123,7 @@
<a-input placeholder="请输入合同号"
v-decorator="['contractNum',validatorRules.contractNum]"
:maxLength='50'
:disabled="isContractNumDisabled"
:disabled="isContractNumDisabled || isAssociatedContract"
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
@@ -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('请输入应收金额')
}
}
}
@@ -28,7 +28,7 @@
<a-form-item label="成员单位" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<company-select placeholder="请选择成员单位"
v-decorator="['chargeCompany',validatorRules.chargeCompany]"
:disabled="disabledChargeCompany"
:disabled="disabledCompany"
@change="companyChange"
:maxLength='50'>
</company-select>
@@ -89,13 +89,23 @@
<a-form-item label="来款方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<span v-if="defaultChargeWay === 2">合同</span>
<a-radio-group v-decorator="['chargeWay',validatorRules.chargeWay]" @change="handlechargeWayChange"
v-else>
v-else :disabled="isAssociatedContract">
<a-radio :value="1"></a-radio>
<a-radio :value="2">合同</a-radio>
<a-radio :value="3">收费通知</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<!-- 收入合同处新增工作组项目需要显示默认的来款用途在工作组新增的时候为后端写死-->
<a-col :xl="12" :sm="24" v-if="defaultChargeWay === 2">
<a-form-item label="来款用途" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag v-decorator="['chargeUse', {initialValue: 1}]"
:triggerChange="true"
:disabled="true"
placeholder="请选择来款用途"
dictCode="payment_charge_use"/>
</a-form-item>
</a-col>
<a-col :xl="12" :sm="24" v-if="chargeWayType === 3">
<a-form-item label="收费通知号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group
@@ -131,7 +141,7 @@
<a-input placeholder="请输入合同号"
v-decorator="['contractNum',validatorRules.contractNum]"
:maxLength='50'
:disabled="isContractNumDisabled"
:disabled="isContractNumDisabled || isAssociatedContract"
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
@@ -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('请输入应收金额')
},
@@ -333,7 +333,7 @@ export default {
callback()
return
}
callback('请输入正确格式的金额')
callback('请输入合法的金额数字,最多2位小数,10位正数')
}
callback()
},
+40 -16
View File
@@ -26,7 +26,7 @@
<a-row :gutter="24">
<a-col :span="12">
<label>负责人</label>
<span>{{ currentMeetingInfo.directorName }}</span>
<span>{{ currentMeetingInfo.directorName }} {{currentMeetingInfo.directorPhone}}</span>
</a-col>
<a-col :span="12">
<label>预计参加人数</label>
@@ -36,7 +36,7 @@
<a-row :gutter="24">
<a-col :span="12">
<label>召开时间</label>
<span>{{holdtime}}</span>
<span>{{ holdtime }}</span>
</a-col>
<a-col :span="12">
<label>会议内容</label>
@@ -46,7 +46,7 @@
<a-row :gutter="24">
<a-col :span="12">
<label>召开地点</label>
<span>{{holdAddress}}</span>
<span>{{ holdAddress }}</span>
</a-col>
<a-col :span="12">
<label>备注</label>
@@ -60,7 +60,8 @@
</a-col>
<a-col :span="12" style="display: flex">
<label>附件</label>
<preview-file :file-id="currentMeetingInfo.meetingFiles" v-if="currentMeetingInfo.meetingFiles"></preview-file>
<preview-file :file-id="currentMeetingInfo.meetingFiles"
v-if="currentMeetingInfo.meetingFiles"></preview-file>
</a-col>
</a-row>
<a-row>
@@ -69,7 +70,8 @@
<a-row>
<img :src="singUpQRCode" class="qr-code"/>
</a-row>
<a-button type="primary" style="margin-left: 19px;" @click="toSingUpPage">立即报名</a-button>
<a-button type="primary" style="margin-left: 19px;" @click="toSingUpPage" v-if="!invalidationBool">立即报名
</a-button>
</section>
</div>
</section>
@@ -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)
+27 -7
View File
@@ -36,7 +36,7 @@
<a-row :gutter="24">
<a-col :span="12">
<label>负责人</label>
<span>{{ currentMeetingInfo.directorName }}</span>
<span>{{ currentMeetingInfo.directorName }}({{ currentMeetingInfo.directorPhone }})</span>
</a-col>
<a-col :span="12">
<label>预计参加人数</label>
@@ -146,7 +146,7 @@
</a-col>
<!--邀请码选择是出现填写邀请码 否选择身份-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="meetingType === '3' && !inviteCodeBool ">
<a-col :xxl="8" :xl="12" :sm="24" v-if="meetingType === '3' && identityBool ">
<a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['identity',validatorRules.identify]" @change="changeIdentify">
<a-radio :value="2">参会人</a-radio>
@@ -175,13 +175,14 @@
<template v-if="meetingType !== '3' ">
<other-meeting-form ref="formother" :selected-company="selectedCompany"
:meeting-cost-bool="meetingCostBool"
:identify-type="identifyType" @formData="getFormData"></other-meeting-form>
:identify-type="identifyType" @formData="getFormData" @isPack="isPack"></other-meeting-form>
</template>
<!--国际研讨会参会人与内部企业的显示 默认不展示 -->
<template v-if="meetingType === '3' && identifyType !== 1 && identifyType !== null ">
<other-meeting-form ref="formother" :meeting-type="meetingType" :selected-company="selectedCompany"
:meeting-cost-bool="meetingCostBool"
@isPack="isPack"
:identify-type="identifyType" @formData="getFormData"></other-meeting-form>
</template>
<!-- 国际研讨会身份选择嘉宾 并且是VIP-->
@@ -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:
@@ -10,12 +10,12 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName"></a-input>
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -96,6 +96,7 @@
<!-- table表格区域-->
<div>
<!-- :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"-->
<a-table
ref="table"
size="middle"
@@ -107,7 +108,6 @@
:pagination="ipagination"
:loading="loading"
@change="handleTableChange"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:class="dataSource.length === 0 ? 'show-scroll' : ''"
class="j-table-force-nowrap main-table">
@@ -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)
},
}
}
}
</script>
@@ -9,7 +9,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -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' }
}, {
@@ -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' }
}, {
@@ -9,12 +9,12 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName"></a-input>
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -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' }
}, {
@@ -9,7 +9,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName"></a-input>
<a-input placeholder="请输入来款项目" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -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' }
}, {
@@ -9,7 +9,7 @@
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="来款单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName"></a-input>
<a-input placeholder="请输入来款单位" v-model="queryParam.chargeCompanyTemporaryName" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">-->
@@ -73,6 +73,7 @@
<!-- table表格区域-->
<div>
<!-- :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"-->
<a-table
size="middle"
ref="table"
@@ -84,7 +85,6 @@
:loading="loading"
:scroll="{x: 1000}"
@change="handleTableChange"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:class="dataSource.length === 0 ? 'show-scroll' : ''"
class="j-table-force-nowrap main-table">
@@ -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' }
}, {
@@ -9,7 +9,7 @@
<a-row>
<a-col :xxl="4" :xl="10" :lg="12" :md="12" :sm="24">
<a-form-item label="工作组" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入工作组" v-model="queryParam.workGroup"></a-input>
<a-input placeholder="请输入工作组" v-model="queryParam.workGroup" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :xxl="4" :xl="10" :lg="12" :md="12" :sm="24">
@@ -34,7 +34,8 @@
</a-col>
<a-col :xl="4" :lg="7" :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" icon="search" @click="searchQuery" v-has="'workingGroupPaymentStatistics:search'">查询</a-button>
<a-button type="primary" icon="search" @click="searchQuery"
v-has="'workingGroupPaymentStatistics:search'">查询</a-button>
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
</span>
</a-col>
@@ -45,12 +46,15 @@
<!-- 操作按钮区域-->
<div class="table-operator">
<a-button type="primary" icon="export" @click="handleExportXls('工作组来款统计')" v-has="'workingGroupPaymentStatistics:export'">导出</a-button>
<a-button type="primary" icon="export" @click="handleExportXls('工作组来款统计')"
v-has="'workingGroupPaymentStatistics:export'">导出
</a-button>
</div>
<!-- 操作按钮区域-end-->
<!-- table表格区域-->
<div>
<!-- :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"-->
<a-table
size="middle"
ref="table"
@@ -63,7 +67,6 @@
:scroll="{x: 1100}"
@change="handleTableChange"
:class="dataSource.length === 0 ? 'show-scroll' : ''"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap main-table">
<!-- 项目名称-->
@@ -252,7 +255,7 @@ export default {
}
this.footerDataSource = [obj]
if (res.result.pageList.total) {
this.ipagination.total = res.result.pageList.total
this.ipagination.total = res.result.pageList.total
//清空列表选中
this.onClearSelected()
} else {
+1 -1
View File
@@ -24,7 +24,7 @@
<a v-if="this.currSelected.title" style="margin-left: 10px" @click="onClearSelected">取消选择</a>
</div>
</a-alert>
<a-input-search @search="onSearch" allowClear style="width:100%;margin-top: 10px" placeholder="请输入部门名称"/>
<a-input-search @search="onSearch" allowClear style="width:100%;margin-top: 10px" placeholder="请输入部门名称" :maxLength="50"/>
<!-- -->
<a-col :md="10" :sm="24">
<template>
+1 -1
View File
@@ -20,7 +20,7 @@
<a-row :gutter="10">
<a-col :md="8" :sm="12">
<a-form-item label="名称">
<a-input style="width: 120px;" :maxLength="50" placeholder="请输入名称" v-model="queryParam.itemText"></a-input>
<a-input style="width: 120px;" :maxLength="50" placeholder="请输入名称" v-model="queryParam.itemText" ></a-input>
</a-form-item>
</a-col>
<!-- <a-col :md="9" :sm="24">-->
+2 -2
View File
@@ -9,12 +9,12 @@
<a-row :gutter="12">
<a-col :md="7" :sm="8">
<a-form-item label="字典名称" :labelCol="{span: 6}" :wrapperCol="{span: 14}">
<a-input placeholder="请输入字典名称" v-model="queryParam.dictName"></a-input>
<a-input placeholder="请输入字典名称" v-model="queryParam.dictName" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :md="7" :sm="8">
<a-form-item label="字典编号" :labelCol="{span: 6}" :wrapperCol="{span: 14}">
<a-input placeholder="请输入字典编号" v-model="queryParam.dictCode"></a-input>
<a-input placeholder="请输入字典编号" v-model="queryParam.dictCode" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :md="7" :sm="8">
+1 -1
View File
@@ -16,7 +16,7 @@
<a-row :gutter="24">
<a-col :xl="9" :lg="8" :md="8" :sm="24">
<a-form-item label="搜索日志">
<a-input placeholder="请输入搜索关键词" v-model="queryParam.keyWord"></a-input>
<a-input placeholder="请输入搜索关键词" v-model="queryParam.keyWord" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :xl="9" :lg="8" :md="8" :sm="24">
+1 -1
View File
@@ -9,7 +9,7 @@
<a-row :gutter="24">
<a-col :xl="6" :lg="8" :md="8" :sm="24">
<a-form-item label="角色名称" :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}">
<a-input placeholder="请输入角色名称" v-model="queryParam.roleName"></a-input>
<a-input placeholder="请输入角色名称" v-model="queryParam.roleName" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+66 -32
View File
@@ -11,44 +11,70 @@
dictCode="system_dept_frequency"
@change="deptFrequencyChange"/>
</a-form-item>
<a-form-item label="催款时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<!-- 仅此一次年月日-->
<!-- 仅此一次年月日-->
<a-form-item label="催款时间" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="selectDeptFrequency === '1'">
<j-date
v-if="selectDeptFrequency === '1'"
placeholder="请选择催款时间"
allowClear
style="width: 100%;"
v-decorator="['time', validatorRules.time]"
:trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
<!-- 每年一次月日-->
<a-row :gutter="12" v-if="selectDeptFrequency === '2'">
<a-col :span="14">
<a-form-item label="催款时间" :labelCol="yearLabelCol" :wrapperCol="yearWrapperCol">
<!-- -->
<a-select
placeholder="请选择月"
allowClear
v-decorator="['deptMonth', validatorRules.deptMonth]"
:options="monthOptions">
</a-select>
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item>
<a-select
placeholder="请选择日"
allowClear
v-decorator="['deptDay', validatorRules.deptDay]"
:options="dayOptions">
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-form-item v-if="selectDeptFrequency === '3'" label="催款时间" :labelCol="labelCol" :wrapperCol="wrapperCol" >
<a-select
placeholder="请选择日"
allowClear
v-decorator="['deptDay', validatorRules.deptDay]"
:options="dayOptions">
</a-select>
</a-form-item>
<!-- <a-row :gutter="12">-->
<!-- <a-col :span="12">-->
<!-- &lt;!&ndash; &ndash;&gt;-->
<!-- <template v-if="selectDeptFrequency === '2'">-->
<!-- <a-select-->
<!-- placeholder="请选择月"-->
<!-- allowClear-->
<!-- v-decorator="['deptMonth', validatorRules.deptMonth]"-->
<!-- :options="monthOptions">-->
<!-- </a-select>-->
<!-- </template>-->
<!-- </a-col>-->
<!-- <a-col :span="12">-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- 每年一次月日-->
<div class="m-d">
<a-row :gutter="12">
<a-col :span="12">
<!-- -->
<template v-if="selectDeptFrequency === '2'">
<a-select
placeholder="请选择月"
allowClear
v-decorator="['deptMonth', validatorRules.deptMonth]"
:options="monthOptions">
</a-select>
</template>
</a-col>
<a-col :span="12">
<a-form-item v-if="selectDeptFrequency === '2' || selectDeptFrequency === '3'">
<a-select
placeholder="请选择日"
allowClear
v-decorator="['deptDay', validatorRules.deptDay]"
:options="dayOptions">
</a-select>
</a-form-item>
</a-col>
</a-row>
</div>
</a-form-item>
<a-form-item class="btn-form">
<a-button type="primary" class="btn-form-save" @click="handleOk" v-has="'system:dept:save'">保存</a-button>
@@ -76,14 +102,22 @@ export default {
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 3 }
sm: { span: 4 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 21 }
sm: { span: 20 }
},
yearLabelCol: {
xs: { span: 24 },
sm: { span: 7 }
},
yearWrapperCol: {
xs: { span: 24 },
sm: { span: 17 }
},
validatorRules: {
deptFrequency: {
frequency: {
rules: [{ required: true, message: '请选择频率' }],
validateTrigger: 'change'
},
+2 -2
View File
@@ -9,13 +9,13 @@
<a-col :xl="8" :lg="8" :md="8" :sm="24">
<a-form-item label="用户账号">
<a-input placeholder="请输入用户账号" v-model="queryParam.username"></a-input>
<a-input placeholder="请输入用户账号" v-model="queryParam.username" :maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :xl="8" :lg="8" :md="8" :sm="24">
<a-form-item label="用户姓名">
<a-input placeholder="请输入用户姓名" v-model="queryParam.realname"></a-input>
<a-input placeholder="请输入用户姓名" v-model="queryParam.realname" :maxLength="50"></a-input>
</a-form-item>
</a-col>
+3 -1
View File
@@ -151,12 +151,14 @@ export default {
* 查询所有角色
* */
initAllRole() {
getAction('/sys/role/treeListPage').then(res => {
getAction('/sys/role/treeListPage', {pageSize: -1}).then(res => {
this.roleList = res.result.records
})
},
close() {
this.$emit('close')
// 解决点编辑关闭后,再点添加下级角色编码仍然置灰的问题
this.roleDisabled = false
this.isAddLower = false
this.visible = false
},
+4 -5
View File
@@ -606,14 +606,13 @@ export default {
},
compareToFirstPassword(rule, value, callback) {
const form = this.form
if (value && value !== form.getFieldValue('password')) {
callback('两次输入的密码不一样!')
}
if (value && !passwordReg(value)) {
callback('密码由8位及以上数字、大小写字母和特殊符号组成!')
}
if (value && value !== form.getFieldValue('password')) {
callback('两次输入的密码不一样!')
} else {
callback()
}
callback()
},
validatePhone(rule, value, callback) {
checkPhone(value, this.userId).then(res => {
+4 -4
View File
@@ -82,10 +82,10 @@
},
methods: {
onTreeNodeSelect(id){
// if(id && id.length>0){
// this.selectedKeys = id
// }
// this.$refs.datarule.show(this.selectedKeys[0],this.roleId)
if(id && id.length>0){
this.selectedKeys = id
}
this.$refs.datarule.show(this.selectedKeys[0],this.roleId)
},
onCheck (o) {
if(this.checkStrictly){