Merge remote-tracking branch 'origin/branch20211008'

This commit is contained in:
fengachen
2021-10-11 10:06:56 +08:00
23 changed files with 677 additions and 284 deletions
+11
View File
@@ -8,7 +8,18 @@
<script> <script>
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN' import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
import enquireScreen from '@/utils/device' import enquireScreen from '@/utils/device'
window.addEventListener('message', function (event) {
// 当监听到 需要修改样式的事件时 隐藏相应的元素
if (event.data.hideDom) {
//此处执行事件
setTimeout(() => {
document.getElementsByClassName('ant-layout-sider')[0].style.display = 'none'
document.getElementsByClassName('ant-layout-header')[0].style.display = 'none'
document.getElementsByClassName('tab-layout-tabs ant-tabs ant-tabs-top')[0].style.display = 'none'
}, 1000)
}
})
export default { export default {
data() { data() {
return { return {
+2 -4
View File
@@ -1,4 +1,4 @@
import {getAction, postAction} from '@api/manage' import {getAction} from '@api/manage'
// 通过用户id获取用户信息 // 通过用户id获取用户信息
const getUserInfo = (params) => getAction('/sys/user/queryById',params) const getUserInfo = (params) => getAction('/sys/user/queryById',params)
@@ -8,8 +8,7 @@ const getMeetInfoById = (params) => getAction('/meeting/payMeeting/queryById',pa
const getAllWorkProjects = () => getAction('/project/payWorkingGroup/listAll') const getAllWorkProjects = () => getAction('/project/payWorkingGroup/listAll')
// 通过id获取参会人详细信息 // 通过id获取参会人详细信息
const getSingUpUserInfo = (params) => getAction('/meeting/payMeetingSituation/queryById',params) const getSingUpUserInfo = (params) => getAction('/meeting/payMeetingSituation/queryById',params)
// 会议管理上传会议资料
const uploadMeetingFiles = (params) => postAction('/meeting/payMeeting/uploadFile',params)
// 生成会议二维码 // 生成会议二维码
const createQcCode = (params) => getAction('/meeting/payMeeting/createBase64',params) const createQcCode = (params) => getAction('/meeting/payMeeting/createBase64',params)
// 收入合同的新增会员项目的查询 // 收入合同的新增会员项目的查询
@@ -20,7 +19,6 @@ export {
getMeetInfoById, getMeetInfoById,
getAllWorkProjects, getAllWorkProjects,
getSingUpUserInfo, getSingUpUserInfo,
uploadMeetingFiles,
createQcCode, createQcCode,
queryContractMemberProject queryContractMemberProject
} }
+5 -2
View File
@@ -5,7 +5,7 @@ const getWorkingGroupById = (params) => getAction('/project/payWorkingGroup/quer
// 判断工作组成员是否设置来款通知 // 判断工作组成员是否设置来款通知
const getChargeNotice = (param) => getAction('/project/payWorkingGroupSubitem/getCharge', param) const getChargeNotice = (param) => getAction('/project/payWorkingGroupSubitem/getCharge', param)
// 工作组会议的发布提醒 // 工作组会议的发布提醒
const publishRemind = (param) => postAction('/meeting/payMeeting/publishReminder', param) const publishRemind = (param) => postAction('/meeting/workGroupMeeting/publishReminder', param)
// 通过id获取收入合同信息 // 通过id获取收入合同信息
const getRevenueContractById = (param) => getAction('/contract/payIncomeContract/queryById', param) const getRevenueContractById = (param) => getAction('/contract/payIncomeContract/queryById', param)
// 收入合同审核 // 收入合同审核
@@ -70,6 +70,8 @@ const homePageStatistics = (param) => getAction('/statistics/principalPeople/fir
const homePageDataStatistics = (param) => getAction('/home/dataStatistics', param) const homePageDataStatistics = (param) => getAction('/home/dataStatistics', param)
// 系统催款 // 系统催款
const sysReminders = (param) => postAction('/reminders/edit', param) const sysReminders = (param) => postAction('/reminders/edit', param)
// 检测企业审核是否通过
const checkCompanyAduit = (param) => getAction('/payMailContract/payMailContract/check', param)
export { export {
getWorkingGroupById, getWorkingGroupById,
@@ -106,5 +108,6 @@ export {
checkoutWorkingGroupPrincipal, checkoutWorkingGroupPrincipal,
homePageStatistics, homePageStatistics,
homePageDataStatistics, homePageDataStatistics,
sysReminders sysReminders,
checkCompanyAduit
} }
+2 -2
View File
@@ -125,8 +125,8 @@
:dataSource="logisticsInfoList" :dataSource="logisticsInfoList"
class="j-table-force-nowrap" class="j-table-force-nowrap"
> >
<span slot="action" class="action-span-cell"> <span slot="action" class="action-span-cell" slot-scope="record">
<a @click="lookLogistics()">查看物流</a> <a @click="lookLogistics()" v-if="record.postStatus === 1">查看物流</a>
</span> </span>
<!-- <p slot="expandedRowRender" slot-scope="record" style="margin: 0">--> <!-- <p slot="expandedRowRender" slot-scope="record" style="margin: 0">-->
<!-- {{ record.sendDate }}--> <!-- {{ record.sendDate }}-->
+5
View File
@@ -12,6 +12,11 @@ NProgress.configure({ showSpinner: false }) // NProgress Configuration
const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/alteration','/signUpEntrance','/signUpPage'] // no redirect whitelist const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/alteration','/signUpEntrance','/signUpPage'] // no redirect whitelist
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
if (to.query.token) {
Vue.ls.set(ACCESS_TOKEN, to.query.token, 7 * 24 * 60 * 60 * 1000)
store.commit('SET_TOKEN', to.query.token)
}
NProgress.start() // start progress bar NProgress.start() // start progress bar
if (Vue.ls.get(ACCESS_TOKEN)) { if (Vue.ls.get(ACCESS_TOKEN)) {
+1 -2
View File
@@ -5,10 +5,9 @@ const hasPermission = {
Vue.directive('has', { Vue.directive('has', {
inserted: (el, binding, vnode)=>{ inserted: (el, binding, vnode)=>{
// console.log('binding=====',binding.value) // console.log('binding=====',binding.value)
// console.log('binding=====args',binding)
if(binding.arg){ if(binding.arg){
binding.value = binding.arg binding.value = binding.arg
console.log( binding.value ,' binding.value =================') // console.log( binding.value ,' binding.value =================')
} }
// console.log("页面权限控制----"); // console.log("页面权限控制----");
//console.time() //console.time()
@@ -28,17 +28,18 @@
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="签订单位" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="签订单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<company-select placeholder="请选择签订单位" <a-input placeholder="请输入签订单位"
v-decorator="['signedCompany',validatorRules.signedCompany]" v-decorator="['signedCompanyTemporaryName',validatorRules.signedCompanyTemporaryName]"
@change="handleSignedCompanyChange"></company-select> :maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12" style="margin-bottom: 0"> <a-col :xxl="6" :xl="8" :sm="12" style="margin-bottom: 0">
<a-form-item label="签订联系人" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="签订联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-contacts placeholder="请选择签订联系人" <a-input placeholder="请输入签订联系人"
:selected-company="selectedCompany" v-decorator="['signedContactsTemporaryName',validatorRules.signedContactsTemporaryName]"
:init-contacts="selectedContact" :maxLength='50'
v-decorator="['signedContactsId',validatorRules.signedContactsId]"></select-contacts> @change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
@@ -124,11 +125,10 @@
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="合同约定主要时点" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="合同约定主要时点" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择合同约定主要时点" <a-input placeholder="请输入合同约定主要时点"
style="width: 100%;" v-decorator="['contractTimePoints',validatorRules.contractTimePoints]"
v-decorator="['contractTimePoints']" :maxLength='50'
:trigger-change="true" @change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
date-format="YYYY-MM-DD"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -287,12 +287,12 @@ export default {
rules: [{ required: true, message: '请输入合同名称' }], rules: [{ required: true, message: '请输入合同名称' }],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
signedCompany: { signedCompanyTemporaryName: {
rules: [{ required: true, message: '请选择签订单位' }], rules: [{ required: true, message: '请输入签订单位' }],
validateTrigger: 'change' validateTrigger: 'blur'
}, },
signedContactsId: { signedContactsTemporaryName: {
rules: [{ required: true, message: '请选择签订联系人' }], rules: [{ required: true, message: '请输入签订联系人' }],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
principalId: { principalId: {
@@ -364,17 +364,17 @@ export default {
let record let record
record = res.result record = res.result
// 回显企业 // 回显企业
record.signedCompany = { // record.signedCompany = {
id: record.signedCompanyTemporaryId, // id: record.signedCompanyTemporaryId,
companyName: record.signedCompanyTemporaryName // companyName: record.signedCompanyTemporaryName
} // }
// 回显联系人 // 回显联系人
this.selectedCompany = record.signedCompany // this.selectedCompany = record.signedCompany
record.signedContactsId = record.signedContactsTemporaryId // record.signedContactsId = record.signedContactsTemporaryId
this.selectedContact = { // this.selectedContact = {
id: record.signedContactsTemporaryId, // id: record.signedContactsTemporaryId,
name: record.signedContactsTemporaryName // name: record.signedContactsTemporaryName
} // }
this.model = Object.assign({}, record) this.model = Object.assign({}, record)
// 回显负责人部门 // 回显负责人部门
this.principalChange(this.model.principalId) this.principalChange(this.model.principalId)
@@ -383,7 +383,7 @@ export default {
// 回显打包年份 // 回显打包年份
this.isPackage = this.model.pack === 1 this.isPackage = this.model.pack === 1
this.$nextTick(() => { this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'contractNum', 'contractName', 'signedCompany', 'signedContactsId', 'opening', 'principalId', 'departmentName', 'contractAmount', 'rate', 'noTaxAmount', 'contractDate', 'terminationDate', 'contractTimePoints', 'accountsReceivableAmount', 'amountReceived', 'outstandingAmount', 'accountStatus', 'contractPaymentTimes', 'pack', 'packYear')) this.form.setFieldsValue(pick(this.model, 'contractNum', 'contractName', 'signedCompanyTemporaryName', 'signedContactsTemporaryName', 'opening', 'principalId', 'departmentName', 'contractAmount', 'rate', 'noTaxAmount', 'contractDate', 'terminationDate', 'contractTimePoints', 'accountsReceivableAmount', 'amountReceived', 'outstandingAmount', 'accountStatus', 'contractPaymentTimes', 'pack', 'packYear'))
this.confirmLoading = false this.confirmLoading = false
}) })
} else { } else {
@@ -402,8 +402,6 @@ export default {
this.confirmLoading = true this.confirmLoading = true
if (this.installmentList && this.installmentList.length > 0) { if (this.installmentList && this.installmentList.length > 0) {
let formData = {} let formData = {}
values.signedCompanyId = values.signedCompany.id
delete values.signedCompany
formData.installment = this.installmentList formData.installment = this.installmentList
formData.contract = Object.assign(this.model, values) formData.contract = Object.assign(this.model, values)
console.log('表单提交数据', formData) console.log('表单提交数据', formData)
@@ -416,7 +414,6 @@ export default {
postAction(url, formData).then(res => { postAction(url, formData).then(res => {
if (res.success) { if (res.success) {
this.contractId = res.result.id this.contractId = res.result.id
this.edit(this.contractId)
this.$message.success(res.message) this.$message.success(res.message)
// 跳转至支出合同list页面 // 跳转至支出合同list页面
this.$router.push({ this.$router.push({
@@ -603,11 +600,11 @@ export default {
if (this.accountsReceivableNum !== null && this.amountReceivedNum !== null) { if (this.accountsReceivableNum !== null && this.amountReceivedNum !== null) {
this.model.outstandingAmount = Number(this.accountsReceivableNum) - Number(this.amountReceivedNum) this.model.outstandingAmount = Number(this.accountsReceivableNum) - Number(this.amountReceivedNum)
this.model.outstandingAmount = this.model.outstandingAmount.toFixed(2) this.model.outstandingAmount = this.model.outstandingAmount.toFixed(2)
if (this.model.outstandingAmount === 0) { if (Number(this.model.outstandingAmount) === 0) {
this.model.accountStatus = '3' this.model.accountStatus = '3'
} else if (this.model.outstandingAmount > 0 && this.model.outstandingAmount < Number(this.accountsReceivableNum)) { } else if (Number(this.model.outstandingAmount) > 0 && Number(this.model.outstandingAmount) < Number(this.accountsReceivableNum)) {
this.model.accountStatus = '2' this.model.accountStatus = '2'
} else if (this.model.outstandingAmount === Number(this.accountsReceivableNum)) { } else if (Number(this.model.outstandingAmount) === Number(this.accountsReceivableNum)) {
this.model.accountStatus = '1' this.model.accountStatus = '1'
} }
this.$nextTick(() => { this.$nextTick(() => {
@@ -48,7 +48,7 @@
</a-col> </a-col>
<a-col :xl="7" :lg="8" :md="9" :sm="24"> <a-col :xl="7" :lg="8" :md="9" :sm="24">
<a-form-item label="来款状态" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="来款状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-model="queryParam.chargeStatus" :options="incomePaymentsStatus" /> <a-radio-group v-model="queryParam.chargeStatus" :options="incomePaymentsStatus"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="4" :lg="7" :md="8" :sm="24"> <a-col :xl="4" :lg="7" :md="8" :sm="24">
@@ -65,7 +65,8 @@
<!-- 操作按钮区域--> <!-- 操作按钮区域-->
<div class="table-operator"> <div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'revenueContract:add'">新增</a-button> <a-button type="primary" icon="plus" @click="handleAdd" v-has="'revenueContract:add'">新增</a-button>
<a-button type="primary" icon="export" @click="handleExportXls('收入合同')" v-has="'revenueContract:export'">导出</a-button> <a-button type="primary" icon="export" @click="handleExportXls('收入合同')" v-has="'revenueContract:export'">导出
</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'revenueContract:batchDel'">批量删除</a-button> <a-button type="danger" icon="delete" @click="batchDel" v-has="'revenueContract:batchDel'">批量删除</a-button>
</div> </div>
<!-- 操作按钮区域-end--> <!-- 操作按钮区域-end-->
@@ -108,12 +109,12 @@
<span slot="action" class="action-span-cell" slot-scope="text, record"> <span slot="action" class="action-span-cell" slot-scope="text, record">
<a @click="handleAudit(record.id)" v-if="record.status === 2" v-has="'revenueContract:aduit'">审核</a> <a @click="handleAudit(record.id)" v-if="record.status === 2" v-has="'revenueContract:aduit'">审核</a>
<!-- v-has="'revenueContract:edit'"-->
<a @click="handleEdit(record.id, record.contractNum)" <a @click="handleEdit(record.id, record.contractNum)"
v-if="record.status === 1 || record.status === 4">编辑</a> v-if="record.status === 1 || record.status === 4" v-has="'revenueContract:edit'">编辑</a>
<a @click="handleArchive(record.id)" v-if="record.status === 3" v-has="'revenueContract:archive'">存档</a> <a @click="handleArchive(record.id)" v-if="record.status === 3" v-has="'revenueContract:archive'">存档</a>
<a @click="handleDelete(record.id)" <a @click="handleDelete(record.id)"
v-if="record.status === 1 || record.status === 2 || record.status === 4" v-has="'revenueContract:delete'">删除</a> v-if="record.status === 1 || record.status === 2 || record.status === 4"
v-has="'revenueContract:delete'">删除</a>
<a :disabled="true" v-if="record.status === 5">已存档</a> <a :disabled="true" v-if="record.status === 5">已存档</a>
</span> </span>
</a-table> </a-table>
@@ -5,32 +5,37 @@
:visible="visible" :visible="visible"
:confirmLoading="confirmLoading" :confirmLoading="confirmLoading"
switchFullscreen switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭"> cancelText="关闭">
<a-form :form="form"> <a-spin :spinning="confirmLoading">
<a-form-item label="审核人" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form :form="form">
<a-input placeholder="请输入审核人" <a-form-item label="审核人" :labelCol="labelCol" :wrapperCol="wrapperCol">
v-decorator="['userName',validatorRules.userName]" <a-input placeholder="请输入审核人"
:maxLength='50' v-decorator="['userName',validatorRules.userName]"
:disabled="true" :maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input> :disabled="true"
</a-form-item> @change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
<a-form-item label="审核" :labelCol="labelCol" :wrapperCol="wrapperCol"> </a-form-item>
<a-radio-group v-decorator="['contractStatus', validatorRules.contractStatus]" @change="contractAuditStatuChange"> <a-form-item label="审核" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio :value="3">通过</a-radio> <a-radio-group v-decorator="['contractStatus', validatorRules.contractStatus]"
<a-radio :value="4">拒绝</a-radio> @change="contractAuditStatuChange">
</a-radio-group> <a-radio :value="3">通过</a-radio>
</a-form-item> <a-radio :value="4">拒绝</a-radio>
<a-form-item label="拒绝说明" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="showExplainRemarks"> </a-radio-group>
<a-textarea </a-form-item>
placeholder="请输入拒绝说明" <a-form-item label="拒绝说明" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="showExplainRemarks">
v-decorator="['explainRemarks', validatorRules.explainRemarks]" <a-textarea
:auto-size="{ minRows: 3, maxRows: 6 }" placeholder="请输入拒绝说明"
:maxLength='200' v-decorator="['explainRemarks', validatorRules.explainRemarks]"
@change="e => {e.target.value = (e.target.value + '').trim()}"/> :auto-size="{ minRows: 3, maxRows: 6 }"
</a-form-item> :maxLength='200'
</a-form> @change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-form>
</a-spin>
<template slot="footer">
<a-button @click="handleCancel">关闭</a-button>
<a-button @click="handleOk" type="primary" v-preventclick :loading="confirmLoading">确定</a-button>
</template>
</j-modal> </j-modal>
</template> </template>
@@ -81,6 +86,7 @@ export default {
// 触发表单验证 // 触发表单验证
this.form.validateFields((err, values) => { this.form.validateFields((err, values) => {
if (!err) { if (!err) {
this.confirmLoading = true
values.contractId = this.contractId values.contractId = this.contractId
const formData = Object.assign(this.model, values) const formData = Object.assign(this.model, values)
console.log('表单提交数据', formData) console.log('表单提交数据', formData)
@@ -1,191 +1,235 @@
<template> <template>
<div> <div>
<page-header-title :is-level-one="false" :img-for-icon="IconImg" level-two-title="收入合同详情"></page-header-title> <page-header-title :is-level-one="false" :img-for-icon="IconImg" level-two-title="收入合同详情"></page-header-title>
<a-card :bordered="false"> <a-spin :spinning="loading">
<!-- 主体信息--> <a-card :bordered="false">
<div> <!-- 主体信息-->
<div class="part-title"> <div>
<div class="part-title-text">主体信息</div> <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> </div>
<a-row class="detail"> <a-divider></a-divider>
<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"> <!-- 日期节点-->
<div>
<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>
<a-divider></a-divider>
<!-- 账款信息-->
<div>
<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>
<a-divider></a-divider>
<!-- 其他信息-->
<div>
<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>
<a-divider></a-divider>
<!-- 分期信息-->
<div>
<div class="part-title">
<div class="part-title-text">分期信息</div>
</div>
<a-row class="detail" v-for="(item, index) in detailData.listInstallment" :key="item.id">
<a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-row> <a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}:</a-col> <a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段:</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col> <a-col :sm="14" :xs="24">{{ item.phaseName }}</a-col>
</a-row> </a-row>
</a-col> </a-col>
</template> <a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-empty v-else></a-empty>
</a-row>
</div>
<a-divider></a-divider>
<!-- 日期节点-->
<div>
<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-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}:</a-col> <a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段应收:</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col> <a-col :sm="14" :xs="24">{{ item.accountsReceivableAmount }}</a-col>
</a-row> </a-row>
</a-col> </a-col>
</template> <a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-empty v-else></a-empty> <a-row>
</a-row> <a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段应收时间:</a-col>
</div> <a-col :sm="14" :xs="24">{{ item.accountsReceivableTime }}</a-col>
<a-divider></a-divider> </a-row>
</a-col>
<!-- 账款信息--> <a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<div> <a-row>
<div class="part-title"> <a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段实收:</a-col>
<div class="part-title-text">账款信息</div> <a-col :sm="14" :xs="24">{{ item.paidAmount }}</a-col>
</a-row>
</a-col>
<a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段实收时间:</a-col>
<a-col :sm="14" :xs="24">{{ item.paidTime }}</a-col>
</a-row>
</a-col>
</a-row>
</div> </div>
<a-row class="detail"> <a-divider></a-divider>
<template v-if="accountInfoShowList.length > 0">
<a-col :xxl="6" :xl="8" :sm="12" class="detail-item" v-for="(item, index) in accountInfoShowList" <!-- 关联项目-->
<div>
<div class="part-title">
<div class="part-title-text">关联项目</div>
</div>
<associated-project ref="associatedProject" :contract-id="$route.query.revenueId"
:can-operate="false"></associated-project>
</div>
<a-divider></a-divider>
<!-- 存档信息-->
<div>
<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"> :key="index">
<a-row> <a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}:</a-col> <a-col :sm="6" :xs="24">{{ item.createBy }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col> <a-col :sm="6" :xs="24">{{ item.createTime }}</a-col>
</a-row> <a-col :sm="6" :xs="24">{{ item.contractStatus_dictText }}</a-col>
</a-col> </a-row>
</template> </div>
<a-empty v-else></a-empty> </template>
</a-row> <a-empty v-else></a-empty>
</div> </div>
<a-divider></a-divider>
<!-- 其他信息-->
<div>
<div class="part-title">
<div class="part-title-text">其他信息</div>
</div> </div>
<a-row class="detail"> <a-divider></a-divider>
<template v-if="otherInfoShowList.length > 0">
<a-col :xxl="6" :xl="8" :sm="12" class="detail-item" v-for="(item, index) in otherInfoShowList" <!-- 审核记录-->
<div>
<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"> :key="index">
<a-row> <a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ item.title }}:</a-col> <a-col :sm="6" :xs="24">{{ item.createBy }}</a-col>
<a-col :sm="14" :xs="24">{{ detailData[item.fieldName] }}</a-col> <a-col :sm="6" :xs="24">{{ item.createTime }}</a-col>
</a-row> <a-col :sm="6" :xs="24">{{ item.contractStatus_dictText }}</a-col>
</a-col> <a-col :sm="6" :xs="24">{{ item.explainRemarks }}</a-col>
</template> </a-row>
<a-empty v-else></a-empty> </div>
</a-row> </template>
</div> <a-empty v-else></a-empty>
<a-divider></a-divider> </div>
<!-- 分期信息-->
<div>
<div class="part-title">
<div class="part-title-text">分期信息</div>
</div> </div>
<a-row class="detail" v-for="(item, index) in detailData.listInstallment" :key="item.id">
<a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段:</a-col>
<a-col :sm="14" :xs="24">{{ item.phaseName }}</a-col>
</a-row>
</a-col>
<a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段应收:</a-col>
<a-col :sm="14" :xs="24">{{ item.accountsReceivableAmount }}</a-col>
</a-row>
</a-col>
<a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段应收时间:</a-col>
<a-col :sm="14" :xs="24">{{ item.accountsReceivableTime }}</a-col>
</a-row>
</a-col>
<a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段实收:</a-col>
<a-col :sm="14" :xs="24">{{ item.paidAmount }}</a-col>
</a-row>
</a-col>
<a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<a-row>
<a-col :sm="10" :xs="24" class="detail-item-title">{{ index + 1 }}阶段实收时间:</a-col>
<a-col :sm="14" :xs="24">{{ item.paidTime }}</a-col>
</a-row>
</a-col>
</a-row>
</div>
<a-divider></a-divider>
<!-- 关联项目--> <!-- 状态非已存档显示-->
<div> <template v-if="detailData.status < 5">
<div class="part-title"> <a-divider></a-divider>
<div class="part-title-text">关联项目</div> <!-- 编辑、审核、存档-->
</div> <div>
<associated-project ref="associatedProject" :contract-id="$route.query.revenueId" :can-operate="false"></associated-project> <div class="part-title">
</div> <div class="part-title-text">操作</div>
<a-divider></a-divider>
<!-- 存档信息-->
<div>
<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> </div>
</template> <div class="operator-btn">
<a-empty v-else></a-empty> <a-button
</div> type="primary"
</div> @click="handleEdit(detailData.id, detailData.contractNum)"
<a-divider></a-divider> v-if="detailData.status === 1 || detailData.status === 4"
v-has="'revenueContract:edit'">
<!-- 审核记录--> 编辑
<div> </a-button>
<div class="part-title"> <a-button
<div class="part-title-text">审核记录</div> type="primary"
</div> @click="handleAudit(detailData.id)"
<div class="detail"> v-if="detailData.status === 2"
<template v-if="detailData.listAudit && detailData.listAudit.length > 0"> v-has="'revenueContract:aduit'">
<div class="detail-item" v-for="(item, index) in detailData.listAudit" 审核
:key="index"> </a-button>
<a-row> <a-button
<a-col :sm="6" :xs="24">{{ item.createBy }}</a-col> type="primary"
<a-col :sm="6" :xs="24">{{ item.createTime }}</a-col> @click="handleArchive(detailData.id)"
<a-col :sm="6" :xs="24">{{ item.contractStatus_dictText }}</a-col> v-if="detailData.status === 3"
<a-col :sm="6" :xs="24">{{ item.explainRemarks }}</a-col> v-has="'revenueContract:archive'">
</a-row> 存档
</a-button>
</div> </div>
</template> </div>
<a-empty v-else></a-empty> </template>
</div>
</div> </a-card>
</a-card> </a-spin>
<revenue-contract-aduit-module ref="aduitForm" @ok="operatorOk"></revenue-contract-aduit-module>
</div> </div>
</template> </template>
<script> <script>
import IconImg from '@/assets/imgs/icon/icon_revenue_contract.png' import IconImg from '@/assets/imgs/icon/icon_revenue_contract.png'
import PageHeaderTitle from '@/components/layouts/PageHeaderTitle' import PageHeaderTitle from '@/components/layouts/PageHeaderTitle'
import { getRevenueContractById } from '../../../../api/incomePaymentsApi' import { archiveRevenueContract, getRevenueContractById } from '../../../../api/incomePaymentsApi'
import AssociatedProject from './AssociatedProject' import AssociatedProject from './AssociatedProject'
import RevenueContractAduitModule from './RevenueContractAduitModule'
export default { export default {
name: 'RevenueContractDetail', name: 'RevenueContractDetail',
components: { PageHeaderTitle, AssociatedProject }, components: { PageHeaderTitle, AssociatedProject, RevenueContractAduitModule },
data() { data() {
return { return {
IconImg, IconImg,
loading: false,
detailData: {}, detailData: {},
// 主体信息 // 主体信息
mainInfoList: [ mainInfoList: [
@@ -290,13 +334,71 @@ export default {
this.$refs.associatedProject.loadAssociatedProject() this.$refs.associatedProject.loadAssociatedProject()
}, },
methods: { methods: {
initDetailData(id) { initDetailData() {
this.loading = true
let param = { let param = {
id: id id: this.$route.query.revenueId
} }
getRevenueContractById(param).then(res => { getRevenueContractById(param).then(res => {
this.detailData = res.result this.detailData = res.result
this.detailData.pack = this.detailData.pack === 1 ? '是' : this.detailData.pack === 0 ? '否' : '' this.detailData.pack = this.detailData.pack === 1 ? '是' : this.detailData.pack === 0 ? '否' : ''
}).finally(() => {
this.loading = false
})
},
operatorOk() {
this.initDetailData()
},
/**
* 编辑
* @param id
* @param contractNum
*/
handleEdit(id, contractNum) {
this.$router.push({
path: '/contractManagement/AddRevenueContract',
query: {
revenueId: id,
contractNum: contractNum
}
})
},
/**
* 审核
* @param id
*/
handleAudit(id) {
this.$refs.aduitForm.contractId = id
this.$refs.aduitForm.open()
},
/**
* 存档
* @param id
*/
handleArchive(id) {
console.log(id)
let that = this
this.$confirm({
title: '存档',
content: '确认存档?',
onOk: function () {
that.loading = true
that.loading = false
let param = {
contractId: id,
contractStatus: 5
}
archiveRevenueContract(param).then((res) => {
if (res.success) {
that.$message.success(res.message)
that.initDetailData()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
that.loading = false
})
}
}) })
} }
} }
@@ -323,4 +425,12 @@ export default {
.ant-divider-horizontal { .ant-divider-horizontal {
margin: 20px 0; margin: 20px 0;
} }
.operator-btn {
margin-top: 10px;
button {
margin-right: 8px;
}
}
</style> </style>
@@ -128,11 +128,10 @@
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="合同约定主要时点" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="合同约定主要时点" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择合同约定主要时点" <a-input placeholder="请输入合同约定主要时点"
style="width: 100%;" v-decorator="['contractTimePoints']"
v-decorator="['contractTimePoints']" :maxLength='50'
:trigger-change="true" @change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
date-format="YYYY-MM-DD"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -666,13 +665,13 @@ export default {
this.model.outstandingAmount = Number(this.accountsReceivableNum) - Number(this.amountReceivedNum) this.model.outstandingAmount = Number(this.accountsReceivableNum) - Number(this.amountReceivedNum)
this.model.outstandingAmount = this.model.outstandingAmount.toFixed(2) this.model.outstandingAmount = this.model.outstandingAmount.toFixed(2)
// 未收金额 === 0,已付全款状态 // 未收金额 === 0,已付全款状态
if (this.model.outstandingAmount <= 0) { if (Number(this.model.outstandingAmount) === 0) {
this.model.accountStatus = '3' this.model.accountStatus = '3'
// 未收金额 > 0 且 未收金额 < 应收金额,部分付款状态 // 未收金额 > 0 且 未收金额 < 应收金额,部分付款状态
} else if (this.model.outstandingAmount > 0 && this.model.outstandingAmount < Number(this.accountsReceivableNum)) { } else if (Number(this.model.outstandingAmount) > 0 && Number(this.model.outstandingAmount) < Number(this.accountsReceivableNum)) {
this.model.accountStatus = '2' this.model.accountStatus = '2'
// 未收金额 === 应收金额,未付款状态 // 未收金额 === 应收金额,未付款状态
} else if (this.model.outstandingAmount === Number(this.accountsReceivableNum)) { } else if (Number(this.model.outstandingAmount) === Number(this.accountsReceivableNum)) {
this.model.accountStatus = '1' this.model.accountStatus = '1'
} }
this.$nextTick(() => { this.$nextTick(() => {
@@ -255,6 +255,8 @@ export default {
this.contranctInfo =Object.assign({},record) this.contranctInfo =Object.assign({},record)
console.log(record,'meetingPerson') console.log(record,'meetingPerson')
this.filters.companyId = record.signedCompanyId this.filters.companyId = record.signedCompanyId
// 列表查询加入打包年份
this.filters.packYear = record.packYear
//记录合同id //记录合同id
this.contractId = this.contranctInfo.id this.contractId = this.contranctInfo.id
// 记录打包状态 // 记录打包状态
@@ -492,6 +492,8 @@ export default {
this.title = '编辑会议' this.title = '编辑会议'
// 修改会议类型 控制dom显示 编辑取接口查到的会议类型 // 修改会议类型 控制dom显示 编辑取接口查到的会议类型
this.meetingType = record.meetingType + '' this.meetingType = record.meetingType + ''
// 编辑根据接口返回的会议类型获取不同的会议url
this.url = this.createUrlByMeetingType(this.meetingType)
} else { } else {
this.title = '新增会议' this.title = '新增会议'
// 如果是标协会会议需要显示酒店联系人 // 如果是标协会会议需要显示酒店联系人
@@ -503,6 +505,8 @@ export default {
} }
// 新增取路由参数 // 新增取路由参数
this.meetingType = this.$route.query.meetingType this.meetingType = this.$route.query.meetingType
// 新增根据路由参数 会议类型更换不同的接口
this.url = this.createUrlByMeetingType(this.meetingType)
} }
console.log(this.model) console.log(this.model)
// 召开时间回显 // 召开时间回显
@@ -696,6 +700,38 @@ export default {
this.newSignInTime = dateString this.newSignInTime = dateString
}, },
/* /*
* 根据会议类型返回不同的会议新增与编辑接口
* */
createUrlByMeetingType(meetingType){
switch (String(meetingType)){
// 工作组会议
case '1':return {
add:'/meeting/workGroupMeeting/add',
edit:'/meeting/workGroupMeeting/edit'
}
// 标协会议
case '2':return {
add:'/meeting/standardsMeeting/add',
edit:'/meeting/standardsMeeting/edit'
}
// 国际研讨会
case '3':return {
add:'/meeting/internalMeeting/add',
edit:'/meeting/internalMeeting/edit'
}
// 其他会议
case '4':return {
add:'/meeting/otherMeeting/add',
edit:'/meeting/otherMeeting/edit'
}
// 分标委会议
case '5':return {
add:'/meeting/committeeMeeting/add',
edit:'/meeting/committeeMeeting/edit'
}
}
},
/*
* 校验邀请码 * 校验邀请码
* */ * */
validateCode(rule, value, callback) { validateCode(rule, value, callback) {
@@ -160,7 +160,7 @@
</a-col> </a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search" v-has="'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> <a-button @click="searchReset" icon="reload" class="reset-button" style="margin-left: 8px">重置</a-button>
</span> </span>
</a-col> </a-col>
@@ -173,16 +173,16 @@
<div class="table-operator"> <div class="table-operator">
<!-- 变更去掉了此功能 暂时注释 2021-09-16 --> <!-- 变更去掉了此功能 暂时注释 2021-09-16 -->
<!-- <a-button type="primary" icon="import" @click="importParticipant">导入参会人</a-button>--> <!-- <a-button type="primary" icon="import" @click="importParticipant">导入参会人</a-button>-->
<a-button type="primary" icon="plus" @click="addParticipant" v-has:[addPerson]="'attendance:add'">添加参会人</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:[addPerson]="'attendance:export'">导出 <a-button type="primary" icon="download" @click="handleExportXls('会员项目')" v-has:[authorCode.export]="'attendance:export'">导出
</a-button> </a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'attendance:batchDel'">批量删除</a-button> <a-button type="danger" icon="delete" @click="batchDel" v-has:[authorCode.batchDel]="'attendance:batchDel'">批量删除</a-button>
<!--当会议费用为0不需要合并开票 --> <!--当会议费用为0不需要合并开票 -->
<!-- 变更将此功能添加到到账开票了 暂时注释 2021-09-16 --> <!-- 变更将此功能添加到到账开票了 暂时注释 2021-09-16 -->
<!-- <a-button type="primary" @click="batchInvoice" v-show="currentMeetingInfo.meetingCosts !== 0">合并开票</a-button>--> <!-- <a-button type="primary" @click="batchInvoice" v-show="currentMeetingInfo.meetingCosts !== 0">合并开票</a-button>-->
<!--只有国际研讨会才会有设置对接人--> <!--只有国际研讨会才会有设置对接人-->
<a-button type="primary" @click="batchSetDocker" v-if="currentMeetingInfo.meetingType === '3' " <a-button type="primary" @click="batchSetDocker" v-if="currentMeetingInfo.meetingType === '3' "
v-has="'attendance:batchSetDocker'">设置对接人 v-has="'internalMeetingSituation:batchSetDocker'">设置对接人
</a-button> </a-button>
</div> </div>
@@ -242,14 +242,14 @@
<span slot="action" slot-scope="text, record" class="action-span-cell"> <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.paymentRecord"
v-has="'attendance:auditCredentials'">审核凭证</a> v-has:[authorCode.auditRecord]="'attendance:auditCredentials'">审核凭证</a>
<!-- 只有工作组会议与分标委会议才有审核报名信息--> <!-- 只有工作组会议与分标委会议才有审核报名信息-->
<a @click="handleAuditSignUp(record)" <a @click="handleAuditSignUp(record)"
v-show="(currentMeetingInfo.meetingType === '1' || currentMeetingInfo.meetingType === '5') && record.registerCheckResult !== 1 " v-show="(currentMeetingInfo.meetingType === '1' || currentMeetingInfo.meetingType === '5') && record.registerCheckResult !== 1 "
v-has="'attendance:auditSignUp'">审核报名信息</a> v-has:[authorCode.auditSignUpInfo]="'attendance:auditSignUp'">审核报名信息</a>
<a @click="handleEdit(record)" v-has="'attendance:edit'">编辑</a> <a @click="handleEdit(record)" v-has:[authorCode.edit]="'attendance:edit'">编辑</a>
<!--删除参会人需要判断改参会人是否与合同关联--> <!--删除参会人需要判断改参会人是否与合同关联-->
<a @click="handleDelete(record.id)" v-has="'attendance:delete'">删除</a> <a @click="handleDelete(record.id)" v-has:[authorCode.delete]="'attendance:delete'">删除</a>
</span> </span>
</a-table> </a-table>
</div> </div>
@@ -400,14 +400,112 @@ export default {
scopedSlots: {customRender: 'action'} scopedSlots: {customRender: 'action'}
} }
], ],
// 权限编码
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'
},
// 分标委会议的参会情况权限编码
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'
},
// 国际研讨会的参会情况的权限编码
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'
},
disableMixinCreated: true, disableMixinCreated: true,
addPerson:'addPerson12', // url: {
url: { // list: '/meeting/payMeetingSituation/page',
list: '/meeting/payMeetingSituation/page', // delete: '/meeting/payMeetingSituation/delete',
delete: '/meeting/payMeetingSituation/delete', // deleteBatch: '/meeting/payMeetingSituation/deleteBatch',
deleteBatch: '/meeting/payMeetingSituation/deleteBatch', // exportXlsUrl: '/meeting/payMeetingSituation/exportXls',
exportXlsUrl: '/meeting/payMeetingSituation/exportXls', // importExcelUrl: '/meeting/payMeetingSituation/importExcel'
importExcelUrl: '/meeting/payMeetingSituation/importExcel' // },
// 其他会议的url
otherMeetingUrl:{
list: '/meeting/ohterMeetingSituation/page',
delete: '/meeting/ohterMeetingSituation/delete',
deleteBatch: '/meeting/ohterMeetingSituation/deleteBatch',
exportXlsUrl: '/meeting/ohterMeetingSituation/exportXls',
importExcelUrl: '/meeting/ohterMeetingSituation/importExcel'
},
// 分标委会议的url
committeeMeetingUrl:{
list: '/meeting/committeeMeetingSituation/page',
delete: '/meeting/committeeMeetingSituation/delete',
deleteBatch: '/meeting/committeeMeetingSituation/deleteBatch',
exportXlsUrl: '/meeting/committeeMeetingSituation/exportXls',
importExcelUrl: '/meeting/committeeMeetingSituation/importExcel'
},
// 国际研讨会的url
internalMeetingUrl:{
list: '/meeting/internalMeetingSituation/page',
delete: '/meeting/internalMeetingSituation/delete',
deleteBatch: '/meeting/internalMeetingSituation/deleteBatch',
exportXlsUrl: '/meeting/internalMeetingSituation/exportXls',
importExcelUrl: '/meeting/internalMeetingSituation/importExcel'
},
// 标协会议的url
standardsMeetingUrl:{
list: '/meeting/standardsMeetingSituation/page',
delete: '/meeting/standardsMeetingSituation/delete',
deleteBatch: '/meeting/standardsMeetingSituation/deleteBatch',
exportXlsUrl: '/meeting/standardsMeetingSituation/exportXls',
importExcelUrl: '/meeting/standardsMeetingSituation/importExcel'
},
// 工作组会议的url
workGroupMeetingUrl:{
list: '/meeting/workGroupMeetingSituation/page',
delete: '/meeting/workGroupMeetingSituation/delete',
deleteBatch: '/meeting/workGroupMeetingSituation/deleteBatch',
exportXlsUrl: '/meeting/workGroupMeetingSituation/exportXls',
importExcelUrl: '/meeting/workGroupMeetingSituation/importExcel'
}, },
// 当前的会议信息详情 // 当前的会议信息详情
currentMeetingInfo: {}, currentMeetingInfo: {},
@@ -423,6 +521,8 @@ export default {
} }
}, },
created() { created() {
// 为不同会议的参会情况去设置不同的权限编码
this.setCodeByMeetingType(this.$route.query.meetingType)
// 获取会议详情 // 获取会议详情
const param = { const param = {
id: this.$route.query.id id: this.$route.query.id
@@ -488,6 +588,16 @@ export default {
return '' return ''
} }
}, },
// 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
}
},
// 报名链接 // 报名链接
signUpHerfUrl() { signUpHerfUrl() {
return `${window._CONFIG['singUpQRCodeURL']}?id=${this.$route.query.id}` return `${window._CONFIG['singUpQRCodeURL']}?id=${this.$route.query.id}`
@@ -616,6 +726,8 @@ export default {
return '国际研讨会' return '国际研讨会'
case '4': case '4':
return '其他会议' return '其他会议'
case '5':
return '分标委会议'
default: default:
return '其他会议' return '其他会议'
} }
@@ -669,6 +781,19 @@ export default {
newInput.remove() newInput.remove()
this.$message.success('复制成功') this.$message.success('复制成功')
}, },
/*
* 通过会议类型设置权限编码
* 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
}
}
} }
} }
</script> </script>
@@ -156,6 +156,41 @@ export default {
// 审核报名信息 // 审核报名信息
checkSignUp:'/meeting/payMeetingSituation/checkRegister' checkSignUp:'/meeting/payMeetingSituation/checkRegister'
}, },
// 其他会议url
otherMeetingUrl: {
// 审核凭证
check: '/meeting/ohterMeetingSituation/check',
// 审核报名信息
checkSignUp:'/meeting/ohterMeetingSituation/checkRegister'
},
// 工作组会议url
workGroupMeetingUrl: {
// 审核凭证
check: '/meeting/workGroupMeetingSituation/check',
// 审核报名信息
checkSignUp:'/meeting/workGroupMeetingSituation/checkRegister'
},
// 分标委会议url
committeeMeetingUrl: {
// 审核凭证
check: '/meeting/committeeMeetingSituation/check',
// 审核报名信息
checkSignUp:'/meeting/committeeMeetingSituation/checkRegister'
},
// 国际研讨会url
internalMeetingUrl: {
// 审核凭证
check: '/meeting/internalMeetingSituation/check',
// 审核报名信息
checkSignUp:'/meeting/internalMeetingSituation/checkRegister'
},
// 标协会议url
standardsMeetingUrl: {
// 审核凭证
check: '/meeting/standardsMeetingSituation/check',
// 审核报名信息
checkSignUp:'/meeting/standardsMeetingSituation/checkRegister'
},
// 审核结果选择 // 审核结果选择
checkBool:false, checkBool:false,
// 是否是审核报名信息 // 是否是审核报名信息
@@ -172,6 +207,8 @@ export default {
this.querySingUpUserInfo() this.querySingUpUserInfo()
// 控制行程信息显示 审核凭证不显示 // 控制行程信息显示 审核凭证不显示
this.checkSignBool = signUp || false this.checkSignBool = signUp || false
// 会议类型不同 url不同
this.url = Object.assign({},this.createUrlByMeetingType(this.$route.query.meetingType))
console.log(record) console.log(record)
}, },
close() { close() {
@@ -231,6 +268,18 @@ export default {
}else if(e.target.value === '0'){ }else if(e.target.value === '0'){
this.checkBool = true this.checkBool = true
} }
},
/*
* 根据会议类型不同的url
* */
createUrlByMeetingType(meetingType){
switch (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
}
} }
} }
} }
@@ -30,7 +30,7 @@
<script> <script>
import JUpload from '@comp/jero/JUpload' import JUpload from '@comp/jero/JUpload'
import {uploadMeetingFiles} from '@api/incomeMeetingApi' import {httpAction} from '@api/manage'
export default { export default {
name: 'UploadMeetFileModal', name: 'UploadMeetFileModal',
@@ -59,6 +59,7 @@ export default {
meetingFileIds:'', meetingFileIds:'',
validatorRules: { validatorRules: {
}, },
url:{}
} }
}, },
methods: { methods: {
@@ -68,6 +69,8 @@ export default {
edit(record) { edit(record) {
this.form.resetFields() this.form.resetFields()
this.model = Object.assign({},record) this.model = Object.assign({},record)
// 根据会议类型返回不同的url
this.url = Object.assign({},this.createUrlByMeetingType(record.meetingType +''))
this.meetingId = record.id this.meetingId = record.id
this.visible = true this.visible = true
// 拿到已经上传的会议文件进行回显 // 拿到已经上传的会议文件进行回显
@@ -82,6 +85,35 @@ export default {
this.$emit('close') this.$emit('close')
this.visible = false this.visible = false
}, },
createUrlByMeetingType(meetingType) {
switch (String(meetingType)) {
// 工作组会议
case '1':
return {
uploadFile: '/meeting/workGroupMeeting/uploadFile',
}
// 标协会议
case '2':
return {
uploadFile: '/meeting/standardsMeeting/uploadFile',
}
// 国际研讨会
case '3':
return {
uploadFile: '/meeting/internalMeeting/uploadFile',
}
// 其他会议
case '4':
return {
uploadFile: '/meeting/otherMeeting/uploadFile',
}
// 分标委会议
case '5':
return {
uploadFile: '/meeting/committeeMeeting/uploadFile',
}
}
},
handleOk() { handleOk() {
const that = this const that = this
// 触发表单验证 // 触发表单验证
@@ -91,7 +123,7 @@ export default {
fileIds:values.fileIds, fileIds:values.fileIds,
id:that.meetingId id:that.meetingId
} }
uploadMeetingFiles(params).then(res => { httpAction(this.url.uploadFile,params,'post').then(res => {
if(res.success){ if(res.success){
that.$message.success(res.message) that.$message.success(res.message)
that.$emit('ok') that.$emit('ok')
+19 -4
View File
@@ -92,6 +92,7 @@ import IconImg from '@/assets/imgs/icon/xin.png'
import MailContractModal from './modules/MailContractModal' import MailContractModal from './modules/MailContractModal'
import { downloadFile } from '@/api/manage' import { downloadFile } from '@/api/manage'
import SelectPrincipal from '@/components/company/SelectPrincipal' import SelectPrincipal from '@/components/company/SelectPrincipal'
import { checkCompanyAduit } from '../../api/incomePaymentsApi'
export default { export default {
name: 'ContractMail', name: 'ContractMail',
@@ -203,10 +204,24 @@ export default {
const com = Number(record.sendMethod) === 1 && 'ems' || 'shunfeng' const com = Number(record.sendMethod) === 1 && 'ems' || 'shunfeng'
window.open(`https://www.kuaidi100.com/chaxun?com=${ com }&nu=${ record.postNo }`) window.open(`https://www.kuaidi100.com/chaxun?com=${ com }&nu=${ record.postNo }`)
}, },
handleAdd: function (id) { handleAdd (id) {
this.$refs.modalForm.add(id) let param = {
this.$refs.modalForm.title = '邮寄' id: id
this.$refs.modalForm.disableSubmit = false }
checkCompanyAduit(param).then(res => {
if (res.success) {
// 企业审核未成功不可进行邮寄操作
if (res.result.indexOf('审核未成功') === -1) {
this.$refs.modalForm.add(id)
this.$refs.modalForm.title = '邮寄'
this.$refs.modalForm.disableSubmit = false
} else {
this.$message.warn(res.result)
}
} else {
this.$message.warn(res.message)
}
})
}, },
handleEdit: function (record) { handleEdit: function (record) {
this.$refs.modalForm.edit(record) this.$refs.modalForm.edit(record)
+6 -6
View File
@@ -111,6 +111,12 @@ export default {
width: 280, width: 280,
dataIndex: 'companyTemporaryName', dataIndex: 'companyTemporaryName',
scopedSlots: { customRender: 'projectName' } scopedSlots: { customRender: 'projectName' }
}, {
title: '打包年份',
align: 'center',
width: 140,
dataIndex: 'packYear',
scopedSlots: { customRender: 'text' }
}, { }, {
title: '企业联系人', title: '企业联系人',
align: 'center', align: 'center',
@@ -135,12 +141,6 @@ export default {
width: 180, width: 180,
dataIndex: 'receiptExpense', dataIndex: 'receiptExpense',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, {
title: '打包年份',
align: 'center',
width: 140,
dataIndex: 'packYear',
scopedSlots: { customRender: 'text' }
}, { }, {
title: '操作', title: '操作',
dataIndex: 'action', dataIndex: 'action',
@@ -74,7 +74,7 @@
<!-- 操作按钮区域--> <!-- 操作按钮区域-->
<div class="table-operator"> <div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has:[authorCode.add]="'committeeMeeting:add'">新增</a-button> <a-button type="primary" icon="plus" @click="handleAdd" v-has:[authorCode.add]="'committeeMeeting:add'">新增</a-button>
<a-button type="primary" icon="export" @click="handleExportXls('工作组会议维护')" v-has:[authorCode.search]="'committeeMeeting:export'">导出</a-button> <a-button type="primary" icon="export" @click="handleExportXls('会议维护')" v-has:[authorCode.search]="'committeeMeeting:export'">导出</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has:[authorCode.batchDel]="'committeeMeeting:batchDel'">批量删除</a-button> <a-button type="danger" icon="delete" @click="batchDel" v-has:[authorCode.batchDel]="'committeeMeeting:batchDel'">批量删除</a-button>
<!--只有工作会议与分标委会议才有--> <!--只有工作会议与分标委会议才有-->
<a-button type="primary" @click="publishRemind" v-if="meetingType === '5' " v-has="'committeeMeeting:publish'">发布</a-button> <a-button type="primary" @click="publishRemind" v-if="meetingType === '5' " v-has="'committeeMeeting:publish'">发布</a-button>
@@ -293,6 +293,7 @@ export default {
caseCommitteeId(){ caseCommitteeId(){
return this.$route.query.id ? this.$route.query.id : undefined return this.$route.query.id ? this.$route.query.id : undefined
}, },
// eslint-disable-next-line
url() { url() {
let meetingType = this.$route.query.meetingType + '' let meetingType = this.$route.query.meetingType + ''
// 标协会议 // 标协会议
@@ -357,11 +358,13 @@ export default {
* 参会情况 * 参会情况
* */ * */
toAttendance(record) { toAttendance(record) {
const that = this
this.$router.push({ this.$router.push({
path: '/incomePayments/meetManage/Attendance', path: '/incomePayments/meetManage/Attendance',
query: { query: {
id: record.id, id: record.id,
meetingName: record.meetingName meetingName: record.meetingName,
meetingType:that.$route.query.meetingType + ''
} }
}) })
}, },
@@ -79,7 +79,7 @@
<!-- 操作按钮区域--> <!-- 操作按钮区域-->
<div class="table-operator"> <div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'workGroupMeeting:add'" v-if="canOperate">新增</a-button> <a-button type="primary" icon="plus" @click="handleAdd" v-has="'workGroupMeeting:add'" v-if="canOperate">新增</a-button>
<a-button type="primary" icon="export" @click="handleExportXls('工作组会议维护')" <a-button type="primary" icon="export" @click="handleExportXls('工作组会议')"
v-has="'workGroupMeeting:export'">导出 v-has="'workGroupMeeting:export'">导出
</a-button> </a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'workGroupMeeting:batchDel'" v-if="canOperate">批量删除</a-button> <a-button type="danger" icon="delete" @click="batchDel" v-has="'workGroupMeeting:batchDel'" v-if="canOperate">批量删除</a-button>
@@ -276,7 +276,8 @@ export default {
this.$router.push({ this.$router.push({
path: '/incomePayments/meetManage/AddOrDetailMeet', path: '/incomePayments/meetManage/AddOrDetailMeet',
query: { query: {
workingGroupProjectId: currentId workingGroupProjectId: currentId,
meetingType:'1'
} }
}) })
}, },
@@ -330,7 +331,8 @@ export default {
path: '/incomePayments/meetManage/Attendance', path: '/incomePayments/meetManage/Attendance',
query: { query: {
id: record.id, id: record.id,
meetingName: record.meetingName meetingName: record.meetingName,
meetingType:'1'
} }
}) })
}, },
@@ -273,7 +273,8 @@ export default {
path: '/incomePayments/meetManage/Attendance', path: '/incomePayments/meetManage/Attendance',
query: { query: {
id: record.id, id: record.id,
meetingName: record.meetingName meetingName: record.meetingName,
meetingType:'3'
} }
}) })
}, },
+7 -6
View File
@@ -64,7 +64,7 @@
<!-- 操作按钮区域 --> <!-- 操作按钮区域 -->
<div class="table-operator"> <div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus" v-has="'otherMeeting:add'">新增</a-button> <a-button @click="handleAdd" type="primary" icon="plus" v-has="'otherMeeting:add'">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('会议管理')" v-has="'otherMeeting:export'">导出</a-button> <a-button type="primary" icon="download" @click="handleExportXls('其他会议')" v-has="'otherMeeting:export'">导出</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'otherMeeting:batchDel'">批量删除</a-button> <a-button type="danger" icon="delete" @click="batchDel" v-has="'otherMeeting:batchDel'">批量删除</a-button>
</div> </div>
@@ -204,10 +204,10 @@ name: 'OtherMeeting',
}, },
url: { url: {
list: '/meeting/otherMeeting/page', list: '/meeting/otherMeeting/page',
delete: '/meeting/otherMeeting/page/delete', delete: '/meeting/otherMeeting/delete',
deleteBatch: '/meeting/otherMeeting/page/deleteBatch', deleteBatch: '/meeting/otherMeeting/deleteBatch',
exportXlsUrl: '/meeting/otherMeeting/page/exportXls', exportXlsUrl: '/meeting/otherMeeting/exportXls',
importExcelUrl: '/meeting/otherMeeting/page/importExcel', importExcelUrl: '/meeting/otherMeeting/importExcel',
}, },
disableMixinCreated:true disableMixinCreated:true
} }
@@ -278,7 +278,8 @@ name: 'OtherMeeting',
path: '/incomePayments/meetManage/Attendance', path: '/incomePayments/meetManage/Attendance',
query: { query: {
id: record.id, id: record.id,
meetingName: record.meetingName meetingName: record.meetingName,
meetingType:'4'
} }
}) })
}, },
@@ -152,9 +152,7 @@
<a-row> <a-row>
<a-col :xl="12" :sm="24"> <a-col :xl="12" :sm="24">
<a-form-item label="资料" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="资料" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload file-type="pdf" <j-upload :return-id="true"
file-type-error-message="请pdf文件"
:return-id="true"
bizPath="payment" bizPath="payment"
v-decorator="['files', validatorRules.files]" v-decorator="['files', validatorRules.files]"
:trigger-change="true"></j-upload> :trigger-change="true"></j-upload>