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>
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
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 {
data() {
return {
+2 -4
View File
@@ -1,4 +1,4 @@
import {getAction, postAction} from '@api/manage'
import {getAction} from '@api/manage'
// 通过用户id获取用户信息
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')
// 通过id获取参会人详细信息
const getSingUpUserInfo = (params) => getAction('/meeting/payMeetingSituation/queryById',params)
// 会议管理上传会议资料
const uploadMeetingFiles = (params) => postAction('/meeting/payMeeting/uploadFile',params)
// 生成会议二维码
const createQcCode = (params) => getAction('/meeting/payMeeting/createBase64',params)
// 收入合同的新增会员项目的查询
@@ -20,7 +19,6 @@ export {
getMeetInfoById,
getAllWorkProjects,
getSingUpUserInfo,
uploadMeetingFiles,
createQcCode,
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 publishRemind = (param) => postAction('/meeting/payMeeting/publishReminder', param)
const publishRemind = (param) => postAction('/meeting/workGroupMeeting/publishReminder', param)
// 通过id获取收入合同信息
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 sysReminders = (param) => postAction('/reminders/edit', param)
// 检测企业审核是否通过
const checkCompanyAduit = (param) => getAction('/payMailContract/payMailContract/check', param)
export {
getWorkingGroupById,
@@ -106,5 +108,6 @@ export {
checkoutWorkingGroupPrincipal,
homePageStatistics,
homePageDataStatistics,
sysReminders
sysReminders,
checkCompanyAduit
}
+2 -2
View File
@@ -125,8 +125,8 @@
:dataSource="logisticsInfoList"
class="j-table-force-nowrap"
>
<span slot="action" class="action-span-cell">
<a @click="lookLogistics()">查看物流</a>
<span slot="action" class="action-span-cell" slot-scope="record">
<a @click="lookLogistics()" v-if="record.postStatus === 1">查看物流</a>
</span>
<!-- <p slot="expandedRowRender" slot-scope="record" style="margin: 0">-->
<!-- {{ 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
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
if (Vue.ls.get(ACCESS_TOKEN)) {
+1 -2
View File
@@ -5,10 +5,9 @@ const hasPermission = {
Vue.directive('has', {
inserted: (el, binding, vnode)=>{
// console.log('binding=====',binding.value)
// console.log('binding=====args',binding)
if(binding.arg){
binding.value = binding.arg
console.log( binding.value ,' binding.value =================')
// console.log( binding.value ,' binding.value =================')
}
// console.log("页面权限控制----");
//console.time()
@@ -28,17 +28,18 @@
</a-col>
<a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="签订单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<company-select placeholder="请选择签订单位"
v-decorator="['signedCompany',validatorRules.signedCompany]"
@change="handleSignedCompanyChange"></company-select>
<a-input placeholder="请输入签订单位"
v-decorator="['signedCompanyTemporaryName',validatorRules.signedCompanyTemporaryName]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
<a-col :xxl="6" :xl="8" :sm="12" style="margin-bottom: 0">
<a-form-item label="签订联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-contacts placeholder="请选择签订联系人"
:selected-company="selectedCompany"
:init-contacts="selectedContact"
v-decorator="['signedContactsId',validatorRules.signedContactsId]"></select-contacts>
<a-input placeholder="请输入签订联系人"
v-decorator="['signedContactsTemporaryName',validatorRules.signedContactsTemporaryName]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
<a-col :xxl="6" :xl="8" :sm="12">
@@ -124,11 +125,10 @@
</a-col>
<a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="合同约定主要时点" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择合同约定主要时点"
style="width: 100%;"
v-decorator="['contractTimePoints']"
:trigger-change="true"
date-format="YYYY-MM-DD"/>
<a-input placeholder="请输入合同约定主要时点"
v-decorator="['contractTimePoints',validatorRules.contractTimePoints]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
</a-row>
@@ -287,12 +287,12 @@ export default {
rules: [{ required: true, message: '请输入合同名称' }],
validateTrigger: 'blur'
},
signedCompany: {
rules: [{ required: true, message: '请选择签订单位' }],
validateTrigger: 'change'
signedCompanyTemporaryName: {
rules: [{ required: true, message: '请输入签订单位' }],
validateTrigger: 'blur'
},
signedContactsId: {
rules: [{ required: true, message: '请选择签订联系人' }],
signedContactsTemporaryName: {
rules: [{ required: true, message: '请输入签订联系人' }],
validateTrigger: 'blur'
},
principalId: {
@@ -364,17 +364,17 @@ export default {
let record
record = res.result
// 回显企业
record.signedCompany = {
id: record.signedCompanyTemporaryId,
companyName: record.signedCompanyTemporaryName
}
// record.signedCompany = {
// id: record.signedCompanyTemporaryId,
// companyName: record.signedCompanyTemporaryName
// }
// 回显联系人
this.selectedCompany = record.signedCompany
record.signedContactsId = record.signedContactsTemporaryId
this.selectedContact = {
id: record.signedContactsTemporaryId,
name: record.signedContactsTemporaryName
}
// this.selectedCompany = record.signedCompany
// record.signedContactsId = record.signedContactsTemporaryId
// this.selectedContact = {
// id: record.signedContactsTemporaryId,
// name: record.signedContactsTemporaryName
// }
this.model = Object.assign({}, record)
// 回显负责人部门
this.principalChange(this.model.principalId)
@@ -383,7 +383,7 @@ export default {
// 回显打包年份
this.isPackage = this.model.pack === 1
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
})
} else {
@@ -402,8 +402,6 @@ export default {
this.confirmLoading = true
if (this.installmentList && this.installmentList.length > 0) {
let formData = {}
values.signedCompanyId = values.signedCompany.id
delete values.signedCompany
formData.installment = this.installmentList
formData.contract = Object.assign(this.model, values)
console.log('表单提交数据', formData)
@@ -416,7 +414,6 @@ export default {
postAction(url, formData).then(res => {
if (res.success) {
this.contractId = res.result.id
this.edit(this.contractId)
this.$message.success(res.message)
// 跳转至支出合同list页面
this.$router.push({
@@ -603,11 +600,11 @@ export default {
if (this.accountsReceivableNum !== null && this.amountReceivedNum !== null) {
this.model.outstandingAmount = Number(this.accountsReceivableNum) - Number(this.amountReceivedNum)
this.model.outstandingAmount = this.model.outstandingAmount.toFixed(2)
if (this.model.outstandingAmount === 0) {
if (Number(this.model.outstandingAmount) === 0) {
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'
} else if (this.model.outstandingAmount === Number(this.accountsReceivableNum)) {
} else if (Number(this.model.outstandingAmount) === Number(this.accountsReceivableNum)) {
this.model.accountStatus = '1'
}
this.$nextTick(() => {
@@ -48,7 +48,7 @@
</a-col>
<a-col :xl="7" :lg="8" :md="9" :sm="24">
<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-col>
<a-col :xl="4" :lg="7" :md="8" :sm="24">
@@ -65,7 +65,8 @@
<!-- 操作按钮区域-->
<div class="table-operator">
<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>
</div>
<!-- 操作按钮区域-end-->
@@ -108,12 +109,12 @@
<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>
<!-- v-has="'revenueContract:edit'"-->
<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="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>
</span>
</a-table>
@@ -5,32 +5,37 @@
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<a-form :form="form">
<a-form-item label="审核人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入审核人"
v-decorator="['userName',validatorRules.userName]"
:maxLength='50'
:disabled="true"
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
<a-form-item label="审核" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['contractStatus', validatorRules.contractStatus]" @change="contractAuditStatuChange">
<a-radio :value="3">通过</a-radio>
<a-radio :value="4">拒绝</a-radio>
</a-radio-group>
</a-form-item>
<a-form-item label="拒绝说明" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="showExplainRemarks">
<a-textarea
placeholder="请输入拒绝说明"
v-decorator="['explainRemarks', validatorRules.explainRemarks]"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-form>
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-form-item label="审核人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入审核人"
v-decorator="['userName',validatorRules.userName]"
:maxLength='50'
:disabled="true"
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
<a-form-item label="审核" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['contractStatus', validatorRules.contractStatus]"
@change="contractAuditStatuChange">
<a-radio :value="3">通过</a-radio>
<a-radio :value="4">拒绝</a-radio>
</a-radio-group>
</a-form-item>
<a-form-item label="拒绝说明" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="showExplainRemarks">
<a-textarea
placeholder="请输入拒绝说明"
v-decorator="['explainRemarks', validatorRules.explainRemarks]"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
@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>
</template>
@@ -81,6 +86,7 @@ export default {
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
this.confirmLoading = true
values.contractId = this.contractId
const formData = Object.assign(this.model, values)
console.log('表单提交数据', formData)
@@ -1,191 +1,235 @@
<template>
<div>
<page-header-title :is-level-one="false" :img-for-icon="IconImg" level-two-title="收入合同详情"></page-header-title>
<a-card :bordered="false">
<!-- 主体信息-->
<div>
<div class="part-title">
<div class="part-title-text">主体信息</div>
<a-spin :spinning="loading">
<a-card :bordered="false">
<!-- 主体信息-->
<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>
<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-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-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-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-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>
</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="dateNodeShowList.length > 0">
<a-col :xxl="6" :xl="8" :sm="12" class="detail-item" v-for="(item, index) in dateNodeShowList" :key="index">
<a-col :xxl="4" :xl="8" :sm="12" class="detail-item">
<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-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>
</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>
<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-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"
<a-divider></a-divider>
<!-- 关联项目-->
<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">
<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>
<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>
</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"
<a-divider></a-divider>
<!-- 审核记录-->
<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">
<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>
<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>
</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>
<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">
<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>
<!-- 状态非已存档显示-->
<template v-if="detailData.status < 5">
<a-divider></a-divider>
<!-- 编辑审核存档-->
<div>
<div class="part-title">
<div class="part-title-text">操作</div>
</div>
</template>
<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 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 class="operator-btn">
<a-button
type="primary"
@click="handleEdit(detailData.id, detailData.contractNum)"
v-if="detailData.status === 1 || detailData.status === 4"
v-has="'revenueContract:edit'">
编辑
</a-button>
<a-button
type="primary"
@click="handleAudit(detailData.id)"
v-if="detailData.status === 2"
v-has="'revenueContract:aduit'">
审核
</a-button>
<a-button
type="primary"
@click="handleArchive(detailData.id)"
v-if="detailData.status === 3"
v-has="'revenueContract:archive'">
存档
</a-button>
</div>
</template>
<a-empty v-else></a-empty>
</div>
</div>
</a-card>
</div>
</template>
</a-card>
</a-spin>
<revenue-contract-aduit-module ref="aduitForm" @ok="operatorOk"></revenue-contract-aduit-module>
</div>
</template>
<script>
import IconImg from '@/assets/imgs/icon/icon_revenue_contract.png'
import PageHeaderTitle from '@/components/layouts/PageHeaderTitle'
import { getRevenueContractById } from '../../../../api/incomePaymentsApi'
import { archiveRevenueContract, getRevenueContractById } from '../../../../api/incomePaymentsApi'
import AssociatedProject from './AssociatedProject'
import RevenueContractAduitModule from './RevenueContractAduitModule'
export default {
name: 'RevenueContractDetail',
components: { PageHeaderTitle, AssociatedProject },
components: { PageHeaderTitle, AssociatedProject, RevenueContractAduitModule },
data() {
return {
IconImg,
loading: false,
detailData: {},
// 主体信息
mainInfoList: [
@@ -290,13 +334,71 @@ export default {
this.$refs.associatedProject.loadAssociatedProject()
},
methods: {
initDetailData(id) {
initDetailData() {
this.loading = true
let param = {
id: id
id: this.$route.query.revenueId
}
getRevenueContractById(param).then(res => {
this.detailData = res.result
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 {
margin: 20px 0;
}
.operator-btn {
margin-top: 10px;
button {
margin-right: 8px;
}
}
</style>
@@ -128,11 +128,10 @@
</a-col>
<a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="合同约定主要时点" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择合同约定主要时点"
style="width: 100%;"
v-decorator="['contractTimePoints']"
:trigger-change="true"
date-format="YYYY-MM-DD"/>
<a-input placeholder="请输入合同约定主要时点"
v-decorator="['contractTimePoints']"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
</a-row>
@@ -666,13 +665,13 @@ export default {
this.model.outstandingAmount = Number(this.accountsReceivableNum) - Number(this.amountReceivedNum)
this.model.outstandingAmount = this.model.outstandingAmount.toFixed(2)
// 未收金额 === 0,已付全款状态
if (this.model.outstandingAmount <= 0) {
if (Number(this.model.outstandingAmount) === 0) {
this.model.accountStatus = '3'
// 未收金额 > 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'
// 未收金额 === 应收金额,未付款状态
} else if (this.model.outstandingAmount === Number(this.accountsReceivableNum)) {
} else if (Number(this.model.outstandingAmount) === Number(this.accountsReceivableNum)) {
this.model.accountStatus = '1'
}
this.$nextTick(() => {
@@ -255,6 +255,8 @@ export default {
this.contranctInfo =Object.assign({},record)
console.log(record,'meetingPerson')
this.filters.companyId = record.signedCompanyId
// 列表查询加入打包年份
this.filters.packYear = record.packYear
//记录合同id
this.contractId = this.contranctInfo.id
// 记录打包状态
@@ -492,6 +492,8 @@ export default {
this.title = '编辑会议'
// 修改会议类型 控制dom显示 编辑取接口查到的会议类型
this.meetingType = record.meetingType + ''
// 编辑根据接口返回的会议类型获取不同的会议url
this.url = this.createUrlByMeetingType(this.meetingType)
} else {
this.title = '新增会议'
// 如果是标协会会议需要显示酒店联系人
@@ -503,6 +505,8 @@ export default {
}
// 新增取路由参数
this.meetingType = this.$route.query.meetingType
// 新增根据路由参数 会议类型更换不同的接口
this.url = this.createUrlByMeetingType(this.meetingType)
}
console.log(this.model)
// 召开时间回显
@@ -696,6 +700,38 @@ export default {
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) {
@@ -160,7 +160,7 @@
</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="'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,16 +173,16 @@
<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:[addPerson]="'attendance:add'">添加参会人</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('会员项目')" v-has:[addPerson]="'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="'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>-->
<!--只有国际研讨会才会有设置对接人-->
<a-button type="primary" @click="batchSetDocker" v-if="currentMeetingInfo.meetingType === '3' "
v-has="'attendance:batchSetDocker'">设置对接人
v-has="'internalMeetingSituation:batchSetDocker'">设置对接人
</a-button>
</div>
@@ -242,14 +242,14 @@
<span slot="action" slot-scope="text, record" class="action-span-cell">
<!-- 只有缴费方式为汇款并且上传了汇款凭证的的才会有审核按钮-->
<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)"
v-show="(currentMeetingInfo.meetingType === '1' || currentMeetingInfo.meetingType === '5') && record.registerCheckResult !== 1 "
v-has="'attendance:auditSignUp'">审核报名信息</a>
<a @click="handleEdit(record)" v-has="'attendance:edit'">编辑</a>
v-has:[authorCode.auditSignUpInfo]="'attendance:auditSignUp'">审核报名信息</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>
</a-table>
</div>
@@ -400,14 +400,112 @@ export default {
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,
addPerson:'addPerson12',
url: {
list: '/meeting/payMeetingSituation/page',
delete: '/meeting/payMeetingSituation/delete',
deleteBatch: '/meeting/payMeetingSituation/deleteBatch',
exportXlsUrl: '/meeting/payMeetingSituation/exportXls',
importExcelUrl: '/meeting/payMeetingSituation/importExcel'
// url: {
// list: '/meeting/payMeetingSituation/page',
// delete: '/meeting/payMeetingSituation/delete',
// deleteBatch: '/meeting/payMeetingSituation/deleteBatch',
// exportXlsUrl: '/meeting/payMeetingSituation/exportXls',
// 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: {},
@@ -423,6 +521,8 @@ export default {
}
},
created() {
// 为不同会议的参会情况去设置不同的权限编码
this.setCodeByMeetingType(this.$route.query.meetingType)
// 获取会议详情
const param = {
id: this.$route.query.id
@@ -488,6 +588,16 @@ export default {
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() {
return `${window._CONFIG['singUpQRCodeURL']}?id=${this.$route.query.id}`
@@ -616,6 +726,8 @@ export default {
return '国际研讨会'
case '4':
return '其他会议'
case '5':
return '分标委会议'
default:
return '其他会议'
}
@@ -669,6 +781,19 @@ export default {
newInput.remove()
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>
@@ -156,6 +156,41 @@ export default {
// 审核报名信息
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,
// 是否是审核报名信息
@@ -172,6 +207,8 @@ export default {
this.querySingUpUserInfo()
// 控制行程信息显示 审核凭证不显示
this.checkSignBool = signUp || false
// 会议类型不同 url不同
this.url = Object.assign({},this.createUrlByMeetingType(this.$route.query.meetingType))
console.log(record)
},
close() {
@@ -231,6 +268,18 @@ export default {
}else if(e.target.value === '0'){
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>
import JUpload from '@comp/jero/JUpload'
import {uploadMeetingFiles} from '@api/incomeMeetingApi'
import {httpAction} from '@api/manage'
export default {
name: 'UploadMeetFileModal',
@@ -59,6 +59,7 @@ export default {
meetingFileIds:'',
validatorRules: {
},
url:{}
}
},
methods: {
@@ -68,6 +69,8 @@ export default {
edit(record) {
this.form.resetFields()
this.model = Object.assign({},record)
// 根据会议类型返回不同的url
this.url = Object.assign({},this.createUrlByMeetingType(record.meetingType +''))
this.meetingId = record.id
this.visible = true
// 拿到已经上传的会议文件进行回显
@@ -82,6 +85,35 @@ export default {
this.$emit('close')
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() {
const that = this
// 触发表单验证
@@ -91,7 +123,7 @@ export default {
fileIds:values.fileIds,
id:that.meetingId
}
uploadMeetingFiles(params).then(res => {
httpAction(this.url.uploadFile,params,'post').then(res => {
if(res.success){
that.$message.success(res.message)
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 { downloadFile } from '@/api/manage'
import SelectPrincipal from '@/components/company/SelectPrincipal'
import { checkCompanyAduit } from '../../api/incomePaymentsApi'
export default {
name: 'ContractMail',
@@ -203,10 +204,24 @@ export default {
const com = Number(record.sendMethod) === 1 && 'ems' || 'shunfeng'
window.open(`https://www.kuaidi100.com/chaxun?com=${ com }&nu=${ record.postNo }`)
},
handleAdd: function (id) {
this.$refs.modalForm.add(id)
this.$refs.modalForm.title = '邮寄'
this.$refs.modalForm.disableSubmit = false
handleAdd (id) {
let param = {
id: id
}
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) {
this.$refs.modalForm.edit(record)
+6 -6
View File
@@ -111,6 +111,12 @@ export default {
width: 280,
dataIndex: 'companyTemporaryName',
scopedSlots: { customRender: 'projectName' }
}, {
title: '打包年份',
align: 'center',
width: 140,
dataIndex: 'packYear',
scopedSlots: { customRender: 'text' }
}, {
title: '企业联系人',
align: 'center',
@@ -135,12 +141,6 @@ export default {
width: 180,
dataIndex: 'receiptExpense',
scopedSlots: { customRender: 'text' }
}, {
title: '打包年份',
align: 'center',
width: 140,
dataIndex: 'packYear',
scopedSlots: { customRender: 'text' }
}, {
title: '操作',
dataIndex: 'action',
@@ -74,7 +74,7 @@
<!-- 操作按钮区域-->
<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="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="primary" @click="publishRemind" v-if="meetingType === '5' " v-has="'committeeMeeting:publish'">发布</a-button>
@@ -293,6 +293,7 @@ export default {
caseCommitteeId(){
return this.$route.query.id ? this.$route.query.id : undefined
},
// eslint-disable-next-line
url() {
let meetingType = this.$route.query.meetingType + ''
// 标协会议
@@ -357,11 +358,13 @@ export default {
* 参会情况
* */
toAttendance(record) {
const that = this
this.$router.push({
path: '/incomePayments/meetManage/Attendance',
query: {
id: record.id,
meetingName: record.meetingName
meetingName: record.meetingName,
meetingType:that.$route.query.meetingType + ''
}
})
},
@@ -79,7 +79,7 @@
<!-- 操作按钮区域-->
<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="export" @click="handleExportXls('工作组会议维护')"
<a-button type="primary" icon="export" @click="handleExportXls('工作组会议')"
v-has="'workGroupMeeting:export'">导出
</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({
path: '/incomePayments/meetManage/AddOrDetailMeet',
query: {
workingGroupProjectId: currentId
workingGroupProjectId: currentId,
meetingType:'1'
}
})
},
@@ -330,7 +331,8 @@ export default {
path: '/incomePayments/meetManage/Attendance',
query: {
id: record.id,
meetingName: record.meetingName
meetingName: record.meetingName,
meetingType:'1'
}
})
},
@@ -273,7 +273,8 @@ export default {
path: '/incomePayments/meetManage/Attendance',
query: {
id: record.id,
meetingName: record.meetingName
meetingName: record.meetingName,
meetingType:'3'
}
})
},
+7 -6
View File
@@ -64,7 +64,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<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>
</div>
@@ -204,10 +204,10 @@ name: 'OtherMeeting',
},
url: {
list: '/meeting/otherMeeting/page',
delete: '/meeting/otherMeeting/page/delete',
deleteBatch: '/meeting/otherMeeting/page/deleteBatch',
exportXlsUrl: '/meeting/otherMeeting/page/exportXls',
importExcelUrl: '/meeting/otherMeeting/page/importExcel',
delete: '/meeting/otherMeeting/delete',
deleteBatch: '/meeting/otherMeeting/deleteBatch',
exportXlsUrl: '/meeting/otherMeeting/exportXls',
importExcelUrl: '/meeting/otherMeeting/importExcel',
},
disableMixinCreated:true
}
@@ -278,7 +278,8 @@ name: 'OtherMeeting',
path: '/incomePayments/meetManage/Attendance',
query: {
id: record.id,
meetingName: record.meetingName
meetingName: record.meetingName,
meetingType:'4'
}
})
},
@@ -152,9 +152,7 @@
<a-row>
<a-col :xl="12" :sm="24">
<a-form-item label="资料" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload file-type="pdf"
file-type-error-message="请pdf文件"
:return-id="true"
<j-upload :return-id="true"
bizPath="payment"
v-decorator="['files', validatorRules.files]"
:trigger-change="true"></j-upload>