Compare commits
144
Commits
6348ba4455
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c5328b9cc | ||
|
|
91628f6d31 | ||
|
|
bff0936e80 | ||
|
|
989539f500 | ||
|
|
9d1e5bb25f | ||
|
|
c76b7e40e3 | ||
|
|
1922dbd026 | ||
|
|
ad861472dc | ||
|
|
04adf4338d | ||
|
|
a1bde7a838 | ||
|
|
6a7e13774a | ||
|
|
dd3cbcbd82 | ||
|
|
c839e1b89c | ||
|
|
8e2b42f82b | ||
|
|
bebebdffdf | ||
|
|
3e998dc80c | ||
|
|
f4ca6b3611 | ||
|
|
cced654401 | ||
|
|
01cbf6b9ee | ||
|
|
4381bdca90 | ||
|
|
57df79c6f1 | ||
|
|
767299675b | ||
|
|
339a29feb5 | ||
|
|
80721abca6 | ||
|
|
c5b204f4d0 | ||
|
|
804aeffb4a | ||
|
|
d20e10f6dc | ||
|
|
468c7c3460 | ||
|
|
b649c9706d | ||
|
|
7afa2f18ca | ||
|
|
394692d0c3 | ||
|
|
0e9102a544 | ||
|
|
3b32cf9be3 | ||
|
|
1ebdfba46b | ||
|
|
9484e4a058 | ||
|
|
9fc68a598a | ||
|
|
23b9383c4f | ||
|
|
f7f3059289 | ||
|
|
e75fe6cc80 | ||
|
|
d69a53dec6 | ||
|
|
91f535fa29 | ||
|
|
773372161c | ||
|
|
38f7113cdc | ||
|
|
38063d2ae7 | ||
|
|
7e646f0408 | ||
|
|
a6d2f71292 | ||
|
|
b715ae4b95 | ||
|
|
12c69c1236 | ||
|
|
68450275e7 | ||
|
|
884b39f7d8 | ||
|
|
37079c9f35 | ||
|
|
28a742fc4e | ||
|
|
29c38e6c39 | ||
|
|
38b2194af0 | ||
|
|
94767de37e | ||
|
|
c43aa5c026 | ||
|
|
27ecc0e753 | ||
|
|
95bd343b3d | ||
|
|
eb0df1c89f | ||
|
|
87398e1cf4 | ||
|
|
6cb5058d27 | ||
|
|
8c05a04aa4 | ||
|
|
7b42c5b2d4 | ||
|
|
db19e0c141 | ||
|
|
c4ca153ff3 | ||
|
|
665aaf68ba | ||
|
|
423b529617 | ||
|
|
cbcdc87e2c | ||
|
|
58295dbcfd | ||
|
|
c082b56756 | ||
|
|
001689e93d | ||
|
|
65da1fa6cd | ||
|
|
f011d3849b | ||
|
|
cb9688229f | ||
|
|
5172d0ca42 | ||
|
|
241a860a97 | ||
|
|
7cb5e831d8 | ||
|
|
622e384104 | ||
|
|
4b9747d188 | ||
|
|
f0e5bf9fb7 | ||
|
|
333186220a | ||
|
|
6e746ee8b7 | ||
|
|
d0b10fcbfd | ||
|
|
d12ca7c8c1 | ||
|
|
53449cb843 | ||
|
|
e98ff8ddae | ||
|
|
caa5a4a27f | ||
|
|
41f34428cc | ||
|
|
6e720684ab | ||
|
|
0664599927 | ||
|
|
93d3bf1abf | ||
|
|
b1d1ecde9b | ||
|
|
b06b9a8a67 | ||
|
|
d15bcd710b | ||
|
|
a76a945cc8 | ||
|
|
3e36bd9dab | ||
|
|
e065cf517d | ||
|
|
f85fa4427f | ||
|
|
fc7bbaaffc | ||
|
|
ddb5f14674 | ||
|
|
a1a416dd86 | ||
|
|
9bddd48ef4 | ||
|
|
e943be1e5a | ||
|
|
8b8c8a49da | ||
|
|
0a7a2cdb59 | ||
|
|
b8dc49e0d9 | ||
|
|
1a1ca0e341 | ||
|
|
1938867db2 | ||
|
|
0f886b6df3 | ||
|
|
43388454db | ||
|
|
36c4e412e9 | ||
|
|
7ed658f9d8 | ||
|
|
734675228e | ||
|
|
dd2554be80 | ||
|
|
1f0e17bfdb | ||
|
|
08bd176207 | ||
|
|
3aab024209 | ||
|
|
21fde02b1e | ||
|
|
7f5a13d05d | ||
|
|
ca068602d9 | ||
|
|
a2a0128561 | ||
|
|
06c3505cc3 | ||
|
|
eb5c3e77e0 | ||
|
|
fd37cb5de6 | ||
|
|
37ea030b2f | ||
|
|
05036be825 | ||
|
|
a82cdc55e0 | ||
|
|
50b7bcf334 | ||
|
|
f3f36f4ad2 | ||
|
|
27f8b4366b | ||
|
|
f32ca4e94a | ||
|
|
530134a3dc | ||
|
|
df047d91f5 | ||
|
|
bae6e5ade4 | ||
|
|
42707aea1d | ||
|
|
82bb7a2cbe | ||
|
|
64dd4762d6 | ||
|
|
a1623df600 | ||
|
|
ad7d2d3f40 | ||
|
|
8c3856aaca | ||
|
|
b88c1bdf2e | ||
|
|
717c292b5c | ||
|
|
f6e5358d3f | ||
|
|
7c2e9a375c |
+4
-1
@@ -120,6 +120,8 @@ export const transitRESTful = {
|
|||||||
const getContactsByCompany = (params) => getAction('/company/payContactsManagement/queryByCompany', params)
|
const getContactsByCompany = (params) => getAction('/company/payContactsManagement/queryByCompany', params)
|
||||||
// 通过企业名称获取该企业下的联系人无权限接口
|
// 通过企业名称获取该企业下的联系人无权限接口
|
||||||
const getContactsByCompanyNoLimit = (params) => getAction('/company/payContactsManagement/queryByCompanyMeeting', params)
|
const getContactsByCompanyNoLimit = (params) => getAction('/company/payContactsManagement/queryByCompanyMeeting', params)
|
||||||
|
// 通过企业名称获取该企业下的联系人 功能安全中心接口只能看到父级的
|
||||||
|
const getContactsByCompanyBySafetyCenter = (params) => getAction('/company/payContactsManagement/queryBySafetyCenter', params)
|
||||||
// 通过联系人id获取联系人信息
|
// 通过联系人id获取联系人信息
|
||||||
const getContactsById = (param) => getAction('/company/payContactsManagement/queryByIdMeeting', param)
|
const getContactsById = (param) => getAction('/company/payContactsManagement/queryByIdMeeting', param)
|
||||||
// 企业管理员重置密码
|
// 企业管理员重置密码
|
||||||
@@ -203,7 +205,8 @@ export {
|
|||||||
ssLoginEnterTerminal,
|
ssLoginEnterTerminal,
|
||||||
companyAdminResetPassword,
|
companyAdminResetPassword,
|
||||||
companyAdminEnable,
|
companyAdminEnable,
|
||||||
queryCompanyInfoById
|
queryCompanyInfoById,
|
||||||
|
getContactsByCompanyBySafetyCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ const getStandardNumberList = (params) => getAction('/meeting/standardsMeeting/g
|
|||||||
// 国际研讨会-WASIC-通过会议ID获取关联主题的信息
|
// 国际研讨会-WASIC-通过会议ID获取关联主题的信息
|
||||||
const getLinkTopics = (params) => getAction('/meeting/internalMeeting/getLinkTopics', params)
|
const getLinkTopics = (params) => getAction('/meeting/internalMeeting/getLinkTopics', params)
|
||||||
|
|
||||||
|
// 通过id获取海外会议参会人详细信息
|
||||||
|
const getSingUpUserInfoOverseas = (params) => getAction('/meeting/overseasSituation/queryById', params)
|
||||||
|
|
||||||
export {
|
export {
|
||||||
getUserInfo,
|
getUserInfo,
|
||||||
@@ -46,5 +48,6 @@ export {
|
|||||||
addGenerateCodeList,
|
addGenerateCodeList,
|
||||||
editGenerateCodeList,
|
editGenerateCodeList,
|
||||||
getStandardNumberList,
|
getStandardNumberList,
|
||||||
getLinkTopics
|
getLinkTopics,
|
||||||
|
getSingUpUserInfoOverseas
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -170,6 +170,12 @@ const updatePackageEnterprise = (params) => postAction('/company/payCompanyManag
|
|||||||
// 判断是否打包企业
|
// 判断是否打包企业
|
||||||
const judgeCompanyIsPackaged = (params) => getAction('/company/payCompanyManagement/judgeCompanyIsPackaged', params)
|
const judgeCompanyIsPackaged = (params) => getAction('/company/payCompanyManagement/judgeCompanyIsPackaged', params)
|
||||||
|
|
||||||
|
// 2024年6月变更 功能安全中心
|
||||||
|
// 通过id获取功能安全中心详情
|
||||||
|
const getSafetyCenterById = (params) => getAction('/SafetyCenter/queryById', params)
|
||||||
|
// 功能安全中心会议的发布提醒
|
||||||
|
const safetyCenterPublishRemind = (param) => postAction('/meeting/safetyCenterMeeting/release', param)
|
||||||
|
|
||||||
export {
|
export {
|
||||||
getWorkingGroupById,
|
getWorkingGroupById,
|
||||||
getChargeNotice,
|
getChargeNotice,
|
||||||
@@ -257,5 +263,8 @@ export {
|
|||||||
workingGroupEditAccount,
|
workingGroupEditAccount,
|
||||||
getAllDraftProjects,
|
getAllDraftProjects,
|
||||||
updatePackageEnterprise,
|
updatePackageEnterprise,
|
||||||
judgeCompanyIsPackaged
|
judgeCompanyIsPackaged,
|
||||||
|
|
||||||
|
getSafetyCenterById,
|
||||||
|
safetyCenterPublishRemind
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
@@ -7,7 +7,7 @@
|
|||||||
@cancel="handleCancel"
|
@cancel="handleCancel"
|
||||||
cancelText="关闭">
|
cancelText="关闭">
|
||||||
<!-- 基本信息begin-->
|
<!-- 基本信息begin-->
|
||||||
<section class="base-info" v-if="projectType !== ProjectTypeEnums.DRAFT_PRO.value">
|
<section class="base-info" v-if="hideCostInfo && !isSafetyCenterMeeting">
|
||||||
<h3 class="title">基本信息</h3>
|
<h3 class="title">基本信息</h3>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12" class="detail-item">
|
<a-col :span="12" class="detail-item">
|
||||||
@@ -204,8 +204,8 @@
|
|||||||
<!-- 企业联系人信息start-->
|
<!-- 企业联系人信息start-->
|
||||||
<section>
|
<section>
|
||||||
<h3 class="title">企业联系人信息</h3>
|
<h3 class="title">企业联系人信息</h3>
|
||||||
<!-- 项目类型不是工作组或起草组。正常显示一个企业联系人的信息-->
|
<!-- 项目类型不是工作组或起草组或功能安全中心。正常显示一个企业联系人的信息-->
|
||||||
<template v-if="![2, 7].includes(basicInfo.projectType)">
|
<template v-if="![2, 7, ProjectTypeEnums.SAFETY_CENTER_PRO.value].includes(basicInfo.projectType)">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<label>企业联系人:</label>
|
<label>企业联系人:</label>
|
||||||
@@ -243,8 +243,8 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
</template>
|
</template>
|
||||||
<!-- 工作组项目或起草组项目使用循环显示出联系人信息-->
|
<!-- 工作组项目或起草组项目或功能安全中心使用循环显示出联系人信息-->
|
||||||
<template v-if="[2, 7].includes(basicInfo.projectType) && basicInfo.payWorkingGroupSubItemContactsList && basicInfo.payWorkingGroupSubItemContactsList.length > 0">
|
<template v-if="[2, 7, ProjectTypeEnums.SAFETY_CENTER_PRO.value].includes(basicInfo.projectType) && basicInfo.payWorkingGroupSubItemContactsList && basicInfo.payWorkingGroupSubItemContactsList.length > 0">
|
||||||
<div v-for="(item, index) in basicInfo.payWorkingGroupSubItemContactsList" :key="index + ''">
|
<div v-for="(item, index) in basicInfo.payWorkingGroupSubItemContactsList" :key="index + ''">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12" class="detail-item">
|
<a-col :span="12" class="detail-item">
|
||||||
@@ -292,7 +292,7 @@
|
|||||||
</section>
|
</section>
|
||||||
<!-- 企业联系人信息end-->
|
<!-- 企业联系人信息end-->
|
||||||
<!--到账信息begin-->
|
<!--到账信息begin-->
|
||||||
<section class="payment-info" v-if="projectType !== ProjectTypeEnums.DRAFT_PRO.value">
|
<section class="payment-info" v-if="hideCostInfo && !isSafetyCenterMeeting">
|
||||||
<h3 class="title">到账信息</h3>
|
<h3 class="title">到账信息</h3>
|
||||||
<div class="payment-info-box">
|
<div class="payment-info-box">
|
||||||
<section class="payment-info-title">到账信息</section>
|
<section class="payment-info-title">到账信息</section>
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
</section>
|
</section>
|
||||||
<!--到账信息end-->
|
<!--到账信息end-->
|
||||||
<!--开票邮寄信息begin-->
|
<!--开票邮寄信息begin-->
|
||||||
<section class="logistics-info" v-if="projectType !== ProjectTypeEnums.DRAFT_PRO.value">
|
<section class="logistics-info" v-if="hideCostInfo && !isSafetyCenterMeeting">
|
||||||
<h3 class="title">开票邮寄信息</h3>
|
<h3 class="title">开票邮寄信息</h3>
|
||||||
<div class="wrap-table">
|
<div class="wrap-table">
|
||||||
<a-table
|
<a-table
|
||||||
@@ -341,7 +341,7 @@
|
|||||||
import { queryCommonProjectById, getStanderMemberLastProofInfo, getCertificateLastProofInfo } from '@api/incomePaymentsApi'
|
import { queryCommonProjectById, getStanderMemberLastProofInfo, getCertificateLastProofInfo } from '@api/incomePaymentsApi'
|
||||||
import JEllipsis from '@comp/jero/JEllipsis'
|
import JEllipsis from '@comp/jero/JEllipsis'
|
||||||
import PreviewFile from './jero/PreviewFile'
|
import PreviewFile from './jero/PreviewFile'
|
||||||
import { ProjectTypeEnums } from '@/enums/commonEnums'
|
import {MeetingTypeEnums, ProjectTypeEnums} from '@/enums/commonEnums'
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import {ACCESS_TOKEN} from '@/store/mutation-types'
|
import {ACCESS_TOKEN} from '@/store/mutation-types'
|
||||||
import PreviewFileModal from '@comp/PreviewFileModal'
|
import PreviewFileModal from '@comp/PreviewFileModal'
|
||||||
@@ -414,6 +414,11 @@ export default {
|
|||||||
projectType:{
|
projectType:{
|
||||||
type: Number,
|
type: Number,
|
||||||
required: false
|
required: false
|
||||||
|
},
|
||||||
|
// 会议类型
|
||||||
|
meetingType: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -441,6 +446,16 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
// 是否隐藏金额相关信息(起草组、功能安全中心)
|
||||||
|
hideCostInfo () {
|
||||||
|
const arr = [ProjectTypeEnums.DRAFT_PRO.value, ProjectTypeEnums.SAFETY_CENTER_PRO.value]
|
||||||
|
return !arr.includes(this.projectType)
|
||||||
|
},
|
||||||
|
// 是否功能安全中心会议
|
||||||
|
isSafetyCenterMeeting () {
|
||||||
|
console.log(this.meetingType)
|
||||||
|
return this.meetingType + '' === MeetingTypeEnums.safetyCenter.value
|
||||||
|
},
|
||||||
// 是否是第三方代付
|
// 是否是第三方代付
|
||||||
hasOtherCompany() {
|
hasOtherCompany() {
|
||||||
// 去掉未审核 去判断的企业是否是标协会企业
|
// 去掉未审核 去判断的企业是否是标协会企业
|
||||||
|
|||||||
@@ -77,6 +77,18 @@ export default {
|
|||||||
type:Boolean,
|
type:Boolean,
|
||||||
required:false,
|
required:false,
|
||||||
default:false
|
default:false
|
||||||
|
},
|
||||||
|
// 自定义列表接口(功能安全中心只能看到父级已添加的企业)
|
||||||
|
customListUrl: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
// 自定义列表查询参数,功能安全中心会议
|
||||||
|
customListParams: {
|
||||||
|
type: Object,
|
||||||
|
required: false,
|
||||||
|
default: () => ({})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -133,7 +145,16 @@ export default {
|
|||||||
params.memberNature = this.memberNature
|
params.memberNature = this.memberNature
|
||||||
}
|
}
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getAction(this.url.list, params).then((res) => {
|
let url = this.url.list
|
||||||
|
// 如果有自定义的查询列表接口,就用自定义的查询以及查询参数
|
||||||
|
if (this.customListUrl) {
|
||||||
|
url = this.customListUrl
|
||||||
|
}
|
||||||
|
// 如果有自定义查询参数,就将参数合并进去
|
||||||
|
if (this.customListParams) {
|
||||||
|
Object.assign(params, this.customListParams)
|
||||||
|
}
|
||||||
|
getAction(url, params).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||||
this.dataSource = res.result.records || res.result
|
this.dataSource = res.result.records || res.result
|
||||||
@@ -180,7 +201,23 @@ export default {
|
|||||||
resultArr.push(row)
|
resultArr.push(row)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.selectedCompany = [...this.selectedCompany, ...resultArr]
|
// 2024-07-25 当前页没有选择的数据
|
||||||
|
let unSelectedCompany = []
|
||||||
|
this.dataSource.map(tt => {
|
||||||
|
if(!selectedRowKeys.includes(tt.id)) {
|
||||||
|
unSelectedCompany.push(tt)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取之前选择的 非本页的标准信息
|
||||||
|
let lastSelectedCompany = []
|
||||||
|
this.selectedCompany.forEach(row => {
|
||||||
|
let ele = unSelectedCompany.find(ele => ele.id === row.id)
|
||||||
|
if(!ele) {
|
||||||
|
lastSelectedCompany.push(row)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.selectedCompany = [...lastSelectedCompany, ...resultArr]
|
||||||
// this.selectedCompany = selectionRows
|
// this.selectedCompany = selectionRows
|
||||||
}
|
}
|
||||||
this.selectedRowKeys = selectedRowKeys
|
this.selectedRowKeys = selectedRowKeys
|
||||||
|
|||||||
@@ -94,7 +94,6 @@ export default {
|
|||||||
* @param value
|
* @param value
|
||||||
*/
|
*/
|
||||||
handleOk(value) {
|
handleOk(value) {
|
||||||
console.log('--------value---------', value)
|
|
||||||
let company = {id: undefined, companyName: undefined}
|
let company = {id: undefined, companyName: undefined}
|
||||||
// 多选的时候 全部放在一起,以逗号分隔
|
// 多选的时候 全部放在一起,以逗号分隔
|
||||||
if (this.isMultiple) {
|
if (this.isMultiple) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<!-- 在点击组件时获取联系人列表-->
|
<!-- 在点击组件时获取联系人列表-->
|
||||||
<div>
|
<div>
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="20">
|
<a-col :span="canAdd ? 20 : 24">
|
||||||
<a-select :value="value"
|
<a-select :value="value"
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
v-on="$listeners"
|
v-on="$listeners"
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<a-select-option v-for="item in contactsList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
|
<a-select-option v-for="item in contactsList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="4" class="form-btn">
|
<a-col :span="4" class="form-btn" v-if="canAdd">
|
||||||
<a-button icon="plus" v-bind="$attrs" @click="addContacts"></a-button>
|
<a-button icon="plus" v-bind="$attrs" @click="addContacts"></a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -50,6 +50,12 @@ export default {
|
|||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// 是否可以新增:true--可以;false--不可以
|
||||||
|
canAdd: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
value: {
|
value: {
|
||||||
type: [String, Object],
|
type: [String, Object],
|
||||||
required: false,
|
required: false,
|
||||||
@@ -72,6 +78,18 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
// 自定义列表接口(功能安全中心只能看到父级已添加的企业)
|
||||||
|
customListFn: {
|
||||||
|
type: [Function, null],
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
// 自定义列表查询参数,功能安全中心会议
|
||||||
|
customListParams: {
|
||||||
|
type: Object,
|
||||||
|
required: false,
|
||||||
|
default: () => ({})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -126,6 +144,22 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
params.companyId = null
|
params.companyId = null
|
||||||
}
|
}
|
||||||
|
// 如果有自定义查询参数,就将参数合并进去
|
||||||
|
if (this.customListParams) {
|
||||||
|
Object.assign(params, this.customListParams)
|
||||||
|
}
|
||||||
|
// 如果有自定义查询接口,就用自定义的
|
||||||
|
if (this.customListFn) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
this.customListFn(params).then(res => {
|
||||||
|
this.contactsList = res.result
|
||||||
|
if (this.initContacts && this.initContacts.id) {
|
||||||
|
this.contactsList.push(this.initContacts)
|
||||||
|
}
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
// 是否调用无权限接口
|
// 是否调用无权限接口
|
||||||
if (this.isLimit) {
|
if (this.isLimit) {
|
||||||
// 调用无权限接口
|
// 调用无权限接口
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: "anticon-jeecg"; /* Project id 2798517 */
|
font-family: "anticon-jeecg"; /* Project id 2798517 */
|
||||||
src: url('iconfont.woff2?t=1705570227820') format('woff2'),
|
src: url('iconfont.woff2?t=1717644876199') format('woff2'),
|
||||||
url('iconfont.woff?t=1705570227820') format('woff'),
|
url('iconfont.woff?t=1717644876199') format('woff'),
|
||||||
url('iconfont.ttf?t=1705570227820') format('truetype');
|
url('iconfont.ttf?t=1717644876199') format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
.anticon-jeecg {
|
.anticon-jeecg {
|
||||||
@@ -13,6 +13,10 @@
|
|||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.anticonyinzhang:before {
|
||||||
|
content: "\e785";
|
||||||
|
}
|
||||||
|
|
||||||
.anticondraftgroup:before {
|
.anticondraftgroup:before {
|
||||||
content: "\e65e";
|
content: "\e65e";
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -5,6 +5,13 @@
|
|||||||
"css_prefix_text": "anticon",
|
"css_prefix_text": "anticon",
|
||||||
"description": "",
|
"description": "",
|
||||||
"glyphs": [
|
"glyphs": [
|
||||||
|
{
|
||||||
|
"icon_id": "39837879",
|
||||||
|
"name": "cus_tc",
|
||||||
|
"font_class": "yinzhang",
|
||||||
|
"unicode": "e785",
|
||||||
|
"unicode_decimal": 59269
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"icon_id": "3009589",
|
"icon_id": "3009589",
|
||||||
"name": "cus_draftgroup",
|
"name": "cus_draftgroup",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -89,8 +89,14 @@
|
|||||||
type:Number,
|
type:Number,
|
||||||
required:false,
|
required:false,
|
||||||
default:0
|
default:0
|
||||||
}
|
},
|
||||||
//update-end-author:wangshuai date:20201021 for:LOWCOD-969 新增number属性,用于判断上传数量
|
//update-end-author:wangshuai date:20201021 for:LOWCOD-969 新增number属性,用于判断上传数量
|
||||||
|
// 限制的后缀数组
|
||||||
|
fileTypeList: {
|
||||||
|
type: Array,
|
||||||
|
required: false,
|
||||||
|
default: () => []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
//透传给下级组件的事件,需要排除本组件使用的change事件
|
//透传给下级组件的事件,需要排除本组件使用的change事件
|
||||||
@@ -190,6 +196,15 @@
|
|||||||
this.$message.warning('请上传图片')
|
this.$message.warning('请上传图片')
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
// 限制文件类型
|
||||||
|
if (this.fileTypeList && this.fileTypeList.length) {
|
||||||
|
const tmpArr = file.name.split('.')
|
||||||
|
const fileSuffix = tmpArr[tmpArr.length - 1].toLowerCase()
|
||||||
|
if (!this.fileTypeList.some(t => t === fileSuffix)) {
|
||||||
|
this.$message.warning('图片格式必须是' + this.fileTypeList.join(','))
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
handleChange(info) {
|
handleChange(info) {
|
||||||
this.picUrl = false
|
this.picUrl = false
|
||||||
|
|||||||
@@ -316,8 +316,8 @@ export default {
|
|||||||
file.uploadGoOn = true
|
file.uploadGoOn = true
|
||||||
const fileSize = file.size // 上传的文件大小
|
const fileSize = file.size // 上传的文件大小
|
||||||
const fileType = file.type // 上传的文件类型
|
const fileType = file.type // 上传的文件类型
|
||||||
if (fileSize > 1024 * 1024 * 100) {
|
if (fileSize > 1024 * 1024 * 200) {
|
||||||
this.$message.warning('文件大小限制为100M')
|
this.$message.warning('文件大小限制为200M')
|
||||||
this.uploadGoOn = false
|
this.uploadGoOn = false
|
||||||
file.uploadGoOn = false
|
file.uploadGoOn = false
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
<template>
|
||||||
|
<a-month-picker
|
||||||
|
:disabledDate="disabledDate"
|
||||||
|
:disabled="disabled || readOnly"
|
||||||
|
:placeholder="placeholder"
|
||||||
|
@change="handleDateChange"
|
||||||
|
:value="momVal"
|
||||||
|
:showTime="showTime"
|
||||||
|
:format="dateFormat"
|
||||||
|
:mode="mode"
|
||||||
|
:getCalendarContainer="getCalendarContainer"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
export default {
|
||||||
|
name: 'JMonthDate',
|
||||||
|
props: {
|
||||||
|
placeholder: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
disabledDate: {
|
||||||
|
type: Function
|
||||||
|
},
|
||||||
|
dateFormat: {
|
||||||
|
type: String,
|
||||||
|
default: 'YYYY-MM-DD',
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
// 此属性可以被废弃了
|
||||||
|
triggerChange: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
readOnly: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
showTime: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
getCalendarContainer: {
|
||||||
|
type: Function,
|
||||||
|
default: (node) => node.parentNode
|
||||||
|
},
|
||||||
|
mode: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: 'date'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
const dateStr = this.value
|
||||||
|
return {
|
||||||
|
decorator: '',
|
||||||
|
momVal: !dateStr ? null : moment(dateStr, this.dateFormat)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
value(val) {
|
||||||
|
if (!val) {
|
||||||
|
this.momVal = null
|
||||||
|
} else {
|
||||||
|
this.momVal = moment(val, this.dateFormat)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
moment,
|
||||||
|
handleDateChange(mom, dateStr) {
|
||||||
|
this.$emit('change', dateStr)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 2.2新增 在组件内定义 指定父组件调用时候的传值属性和事件类型 这个牛逼
|
||||||
|
model: {
|
||||||
|
prop: 'value',
|
||||||
|
event: 'change'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
/deep/ .ant-input {
|
||||||
|
padding: 4px 6px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -82,6 +82,12 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
// 是否需要发票字段的KEY值,目前只有标协会员使用了,发票使用的。
|
||||||
|
invoiceKey: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: 'needInvoice'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -89,9 +95,9 @@ export default {
|
|||||||
status() {
|
status() {
|
||||||
// 非打包项目,其他项目如果被打包,就除了打包列全部置灰
|
// 非打包项目,其他项目如果被打包,就除了打包列全部置灰
|
||||||
// 如果有打包字段 && 当前列不是打包列 && 当前行是打包为"是" && 当前项目不是打包项目
|
// 如果有打包字段 && 当前列不是打包列 && 当前行是打包为"是" && 当前项目不是打包项目
|
||||||
if (this.packField && this.statusKey !== 'pack' && this.statuObj[this.packField] === 1 && this.statuObj.projectType !== ProjectTypeEnums.PACK_PRO.value) {
|
// if (this.packField && this.statusKey !== 'pack' && this.statuObj[this.packField] === 1 && this.statuObj.projectType !== ProjectTypeEnums.PACK_PRO.value) {
|
||||||
return zero
|
// return zero
|
||||||
}
|
// }
|
||||||
if (this.statuObj.amountReceivable === '0.00' || this.statuObj.receivableAmount === '0.00') {
|
if (this.statuObj.amountReceivable === '0.00' || this.statuObj.receivableAmount === '0.00') {
|
||||||
if (this.statusType) {
|
if (this.statusType) {
|
||||||
// 待确收金额为0 未到账 未邮寄 未开票的状态
|
// 待确收金额为0 未到账 未邮寄 未开票的状态
|
||||||
@@ -110,7 +116,7 @@ export default {
|
|||||||
// 待确收金额不为0 都正常判断
|
// 待确收金额不为0 都正常判断
|
||||||
if (this.statusNo === 0) {
|
if (this.statusNo === 0) {
|
||||||
// 开票或邮寄时,不需要发票
|
// 开票或邮寄时,不需要发票
|
||||||
if ((this.statusKey === 'bill' || this.statusKey === 'mail') && this.statuObj.needInvoice === 0) {
|
if ((this.statusKey === 'bill' || this.statusKey === 'mail') && this.statuObj[this.invoiceKey] === 0) {
|
||||||
return zero
|
return zero
|
||||||
} else {
|
} else {
|
||||||
return error
|
return error
|
||||||
|
|||||||
@@ -83,7 +83,6 @@ export default {
|
|||||||
id: uId,
|
id: uId,
|
||||||
email: uEmail
|
email: uEmail
|
||||||
}
|
}
|
||||||
this.getPublicKey()
|
|
||||||
let timer = setTimeout(() => {
|
let timer = setTimeout(() => {
|
||||||
this.form.setFieldsValue({ email: this.model.email })
|
this.form.setFieldsValue({ email: this.model.email })
|
||||||
clearTimeout(timer)
|
clearTimeout(timer)
|
||||||
@@ -93,17 +92,22 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
getPublicKey() {
|
getPublicKey() {
|
||||||
|
return new Promise(resolve => {
|
||||||
getRSAPublicKey().then(res => {
|
getRSAPublicKey().then(res => {
|
||||||
this.rsaPublicKey = res.result
|
this.rsaPublicKey = res.result
|
||||||
|
}).finally(() => {
|
||||||
|
resolve(this.rsaPublicKey)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleOk() {
|
handleOk() {
|
||||||
const that = this
|
const that = this
|
||||||
// 触发表单验证
|
// 触发表单验证
|
||||||
this.form.validateFields((err, values) => {
|
this.form.validateFields(async (err, values) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
that.confirmLoading = true
|
that.confirmLoading = true
|
||||||
let params = Object.assign(this.model, values)
|
let params = Object.assign(this.model, values)
|
||||||
|
await this.getPublicKey()
|
||||||
params.emailPassword = encrypt(this.rsaPublicKey, values.emailPassword)
|
params.emailPassword = encrypt(this.rsaPublicKey, values.emailPassword)
|
||||||
params.rsaPublicKey = this.rsaPublicKey
|
params.rsaPublicKey = this.rsaPublicKey
|
||||||
console.log('修改授权码提交数据', params)
|
console.log('修改授权码提交数据', params)
|
||||||
|
|||||||
@@ -166,7 +166,8 @@ export default {
|
|||||||
// update-begin author:wangshuai date:20200601 for: 退出登录跳转登录页面
|
// update-begin author:wangshuai date:20200601 for: 退出登录跳转登录页面
|
||||||
that.$router.push({ path: '/user/login' })
|
that.$router.push({ path: '/user/login' })
|
||||||
// update-end author:wangshuai date:20200601 for: 退出登录跳转登录页面
|
// update-end author:wangshuai date:20200601 for: 退出登录跳转登录页面
|
||||||
//window.location.reload()
|
// 退出登录必须要刷新页面,否则会保留上一个用户的菜单权限
|
||||||
|
window.location.reload()
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
that.$message.error({
|
that.$message.error({
|
||||||
title: '错误',
|
title: '错误',
|
||||||
@@ -248,8 +249,17 @@ export default {
|
|||||||
if (res.success) {
|
if (res.success) {
|
||||||
// 单点登录成功,跳转到企业端首页,并用token登录
|
// 单点登录成功,跳转到企业端首页,并用token登录
|
||||||
console.log(res)
|
console.log(res)
|
||||||
|
if (res.message === 'updatePassword') {
|
||||||
|
notification['error']({
|
||||||
|
message: '登录失败',
|
||||||
|
description: '请先用手机验证码登录',
|
||||||
|
duration: 4,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
} else {
|
||||||
const token = res.result.token
|
const token = res.result.token
|
||||||
window.open(`${window._CONFIG.enterpriseTerminal}dashboard/analysis?token=${token}`, '_self')
|
window.open(`${window._CONFIG.enterpriseTerminal}dashboard/analysis?token=${token}`, '_self')
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
notification['error']({
|
notification['error']({
|
||||||
message: '登录失败',
|
message: '登录失败',
|
||||||
|
|||||||
@@ -125,14 +125,17 @@ export default {
|
|||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
this.username = uname
|
this.username = uname
|
||||||
this.getPublicKey()
|
|
||||||
this.form.resetFields()
|
this.form.resetFields()
|
||||||
this.visible = true
|
this.visible = true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getPublicKey() {
|
getPublicKey() {
|
||||||
|
return new Promise(resolve => {
|
||||||
getRSAPublicKey().then(res => {
|
getRSAPublicKey().then(res => {
|
||||||
this.rsaPublicKey = res.result
|
this.rsaPublicKey = res.result
|
||||||
|
}).finally(() => {
|
||||||
|
resolve(this.rsaPublicKey)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleCancel() {
|
handleCancel() {
|
||||||
@@ -147,9 +150,10 @@ export default {
|
|||||||
handleOk() {
|
handleOk() {
|
||||||
const that = this
|
const that = this
|
||||||
// 触发表单验证
|
// 触发表单验证
|
||||||
this.form.validateFields((err, values) => {
|
this.form.validateFields(async (err, values) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
that.confirmLoading = true
|
that.confirmLoading = true
|
||||||
|
await this.getPublicKey()
|
||||||
let params = {}
|
let params = {}
|
||||||
params.username = this.username
|
params.username = this.username
|
||||||
params.rsaPublicKey = this.rsaPublicKey
|
params.rsaPublicKey = this.rsaPublicKey
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ export const ProjectTypeEnums = {
|
|||||||
STANDARD_MEMBER_PRO: {name: '标协会员项目', value: 5},
|
STANDARD_MEMBER_PRO: {name: '标协会员项目', value: 5},
|
||||||
STANDARD_CERTIFICATE_PRO: {name: '标协证书项目', value: 6},
|
STANDARD_CERTIFICATE_PRO: {name: '标协证书项目', value: 6},
|
||||||
DRAFT_PRO: {name: '起草组项目', value: 7},
|
DRAFT_PRO: {name: '起草组项目', value: 7},
|
||||||
PACK_PRO: { name: '打包项目', value: 8 }
|
PACK_PRO: { name: '打包项目', value: 8 },
|
||||||
|
SAFETY_CENTER_PRO: { name: '功能安全中心项目', value: 9 }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 参会人员身份类型
|
// 参会人员身份类型
|
||||||
@@ -63,3 +64,29 @@ export const PayMode = {
|
|||||||
onSitePayment: { name: '现场缴费', value: 2 },
|
onSitePayment: { name: '现场缴费', value: 2 },
|
||||||
pack: { name: '打包', value: 3 },
|
pack: { name: '打包', value: 3 },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 会议类型
|
||||||
|
export const MeetingTypeEnums = {
|
||||||
|
workGroup: { name: '工作组会议', value: '1' },
|
||||||
|
standard: { name: '标协会议', value: '2' },
|
||||||
|
internationalSeminar: { name: '国际研讨会', value: '3' },
|
||||||
|
other: { name: '其他会议', value: '4' },
|
||||||
|
committee: { name: '分标委会议', value: '5' },
|
||||||
|
council: { name: '理事会会议', value: '6' },
|
||||||
|
draftGroup: { name: '起草会会议', value: '7' },
|
||||||
|
overseas: { name: '海外会议', value: '8' },
|
||||||
|
safetyCenter: { name: '功能安全中心会议', value: '9' }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 功能安全中心-项目类型
|
||||||
|
export const SafetyCenterProjectTypeEnums = {
|
||||||
|
safetyCenter: { name: '功能安全中心', value: '1' },
|
||||||
|
studyGroup: { name: '研究组', value: '2' },
|
||||||
|
projectGroup: { name: '项目组', value: '3' }
|
||||||
|
}
|
||||||
|
|
||||||
|
export const OpeTypeEnums = {
|
||||||
|
add: { name: '新增', value: 1 },
|
||||||
|
copy: { name: '复制', value: 2 },
|
||||||
|
edit: { name: '编辑', value: 3 }
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
* data中url定义 list为查询列表 delete为删除单条记录 deleteBatch为批量删除
|
* data中url定义 list为查询列表 delete为删除单条记录 deleteBatch为批量删除
|
||||||
*/
|
*/
|
||||||
import {filterObj} from '@/utils/util'
|
import {filterObj} from '@/utils/util'
|
||||||
import {getAction, downloadFile, getFileAccessHttpUrl, postAction} from '@/api/manage'
|
import {getAction, downloadFile, getFileAccessHttpUrl, postAction, httpAction} from '@/api/manage'
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import {ACCESS_TOKEN, TENANT_ID} from '@/store/mutation-types'
|
import {ACCESS_TOKEN, TENANT_ID} from '@/store/mutation-types'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
@@ -58,6 +58,8 @@ export const JeroListMixin = {
|
|||||||
superQueryParams: '',
|
superQueryParams: '',
|
||||||
/** 高级查询拼接方式 */
|
/** 高级查询拼接方式 */
|
||||||
superQueryMatchType: 'and',
|
superQueryMatchType: 'and',
|
||||||
|
// 新增的删除接口请求方式改成post,需要的模块设置成true
|
||||||
|
postMethodDel: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -193,7 +195,9 @@ export const JeroListMixin = {
|
|||||||
content: '是否删除选中数据?',
|
content: '是否删除选中数据?',
|
||||||
onOk: function () {
|
onOk: function () {
|
||||||
that.loading = true
|
that.loading = true
|
||||||
getAction(that.url.deleteBatch, {ids: ids}).then((res) => {
|
// 新增加的删除接口用post方式请求
|
||||||
|
const actionFunc = that.postMethodDel ? postAction : getAction
|
||||||
|
actionFunc(that.url.deleteBatch, {ids: ids}).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
that.$message.success(res.message)
|
that.$message.success(res.message)
|
||||||
// 判断当前删除的数据是否是最后一页的全部数据,如果是的话页码减一
|
// 判断当前删除的数据是否是最后一页的全部数据,如果是的话页码减一
|
||||||
@@ -228,7 +232,9 @@ export const JeroListMixin = {
|
|||||||
title: '确认删除',
|
title: '确认删除',
|
||||||
content: '确定要删除此条数据吗?',
|
content: '确定要删除此条数据吗?',
|
||||||
onOk: function () {
|
onOk: function () {
|
||||||
getAction(that.url.delete, {id: id}).then((res) => {
|
// 新增加的删除接口用post方式请求
|
||||||
|
const actionFunc = that.postMethodDel ? postAction : getAction
|
||||||
|
actionFunc(that.url.delete, {id: id}).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
that.$message.success(res.message)
|
that.$message.success(res.message)
|
||||||
// 判断当前删除的数据是否是最后一页的最后一条数据,如果是的话页码减一
|
// 判断当前删除的数据是否是最后一页的最后一条数据,如果是的话页码减一
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/**
|
||||||
|
* @description 预期到账金额 修改成 年月的形式。
|
||||||
|
* @author fcc
|
||||||
|
* */
|
||||||
|
import moment from 'moment'
|
||||||
|
export const MonthRangeMixin = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
rangeMonthDateFormat: 'YYYY-MM',
|
||||||
|
rangeMonthDateModel: ['month', 'month'],
|
||||||
|
rangeMonthKey:{
|
||||||
|
start: 'estimatedArrivalStartDate',
|
||||||
|
end: 'estimatedArrivalEndDate',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
moment,
|
||||||
|
// onMonthRangeDateChange(value, dateString) {
|
||||||
|
// this.queryParam[this.rangeMonthKey.start] = dateString[0] || null
|
||||||
|
// this.queryParam[this.rangeMonthKey.end] = dateString[1] || null
|
||||||
|
// this.queryParam.estimatedArrivalDate = value
|
||||||
|
// },
|
||||||
|
// handleMonthRangePanelChange(value, mode) {
|
||||||
|
// this.queryParam[this.rangeMonthKey.start] = !value[0] ? null : value[0].format(this.rangeMonthDateFormat)
|
||||||
|
// this.queryParam[this.rangeMonthKey.end] = !value[1] ? null : value[1].format(this.rangeMonthDateFormat)
|
||||||
|
// this.queryParam.estimatedArrivalDate = value
|
||||||
|
// this.rangeMonthDateModel = [mode[0] === 'date' ? 'month' : mode[0], mode[1] === 'date' ? 'month' : mode[1]]
|
||||||
|
// },
|
||||||
|
// // 重写查询方法--删除预估到账日期属性
|
||||||
|
// searchQuery() {
|
||||||
|
// this.lastQueryParam = {...this.queryParam}
|
||||||
|
// if(this.lastQueryParam.estimatedArrivalDate) {
|
||||||
|
// delete this.lastQueryParam.estimatedArrivalDate
|
||||||
|
// }
|
||||||
|
// this.loadData(1)
|
||||||
|
// },
|
||||||
|
disabledStartMonth(startValue) {
|
||||||
|
const endValue = this.queryParam[this.rangeMonthKey.end] && moment(this.queryParam[this.rangeMonthKey.end], this.rangeMonthDateFormat)
|
||||||
|
if (!startValue || !endValue) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return startValue.valueOf() > endValue.valueOf()
|
||||||
|
},
|
||||||
|
|
||||||
|
disabledEndMonth(endValue) {
|
||||||
|
const startValue = this.queryParam[this.rangeMonthKey.start] && moment(this.queryParam[this.rangeMonthKey.start], this.rangeMonthDateFormat)
|
||||||
|
if (!endValue || !startValue) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return startValue.valueOf() > endValue.valueOf()
|
||||||
|
},
|
||||||
|
disabledDateBeforeToday(current) {
|
||||||
|
return current < moment().subtract(1, 'day') // 当天之前的不可选,不包括当天
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -20,6 +20,12 @@ const err = (error) => {
|
|||||||
const token = Vue.ls.get(ACCESS_TOKEN)
|
const token = Vue.ls.get(ACCESS_TOKEN)
|
||||||
// console.log('------异常响应------', token)
|
// console.log('------异常响应------', token)
|
||||||
// console.log('------异常响应------', error.response.status)
|
// console.log('------异常响应------', error.response.status)
|
||||||
|
|
||||||
|
// 如果ISO和WP29挂了,就不提示
|
||||||
|
let tipFlag = true
|
||||||
|
if(error.config.url.indexOf('/WPApi') === 0 || error.config.url.indexOf('/ISO') === 0) {
|
||||||
|
tipFlag = false
|
||||||
|
}
|
||||||
switch (error.response.status) {
|
switch (error.response.status) {
|
||||||
case 403:
|
case 403:
|
||||||
notification.error({ message: '系统提示', description: '拒绝访问', duration: 4 })
|
notification.error({ message: '系统提示', description: '拒绝访问', duration: 4 })
|
||||||
@@ -60,7 +66,7 @@ const err = (error) => {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
case 404:
|
case 404:
|
||||||
notification.error({ message: '系统提示', description: '很抱歉,资源未找到!', duration: 4 })
|
tipFlag && notification.error({ message: '系统提示', description: '很抱歉,资源未找到!', duration: 4 })
|
||||||
break
|
break
|
||||||
case 504:
|
case 504:
|
||||||
notification.error({ message: '系统提示', description: '网络超时' })
|
notification.error({ message: '系统提示', description: '网络超时' })
|
||||||
@@ -76,7 +82,7 @@ const err = (error) => {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
notification.error({
|
tipFlag && notification.error({
|
||||||
message: '系统提示',
|
message: '系统提示',
|
||||||
description: data.message,
|
description: data.message,
|
||||||
duration: 4
|
duration: 4
|
||||||
|
|||||||
@@ -120,44 +120,44 @@ export default {
|
|||||||
customRender: function (t, r, index) {
|
customRender: function (t, r, index) {
|
||||||
return parseInt(index) + 1
|
return parseInt(index) + 1
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
title: '企业名称',
|
||||||
|
align: 'center',
|
||||||
|
width: 300,
|
||||||
|
dataIndex: 'companyName',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
}, {
|
}, {
|
||||||
title: '姓名',
|
title: '姓名',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 280,
|
width: 300,
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
}, {
|
}, {
|
||||||
title: '性别',
|
title: '性别',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 80,
|
width: 100,
|
||||||
dataIndex: 'gender_dictText'
|
dataIndex: 'gender_dictText'
|
||||||
}, {
|
}, {
|
||||||
title: '职务',
|
title: '职务',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 280,
|
width: 300,
|
||||||
dataIndex: 'post',
|
dataIndex: 'post',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
}, {
|
}, {
|
||||||
title: '手机号',
|
title: '手机号',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 140,
|
width: 175,
|
||||||
dataIndex: 'phone'
|
dataIndex: 'phone'
|
||||||
},{
|
},{
|
||||||
title: '角色',
|
title: '角色',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 140,
|
width: 175,
|
||||||
dataIndex: 'roleCode_dictText'
|
dataIndex: 'roleCode_dictText'
|
||||||
}, {
|
// }, {
|
||||||
title: '创建时间',
|
// title: '创建时间',
|
||||||
align: 'center',
|
// align: 'center',
|
||||||
width: 150,
|
// width: 150,
|
||||||
dataIndex: 'createTime'
|
// dataIndex: 'createTime'
|
||||||
}, {
|
|
||||||
title: '企业名称',
|
|
||||||
align: 'center',
|
|
||||||
width: 280,
|
|
||||||
dataIndex: 'companyName',
|
|
||||||
scopedSlots: { customRender: 'text' }
|
|
||||||
}, {
|
}, {
|
||||||
title: '操作',
|
title: '操作',
|
||||||
dataIndex: 'action',
|
dataIndex: 'action',
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ export default {
|
|||||||
},
|
},
|
||||||
edit(record) {
|
edit(record) {
|
||||||
this.form.resetFields()
|
this.form.resetFields()
|
||||||
this.getRSAPublicKeyFunc()
|
|
||||||
this.model = Object.assign({}, record)
|
this.model = Object.assign({}, record)
|
||||||
// 回显企业
|
// 回显企业
|
||||||
this.model.companyId = {
|
this.model.companyId = {
|
||||||
@@ -148,8 +147,15 @@ export default {
|
|||||||
* 获取公钥
|
* 获取公钥
|
||||||
* */
|
* */
|
||||||
getRSAPublicKeyFunc() {
|
getRSAPublicKeyFunc() {
|
||||||
|
// getRSAPublicKey().then(res => {
|
||||||
|
// this.rsaPublicKey = res.result
|
||||||
|
// })
|
||||||
|
return new Promise(resolve => {
|
||||||
getRSAPublicKey().then(res => {
|
getRSAPublicKey().then(res => {
|
||||||
this.rsaPublicKey = res.result
|
this.rsaPublicKey = res.result
|
||||||
|
}).finally(() => {
|
||||||
|
resolve(this.rsaPublicKey)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
close() {
|
close() {
|
||||||
@@ -164,7 +170,7 @@ export default {
|
|||||||
this.confirmLoading = true
|
this.confirmLoading = true
|
||||||
const that = this
|
const that = this
|
||||||
// 触发表单验证
|
// 触发表单验证
|
||||||
this.form.validateFields((err, values) => {
|
this.form.validateFields(async (err, values) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
let httpurl = ''
|
let httpurl = ''
|
||||||
let method = 'post'
|
let method = 'post'
|
||||||
@@ -173,6 +179,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
httpurl += this.url.edit
|
httpurl += this.url.edit
|
||||||
}
|
}
|
||||||
|
await this.getRSAPublicKeyFunc()
|
||||||
const formData = Object.assign(this.model, values)
|
const formData = Object.assign(this.model, values)
|
||||||
formData.companyName = this.selectedCompany.companyName
|
formData.companyName = this.selectedCompany.companyName
|
||||||
formData.companyId = this.selectedCompany.id
|
formData.companyId = this.selectedCompany.id
|
||||||
|
|||||||
@@ -305,7 +305,7 @@
|
|||||||
:signed-contact-id="signedContactId"
|
:signed-contact-id="signedContactId"
|
||||||
:default-charge-company="selectedCompany"></select-working-group-project-module>
|
:default-charge-company="selectedCompany"></select-working-group-project-module>
|
||||||
<!-- 会议项目选择-->
|
<!-- 会议项目选择-->
|
||||||
<select-meeting-project-module ref="selectMeetingProjectModule"
|
<select-meeting-project-module ref="selectMeetingProjectModule" :project-type="projectType"
|
||||||
@ok="selectProjectOk"></select-meeting-project-module>
|
@ok="selectProjectOk"></select-meeting-project-module>
|
||||||
|
|
||||||
<!-- 会员项目选择-->
|
<!-- 会员项目选择-->
|
||||||
|
|||||||
@@ -112,6 +112,14 @@ import '@/assets/less/TableExpand.less'
|
|||||||
export default {
|
export default {
|
||||||
name: 'SelectMeetingProjectModule',
|
name: 'SelectMeetingProjectModule',
|
||||||
mixins: [JeroListMixin],
|
mixins: [JeroListMixin],
|
||||||
|
props: {
|
||||||
|
// 项目类型,1--普通项目;2--工作组项目;3--会议项目;4--会员项目
|
||||||
|
projectType: {
|
||||||
|
type: Number,
|
||||||
|
requird: false,
|
||||||
|
default: null
|
||||||
|
}
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
JDate,
|
JDate,
|
||||||
JYearDate,
|
JYearDate,
|
||||||
@@ -310,6 +318,7 @@ export default {
|
|||||||
|
|
||||||
let submitData = []
|
let submitData = []
|
||||||
let projectItem
|
let projectItem
|
||||||
|
console.log(this.selectionRows)
|
||||||
this.selectedRowKeys.forEach(item => {
|
this.selectedRowKeys.forEach(item => {
|
||||||
projectItem = {
|
projectItem = {
|
||||||
contractId: this.contractId,
|
contractId: this.contractId,
|
||||||
|
|||||||
@@ -5,6 +5,13 @@
|
|||||||
科室总体统计
|
科室总体统计
|
||||||
<j-year-date style="width:250px" class="year" placeholder="请选择年份" v-model="queryParam.year" @change="loadData"></j-year-date>
|
<j-year-date style="width:250px" class="year" placeholder="请选择年份" v-model="queryParam.year" @change="loadData"></j-year-date>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="operator">
|
||||||
|
<span @click="toggleEcharts('packProject')" class="operator-left"
|
||||||
|
:class="{'active':activeIndex === 'packProject'}">打包项目</span>
|
||||||
|
<span @click="toggleEcharts('childProject')" class="operator-right"
|
||||||
|
:class="{'active':activeIndex === 'childProject'}">子项目</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="echarts-box" id="departmentTotal"></div>
|
<div class="echarts-box" id="departmentTotal"></div>
|
||||||
|
|
||||||
<!-- 表格区域beign -->
|
<!-- 表格区域beign -->
|
||||||
@@ -88,6 +95,7 @@ export default {
|
|||||||
mixins: [JeroListMixin],
|
mixins: [JeroListMixin],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
activeIndex: 'childProject',
|
||||||
disableMixinCreated: true,
|
disableMixinCreated: true,
|
||||||
url: {
|
url: {
|
||||||
list: '/index/overallDepartmentStatistics',
|
list: '/index/overallDepartmentStatistics',
|
||||||
@@ -104,6 +112,15 @@ export default {
|
|||||||
this.loadData(1)
|
this.loadData(1)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
toggleEcharts(key) {
|
||||||
|
if (key === this.activeIndex) {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
this.activeIndex = key
|
||||||
|
this.loadData()
|
||||||
|
this.$forceUpdate()
|
||||||
|
}
|
||||||
|
},
|
||||||
formatMoney,
|
formatMoney,
|
||||||
loadData(arg) {
|
loadData(arg) {
|
||||||
if (!this.url.list) {
|
if (!this.url.list) {
|
||||||
@@ -114,8 +131,12 @@ export default {
|
|||||||
if (arg === 1) {
|
if (arg === 1) {
|
||||||
this.ipagination.current = 1
|
this.ipagination.current = 1
|
||||||
}
|
}
|
||||||
|
let typeEnum = {
|
||||||
|
packProject: 1,
|
||||||
|
childProject: 2
|
||||||
|
}
|
||||||
let params = this.getQueryParams()//查询条件
|
let params = this.getQueryParams()//查询条件
|
||||||
params = Object.assign({}, params, {year: this.queryParam.year})
|
params = Object.assign({}, params, {type: typeEnum[this.activeIndex], year: this.queryParam.year})
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getAction(this.url.list, params).then((res) => {
|
getAction(this.url.list, params).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
@@ -188,6 +209,11 @@ export default {
|
|||||||
let chartDom = document.getElementById('departmentTotal')
|
let chartDom = document.getElementById('departmentTotal')
|
||||||
let myChart = echarts.init(chartDom)
|
let myChart = echarts.init(chartDom)
|
||||||
let option
|
let option
|
||||||
|
let provideNumber = 8
|
||||||
|
if(chartDom) {
|
||||||
|
const chartDomWidth = chartDom.offsetWidth
|
||||||
|
provideNumber = Math.floor(chartDomWidth / 200)
|
||||||
|
}
|
||||||
|
|
||||||
option = {
|
option = {
|
||||||
color: ['#069F99', '#FFA17A'],
|
color: ['#069F99', '#FFA17A'],
|
||||||
@@ -234,7 +260,7 @@ export default {
|
|||||||
formatter: function (params) {
|
formatter: function (params) {
|
||||||
let newParamsName = '' // 最终拼接成的字符串
|
let newParamsName = '' // 最终拼接成的字符串
|
||||||
let paramsNameNumber = params.length // 实际标签的个数
|
let paramsNameNumber = params.length // 实际标签的个数
|
||||||
let provideNumber = 8 // 每行能显示的字的个数
|
// let provideNumber = provideNumber // 每行能显示的字的个数
|
||||||
let rowNumber = Math.ceil(paramsNameNumber / provideNumber) // 换行的话,需要显示几行,向上取整
|
let rowNumber = Math.ceil(paramsNameNumber / provideNumber) // 换行的话,需要显示几行,向上取整
|
||||||
/**
|
/**
|
||||||
* 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
|
* 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
|
||||||
@@ -334,6 +360,7 @@ export default {
|
|||||||
padding: 20px;
|
padding: 20px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
//height: auto;
|
//height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -368,4 +395,38 @@ export default {
|
|||||||
background: rgb(245, 245, 246);
|
background: rgb(245, 245, 246);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.operator {
|
||||||
|
color: #069F99;
|
||||||
|
position: absolute;
|
||||||
|
user-select: none;
|
||||||
|
display: flex;
|
||||||
|
font-size: 12px;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
right: 20px;
|
||||||
|
top: 10px;
|
||||||
|
width: 180px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
border: 1px solid #069F99;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&-left {
|
||||||
|
width: 50%;
|
||||||
|
text-align: center;
|
||||||
|
border-right: 1px solid #069F99;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-right {
|
||||||
|
width: 50%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
background: #069F99;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -1,7 +1,15 @@
|
|||||||
<!-- 分类统计-->
|
<!-- 分类统计-->
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="title">收入分类统计
|
<div class="title">收入分类统计</div>
|
||||||
|
<div class="operator">
|
||||||
|
<span @click="projectToggleEcharts('packProject')" class="operator-left"
|
||||||
|
:class="{'active':projectActiveIndex === 'packProject'}">打包项目</span>
|
||||||
|
<span @click="projectToggleEcharts('childProject')" class="operator-right"
|
||||||
|
:class="{'active':projectActiveIndex === 'childProject'}">子项目</span>
|
||||||
|
</div>
|
||||||
|
<div class="search-class">
|
||||||
|
<div class="title">
|
||||||
<a-tree-select
|
<a-tree-select
|
||||||
:multiple="false"
|
:multiple="false"
|
||||||
show-search
|
show-search
|
||||||
@@ -18,7 +26,7 @@
|
|||||||
</a-tree-select>
|
</a-tree-select>
|
||||||
<j-year-date style="width:20%" class="year" placeholder="请选择年份" v-model="queryParam.year" @change="loadData"></j-year-date>
|
<j-year-date style="width:20%" class="year" placeholder="请选择年份" v-model="queryParam.year" @change="loadData"></j-year-date>
|
||||||
</div>
|
</div>
|
||||||
<div class="operator">
|
<div class="operator sub-operator">
|
||||||
<span @click="toggleEcharts('income')" class="operator-left"
|
<span @click="toggleEcharts('income')" class="operator-left"
|
||||||
:class="{'active':activeIndex === 'income'}">收入分析</span>
|
:class="{'active':activeIndex === 'income'}">收入分析</span>
|
||||||
<span @click="toggleEcharts('allMoney')" class="operator-left"
|
<span @click="toggleEcharts('allMoney')" class="operator-left"
|
||||||
@@ -26,6 +34,7 @@
|
|||||||
<span @click="toggleEcharts('confirmAmount')" class="operator-right"
|
<span @click="toggleEcharts('confirmAmount')" class="operator-right"
|
||||||
:class="{'active':activeIndex === 'confirmAmount'}">确收</span>
|
:class="{'active':activeIndex === 'confirmAmount'}">确收</span>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<div class="echarts-box" id="incomeSort"></div>
|
<div class="echarts-box" id="incomeSort"></div>
|
||||||
<!-- 表格区域beign -->
|
<!-- 表格区域beign -->
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
@@ -46,6 +55,12 @@
|
|||||||
<div class="table-text">{{ text }}</div>
|
<div class="table-text">{{ text }}</div>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
|
<span v-for="item in columns" :slot="item.dataIndex" :key="item.dataIndex">
|
||||||
|
<a-tooltip>
|
||||||
|
<template slot="title">{{ item[item.dataIndex] }}</template>
|
||||||
|
<div class="table-text">{{ item[item.dataIndex] }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</span>
|
||||||
|
|
||||||
<template slot="allMoney" slot-scope="text">
|
<template slot="allMoney" slot-scope="text">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
@@ -102,6 +117,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
activeIndex: 'income',
|
activeIndex: 'income',
|
||||||
|
projectActiveIndex: 'childProject', // 打包项目、打包子项目选中的索引
|
||||||
echartsInstace: null,
|
echartsInstace: null,
|
||||||
columns,
|
columns,
|
||||||
url: {
|
url: {
|
||||||
@@ -118,6 +134,15 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
formatMoney,
|
formatMoney,
|
||||||
|
projectToggleEcharts(key) {
|
||||||
|
if (key === this.projectActiveIndex) {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
this.projectActiveIndex = key
|
||||||
|
this.loadData()
|
||||||
|
this.$forceUpdate()
|
||||||
|
}
|
||||||
|
},
|
||||||
toggleEcharts(key) {
|
toggleEcharts(key) {
|
||||||
if (key === this.activeIndex) {
|
if (key === this.activeIndex) {
|
||||||
return
|
return
|
||||||
@@ -163,7 +188,11 @@ export default {
|
|||||||
confirmAmount: 2,
|
confirmAmount: 2,
|
||||||
income: 3
|
income: 3
|
||||||
}
|
}
|
||||||
getAction(this.url.list, {type: typeEnum[this.activeIndex],departCode:this.queryParam.departCode,year:this.queryParam.year}).then(res => {
|
const projectTypeEnum = {
|
||||||
|
packProject: 1,
|
||||||
|
childProject: 2
|
||||||
|
}
|
||||||
|
getAction(this.url.list, {type: typeEnum[this.activeIndex], projectType: projectTypeEnum[this.projectActiveIndex], departCode:this.queryParam.departCode,year:this.queryParam.year}).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
let dataSource = res.result
|
let dataSource = res.result
|
||||||
this.initColumns(res.result)
|
this.initColumns(res.result)
|
||||||
@@ -177,7 +206,7 @@ export default {
|
|||||||
let dataIndex = 'key' + index
|
let dataIndex = 'key' + index
|
||||||
tableData[0][dataIndex] = item.money
|
tableData[0][dataIndex] = item.money
|
||||||
// tableData[1][dataIndex] = item.value ? item.value +'%' :''
|
// tableData[1][dataIndex] = item.value ? item.value +'%' :''
|
||||||
if(index !== 5){
|
if(index !== 6){
|
||||||
tableData[1][dataIndex] = item.value ? item.value + '%' :''
|
tableData[1][dataIndex] = item.value ? item.value + '%' :''
|
||||||
}else {
|
}else {
|
||||||
tableData[1][dataIndex] = '100%'
|
tableData[1][dataIndex] = '100%'
|
||||||
@@ -188,7 +217,7 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
initEcharts(data) {
|
initEcharts(data) {
|
||||||
let color = ['#069F99', '#88C87E ', '#6D7FD0', '#FA9D81', '#A5B3FF']
|
let color = ['#069F99', '#88C87E', '#6D7FD0', '#FA9D81', '#A5B3FF', '#519FD1', '#55433B', '#9ABECA']
|
||||||
let echartsData = data.reduce((pre, val) => {
|
let echartsData = data.reduce((pre, val) => {
|
||||||
return pre.concat({value: val.value, name: val.name_dictText, money: val.money})
|
return pre.concat({value: val.value, name: val.name_dictText, money: val.money})
|
||||||
}, [])
|
}, [])
|
||||||
@@ -213,8 +242,8 @@ export default {
|
|||||||
legend: {
|
legend: {
|
||||||
bottom: '2%',
|
bottom: '2%',
|
||||||
right: '2%',
|
right: '2%',
|
||||||
padding: [0,70, 0, 70],
|
padding: [0, 70, 10, 70],
|
||||||
itemGap:40 // 图例之间的间距
|
itemGap: 20 // 图例之间的间距
|
||||||
},
|
},
|
||||||
labelLine: {
|
labelLine: {
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
@@ -260,7 +289,7 @@ export default {
|
|||||||
* 处理表头
|
* 处理表头
|
||||||
* */
|
* */
|
||||||
initColumns(data) {
|
initColumns(data) {
|
||||||
const newData = data.slice(0,5)
|
const newData = data.slice(0,6)
|
||||||
this.columns = [
|
this.columns = [
|
||||||
{
|
{
|
||||||
title: '',
|
title: '',
|
||||||
@@ -272,7 +301,9 @@ export default {
|
|||||||
]
|
]
|
||||||
newData.map((item, index) => {
|
newData.map((item, index) => {
|
||||||
this.columns.push({
|
this.columns.push({
|
||||||
title: item.name_dictText,
|
// title: item.name_dictText,
|
||||||
|
slots:{title: 'key' + index},
|
||||||
|
['key' + index]:item.name_dictText,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 80,
|
width: 80,
|
||||||
dataIndex: 'key' + index,
|
dataIndex: 'key' + index,
|
||||||
@@ -283,7 +314,7 @@ export default {
|
|||||||
title: '总数',
|
title: '总数',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 70,
|
width: 70,
|
||||||
dataIndex: 'key5',
|
dataIndex: 'key6',
|
||||||
scopedSlots: {customRender: 'allMoney'}
|
scopedSlots: {customRender: 'allMoney'}
|
||||||
},)
|
},)
|
||||||
},
|
},
|
||||||
@@ -347,24 +378,36 @@ export default {
|
|||||||
right: 20px;
|
right: 20px;
|
||||||
top: 20px;
|
top: 20px;
|
||||||
width: 180px;
|
width: 180px;
|
||||||
height: 35px;
|
height: 32px;
|
||||||
line-height: 35px;
|
line-height: 32px;
|
||||||
border: 1px solid #069F99;
|
border: 1px solid #069F99;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
&-left {
|
&-left {
|
||||||
width: 33.3%;
|
width: 50%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-right: 1px solid #069F99;
|
border-right: 1px solid #069F99;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-right {
|
&-right {
|
||||||
width: 33.3%;
|
width: 50%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.search-class {
|
||||||
|
position: relative;
|
||||||
|
padding-top: 21px;
|
||||||
|
}
|
||||||
|
.sub-operator.operator {
|
||||||
|
right: 0;
|
||||||
|
.operator-left {
|
||||||
|
width: 33.3%;
|
||||||
|
}
|
||||||
|
.operator-right {
|
||||||
|
width: 33.4%;
|
||||||
|
}
|
||||||
|
}
|
||||||
.active {
|
.active {
|
||||||
background: #069F99;
|
background: #069F99;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
@@ -373,7 +416,7 @@ export default {
|
|||||||
.echarts-box {
|
.echarts-box {
|
||||||
min-width: 300px;
|
min-width: 300px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 400px;
|
height: 440px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.point {
|
.point {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<!-- 未收账款统计-->
|
<!-- 未收账款统计-->
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="title">应收账款
|
<div class="title">应收账款</div>
|
||||||
|
<div class="search-class">
|
||||||
<a-tree-select
|
<a-tree-select
|
||||||
:multiple="false"
|
:multiple="false"
|
||||||
show-search
|
show-search
|
||||||
@@ -17,14 +18,6 @@
|
|||||||
placeholder="请选择部门">
|
placeholder="请选择部门">
|
||||||
</a-tree-select>
|
</a-tree-select>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="operator">-->
|
|
||||||
<!-- <span @click="toggleEcharts('income')" class="operator-left"-->
|
|
||||||
<!-- :class="{'active':activeIndex === 'income'}">收入分析</span>-->
|
|
||||||
<!-- <span @click="toggleEcharts('allMoney')" class="operator-left"-->
|
|
||||||
<!-- :class="{'active':activeIndex === 'allMoney'}">应收</span>-->
|
|
||||||
<!-- <span @click="toggleEcharts('confirmAmount')" class="operator-right"-->
|
|
||||||
<!-- :class="{'active':activeIndex === 'confirmAmount'}">确收</span>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<div class="echarts-box" id="notReceived"></div>
|
<div class="echarts-box" id="notReceived"></div>
|
||||||
<!-- 表格区域beign -->
|
<!-- 表格区域beign -->
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
@@ -184,7 +177,7 @@ export default {
|
|||||||
initEcharts(data) {
|
initEcharts(data) {
|
||||||
let color = ['#069F99', '#88C87E ', '#6D7FD0', '#FA9D81', '#A5B3FF']
|
let color = ['#069F99', '#88C87E ', '#6D7FD0', '#FA9D81', '#A5B3FF']
|
||||||
let echartsData = data.reduce((pre, val) => {
|
let echartsData = data.reduce((pre, val) => {
|
||||||
return pre.concat({value: val.money, name: val.name, money: val.money})
|
return val.name !== '总数' ? pre.concat({value: val.money, name: val.name, money: val.money}) : pre
|
||||||
}, []).slice(0,4)
|
}, []).slice(0,4)
|
||||||
echartsData = this.initPoint(echartsData, color)
|
echartsData = this.initPoint(echartsData, color)
|
||||||
let chartDom = document.getElementById('notReceived')
|
let chartDom = document.getElementById('notReceived')
|
||||||
@@ -206,10 +199,10 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
left:'15%',
|
|
||||||
bottom: '2%',
|
bottom: '2%',
|
||||||
right: '2%',
|
width: '80%',
|
||||||
padding: [0, 50, 0, 50],
|
// padding: [0, 50, 0, 50],
|
||||||
|
type: 'scroll',
|
||||||
itemGap:50
|
itemGap:50
|
||||||
},
|
},
|
||||||
labelLine: {
|
labelLine: {
|
||||||
@@ -371,6 +364,10 @@ export default {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.search-class {
|
||||||
|
position: relative;
|
||||||
|
padding-top: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
.active {
|
.active {
|
||||||
background: #069F99;
|
background: #069F99;
|
||||||
@@ -380,7 +377,7 @@ export default {
|
|||||||
.echarts-box {
|
.echarts-box {
|
||||||
min-width: 300px;
|
min-width: 300px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 400px;
|
height: 440px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.point {
|
.point {
|
||||||
|
|||||||
@@ -240,6 +240,9 @@ export default {
|
|||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
data: [ '预估收入金额', '确认收入金额', '开票金额', '到账金额'],
|
data: [ '预估收入金额', '确认收入金额', '开票金额', '到账金额'],
|
||||||
|
lineStyle: {
|
||||||
|
type: 'solid'
|
||||||
|
},
|
||||||
right: '2%'
|
right: '2%'
|
||||||
},
|
},
|
||||||
grid: {
|
grid: {
|
||||||
|
|||||||
@@ -224,6 +224,9 @@ export default {
|
|||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
data: ['预估收入金额', '确认收入金额', '开票金额', '到账金额'],
|
data: ['预估收入金额', '确认收入金额', '开票金额', '到账金额'],
|
||||||
|
lineStyle: {
|
||||||
|
type: 'solid'
|
||||||
|
},
|
||||||
right: '2%'
|
right: '2%'
|
||||||
},
|
},
|
||||||
grid: {
|
grid: {
|
||||||
|
|||||||
@@ -326,6 +326,9 @@ export default {
|
|||||||
legend: {
|
legend: {
|
||||||
type: 'scroll',
|
type: 'scroll',
|
||||||
data: legend,
|
data: legend,
|
||||||
|
lineStyle: {
|
||||||
|
type: 'solid'
|
||||||
|
},
|
||||||
right: '2%'
|
right: '2%'
|
||||||
},
|
},
|
||||||
grid: {
|
grid: {
|
||||||
|
|||||||
@@ -304,6 +304,9 @@ export default {
|
|||||||
legend: {
|
legend: {
|
||||||
type: 'scroll',
|
type: 'scroll',
|
||||||
data: legend,
|
data: legend,
|
||||||
|
lineStyle: {
|
||||||
|
type: 'solid'
|
||||||
|
},
|
||||||
right: '2%'
|
right: '2%'
|
||||||
},
|
},
|
||||||
grid: {
|
grid: {
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ export default {
|
|||||||
this.form.resetFields()
|
this.form.resetFields()
|
||||||
this.model = Object.assign({}, record)
|
this.model = Object.assign({}, record)
|
||||||
this.visible = true
|
this.visible = true
|
||||||
|
this.model.principalIdB = this.model.principalIdB || undefined
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.form.setFieldsValue(pick(this.model, 'name', 'abbreviation', 'remarks', 'principalIdA', 'principalIdB'))
|
this.form.setFieldsValue(pick(this.model, 'name', 'abbreviation', 'remarks', 'principalIdA', 'principalIdB'))
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.draftingGroupProject = this.$route.query.draftingGroupProject
|
this.draftingGroupProject = this.$route.query.draftingGroupProject
|
||||||
this.draftingGroupProjectId = this.$route.query.draftingGroupProjectId
|
this.draftingGroupProjectId = this.$route.query.draftingGroupProjectId
|
||||||
this.canOperate = this.$route.query.canOperate === 'true' ? true : false
|
// this.canOperate = this.$route.query.canOperate === 'true' ? true : false
|
||||||
this.filters.draftingGroupId = this.draftingGroupProjectId
|
this.filters.draftingGroupId = this.draftingGroupProjectId
|
||||||
this.loadData(1)
|
this.loadData(1)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -97,16 +97,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||||
<a @click="goUnderStudyProject(record)" v-has="'draftingGroup:underStudyProject'"
|
<a @click="goUnderStudyProject(record)" v-has="'draftingGroup:underStudyProject'">在研项目</a>
|
||||||
v-if="record.checkoutOperation === 1">在研项目</a>
|
|
||||||
<a @click="goFilesMaintenance(record)" v-has="'draftingGroup:fileMaintenance'">其他分发资料</a>
|
<a @click="goFilesMaintenance(record)" v-has="'draftingGroup:fileMaintenance'">其他分发资料</a>
|
||||||
<a @click="goConferenceMaintenance(record)" v-has="'draftingGroup:meetingMaintenance'">起草组会议</a>
|
<a @click="goConferenceMaintenance(record)" v-has="'draftingGroup:meetingMaintenance'">起草组会议</a>
|
||||||
<a @click="copyDraftGroup(record.id)" v-has="'draftingGroup:copy'"
|
<a @click="copyDraftGroup(record.id)" v-has="'draftingGroup:copy'">复制</a>
|
||||||
v-if="record.checkoutOperation === 1">复制</a>
|
<a @click="handleEdit(record)" v-has="'draftingGroup:edit'">基本信息维护</a>
|
||||||
<a @click="handleEdit(record)" v-has="'draftingGroup:edit'"
|
<a @click="handleDelete(record.id)" v-has="'draftingGroup:delete'">删除</a>
|
||||||
v-if="record.checkoutOperation === 1">基本信息维护</a>
|
|
||||||
<a @click="handleDelete(record.id)" v-has="'draftingGroup:delete'"
|
|
||||||
v-if="record.checkoutOperation === 1">删除</a>
|
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
@@ -281,7 +277,7 @@ export default {
|
|||||||
path: '/projectManagement/WorkingGroupProjectDataMaintenance',
|
path: '/projectManagement/WorkingGroupProjectDataMaintenance',
|
||||||
query: {
|
query: {
|
||||||
draftingGroupId: record.id,
|
draftingGroupId: record.id,
|
||||||
canOperate: record.checkoutOperation === 1
|
canOperate: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -295,7 +291,7 @@ export default {
|
|||||||
query: {
|
query: {
|
||||||
draftingGroupProject: record.draftingGroupProject,
|
draftingGroupProject: record.draftingGroupProject,
|
||||||
draftingGroupProjectId: record.id,
|
draftingGroupProjectId: record.id,
|
||||||
canOperate: record.checkoutOperation === 1,
|
canOperate: true,
|
||||||
meetingType: '7'
|
meetingType: '7'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -325,7 +321,7 @@ export default {
|
|||||||
query: {
|
query: {
|
||||||
draftingGroupProject: record.draftingGroupProject,
|
draftingGroupProject: record.draftingGroupProject,
|
||||||
draftingGroupProjectId: record.id,
|
draftingGroupProjectId: record.id,
|
||||||
canOperate: record.checkoutOperation === 1
|
canOperate: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -101,6 +101,10 @@
|
|||||||
<a-button type="danger" icon="delete" @click="batchDel" v-has="'draftingGroupMember:batchDel'" v-if="canOperate">
|
<a-button type="danger" icon="delete" @click="batchDel" v-has="'draftingGroupMember:batchDel'" v-if="canOperate">
|
||||||
批量删除
|
批量删除
|
||||||
</a-button>
|
</a-button>
|
||||||
|
<a-button type="primary" icon="check" @click="handleBatchCheck" v-has="'draftingGroupMember:check'" v-if="canOperate">
|
||||||
|
批量审核
|
||||||
|
</a-button>
|
||||||
|
|
||||||
<!--<a-button type="primary" @click="setLabel" v-has="'workingGroupMember:setLabel'">设置标签</a-button>-->
|
<!--<a-button type="primary" @click="setLabel" v-has="'workingGroupMember:setLabel'">设置标签</a-button>-->
|
||||||
</div>
|
</div>
|
||||||
<!-- /操作按钮区域-end-->
|
<!-- /操作按钮区域-end-->
|
||||||
@@ -150,6 +154,8 @@
|
|||||||
<drafting-group-member-unit-module ref="modalForm" @ok="modalFormOk"></drafting-group-member-unit-module>
|
<drafting-group-member-unit-module ref="modalForm" @ok="modalFormOk"></drafting-group-member-unit-module>
|
||||||
<!-- 审核弹框 -->
|
<!-- 审核弹框 -->
|
||||||
<drafting-group-member-unit-check-module ref="draftingGroupMemberUnitCheckModule" @ok="modalFormOk"/>
|
<drafting-group-member-unit-check-module ref="draftingGroupMemberUnitCheckModule" @ok="modalFormOk"/>
|
||||||
|
<!-- 批量审核弹框 -->
|
||||||
|
<drafting-group-member-unit-batch-check-module ref="draftingGroupMemberUnitBatchCheckModule" @ok="modalFormOk" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -165,6 +171,8 @@ import PreviewFile from '../../components/jero/PreviewFile'
|
|||||||
import {createQcCode} from '@api/incomeMeetingApi'
|
import {createQcCode} from '@api/incomeMeetingApi'
|
||||||
import DraftingGroupMemberUnitCheckModule from '@views/draftingGroup/modules/DraftingGroupMemberUnitCheckModule'
|
import DraftingGroupMemberUnitCheckModule from '@views/draftingGroup/modules/DraftingGroupMemberUnitCheckModule'
|
||||||
import { ProjectTypeEnums } from '../../enums/commonEnums'
|
import { ProjectTypeEnums } from '../../enums/commonEnums'
|
||||||
|
import DraftingGroupMemberUnitBatchCheckModule
|
||||||
|
from '@views/draftingGroup/modules/DraftingGroupMemberUnitBatchCheckModule'
|
||||||
|
|
||||||
// eslint-disable-next-line no-undef,no-unused-vars
|
// eslint-disable-next-line no-undef,no-unused-vars
|
||||||
const Base64 = require('js-base64').Base64
|
const Base64 = require('js-base64').Base64
|
||||||
@@ -172,6 +180,7 @@ const Base64 = require('js-base64').Base64
|
|||||||
export default {
|
export default {
|
||||||
name: 'DraftingGroupMemberUnitMaintenance',
|
name: 'DraftingGroupMemberUnitMaintenance',
|
||||||
components: {
|
components: {
|
||||||
|
DraftingGroupMemberUnitBatchCheckModule,
|
||||||
DraftingGroupMemberUnitCheckModule,
|
DraftingGroupMemberUnitCheckModule,
|
||||||
PageHeaderTitle,
|
PageHeaderTitle,
|
||||||
ProjectDetailModal,
|
ProjectDetailModal,
|
||||||
@@ -358,6 +367,15 @@ export default {
|
|||||||
this.initWorkGroupData()
|
this.initWorkGroupData()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 批量审核
|
||||||
|
handleBatchCheck () {
|
||||||
|
// 必须都是待审核 1.待审核 2.已通过 3.已驳回
|
||||||
|
if (this.selectionRows.some(item => item.checkResult !== 1)) {
|
||||||
|
this.$message.warn('勾选数据需要是待审核数据')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$refs.draftingGroupMemberUnitBatchCheckModule.open(this.selectionRows)
|
||||||
|
},
|
||||||
handleCheck (record) {
|
handleCheck (record) {
|
||||||
this.$refs.draftingGroupMemberUnitCheckModule.open(record)
|
this.$refs.draftingGroupMemberUnitCheckModule.open(record)
|
||||||
},
|
},
|
||||||
@@ -385,7 +403,7 @@ export default {
|
|||||||
this.spinning = true
|
this.spinning = true
|
||||||
this.draftingGroupProject = this.$route.query.draftingGroupProject || ''
|
this.draftingGroupProject = this.$route.query.draftingGroupProject || ''
|
||||||
this.draftingGroupProjectId = this.$route.query.draftingGroupProjectId || ''
|
this.draftingGroupProjectId = this.$route.query.draftingGroupProjectId || ''
|
||||||
this.canOperate = this.$route.query.canOperate === 'true' ? true : false
|
// this.canOperate = this.$route.query.canOperate === 'true' ? true : false
|
||||||
this.filters.draftingGroupId = this.draftingGroupProjectId
|
this.filters.draftingGroupId = this.draftingGroupProjectId
|
||||||
this.importParam.draftGroupId = this.draftingGroupProjectId
|
this.importParam.draftGroupId = this.draftingGroupProjectId
|
||||||
this.loadData()
|
this.loadData()
|
||||||
|
|||||||
@@ -0,0 +1,220 @@
|
|||||||
|
<!--起草组批量审核弹框-->
|
||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
@ok="handleOk"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<section class="check">
|
||||||
|
<h3>报名信息</h3>
|
||||||
|
<div v-for="row in selectRows" :key="row.id">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="24">
|
||||||
|
<label>参会企业:</label>
|
||||||
|
<span>{{ row.chargeCompanyTemporaryName }}</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
|
||||||
|
<a-row :gutter="24" v-for="item in row.payDraftingGroupSubItemContactsList" :key="item.id">
|
||||||
|
<a-col :span="12">
|
||||||
|
<label>姓名:</label>
|
||||||
|
<span>{{ item.contactsTemporaryName }}</span></a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<label>备注:</label>
|
||||||
|
<span>{{ item.remarks }}</span></a-col>
|
||||||
|
</a-row>
|
||||||
|
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="24">
|
||||||
|
<label>备注:</label>
|
||||||
|
<span>{{ row.remarks }}</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<h3>审核</h3>
|
||||||
|
|
||||||
|
<a-form :form="form">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :xl="12" :sm="24">
|
||||||
|
<a-form-item label="审核" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-radio-group v-decorator="['checkResult',validatorRules.checkResult]" placeholder="请选择审核结果"
|
||||||
|
@change="changeCheck">
|
||||||
|
<a-radio value="2">
|
||||||
|
通过
|
||||||
|
</a-radio>
|
||||||
|
<a-radio value='3'>
|
||||||
|
驳回
|
||||||
|
</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="24" :sm="24" v-if="checkBool">
|
||||||
|
<a-form-item label="审核说明" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||||
|
<a-textarea
|
||||||
|
placeholder="请输入审核说明"
|
||||||
|
:auto-size="{ minRows: 3, maxRows: 6 }"
|
||||||
|
:maxLength='200'
|
||||||
|
v-decorator="['checkRemark',validatorRules.checkRemark]"
|
||||||
|
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="24" :sm="24" v-if="!checkBool">
|
||||||
|
<a-form-item label="审核说明" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||||
|
<a-textarea
|
||||||
|
placeholder="请输入审核说明"
|
||||||
|
:auto-size="{ minRows: 3, maxRows: 6 }"
|
||||||
|
:maxLength='200'
|
||||||
|
v-decorator="['checkRemark']"
|
||||||
|
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
<template slot="footer">
|
||||||
|
<a-button @click="handleCancel">关闭</a-button>
|
||||||
|
<a-button type="primary" @click="handleOk" v-preventclick>确定</a-button>
|
||||||
|
</template>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {postAction} from '@api/manage'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'DraftingGroupMemberUnitBatchCheckModule',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '批量审核入会信息',
|
||||||
|
width: 800,
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
selectRows: [],
|
||||||
|
labelCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 6}
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 18}
|
||||||
|
},
|
||||||
|
remarksLabelCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 3}
|
||||||
|
},
|
||||||
|
remarksWrapperCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 21}
|
||||||
|
},
|
||||||
|
validatorRules: {
|
||||||
|
checkRemark: {
|
||||||
|
rules: [{required: true, message: '请输入审核说明'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
checkResult: {
|
||||||
|
rules: [{required: true, message: '请选择审核结果'}],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
// 审核报名信息
|
||||||
|
check: '/drafting/payDraftingGroupSubitem/checkRegister'
|
||||||
|
},
|
||||||
|
// 审核结果选择
|
||||||
|
checkBool: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open(selectRows) {
|
||||||
|
console.log(selectRows)
|
||||||
|
this.form.resetFields()
|
||||||
|
this.selectRows = selectRows
|
||||||
|
this.visible = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('close')
|
||||||
|
this.visible = false
|
||||||
|
this.selectRows = []
|
||||||
|
},
|
||||||
|
handleOk() {
|
||||||
|
const that = this
|
||||||
|
// 触发表单验证
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
that.confirmLoading = true
|
||||||
|
const formData = Object.assign({}, values)
|
||||||
|
formData.id = this.selectRows.map(item => item.id).join(',')
|
||||||
|
postAction(this.url.check, formData).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
that.$message.success(res.message)
|
||||||
|
that.$emit('ok')
|
||||||
|
that.confirmLoading = false
|
||||||
|
that.close()
|
||||||
|
} else {
|
||||||
|
that.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
that.confirmLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 选择审核结果
|
||||||
|
* */
|
||||||
|
changeCheck(e) {
|
||||||
|
console.log(e)
|
||||||
|
// 审核结果选择拒绝 审核说明必填
|
||||||
|
if (e.target.value === '2') {
|
||||||
|
this.checkBool = false
|
||||||
|
} else if (e.target.value === '3') {
|
||||||
|
this.checkBool = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.check {
|
||||||
|
.ant-row {
|
||||||
|
line-height: 3;
|
||||||
|
|
||||||
|
.ant-col {
|
||||||
|
label {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-999 {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-black {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -640,8 +640,8 @@ export default {
|
|||||||
* @param index
|
* @param index
|
||||||
*/
|
*/
|
||||||
handleAddContact(index) {
|
handleAddContact(index) {
|
||||||
if (this.model.payDraftingGroupSubItemContactsList.length >= 10) {
|
if (this.model.payDraftingGroupSubItemContactsList.length >= 20) {
|
||||||
this.$message.warn('最多添加十个企业联系人')
|
this.$message.warn('最多添加二十个企业联系人')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let obj = {
|
let obj = {
|
||||||
|
|||||||
@@ -175,9 +175,13 @@
|
|||||||
:disabled="record.projectType === 3 && record.registerCheckResult === '0'">来款</a>
|
:disabled="record.projectType === 3 && record.registerCheckResult === '0'">来款</a>
|
||||||
<!-- 2024年2月变更 :disabled="record.needInvoice === 0" -->
|
<!-- 2024年2月变更 :disabled="record.needInvoice === 0" -->
|
||||||
<a @click="invoicing(record)"
|
<a @click="invoicing(record)"
|
||||||
v-has="'incomePaymentAndInvoiving:invoicing'">开票</a>
|
v-has="'incomePaymentAndInvoiving:invoicing'" :disabled="record.needInvoice === 0">开票</a>
|
||||||
<!-- 确认收入项目--- 普通项目、工作组项目、资料网员 项目 可以确认收入 报名状态是 待审核的时候 不能确认收入?-->
|
<!-- 确认收入项目--- 普通项目、工作组项目、资料网员 项目 可以确认收入 报名状态是 待审核的时候 不能确认收入?-->
|
||||||
<a v-has="'incomePaymentAndInvoiving:confirmPayment'" @click="confirmPayment(record)">确认收入</a>
|
<a v-has="'incomePaymentAndInvoiving:confirmPayment'" @click="confirmPayment(record)">确认收入</a>
|
||||||
|
|
||||||
|
<!-- 修改-待确收金额- 如果有到账、确收、开票时需要同步修改状态 --->
|
||||||
|
<a v-has="'incomePaymentAndInvoiving:editReceivableAmount'" @click="editReceivableAmount(record)">修改</a>
|
||||||
|
|
||||||
<!--工作组项目、普通项目、资料网员项目可以修改发票信息-->
|
<!--工作组项目、普通项目、资料网员项目可以修改发票信息-->
|
||||||
<a v-has="'packProject:changeInvoiceInfo'" @click="changeInvoiceInfo(record)" :disabled="Number(record.projectType) !== ProjectTypeEnums.GENERAL_PRO.value && Number(record.projectType) !== ProjectTypeEnums.GROUP_PRO.value && Number(record.projectType) !== ProjectTypeEnums.MEMBER_PRO.value">开票类型</a>
|
<a v-has="'packProject:changeInvoiceInfo'" @click="changeInvoiceInfo(record)" :disabled="Number(record.projectType) !== ProjectTypeEnums.GENERAL_PRO.value && Number(record.projectType) !== ProjectTypeEnums.GROUP_PRO.value && Number(record.projectType) !== ProjectTypeEnums.MEMBER_PRO.value">开票类型</a>
|
||||||
|
|
||||||
@@ -239,7 +243,14 @@
|
|||||||
@ok="modalFormOk"
|
@ok="modalFormOk"
|
||||||
>
|
>
|
||||||
</invoice-info-change-module>
|
</invoice-info-change-module>
|
||||||
|
<!--修改待确认金额-->
|
||||||
|
<edit-receivable-amount
|
||||||
|
ref="editReceivableAmount"
|
||||||
|
:project-id="selectProjectId"
|
||||||
|
:project-type="selectProjectType"
|
||||||
|
@ok="modalFormOk"
|
||||||
|
>
|
||||||
|
</edit-receivable-amount>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -263,6 +274,7 @@ import {getPayConfirmList} from '../../../api/incomePaymentsApi'
|
|||||||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||||
import InvoiceInfoChangeModule from '../../packManagement/modules/InvoiceInfoChangeModule'
|
import InvoiceInfoChangeModule from '../../packManagement/modules/InvoiceInfoChangeModule'
|
||||||
import { formatMoney } from '@/utils/formatMoney'
|
import { formatMoney } from '@/utils/formatMoney'
|
||||||
|
import EditReceivableAmount from './modules/EditReceivableAmount'
|
||||||
|
|
||||||
// 项目类型 数据字典 的定义 和数据库的保持一致
|
// 项目类型 数据字典 的定义 和数据库的保持一致
|
||||||
const ProjectTypeEnums = {
|
const ProjectTypeEnums = {
|
||||||
@@ -290,7 +302,9 @@ export default {
|
|||||||
AuditProofModule,
|
AuditProofModule,
|
||||||
AuditModal,
|
AuditModal,
|
||||||
ConfirmStageModule,
|
ConfirmStageModule,
|
||||||
InvoiceInfoChangeModule
|
InvoiceInfoChangeModule,
|
||||||
|
// 修改待确收金额
|
||||||
|
EditReceivableAmount
|
||||||
},
|
},
|
||||||
mixins: [JeroListMixin],
|
mixins: [JeroListMixin],
|
||||||
data() {
|
data() {
|
||||||
@@ -398,7 +412,7 @@ export default {
|
|||||||
dataIndex: 'action',
|
dataIndex: 'action',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
width: 300,
|
width: 380,
|
||||||
scopedSlots: {customRender: 'action'}
|
scopedSlots: {customRender: 'action'}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -632,6 +646,15 @@ export default {
|
|||||||
// this.confirmStageVisible = true
|
// this.confirmStageVisible = true
|
||||||
this.$refs.changeInvoiceInfo.open(record)
|
this.$refs.changeInvoiceInfo.open(record)
|
||||||
|
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 修改-待确收金额-果有到账、确收、开票时需要同步修改状
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
editReceivableAmount(record) {
|
||||||
|
this.selectProjectType = record.projectType
|
||||||
|
this.selectProjectId = record.id
|
||||||
|
this.$refs.editReceivableAmount.edit(record)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,192 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
switchFullscreen
|
||||||
|
@ok="handleOk"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
okText="保存"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<a-form :form="form">
|
||||||
|
<a-form-item label="待确收金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入待确收金额"
|
||||||
|
v-decorator="['receivableAmount',validatorRules.receivableAmount]"
|
||||||
|
:maxLength='50'
|
||||||
|
@blur="addZeroAmount"
|
||||||
|
@change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
<!-- <a-form-item label="税率" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-dict-select-tag @change="changeRate" placeholder="请选择税率" dict-code="rate" :trigger-change="true"
|
||||||
|
v-decorator="['taxRate',validatorRules.taxRate]"></j-dict-select-tag>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="税额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入税额"
|
||||||
|
v-decorator="['tax',validatorRules.tax]"
|
||||||
|
:maxLength='50'
|
||||||
|
disabled
|
||||||
|
@change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="未税金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入未税金额"
|
||||||
|
disabled
|
||||||
|
v-decorator="['noTaxAmount',validatorRules.noTaxAmount]"
|
||||||
|
:maxLength='50'
|
||||||
|
@change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input>
|
||||||
|
</a-form-item>-->
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import pick from 'lodash.pick'
|
||||||
|
import { addZero } from '../../../../utils/util'
|
||||||
|
import { TaxOperateMixin } from './TaxOperateMixin'
|
||||||
|
import {httpAction} from '@api/manage'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'EditReceivableAmount',
|
||||||
|
props: {
|
||||||
|
// 项目id
|
||||||
|
projectId: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
// 项目类型
|
||||||
|
projectType: {
|
||||||
|
type: [Number, String],
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mixins: [TaxOperateMixin],
|
||||||
|
watch: {
|
||||||
|
// 监听是否需要发票 然后修改响应的税率值
|
||||||
|
needInvoice(value) {
|
||||||
|
this.taxRate = value ? 0.06 : 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '修改待确收金额',
|
||||||
|
width: 600,
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
model: {},
|
||||||
|
url: {
|
||||||
|
// 接口名称
|
||||||
|
edit: '/paymentRecord/payPaymentRecord/editReceivableAmount'
|
||||||
|
},
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 5 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 18 }
|
||||||
|
},
|
||||||
|
validatorRules: {
|
||||||
|
receivableAmount: {
|
||||||
|
rules: [{ required: true, validator: this.checkMoney }],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
taxRate: {
|
||||||
|
rules: [{ required: true,message: '请选择税率' }],
|
||||||
|
validateTrigger: 'change',initialValue:'0.06'
|
||||||
|
},
|
||||||
|
noTaxAmount: {
|
||||||
|
rules: [{required: true, validator: this.checkNoTaxMoney}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
tax: {
|
||||||
|
rules: [{required: true, validator: this.checkTaxMoney}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
paymentDate: {
|
||||||
|
rules: [{ required: true, message: '请选择来款日期' }],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
addZero,
|
||||||
|
edit(record) {
|
||||||
|
this.visible = true
|
||||||
|
this.form.resetFields()
|
||||||
|
this.model = Object.assign({}, record)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(this.model, 'receivableAmount'))
|
||||||
|
this.taxRate = this.form.getFieldValue('taxRate')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 改变税率计算 到账金额 与税额
|
||||||
|
* */
|
||||||
|
changeRate(val){
|
||||||
|
this.taxRate = val
|
||||||
|
let amount = this.form.getFieldValue('receivableAmount')
|
||||||
|
if(!amount) return
|
||||||
|
let obj = this.calcOtherNumber(amount)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue( {tax:obj.tax,noTaxAmount: obj.noTaxAmount})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleOk() {
|
||||||
|
if (this.confirmLoading) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const that = this
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
that.confirmLoading = true
|
||||||
|
let method = 'post'
|
||||||
|
let url = this.url.edit
|
||||||
|
const formData = Object.assign({}, values)
|
||||||
|
// 项目id
|
||||||
|
formData.projectId = this.projectId
|
||||||
|
// 项目类型
|
||||||
|
formData.projectType = this.projectType
|
||||||
|
httpAction(url, formData, method).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
that.$message.success(res.message)
|
||||||
|
that.$emit('ok')
|
||||||
|
that.handleCancel()
|
||||||
|
that.confirmLoading = false
|
||||||
|
} else {
|
||||||
|
this.$message.warn(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
that.confirmLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
// 校验金额格式
|
||||||
|
checkMoney(rules, value, callback) {
|
||||||
|
this.checkMoneyTemplate(rules, value, callback, '待确收金额')
|
||||||
|
},
|
||||||
|
checkNoTaxMoney(rules, value, callback) {
|
||||||
|
this.checkMoneyTemplate(rules, value, callback, '未税金额')
|
||||||
|
},
|
||||||
|
checkTaxMoney(rules, value, callback) {
|
||||||
|
this.checkMoneyTemplate(rules, value, callback, '税额')
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -160,7 +160,7 @@ export default {
|
|||||||
validateTrigger: 'change'
|
validateTrigger: 'change'
|
||||||
},
|
},
|
||||||
invoiceFileId: {
|
invoiceFileId: {
|
||||||
rules: [{ required: true, message: '请上传发票附件' }],
|
rules: [{ required: false, message: '请上传发票附件' }],
|
||||||
validateTrigger: 'change'
|
validateTrigger: 'change'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,328 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title v-if="$route.query.id" :is-level-one="false" :level-two-title="$route.query.title"></page-header-title>
|
||||||
|
<page-header-title v-else :img-for-icon="IconDraftingGruop"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!-- 查询区域-start -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row>
|
||||||
|
<a-col :xxl="6" :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="项目名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入项目名称" v-model="queryParam.projectName" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="6" :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="负责人" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<select-principal placeholder="请选择负责人" v-model="queryParam.principalId"></select-principal>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="4" :lg="7" :md="8" :sm="24">
|
||||||
|
<span class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" icon="search" @click="searchQuery"
|
||||||
|
v-has="'safetyCenter:search'">查询</a-button>
|
||||||
|
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- /查询区域-end-->
|
||||||
|
|
||||||
|
<!-- 操作按钮区域-->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'safetyCenter:add'">新增</a-button>
|
||||||
|
<a-button type="danger" icon="delete" @click="batchDel" v-has="'safetyCenter:batchDel'">批量删除</a-button>
|
||||||
|
</div>
|
||||||
|
<!-- /操作按钮区域-end-->
|
||||||
|
|
||||||
|
<!-- table表格区域-->
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:scroll="{x: 1000}"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, getCheckboxProps: getCheckboxProps}"
|
||||||
|
@change="handleTableChange"
|
||||||
|
class="j-table-force-nowrap">
|
||||||
|
|
||||||
|
<!-- 项目名称-->
|
||||||
|
<template slot="projectName" slot-scope="text, record">
|
||||||
|
<a-tooltip>
|
||||||
|
<template slot="title">{{ text }}</template>
|
||||||
|
<div class="primary-color text-over" @click="goMemberUnitMaintenance(record)">{{ text }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<j-ellipsis :value="text" :length="20"></j-ellipsis>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||||
|
<!-- 研究组可以点击在研项目显示项目组的信息 -->
|
||||||
|
<a @click="goUnderStudyProject(record)" v-has="'safetyCenter:underStudyProject'"
|
||||||
|
v-if="record.projectType + '' === SafetyCenterProjectTypeEnums.studyGroup.value">在研项目</a>
|
||||||
|
<a @click="goFilesMaintenance(record)" v-has="'safetyCenter:fileMaintenance'">其他分发资料</a>
|
||||||
|
<a @click="goConferenceMaintenance(record)" v-has="'safetyCenter:meetingMaintenance'">项目会议</a>
|
||||||
|
<!--<a @click="handleCopy(record.id)" v-has="'safetyCenter:copy'">复制</a>-->
|
||||||
|
<a @click="handleEdit(record)" v-has="'safetyCenter:edit'">基本信息维护</a>
|
||||||
|
<a @click="handleDelete(record.id)" v-has="'safetyCenter:delete'"
|
||||||
|
v-if="record.projectType + '' === SafetyCenterProjectTypeEnums.projectGroup.value">删除</a>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<!-- /table表格区域-->
|
||||||
|
</a-card>
|
||||||
|
<!--新增、基本信息维护-->
|
||||||
|
<safety-center-module ref="modalForm" @ok="modalFormOk"></safety-center-module>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||||
|
import SelectPrincipal from '@comp/company/SelectPrincipal'
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import IconDraftingGruop from '@/assets/imgs/icon/icon_drafting_group.png'
|
||||||
|
import { getAction } from '@api/manage'
|
||||||
|
import SafetyCenterModule from '@views/functionalSafetyCenter/modules/SafetyCenterModule'
|
||||||
|
import {MeetingTypeEnums, SafetyCenterProjectTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'FunctionalSafetyCenter',
|
||||||
|
components: {SafetyCenterModule, SelectPrincipal, PageHeaderTitle },
|
||||||
|
mixins: [JeroListMixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
disableMixinCreated: true,
|
||||||
|
// 混入post请求删除接口
|
||||||
|
postMethodDel: true,
|
||||||
|
SafetyCenterProjectTypeEnums,
|
||||||
|
IconDraftingGruop,
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 5 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 10 }
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
list: '/SafetyCenter/page',
|
||||||
|
delete: '/SafetyCenter/delete',
|
||||||
|
deleteBatch: '/SafetyCenter/deleteBatch'
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
title: '项目名称',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'projectName',
|
||||||
|
scopedSlots: { customRender: 'projectName' }
|
||||||
|
}, {
|
||||||
|
title: '负责人',
|
||||||
|
align: 'center',
|
||||||
|
width: 130,
|
||||||
|
dataIndex: 'principalId_dictText'
|
||||||
|
}, {
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
width: 500,
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
queryParam: {},
|
||||||
|
lastQueryParam: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
// 如果有id展示项目组数据接口
|
||||||
|
if (this.$route.query.id) {
|
||||||
|
this.filters.parentId = this.$route.query.id
|
||||||
|
this.url.list = '/SafetyCenter/projectGroupPage'
|
||||||
|
}
|
||||||
|
this.loadData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getCheckboxProps (record) {
|
||||||
|
return {
|
||||||
|
props: {
|
||||||
|
// 一级禁用,防止勾选删除
|
||||||
|
disabled: record.projectType + '' === SafetyCenterProjectTypeEnums.safetyCenter.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
loadData(arg) {
|
||||||
|
if (!this.url.list) {
|
||||||
|
this.$message.error('请设置url.list属性!')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//加载数据 若传入参数1则加载第一页的内容
|
||||||
|
if (arg === 1) {
|
||||||
|
this.ipagination.current = 1
|
||||||
|
}
|
||||||
|
var params = this.getQueryParams()//查询条件
|
||||||
|
this.loading = true
|
||||||
|
getAction(this.url.list, params).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||||
|
this.dataSource = res.result.records || res.result
|
||||||
|
if (res.result.total) {
|
||||||
|
this.ipagination.total = res.result.total
|
||||||
|
//清空列表选中
|
||||||
|
this.onClearSelected()
|
||||||
|
} else {
|
||||||
|
this.ipagination.total = 0
|
||||||
|
}
|
||||||
|
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||||
|
}
|
||||||
|
if (res.code === 510) {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 文件维护
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
goFilesMaintenance(record) {
|
||||||
|
console.log(record)
|
||||||
|
this.$router.push({
|
||||||
|
path: '/projectManagement/WorkingGroupProjectDataMaintenance',
|
||||||
|
query: {
|
||||||
|
safetyCenterId: record.id,
|
||||||
|
canOperate: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 会议维护
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
goConferenceMaintenance(record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/functionalSafetyCenter/FunctionalSafetyConferenceMaintenance',
|
||||||
|
query: {
|
||||||
|
projectName: record.projectName,
|
||||||
|
projectId: record.id,
|
||||||
|
canOperate: true,
|
||||||
|
meetingType: MeetingTypeEnums.safetyCenter.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 成员维护
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
goMemberUnitMaintenance(record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/functionalSafetyCenter/FunctionalSafetyMemberUnitMaintenance',
|
||||||
|
query: {
|
||||||
|
projectName: record.projectName,
|
||||||
|
projectId: record.id,
|
||||||
|
canOperate: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
searchReset() {
|
||||||
|
this.lastQueryParam = {
|
||||||
|
year: new Date().getFullYear().toString()
|
||||||
|
}
|
||||||
|
this.queryParam = {
|
||||||
|
year: new Date().getFullYear().toString()
|
||||||
|
}
|
||||||
|
this.loadData(1)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 在研项目
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
goUnderStudyProject(record) {
|
||||||
|
console.log(record)
|
||||||
|
this.$router.push({
|
||||||
|
path: '/functionalSafetyCenter',
|
||||||
|
query: {
|
||||||
|
title: record.projectName,
|
||||||
|
id: record.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 重写编辑
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
handleEdit(record) {
|
||||||
|
this.$refs.modalForm.edit(record)
|
||||||
|
this.$refs.modalForm.title = '基本信息维护'
|
||||||
|
this.$refs.modalForm.disableSubmit = false
|
||||||
|
},
|
||||||
|
// 下拉框的搜索
|
||||||
|
filterOption(input, option) {
|
||||||
|
return (
|
||||||
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
.tooltip {
|
||||||
|
float: right;
|
||||||
|
width: auto;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: flex-end;
|
||||||
|
height: 40px;
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
margin-right: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-color {
|
||||||
|
width: 13px;
|
||||||
|
height: 13px;
|
||||||
|
margin-right: 5px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-pay-in-full {
|
||||||
|
background: linear-gradient(0deg, #069f99 0%, #07b0a9 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&-partial-payment {
|
||||||
|
background: linear-gradient(0deg, #0075a9 0%, #0096d8 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&-non-payment {
|
||||||
|
background: #e8e8e8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-over {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,399 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title :is-level-one="false" :level-two-title="projectName"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!-- 查询区域-->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="会议名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="10" :lg="12" :md="12" :sm="24">
|
||||||
|
<a-form-item label="会议时间">
|
||||||
|
<j-date
|
||||||
|
placeholder="请选择开始日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam.meetingStartTime"
|
||||||
|
:disabled-date="disabledStartDate">
|
||||||
|
</j-date>
|
||||||
|
<span class="query-group-split-cust"></span>
|
||||||
|
<j-date
|
||||||
|
placeholder="请选择结束日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam.meetingEndTime"
|
||||||
|
:disabled-date="disabledEndDate">
|
||||||
|
</j-date>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-year-date style="width:100%" placeholder="请选择年份"
|
||||||
|
v-model="queryParam.particularYear"></j-year-date>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="10" :lg="12" :md="12" :sm="24">
|
||||||
|
<a-form-item label="创建时间">
|
||||||
|
<j-date
|
||||||
|
placeholder="请选择开始日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam.createTime_begin"
|
||||||
|
:disabled-date="disabledStartCreateDate">
|
||||||
|
</j-date>
|
||||||
|
<span class="query-group-split-cust"></span>
|
||||||
|
<j-date
|
||||||
|
placeholder="请选择结束日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam.createTime_end"
|
||||||
|
:disabled-date="disabledEndCreateDate">
|
||||||
|
</j-date>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="已提醒" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-dict-select-tag style="width: 100%"
|
||||||
|
dict-code="yn"
|
||||||
|
v-model="queryParam.remind"
|
||||||
|
placeholder="请选择提醒类型"></j-dict-select-tag>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<span class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" icon="search" @click="searchQuery"
|
||||||
|
v-has="'safetyCenterMeeting:search'">查询</a-button>
|
||||||
|
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- /查询区域-->
|
||||||
|
|
||||||
|
<!-- 操作按钮区域-->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'safetyCenterMeeting:add'" v-if="canOperate">新增
|
||||||
|
</a-button>
|
||||||
|
<a-button type="primary" icon="export" @click="handleExportXls('功能安全中心会议')"
|
||||||
|
v-has="'safetyCenterMeeting:export'">导出
|
||||||
|
</a-button>
|
||||||
|
<a-button type="danger" icon="delete" @click="batchDel" v-has="'safetyCenterMeeting:batchDel'" v-if="canOperate">
|
||||||
|
批量删除
|
||||||
|
</a-button>
|
||||||
|
<a-button type="primary" @click="publishRemind" v-has="'safetyCenterMeeting:publish'" v-if="canOperate">发布
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
<!-- /操作按钮区域-end-->
|
||||||
|
|
||||||
|
<!-- table表格区域-->
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:scroll="{x:true}"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange"
|
||||||
|
class="j-table-force-nowrap">
|
||||||
|
|
||||||
|
<!-- 会议名称 点击去参会情况-->
|
||||||
|
<template slot="htmlSlot" slot-scope="text, record">
|
||||||
|
<j-ellipsis v-if="!!text" class="primary-color" :value="text" :length="20"
|
||||||
|
@click="toAttendance(record)"></j-ellipsis>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<j-ellipsis :value="text" :length="20"></j-ellipsis>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<span slot="action" class="action-span-cell" slot-scope="text, record" v-if="canOperate">
|
||||||
|
<a @click="uploadFile(record,'1')" v-has="'safetyCenterMeeting:uploadCouncil'">会议纪要</a>
|
||||||
|
<a @click="uploadFile(record,'2')" v-has="'safetyCenterMeeting:upload'">上传文件</a>
|
||||||
|
<!-- <a @click="applyMsg">报名信息</a>-->
|
||||||
|
<a @click="handleEdit(record)" v-has="'safetyCenterMeeting:edit'">编辑</a>
|
||||||
|
<a @click="handleDelete(record.id)" v-has="'safetyCenterMeeting:delete'">删除</a>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<publish-remind-modal ref="publishRemindModal" @ok="modalFormOk"></publish-remind-modal>
|
||||||
|
<upload-meet-file-modal ref="modalForm" @ok="modalFormOk"></upload-meet-file-modal>
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||||
|
import { RangeDateMixin } from '@/mixins/RangeDateMixin'
|
||||||
|
import JYearDate from '@comp/jero/JYearDate'
|
||||||
|
import JDate from '@comp/tools/JDate'
|
||||||
|
import moment from 'moment'
|
||||||
|
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||||
|
import PublishRemindModal from '@views/projectManagement/modules/PublishRemindModal'
|
||||||
|
import UploadMeetFileModal from '@views/incomePayments/meetManage/modules/UploadMeetFileModal'
|
||||||
|
import '@/assets/less/TableExpand.less'
|
||||||
|
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'FunctionalSafetyCenterConferenceMaintenance',
|
||||||
|
components: {
|
||||||
|
JYearDate,
|
||||||
|
JDate,
|
||||||
|
JDictSelectTag,
|
||||||
|
PublishRemindModal,
|
||||||
|
UploadMeetFileModal,
|
||||||
|
PageHeaderTitle
|
||||||
|
},
|
||||||
|
mixins: [JeroListMixin, RangeDateMixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
projectName: '',
|
||||||
|
projectId: '',
|
||||||
|
disableMixinCreated: true,
|
||||||
|
list: [],
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 5 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 10 }
|
||||||
|
},
|
||||||
|
dateKeyObj: {
|
||||||
|
beginKey: 'meetingStartTime',
|
||||||
|
endKey: 'meetingEndtTime'
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '会议名称',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'meetingName',
|
||||||
|
scopedSlots: { customRender: 'htmlSlot' },
|
||||||
|
width: 160
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '会议类型',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'meetingType_dictText',
|
||||||
|
width: 100,
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '负责人',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'directorName',
|
||||||
|
width: 160,
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '召开时间',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'startTime',
|
||||||
|
width: 200,
|
||||||
|
customRender: (text, record) => (
|
||||||
|
<j-ellipsis value={ record.startTime + '~' + record.endTime } length={ 20 }></j-ellipsis>)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '召开地点',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'venue',
|
||||||
|
width: 200,
|
||||||
|
customRender: (text, record) => (
|
||||||
|
<j-ellipsis value={ text + '/' + record.address } length={ 20 }></j-ellipsis>)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '年份',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'particularYear',
|
||||||
|
width: 120,
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '已提醒',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'remind_dictText',
|
||||||
|
width: 100,
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'createTime',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
width: 160,
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
url: {
|
||||||
|
list: '/meeting/safetyCenterMeeting/page',
|
||||||
|
delete: '/meeting/safetyCenterMeeting/delete',
|
||||||
|
deleteBatch: '/meeting/safetyCenterMeeting/deleteBatch',
|
||||||
|
exportXlsUrl: '/meeting/safetyCenterMeeting/exportXls'
|
||||||
|
},
|
||||||
|
canOperate: true // 是否可操作(负责人B不可操作)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.projectName = this.$route.query.projectName
|
||||||
|
this.projectId = this.$route.query.projectId
|
||||||
|
this.filters.safetyCenterId = this.projectId
|
||||||
|
this.loadData(1)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 返回项目列表
|
||||||
|
*/
|
||||||
|
backWorkingGroupProject() {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/functionalSafetyCenter'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 新增
|
||||||
|
* */
|
||||||
|
handleAdd() {
|
||||||
|
// 记录当前的项目id
|
||||||
|
let currentId = this.$route.query.projectId
|
||||||
|
this.$router.push({
|
||||||
|
path: '/incomePayments/meetManage/AddOrDetailMeet',
|
||||||
|
query: {
|
||||||
|
safetyCenterId: currentId,
|
||||||
|
meetingType: MeetingTypeEnums.safetyCenter.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 编辑
|
||||||
|
* */
|
||||||
|
handleEdit(record) {
|
||||||
|
// 记录当前的工作组id
|
||||||
|
let currentId = this.$route.query.projectId
|
||||||
|
this.$router.push({
|
||||||
|
path: '/incomePayments/meetManage/AddOrDetailMeet',
|
||||||
|
query: {
|
||||||
|
safetyCenterId: currentId,
|
||||||
|
id: record.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 发布
|
||||||
|
* */
|
||||||
|
publishRemind() {
|
||||||
|
if (this.selectionRows.length === 0) {
|
||||||
|
this.$message.warn('请选择一个会议')
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
// 传入选中的会议id
|
||||||
|
this.$refs.publishRemindModal.open(this.selectedRowKeys)
|
||||||
|
this.$refs.publishRemindModal.title = '发布'
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 上传文件
|
||||||
|
* */
|
||||||
|
uploadFile(record,type) {
|
||||||
|
this.$refs.modalForm.edit(record,type)
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 报名信息
|
||||||
|
* */
|
||||||
|
applyMsg() {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/incomePayments/meetManage/SignUpInfoList'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 参会情况
|
||||||
|
* */
|
||||||
|
toAttendance(record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/incomePayments/meetManage/AttendanceFunctionalSafetyCenter',
|
||||||
|
query: {
|
||||||
|
id: record.id,
|
||||||
|
meetingName: record.meetingName,
|
||||||
|
meetingType: MeetingTypeEnums.safetyCenter.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 创建时间开始禁用
|
||||||
|
* */
|
||||||
|
disabledStartCreateDate(startValue) {
|
||||||
|
const endValue = this.queryParam.createTime_end && moment(this.queryParam.createTime_end, this.rangeDateFormat.end)
|
||||||
|
if (!startValue || !endValue) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return startValue.valueOf() > endValue.valueOf()
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 创建时间结束禁用
|
||||||
|
* */
|
||||||
|
disabledEndCreateDate(endValue) {
|
||||||
|
const startValue = this.queryParam.createTime_begin && moment(this.queryParam.createTime_begin, this.rangeDateFormat.begin)
|
||||||
|
if (!endValue || !startValue) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return startValue.valueOf() > endValue.valueOf()
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 修改查询条件
|
||||||
|
* */
|
||||||
|
searchQuery() {
|
||||||
|
// this.queryParam.meetingStartTime = this.queryParam.meetingStartTime ? this.queryParam.meetingStartTime + ' ' + '00:00:00' : undefined
|
||||||
|
// this.queryParam.meetingEndTime = this.queryParam.meetingEndTime ? this.queryParam.meetingEndTime + ' ' + '23:59:59' : undefined
|
||||||
|
// this.queryParam.createTime_begin = this.queryParam.createTime_begin ? this.queryParam.createTime_begin + ' ' + '00:00:00' : undefined
|
||||||
|
// this.queryParam.createTime_end = this.queryParam.createTime_end ? this.queryParam.createTime_end + ' ' + '23:59:59' : undefined
|
||||||
|
this.lastQueryParam = { ...this.queryParam }
|
||||||
|
if(this.lastQueryParam.meetingStartTime) this.lastQueryParam.meetingStartTime = this.lastQueryParam.meetingStartTime + ' ' + '00:00:00'
|
||||||
|
if(this.lastQueryParam.meetingEndTime) this.lastQueryParam.meetingEndTime = this.lastQueryParam.meetingEndTime + ' ' + '23:59:59'
|
||||||
|
if(this.lastQueryParam.createTime_begin) this.lastQueryParam.createTime_begin = this.lastQueryParam.createTime_begin + ' ' + '00:00:00'
|
||||||
|
if(this.lastQueryParam.createTime_end) this.lastQueryParam.createTime_end = this.lastQueryParam.createTime_end + ' ' + '23:59:59'
|
||||||
|
this.loadData(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
.title {
|
||||||
|
|
||||||
|
&-text {
|
||||||
|
padding-left: 1rem;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background-color: #cccccc;
|
||||||
|
margin: 15px -24px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,379 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title :is-level-one="false" :level-two-title="projectName"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<div class="part-title">
|
||||||
|
<div class="part-title-text">项目信息</div>
|
||||||
|
</div>
|
||||||
|
<!-- 信息区域-->
|
||||||
|
<a-spin :spinning="spinning">
|
||||||
|
<div class="work-group-detail">
|
||||||
|
<div class="work-group-detail-item work-group-detail-item-small"
|
||||||
|
v-for="(item, index) in detailTitleList"
|
||||||
|
:key="index">
|
||||||
|
<div class="work-group-detail-item-title">{{ item.title }}:</div>
|
||||||
|
<div class="work-group-detail-item-content work-group-detail-item-filename"
|
||||||
|
v-if="(item.fieldName === 'chargeNoticeAId' || item.fieldName === 'chargeNoticeBId') && detail[item.fieldName]">
|
||||||
|
<preview-file :file-id="detail[item.fieldName]"></preview-file>
|
||||||
|
</div>
|
||||||
|
<div class="work-group-detail-item-content" v-else>{{ detail[item.fieldName] }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="work-group-detail-item">
|
||||||
|
<div class="work-group-detail-item-title">任务及目标:</div>
|
||||||
|
<div class="work-group-detail-item-content">{{ detail.missionAndObjectives }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="work-group-detail-item">
|
||||||
|
<div class="work-group-detail-item-title">备注:</div>
|
||||||
|
<div class="work-group-detail-item-content">{{ detail.remarks }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-spin>
|
||||||
|
<!-- /信息区域-->
|
||||||
|
|
||||||
|
<a-divider></a-divider>
|
||||||
|
|
||||||
|
<!-- 查询区域-->
|
||||||
|
<div class="part-title">
|
||||||
|
<div class="part-title-text">成员信息</div>
|
||||||
|
</div>
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="成员单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入成员单位" v-model="queryParam.companyName"
|
||||||
|
:maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<!--<a-col :xl="6" :lg="7" :md="8" :sm="24">-->
|
||||||
|
<!-- <a-form-item label="标签名称" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||||
|
<!-- <a-input placeholder="请输入标签名称" v-model="queryParam.label" :maxLength='50'></a-input>-->
|
||||||
|
<!-- </a-form-item>-->
|
||||||
|
<!--</a-col>-->
|
||||||
|
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<span class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" icon="search" @click="searchQuery"
|
||||||
|
v-has="'safetyCenterMember:search'">查询</a-button>
|
||||||
|
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- /查询区域-->
|
||||||
|
|
||||||
|
<!-- 操作按钮区域-->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'safetyCenterMember:add'" v-if="canOperate">
|
||||||
|
添加成员
|
||||||
|
</a-button>
|
||||||
|
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :data="importParam"
|
||||||
|
:action="importExcelUrl" @change="handleImportExcel" v-has="'safetyCenterMember:import'"
|
||||||
|
v-if="canOperate">
|
||||||
|
<a-button type="primary" icon="import">导入</a-button>
|
||||||
|
</a-upload>
|
||||||
|
<a-button type="primary" icon="export" @click="handleExportXls('功能安全中心成员')" v-has="'safetyCenterMember:export'">
|
||||||
|
导出
|
||||||
|
</a-button>
|
||||||
|
<a-button type="primary" icon="download" @click="downTemplate('功能安全中心成员导入模板')"
|
||||||
|
v-has="'safetyCenterMember:downTemplate'" v-if="canOperate">下载模板
|
||||||
|
</a-button>
|
||||||
|
<a-button type="danger" icon="delete" @click="batchDel" v-has="'safetyCenterMember:batchDel'" v-if="canOperate">
|
||||||
|
批量删除
|
||||||
|
</a-button>
|
||||||
|
<!--<a-button type="primary" @click="setLabel" v-has="'workingGroupMember:setLabel'">设置标签</a-button>-->
|
||||||
|
</div>
|
||||||
|
<!-- /操作按钮区域-end-->
|
||||||
|
|
||||||
|
<!-- table表格区域-->
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:scroll="{x: 800}"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange"
|
||||||
|
class="j-table-force-nowrap">
|
||||||
|
|
||||||
|
<!-- 名称-->
|
||||||
|
<template slot="projectName" slot-scope="text, record">
|
||||||
|
<j-ellipsis :value="text"
|
||||||
|
:length="18"
|
||||||
|
class="primary-color"
|
||||||
|
@click="openDetailModal(record)"></j-ellipsis>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<a-tooltip>
|
||||||
|
<template slot="title">{{ text }}</template>
|
||||||
|
<div class="table-text">{{ text }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<span slot="action" class="action-span-cell" slot-scope="text, record" v-if="canOperate">
|
||||||
|
<a @click="handleEdit(record)" v-has="'safetyCenterMember:edit'">编辑</a>
|
||||||
|
<a @click="handleDelete(record.id)" v-has="'safetyCenterMember:delete'">删除</a>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
</a-card>
|
||||||
|
|
||||||
|
<project-detail-modal ref="projectDetail" :project-type="ProjectTypeEnums.SAFETY_CENTER_PRO.value"></project-detail-modal>
|
||||||
|
<!-- 控制功能安全中心可以选择全部,其他的都只能选择父级选的 -->
|
||||||
|
<safety-center-member-unit-module :is-safety-center="isSafetyCenter" ref="modalForm" @ok="modalFormOk"></safety-center-member-unit-module>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import {getSafetyCenterById} from '@api/incomePaymentsApi'
|
||||||
|
import ProjectDetailModal from '../../components/ProjectDetailModal'
|
||||||
|
import Vue from 'vue'
|
||||||
|
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||||
|
import PreviewFile from '../../components/jero/PreviewFile'
|
||||||
|
import {ProjectTypeEnums, SafetyCenterProjectTypeEnums} from '@/enums/commonEnums'
|
||||||
|
import SafetyCenterMemberUnitModule
|
||||||
|
from '@views/functionalSafetyCenter/modules/SafetyCenterMemberUnitModule'
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-undef,no-unused-vars
|
||||||
|
const Base64 = require('js-base64').Base64
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'FunctionalSafetyMemberUnitMaintenance',
|
||||||
|
components: {
|
||||||
|
SafetyCenterMemberUnitModule,
|
||||||
|
PageHeaderTitle,
|
||||||
|
ProjectDetailModal,
|
||||||
|
PreviewFile
|
||||||
|
},
|
||||||
|
mixins: [JeroListMixin],
|
||||||
|
computed: {
|
||||||
|
importExcelUrl: function () {
|
||||||
|
return `${ window._CONFIG['domianURL'] }/${ this.url.importExcelUrl }`
|
||||||
|
},
|
||||||
|
// projectType是否功能安全中心, 1功能安全中心 2研究组 3项目组
|
||||||
|
isSafetyCenter () {
|
||||||
|
return this.detail.projectType + '' === SafetyCenterProjectTypeEnums.safetyCenter.value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
ProjectTypeEnums,
|
||||||
|
// 混入post请求删除接口
|
||||||
|
postMethodDel: true,
|
||||||
|
disableMixinCreated: true,
|
||||||
|
projectName: '',
|
||||||
|
projectId: '',
|
||||||
|
spinning: false,
|
||||||
|
detailTitleList: [
|
||||||
|
{
|
||||||
|
title: '项目名称',
|
||||||
|
fieldName: 'projectName'
|
||||||
|
}, {
|
||||||
|
title: '负责人',
|
||||||
|
fieldName: 'principalId_dictText'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 5 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 10 }
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
list: '/SafetyCenterSubitem/page',
|
||||||
|
delete: '/SafetyCenterSubitem/delete',
|
||||||
|
deleteBatch: '/SafetyCenterSubitem/deleteBatch',
|
||||||
|
exportXlsUrl: '/SafetyCenterSubitem/exportXls',
|
||||||
|
importExcelUrl: '/SafetyCenterSubitem/importExcel',
|
||||||
|
downTemplateUrl: '/SafetyCenterSubitem/downloadExcelModel'
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
title: '成员单位',
|
||||||
|
align: 'center',
|
||||||
|
// width: 280,
|
||||||
|
dataIndex: 'companyId_dictText',
|
||||||
|
scopedSlots: { customRender: 'projectName' }
|
||||||
|
}, {
|
||||||
|
title: '企业联系人',
|
||||||
|
align: 'center',
|
||||||
|
// width: 280,
|
||||||
|
dataIndex: 'contactsId_dictText',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
width: 180,
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
detail: {},
|
||||||
|
chargeNoticeList: [], // 收费通知号选项
|
||||||
|
importParam: {},
|
||||||
|
// 给定当年作为来款年份默认查询条件
|
||||||
|
// queryParam: {
|
||||||
|
// paymentDate: new Date().getFullYear().toString()
|
||||||
|
// },
|
||||||
|
// lastQueryParam: {
|
||||||
|
// paymentDate: new Date().getFullYear().toString()
|
||||||
|
// },
|
||||||
|
canOperate: true // 是否可操作(负责人B不可操作)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 初始化信息
|
||||||
|
this.initData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 初始化信息
|
||||||
|
*/
|
||||||
|
initData() {
|
||||||
|
this.spinning = true
|
||||||
|
this.projectName = this.$route.query.projectName || ''
|
||||||
|
this.projectId = this.$route.query.projectId || ''
|
||||||
|
this.filters.projectId = this.projectId
|
||||||
|
this.importParam.projectId = this.projectId
|
||||||
|
this.loadData()
|
||||||
|
let param = {
|
||||||
|
id: this.projectId
|
||||||
|
}
|
||||||
|
getSafetyCenterById(param).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.detail = res.result || {}
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.spinning = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleAdd: function () {
|
||||||
|
this.$refs.modalForm.projectId = this.projectId
|
||||||
|
this.$refs.modalForm.add()
|
||||||
|
this.$refs.modalForm.title = '添加成员'
|
||||||
|
this.$refs.modalForm.disableSubmit = false
|
||||||
|
},
|
||||||
|
handleEdit: function (record) {
|
||||||
|
this.$refs.modalForm.projectId = this.projectId
|
||||||
|
this.$refs.modalForm.edit(record)
|
||||||
|
this.$refs.modalForm.title = '编辑'
|
||||||
|
this.$refs.modalForm.disableSubmit = false
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 文件预览
|
||||||
|
* @param file
|
||||||
|
*/
|
||||||
|
previewFile(file) {
|
||||||
|
console.log(file)
|
||||||
|
if (file && file.url) {
|
||||||
|
const fileFullUrl = `${ window._CONFIG['domianWebSocketURL'] }/sys/common/download/${ file.id }?token=${ Vue.ls.get(ACCESS_TOKEN) }&fullfilename=${ file.fileName }`
|
||||||
|
// let url = `${ window._CONFIG['onlinePreviewDomainURL'] }?url=${ encodeURIComponent(Base64.encode(fileFullUrl)) }`
|
||||||
|
let url = `${ window._CONFIG['onlinePreviewDomainURL'] }?url=${ encodeURIComponent(Base64.encode(fileFullUrl)) }`
|
||||||
|
window.open(url)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
.ant-divider-horizontal {
|
||||||
|
height: 1px;
|
||||||
|
background-color: #F2F2F2;
|
||||||
|
margin: 15px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.work-group-detail {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
|
||||||
|
&-item-small {
|
||||||
|
width: 33.3% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
display: flex;
|
||||||
|
padding: 5px 5px;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
flex-shrink: 0;
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
word-break: break-all;
|
||||||
|
color: #2F3133;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-filename {
|
||||||
|
//cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-text {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-col {
|
||||||
|
.ant-col {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.qr-code {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy {
|
||||||
|
font-style: normal;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.signUpInfo {
|
||||||
|
line-height: 3;
|
||||||
|
|
||||||
|
.ant-col {
|
||||||
|
|
||||||
|
label {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,434 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
switchFullscreen
|
||||||
|
@ok="handleOk"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<a-form :form="form">
|
||||||
|
<a-row>
|
||||||
|
<a-col>
|
||||||
|
<a-form-item label="成员单位" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||||
|
<company-select placeholder="请选择成员单位"
|
||||||
|
v-decorator="['chargeCompany',validatorRules.chargeCompany]"
|
||||||
|
:disabled="disabledCompany"
|
||||||
|
@change="companyChange"
|
||||||
|
:customListUrl="isSafetyCenter ? '' : companyList"
|
||||||
|
:customListParams="isSafetyCenter ? {} : customListParams"
|
||||||
|
:maxLength='50'>
|
||||||
|
</company-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<template
|
||||||
|
v-if="model.contactsList && model.contactsList.length > 0">
|
||||||
|
<a-row v-for="(item, index) in model.contactsList" :key="index + ''">
|
||||||
|
<a-col :xl="12" :sm="24">
|
||||||
|
<a-form-item :label="`企业联系人${index + 1}`" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<select-contacts :selected-company="selectedCompany"
|
||||||
|
:placeholder="`请选择企业联系人${index + 1}`"
|
||||||
|
v-decorator="[`contactsList[${index}].contactsId`, {rules: [{ required: index === 0, validator: index === 0 ? validateContactRequired : validateContact }],validateTrigger: 'change'}]"
|
||||||
|
:maxLength='50'
|
||||||
|
:ref="`selectContacts${index}`"
|
||||||
|
:can-add="isSafetyCenter"
|
||||||
|
:customListFn="isSafetyCenter ? null : getContactsByCompanyBySafetyCenter"
|
||||||
|
:customListParams="isSafetyCenter ? {} : customListParams"
|
||||||
|
@ok="addContactsOneOk"></select-contacts>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="9" :sm="20">
|
||||||
|
<!-- v-show="hasContactOne"-->
|
||||||
|
<a-form-item :label="`备注${index + 1}`" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input
|
||||||
|
:placeholder="`请输入备注${index + 1}`"
|
||||||
|
v-decorator="[`contactsList[${index}].remarks`]"
|
||||||
|
:maxLength='50'
|
||||||
|
@change="e => {e.target.value = (e.target.value + '').trim()}">
|
||||||
|
</a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="3" :sm="4">
|
||||||
|
<a-button type="link" class="contact-btn" @click="handleAddContact(index)">添加</a-button>
|
||||||
|
<a-button type="link" class="contact-btn del-btn" @click="handleDelContact(index)">删除</a-button>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</template>
|
||||||
|
<a-row>
|
||||||
|
<a-col>
|
||||||
|
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||||
|
<a-textarea
|
||||||
|
placeholder="请输入备注"
|
||||||
|
:auto-size="{ minRows: 3, maxRows: 6 }"
|
||||||
|
v-decorator="['remarks']"
|
||||||
|
:maxLength='200'
|
||||||
|
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import pick from 'lodash.pick'
|
||||||
|
import { httpAction } from '@api/manage'
|
||||||
|
import CompanySelect from '@comp/company/CompanySelect'
|
||||||
|
import SelectContacts from '@comp/company/SelectContacts'
|
||||||
|
import {getAllDraftProjects} from '@api/incomePaymentsApi'
|
||||||
|
import { addZero } from '@/utils/util'
|
||||||
|
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
|
||||||
|
import {getContactsByCompanyBySafetyCenter} from '@api/api'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SafetyCenterMemberUnitModule',
|
||||||
|
components: { CompanySelect, SelectContacts },
|
||||||
|
mixins: [CalcAmountMixin],
|
||||||
|
props: {
|
||||||
|
// 是否安全中心,控制添加成员 只能选择上级的成员还是选择全部
|
||||||
|
isSafetyCenter: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
required: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '操作',
|
||||||
|
width: 800,
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
model: {},
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 8 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 16 }
|
||||||
|
},
|
||||||
|
remarksLabelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 4 }
|
||||||
|
},
|
||||||
|
remarksWrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 20 }
|
||||||
|
},
|
||||||
|
validatorRules: {
|
||||||
|
chargeCompany: {
|
||||||
|
rules: [{ required: true, validator: this.checkCompany }],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
contactsIdOne: {
|
||||||
|
rules: [{ required: true, message: '请选择企业联系人1' }],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
contactsRepeat: {
|
||||||
|
rules: [{ required: false, validator: this.validateContact }],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selectedCompany: null, // 当前选中的企业
|
||||||
|
selectedContact1: null, // 编辑时的联系人
|
||||||
|
selectedContact2: null, // 编辑时的联系人
|
||||||
|
selectedContact3: null, // 编辑时的联系人
|
||||||
|
selectedMailContact: null, // 编辑时的邮寄联系人
|
||||||
|
projectId: null,
|
||||||
|
projectList: [],
|
||||||
|
disabledCompany: false, // 企业是否禁用
|
||||||
|
url: {
|
||||||
|
add: '/SafetyCenterSubitem/add',
|
||||||
|
edit: '/SafetyCenterSubitem/edit'
|
||||||
|
},
|
||||||
|
// 成员单位列表(只能选上级选过的)
|
||||||
|
companyList: '/company/payCompanyManagement/listSafetyCenter',
|
||||||
|
// 需要带上当前项目id
|
||||||
|
customListParams: {
|
||||||
|
projectId: this.$route.query.projectId
|
||||||
|
},
|
||||||
|
// 默认的联系人数据
|
||||||
|
defaultPayWorkingGroupSubItemContact: {
|
||||||
|
contactsId: undefined,
|
||||||
|
remarks: null,
|
||||||
|
name: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
addZero,
|
||||||
|
getContactsByCompanyBySafetyCenter,
|
||||||
|
add() {
|
||||||
|
this.edit({})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 获取当前年功能安全中心列表
|
||||||
|
*/
|
||||||
|
loadCurrentYearProjectList() {
|
||||||
|
getAllDraftProjects({
|
||||||
|
year: new Date().getFullYear(),
|
||||||
|
column: 'createTime',
|
||||||
|
order: 'desc'
|
||||||
|
}).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.projectList = res.result
|
||||||
|
} else {
|
||||||
|
this.$message.warn(res.message)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
edit(record) {
|
||||||
|
// 回显
|
||||||
|
record.chargeCompany = {
|
||||||
|
id: record.companyId,
|
||||||
|
companyName: record.companyId_dictText
|
||||||
|
}
|
||||||
|
// 回显选中的企业
|
||||||
|
this.selectedCompany = record.chargeCompany
|
||||||
|
this.companyChange(this.selectedCompany)
|
||||||
|
this.form.resetFields()
|
||||||
|
this.model = Object.assign({}, JSON.parse(JSON.stringify(record)))
|
||||||
|
if (this.model.id) {
|
||||||
|
// 传给组件的init-contact值,需要id和name两个属性
|
||||||
|
this.model.contactsList && this.model.contactsList.forEach(item => {
|
||||||
|
item.name = item.contactsTemporaryName
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
// 新增处理默认显示的三个企业联系人
|
||||||
|
this.model.contactsList = []
|
||||||
|
this.model.contactsList.push(this.defaultPayWorkingGroupSubItemContact)
|
||||||
|
this.model.contactsList.push(this.defaultPayWorkingGroupSubItemContact)
|
||||||
|
this.model.contactsList.push(this.defaultPayWorkingGroupSubItemContact)
|
||||||
|
}
|
||||||
|
this.visible = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(this.model, 'chargeCompany', 'remarks', 'contactsList'))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('close')
|
||||||
|
this.selectedCompany = null
|
||||||
|
// 清除选中联系人信息
|
||||||
|
this.selectedContact1 = null
|
||||||
|
this.selectedContact2 = null
|
||||||
|
this.selectedContact3 = null
|
||||||
|
this.selectedMailContact = null
|
||||||
|
this.disabledCompany = false
|
||||||
|
this.visible = false
|
||||||
|
this.model = Object.assign({}, {})
|
||||||
|
this.form.resetFields()
|
||||||
|
},
|
||||||
|
handleOk() {
|
||||||
|
if (this.confirmLoading) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.confirmLoading = true
|
||||||
|
const that = this
|
||||||
|
// 触发表单验证
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
that.confirmLoading = true
|
||||||
|
// values.chargeCompanyTemporaryName = values.chargeCompany.companyName
|
||||||
|
values.companyId = values.chargeCompany.id
|
||||||
|
let httpurl = ''
|
||||||
|
let method = 'post'
|
||||||
|
if (!this.model.id) {
|
||||||
|
httpurl += this.url.add
|
||||||
|
} else {
|
||||||
|
httpurl += this.url.edit
|
||||||
|
}
|
||||||
|
if (this.projectId) {
|
||||||
|
values.projectId = this.projectId
|
||||||
|
}
|
||||||
|
// 企业联系人信息中将没有值的去掉
|
||||||
|
let haveValueContactArr = values.contactsList.filter(tt => tt.contactsId)
|
||||||
|
let obj = {
|
||||||
|
contactsList: haveValueContactArr
|
||||||
|
}
|
||||||
|
const formData = Object.assign(this.model, values, obj)
|
||||||
|
console.log('表单提交数据', formData)
|
||||||
|
httpAction(httpurl, formData, method).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
that.$message.success(res.message)
|
||||||
|
that.$emit('ok')
|
||||||
|
that.close()
|
||||||
|
} else {
|
||||||
|
that.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.confirmLoading = false
|
||||||
|
}, 1000)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.confirmLoading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 选中企业变化,将联系人的值清空
|
||||||
|
* @param value
|
||||||
|
*/
|
||||||
|
companyChange(value) {
|
||||||
|
// 当前选中的企业和之前选中的企业一致,就不修改了
|
||||||
|
if (this.selectedCompany && value && this.selectedCompany.id === value.id) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.selectedCompany = value
|
||||||
|
// 处理默认显示的三个企业联系人
|
||||||
|
this.model.contactsList = []
|
||||||
|
this.model.contactsList.push(this.defaultPayWorkingGroupSubItemContact)
|
||||||
|
this.model.contactsList.push(this.defaultPayWorkingGroupSubItemContact)
|
||||||
|
this.model.contactsList.push(this.defaultPayWorkingGroupSubItemContact)
|
||||||
|
this.selectedMailContact = null
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(this.model, 'contactsList'))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 企业必填校验
|
||||||
|
* @param rules
|
||||||
|
* @param value
|
||||||
|
* @param callback
|
||||||
|
*/
|
||||||
|
checkCompany(rules, value, callback) {
|
||||||
|
if (value.id && value.companyName) {
|
||||||
|
callback()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback('请选择成员单位')
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 在新增成功后重新获取联系人列表
|
||||||
|
*/
|
||||||
|
addContactsOneOk() {
|
||||||
|
this.$refs.selectMailContacts.getContactsList()
|
||||||
|
},
|
||||||
|
addMailContactsOk() {
|
||||||
|
this.$refs.selectContacts1.getContactsList()
|
||||||
|
this.$refs.selectContacts2.getContactsList()
|
||||||
|
this.$refs.selectContacts3.getContactsList()
|
||||||
|
},
|
||||||
|
validateContactRequired(rule, value, callback) {
|
||||||
|
if (value) {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
callback('请选择企业联系人1')
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 校验企业联系人是否重复
|
||||||
|
* @param rule
|
||||||
|
* @param value
|
||||||
|
* @param callback
|
||||||
|
*/
|
||||||
|
validateContact(rule, value, callback) {
|
||||||
|
if (value) {
|
||||||
|
let contactsList = this.form.getFieldValue('contactsList')
|
||||||
|
let hasValueArr = contactsList.filter(tt => tt.contactsId === value)
|
||||||
|
if (hasValueArr.length <= 1) {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
callback('请选择不同的联系人')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback()
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 添加联系人
|
||||||
|
* @param index
|
||||||
|
*/
|
||||||
|
handleAddContact(index) {
|
||||||
|
if (this.model.contactsList.length >= 20) {
|
||||||
|
this.$message.warn('最多添加二十个企业联系人')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let obj = {
|
||||||
|
contactsId: undefined,
|
||||||
|
remarks: null
|
||||||
|
}
|
||||||
|
this.model.contactsList.splice(index + 1, 0, obj)
|
||||||
|
this.$forceUpdate()
|
||||||
|
let formData = this.form.getFieldValue('contactsList')
|
||||||
|
formData.splice(index + 1, 0, obj)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue({ contactsList: formData })
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 删除联系人
|
||||||
|
* @param index
|
||||||
|
*/
|
||||||
|
handleDelContact(index) {
|
||||||
|
if (this.model.contactsList.length === 1) {
|
||||||
|
this.$message.warn('最少需要一个企业联系人')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.model.contactsList.splice(index, 1)
|
||||||
|
let formData = this.form.getFieldValue('contactsList')
|
||||||
|
formData.splice(index, 1)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue({ contactsList: formData })
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 下拉框的搜索
|
||||||
|
filterOption(input, option) {
|
||||||
|
return (
|
||||||
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.charge-notice-no {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
/deep/ .ant-radio-wrapper {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
span.ant-radio + * {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
span {
|
||||||
|
vertical-align: bottom;
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-btn {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 8px;
|
||||||
|
padding: 0;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.del-btn {
|
||||||
|
color: #ff4d4f
|
||||||
|
}
|
||||||
|
// 工作组选择对齐其他表单的样式
|
||||||
|
.custom-col {
|
||||||
|
/deep/ .ant-col-sm-4 {
|
||||||
|
width: calc(100% / 24 * 4.5);
|
||||||
|
}
|
||||||
|
/deep/ .ant-col-sm-20 {
|
||||||
|
width: calc(100% / 24 * 19.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,218 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
switchFullscreen
|
||||||
|
@ok="handleOk"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<a-form :form="form">
|
||||||
|
<a-row>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="项目名称" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||||
|
<a-input placeholder="请输入项目名称"
|
||||||
|
v-decorator="['projectName',validatorRules.projectName]"
|
||||||
|
:maxLength='50'
|
||||||
|
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="负责人" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<select-principal placeholder="请选择负责人"
|
||||||
|
v-decorator="['principalId',validatorRules.principalId]"
|
||||||
|
:maxLength='50'></select-principal>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row>
|
||||||
|
<a-col>
|
||||||
|
<a-form-item label="任务及目标" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||||
|
<a-textarea
|
||||||
|
placeholder="请输入任务及目标"
|
||||||
|
:auto-size="{ minRows: 3, maxRows: 6 }"
|
||||||
|
v-decorator="['missionAndObjectives']"
|
||||||
|
:maxLength='200'
|
||||||
|
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row>
|
||||||
|
<a-col>
|
||||||
|
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||||
|
<a-textarea
|
||||||
|
placeholder="请输入备注"
|
||||||
|
:auto-size="{ minRows: 3, maxRows: 6 }"
|
||||||
|
v-decorator="['remarks']"
|
||||||
|
:maxLength='200'
|
||||||
|
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import pick from 'lodash.pick'
|
||||||
|
import { httpAction } from '@api/manage'
|
||||||
|
import SelectPrincipal from '@comp/company/SelectPrincipal'
|
||||||
|
import { addZero } from '@/utils/util'
|
||||||
|
import {SafetyCenterProjectTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SafetyCenterModule',
|
||||||
|
components: { SelectPrincipal },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '操作',
|
||||||
|
width: 800,
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
model: {},
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 6 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 18 }
|
||||||
|
},
|
||||||
|
remarksLabelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 3 }
|
||||||
|
},
|
||||||
|
remarksWrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 21 }
|
||||||
|
},
|
||||||
|
validatorRules: {
|
||||||
|
projectName: {
|
||||||
|
rules: [{ required: true, message: '请输入项目名称' }],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
year: {
|
||||||
|
rules: [{ required: true, message: '请选择运行年份' }],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
principalId: {
|
||||||
|
rules: [{ required: true, message: '请选择负责人' }],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
checkMoney: {
|
||||||
|
rules: [{ required: false, validator: this.checkMoney }],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 研究组的接口
|
||||||
|
url: {
|
||||||
|
add: '/SafetyCenter/add',
|
||||||
|
edit: '/SafetyCenter/edit'
|
||||||
|
},
|
||||||
|
// 项目组的接口
|
||||||
|
projectUrl: {
|
||||||
|
add: '/SafetyCenter/addProjectGroup',
|
||||||
|
edit: '/SafetyCenter/editProjectGroup'
|
||||||
|
},
|
||||||
|
// 项目类型,默认是研究组
|
||||||
|
projectType: SafetyCenterProjectTypeEnums.studyGroup.value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
addZero,
|
||||||
|
add() {
|
||||||
|
this.edit({})
|
||||||
|
},
|
||||||
|
edit(record) {
|
||||||
|
// 有id就是项目组
|
||||||
|
if (this.$route.query.id) {
|
||||||
|
this.projectType = SafetyCenterProjectTypeEnums.projectGroup.value
|
||||||
|
} else {
|
||||||
|
this.projectType = SafetyCenterProjectTypeEnums.studyGroup.value
|
||||||
|
}
|
||||||
|
this.form.resetFields()
|
||||||
|
// 防止下拉选项出现问题
|
||||||
|
record.principalId = record.principalId || undefined
|
||||||
|
this.model = Object.assign({}, record)
|
||||||
|
this.visible = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(this.model,
|
||||||
|
'projectName',
|
||||||
|
'principalId',
|
||||||
|
'missionAndObjectives',
|
||||||
|
'remarks'
|
||||||
|
))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('close')
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
handleOk() {
|
||||||
|
if (this.confirmLoading) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.confirmLoading = true
|
||||||
|
const that = this
|
||||||
|
// 触发表单验证
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
that.confirmLoading = true
|
||||||
|
let httpurl = ''
|
||||||
|
let method = 'post'
|
||||||
|
// 研究组用url,项目组用projectUrl
|
||||||
|
const urlObj = this.projectType === SafetyCenterProjectTypeEnums.studyGroup.value ? this.url : this.projectUrl
|
||||||
|
if (!this.model.id) {
|
||||||
|
httpurl += urlObj.add
|
||||||
|
} else {
|
||||||
|
httpurl += urlObj.edit
|
||||||
|
}
|
||||||
|
const formData = Object.assign(this.model, values)
|
||||||
|
formData.parentId = this.$route.query.id
|
||||||
|
console.log('表单提交数据', formData)
|
||||||
|
httpAction(httpurl, formData, method).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
that.$message.success(res.message)
|
||||||
|
that.$emit('ok')
|
||||||
|
that.close()
|
||||||
|
} else {
|
||||||
|
that.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.confirmLoading = false
|
||||||
|
}, 1000)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.confirmLoading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 下拉框的搜索
|
||||||
|
filterOption(input, option) {
|
||||||
|
return (
|
||||||
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
|
)
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.prompt-message {
|
||||||
|
color: red;
|
||||||
|
|
||||||
|
&-line2 {
|
||||||
|
padding-left: 2.7rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -122,12 +122,12 @@ export default {
|
|||||||
return text + '年'
|
return text + '年'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
title: '收费通知单',
|
// title: '收费通知单',
|
||||||
align: 'center',
|
// align: 'center',
|
||||||
dataIndex: 'chargeNoticeName',
|
// dataIndex: 'chargeNoticeName',
|
||||||
scopedSlots: { customRender: 'fileSlot' }
|
// scopedSlots: { customRender: 'fileSlot' }
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
dataIndex: 'action',
|
dataIndex: 'action',
|
||||||
|
|||||||
@@ -17,10 +17,10 @@
|
|||||||
<!-- <a-input v-decorator="['dateYear',validatorRules.dateYear]" placeholder="请输入时间(年)"></a-input>-->
|
<!-- <a-input v-decorator="['dateYear',validatorRules.dateYear]" placeholder="请输入时间(年)"></a-input>-->
|
||||||
<j-year-date :disabled="model.id ? true : false" v-decorator="['dateYear',validatorRules.dateYear]" placeholder="请输入时间(年)"></j-year-date>
|
<j-year-date :disabled="model.id ? true : false" v-decorator="['dateYear',validatorRules.dateYear]" placeholder="请输入时间(年)"></j-year-date>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="收费通知单" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<!-- <a-form-item label="收费通知单" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||||
<j-upload ref="fileModal" v-decorator="['chargeNoticeFileId']" returnId :trigger-change="true" :file-type="fileType" file-type-error-message="请上传pdf或者word" :number="1"></j-upload>
|
<!-- <j-upload ref="fileModal" v-decorator="['chargeNoticeFileId']" returnId :trigger-change="true" :file-type="fileType" file-type-error-message="请上传pdf或者word" :number="1"></j-upload>-->
|
||||||
<span style="color: #bfbfbf">请上传pdf或者word</span>
|
<!-- <span style="color: #bfbfbf">请上传pdf或者word</span>-->
|
||||||
</a-form-item>
|
<!-- </a-form-item>-->
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-spin>
|
</a-spin>
|
||||||
</j-modal>
|
</j-modal>
|
||||||
@@ -97,9 +97,9 @@ export default {
|
|||||||
// 触发表单验证
|
// 触发表单验证
|
||||||
this.form.validateFields((err, values) => {
|
this.form.validateFields((err, values) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
const fileModal = this.$refs.fileModal
|
// const fileModal = this.$refs.fileModal
|
||||||
const length = fileModal.fileList.length
|
// const length = fileModal.fileList.length
|
||||||
values.chargeNoticeName = length ? this.$refs.fileModal.fileList[0].name : ''
|
// values.chargeNoticeName = length ? this.$refs.fileModal.fileList[0].name : ''
|
||||||
that.confirmLoading = true
|
that.confirmLoading = true
|
||||||
let httpurl = ''
|
let httpurl = ''
|
||||||
let method = 'post'
|
let method = 'post'
|
||||||
|
|||||||
@@ -176,7 +176,7 @@
|
|||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :xxl="8" :xl="12" :sm="24">
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
<a-form-item label="会议通知" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="会议通知" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<j-upload :return-id="true" v-decorator="[ 'meetingFiles',validatorRules.meetingFiles]"></j-upload>
|
<j-upload :return-id="true" :multiple="true" v-decorator="[ 'meetingFiles',validatorRules.meetingFiles]"></j-upload>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -404,12 +404,12 @@
|
|||||||
<template v-if="!isWasic">
|
<template v-if="!isWasic">
|
||||||
<a-col :xxl="8" :xl="12" :sm="24">
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
<a-form-item label="会议费用" :labelCol="labelCol" :wrapperCol="{ xs: {span: 24},sm: {span: 16}}">
|
<a-form-item label="会议费用" :labelCol="labelCol" :wrapperCol="{ xs: {span: 24},sm: {span: 16}}">
|
||||||
<!-- 起草组会议费用默认0不可修改 -->
|
<!-- 起草组会议、海外会议、功能安全中心会议费用默认0不可修改 -->
|
||||||
<a-input placeholder="请输入会议费用"
|
<a-input placeholder="请输入会议费用"
|
||||||
:maxLength='50'
|
:maxLength='50'
|
||||||
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"
|
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"
|
||||||
@blur="addZero"
|
@blur="addZero"
|
||||||
:disabled="meetingType === '7'"
|
:disabled="disabledMeetingCosts"
|
||||||
v-decorator="[ 'meetingCosts',validateInviteCode.meetingCosts]"></a-input>
|
v-decorator="[ 'meetingCosts',validateInviteCode.meetingCosts]"></a-input>
|
||||||
<span class="yuan">元/人</span>
|
<span class="yuan">元/人</span>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -630,7 +630,7 @@ import JImageUpload from '@comp/jero/JImageUpload'
|
|||||||
import {checkMeetingName} from '@/utils/validateOnly'
|
import {checkMeetingName} from '@/utils/validateOnly'
|
||||||
import {addZero} from '@/utils/util'
|
import {addZero} from '@/utils/util'
|
||||||
import {money, phoneReg} from '@/utils/validate'
|
import {money, phoneReg} from '@/utils/validate'
|
||||||
import { LinkTopicsEnums } from '../../../enums/commonEnums'
|
import {LinkTopicsEnums, MeetingTypeEnums} from '../../../enums/commonEnums'
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -763,6 +763,16 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
// 禁用会议费用
|
||||||
|
disabledMeetingCosts () {
|
||||||
|
// 禁用的会议类型
|
||||||
|
const arr = [
|
||||||
|
MeetingTypeEnums.draftGroup.value, // 起草组会议
|
||||||
|
MeetingTypeEnums.overseas.value, // 海外会议
|
||||||
|
MeetingTypeEnums.safetyCenter.value, // 功能安全中心会议
|
||||||
|
]
|
||||||
|
return arr.includes(this.meetingType)
|
||||||
|
},
|
||||||
// 是否从工作组会议维护来的
|
// 是否从工作组会议维护来的
|
||||||
isWorkGroupMeetType() {
|
isWorkGroupMeetType() {
|
||||||
if (this.$route.query.workingGroupProjectId) {
|
if (this.$route.query.workingGroupProjectId) {
|
||||||
@@ -802,6 +812,14 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// 是否功能安全中心来的
|
||||||
|
isSafetyCenterId() {
|
||||||
|
if (this.$route.query.safetyCenterId) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -922,8 +940,13 @@ export default {
|
|||||||
// 后端需要的注册签到时间
|
// 后端需要的注册签到时间
|
||||||
this.newSignInTime = [this.model.startSignInTime, this.model.endSignInTime]
|
this.newSignInTime = [this.model.startSignInTime, this.model.endSignInTime]
|
||||||
|
|
||||||
// 起草组会议费用默认0
|
// 部分会议费用默认0
|
||||||
if (this.meetingType === '7') {
|
const zeroCostscArr = [
|
||||||
|
MeetingTypeEnums.draftGroup.value, // 起草组会议
|
||||||
|
MeetingTypeEnums.overseas.value, // 海外会议
|
||||||
|
MeetingTypeEnums.safetyCenter.value, // 功能安全中心会议
|
||||||
|
]
|
||||||
|
if (zeroCostscArr.includes(this.meetingType)) {
|
||||||
this.model.meetingCosts = '0.00'
|
this.model.meetingCosts = '0.00'
|
||||||
this.QRcodeBool = false
|
this.QRcodeBool = false
|
||||||
}
|
}
|
||||||
@@ -1039,6 +1062,11 @@ export default {
|
|||||||
formData.meetingType = '7'
|
formData.meetingType = '7'
|
||||||
formData.draftingGroupId = this.$route.query.draftingGroupProjectId
|
formData.draftingGroupId = this.$route.query.draftingGroupProjectId
|
||||||
}
|
}
|
||||||
|
// 如果是 功能安全中心 来的加上id和会议类型
|
||||||
|
if (this.isSafetyCenterId) {
|
||||||
|
formData.meetingType = MeetingTypeEnums.safetyCenter.value
|
||||||
|
formData.safetyCenterId = this.$route.query.safetyCenterId
|
||||||
|
}
|
||||||
// 转换召开时间
|
// 转换召开时间
|
||||||
formData.startTime = this.newConvokeTime[0]
|
formData.startTime = this.newConvokeTime[0]
|
||||||
formData.endTime = this.newConvokeTime[1]
|
formData.endTime = this.newConvokeTime[1]
|
||||||
@@ -1187,7 +1215,8 @@ export default {
|
|||||||
* 添加会议联系人
|
* 添加会议联系人
|
||||||
* */
|
* */
|
||||||
addMeetingContacts(index) {
|
addMeetingContacts(index) {
|
||||||
if (this.model.meetingContactsList.length >= 5) {
|
// 国际研讨会不限制5个会议联系人
|
||||||
|
if ((this.meetingType !== MeetingTypeEnums.internationalSeminar.value) && (this.model.meetingContactsList.length >= 5)) {
|
||||||
this.$message.warning('最多添加5个会议联系人')
|
this.$message.warning('最多添加5个会议联系人')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -1400,6 +1429,18 @@ export default {
|
|||||||
add: '/meeting/draftGroupMeeting/add',
|
add: '/meeting/draftGroupMeeting/add',
|
||||||
edit: '/meeting/draftGroupMeeting/edit'
|
edit: '/meeting/draftGroupMeeting/edit'
|
||||||
}
|
}
|
||||||
|
// 海外会议
|
||||||
|
case MeetingTypeEnums.overseas.value:
|
||||||
|
return {
|
||||||
|
add: '/meeting/overseas/add',
|
||||||
|
edit: '/meeting/overseas/edit'
|
||||||
|
}
|
||||||
|
// 功能安全中心会议
|
||||||
|
case MeetingTypeEnums.safetyCenter.value:
|
||||||
|
return {
|
||||||
|
add: '/meeting/safetyCenterMeeting/add',
|
||||||
|
edit: '/meeting/safetyCenterMeeting/edit'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -157,7 +157,8 @@
|
|||||||
<label>报名二维码:</label><img class="qr-code" :src="signUpQRCode" alt="报名二维码"/><i class="copy primary-color"
|
<label>报名二维码:</label><img class="qr-code" :src="signUpQRCode" alt="报名二维码"/><i class="copy primary-color"
|
||||||
@click="copy(showSignUpHref)">复制</i>
|
@click="copy(showSignUpHref)">复制</i>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xxl="8" :xl="12" :sm="24">
|
<!--海外会议没有签到-->
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24" v-if="!isOverseasMeeting">
|
||||||
<label>签到二维码:</label><img class="qr-code" :src="signInQRCode" alt="签到二维码"/>
|
<label>签到二维码:</label><img class="qr-code" :src="signInQRCode" alt="签到二维码"/>
|
||||||
<!-- <i class="copy primary-color" @click="copy(signInUrl)">复制</i>-->
|
<!-- <i class="copy primary-color" @click="copy(signInUrl)">复制</i>-->
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -174,7 +175,7 @@
|
|||||||
<!-- 查询区域 -->
|
<!-- 查询区域 -->
|
||||||
<div class="table-page-search-wrapper">
|
<div class="table-page-search-wrapper">
|
||||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24" v-if="!isOverseasMeeting">
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
<a-form-item label="参会单位">
|
<a-form-item label="参会单位">
|
||||||
<a-input placeholder="请输入参会单位" v-model="queryParam.companyName" :maxLength='50'></a-input>
|
<a-input placeholder="请输入参会单位" v-model="queryParam.companyName" :maxLength='50'></a-input>
|
||||||
@@ -185,8 +186,8 @@
|
|||||||
<a-input placeholder="请输入参会人" v-model="queryParam.companyContactName" :maxLength='50'></a-input>
|
<a-input placeholder="请输入参会人" v-model="queryParam.companyContactName" :maxLength='50'></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
<!-- 功能安全中心不显示审核 -->
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24" v-if="currentMeetingInfo.meetingType !== MeetingTypeEnums.safetyCenter.value">
|
||||||
<a-form-item label="审核">
|
<a-form-item label="审核">
|
||||||
<j-dict-select-tag v-model="queryParam.checkResult" placeholder="请选择"
|
<j-dict-select-tag v-model="queryParam.checkResult" placeholder="请选择"
|
||||||
dictCode="signup_status"/>
|
dictCode="signup_status"/>
|
||||||
@@ -207,7 +208,7 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24" v-if="!isSafetyCenter">
|
||||||
<a-form-item label="来款年份">
|
<a-form-item label="来款年份">
|
||||||
<j-year-date style="width:100%" placeholder="请选择来款年份" v-model="queryParam.particularYear"></j-year-date>
|
<j-year-date style="width:100%" placeholder="请选择来款年份" v-model="queryParam.particularYear"></j-year-date>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -226,7 +227,7 @@
|
|||||||
dictCode="guest_type"/>
|
dictCode="guest_type"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
<template v-if="!isSafetyCenter">
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
<a-form-item label="是否打包">
|
<a-form-item label="是否打包">
|
||||||
<j-dict-select-tag v-model="queryParam.pack" placeholder="请选择是否打包" @input="selectIdentity"
|
<j-dict-select-tag v-model="queryParam.pack" placeholder="请选择是否打包" @input="selectIdentity"
|
||||||
@@ -249,6 +250,7 @@
|
|||||||
dictCode="invoice_project"/>
|
dictCode="invoice_project"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
</template>
|
||||||
<!-- 国际研讨会 且为 WASIC时显示 -->
|
<!-- 国际研讨会 且为 WASIC时显示 -->
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero" v-if="currentMeetingInfo.meetingType === '3' && currentMeetingInfo.isWasic">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero" v-if="currentMeetingInfo.meetingType === '3' && currentMeetingInfo.isWasic">
|
||||||
<a-form-item label="会议名称">
|
<a-form-item label="会议名称">
|
||||||
@@ -273,6 +275,56 @@
|
|||||||
</span>
|
</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
<!-- 海外会议 -->
|
||||||
|
<a-row :gutter="24" v-else>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="姓名">
|
||||||
|
<a-input placeholder="请输入姓名" v-model="queryParam.name" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="性别">
|
||||||
|
<a-input placeholder="请输入性别" v-model="queryParam.sex" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="国籍">
|
||||||
|
<a-input placeholder="请输入国籍" v-model="queryParam.nationality" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="单位">
|
||||||
|
<a-input placeholder="请输入单位" v-model="queryParam.unit" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="职务">
|
||||||
|
<a-input placeholder="请输入职务" v-model="queryParam.post" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="地址">
|
||||||
|
<a-input placeholder="请输入地址" v-model="queryParam.address" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="邮箱">
|
||||||
|
<a-input placeholder="请输入邮箱" v-model="queryParam.email" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="联系电话">
|
||||||
|
<a-input placeholder="请输入联系电话" v-model="queryParam.phone" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" @click="searchQuery" icon="search"
|
||||||
|
v-has:[authorCode.search]="'attendance:search'">查询</a-button>
|
||||||
|
<a-button @click="searchReset" icon="reload" class="reset-button" style="margin-left: 8px">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
</a-form>
|
</a-form>
|
||||||
</div>
|
</div>
|
||||||
<!-- 查询区域-END -->
|
<!-- 查询区域-END -->
|
||||||
@@ -292,6 +344,10 @@
|
|||||||
<a-button type="primary" @click="batchSetGuestsUploadFileFlag" v-has:[authorCode.guestsUploadFileFlag]="'attendance:guestsUploadFileFlag'">
|
<a-button type="primary" @click="batchSetGuestsUploadFileFlag" v-has:[authorCode.guestsUploadFileFlag]="'attendance:guestsUploadFileFlag'">
|
||||||
批量设置资料状态
|
批量设置资料状态
|
||||||
</a-button>
|
</a-button>
|
||||||
|
<!--20240703 只有工作组和起草组会议列表页上方新增一个‘批量审核’按钮-->
|
||||||
|
<a-button type="primary" @click="batchAuditSignUpFlag" v-if="meetingTypeValue + '' === MeetingTypeEnums.workGroup.value || meetingTypeValue + '' === MeetingTypeEnums.draftGroup.value" v-has:[authorCode.batchAuditSignUpInfo]="'attendance:batchAuditSignUpInfo'">
|
||||||
|
批量审核报名信息
|
||||||
|
</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>-->
|
||||||
@@ -384,9 +440,11 @@
|
|||||||
<!-- 只有缴费方式为汇款并且上传了汇款凭证的的才会有审核按钮 审核报名信息通过后才能审核凭证 审核通过后不显示 审核凭证按钮 -->
|
<!-- 只有缴费方式为汇款并且上传了汇款凭证的的才会有审核按钮 审核报名信息通过后才能审核凭证 审核通过后不显示 审核凭证按钮 -->
|
||||||
<a @click="handleAudit(record)" v-if="(record.payMode === 1 || record.payMode === 2 ) && record.paymentRecord && record.checkResult !== 1"
|
<a @click="handleAudit(record)" v-if="(record.payMode === 1 || record.payMode === 2 ) && record.paymentRecord && record.checkResult !== 1"
|
||||||
v-has:[authorCode.auditRecord]="'attendance:auditCredentials'">审核凭证</a>
|
v-has:[authorCode.auditRecord]="'attendance:auditCredentials'">审核凭证</a>
|
||||||
<!-- 只有工作组会议与分标委会议理事会会议、起草组会议 才有审核报名信息-->
|
<!-- v-has:[authorCode.lookVoucher]="'attendance:lookVoucher'"-->
|
||||||
|
<a @click="lookVoucher(record)" v-show="(record.payMode === 1 || record.payMode === 2 ) && record.paymentRecord" v-has:[authorCode.lookVoucher]="'attendance:lookVoucher'">查看凭证</a>
|
||||||
|
<!-- 只有工作组会议与分标委会议理事会会议、起草组会议、功能安全中心 才有审核报名信息-->
|
||||||
<a @click="handleAuditSignUp(record)"
|
<a @click="handleAuditSignUp(record)"
|
||||||
v-show="(['1', '5', '6', '7'].includes(currentMeetingInfo.meetingType)) && record.registerCheckResult === 0 "
|
v-show="(['1', '5', '6', '7', MeetingTypeEnums.safetyCenter.value].includes(currentMeetingInfo.meetingType)) && record.registerCheckResult === 0 "
|
||||||
v-has:[authorCode.auditSignUpInfo]="'attendance:auditSignUp'">审核报名信息</a>
|
v-has:[authorCode.auditSignUpInfo]="'attendance:auditSignUp'">审核报名信息</a>
|
||||||
<!-- 非成员报名被拒绝 无法编辑 -->
|
<!-- 非成员报名被拒绝 无法编辑 -->
|
||||||
<a @click="handleEdit(record)" v-if="record.registerCheckResult !== 2" v-has:[authorCode.edit]="'attendance:edit'">编辑</a>
|
<a @click="handleEdit(record)" v-if="record.registerCheckResult !== 2" v-has:[authorCode.edit]="'attendance:edit'">编辑</a>
|
||||||
@@ -408,8 +466,8 @@
|
|||||||
<!--设置对接人-->
|
<!--设置对接人-->
|
||||||
<batch-set-docker-modal ref="batchSetDockerModal" @ok="modalFormOk"></batch-set-docker-modal>
|
<batch-set-docker-modal ref="batchSetDockerModal" @ok="modalFormOk"></batch-set-docker-modal>
|
||||||
<!--详情-->
|
<!--详情-->
|
||||||
<project-detail-modal ref="projectDetailModal"></project-detail-modal>
|
<project-detail-modal ref="projectDetailModal" :meeting-type="currentMeetingInfo.meetingType"></project-detail-modal>
|
||||||
<!--审核-->
|
<!--审核(审核凭证、审核报名信息)、查看凭证-->
|
||||||
<audit-modal ref="auditModal" @ok="modalFormOk"></audit-modal>
|
<audit-modal ref="auditModal" @ok="modalFormOk"></audit-modal>
|
||||||
<!--设置资料状态--即嘉宾是否可以在企业端上传资料-->
|
<!--设置资料状态--即嘉宾是否可以在企业端上传资料-->
|
||||||
<set-guess-upload-flag-modal ref="setGuessUploadFlagModal" :meeting-id="meetingId" :meeting-type="meetingTypeValue" @ok="modalFormOk"></set-guess-upload-flag-modal>
|
<set-guess-upload-flag-modal ref="setGuessUploadFlagModal" :meeting-id="meetingId" :meeting-type="meetingTypeValue" @ok="modalFormOk"></set-guess-upload-flag-modal>
|
||||||
@@ -437,6 +495,8 @@ import { downloadFile } from '../../../api/manage'
|
|||||||
import WasicTopicData from './modules/wasicStaticData'
|
import WasicTopicData from './modules/wasicStaticData'
|
||||||
import { formatMoney } from '@/utils/formatMoney'
|
import { formatMoney } from '@/utils/formatMoney'
|
||||||
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -458,6 +518,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
MeetingTypeEnums,
|
||||||
description: '参会情况',
|
description: '参会情况',
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
@@ -570,6 +631,123 @@ export default {
|
|||||||
scopedSlots: { customRender: 'action' }
|
scopedSlots: { customRender: 'action' }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
// 功能安全中心表格
|
||||||
|
safetyCenterColumns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '参会单位',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'companyName',
|
||||||
|
scopedSlots: { customRender: 'htmlSlot' },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '参会人员',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'companyContactName',
|
||||||
|
width: 160,
|
||||||
|
scopedSlots: { customRender: 'person' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '是否签到',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'checkIn_dictText',
|
||||||
|
width: 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '身份',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'identity_dictText',
|
||||||
|
width: 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '对接人',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'dockName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
width: 300,
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// 海外会议表格
|
||||||
|
overseasMeetingColumns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'name',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'sex',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '国籍',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'nationality',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '单位',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'unit',
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '职务',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'post',
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '地址',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邮箱',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'email',
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '联系电话',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'phone',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
width: 300,
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
],
|
||||||
// 权限编码
|
// 权限编码
|
||||||
authorCode: {},
|
authorCode: {},
|
||||||
// 其他会议的参会情况的权限编码
|
// 其他会议的参会情况的权限编码
|
||||||
@@ -582,7 +760,9 @@ export default {
|
|||||||
delete: 'otherMeetingSituation:delete',
|
delete: 'otherMeetingSituation:delete',
|
||||||
auditRecord: 'otherMeetingSituation:auditCredentials',
|
auditRecord: 'otherMeetingSituation:auditCredentials',
|
||||||
auditSignUpInfo: 'otherMeetingSituation:auditSignUp',
|
auditSignUpInfo: 'otherMeetingSituation:auditSignUp',
|
||||||
guestsUploadFileFlag: 'otherMeetingSituation:guestsUploadFileFlag'
|
guestsUploadFileFlag: 'otherMeetingSituation:guestsUploadFileFlag',
|
||||||
|
lookVoucher: 'otherMeetingSituation:lookVoucher' // 查看凭证
|
||||||
|
|
||||||
},
|
},
|
||||||
// 分标委会议的参会情况权限编码
|
// 分标委会议的参会情况权限编码
|
||||||
committeeMeetingCode: {
|
committeeMeetingCode: {
|
||||||
@@ -594,7 +774,8 @@ export default {
|
|||||||
delete: 'committeeMeetingSituation:delete',
|
delete: 'committeeMeetingSituation:delete',
|
||||||
auditRecord: 'committeeMeetingSituation:auditCredentials',
|
auditRecord: 'committeeMeetingSituation:auditCredentials',
|
||||||
auditSignUpInfo: 'committeeMeetingSituation:auditSignUp',
|
auditSignUpInfo: 'committeeMeetingSituation:auditSignUp',
|
||||||
guestsUploadFileFlag: 'committeeMeetingSituation:guestsUploadFileFlag'
|
guestsUploadFileFlag: 'committeeMeetingSituation:guestsUploadFileFlag',
|
||||||
|
lookVoucher: 'committeeMeetingSituation:lookVoucher' // 查看凭证
|
||||||
},
|
},
|
||||||
// 工作组会议的参会情况的权限编码
|
// 工作组会议的参会情况的权限编码
|
||||||
workGroupMeetingCode: {
|
workGroupMeetingCode: {
|
||||||
@@ -606,7 +787,9 @@ export default {
|
|||||||
delete: 'workGroupMeetingSituation:delete',
|
delete: 'workGroupMeetingSituation:delete',
|
||||||
auditRecord: 'workGroupMeetingSituation:auditCredentials',
|
auditRecord: 'workGroupMeetingSituation:auditCredentials',
|
||||||
auditSignUpInfo: 'workGroupMeetingSituation:auditSignUp',
|
auditSignUpInfo: 'workGroupMeetingSituation:auditSignUp',
|
||||||
guestsUploadFileFlag: 'workGroupMeetingSituation:guestsUploadFileFlag'
|
batchAuditSignUpInfo: 'workGroupMeetingSituation:batchAuditSignUp', // 批量审核报名信息
|
||||||
|
guestsUploadFileFlag: 'workGroupMeetingSituation:guestsUploadFileFlag',
|
||||||
|
lookVoucher: 'workGroupMeetingSituation:lookVoucher' // 查看凭证
|
||||||
},
|
},
|
||||||
// 国际研讨会的参会情况的权限编码
|
// 国际研讨会的参会情况的权限编码
|
||||||
internalMeetingCode: {
|
internalMeetingCode: {
|
||||||
@@ -618,7 +801,8 @@ export default {
|
|||||||
delete: 'internalMeetingSituation:delete',
|
delete: 'internalMeetingSituation:delete',
|
||||||
auditRecord: 'internalMeetingSituation:auditCredentials',
|
auditRecord: 'internalMeetingSituation:auditCredentials',
|
||||||
auditSignUpInfo: 'internalMeetingSituation:auditSignUp',
|
auditSignUpInfo: 'internalMeetingSituation:auditSignUp',
|
||||||
guestsUploadFileFlag: 'internalMeetingSituation:guestsUploadFileFlag'
|
guestsUploadFileFlag: 'internalMeetingSituation:guestsUploadFileFlag',
|
||||||
|
lookVoucher: 'internalMeetingSituation:lookVoucher' // 查看凭证
|
||||||
},
|
},
|
||||||
// 标协会议的参会情况的权限编码
|
// 标协会议的参会情况的权限编码
|
||||||
standardsMeetingCode: {
|
standardsMeetingCode: {
|
||||||
@@ -630,7 +814,8 @@ export default {
|
|||||||
delete: 'standardsMeetingSituation:delete',
|
delete: 'standardsMeetingSituation:delete',
|
||||||
auditRecord: 'standardsMeetingSituation:auditCredentials',
|
auditRecord: 'standardsMeetingSituation:auditCredentials',
|
||||||
auditSignUpInfo: 'standardsMeetingSituation:auditSignUp',
|
auditSignUpInfo: 'standardsMeetingSituation:auditSignUp',
|
||||||
guestsUploadFileFlag: 'standardsMeetingSituation:guestsUploadFileFlag'
|
guestsUploadFileFlag: 'standardsMeetingSituation:guestsUploadFileFlag',
|
||||||
|
lookVoucher: 'standardsMeetingSituation:lookVoucher' // 查看凭证
|
||||||
},
|
},
|
||||||
// 理事会的参会情况的权限编码
|
// 理事会的参会情况的权限编码
|
||||||
councilMeetingCode: {
|
councilMeetingCode: {
|
||||||
@@ -642,7 +827,8 @@ export default {
|
|||||||
delete: 'councilMeetingSituation:delete',
|
delete: 'councilMeetingSituation:delete',
|
||||||
auditRecord: 'councilMeetingSituation:auditCredentials',
|
auditRecord: 'councilMeetingSituation:auditCredentials',
|
||||||
auditSignUpInfo: 'councilMeetingSituation:auditSignUp',
|
auditSignUpInfo: 'councilMeetingSituation:auditSignUp',
|
||||||
guestsUploadFileFlag: 'councilMeetingSituation:guestsUploadFileFlag'
|
guestsUploadFileFlag: 'councilMeetingSituation:guestsUploadFileFlag',
|
||||||
|
lookVoucher: 'councilMeetingSituation:lookVoucher' // 查看凭证
|
||||||
},
|
},
|
||||||
// 起草组会议的参会情况的权限编码
|
// 起草组会议的参会情况的权限编码
|
||||||
draftGroupMeetingCode: {
|
draftGroupMeetingCode: {
|
||||||
@@ -654,8 +840,33 @@ export default {
|
|||||||
delete: 'draftGroupMeetingSituation:delete',
|
delete: 'draftGroupMeetingSituation:delete',
|
||||||
auditRecord: 'draftGroupMeetingSituation:auditCredentials',
|
auditRecord: 'draftGroupMeetingSituation:auditCredentials',
|
||||||
auditSignUpInfo: 'draftGroupMeetingSituation:auditSignUp',
|
auditSignUpInfo: 'draftGroupMeetingSituation:auditSignUp',
|
||||||
|
batchAuditSignUpInfo: 'draftGroupMeetingSituation:batchAuditSignUp', // 批量审核报名信息
|
||||||
guestsUploadFileFlag: 'draftGroupMeetingSituation:guestsUploadFileFlag'
|
guestsUploadFileFlag: 'draftGroupMeetingSituation:guestsUploadFileFlag'
|
||||||
},
|
},
|
||||||
|
// 海外会议的参会情况的权限编码
|
||||||
|
overseasMeetingCode: {
|
||||||
|
search: 'overseasMeetingSituation:search',
|
||||||
|
add: 'overseasMeetingSituation:add',
|
||||||
|
export: 'overseasMeetingSituation:export',
|
||||||
|
batchDel: 'overseasMeetingSituation:batchDel',
|
||||||
|
edit: 'overseasMeetingSituation:edit',
|
||||||
|
delete: 'overseasMeetingSituation:delete',
|
||||||
|
auditRecord: 'overseasMeetingSituation:auditCredentials',
|
||||||
|
auditSignUpInfo: 'overseasMeetingSituation:auditSignUp',
|
||||||
|
guestsUploadFileFlag: 'overseasMeetingSituation:guestsUploadFileFlag'
|
||||||
|
},
|
||||||
|
// 功能安全中心会议的参会情况的权限编码
|
||||||
|
safetyCenterMeetingCode: {
|
||||||
|
search: 'safetyCenterMeetingSituation:search',
|
||||||
|
add: 'safetyCenterMeetingSituation:add',
|
||||||
|
export: 'safetyCenterMeetingSituation:export',
|
||||||
|
batchDel: 'safetyCenterMeetingSituation:batchDel',
|
||||||
|
edit: 'safetyCenterMeetingSituation:edit',
|
||||||
|
delete: 'safetyCenterMeetingSituation:delete',
|
||||||
|
auditRecord: 'safetyCenterMeetingSituation:auditCredentials',
|
||||||
|
auditSignUpInfo: 'safetyCenterMeetingSituation:auditSignUp',
|
||||||
|
guestsUploadFileFlag: 'safetyCenterMeetingSituation:guestsUploadFileFlag'
|
||||||
|
},
|
||||||
disableMixinCreated: true,
|
disableMixinCreated: true,
|
||||||
// url: {
|
// url: {
|
||||||
// list: '/meeting/payMeetingSituation/page',
|
// list: '/meeting/payMeetingSituation/page',
|
||||||
@@ -720,6 +931,22 @@ export default {
|
|||||||
exportXlsUrl: '/meeting/draftGroupMeetingSituation/exportXls',
|
exportXlsUrl: '/meeting/draftGroupMeetingSituation/exportXls',
|
||||||
importExcelUrl: '/meeting/draftGroupMeetingSituation/importExcel'
|
importExcelUrl: '/meeting/draftGroupMeetingSituation/importExcel'
|
||||||
},
|
},
|
||||||
|
// 海外会议的url
|
||||||
|
overseasMeetingUrl: {
|
||||||
|
list: '/meeting/overseasSituation/page',
|
||||||
|
delete: '/meeting/overseasSituation/delete',
|
||||||
|
deleteBatch: '/meeting/overseasSituation/deleteBatch',
|
||||||
|
exportXlsUrl: '/meeting/overseasSituation/exportXls',
|
||||||
|
importExcelUrl: '/meeting/overseasSituation/importExcel'
|
||||||
|
},
|
||||||
|
// 功能安全中心会议的url
|
||||||
|
safetyCenterMeetingUrl: {
|
||||||
|
list: '/meeting/safetyCenterMeetingSituation/page',
|
||||||
|
delete: '/meeting/safetyCenterMeetingSituation/delete',
|
||||||
|
deleteBatch: '/meeting/safetyCenterMeetingSituation/deleteBatch',
|
||||||
|
exportXlsUrl: '/meeting/safetyCenterMeetingSituation/exportXls',
|
||||||
|
importExcelUrl: '/meeting/safetyCenterMeetingSituation/importExcel'
|
||||||
|
},
|
||||||
// 当前的会议信息详情
|
// 当前的会议信息详情
|
||||||
currentMeetingInfo: {},
|
currentMeetingInfo: {},
|
||||||
meetingType: '',
|
meetingType: '',
|
||||||
@@ -739,6 +966,14 @@ export default {
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
// console.log(this.$route,'this.$route this.$route')
|
// console.log(this.$route,'this.$route this.$route')
|
||||||
|
// 海外会议处理表格
|
||||||
|
if (this.isOverseasMeeting) {
|
||||||
|
this.columns = this.overseasMeetingColumns
|
||||||
|
}
|
||||||
|
// 功能安全中心表格
|
||||||
|
if (this.isSafetyCenter) {
|
||||||
|
this.columns = this.safetyCenterColumns
|
||||||
|
}
|
||||||
// 为不同会议的参会情况去设置不同的权限编码
|
// 为不同会议的参会情况去设置不同的权限编码
|
||||||
this.setCodeByMeetingType(this.$route.query.meetingType)
|
this.setCodeByMeetingType(this.$route.query.meetingType)
|
||||||
// 获取会议详情
|
// 获取会议详情
|
||||||
@@ -755,8 +990,10 @@ export default {
|
|||||||
// 列表表头只有国际研讨会有对接人字段
|
// 列表表头只有国际研讨会有对接人字段
|
||||||
if (this.currentMeetingInfo.meetingType !== '3') {
|
if (this.currentMeetingInfo.meetingType !== '3') {
|
||||||
let index = this.columns.findIndex(item => item.dataIndex === 'dockName')
|
let index = this.columns.findIndex(item => item.dataIndex === 'dockName')
|
||||||
|
if (index !== -1) {
|
||||||
this.columns.splice(index, 1)
|
this.columns.splice(index, 1)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// 计算会议费用 会议费用为0 添加参会人不显示邮寄信息与缴费信息 标协会议
|
// 计算会议费用 会议费用为0 添加参会人不显示邮寄信息与缴费信息 标协会议
|
||||||
if (this.currentMeetingInfo.meetingType === '2' && this.currentMeetingInfo.meetingCostsVip) {
|
if (this.currentMeetingInfo.meetingType === '2' && this.currentMeetingInfo.meetingCostsVip) {
|
||||||
// 标协会员的费用
|
// 标协会员的费用
|
||||||
@@ -802,6 +1039,14 @@ export default {
|
|||||||
this.signInQRCode = await this.generateQRCode(this.signInUrl)
|
this.signInQRCode = await this.generateQRCode(this.signInUrl)
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
// 是否功能安全中心
|
||||||
|
isSafetyCenter() {
|
||||||
|
return this.$route.query.meetingType === MeetingTypeEnums.safetyCenter.value
|
||||||
|
},
|
||||||
|
// 是否海外会议
|
||||||
|
isOverseasMeeting () {
|
||||||
|
return this.$route.query.meetingType === MeetingTypeEnums.overseas.value
|
||||||
|
},
|
||||||
// 标协会议类型
|
// 标协会议类型
|
||||||
tbMeetingType() {
|
tbMeetingType() {
|
||||||
if (this.currentMeetingInfo.tbMeetingType === '1') {
|
if (this.currentMeetingInfo.tbMeetingType === '1') {
|
||||||
@@ -832,6 +1077,12 @@ export default {
|
|||||||
return this.councilMeetingUrl
|
return this.councilMeetingUrl
|
||||||
case '7':
|
case '7':
|
||||||
return this.draftGroupMeetingUrl
|
return this.draftGroupMeetingUrl
|
||||||
|
// 海外会议
|
||||||
|
case MeetingTypeEnums.overseas.value:
|
||||||
|
return this.overseasMeetingUrl
|
||||||
|
// 功能安全中心会议
|
||||||
|
case MeetingTypeEnums.safetyCenter.value:
|
||||||
|
return this.safetyCenterMeetingUrl
|
||||||
// 为了解决控制台报错写的
|
// 为了解决控制台报错写的
|
||||||
default:return this.workGroupMeetingUrl
|
default:return this.workGroupMeetingUrl
|
||||||
}
|
}
|
||||||
@@ -917,8 +1168,10 @@ export default {
|
|||||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||||
param['selections'] = this.selectedRowKeys.join(',')
|
param['selections'] = this.selectedRowKeys.join(',')
|
||||||
}
|
}
|
||||||
// 增加特有的企业名称排序
|
// 增加特有的企业名称排序,海外会议按创建时间
|
||||||
|
if (!this.isOverseasMeeting) {
|
||||||
param.column = 'companyName'
|
param.column = 'companyName'
|
||||||
|
}
|
||||||
downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
|
downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
|
||||||
},
|
},
|
||||||
/*
|
/*
|
||||||
@@ -932,12 +1185,18 @@ export default {
|
|||||||
* 添加参会人
|
* 添加参会人
|
||||||
* */
|
* */
|
||||||
addParticipant() {
|
addParticipant() {
|
||||||
|
let path = '/incomePayments/meetManage/SignUpInfoEdit'
|
||||||
|
// 海外会议跳转另一个页面
|
||||||
|
if (this.isOverseasMeeting) {
|
||||||
|
path = '/incomePayments/meetManage/SignUpInfoEditOverseas'
|
||||||
|
}
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: '/incomePayments/meetManage/SignUpInfoEdit',
|
path,
|
||||||
query: {
|
query: {
|
||||||
meetingType: this.currentMeetingInfo.meetingType,
|
meetingType: this.currentMeetingInfo.meetingType,
|
||||||
meetingId: this.$route.query.id,
|
meetingId: this.$route.query.id,
|
||||||
costBool: this.meetingCostBool
|
costBool: this.meetingCostBool,
|
||||||
|
safetyCenterId: this.currentMeetingInfo.safetyCenterId
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -945,13 +1204,19 @@ export default {
|
|||||||
* 编辑参会人
|
* 编辑参会人
|
||||||
* */
|
* */
|
||||||
handleEdit(record) {
|
handleEdit(record) {
|
||||||
|
let path = '/incomePayments/meetManage/SignUpInfoEdit'
|
||||||
|
// 海外会议跳转另一个页面
|
||||||
|
if (this.isOverseasMeeting) {
|
||||||
|
path = '/incomePayments/meetManage/SignUpInfoEditOverseas'
|
||||||
|
}
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: '/incomePayments/meetManage/SignUpInfoEdit',
|
path,
|
||||||
query: {
|
query: {
|
||||||
id: record.id,
|
id: record.id,
|
||||||
meetingId: this.$route.query.id,
|
meetingId: this.$route.query.id,
|
||||||
meetingType: this.currentMeetingInfo.meetingType,
|
meetingType: this.currentMeetingInfo.meetingType,
|
||||||
costBool: this.meetingCostBool
|
costBool: this.meetingCostBool,
|
||||||
|
safetyCenterId: this.currentMeetingInfo.safetyCenterId
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -1036,6 +1301,11 @@ export default {
|
|||||||
return '理事会会议'
|
return '理事会会议'
|
||||||
case '7':
|
case '7':
|
||||||
return '起草组会议'
|
return '起草组会议'
|
||||||
|
case MeetingTypeEnums.overseas.value:
|
||||||
|
return '海外会议'
|
||||||
|
// 功能安全中心会议
|
||||||
|
case MeetingTypeEnums.safetyCenter.value:
|
||||||
|
return MeetingTypeEnums.safetyCenter.name
|
||||||
default:
|
default:
|
||||||
return '其他会议'
|
return '其他会议'
|
||||||
}
|
}
|
||||||
@@ -1138,8 +1408,49 @@ export default {
|
|||||||
case '7':
|
case '7':
|
||||||
this.authorCode = Object.assign({}, this.draftGroupMeetingCode)
|
this.authorCode = Object.assign({}, this.draftGroupMeetingCode)
|
||||||
break
|
break
|
||||||
|
// 海外会议
|
||||||
|
case MeetingTypeEnums.overseas.value:
|
||||||
|
this.authorCode = Object.assign({}, this.overseasMeetingCode)
|
||||||
|
break
|
||||||
|
// 功能安全中心会议
|
||||||
|
case MeetingTypeEnums.safetyCenter.value:
|
||||||
|
this.authorCode = Object.assign({}, this.safetyCenterMeetingCode)
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// 批量审核报名信息,只有参会方式是嘉宾的可以设置
|
||||||
|
// record.registerCheckResult === 0 的时候有审核信息
|
||||||
|
batchAuditSignUpFlag() {
|
||||||
|
console.log(1)
|
||||||
|
if (this.selectedRowKeys.length <= 0) {
|
||||||
|
this.$message.warning('请选择一条记录!')
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
// 判断record.registerCheckResult === 0 的时候有审核信息
|
||||||
|
let flag = this.selectionRows.some(item => {
|
||||||
|
return item.registerCheckResult !== 0
|
||||||
|
})
|
||||||
|
if(flag) {
|
||||||
|
this.$message.warn('只有待审核信息才可批量审核报名信息')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const that = this
|
||||||
|
let ids = this.selectedRowKeys.join(',')
|
||||||
|
this.$confirm({
|
||||||
|
title: '确认审核',
|
||||||
|
content: '是否确定批量审核报名信息?',
|
||||||
|
onOk: function () {
|
||||||
|
that.$refs.auditModal.title = '批量审核报名信息'
|
||||||
|
that.$refs.auditModal.open({ batch: true, ids }, true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 查看凭证
|
||||||
|
lookVoucher(record) {
|
||||||
|
this.$refs.auditModal.title = '查看凭证'
|
||||||
|
this.$refs.auditModal.lookVoucher(record)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,9 +26,9 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<!-- 只有编辑的时候并且缴费方式不是打包, 显示 待确收金额 税率 税额 等信息 -->
|
<!-- 只有编辑的时候并且缴费方式不是打包, 显示 待确收金额 税率 税额 等信息 !!$route.query.id && identifyType === 2 && !payModeBool -->
|
||||||
<template v-if="!!$route.query.id && identifyType === 2 && !payModeBool">
|
<!--20240801 修改-缴费方式为 打包的时候也要待确收金额-->
|
||||||
|
<template v-if="!!$route.query.id && identifyType === 2">
|
||||||
<!-- 到账后 待确收金额 税率不能编辑 -->
|
<!-- 到账后 待确收金额 税率不能编辑 -->
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :xxl="8" :xl="12" :sm="24">
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
|||||||
@@ -28,9 +28,9 @@
|
|||||||
<!--个人信息end-->
|
<!--个人信息end-->
|
||||||
|
|
||||||
<!-- 不是国际研讨会的 -->
|
<!-- 不是国际研讨会的 -->
|
||||||
<div v-if="meetingType !== '3' ">
|
<!-- 功能安全中心不显示其他信息 -->
|
||||||
|
<div v-if="(meetingType !== '3') && (meetingType !== MeetingTypeEnums.safetyCenter.value)">
|
||||||
<!--行程信息begin-->
|
<!--行程信息begin-->
|
||||||
<template>
|
|
||||||
<div class="item-title">行程信息</div>
|
<div class="item-title">行程信息</div>
|
||||||
<a-row :gutter="24" class="flex-col">
|
<a-row :gutter="24" class="flex-col">
|
||||||
<a-col :xxl="8" :xl="12" :sm="24">
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
@@ -44,12 +44,12 @@
|
|||||||
<label class="label">离开时间:</label><span>{{ model.departureTime }}</span>
|
<label class="label">离开时间:</label><span>{{ model.departureTime }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
</template>
|
|
||||||
<!--行程信息end-->
|
<!--行程信息end-->
|
||||||
|
|
||||||
<!--其他会议的身份选择参会人才显示 缴费信息和邮寄信息 -->
|
<!--其他会议的身份选择参会人才显示 缴费信息和邮寄信息 -->
|
||||||
<!--缴费信息begin-->
|
<!--缴费信息begin-->
|
||||||
<template v-if="model.identity === 2">
|
<!-- 功能安全中心不显示缴费信息 -->
|
||||||
|
<template v-if="(model.identity === 2)">
|
||||||
<div class="item-title">缴费信息</div>
|
<div class="item-title">缴费信息</div>
|
||||||
<a-row :gutter="24" class="flex-col">
|
<a-row :gutter="24" class="flex-col">
|
||||||
<a-col :xxl="8" :xl="12" :sm="24">
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
@@ -270,6 +270,7 @@ import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
|||||||
import {getSingUpUserInfo} from '@api/incomeMeetingApi'
|
import {getSingUpUserInfo} from '@api/incomeMeetingApi'
|
||||||
import JImageUpload from '@comp/jero/JImageUpload'
|
import JImageUpload from '@comp/jero/JImageUpload'
|
||||||
import PreviewFile from '@comp/jero/PreviewFile'
|
import PreviewFile from '@comp/jero/PreviewFile'
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -293,6 +294,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
MeetingTypeEnums,
|
||||||
model: {}, // 会议信息
|
model: {}, // 会议信息
|
||||||
meetingType: '' // 会议类型
|
meetingType: '' // 会议类型
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,21 +12,26 @@
|
|||||||
<add-meeting-company @change="changeCompany" v-decorator="['companyId',validatorRules.companyId]"
|
<add-meeting-company @change="changeCompany" v-decorator="['companyId',validatorRules.companyId]"
|
||||||
placeholder="请选择参会企业"
|
placeholder="请选择参会企业"
|
||||||
full-company-info
|
full-company-info
|
||||||
|
:customListUrl="safetyCenterId ? companyList : ''"
|
||||||
|
:customListParams="safetyCenterId ? customListParams : {}"
|
||||||
:disabled="model.checkResult === 1"
|
:disabled="model.checkResult === 1"
|
||||||
:maxLength='50'>
|
:maxLength='50'>
|
||||||
</add-meeting-company>
|
</add-meeting-company>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24" type="flex">
|
||||||
<a-col :xxl="8" :xl="12" :sm="24">
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
<a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<select-contacts :selected-company="selectedCompany"
|
<select-contacts :selected-company="selectedCompany"
|
||||||
placeholder="请选择参会人"
|
placeholder="请选择参会人"
|
||||||
v-decorator="['companyContactId',validatorRules.companyContactId]"
|
v-decorator="['companyContactId',validatorRules.companyContactId]"
|
||||||
:maxLength='50'
|
:maxLength='50'
|
||||||
|
:can-add="!safetyCenterId"
|
||||||
:disabled="model.checkResult === 1"
|
:disabled="model.checkResult === 1"
|
||||||
:init-contacts="selectPerson"
|
:init-contacts="selectPerson"
|
||||||
|
:customListFn="safetyCenterId ? getContactsByCompanyBySafetyCenter : null"
|
||||||
|
:customListParams="safetyCenterId ? customListParams : {}"
|
||||||
@change="changeContact"
|
@change="changeContact"
|
||||||
ref="selectMailContacts"
|
ref="selectMailContacts"
|
||||||
@ok="addContactsOk"></select-contacts>
|
@ok="addContactsOk"></select-contacts>
|
||||||
@@ -42,6 +47,15 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
|
<!--国际研讨会-职务-->
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24" v-if="meetingType === MeetingTypeEnums.internationalSeminar.value ">
|
||||||
|
<a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入职务"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['post',validatorRules.post]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
<a-col :xxl="8" :xl="12" :sm="24">
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
<a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<!--内部企业的时候不允许进行修改参会身份-->
|
<!--内部企业的时候不允许进行修改参会身份-->
|
||||||
@@ -144,7 +158,6 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
<a-button class="submit" type="primary" @click="handleOk" v-preventclick>确定</a-button>
|
<a-button class="submit" type="primary" @click="handleOk" v-preventclick>确定</a-button>
|
||||||
<a-button @click="handleCancel">取消</a-button>
|
<a-button @click="handleCancel">取消</a-button>
|
||||||
@@ -162,14 +175,14 @@ import OtherMeetingForm from '@views/incomePayments/meetManage/OtherMeetingForm'
|
|||||||
import SeminarVipForm from '@views/incomePayments/meetManage/modules/SeminarVipForm'
|
import SeminarVipForm from '@views/incomePayments/meetManage/modules/SeminarVipForm'
|
||||||
import SeminarPartnerForm from '@views/incomePayments/meetManage/modules/SeminarPartnerForm'
|
import SeminarPartnerForm from '@views/incomePayments/meetManage/modules/SeminarPartnerForm'
|
||||||
import AddMeetingCompany from '@comp/company/AddMeetingCompany'
|
import AddMeetingCompany from '@comp/company/AddMeetingCompany'
|
||||||
import {getContactsById} from '@api/api'
|
import {getContactsByCompanyBySafetyCenter, getContactsById} from '@api/api'
|
||||||
import {getSingUpUserInfo, validateStandard, getMeetInfoById, getLinkTopics} from '@api/incomeMeetingApi'
|
import {getSingUpUserInfo, validateStandard, getMeetInfoById, getLinkTopics} from '@api/incomeMeetingApi'
|
||||||
import {judgeCompanyIsPackaged, judgeInternalEnterprise} from '../../../api/incomePaymentsApi'
|
import {judgeCompanyIsPackaged, judgeInternalEnterprise} from '../../../api/incomePaymentsApi'
|
||||||
import {httpAction} from '@api/manage'
|
import {httpAction} from '@api/manage'
|
||||||
import pick from 'lodash.pick'
|
import pick from 'lodash.pick'
|
||||||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
import { queryCompanyInfoById } from '../../../api/api'
|
import { queryCompanyInfoById } from '../../../api/api'
|
||||||
import { LinkTopicsEnums } from '../../../enums/commonEnums'
|
import {LinkTopicsEnums, MeetingTypeEnums} from '../../../enums/commonEnums'
|
||||||
import WasicTopicData from './modules/wasicStaticData'
|
import WasicTopicData from './modules/wasicStaticData'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -185,6 +198,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
MeetingTypeEnums,
|
||||||
description: '报名信息编辑页',
|
description: '报名信息编辑页',
|
||||||
form: this.$form.createForm(this),
|
form: this.$form.createForm(this),
|
||||||
confirmLoading: false,
|
confirmLoading: false,
|
||||||
@@ -233,8 +247,11 @@ export default {
|
|||||||
guestType:{
|
guestType:{
|
||||||
rules: [{required: true, message: '请选择嘉宾类型'}],
|
rules: [{required: true, message: '请选择嘉宾类型'}],
|
||||||
validateTrigger: 'change'
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
post: {
|
||||||
|
rules: [{required: true, message: '请输入职务'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
// 身份类型
|
// 身份类型
|
||||||
identifyType: null,
|
identifyType: null,
|
||||||
@@ -289,6 +306,16 @@ export default {
|
|||||||
add: '/meeting/draftGroupMeetingSituation/add',
|
add: '/meeting/draftGroupMeetingSituation/add',
|
||||||
edit:'/meeting/draftGroupMeetingSituation/edit'
|
edit:'/meeting/draftGroupMeetingSituation/edit'
|
||||||
},
|
},
|
||||||
|
// 海外会议的url
|
||||||
|
overseasMeetingUrl: {
|
||||||
|
add: '/meeting/overseasSituation/add',
|
||||||
|
edit: '/meeting/overseasSituation/edit'
|
||||||
|
},
|
||||||
|
// 功能安全中心会议的url
|
||||||
|
safetyCenterMeetingUrl: {
|
||||||
|
add: '/meeting/safetyCenterMeetingSituation/add',
|
||||||
|
edit:'/meeting/safetyCenterMeetingSituation/edit'
|
||||||
|
},
|
||||||
title:'添加参会人',
|
title:'添加参会人',
|
||||||
// 当前参会企业是否是内部企业
|
// 当前参会企业是否是内部企业
|
||||||
isInternalEnterprise: false,
|
isInternalEnterprise: false,
|
||||||
@@ -297,7 +324,17 @@ export default {
|
|||||||
// 可选会议名称的数组
|
// 可选会议名称的数组
|
||||||
linkTopicsOptionArr: [],
|
linkTopicsOptionArr: [],
|
||||||
// WASIC可选会议的数组-前端写死
|
// WASIC可选会议的数组-前端写死
|
||||||
showTopicsArr: [...WasicTopicData]
|
showTopicsArr: [...WasicTopicData],
|
||||||
|
// 功能安全中心id
|
||||||
|
safetyCenterId: this.$route.query.safetyCenterId,
|
||||||
|
// 成员单位列表(功能安全中心单独的选择成员列表接口)
|
||||||
|
companyList: '/company/payCompanyManagement/listSafetyCenter',
|
||||||
|
// 需要带上当前项目id
|
||||||
|
customListParams: {
|
||||||
|
projectId: this.$route.query.safetyCenterId,
|
||||||
|
// 查询本级可选,传其他值是查上级
|
||||||
|
type: '2'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -340,10 +377,17 @@ export default {
|
|||||||
return this.councilMeetingUrl
|
return this.councilMeetingUrl
|
||||||
case '7':
|
case '7':
|
||||||
return this.draftGroupMeetingUrl
|
return this.draftGroupMeetingUrl
|
||||||
|
// 海外会议
|
||||||
|
case MeetingTypeEnums.overseas.value:
|
||||||
|
return this.overseasMeetingUrl
|
||||||
|
// 功能安全中心会议
|
||||||
|
case MeetingTypeEnums.safetyCenter.value:
|
||||||
|
return this.safetyCenterMeetingUrl
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getContactsByCompanyBySafetyCenter,
|
||||||
// 验证选择会议名称的情况
|
// 验证选择会议名称的情况
|
||||||
checkChoiceTopic(rules, value, callback) {
|
checkChoiceTopic(rules, value, callback) {
|
||||||
console.log(value)
|
console.log(value)
|
||||||
|
|||||||
@@ -0,0 +1,498 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title :is-level-one="false" :level-two-title="title"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<!-- 海外会议单独的表单 -->
|
||||||
|
<a-form :form="form">
|
||||||
|
<!-- 海外会议的表单 -->
|
||||||
|
<div class="item-title">个人信息</div>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="照片" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-image-upload v-decorator="['photo',validatorRules.photo]" :return-id="true"
|
||||||
|
accept=".jpg,.jpeg,.png"
|
||||||
|
:file-type-list="['jpg', 'jpeg', 'png']"></j-image-upload>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入姓名"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['name',validatorRules.name]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入性别"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['sex',validatorRules.sex]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="国籍" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入国籍"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['nationality',validatorRules.nationality]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入单位"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['unit',validatorRules.unit]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24" key="post">
|
||||||
|
<a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入职务"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['post',validatorRules.post]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入地址"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['address',validatorRules.address]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入邮箱"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['email',validatorRules.email]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="联系电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入联系电话"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['phone',validatorRules.phone]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="是否需要签证" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-dict-select-tag v-decorator="['needVisa',validatorRules.needVisa]"
|
||||||
|
:triggerChange="true"
|
||||||
|
placeholder="请选择是否需要签证"
|
||||||
|
@change="changeNeedVisa"
|
||||||
|
type="radio"
|
||||||
|
dictCode="yn"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<template v-if="isNeedVisa">
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="出生日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-date placeholder="请选择出生日期" style="width: 100%;"
|
||||||
|
v-decorator="['birthday',validatorRules.birthday]"
|
||||||
|
:trigger-change="true"
|
||||||
|
show-type="day"
|
||||||
|
date-format="YYYY-MM-DD"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="护照号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入护照号码"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['passportNo',validatorRules.passportNo]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="入境日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-date placeholder="请选择入境日期" style="width: 100%;"
|
||||||
|
v-decorator="['entryDate',validatorRules.entryDate]"
|
||||||
|
:trigger-change="true"
|
||||||
|
show-type="day"
|
||||||
|
date-format="YYYY-MM-DD"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="出境日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-date placeholder="请选择出境日期" style="width: 100%;"
|
||||||
|
v-decorator="['exitDate',validatorRules.exitDate]"
|
||||||
|
:trigger-change="true"
|
||||||
|
show-type="day"
|
||||||
|
date-format="YYYY-MM-DD"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xxl="8" :xl="12" :sm="24">
|
||||||
|
<a-form-item label="办理签证使领馆" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input placeholder="请输入办理签证使领馆"
|
||||||
|
:maxLength='50'
|
||||||
|
v-decorator="['embassiesAndConsulates',validatorRules.embassiesAndConsulates]"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</template>
|
||||||
|
</a-row>
|
||||||
|
|
||||||
|
<div class="center">
|
||||||
|
<a-button class="submit" type="primary" @click="handleOk" v-preventclick>确定</a-button>
|
||||||
|
<a-button @click="handleCancel">取消</a-button>
|
||||||
|
</div>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {getMeetInfoById, getSingUpUserInfoOverseas} from '@api/incomeMeetingApi'
|
||||||
|
import {httpAction} from '@api/manage'
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import {LinkTopicsEnums, MeetingTypeEnums, YesOrNoEnums} from '../../../enums/commonEnums'
|
||||||
|
import JImageUpload from '@comp/jero/JImageUpload'
|
||||||
|
import JDate from '@comp/tools/JDate'
|
||||||
|
import {isEmail} from '@/utils/validate'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SignUpInfoEdit',
|
||||||
|
components: {
|
||||||
|
JDate,
|
||||||
|
JImageUpload,
|
||||||
|
PageHeaderTitle
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
MeetingTypeEnums,
|
||||||
|
description: '海外会议报名信息编辑页',
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
confirmLoading: false,
|
||||||
|
model: {},
|
||||||
|
formData:{},
|
||||||
|
labelCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 6}
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 18}
|
||||||
|
},
|
||||||
|
remarksLabelCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 3}
|
||||||
|
},
|
||||||
|
remarksWrapperCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 21}
|
||||||
|
},
|
||||||
|
validatorRules: {
|
||||||
|
photo: {
|
||||||
|
rules: [{required: true, message: '请上传照片'}],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
rules: [{required: true, message: '请输入姓名'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
post: {
|
||||||
|
rules: [{required: true, message: '请输入职务'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
unit: {
|
||||||
|
rules: [{required: true, message: '请输入单位'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
international: {
|
||||||
|
rules: [{required: true, message: '请输入国际'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
address: {
|
||||||
|
rules: [{required: true, message: '请输入地址'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
email: {
|
||||||
|
rules: [{ required: true, validator: this.checkMail }],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
phone: {
|
||||||
|
rules: [{required: true, message: '请输入联系电话'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
needVisa: {
|
||||||
|
rules: [{required: true, message: '请选择是否需要签证'}],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
foreignName: {
|
||||||
|
rules: [{required: true, message: '请输入外文姓名'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
sex: {
|
||||||
|
rules: [{required: true, message: '请输入性别'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
birthday: {
|
||||||
|
rules: [{required: true, message: '请选择出生日期'}],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
nationality: {
|
||||||
|
rules: [{required: true, message: '请输入国籍'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
passportNo: {
|
||||||
|
rules: [{required: true, message: '请输入护照号码'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
|
entryDate: {
|
||||||
|
rules: [{required: true, message: '请选择入境日期'}],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
exitDate: {
|
||||||
|
rules: [{required: true, message: '请选择出境日期'}],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
},
|
||||||
|
embassiesAndConsulates: {
|
||||||
|
rules: [{required: true, message: '请输入办理签证使领馆'}],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 会议类型
|
||||||
|
meetingType: '',
|
||||||
|
// 当前会议的信息
|
||||||
|
currentMeetingInfo:{},
|
||||||
|
url:{
|
||||||
|
add: '/meeting/overseasSituation/add',
|
||||||
|
edit: '/meeting/overseasSituation/edit'
|
||||||
|
},
|
||||||
|
title:'添加参会人',
|
||||||
|
// 是否需要签证
|
||||||
|
isNeedVisa: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.meetingType = this.$route.query.meetingType
|
||||||
|
// 参会情况页面判断的是否会议费用为0 true 为0
|
||||||
|
if(this.$route.query.costBool === 'true'){
|
||||||
|
this.meetingCostBool = true
|
||||||
|
}else if(this.$route.query.costBool === 'false'){
|
||||||
|
this.meetingCostBool = false
|
||||||
|
}
|
||||||
|
if(this.$route.query.id){
|
||||||
|
getSingUpUserInfoOverseas({id: this.$route.query.id}).then(res => {
|
||||||
|
if(res.success) {
|
||||||
|
this.edit(res.result)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//获取 会议信息
|
||||||
|
if(this.$route.query.meetingId){
|
||||||
|
this.queryMeetingInfo(this.$route.query.meetingId)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
// 是否海外会议,报名信息调整
|
||||||
|
isOverseasMeeting () {
|
||||||
|
return this.meetingType + '' === MeetingTypeEnums.overseas.value
|
||||||
|
},
|
||||||
|
// 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
|
||||||
|
case '6':
|
||||||
|
return this.councilMeetingUrl
|
||||||
|
case '7':
|
||||||
|
return this.draftGroupMeetingUrl
|
||||||
|
// 海外会议
|
||||||
|
case MeetingTypeEnums.overseas.value:
|
||||||
|
return this.overseasMeetingUrl
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 是否需要签证改变
|
||||||
|
changeNeedVisa (val) {
|
||||||
|
if (val + '' === YesOrNoEnums.yes.value) {
|
||||||
|
this.isNeedVisa = true
|
||||||
|
} else {
|
||||||
|
this.isNeedVisa = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 验证选择会议名称的情况
|
||||||
|
checkChoiceTopic(rules, value, callback) {
|
||||||
|
console.log(value)
|
||||||
|
let arr = []
|
||||||
|
if (value && value.length > 0) {
|
||||||
|
arr = [...value]
|
||||||
|
}
|
||||||
|
let radioKey = this.form.getFieldValue('radioKey')
|
||||||
|
let radioKeyTwo = this.form.getFieldValue('radioKeyTwo')
|
||||||
|
if(radioKey || radioKeyTwo) {
|
||||||
|
callback()
|
||||||
|
} else {
|
||||||
|
arr = arr.filter(tt => tt !== LinkTopicsEnums.freeTwo.index + '')
|
||||||
|
if(arr.length === 0) {
|
||||||
|
callback('请至少选择一个非参观类会议')
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 编辑
|
||||||
|
* */
|
||||||
|
async edit(record){
|
||||||
|
this.form.resetFields()
|
||||||
|
this.model = Object.assign({},record)
|
||||||
|
if(this.model.id){
|
||||||
|
this.title = '编辑参会人'
|
||||||
|
}
|
||||||
|
// 海外会议回显单独处理
|
||||||
|
this.changeNeedVisa(this.model.needVisa)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(this.model)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 确定
|
||||||
|
* */
|
||||||
|
handleOk() {
|
||||||
|
const that = this
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
this.confirmLoading = true
|
||||||
|
let submitData = Object.assign({},values,this.formData)
|
||||||
|
// 会议id
|
||||||
|
submitData.meetingId = this.$route.query.meetingId
|
||||||
|
// 会议类型
|
||||||
|
submitData.meetingType = this.$route.query.meetingType
|
||||||
|
console.log(submitData)
|
||||||
|
let url = ''
|
||||||
|
if(!this.model.id){
|
||||||
|
url = this.url.add
|
||||||
|
}else {
|
||||||
|
url = this.url.edit
|
||||||
|
// 编辑的时候需要传入id
|
||||||
|
submitData.id = this.model.id
|
||||||
|
}
|
||||||
|
// that.confirmLoading = false
|
||||||
|
// return
|
||||||
|
let method = 'post'
|
||||||
|
httpAction(url,submitData,method).then(res => {
|
||||||
|
if(res.success){
|
||||||
|
that.$emit('ok')
|
||||||
|
that.handleCancel()
|
||||||
|
that.$message.success(res.message)
|
||||||
|
that.confirmLoading = false
|
||||||
|
}else {
|
||||||
|
that.$message.warn(res.message)
|
||||||
|
}
|
||||||
|
}).finally( () => {
|
||||||
|
that.confirmLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 获取表单的值
|
||||||
|
* */
|
||||||
|
getFormData(value){
|
||||||
|
this.formData = Object.assign({},value)
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 取消
|
||||||
|
* */
|
||||||
|
handleCancel() {
|
||||||
|
this.$router.go(-1)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @Description 通过会议id获取会议信息
|
||||||
|
* @Date 2021-11-29
|
||||||
|
* @param meetingId 会议id
|
||||||
|
* @author fac
|
||||||
|
* */
|
||||||
|
queryMeetingInfo(meetingId){
|
||||||
|
this.currentMeetingInfo = {}
|
||||||
|
getMeetInfoById({id: meetingId}).then(res => {
|
||||||
|
if(res.success){
|
||||||
|
this.currentMeetingInfo = res.result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 邮箱校验
|
||||||
|
* @param rules
|
||||||
|
* @param value
|
||||||
|
* @param callback
|
||||||
|
*/
|
||||||
|
checkMail(rules, value, callback) {
|
||||||
|
if (value) {
|
||||||
|
if (isEmail(value)) {
|
||||||
|
callback()
|
||||||
|
} else {
|
||||||
|
callback('请输入正确格式的邮箱')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
callback('请输入邮箱')
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
.center {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.submit {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-title {
|
||||||
|
padding-left: 40px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 46px;
|
||||||
|
line-height: 46px;
|
||||||
|
color: #333;
|
||||||
|
position: relative;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
position: absolute;
|
||||||
|
content: "";
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #069f99;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -5px;
|
||||||
|
left: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 国际研讨会-关联会议 多选样式的修改
|
||||||
|
.meeting-form-multi-select{
|
||||||
|
.topic-title{
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/.ant-checkbox-wrapper + .ant-checkbox-wrapper {
|
||||||
|
margin-left: 0!important;
|
||||||
|
}
|
||||||
|
/deep/ .ant-checkbox-wrapper,
|
||||||
|
/deep/ .ant-radio-wrapper{
|
||||||
|
margin-right: 8px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.radio-div{
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
padding-top: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
@cancel="handleCancel"
|
@cancel="handleCancel"
|
||||||
cancelText="关闭">
|
cancelText="关闭">
|
||||||
<a-spin :spinning="confirmLoading">
|
<a-spin :spinning="confirmLoading">
|
||||||
<section class="check">
|
<section class="check" v-if="!batchCheckSignUp">
|
||||||
<h3>报名信息</h3>
|
<h3>报名信息</h3>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
@@ -63,6 +63,8 @@
|
|||||||
<label class="color-999">订单后四位:</label>
|
<label class="color-999">订单后四位:</label>
|
||||||
<span class="color-black">{{ model.orderCode }}</span></a-col>
|
<span class="color-black">{{ model.orderCode }}</span></a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
<!--非查看状态 显示审核数据-->
|
||||||
|
<template v-if="!lookVoucherBool">
|
||||||
|
|
||||||
<h3>审核</h3>
|
<h3>审核</h3>
|
||||||
|
|
||||||
@@ -103,6 +105,7 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
</a-form>
|
</a-form>
|
||||||
|
</template>
|
||||||
</a-spin>
|
</a-spin>
|
||||||
<template slot="footer">
|
<template slot="footer">
|
||||||
<a-button @click="handleCancel">关闭</a-button>
|
<a-button @click="handleCancel">关闭</a-button>
|
||||||
@@ -115,6 +118,7 @@
|
|||||||
import JImageUpload from '@comp/jero/JImageUpload'
|
import JImageUpload from '@comp/jero/JImageUpload'
|
||||||
import {httpAction} from '@api/manage'
|
import {httpAction} from '@api/manage'
|
||||||
import {getSingUpUserInfo} from '@api/incomeMeetingApi'
|
import {getSingUpUserInfo} from '@api/incomeMeetingApi'
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'AuditModal',
|
name: 'AuditModal',
|
||||||
@@ -185,7 +189,9 @@ export default {
|
|||||||
// 审核凭证
|
// 审核凭证
|
||||||
check: '/meeting/workGroupMeetingSituation/check',
|
check: '/meeting/workGroupMeetingSituation/check',
|
||||||
// 审核报名信息
|
// 审核报名信息
|
||||||
checkSignUp: '/meeting/workGroupMeetingSituation/checkRegister'
|
checkSignUp: '/meeting/workGroupMeetingSituation/checkRegister',
|
||||||
|
// 批量审核报名信息
|
||||||
|
checkSignUpBatch: '/meeting/workGroupMeetingSituation/checkRegisterBatch',
|
||||||
},
|
},
|
||||||
// 分标委会议url
|
// 分标委会议url
|
||||||
committeeMeetingUrl: {
|
committeeMeetingUrl: {
|
||||||
@@ -220,14 +226,27 @@ export default {
|
|||||||
// 审核凭证
|
// 审核凭证
|
||||||
check: '/meeting/draftGroupMeetingSituation/check',
|
check: '/meeting/draftGroupMeetingSituation/check',
|
||||||
// 审核报名信息
|
// 审核报名信息
|
||||||
checkSignUp: '/meeting/draftGroupMeetingSituation/checkRegister'
|
checkSignUp: '/meeting/draftGroupMeetingSituation/checkRegister',
|
||||||
|
// 批量审核报名信息
|
||||||
|
checkSignUpBatch: '/meeting/draftGroupMeetingSituation/checkRegisterBatch',
|
||||||
|
},
|
||||||
|
// 功能安全中心会议url
|
||||||
|
safetyCenterMeetingUrl: {
|
||||||
|
// 审核凭证
|
||||||
|
check: '/meeting/safetyCenterMeetingSituation/check',
|
||||||
|
// 审核报名信息
|
||||||
|
checkSignUp: '/meeting/safetyCenterMeetingSituation/checkRegister'
|
||||||
},
|
},
|
||||||
// 审核结果选择
|
// 审核结果选择
|
||||||
checkBool: false,
|
checkBool: false,
|
||||||
// 是否是审核报名信息
|
// 是否是审核报名信息
|
||||||
checkSignBool: false,
|
checkSignBool: false,
|
||||||
|
// 是否批量 核查报名信息
|
||||||
|
batchCheckSignUp: false,
|
||||||
// 参会人id
|
// 参会人id
|
||||||
signUpPersonId: '',
|
signUpPersonId: '',
|
||||||
|
// 是否为查看凭证
|
||||||
|
lookVoucherBool: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch:{
|
watch:{
|
||||||
@@ -238,12 +257,23 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
/*
|
||||||
|
* record- 审核参数
|
||||||
|
* signUp- 是否审核报名信息
|
||||||
|
* */
|
||||||
open(record, signUp) {
|
open(record, signUp) {
|
||||||
this.form.resetFields()
|
this.form.resetFields()
|
||||||
this.signUpPersonId = this.situationId ? this.situationId : record.id
|
|
||||||
// 控制行程信息显示 审核凭证不显示
|
// 控制行程信息显示 审核凭证不显示
|
||||||
this.checkSignBool = signUp || false
|
this.checkSignBool = signUp || false
|
||||||
let meetingType = this.meetingType ? this.meetingType+'' :this.$route.query.meetingType
|
let meetingType = this.meetingType ? this.meetingType+'' :this.$route.query.meetingType
|
||||||
|
this.signUpPersonId = this.situationId ? this.situationId : record.id
|
||||||
|
// 判断是否为工作组的批量审批功能,批量审批record 的参数 batch= true; ids 存储多条数据
|
||||||
|
if(signUp && record.batch && record.ids) {
|
||||||
|
this.model = Object.assign({}, record)
|
||||||
|
this.batchCheckSignUp = true
|
||||||
|
} else {
|
||||||
|
this.batchCheckSignUp = false
|
||||||
|
}
|
||||||
// 到账开票
|
// 到账开票
|
||||||
if(record.type && record.type === 'kp' ){
|
if(record.type && record.type === 'kp' ){
|
||||||
meetingType = record.meetingType + ''
|
meetingType = record.meetingType + ''
|
||||||
@@ -256,11 +286,19 @@ export default {
|
|||||||
this.url = Object.assign({}, this.createUrlByMeetingType(meetingType))
|
this.url = Object.assign({}, this.createUrlByMeetingType(meetingType))
|
||||||
this.visible = true
|
this.visible = true
|
||||||
},
|
},
|
||||||
|
/* 查看凭证
|
||||||
|
* record- 审核参数
|
||||||
|
* */
|
||||||
|
lookVoucher(record) {
|
||||||
|
this.lookVoucherBool = true
|
||||||
|
this.open(record, false)
|
||||||
|
},
|
||||||
close() {
|
close() {
|
||||||
this.$emit('close')
|
this.$emit('close')
|
||||||
this.visible = false
|
this.visible = false
|
||||||
this.model = {}
|
this.model = {}
|
||||||
this.signUpPersonId = ''
|
this.signUpPersonId = ''
|
||||||
|
this.lookVoucherBool = false
|
||||||
},
|
},
|
||||||
handleOk() {
|
handleOk() {
|
||||||
const that = this
|
const that = this
|
||||||
@@ -268,17 +306,24 @@ export default {
|
|||||||
this.form.validateFields((err, values) => {
|
this.form.validateFields((err, values) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
that.confirmLoading = true
|
that.confirmLoading = true
|
||||||
|
const formData = Object.assign({}, values)
|
||||||
let httpurl = ''
|
let httpurl = ''
|
||||||
if (that.checkSignBool) {
|
if (that.checkSignBool) {
|
||||||
|
if(this.batchCheckSignUp) {
|
||||||
|
// 批量 审核报名信息的接口
|
||||||
|
httpurl = this.url.checkSignUpBatch
|
||||||
|
formData.ids = this.model.ids
|
||||||
|
} else {
|
||||||
// 审核报名信息的接口
|
// 审核报名信息的接口
|
||||||
httpurl = this.url.checkSignUp
|
httpurl = this.url.checkSignUp
|
||||||
|
formData.id = this.model.id
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// 审核凭证的接口
|
// 审核凭证的接口
|
||||||
httpurl = this.url.check
|
httpurl = this.url.check
|
||||||
|
formData.id = this.model.id
|
||||||
}
|
}
|
||||||
let method = 'post'
|
let method = 'post'
|
||||||
const formData = Object.assign({}, values)
|
|
||||||
formData.id = this.model.id
|
|
||||||
httpAction(httpurl, formData, method).then((res) => {
|
httpAction(httpurl, formData, method).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
that.$message.success(res.message)
|
that.$message.success(res.message)
|
||||||
@@ -335,6 +380,9 @@ export default {
|
|||||||
return this.councilMeetingUrl
|
return this.councilMeetingUrl
|
||||||
case '7':
|
case '7':
|
||||||
return this.draftGroupMeetingUrl
|
return this.draftGroupMeetingUrl
|
||||||
|
// 功能安全中心
|
||||||
|
case MeetingTypeEnums.safetyCenter.value:
|
||||||
|
return this.safetyCenterMeetingUrl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { httpAction } from '@api/manage'
|
import { httpAction } from '@api/manage'
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
const requestUrlObj = {
|
const requestUrlObj = {
|
||||||
workGroupMeetingUrl: '/meeting/workGroupMeetingSituation/setGuestsUploadFile', // 工作组
|
workGroupMeetingUrl: '/meeting/workGroupMeetingSituation/setGuestsUploadFile', // 工作组
|
||||||
standardsMeetingUrl: '/meeting/payMeetingSituation/setGuestsUploadFile', // 标协会议
|
standardsMeetingUrl: '/meeting/payMeetingSituation/setGuestsUploadFile', // 标协会议
|
||||||
@@ -36,6 +37,7 @@ const requestUrlObj = {
|
|||||||
committeeMeetingUrl: '/meeting/committeeMeetingSituation/setGuestsUploadFile', // 分标委会议的url
|
committeeMeetingUrl: '/meeting/committeeMeetingSituation/setGuestsUploadFile', // 分标委会议的url
|
||||||
councilMeetingUrl: '/meeting/councilMeetingSituation/setGuestsUploadFile', // 理事会的url
|
councilMeetingUrl: '/meeting/councilMeetingSituation/setGuestsUploadFile', // 理事会的url
|
||||||
draftGroupMeetingUrl: '/meeting/draftGroupMeetingSituation/setGuestsUploadFile', // 起草组
|
draftGroupMeetingUrl: '/meeting/draftGroupMeetingSituation/setGuestsUploadFile', // 起草组
|
||||||
|
safetyCenterMeetingUrl: '/meeting/safetyCenterMeetingSituation/setGuestsUploadFile', // 功能安全中心url
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -68,6 +70,9 @@ export default {
|
|||||||
return requestUrlObj.councilMeetingUrl
|
return requestUrlObj.councilMeetingUrl
|
||||||
case 7:
|
case 7:
|
||||||
return requestUrlObj.draftGroupMeetingUrl
|
return requestUrlObj.draftGroupMeetingUrl
|
||||||
|
// 功能安全中心
|
||||||
|
case Number(MeetingTypeEnums.safetyCenter.value):
|
||||||
|
return requestUrlObj.safetyCenterMeetingUrl
|
||||||
// 为了解决控制台报错写的
|
// 为了解决控制台报错写的
|
||||||
default:return requestUrlObj.workGroupMeetingUrl
|
default:return requestUrlObj.workGroupMeetingUrl
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<a-spin :spinning="confirmLoading">
|
<a-spin :spinning="confirmLoading">
|
||||||
<!-- 以表格的形式展示 所有的文件 -->
|
<!-- 以表格的形式展示 所有的文件 -->
|
||||||
<div class="table-operator">
|
<div class="table-operator">
|
||||||
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
|
<a-upload name="file" :showUploadList="false" :multiple="true" :headers="tokenHeader"
|
||||||
:action="importExcelUrl" :beforeUpload="beforeUpload" @change="handleChange"
|
:action="importExcelUrl" :beforeUpload="beforeUpload" @change="handleChange"
|
||||||
>
|
>
|
||||||
<a-button type="primary" icon="plus">新增</a-button>
|
<a-button type="primary" icon="plus">新增</a-button>
|
||||||
@@ -61,6 +61,7 @@ import { ACCESS_TOKEN } from '../../../../store/mutation-types'
|
|||||||
import { Modal } from 'ant-design-vue'
|
import { Modal } from 'ant-design-vue'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import { isExternalTerminal } from '../../../../utils/util'
|
import { isExternalTerminal } from '../../../../utils/util'
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
const FILE_TYPE_ALL = 'all'
|
const FILE_TYPE_ALL = 'all'
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
@@ -208,6 +209,18 @@ export default {
|
|||||||
uploadFile: '/meeting/draftGroupMeeting/uploadFile',
|
uploadFile: '/meeting/draftGroupMeeting/uploadFile',
|
||||||
uploadCouncilFile: '/meeting/draftGroupMeeting/uploadCouncilFile',
|
uploadCouncilFile: '/meeting/draftGroupMeeting/uploadCouncilFile',
|
||||||
}
|
}
|
||||||
|
// 海外会议
|
||||||
|
case MeetingTypeEnums.overseas.value:
|
||||||
|
return {
|
||||||
|
uploadFile: '/meeting/overseas/uploadFile',
|
||||||
|
uploadCouncilFile: '/meeting/overseas/uploadCouncilFile',
|
||||||
|
}
|
||||||
|
// 安全中心会议
|
||||||
|
case MeetingTypeEnums.safetyCenter.value:
|
||||||
|
return {
|
||||||
|
uploadFile: '/meeting/safetyCenterMeeting/uploadFile',
|
||||||
|
uploadCouncilFile: '/meeting/safetyCenterMeeting/uploadCouncilFile'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleOk() {
|
handleOk() {
|
||||||
@@ -356,8 +369,8 @@ export default {
|
|||||||
file.uploadGoOn = true
|
file.uploadGoOn = true
|
||||||
const fileSize = file.size // 上传的文件大小
|
const fileSize = file.size // 上传的文件大小
|
||||||
const fileType = file.type // 上传的文件类型
|
const fileType = file.type // 上传的文件类型
|
||||||
if (fileSize > 1024 * 1024 * 100) {
|
if (fileSize > 1024 * 1024 * 200) {
|
||||||
this.$message.warning('文件大小限制为100M')
|
this.$message.warning('文件大小限制为200M')
|
||||||
this.uploadGoOn = false
|
this.uploadGoOn = false
|
||||||
file.uploadGoOn = false
|
file.uploadGoOn = false
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -0,0 +1,192 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title :img-for-icon="IconImg"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!-- 查询区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="会员单位">
|
||||||
|
<a-input
|
||||||
|
placeholder="请输入会员单位"
|
||||||
|
v-model="queryParam.companyName"
|
||||||
|
></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="会员状态">
|
||||||
|
<j-dict-select-tag
|
||||||
|
placeholder="请选择会员状态"
|
||||||
|
v-model="queryParam.memberStatus"
|
||||||
|
dict-code="member_status"
|
||||||
|
></j-dict-select-tag>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="生效日期">
|
||||||
|
<a-month-picker
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="queryParam.effectiveDateStr"
|
||||||
|
format="YYYY-MM"
|
||||||
|
value-format="YYYY-MM"
|
||||||
|
placeholder="请选择生效日期"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="失效日期">
|
||||||
|
<a-month-picker
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="queryParam.invalidationDateStr"
|
||||||
|
format="YYYY-MM"
|
||||||
|
value-format="YYYY-MM"
|
||||||
|
placeholder="请选择失效日期"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</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="'memberStatistic:search'">查询</a-button>
|
||||||
|
<a-button @click="searchReset" class="reset-button" icon="reload" style="margin-left: 8px">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- 查询区域-END -->
|
||||||
|
|
||||||
|
<!-- 操作按钮区域 -->
|
||||||
|
<div class="table-operator">
|
||||||
|
|
||||||
|
<a-button
|
||||||
|
type="primary"
|
||||||
|
icon="download"
|
||||||
|
@click="handleExportXls('会员信息统计')"
|
||||||
|
v-has="'memberStatistic:export'">
|
||||||
|
导出
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
<!-- table区域-begin -->
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{
|
||||||
|
selectedRowKeys: selectedRowKeys,
|
||||||
|
onChange: onSelectChange,
|
||||||
|
}"
|
||||||
|
class="j-table-force-nowrap"
|
||||||
|
@change="handleTableChange"
|
||||||
|
>
|
||||||
|
<template slot="detail" slot-scope="text, record">
|
||||||
|
<div @click="openDetailModal(record)" class="color-blue">
|
||||||
|
{{ text }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<a-tooltip>
|
||||||
|
<template slot="title">{{ text }}</template>
|
||||||
|
<div class="table-text">{{ text }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
<!--<span slot="action" slot-scope="text, record" class="action-span-cell">-->
|
||||||
|
<!-- <a @click="handleEdit(record)" v-has="'safeguardStardsMember:edit'">查看</a>-->
|
||||||
|
<!--</span>-->
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import IconImg from '@/assets/imgs/icon/icon_stander_member.png'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'MemberStatisticList',
|
||||||
|
mixins: [JeroListMixin],
|
||||||
|
components: {
|
||||||
|
PageHeaderTitle,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
IconImg,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '会员编号',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'memberNo',
|
||||||
|
scopedSlots: { customRender: 'text' },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '会员单位',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'companyName',
|
||||||
|
scopedSlots: { customRender: 'detail' },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '企业联系人',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'liaisonManId_dictText',
|
||||||
|
scopedSlots: { customRender: 'text' },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '会员状态',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'memberStatus_dictText',
|
||||||
|
scopedSlots: { customRender: 'text' },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '生效日期',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'effectiveDateStr',
|
||||||
|
scopedSlots: { customRender: 'text' },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '失效日期',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'invalidationDateStr',
|
||||||
|
scopedSlots: { customRender: 'text' },
|
||||||
|
}
|
||||||
|
// {
|
||||||
|
// title: '操作',
|
||||||
|
// align: 'center',
|
||||||
|
// dataIndex: '',
|
||||||
|
// scopedSlots: {customRender: 'action'}
|
||||||
|
// }
|
||||||
|
],
|
||||||
|
url: {
|
||||||
|
list: '/member/annulMemberProject/page',
|
||||||
|
exportXlsUrl: '/member/annulMemberProject/exportXls'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -47,14 +47,22 @@
|
|||||||
<j-year-date style="width:100%" placeholder="请选择来款年份" v-model="queryParam.year"></j-year-date>
|
<j-year-date style="width:100%" placeholder="请选择来款年份" v-model="queryParam.year"></j-year-date>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-range-picker
|
<j-month-date placeholder="请选择开始日期"
|
||||||
style="width: 100%"
|
class="query-group-cust"
|
||||||
v-model="queryParam.estimatedArrivalDate"
|
v-model="queryParam[rangeMonthKey.start]"
|
||||||
format="YYYY-MM-DD"
|
:trigger-change="true"
|
||||||
:placeholder="['开始时间', '结束时间']"
|
date-format="YYYY-MM"
|
||||||
@change="onDateChange"
|
:disabled-date="disabledStartMonth"
|
||||||
|
/>
|
||||||
|
<span class="query-group-split-cust"></span>
|
||||||
|
<j-month-date placeholder="请选择结束日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam[rangeMonthKey.end]"
|
||||||
|
:trigger-change="true"
|
||||||
|
date-format="YYYY-MM"
|
||||||
|
:disabled-date="disabledEndMonth"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -179,17 +187,20 @@ import { formatMoney } from '@/utils/formatMoney'
|
|||||||
import {getAction} from '@api/manage'
|
import {getAction} from '@api/manage'
|
||||||
import {getFileInfo} from '@api/api'
|
import {getFileInfo} from '@api/api'
|
||||||
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
||||||
|
import { MonthRangeMixin } from '../../../mixins/MonthRangeMixins'
|
||||||
|
import JMonthDate from '../../../components/tools/JMonthDate'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SafeguardMemberList',
|
name: 'SafeguardMemberList',
|
||||||
mixins: [JeroListMixin, mixinDevice],
|
mixins: [JeroListMixin, mixinDevice, MonthRangeMixin],
|
||||||
components: {
|
components: {
|
||||||
JYearDate,
|
JYearDate,
|
||||||
SafeguardMemberModal,
|
SafeguardMemberModal,
|
||||||
ProjectDetailModal,
|
ProjectDetailModal,
|
||||||
StatusSlot,
|
StatusSlot,
|
||||||
PageHeaderTitle,
|
PageHeaderTitle,
|
||||||
PreviewFile
|
PreviewFile,
|
||||||
|
JMonthDate
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -369,10 +380,6 @@ export default {
|
|||||||
this.currentInfo.fileName = res.result.fileName
|
this.currentInfo.fileName = res.result.fileName
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
|
||||||
onDateChange: function (value, dateString) {
|
|
||||||
this.queryParam.estimatedArrivalStartDate = dateString[0]
|
|
||||||
this.queryParam.estimatedArrivalEndDate = dateString[1]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,14 +50,22 @@
|
|||||||
></j-dict-select-tag>
|
></j-dict-select-tag>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||||
<a-form-item label="预估到账日期">
|
<a-form-item label="预估到账日期">
|
||||||
<a-range-picker
|
<j-month-date placeholder="请选择开始日期"
|
||||||
style="width: 100%"
|
class="query-group-cust"
|
||||||
v-model="queryParam.estimatedArrivalDateArr"
|
v-model="queryParam[rangeMonthKey.start]"
|
||||||
format="YYYY-MM-DD"
|
:trigger-change="true"
|
||||||
:placeholder="['开始时间', '结束时间']"
|
date-format="YYYY-MM"
|
||||||
@change="onDateChange"
|
:disabled-date="disabledStartMonth"
|
||||||
|
/>
|
||||||
|
<span class="query-group-split-cust"></span>
|
||||||
|
<j-month-date placeholder="请选择结束日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam[rangeMonthKey.end]"
|
||||||
|
:trigger-change="true"
|
||||||
|
date-format="YYYY-MM"
|
||||||
|
:disabled-date="disabledEndMonth"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -116,7 +124,7 @@
|
|||||||
<a-button type="danger" icon="delete" @click="batchDel" v-has="'safeguardStardsMember:batchDel'">批量删除</a-button>
|
<a-button type="danger" icon="delete" @click="batchDel" v-has="'safeguardStardsMember:batchDel'">批量删除</a-button>
|
||||||
<a-button type="primary" icon="copy" @click="handleMemberBatchCopy" v-has="'safeguardStardsMember:batchCopy'">批量复制</a-button>
|
<a-button type="primary" icon="copy" @click="handleMemberBatchCopy" v-has="'safeguardStardsMember:batchCopy'">批量复制</a-button>
|
||||||
<a-button type="primary" icon="download" @click="downTemplate('标协会员成员导入模板')" v-has="'safeguardStardsMember:downloadTemplate'">下载模板</a-button>
|
<a-button type="primary" icon="download" @click="downTemplate('标协会员成员导入模板')" v-has="'safeguardStardsMember:downloadTemplate'">下载模板</a-button>
|
||||||
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" :data="importData"
|
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" :data="importData" :beforeUpload="beforeUpload"
|
||||||
@change="handleImportExcel" v-has="'safeguardStardsMember:import'">
|
@change="handleImportExcel" v-has="'safeguardStardsMember:import'">
|
||||||
<a-button type="primary" icon="import">导入</a-button>
|
<a-button type="primary" icon="import">导入</a-button>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
@@ -180,7 +188,7 @@
|
|||||||
|
|
||||||
<!-- 开票-->
|
<!-- 开票-->
|
||||||
<template slot="status-bill" slot-scope="text,record">
|
<template slot="status-bill" slot-scope="text,record">
|
||||||
<status-slot :statu-obj="record" :status-no="text" :status-type="true" status-key="bill"></status-slot>
|
<status-slot :statu-obj="record" :status-no="text" :status-type="true" status-key="bill" invoice-key="invoiceRequirements"></status-slot>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 确收 -->
|
<!-- 确收 -->
|
||||||
@@ -227,10 +235,12 @@ import {getPayConfirmList, getStardsMemberProjectById, memberDrawTicket} from '@
|
|||||||
import MemberEquityModal from './modules/MemberEquityModal'
|
import MemberEquityModal from './modules/MemberEquityModal'
|
||||||
import MemberCopyModal from './modules/MemberCopyModal'
|
import MemberCopyModal from './modules/MemberCopyModal'
|
||||||
import { ProjectTypeEnums } from '@/enums/commonEnums'
|
import { ProjectTypeEnums } from '@/enums/commonEnums'
|
||||||
|
import { MonthRangeMixin } from '../../../mixins/MonthRangeMixins'
|
||||||
|
import JMonthDate from '../../../components/tools/JMonthDate'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SafeguardStardsMemberList',
|
name: 'SafeguardStardsMemberList',
|
||||||
mixins: [JeroListMixin, mixinDevice],
|
mixins: [JeroListMixin, mixinDevice, MonthRangeMixin],
|
||||||
components: {
|
components: {
|
||||||
ProjectDetailModal,
|
ProjectDetailModal,
|
||||||
StatusSlot,
|
StatusSlot,
|
||||||
@@ -238,7 +248,8 @@ export default {
|
|||||||
PreviewFile,
|
PreviewFile,
|
||||||
SafeguardStardsMemberModal,
|
SafeguardStardsMemberModal,
|
||||||
MemberEquityModal,
|
MemberEquityModal,
|
||||||
MemberCopyModal
|
MemberCopyModal,
|
||||||
|
JMonthDate
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
importExcelUrl: function () {
|
importExcelUrl: function () {
|
||||||
@@ -269,13 +280,13 @@ export default {
|
|||||||
fieldName: 'chargeNoticeFileId',
|
fieldName: 'chargeNoticeFileId',
|
||||||
type: 'file'
|
type: 'file'
|
||||||
}, {
|
}, {
|
||||||
title: '理事会收费标准',
|
title: '副理事会收费标准',
|
||||||
fieldName: 'councilChargeStandard'
|
fieldName: 'councilChargeStandard'
|
||||||
}, {
|
}, {
|
||||||
title: '理事会收费通知号',
|
title: '副理事会收费通知号',
|
||||||
fieldName: 'councilChargeNoticeNo'
|
fieldName: 'councilChargeNoticeNo'
|
||||||
}, {
|
}, {
|
||||||
title: '理事会收费通知',
|
title: '副理事会收费通知',
|
||||||
fieldName: 'councilChargeNoticeFileId',
|
fieldName: 'councilChargeNoticeFileId',
|
||||||
type: 'file'
|
type: 'file'
|
||||||
}
|
}
|
||||||
@@ -373,6 +384,10 @@ export default {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
disableMixinCreated: true,
|
disableMixinCreated: true,
|
||||||
|
rangeMonthKey:{
|
||||||
|
start: 'estimatedArrivalDate_begin',
|
||||||
|
end: 'estimatedArrivalDate_end',
|
||||||
|
},
|
||||||
url: {
|
url: {
|
||||||
list: '/member/tbMemberProjectSubitem/page',
|
list: '/member/tbMemberProjectSubitem/page',
|
||||||
exportXlsUrl: '/member/tbMemberProjectSubitem/exportXls',
|
exportXlsUrl: '/member/tbMemberProjectSubitem/exportXls',
|
||||||
@@ -442,6 +457,18 @@ export default {
|
|||||||
// 编辑会员权益
|
// 编辑会员权益
|
||||||
handleMemberEquity (record) {
|
handleMemberEquity (record) {
|
||||||
this.$refs.memberEquityModal.edit(record)
|
this.$refs.memberEquityModal.edit(record)
|
||||||
|
},
|
||||||
|
beforeUpload(file) {
|
||||||
|
this.uploadGoOn = true
|
||||||
|
file.uploadGoOn = true
|
||||||
|
const fileSize = file.size // 上传的文件大小
|
||||||
|
if (fileSize > 1024 * 1024 * 200) {
|
||||||
|
this.$message.warning('文件大小限制为200M')
|
||||||
|
this.uploadGoOn = false
|
||||||
|
file.uploadGoOn = false
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -185,8 +185,7 @@ export default {
|
|||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: '/incomePayments/memberManage/StardsMemberProjectMeetingApplyInfo',
|
path: '/incomePayments/memberManage/StardsMemberProjectMeetingApplyInfo',
|
||||||
query: {
|
query: {
|
||||||
projectId: record.id,
|
projectId: record.id
|
||||||
year: record.year
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
this.filters.year = this.$route.query.year
|
this.filters.standardsId = this.$route.query.projectId
|
||||||
this.loadData()
|
this.loadData()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
+13
-2
@@ -60,6 +60,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<span slot="operation" class="action-span-cell" slot-scope="text, record">
|
<span slot="operation" class="action-span-cell" slot-scope="text, record">
|
||||||
|
<a @click="handleImportMemberModule(record)" v-has="'council:exportToMember'">导入到标协会员</a>
|
||||||
<a @click="handleMaintainData(record)" v-has="'council:fileMaintenance'">其他分发资料</a>
|
<a @click="handleMaintainData(record)" v-has="'council:fileMaintenance'">其他分发资料</a>
|
||||||
<a @click="handleMaintainMeeting(record)" v-has="'council:meetingMaintenance'">理事会会议</a>
|
<a @click="handleMaintainMeeting(record)" v-has="'council:meetingMaintenance'">理事会会议</a>
|
||||||
<a @click="handleAddMember(record)" v-has="'council:addMember'">新增成员</a>
|
<a @click="handleAddMember(record)" v-has="'council:addMember'">新增成员</a>
|
||||||
@@ -94,6 +95,8 @@
|
|||||||
<council-maintenance-modal ref="modalForm" @ok="modalFormOk"></council-maintenance-modal>
|
<council-maintenance-modal ref="modalForm" @ok="modalFormOk"></council-maintenance-modal>
|
||||||
<!-- 新增理事会成员-->
|
<!-- 新增理事会成员-->
|
||||||
<council-maintenance-member-modal ref="memberModalForm" @ok="modalFormOk"></council-maintenance-member-modal>
|
<council-maintenance-member-modal ref="memberModalForm" @ok="modalFormOk"></council-maintenance-member-modal>
|
||||||
|
<!-- 导入到标协会员 -->
|
||||||
|
<import-member-module-modal ref="importMemberModuleModal" @ok="modalFormOk"></import-member-module-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -104,10 +107,11 @@ import IconImg from '../../../../assets/imgs/icon/icon_stander_member.png'
|
|||||||
import { getAction } from '../../../../api/manage'
|
import { getAction } from '../../../../api/manage'
|
||||||
import CouncilMaintenanceModal from './modules/CouncilMaintenanceModal'
|
import CouncilMaintenanceModal from './modules/CouncilMaintenanceModal'
|
||||||
import CouncilMaintenanceMemberModal from './modules/CouncilMaintenanceMemberModal'
|
import CouncilMaintenanceMemberModal from './modules/CouncilMaintenanceMemberModal'
|
||||||
|
import ImportMemberModuleModal from './modules/ImportMemberModuleModal'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CouncilMaintenanceList',
|
name: 'CouncilMaintenanceList',
|
||||||
components: { PageHeaderTitle, CouncilMaintenanceModal, CouncilMaintenanceMemberModal },
|
components: { PageHeaderTitle, CouncilMaintenanceModal, CouncilMaintenanceMemberModal, ImportMemberModuleModal },
|
||||||
mixins: [JeroListMixin],
|
mixins: [JeroListMixin],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -139,7 +143,7 @@ export default {
|
|||||||
title: '操作',
|
title: '操作',
|
||||||
dataIndex: 'operation',
|
dataIndex: 'operation',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 420,
|
width: 580,
|
||||||
scopedSlots: { customRender: 'operation' }
|
scopedSlots: { customRender: 'operation' }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -302,6 +306,13 @@ export default {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 导入到标协会员
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
handleImportMemberModule(record) {
|
||||||
|
this.$refs.importMemberModuleModal.add(record)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+160
@@ -0,0 +1,160 @@
|
|||||||
|
<!--导入到标协会员-->
|
||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
switchFullscreen
|
||||||
|
@ok="handleOk"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<a-form :form="form">
|
||||||
|
<a-row>
|
||||||
|
<a-col>
|
||||||
|
<a-form-item label="标协会员项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-select placeholder="请选择标协会员项目"
|
||||||
|
show-search
|
||||||
|
v-decorator="['projectId',validatorRules.projectId]"
|
||||||
|
option-filter-prop="children"
|
||||||
|
:filter-option="filterOption"
|
||||||
|
>
|
||||||
|
<a-select-option v-for="item in memberProjectList" :key="item.id" :value="item.id">
|
||||||
|
{{ item.projectName }}
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import pick from 'lodash.pick'
|
||||||
|
import { getAction, httpAction } from '../../../../../api/manage'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ImportMemberModuleModal',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '操作',
|
||||||
|
width: 800,
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
model: {},
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 6 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 14 }
|
||||||
|
},
|
||||||
|
remarksLabelCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 3}
|
||||||
|
},
|
||||||
|
remarksWrapperCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 21}
|
||||||
|
},
|
||||||
|
// 不包含在列表的会员项目
|
||||||
|
memberProjectList:[],
|
||||||
|
validatorRules: {
|
||||||
|
projectId: {
|
||||||
|
rules: [{ required: true, message: '请选择标协会员项目' }],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
add: '/payCaseCouncilSubitem/payCaseCouncilSubitem/import',
|
||||||
|
memberList: '/member/tbMemberProject/page',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
add(record) {
|
||||||
|
this.edit({id: record.id})
|
||||||
|
},
|
||||||
|
edit(record) {
|
||||||
|
this.form.resetFields()
|
||||||
|
this.model = Object.assign({}, record)
|
||||||
|
this.visible = true
|
||||||
|
this.queryMemberProject()
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(this.model, 'projectId'))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('close')
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 查询会员项目
|
||||||
|
* */
|
||||||
|
queryMemberProject() {
|
||||||
|
const param = {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: -1
|
||||||
|
}
|
||||||
|
this.memberProjectList = []
|
||||||
|
getAction(this.url.memberList, param).then(res => {
|
||||||
|
if(res.success){
|
||||||
|
this.memberProjectList = res.result.records || res.result || []
|
||||||
|
}else {
|
||||||
|
console.log(res.message)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleOk() {
|
||||||
|
if (this.confirmLoading) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.confirmLoading = true
|
||||||
|
const that = this
|
||||||
|
// 触发表单验证
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
let method = 'post'
|
||||||
|
let httpUrl = this.url.add
|
||||||
|
const formData = Object.assign(this.model, values)
|
||||||
|
|
||||||
|
console.log('表单提交数据', formData)
|
||||||
|
httpAction(httpUrl, formData, method).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
that.$message.success(res.message)
|
||||||
|
that.$emit('ok')
|
||||||
|
that.close()
|
||||||
|
} else {
|
||||||
|
that.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.confirmLoading = false
|
||||||
|
}, 1000)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.confirmLoading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
// 下拉框的搜索
|
||||||
|
filterOption(input, option) {
|
||||||
|
return (
|
||||||
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -134,11 +134,11 @@
|
|||||||
<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-date placeholder="请选择预估到账日期"
|
<j-month-date placeholder="请选择预估到账日期"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||||
:trigger-change="true"
|
:trigger-change="true"
|
||||||
date-format="YYYY-MM-DD"
|
date-format="YYYY-MM"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -276,14 +276,14 @@ import { checkAssociatedProject } from '@/utils/projectCheck'
|
|||||||
import SelectRevenueContract from '../../../../components/tools/SelectRevenueContract'
|
import SelectRevenueContract from '../../../../components/tools/SelectRevenueContract'
|
||||||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||||
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
|
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
|
||||||
import JDate from '@/components/tools/JDate'
|
import JMonthDate from '@/components/tools/JMonthDate'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SafeguardMemberModal',
|
name: 'SafeguardMemberModal',
|
||||||
mixins:[CalcAmountMixin],
|
mixins:[CalcAmountMixin],
|
||||||
components: {
|
components: {
|
||||||
JUpload,
|
JUpload,
|
||||||
JDate,
|
JMonthDate,
|
||||||
JDictSelectTag,
|
JDictSelectTag,
|
||||||
CompanySelect,
|
CompanySelect,
|
||||||
// ContactManagementModule,
|
// ContactManagementModule,
|
||||||
|
|||||||
@@ -150,11 +150,11 @@
|
|||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<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-date placeholder="请选择预估到账日期"
|
<j-month-date placeholder="请选择预估到账日期"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||||
:trigger-change="true"
|
:trigger-change="true"
|
||||||
date-format="YYYY-MM-DD"
|
date-format="YYYY-MM"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -265,7 +265,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import JUpload from '@/components/jero/JUpload'
|
import JUpload from '@/components/jero/JUpload'
|
||||||
import JDate from '@/components/jero/JDate'
|
import JMonthDate from '@/components/tools/JMonthDate'
|
||||||
import JDictSelectTag from '@/components/dict/JDictSelectTag'
|
import JDictSelectTag from '@/components/dict/JDictSelectTag'
|
||||||
import CompanySelect from '@/components/company/CompanySelect'
|
import CompanySelect from '@/components/company/CompanySelect'
|
||||||
import SelectContacts from '@/components/company/SelectContacts'
|
import SelectContacts from '@/components/company/SelectContacts'
|
||||||
@@ -283,7 +283,7 @@ export default {
|
|||||||
mixins: [CalcAmountMixin],
|
mixins: [CalcAmountMixin],
|
||||||
components: {
|
components: {
|
||||||
JUpload,
|
JUpload,
|
||||||
JDate,
|
JMonthDate,
|
||||||
JDictSelectTag,
|
JDictSelectTag,
|
||||||
CompanySelect,
|
CompanySelect,
|
||||||
SelectContacts,
|
SelectContacts,
|
||||||
@@ -491,15 +491,15 @@ export default {
|
|||||||
memberNatureChange (value) {
|
memberNatureChange (value) {
|
||||||
console.log(this.baseInfo, value)
|
console.log(this.baseInfo, value)
|
||||||
if (value === MemberNature.viceChairmanUnit.value) {
|
if (value === MemberNature.viceChairmanUnit.value) {
|
||||||
// 是副理事长单位, 带出会员信息的理事会收费标准、理事会收费通知号、理事会收费通知作为待确收金额,收费通知号,收费通知
|
// 是副理事长单位, 带出会员信息的副理事会收费标准、副理事会收费通知号、副理事会收费通知作为待确收金额,收费通知号,收费通知
|
||||||
// 待确收金额带入会员的理事会收费标准
|
// 待确收金额带入会员的副理事会收费标准
|
||||||
if (this.baseInfo.councilChargeStandard) {
|
if (this.baseInfo.councilChargeStandard) {
|
||||||
this.form.setFieldsValue({
|
this.form.setFieldsValue({
|
||||||
amountReceivable: this.baseInfo.councilChargeStandard
|
amountReceivable: this.baseInfo.councilChargeStandard
|
||||||
})
|
})
|
||||||
this.changeReceivableAmount({target: {value: this.baseInfo.councilChargeStandard}})
|
this.changeReceivableAmount({target: {value: this.baseInfo.councilChargeStandard}})
|
||||||
}
|
}
|
||||||
// 来款方式是收费通知,带出会员信息的理事会收费通知号、理事会收费通知作为收费通知号,收费通知
|
// 来款方式是收费通知,带出会员信息的副理事会收费通知号、副理事会收费通知作为收费通知号,收费通知
|
||||||
if (this.form.getFieldValue('paymentMethod') === IncomeMethod.noticeOfCharge.value) {
|
if (this.form.getFieldValue('paymentMethod') === IncomeMethod.noticeOfCharge.value) {
|
||||||
this.form.setFieldsValue({
|
this.form.setFieldsValue({
|
||||||
chargeNoticeId: this.baseInfo.councilChargeNoticeFileId,
|
chargeNoticeId: this.baseInfo.councilChargeNoticeFileId,
|
||||||
@@ -594,7 +594,7 @@ export default {
|
|||||||
const memberNature = this.form.getFieldValue('memberNature')
|
const memberNature = this.form.getFieldValue('memberNature')
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if (memberNature === MemberNature.viceChairmanUnit.value) {
|
if (memberNature === MemberNature.viceChairmanUnit.value) {
|
||||||
// 是副理事长单位, 带出会员信息的理事会收费通知号、理事会收费通知作为收费通知号,收费通知
|
// 是副理事长单位, 带出会员信息的副理事会收费通知号、副理事会收费通知作为收费通知号,收费通知
|
||||||
this.form.setFieldsValue({
|
this.form.setFieldsValue({
|
||||||
chargeNoticeId: this.baseInfo.councilChargeNoticeFileId,
|
chargeNoticeId: this.baseInfo.councilChargeNoticeFileId,
|
||||||
chargeNoticeNo: this.baseInfo.councilChargeNoticeNo
|
chargeNoticeNo: this.baseInfo.councilChargeNoticeNo
|
||||||
|
|||||||
@@ -64,8 +64,8 @@
|
|||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<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">
|
||||||
<a-input placeholder="请输入理事会收费标准"
|
<a-input placeholder="请输入副理事会收费标准"
|
||||||
:maxLength='50'
|
:maxLength='50'
|
||||||
v-decorator="[ 'councilChargeStandard',validatorRules.councilChargeStandard]"
|
v-decorator="[ 'councilChargeStandard',validatorRules.councilChargeStandard]"
|
||||||
@blur="addZero"
|
@blur="addZero"
|
||||||
@@ -76,16 +76,16 @@
|
|||||||
</a-row>
|
</a-row>
|
||||||
<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">
|
||||||
<a-input placeholder="请输入理事会收费通知号"
|
<a-input placeholder="请输入副理事会收费通知号"
|
||||||
:maxLength='50'
|
:maxLength='50'
|
||||||
v-decorator="[ 'councilChargeNoticeNo']"
|
v-decorator="[ 'councilChargeNoticeNo']"
|
||||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item label="理事会收费通知" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="副理事会收费通知" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<j-upload file-type="pdf" file-type-error-message="请上传理事会收费通知" :multiple="false" :number="1" :return-id="true"
|
<j-upload file-type="pdf" file-type-error-message="请上传副理事会收费通知" :multiple="false" :number="1" :return-id="true"
|
||||||
bizPath="payment" v-decorator="['councilChargeNoticeFileId']"
|
bizPath="payment" v-decorator="['councilChargeNoticeFileId']"
|
||||||
:trigger-change="true"></j-upload>
|
:trigger-change="true"></j-upload>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -166,7 +166,7 @@ export default {
|
|||||||
],
|
],
|
||||||
validateTrigger: ['blur']
|
validateTrigger: ['blur']
|
||||||
},
|
},
|
||||||
// 理事会收费标准
|
// 副理事会收费标准
|
||||||
councilChargeStandard:{
|
councilChargeStandard:{
|
||||||
rules: [
|
rules: [
|
||||||
{required: false, validator: this.validateMoney},
|
{required: false, validator: this.validateMoney},
|
||||||
|
|||||||
@@ -0,0 +1,142 @@
|
|||||||
|
<template>
|
||||||
|
<a-spin :spinning="loading">
|
||||||
|
<page-header-title :img-for-icon="IconImg" :is-level-one="false" :level-two-title="title"></page-header-title>
|
||||||
|
<a-card :bordered="false" class="description-box">
|
||||||
|
<a-descriptions bordered size="middle" class="description-item" :class="{'description-item-close': !section.isOpen}" v-for="section in sectionList" :key="section.id" :column="section.column">
|
||||||
|
<div slot="title" class="description-head">
|
||||||
|
<div class="description-head-title">{{ section.title }}</div>
|
||||||
|
<div class="description-head-btn" @click="section.isOpen = !section.isOpen">
|
||||||
|
<a-icon :type="section.isOpen ? 'up' : 'down'" style="margin-right: 4px;" /> {{ section.isOpen ? '收起' : '展开' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a-descriptions-item v-for="label in section.labelList" :key="label.label"
|
||||||
|
:span="label.span ? label.span : 1"
|
||||||
|
:label="label.label">{{ model[label.valueField] }}</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</a-card>
|
||||||
|
</a-spin>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import IconImg from '@assets/imgs/icon/icon_committee_detail.png'
|
||||||
|
import {getAction} from '@api/manage'
|
||||||
|
export default {
|
||||||
|
name: 'CommitteeInfoDetail',
|
||||||
|
components: {PageHeaderTitle},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
IconImg,
|
||||||
|
title: this.$route.meta.title,
|
||||||
|
loading: true,
|
||||||
|
model: {},
|
||||||
|
// 内容块列表(column列数 一行显示几个字段,配合labelList[].span占用几列使用)
|
||||||
|
sectionList: [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
title: '委员会基础信息',
|
||||||
|
isOpen: true,
|
||||||
|
column: 2,
|
||||||
|
labelList: [
|
||||||
|
{ label: '委员会名称', valueField: 'committeeName', span: 2 },
|
||||||
|
{ label: '英文名称', valueField: 'englishName', span: 2 },
|
||||||
|
{ label: 'TC|SC号', valueField: 'committeeName', span: 2 },
|
||||||
|
{ label: '负责专业范围', valueField: 'responsibleForProfessionalScope', span: 2 },
|
||||||
|
{ label: '届号', valueField: 'whatIsTheCurrentSession' },
|
||||||
|
{ label: '第一届成立年代', valueField: 'establishmentYear' },
|
||||||
|
{ label: '第一届成立时间', valueField: 'firstEstablishmentDate' },
|
||||||
|
{ label: '第一届成立文号', valueField: 'establishmentNumber' },
|
||||||
|
{ label: '本届批准文号编号', valueField: 'approvalNumberForThisSession' },
|
||||||
|
{ label: '本届批准时间', valueField: 'approvalTimeForThisSession' },
|
||||||
|
{ label: '筹建单位', valueField: 'preparationUnit', span: 2 },
|
||||||
|
{ label: '业务指导单位', valueField: 'businessGuidanceUnit', span: 2 },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
title: '秘书处信息信息',
|
||||||
|
isOpen: true,
|
||||||
|
column: 2,
|
||||||
|
labelList: [
|
||||||
|
{ label: '秘书处所在单位', valueField: 'theUnitToWhichOneBelongs' },
|
||||||
|
{ label: '秘书长', valueField: 'secretaryGeneral' },
|
||||||
|
{ label: '所在单位性质', valueField: 'unitNature', span: 2 },
|
||||||
|
{ label: '所在单位的社会统一信用代码(或组织机构代码)', valueField: 'orgCode', span: 2 },
|
||||||
|
{ label: '所在单位的省份', valueField: 'province' },
|
||||||
|
{ label: '所在单位的城市', valueField: 'city' },
|
||||||
|
{ label: '通讯地址', valueField: 'secretariatMailingAddress', span: 2 },
|
||||||
|
{ label: '办公电话', valueField: 'telephone' },
|
||||||
|
{ label: '传真', valueField: 'facsimile' },
|
||||||
|
{ label: '电子邮箱', valueField: 'email' },
|
||||||
|
{ label: '邮编', valueField: 'zipCode' },
|
||||||
|
{ label: '联系人', valueField: 'contacts', span: 2 },
|
||||||
|
{ label: '联系人办公电话', valueField: 'contactPhoneNumber' },
|
||||||
|
{ label: '联系人传真', valueField: 'contactFax' },
|
||||||
|
{ label: '联系人电子邮箱', valueField: 'contactEmail' },
|
||||||
|
{ label: '联系人手机', valueField: 'cellPhone' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
this.model.id = this.$route.query.id
|
||||||
|
this.loadData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadData () {
|
||||||
|
this.loading = true
|
||||||
|
getAction('/PayCommitteeInfo/queryById', {id: this.model.id}).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.model = res.result
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.description-box {
|
||||||
|
/deep/ .ant-descriptions-view {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
// 字段列的宽度
|
||||||
|
/deep/ .ant-descriptions-item-label {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 一块的头部样式
|
||||||
|
/deep/ .ant-descriptions-title {
|
||||||
|
margin-bottom: 0;
|
||||||
|
background-color: #E6F5F5;
|
||||||
|
padding: 12px 24px;
|
||||||
|
color: @primary-color;
|
||||||
|
}
|
||||||
|
.description-head {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.description-head-btn {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 14px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.description-item {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
&.description-item-close /deep/ .ant-descriptions-view {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,224 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title :img-for-icon="IconImg"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!-- 查询区域-start -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item>
|
||||||
|
<a-input placeholder="请输入委员会名称" v-model="queryParam.committeeName" :maxLength='50' allowClear></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item>
|
||||||
|
<a-input placeholder="TC/SC号" v-model="queryParam.committeeNumber" :maxLength='50' allowClear></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<span class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" icon="search" @click="searchQuery" v-has="'committeeInfo:search'">查询</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- /查询区域-end-->
|
||||||
|
|
||||||
|
<!-- 操作按钮区域-->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button type="primary" icon="export" @click="handleExportXls('委员会表')" v-has="'committeeInfo:export'">导出</a-button>
|
||||||
|
</div>
|
||||||
|
<!-- 操作按钮区域-end-->
|
||||||
|
|
||||||
|
<!-- table表格区域-->
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:scroll="{x: 1300}"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange"
|
||||||
|
class="j-table-force-nowrap">
|
||||||
|
|
||||||
|
<!-- 跳转详情 -->
|
||||||
|
<template slot="detail" slot-scope="text, record">
|
||||||
|
<j-ellipsis :value="text" :length="20" @click="handleDetail(record)" class="can-click"></j-ellipsis>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 跳转委员信息 -->
|
||||||
|
<template slot="memberNumber" slot-scope="text, record">
|
||||||
|
<j-ellipsis value="查看" :length="20" @click="handleMember(record)" class="can-click"></j-ellipsis>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<a-tooltip overlay-class-name="tooltip-style">
|
||||||
|
<template slot="title">{{ text || text === 0 ? text : '' }}</template>
|
||||||
|
<div class="table-text">{{ text || text === 0 ? text : '' }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<!-- /table表格区域-->
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import IconImg from '@/assets/imgs/icon/icon_organizational_manage.png'
|
||||||
|
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||||
|
export default {
|
||||||
|
name: 'CommitteeInfoList',
|
||||||
|
components: {PageHeaderTitle},
|
||||||
|
mixins: [JeroListMixin],
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
isorter: null,
|
||||||
|
IconImg,
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 5 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 10 }
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'TC号',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'committeeNumber',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '委员会名称',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'committeeName',
|
||||||
|
scopedSlots: { customRender: 'detail' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '委员信息',
|
||||||
|
align: 'center',
|
||||||
|
width: 100,
|
||||||
|
dataIndex: 'memberNumber',
|
||||||
|
scopedSlots: { customRender: 'memberNumber' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '秘书处承担单位',
|
||||||
|
align: 'center',
|
||||||
|
width: 200,
|
||||||
|
dataIndex: 'theUnitToWhichOneBelongs',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '业务指导单位',
|
||||||
|
align: 'center',
|
||||||
|
width: 200,
|
||||||
|
dataIndex: 'businessGuidanceUnit',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '专业范围',
|
||||||
|
align: 'center',
|
||||||
|
width: 280,
|
||||||
|
dataIndex: 'responsibleForProfessionalScope',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '秘书长',
|
||||||
|
align: 'center',
|
||||||
|
width: 100,
|
||||||
|
dataIndex: 'secretaryGeneral',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '办公电话',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'telephone',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '电子邮箱',
|
||||||
|
align: 'center',
|
||||||
|
width: 200,
|
||||||
|
dataIndex: 'email',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '本届批准文号',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'approvalNumberForThisSession',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
],
|
||||||
|
url: {
|
||||||
|
list: '/PayCommitteeInfo/page',
|
||||||
|
exportXlsUrl: '/PayCommitteeInfo/exportXls'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 跳转详情
|
||||||
|
handleDetail (record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/organizationalManage/committeeDetail',
|
||||||
|
query: {
|
||||||
|
id: record.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 跳转委员信息页面
|
||||||
|
handleMember (record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/organizationalManage/committeeMemberInfo',
|
||||||
|
query: {
|
||||||
|
committeeNumber: record.committeeNumber
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleTableChange(pagination) {
|
||||||
|
//分页、排序、筛选变化时触发
|
||||||
|
this.ipagination = pagination
|
||||||
|
this.loadData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
.can-click {
|
||||||
|
cursor: pointer;
|
||||||
|
color: @primary-color;
|
||||||
|
}
|
||||||
|
.table-text {
|
||||||
|
white-space: nowrap;
|
||||||
|
word-break: break-all;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,211 @@
|
|||||||
|
<template>
|
||||||
|
<a-spin :spinning="loading">
|
||||||
|
<page-header-title :img-for-icon="IconImg" :is-level-one="false" :level-two-title="title"></page-header-title>
|
||||||
|
<a-card :bordered="false" class="description-box" ref="descriptionBox">
|
||||||
|
<a-descriptions bordered size="middle" class="description-item" :class="{'description-item-close': !section.isOpen}" v-for="section in sectionList" :key="section.id" :column="section.column">
|
||||||
|
<div slot="title" class="description-head">
|
||||||
|
<div class="description-head-title">{{ section.title }}</div>
|
||||||
|
<div class="description-head-btn" @click="section.isOpen = !section.isOpen">
|
||||||
|
<a-icon :type="section.isOpen ? 'up' : 'down'" style="margin-right: 4px;" /> {{ section.isOpen ? '收起' : '展开' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a-descriptions-item v-for="(label, index) in section.labelList" :key="label.label || index"
|
||||||
|
:span="label.span ? label.span : 1"
|
||||||
|
:class="{'descriptions-item-none': label.type === 'none'}"
|
||||||
|
:label="label.label">
|
||||||
|
<!-- 默认的直接显示 -->
|
||||||
|
<span v-if="!label.type">{{ model[label.valueField] }}</span>
|
||||||
|
<!-- 多个字段数组用函数处理好内容显示 -->
|
||||||
|
<span v-else-if="label.type === 'arr'">{{ fieldArrToContent(label.split, label.valueField) }}</span>
|
||||||
|
<!-- 图片 -->
|
||||||
|
<div v-else-if="label.type === 'img'" class="descriptions-item-content-img">
|
||||||
|
<img v-if="model[label.valueField]" :src="getImgUrl(model[label.valueField])" alt="">
|
||||||
|
<a-avatar v-else :size="90" icon="user" />
|
||||||
|
</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</a-card>
|
||||||
|
</a-spin>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import IconImg from '@assets/imgs/icon/icon_committee_detail.png'
|
||||||
|
import {getAction, getFileAccessHttpUrl} from '@api/manage'
|
||||||
|
export default {
|
||||||
|
name: 'CommitteeMemberInfoDetail',
|
||||||
|
components: {PageHeaderTitle},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
IconImg,
|
||||||
|
title: this.$route.meta.title,
|
||||||
|
loading: true,
|
||||||
|
model: {},
|
||||||
|
// 内容块列表(column列数 一行显示几个字段,配合labelList[].span占用几列使用)
|
||||||
|
sectionList: [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
title: '基本信息',
|
||||||
|
isOpen: true,
|
||||||
|
column: 2,
|
||||||
|
labelList: [
|
||||||
|
{ label: '个人照片', valueField: 'photo', type: 'img' },
|
||||||
|
{ label: '姓名', valueField: 'name' },
|
||||||
|
{ label: '', valueField: '', type: 'none' }, // 为了个人照片跨三列空出来,配合样式display:none隐藏
|
||||||
|
{ label: '性别', valueField: 'gender' },
|
||||||
|
{ label: '', valueField: '', type: 'none' }, // 为了个人照片跨三列空出来,配合样式display:none隐藏
|
||||||
|
{ label: '出生年月', valueField: 'birthDate' },
|
||||||
|
{ label: '民族', valueField: 'nation' },
|
||||||
|
{ label: '政治面貌', valueField: 'politicalLandscape' },
|
||||||
|
{ label: '身份证', valueField: 'identificationNumber' },
|
||||||
|
{ label: '委员会职务', valueField: 'positionOfStandardsCommittee' },
|
||||||
|
{ label: '委员会编号', valueField: 'committeeNumber' },
|
||||||
|
{ label: '委员会聘书编号', valueField: 'appointmentLetterNumber' },
|
||||||
|
{ label: '聘书有效期', valueField: 'validityPeriodOfEmploymentLetter' },
|
||||||
|
{ label: '加入标委会时间', valueField: 'committeeParticipationTime' },
|
||||||
|
{ label: '行政职务', valueField: 'administrativePosition' },
|
||||||
|
{ label: '从事专业', valueField: 'engagedInProfession' },
|
||||||
|
{ label: '技术职称', valueField: 'technicalTitle' },
|
||||||
|
{ label: '职称级别', valueField: 'titleLevel' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
title: '工作单位信息',
|
||||||
|
isOpen: true,
|
||||||
|
column: 2,
|
||||||
|
labelList: [
|
||||||
|
{ label: '工作单位', valueField: 'workUnit' },
|
||||||
|
{ label: '单位统一社会信用代码(或组织机构代码)', valueField: 'orgCode' },
|
||||||
|
{ label: '单位性质', valueField: 'unitNature' },
|
||||||
|
{ label: '央企级别', valueField: 'centralEnterpriseLevel' },
|
||||||
|
{ label: '所属相关方', valueField: 'affiliatedParties' },
|
||||||
|
{ label: '所在省、直辖市、自治区、特区', valueField: 'provinceOfWorkUnit' },
|
||||||
|
{ label: '通信地址', valueField: 'communicationAddress' },
|
||||||
|
{ label: '邮政编码', valueField: 'zipCode' },
|
||||||
|
{ label: '联系电话', valueField: 'contactPhoneNumber' },
|
||||||
|
{ label: '手机', valueField: 'mobilePhone' },
|
||||||
|
{ label: '传真', valueField: 'facsimile' },
|
||||||
|
{ label: '电子邮箱', valueField: 'email' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '3',
|
||||||
|
title: '毕业院校信息',
|
||||||
|
isOpen: true,
|
||||||
|
column: 2,
|
||||||
|
labelList: [
|
||||||
|
{ label: '毕业院校', valueField: 'graduationInstitution' },
|
||||||
|
{ label: '所学专业', valueField: 'majorStudied' },
|
||||||
|
{ label: '学历', valueField: 'educationalBackground' },
|
||||||
|
{ label: '学位', valueField: 'degree' },
|
||||||
|
{ label: '专业技术特长', valueField: 'professionalTechnicalExpertise' },
|
||||||
|
{ label: '会何种外语及熟练程度', valueField: ['foreignLanguage', 'foreignLanguageProficiencyLevel'], split: ' ', type: 'arr' },
|
||||||
|
{ label: '其他语言及熟练程度', valueField: 'otherLanguagesAndProficiencyLevels' },
|
||||||
|
{ label: '两院院士', valueField: 'isAcademician' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
this.model.id = this.$route.query.id
|
||||||
|
this.loadData()
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// 处理图片要跨行,组件没有提供跨行的属性
|
||||||
|
const imgEl = this.$refs.descriptionBox.$el.querySelector('.descriptions-item-content-img')
|
||||||
|
imgEl.parentNode.setAttribute('rowspan', 3)
|
||||||
|
imgEl.parentNode.previousElementSibling.setAttribute('rowspan', 3)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadData () {
|
||||||
|
this.loading = true
|
||||||
|
getAction('/PayCommitteeMemberInfo/queryById', {id: this.model.id}).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.model = res.result
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取图片url
|
||||||
|
getImgUrl (id) {
|
||||||
|
return getFileAccessHttpUrl(id)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 将字段数组转内容
|
||||||
|
* @param split - 分隔符
|
||||||
|
* @param fieldArr - 字段的数组
|
||||||
|
* @return {string} - 返回拼接的内容
|
||||||
|
*/
|
||||||
|
fieldArrToContent (split, fieldArr) {
|
||||||
|
let arr = []
|
||||||
|
fieldArr.forEach(field => {
|
||||||
|
const val = this.model[field]
|
||||||
|
if (val || val === 0) {
|
||||||
|
arr.push(val)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return arr.join(split)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.description-box {
|
||||||
|
/deep/ .ant-descriptions-view {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
// 字段列的宽度
|
||||||
|
/deep/ .ant-descriptions-item-label {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 一块的头部样式
|
||||||
|
/deep/ .ant-descriptions-title {
|
||||||
|
margin-bottom: 0;
|
||||||
|
background-color: #E6F5F5;
|
||||||
|
padding: 12px 24px;
|
||||||
|
color: @primary-color;
|
||||||
|
}
|
||||||
|
.description-head {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.description-head-btn {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 14px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.description-item {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
&.description-item-close /deep/ .ant-descriptions-view {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 没有内容的label就不显示
|
||||||
|
/deep/ .ant-descriptions-item-no-label {
|
||||||
|
display: none;
|
||||||
|
// label对应的内容单元格也不显示
|
||||||
|
& + .ant-descriptions-item-content {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.descriptions-item-content-img {
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-height: 200px;
|
||||||
|
max-width: 200px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,260 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title :img-for-icon="IconImg"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!-- 查询区域-start -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item>
|
||||||
|
<a-input placeholder="TC/SC号" v-model="queryParam.committeeNumber" :maxLength='50' allowClear></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item>
|
||||||
|
<a-select v-model="queryParam.positionOfStandardsCommittee"
|
||||||
|
show-search
|
||||||
|
allowClear
|
||||||
|
placeholder="请选择委员会职务"
|
||||||
|
:filter-option="filterOption">
|
||||||
|
<a-select-option v-for="item in committeePositionList" :key="item" :value="item">{{ item }}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item>
|
||||||
|
<a-input placeholder="请输入聘书编号" v-model="queryParam.appointmentLetterNumber" :maxLength='50' allowClear></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item>
|
||||||
|
<a-input placeholder="请输入工作单位" v-model="queryParam.workUnit" :maxLength='50' allowClear></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item>
|
||||||
|
<a-input placeholder="请输入委员名称" v-model="queryParam.name" :maxLength='50' allowClear></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<span class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" icon="search" @click="searchQuery" v-has="'committeeMemberInfo:search'">查询</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- /查询区域-end-->
|
||||||
|
|
||||||
|
<!-- 操作按钮区域-->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button type="primary" icon="export" @click="handleExportXls('委员会成员表')" v-has="'committeeMemberInfo:export'">导出</a-button>
|
||||||
|
</div>
|
||||||
|
<!-- 操作按钮区域-end-->
|
||||||
|
|
||||||
|
<!-- table表格区域-->
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:scroll="{x: 1300}"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange"
|
||||||
|
class="j-table-force-nowrap">
|
||||||
|
|
||||||
|
<!-- 跳转详情 -->
|
||||||
|
<template slot="detail" slot-scope="text, record">
|
||||||
|
<j-ellipsis :value="text" :length="20" @click="handleDetail(record)" class="can-click"></j-ellipsis>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<a-tooltip overlay-class-name="tooltip-style">
|
||||||
|
<template slot="title">{{ text || text === 0 ? text : '' }}</template>
|
||||||
|
<div class="table-text">{{ text || text === 0 ? text : '' }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!--操作-->
|
||||||
|
<span slot="action" class="action-span-cell" slot-scope="record">
|
||||||
|
<a v-has="'committeeMemberInfo:uploadPhoto'" @click="uploadPhoto(record)">上传个人头像</a>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<!-- /table表格区域-->
|
||||||
|
</a-card>
|
||||||
|
|
||||||
|
<!-- 上传图片 -->
|
||||||
|
<upload-photo-modal ref="uploadPhotoModal" @ok="handleUploadPhotoOk"></upload-photo-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import IconImg from '@/assets/imgs/icon/icon_organizational_manage.png'
|
||||||
|
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||||
|
import UploadPhotoModal from '@views/organizationalManage/committeeMemberInfo/modules/UploadPhotoModal'
|
||||||
|
export default {
|
||||||
|
name: 'CommitteeMemberInfoList',
|
||||||
|
components: {UploadPhotoModal, PageHeaderTitle},
|
||||||
|
mixins: [JeroListMixin],
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
disableMixinCreated: true,
|
||||||
|
isorter: null,
|
||||||
|
IconImg,
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 5 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 10 }
|
||||||
|
},
|
||||||
|
// 委员会职务下拉
|
||||||
|
committeePositionList: [
|
||||||
|
'主任委员',
|
||||||
|
'副主任委员',
|
||||||
|
'副主任委员兼秘书长',
|
||||||
|
'秘书长',
|
||||||
|
'副秘书长',
|
||||||
|
'委员',
|
||||||
|
'顾问',
|
||||||
|
],
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'TC号',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'committeeNumber',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '委员姓名',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'name',
|
||||||
|
scopedSlots: { customRender: 'detail' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'gender',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '委员会职务',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'positionOfStandardsCommittee',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '工作单位',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'workUnit',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '单位职务',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'administrativePosition',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '聘书编号',
|
||||||
|
align: 'center',
|
||||||
|
width: 140,
|
||||||
|
dataIndex: 'appointmentLetterNumber',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: '',
|
||||||
|
align: 'center',
|
||||||
|
width: 100,
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
},
|
||||||
|
],
|
||||||
|
url: {
|
||||||
|
list: '/PayCommitteeMemberInfo/page',
|
||||||
|
exportXlsUrl: '/PayCommitteeMemberInfo/exportXls'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.$set(this.queryParam, 'committeeNumber', this.$route.query.committeeNumber)
|
||||||
|
this.searchQuery()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 跳转详情
|
||||||
|
handleDetail (record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/organizationalManage/committeeMemberDetail',
|
||||||
|
query: {
|
||||||
|
id: record.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 上传个人头像
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
uploadPhoto (record) {
|
||||||
|
this.$refs.uploadPhotoModal.edit(record)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 上传个人头像完成
|
||||||
|
*/
|
||||||
|
handleUploadPhotoOk () {
|
||||||
|
this.loadData()
|
||||||
|
},
|
||||||
|
// 下拉框的搜索
|
||||||
|
filterOption(input, option) {
|
||||||
|
return (
|
||||||
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
|
)
|
||||||
|
},
|
||||||
|
handleTableChange(pagination) {
|
||||||
|
//分页、排序、筛选变化时触发
|
||||||
|
this.ipagination = pagination
|
||||||
|
this.loadData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
.can-click {
|
||||||
|
cursor: pointer;
|
||||||
|
color: @primary-color;
|
||||||
|
}
|
||||||
|
.table-text {
|
||||||
|
white-space: nowrap;
|
||||||
|
word-break: break-all;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
switchFullscreen
|
||||||
|
@ok="handleOk"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<a-form :form="form">
|
||||||
|
<a-form-item label="个人照片" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-image-upload v-decorator="['photo', validatorRules.photo]" :return-id="true"></j-image-upload>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import JImageUpload from '@comp/jero/JImageUpload'
|
||||||
|
import pick from 'lodash.pick'
|
||||||
|
import {postAction} from '@api/manage'
|
||||||
|
export default {
|
||||||
|
name: 'UploadPhotoModal',
|
||||||
|
components: {JImageUpload},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
title: '操作',
|
||||||
|
width: 600,
|
||||||
|
visible: false,
|
||||||
|
model: {},
|
||||||
|
labelCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 5}
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 10}
|
||||||
|
},
|
||||||
|
confirmLoading: false,
|
||||||
|
validatorRules: {
|
||||||
|
photo: {
|
||||||
|
rules: [{required: true, message: '请上传个人照片'}],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
edit: '/PayCommitteeMemberInfo/uploadPhoto'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
add() {
|
||||||
|
this.edit({})
|
||||||
|
},
|
||||||
|
edit(record) {
|
||||||
|
this.model = Object.assign({}, record)
|
||||||
|
this.visible = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(this.model, 'photo'))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.form.resetFields()
|
||||||
|
this.$emit('close')
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
handleOk() {
|
||||||
|
const that = this
|
||||||
|
// 触发表单验证
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
that.confirmLoading = true
|
||||||
|
const formData = Object.assign({ id: this.model.id }, values)
|
||||||
|
console.log('表单提交数据', formData)
|
||||||
|
postAction(this.url.edit, formData).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
that.$message.success(res.message)
|
||||||
|
that.$emit('ok')
|
||||||
|
that.close()
|
||||||
|
} else {
|
||||||
|
that.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
that.confirmLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -86,11 +86,14 @@
|
|||||||
bordered
|
bordered
|
||||||
rowKey="id"
|
rowKey="id"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
|
:scroll="{x: 1300}"
|
||||||
:dataSource="dataSource"
|
:dataSource="dataSource"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
@change="handleTableChange">
|
@change="handleTableChange"
|
||||||
|
:class="dataSource.length === 0 ? 'show-scroll' : ''"
|
||||||
|
class="j-table-force-nowrap main-table">
|
||||||
|
|
||||||
<!-- 项目名称-->
|
<!-- 项目名称-->
|
||||||
<template slot="projectName" slot-scope="text, record">
|
<template slot="projectName" slot-scope="text, record">
|
||||||
@@ -135,8 +138,38 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||||
|
<!-- <a @click="incomePayment(record)" :disabled="Number(record.receivableAmount) === 0"-->
|
||||||
|
<!-- v-has="'packProject:incomePayment'">来款</a>-->
|
||||||
<a @click="cancelPack(record.id)" v-has="'packProject:cancelPack'">取消打包</a>
|
<a @click="cancelPack(record.id)" v-has="'packProject:cancelPack'">取消打包</a>
|
||||||
|
<!-- <a @click="invoicing(record)" :disabled="record.needInvoice === 0 || Number(record.receivableAmount) === 0"-->
|
||||||
|
<!-- v-has="'packProject:invoicing'">开票</a>-->
|
||||||
|
<!-- <a v-has="'packProject:confirmPayment'" @click="confirmPayment(record)" :disabled="Number(record.receivableAmount) === 0">确认收入</a>-->
|
||||||
|
<!--工作组项目、普通项目、资料网员项目可以修改发票信息-->
|
||||||
|
<!-- <a v-has="'packProject:changeInvoiceInfo'" @click="changeInvoiceInfo(record)" :disabled="Number(record.projectType) !== ProjectTypeEnums.GENERAL_PRO.value && Number(record.projectType) !== ProjectTypeEnums.GROUP_PRO.value && Number(record.projectType) !== ProjectTypeEnums.MEMBER_PRO.value">开票类型</a>-->
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
<template slot="footer" v-if="dataSource.length > 0">
|
||||||
|
<a-table
|
||||||
|
size="middle"
|
||||||
|
ref="footTable"
|
||||||
|
:rowKey="record=>record.id"
|
||||||
|
:columns="columnsFooter"
|
||||||
|
:scroll="{x: 1300}"
|
||||||
|
:dataSource="footerDataSource"
|
||||||
|
:showHeader="false"
|
||||||
|
:pagination="false"
|
||||||
|
class="j-table-force-nowrap footer-table">
|
||||||
|
|
||||||
|
<template slot="allMoney" slot-scope="text">
|
||||||
|
<a-tooltip>
|
||||||
|
<template slot="title">{{ formatMoney(text+'') }}</template>
|
||||||
|
<div class="table-text">{{ formatMoney(text+'') }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</a-table>
|
||||||
|
</template>
|
||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
<!-- /项目信息-->
|
<!-- /项目信息-->
|
||||||
@@ -237,7 +270,7 @@ const defaultTableColumns = [
|
|||||||
{
|
{
|
||||||
title: '打包项目名称',
|
title: '打包项目名称',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 200,
|
// width: 300,
|
||||||
dataIndex: 'chargeProject',
|
dataIndex: 'chargeProject',
|
||||||
scopedSlots: { customRender: 'projectName' }
|
scopedSlots: { customRender: 'projectName' }
|
||||||
}, {
|
}, {
|
||||||
@@ -247,21 +280,27 @@ const defaultTableColumns = [
|
|||||||
dataIndex: 'principalName',
|
dataIndex: 'principalName',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
}, {
|
}, {
|
||||||
title: '待确收金额',
|
title: '排序',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 100,
|
width: 100,
|
||||||
|
dataIndex: 'sortNo',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
}, {
|
||||||
|
title: '待确收金额',
|
||||||
|
align: 'center',
|
||||||
|
width: 200,
|
||||||
dataIndex: 'receivableAmount',
|
dataIndex: 'receivableAmount',
|
||||||
scopedSlots: { customRender: 'allMoney' }
|
scopedSlots: { customRender: 'allMoney' }
|
||||||
}, {
|
}, {
|
||||||
title: '企业联系人',
|
title: '企业联系人',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 100,
|
width: 140,
|
||||||
dataIndex: 'contactsTemporaryName',
|
dataIndex: 'contactsTemporaryName',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
}, {
|
}, {
|
||||||
title: '联系人电话',
|
title: '联系人电话',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 100,
|
width: 120,
|
||||||
dataIndex: 'phone',
|
dataIndex: 'phone',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
}, {
|
}, {
|
||||||
@@ -274,12 +313,27 @@ const defaultTableColumns = [
|
|||||||
title: '操作',
|
title: '操作',
|
||||||
dataIndex: 'action',
|
dataIndex: 'action',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
// fixed: 'right',
|
fixed: 'right',
|
||||||
width: 100,
|
width: 100,
|
||||||
scopedSlots: { customRender: 'action' }
|
scopedSlots: { customRender: 'action' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const firstColumnFooter = [
|
||||||
|
{
|
||||||
|
title: '多选',
|
||||||
|
dataIndex: 'selection',
|
||||||
|
align: 'center',
|
||||||
|
width: 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: 'title',
|
||||||
|
align: 'center',
|
||||||
|
width: 60
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'PackProjectMaintenance',
|
name: 'PackProjectMaintenance',
|
||||||
components: {
|
components: {
|
||||||
@@ -316,7 +370,7 @@ export default {
|
|||||||
dataIndex: 'email'
|
dataIndex: 'email'
|
||||||
}, {
|
}, {
|
||||||
title: '打包费用总计',
|
title: '打包费用总计',
|
||||||
dataIndex: 'packChargeTotal'
|
dataIndex: 'receivableAmount'
|
||||||
}, {
|
}, {
|
||||||
title: '实际到账费用',
|
title: '实际到账费用',
|
||||||
dataIndex: 'receiptExpense'
|
dataIndex: 'receiptExpense'
|
||||||
@@ -342,6 +396,7 @@ export default {
|
|||||||
sm: { span: 10 }
|
sm: { span: 10 }
|
||||||
},
|
},
|
||||||
columns: [firstColumnTop, ...defaultTableColumns],
|
columns: [firstColumnTop, ...defaultTableColumns],
|
||||||
|
columnsFooter: [...firstColumnFooter, ...defaultTableColumns],
|
||||||
disableMixinCreated: true,
|
disableMixinCreated: true,
|
||||||
selectPackProjectVisible: false,
|
selectPackProjectVisible: false,
|
||||||
selectedProject: [], // 选中的项目
|
selectedProject: [], // 选中的项目
|
||||||
@@ -358,7 +413,8 @@ export default {
|
|||||||
url: {
|
url: {
|
||||||
list: '/pack/payPackCompanyProject/listAll',
|
list: '/pack/payPackCompanyProject/listAll',
|
||||||
exportXlsUrl: '/pack/payPackCompanyProject/exportXls'
|
exportXlsUrl: '/pack/payPackCompanyProject/exportXls'
|
||||||
}
|
},
|
||||||
|
footerDataSource: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -589,6 +645,25 @@ export default {
|
|||||||
this.$refs.changeInvoiceInfo.open(record)
|
this.$refs.changeInvoiceInfo.open(record)
|
||||||
|
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* 同步表与footer滚动,保留底部滚动条
|
||||||
|
*/
|
||||||
|
setScroll() {
|
||||||
|
if (this.dataSource.length === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let dom = this.$refs.footTable.$el.querySelectorAll('.ant-table-body')[0]
|
||||||
|
dom.addEventListener(
|
||||||
|
'scroll',
|
||||||
|
() => {
|
||||||
|
this.$refs.table.$el.querySelectorAll(
|
||||||
|
'.ant-table-body'
|
||||||
|
)[0].scrollLeft = dom.scrollLeft
|
||||||
|
},
|
||||||
|
true
|
||||||
|
)
|
||||||
|
this.$forceUpdate()
|
||||||
|
},
|
||||||
// 重写加载的方法
|
// 重写加载的方法
|
||||||
loadData(arg) {
|
loadData(arg) {
|
||||||
if (!this.url.list) {
|
if (!this.url.list) {
|
||||||
@@ -607,6 +682,13 @@ export default {
|
|||||||
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||||
this.dataSource = pageListObj.list
|
this.dataSource = pageListObj.list
|
||||||
|
|
||||||
|
let obj = {
|
||||||
|
id: '1',
|
||||||
|
title: '总计',
|
||||||
|
receivableAmount: pageListObj.sumOfReceivableAmount || '0.00' + '',
|
||||||
|
paidAmount: pageListObj.sumOfPaidAmount || '0.00' + ''
|
||||||
|
}
|
||||||
|
this.footerDataSource = [obj]
|
||||||
if (pageListObj.total) {
|
if (pageListObj.total) {
|
||||||
this.ipagination.total = pageListObj.total
|
this.ipagination.total = pageListObj.total
|
||||||
//清空列表选中
|
//清空列表选中
|
||||||
@@ -616,6 +698,11 @@ export default {
|
|||||||
}
|
}
|
||||||
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||||
}
|
}
|
||||||
|
if (this.dataSource.length > 0) {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.setScroll()
|
||||||
|
})
|
||||||
|
}
|
||||||
if (res.code === 510) {
|
if (res.code === 510) {
|
||||||
this.$message.warning(res.message)
|
this.$message.warning(res.message)
|
||||||
}
|
}
|
||||||
@@ -625,6 +712,9 @@ export default {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.setScroll()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ export default {
|
|||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
invoiceFileId: {
|
invoiceFileId: {
|
||||||
rules: [{ required: true, message: '请上传发票附件' }],
|
rules: [{ required: false, message: '请上传发票附件' }],
|
||||||
validateTrigger: 'change'
|
validateTrigger: 'change'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -146,11 +146,11 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
<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-date placeholder="请选择预估到账日期"
|
<j-month-date placeholder="请选择预估到账日期"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||||
:trigger-change="true"
|
:trigger-change="true"
|
||||||
date-format="YYYY-MM-DD"
|
date-format="YYYY-MM"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -248,12 +248,12 @@ import { addZero } from '../../../utils/util'
|
|||||||
import SelectPrincipal from '@comp/company/SelectPrincipal.vue'
|
import SelectPrincipal from '@comp/company/SelectPrincipal.vue'
|
||||||
import SelectRevenueContract from '@comp/tools/SelectRevenueContract'
|
import SelectRevenueContract from '@comp/tools/SelectRevenueContract'
|
||||||
import JUpload from '@comp/jero/JUpload'
|
import JUpload from '@comp/jero/JUpload'
|
||||||
import JDate from '@comp/tools/JDate'
|
import JMonthDate from '@comp/tools/JMonthDate'
|
||||||
import {checkAssociatedProject} from '@/utils/projectCheck'
|
import {checkAssociatedProject} from '@/utils/projectCheck'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'PackCompanyModule',
|
name: 'PackCompanyModule',
|
||||||
components: {JDate, JUpload, SelectRevenueContract, CompanySelect, SelectContacts, JYearDate, SelectPrincipal },
|
components: {JMonthDate, JUpload, SelectRevenueContract, CompanySelect, SelectContacts, JYearDate, SelectPrincipal },
|
||||||
props: {
|
props: {
|
||||||
// 合同号是否可编辑
|
// 合同号是否可编辑
|
||||||
isContractNumDisabled: {
|
isContractNumDisabled: {
|
||||||
|
|||||||
@@ -168,6 +168,12 @@ export default {
|
|||||||
width: 280,
|
width: 280,
|
||||||
dataIndex: 'principalName',
|
dataIndex: 'principalName',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
|
}, {
|
||||||
|
title: '排序',
|
||||||
|
align: 'center',
|
||||||
|
width: 100,
|
||||||
|
dataIndex: 'sortNo',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
},{
|
},{
|
||||||
title: '企业联系人',
|
title: '企业联系人',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
|||||||
@@ -98,8 +98,8 @@
|
|||||||
<!-- 操作按钮区域 -->
|
<!-- 操作按钮区域 -->
|
||||||
<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="'allmeeting:export'">导出
|
<a-button type="primary" icon="download" @click="handleExportXls('会议汇总')" v-has="'allmeeting:export'">导出</a-button>
|
||||||
</a-button>
|
<a-button type="primary" @click="handleEnterRecommendHotelPage" v-has="'allmeeting:recommendHotel'">会议酒店推荐</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>-->
|
||||||
<!-- <a-button @click="releaseMeeing" type="primary" v-has="'otherMeeting:release'">发布</a-button>-->
|
<!-- <a-button @click="releaseMeeing" type="primary" v-has="'otherMeeting:release'">发布</a-button>-->
|
||||||
</div>
|
</div>
|
||||||
@@ -151,6 +151,7 @@ import '@/assets/less/TableExpand.less'
|
|||||||
import JDate from '@comp/tools/JDate'
|
import JDate from '@comp/tools/JDate'
|
||||||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'AllMeetingList',
|
name: 'AllMeetingList',
|
||||||
@@ -296,6 +297,10 @@ export default {
|
|||||||
pathMap.set('5','/incomePayments/meetManage/AttendanceCommitteeMeeting')
|
pathMap.set('5','/incomePayments/meetManage/AttendanceCommitteeMeeting')
|
||||||
pathMap.set('6','/incomePayments/meetManage/AttendanceCouncilMeeting')
|
pathMap.set('6','/incomePayments/meetManage/AttendanceCouncilMeeting')
|
||||||
pathMap.set('7','/incomePayments/meetManage/AttendanceDraftGroupMeeting')
|
pathMap.set('7','/incomePayments/meetManage/AttendanceDraftGroupMeeting')
|
||||||
|
// 海外会议
|
||||||
|
pathMap.set(MeetingTypeEnums.overseas.value,'/incomePayments/meetManage/AttendanceOverseasMeeting')
|
||||||
|
// 功能安全中心会议
|
||||||
|
pathMap.set(MeetingTypeEnums.safetyCenter.value,'/incomePayments/meetManage/AttendanceFunctionalSafetyCenter')
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: pathMap.get(record.meetingType+''),
|
path: pathMap.get(record.meetingType+''),
|
||||||
query: {
|
query: {
|
||||||
@@ -330,6 +335,12 @@ export default {
|
|||||||
}
|
}
|
||||||
return startValue.valueOf() > endValue.valueOf()
|
return startValue.valueOf() > endValue.valueOf()
|
||||||
},
|
},
|
||||||
|
// 进入会议酒店推荐页面
|
||||||
|
handleEnterRecommendHotelPage() {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/projectManagement/allMeetingList/RecommendHotelPage'
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -144,7 +144,7 @@
|
|||||||
<a @click="handleEdit(record)" v-has:[authorCode.edit]="'committeeMeeting:edit'">编辑</a>
|
<a @click="handleEdit(record)" v-has:[authorCode.edit]="'committeeMeeting:edit'">编辑</a>
|
||||||
<a @click="handleDelete(record.id)" v-has:[authorCode.delete]="'committeeMeeting:delete'">删除</a>
|
<a @click="handleDelete(record.id)" v-has:[authorCode.delete]="'committeeMeeting:delete'">删除</a>
|
||||||
<!-- 标协会议(标准宣贯、学习培训 且需要问题征集)的时候 有问题征集 功能-->
|
<!-- 标协会议(标准宣贯、学习培训 且需要问题征集)的时候 有问题征集 功能-->
|
||||||
<a v-if="meetingType === '2'" v-show="(record.tbMeetingType === 1 || record.tbMeetingType === 2) && Number(record.isAddQuestion)" @click="problemCollectionDetail(record)" v-has="'standardsMeeting:problemCollection'">问题征集</a>
|
<a v-if="meetingType === '2'" v-show="(record.tbMeetingType === 1 || record.tbMeetingType === 2) && Number(record.isAddQuestion)" @click="problemCollectionDetail(record)" v-has="'standardsMeeting:problemCollection:button'">问题征集</a>
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -42,14 +42,22 @@
|
|||||||
<j-year-date style="width:100%" placeholder="请选择运行年份" v-model="queryParam.year"></j-year-date>
|
<j-year-date style="width:100%" placeholder="请选择运行年份" v-model="queryParam.year"></j-year-date>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-range-picker
|
<j-month-date placeholder="请选择开始日期"
|
||||||
style="width: 100%"
|
class="query-group-cust"
|
||||||
v-model="queryParam.estimatedArrivalDate"
|
v-model="queryParam[rangeMonthKey.start]"
|
||||||
format="YYYY-MM-DD"
|
:trigger-change="true"
|
||||||
:placeholder="['开始时间', '结束时间']"
|
date-format="YYYY-MM"
|
||||||
@change="onDateChange"
|
:disabled-date="disabledStartMonth"
|
||||||
|
/>
|
||||||
|
<span class="query-group-split-cust"></span>
|
||||||
|
<j-month-date placeholder="请选择结束日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam[rangeMonthKey.end]"
|
||||||
|
:trigger-change="true"
|
||||||
|
date-format="YYYY-MM"
|
||||||
|
:disabled-date="disabledEndMonth"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -138,6 +146,7 @@
|
|||||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||||
<!--如果是打包不能编辑-->
|
<!--如果是打包不能编辑-->
|
||||||
<a @click="handleEdit(record)" v-has="'generalProject:edit'" :disabled="record.pack === 1">编辑</a>
|
<a @click="handleEdit(record)" v-has="'generalProject:edit'" :disabled="record.pack === 1">编辑</a>
|
||||||
|
<a @click="handleCopy(record)" v-has="'generalProject:copy'">复制</a>
|
||||||
<a @click="handleDelete(record.id)" v-has="'generalProject:delete'">删除</a>
|
<a @click="handleDelete(record.id)" v-has="'generalProject:delete'">删除</a>
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
@@ -159,11 +168,13 @@ import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
|||||||
import IconProjectManagement from '@/assets/imgs/icon/icon_project_management.png'
|
import IconProjectManagement from '@/assets/imgs/icon/icon_project_management.png'
|
||||||
import { formatMoney } from '../../utils/formatMoney'
|
import { formatMoney } from '../../utils/formatMoney'
|
||||||
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
||||||
|
import { MonthRangeMixin } from '../../mixins/MonthRangeMixins'
|
||||||
|
import JMonthDate from '../../components/tools/JMonthDate'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'GeneralProjectManagement',
|
name: 'GeneralProjectManagement',
|
||||||
components: { JYearDate, GeneralProjectModule, SelectPrincipal, ProjectDetailModal, StatusSlot, PageHeaderTitle },
|
components: { JYearDate, GeneralProjectModule, SelectPrincipal, ProjectDetailModal, StatusSlot, PageHeaderTitle, JMonthDate },
|
||||||
mixins: [JeroListMixin],
|
mixins: [JeroListMixin, MonthRangeMixin],
|
||||||
computed: {
|
computed: {
|
||||||
importExcelUrl: function () {
|
importExcelUrl: function () {
|
||||||
return `${ window._CONFIG['domianURL'] }/${ this.url.importExcelUrl }`
|
return `${ window._CONFIG['domianURL'] }/${ this.url.importExcelUrl }`
|
||||||
@@ -312,10 +323,12 @@ export default {
|
|||||||
this.$refs.basicInfo = basicInfo
|
this.$refs.basicInfo = basicInfo
|
||||||
this.$refs.projectDetail.open(record)
|
this.$refs.projectDetail.open(record)
|
||||||
},
|
},
|
||||||
onDateChange: function (value, dateString) {
|
// 复制功能
|
||||||
this.queryParam.estimatedArrivalStartDate = dateString[0]
|
handleCopy: function (record) {
|
||||||
this.queryParam.estimatedArrivalEndDate = dateString[1]
|
this.$refs.modalForm.copy(record)
|
||||||
}
|
this.$refs.modalForm.title = '复制'
|
||||||
|
this.$refs.modalForm.disableSubmit = false
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,328 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title :img-for-icon="IconImg"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!-- 查询区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="会议名称">
|
||||||
|
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||||
|
<a-form-item label="会议时间">
|
||||||
|
<j-date
|
||||||
|
placeholder="请选择开始日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam.meetingStartTime"
|
||||||
|
:disabled-date="disabledStartDate">
|
||||||
|
</j-date>
|
||||||
|
<span class="query-group-split-cust"></span>
|
||||||
|
<j-date
|
||||||
|
placeholder="请选择结束日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam.meetingEndTime"
|
||||||
|
:disabled-date="disabledEndDate">
|
||||||
|
</j-date>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="年份">
|
||||||
|
<j-year-date style="width: 100%" placeholder="请选择年份" v-model="queryParam.particularYear"></j-year-date>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||||
|
<a-form-item label="创建时间">
|
||||||
|
<j-date
|
||||||
|
placeholder="请选择开始日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam.createTime_begin"
|
||||||
|
:disabled-date="disabledStartCreateDate">
|
||||||
|
</j-date>
|
||||||
|
<span class="query-group-split-cust"></span>
|
||||||
|
<j-date
|
||||||
|
placeholder="请选择结束日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam.createTime_end"
|
||||||
|
:disabled-date="disabledEndCreateDate">
|
||||||
|
</j-date>
|
||||||
|
</a-form-item>
|
||||||
|
</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="'overseasMeeting:search'">查询</a-button>
|
||||||
|
<a-button @click="searchReset" icon="reload" class="reset-button" style="margin-left: 8px">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- 查询区域-END -->
|
||||||
|
|
||||||
|
<!-- 操作按钮区域 -->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button @click="handleAdd" type="primary" icon="plus" v-has="'overseasMeeting:add'">新增</a-button>
|
||||||
|
<a-button type="primary" icon="download" @click="handleExportXls('海外会议')" v-has="'overseasMeeting:export'">导出
|
||||||
|
</a-button>
|
||||||
|
<a-button type="danger" icon="delete" @click="batchDel" v-has="'overseasMeeting:batchDel'">批量删除</a-button>
|
||||||
|
<!--<a-button @click="releaseMeeing" type="primary" v-has="'overseasMeeting:publish'">发布</a-button>-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- table区域-begin -->
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:scroll="{x:true}"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
class="j-table-force-nowrap"
|
||||||
|
@change="handleTableChange">
|
||||||
|
|
||||||
|
<template slot="htmlSlot" slot-scope="text,record">
|
||||||
|
<j-ellipsis v-if="text" class="primary-color" @click="toAttendance(record)" :value="text"
|
||||||
|
:length="20"></j-ellipsis>
|
||||||
|
<span v-else></span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<j-ellipsis v-if="text" :value="text" :length="20"></j-ellipsis>
|
||||||
|
<span v-else></span>
|
||||||
|
</template>
|
||||||
|
<span slot="action" slot-scope="text, record" class="action-span-cell">
|
||||||
|
<!--会议需要发布才能让企业人员看见 已发布状态禁用按钮 -->
|
||||||
|
<!--调整为页面级按钮-->
|
||||||
|
<!-- <a @click="releaseMeeing(record)" v-has=" '' " :disabled="record.isRelease === 1 ">发布</a>-->
|
||||||
|
<a @click="handleUploadFile(record,'1')" v-has="'overseasMeeting:uploadCouncil'">会议纪要</a>
|
||||||
|
<a @click="handleUploadFile(record,'2')" v-has="'overseasMeeting:upload'">上传文件</a>
|
||||||
|
<!-- <a @click="handleSignup(record)">报名信息</a>-->
|
||||||
|
<a @click="handleEdit(record)" v-has="'overseasMeeting:edit'">编辑</a>
|
||||||
|
<a @click="handleDelete(record.id)" v-has="'overseasMeeting:delete'">删除</a>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<!-- <meet-modal ref="modalForm" @ok="modalFormOk"></meet-modal>-->
|
||||||
|
<upload-meet-file-modal ref="modalForm" @ok="modalFormOk"></upload-meet-file-modal>
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {mixinDevice} from '@/utils/mixin'
|
||||||
|
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||||
|
import {RangeDateMixin} from '@/mixins/RangeDateMixin'
|
||||||
|
import JYearDate from '@comp/jero/JYearDate'
|
||||||
|
import UploadMeetFileModal from '@views/incomePayments/meetManage/modules/UploadMeetFileModal'
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import IconImg from '@/assets/imgs/icon/icon_other_meeting.png'
|
||||||
|
import '@/assets/less/TableExpand.less'
|
||||||
|
import JDate from '@comp/tools/JDate'
|
||||||
|
import moment from 'moment'
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'OverseasMeeting',
|
||||||
|
mixins: [JeroListMixin, mixinDevice, RangeDateMixin],
|
||||||
|
components: {
|
||||||
|
JYearDate,
|
||||||
|
UploadMeetFileModal,
|
||||||
|
PageHeaderTitle,
|
||||||
|
JDate,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
description: '海外会议',
|
||||||
|
IconImg,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '会议名称',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'meetingName',
|
||||||
|
scopedSlots: {customRender: 'htmlSlot'},
|
||||||
|
width: 220,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '会议类型',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'meetingType_dictText',
|
||||||
|
width: 120,
|
||||||
|
scopedSlots: {customRender: 'text'}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '负责人',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'directorName',
|
||||||
|
width: 160,
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '召开时间',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'startTime',
|
||||||
|
width: 220,
|
||||||
|
customRender: (text, record) => (
|
||||||
|
<j-ellipsis value={record.startTime + '~' + record.endTime} length={20}></j-ellipsis>)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '召开地点',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'venue',
|
||||||
|
width: 240,
|
||||||
|
customRender: (text, record) => (<j-ellipsis value={text + '/' + record.address} length={20}></j-ellipsis>)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '年份',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'particularYear',
|
||||||
|
width: 120,
|
||||||
|
scopedSlots: {customRender: 'text'}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'createTime',
|
||||||
|
scopedSlots: {customRender: 'text'}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
width: 180,
|
||||||
|
scopedSlots: {customRender: 'action'}
|
||||||
|
},
|
||||||
|
],
|
||||||
|
dateKeyObj: {
|
||||||
|
beginKey: 'meetingStartTime',
|
||||||
|
endKey: 'meetingEndTime'
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
list: '/meeting/overseas/page',
|
||||||
|
delete: '/meeting/overseas/delete',
|
||||||
|
deleteBatch: '/meeting/overseas/deleteBatch',
|
||||||
|
exportXlsUrl: '/meeting/overseas/exportXls',
|
||||||
|
releaseMeeingUrl: '/meeting/overseas/publishReminder'// 发布会议的接口
|
||||||
|
},
|
||||||
|
disableMixinCreated: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.filters.meetingType = MeetingTypeEnums.overseas.value
|
||||||
|
this.loadData(1)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/*
|
||||||
|
* 上传会议文件
|
||||||
|
* */
|
||||||
|
handleUploadFile(record, type) {
|
||||||
|
this.$refs.modalForm.edit(record, type)
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 报名信息
|
||||||
|
* */
|
||||||
|
handleSignup() {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/incomePayments/meetManage/SignUpInfoList'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 修改查询条件
|
||||||
|
* */
|
||||||
|
searchQuery() {
|
||||||
|
// this.queryParam.meetingStartTime = this.queryParam.meetingStartTime ? this.queryParam.meetingStartTime + ' ' + '00:00:00' : undefined
|
||||||
|
// this.queryParam.meetingEndTime = this.queryParam.meetingEndTime ? this.queryParam.meetingEndTime + ' ' + '23:59:59' : undefined
|
||||||
|
// this.queryParam.createTime_begin = this.queryParam.createTime_begin ? this.queryParam.createTime_begin + ' ' + '00:00:00' : undefined
|
||||||
|
// this.queryParam.createTime_end = this.queryParam.createTime_end ? this.queryParam.createTime_end + ' ' + '23:59:59' : undefined
|
||||||
|
this.lastQueryParam = {...this.queryParam}
|
||||||
|
if(this.lastQueryParam.meetingStartTime) this.lastQueryParam.meetingStartTime = this.lastQueryParam.meetingStartTime + ' ' + '00:00:00'
|
||||||
|
if(this.lastQueryParam.meetingEndTime) this.lastQueryParam.meetingEndTime = this.lastQueryParam.meetingEndTime + ' ' + '23:59:59'
|
||||||
|
if(this.lastQueryParam.createTime_begin) this.lastQueryParam.createTime_begin = this.lastQueryParam.createTime_begin + ' ' + '00:00:00'
|
||||||
|
if(this.lastQueryParam.createTime_end) this.lastQueryParam.createTime_end = this.lastQueryParam.createTime_end + ' ' + '23:59:59'
|
||||||
|
this.loadData(1)
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 编辑
|
||||||
|
* /incomePayments/meetManage/AddOrDetailMeet
|
||||||
|
* */
|
||||||
|
handleEdit(record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/incomePayments/meetManage/AddOrDetailMeet',
|
||||||
|
query: {
|
||||||
|
id: record.id,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 新增
|
||||||
|
* */
|
||||||
|
handleAdd() {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/incomePayments/meetManage/AddOrDetailMeet',
|
||||||
|
query: {
|
||||||
|
meetingType: MeetingTypeEnums.overseas.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 参会情况
|
||||||
|
* */
|
||||||
|
toAttendance(record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/incomePayments/meetManage/AttendanceOverseasMeeting',
|
||||||
|
query: {
|
||||||
|
id: record.id,
|
||||||
|
meetingName: record.meetingName,
|
||||||
|
meetingType: MeetingTypeEnums.overseas.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 创建时间开始禁用
|
||||||
|
* */
|
||||||
|
disabledStartCreateDate(startValue) {
|
||||||
|
const endValue = this.queryParam.createTime_end && moment(this.queryParam.createTime_end, this.rangeDateFormat.end)
|
||||||
|
if (!startValue || !endValue) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return startValue.valueOf() > endValue.valueOf()
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 创建时间结束禁用
|
||||||
|
* */
|
||||||
|
disabledEndCreateDate(endValue) {
|
||||||
|
const startValue = this.queryParam.createTime_begin && moment(this.queryParam.createTime_begin, this.rangeDateFormat.begin)
|
||||||
|
if (!endValue || !startValue) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return startValue.valueOf() > endValue.valueOf()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
.primary-color {
|
||||||
|
color: #069f99;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,228 @@
|
|||||||
|
<!--会议酒店推荐-->
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page-header-title :img-for-icon="IconImg"></page-header-title>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!-- 查询区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="推荐人">
|
||||||
|
<a-input placeholder="请输入推荐人" v-model="queryParam.recommendPeople" :maxLength='50'></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="酒店名称">
|
||||||
|
<a-input placeholder="请输入酒店名称" v-model="queryParam.hotelName" ></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="所在省份">
|
||||||
|
<a-input placeholder="请输入所在省份" v-model="queryParam.hotelProvince" ></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="所在城市">
|
||||||
|
<a-input placeholder="请输入所在城市" v-model="queryParam.hotelCity" ></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<!--是否-->
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="是否举办过标准院会议">
|
||||||
|
<j-dict-select-tag style="width: 100%"
|
||||||
|
dict-code="yn"
|
||||||
|
v-model="queryParam.isHold"
|
||||||
|
placeholder="请选择是否举办过标准院会议"></j-dict-select-tag>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="曾举办会议类型">
|
||||||
|
<a-input placeholder="请输入曾举办会议类型" v-model="queryParam.meetingType" ></a-input>
|
||||||
|
<!--<j-dict-select-tag style="width: 100%"-->
|
||||||
|
<!-- dict-code="meeting_type"-->
|
||||||
|
<!-- v-model="queryParam.meetingType"-->
|
||||||
|
<!-- placeholder="请选择曾举办会议类型"></j-dict-select-tag>-->
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="酒店联系方式">
|
||||||
|
<a-input placeholder="请输入酒店联系方式" v-model="queryParam.contact" ></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="备注">
|
||||||
|
<a-input placeholder="请输入备注" v-model="queryParam.remark" ></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</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="'recommendHotelPage:list'">查询</a-button>
|
||||||
|
<a-button @click="searchReset" icon="reload" class="reset-button" style="margin-left: 8px">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- 查询区域-END -->
|
||||||
|
<!-- 操作按钮区域 -->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"
|
||||||
|
@change="handleImportExcel" v-has="'recommendHotelPage:import'">
|
||||||
|
<a-button type="primary" icon="import">导入</a-button>
|
||||||
|
</a-upload>
|
||||||
|
<a-button type="primary" icon="download" @click="downTemplate('会议酒店推荐导入模板')" v-has="'recommendHotelPage:downTemplate'">
|
||||||
|
下载模板
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:scroll="{x:1600}"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
|
||||||
|
class="j-table-force-nowrap"
|
||||||
|
@change="handleTableChange">
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<a-tooltip>
|
||||||
|
<template slot="title">{{ text }}</template>
|
||||||
|
<div class="table-text">{{ text }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||||
|
<a @click="handleDetail(record)">查看</a>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<recommend-hotel-modal ref="modal"></recommend-hotel-modal>
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||||
|
import IconImg from '@/assets/imgs/icon/icon_other_meeting.png'
|
||||||
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
|
import RecommendHotelModal from './modules/RecommendHotelModal'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'RecommendHotelPage',
|
||||||
|
mixins: [JeroListMixin],
|
||||||
|
components: {
|
||||||
|
PageHeaderTitle,
|
||||||
|
RecommendHotelModal
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
description: '会议酒店推荐',
|
||||||
|
IconImg,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '推荐人',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'recommendPeople',
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
width: 80,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '酒店名称',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'hotelName',
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
width: 100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所在省份',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'hotelProvince',
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
width: 80,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所在城市',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'hotelCity',
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
width: 80,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '是否举办过标准院会议',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'isHold_dictText',
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
width: 100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '曾举办会议类型',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'meetingType',
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
width: 100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '酒店联系方式',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'contact',
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
width: 100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '备注',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'remark',
|
||||||
|
scopedSlots: {customRender: 'text'},
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
align: 'center',
|
||||||
|
// fixed: 'right',
|
||||||
|
width: 80,
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
url: {
|
||||||
|
list: '/meeting/payMeetingHotelRecommend/page',
|
||||||
|
importExcelUrl: '/meeting/payMeetingHotelRecommend/importXls',
|
||||||
|
downTemplateUrl: '/meeting/payMeetingHotelRecommend/exportTemplate',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
importExcelUrl: function () {
|
||||||
|
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleDetail(record) {
|
||||||
|
this.$refs.modal.open(record)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -70,14 +70,38 @@
|
|||||||
<a-input placeholder="请输入标签名称" v-model="queryParam.label" :maxLength='50'></a-input>
|
<a-input placeholder="请输入标签名称" v-model="queryParam.label" :maxLength='50'></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-range-picker
|
<j-month-date placeholder="请选择开始日期"
|
||||||
style="width: 100%"
|
class="query-group-cust"
|
||||||
v-model="queryParam.estimatedArrivalDate"
|
v-model="queryParam[rangeMonthKey.start]"
|
||||||
format="YYYY-MM-DD"
|
:trigger-change="true"
|
||||||
:placeholder="['开始时间', '结束时间']"
|
date-format="YYYY-MM"
|
||||||
@change="onDateChange"
|
:disabled-date="disabledStartMonth"
|
||||||
|
/>
|
||||||
|
<span class="query-group-split-cust"></span>
|
||||||
|
<j-month-date placeholder="请选择结束日期"
|
||||||
|
class="query-group-cust"
|
||||||
|
v-model="queryParam[rangeMonthKey.end]"
|
||||||
|
:trigger-change="true"
|
||||||
|
date-format="YYYY-MM"
|
||||||
|
:disabled-date="disabledEndMonth"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="是否审核" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-dict-select-tag v-model="queryParam.checkPaymentStatus"
|
||||||
|
placeholder="请选择是否审核"
|
||||||
|
dictCode="yn"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="是否查看凭证" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-dict-select-tag v-model="queryParam.confirmVoucher"
|
||||||
|
placeholder="请选择是否查看凭证"
|
||||||
|
dictCode="yn"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -196,6 +220,7 @@
|
|||||||
<a @click="handleEditAccount(record)" :disabled="isAllowEditAccount(record)" v-has="'workingGroupMember:editAccount'">调账</a>
|
<a @click="handleEditAccount(record)" :disabled="isAllowEditAccount(record)" v-has="'workingGroupMember:editAccount'">调账</a>
|
||||||
<a @click="handleEdit(record)" v-has="'workingGroupMember:edit'">编辑</a>
|
<a @click="handleEdit(record)" v-has="'workingGroupMember:edit'">编辑</a>
|
||||||
<a @click="handleDelete(record.id)" v-has="'workingGroupMember:delete'">删除</a>
|
<a @click="handleDelete(record.id)" v-has="'workingGroupMember:delete'">删除</a>
|
||||||
|
<a @click="lookVoucher(record)" v-show="!!record.paymentStatus" v-has="'workingGroupMember:confirmVoucher'">查看凭证</a>
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
@@ -209,6 +234,8 @@
|
|||||||
<email-error-msg-modal ref="emailError"></email-error-msg-modal>
|
<email-error-msg-modal ref="emailError"></email-error-msg-modal>
|
||||||
|
|
||||||
<work-group-set-label ref="workGroupSetLabel" @ok="modalFormOk"></work-group-set-label>
|
<work-group-set-label ref="workGroupSetLabel" @ok="modalFormOk"></work-group-set-label>
|
||||||
|
<!--查看凭证-->
|
||||||
|
<look-voucher-modal ref="lookVoucherModal" @ok="modalFormOk"></look-voucher-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -228,6 +255,10 @@ import EmailErrorMsgModal from './modules/EmailErrorMsgModal'
|
|||||||
import WorkGroupSetLabel from './modules/WorkGroupSetLabel'
|
import WorkGroupSetLabel from './modules/WorkGroupSetLabel'
|
||||||
import { formatMoney } from '../../utils/formatMoney'
|
import { formatMoney } from '../../utils/formatMoney'
|
||||||
import {YesOrNoEnums} from '@/enums/commonEnums'
|
import {YesOrNoEnums} from '@/enums/commonEnums'
|
||||||
|
import { MonthRangeMixin } from '../../mixins/MonthRangeMixins'
|
||||||
|
import { getAction } from '../../api/manage'
|
||||||
|
import JMonthDate from '../../components/tools/JMonthDate'
|
||||||
|
import LookVoucherModal from './modules/LookVoucherModal'
|
||||||
|
|
||||||
// eslint-disable-next-line no-undef,no-unused-vars
|
// eslint-disable-next-line no-undef,no-unused-vars
|
||||||
const Base64 = require('js-base64').Base64
|
const Base64 = require('js-base64').Base64
|
||||||
@@ -243,9 +274,11 @@ export default {
|
|||||||
WorkingGroupMemberSetChargeNotice,
|
WorkingGroupMemberSetChargeNotice,
|
||||||
PreviewFile,
|
PreviewFile,
|
||||||
EmailErrorMsgModal,
|
EmailErrorMsgModal,
|
||||||
WorkGroupSetLabel
|
WorkGroupSetLabel,
|
||||||
|
JMonthDate,
|
||||||
|
LookVoucherModal
|
||||||
},
|
},
|
||||||
mixins: [JeroListMixin],
|
mixins: [JeroListMixin, MonthRangeMixin],
|
||||||
computed: {
|
computed: {
|
||||||
importExcelUrl: function () {
|
importExcelUrl: function () {
|
||||||
return `${ window._CONFIG['domianURL'] }/${ this.url.importExcelUrl }`
|
return `${ window._CONFIG['domianURL'] }/${ this.url.importExcelUrl }`
|
||||||
@@ -307,7 +340,9 @@ export default {
|
|||||||
deleteBatch: '/project/payWorkingGroupSubitem/deleteBatch',
|
deleteBatch: '/project/payWorkingGroupSubitem/deleteBatch',
|
||||||
exportXlsUrl: '/project/payWorkingGroupSubitem/exportXls',
|
exportXlsUrl: '/project/payWorkingGroupSubitem/exportXls',
|
||||||
importExcelUrl: '/project/payWorkingGroupSubitem/importExcel',
|
importExcelUrl: '/project/payWorkingGroupSubitem/importExcel',
|
||||||
downTemplateUrl: '/project/payWorkingGroupSubitem/downloadExcelModel'
|
downTemplateUrl: '/project/payWorkingGroupSubitem/downloadExcelModel',
|
||||||
|
// 查看凭证
|
||||||
|
confirmVoucher: '/project/payWorkingGroupSubitem/confirmVoucher'
|
||||||
},
|
},
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
@@ -375,7 +410,24 @@ export default {
|
|||||||
width: 80,
|
width: 80,
|
||||||
dataIndex: 'pack',
|
dataIndex: 'pack',
|
||||||
scopedSlots: { customRender: 'status-pack' }
|
scopedSlots: { customRender: 'status-pack' }
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
|
title: '查看凭证',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
dataIndex: 'confirmVoucher',
|
||||||
|
width: 100,
|
||||||
|
scopedSlots: { customRender: 'status-pack' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '审核',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
dataIndex: 'checkPaymentStatus',
|
||||||
|
width: 100,
|
||||||
|
scopedSlots: { customRender: 'status-pack' }
|
||||||
|
},
|
||||||
|
{
|
||||||
title: '需要发票',
|
title: '需要发票',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
@@ -408,7 +460,7 @@ export default {
|
|||||||
dataIndex: 'action',
|
dataIndex: 'action',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
width: 180,
|
width: 220,
|
||||||
scopedSlots: { customRender: 'action' }
|
scopedSlots: { customRender: 'action' }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -463,14 +515,6 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// 重写查询方法--删除预估到账日期属性
|
|
||||||
searchQuery() {
|
|
||||||
this.lastQueryParam = {...this.queryParam}
|
|
||||||
if(this.lastQueryParam.estimatedArrivalDate) {
|
|
||||||
delete this.lastQueryParam.estimatedArrivalDate
|
|
||||||
}
|
|
||||||
this.loadData(1)
|
|
||||||
},
|
|
||||||
/**
|
/**
|
||||||
* 初始化工作组信息
|
* 初始化工作组信息
|
||||||
*/
|
*/
|
||||||
@@ -636,6 +680,31 @@ export default {
|
|||||||
onDateChange: function (value, dateString) {
|
onDateChange: function (value, dateString) {
|
||||||
this.queryParam.estimatedArrivalStartDate = dateString[0]
|
this.queryParam.estimatedArrivalStartDate = dateString[0]
|
||||||
this.queryParam.estimatedArrivalEndDate = dateString[1]
|
this.queryParam.estimatedArrivalEndDate = dateString[1]
|
||||||
|
},
|
||||||
|
// 查看凭证
|
||||||
|
lookVoucher(record) {
|
||||||
|
this.$refs.lookVoucherModal.open(record)
|
||||||
|
},
|
||||||
|
confirmVoucher(id) {
|
||||||
|
var that = this
|
||||||
|
this.$confirm({
|
||||||
|
title: '确认',
|
||||||
|
content: '确定要确认此条数据凭证吗?',
|
||||||
|
onOk: function () {
|
||||||
|
getAction(that.url.confirmVoucher, {id: id}).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
that.$message.success(res.message)
|
||||||
|
that.loadData()
|
||||||
|
} else {
|
||||||
|
if (res.message.indexOf('<br/>') > -1) {
|
||||||
|
that.messageLineFeed('确认凭证失败', res.message)
|
||||||
|
} else {
|
||||||
|
that.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// 2021 10 11 沟通后去掉了这个功能
|
// 2021 10 11 沟通后去掉了这个功能
|
||||||
// searchReset() {
|
// searchReset() {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<span slot="action" class="action-span-cell" slot-scope="text, record" v-if="canOperate">
|
<span slot="action" class="action-span-cell" slot-scope="text, record" v-if="canOperate">
|
||||||
<a @click="handleDistribute(record.id)" v-has="'fileMaintenance:distribute'">分发</a>
|
<a @click="handleDistribute(record)" v-has="'fileMaintenance:distribute'">分发</a>
|
||||||
<a @click="handleDownload(record)" v-has="'fileMaintenance:download'">下载</a>
|
<a @click="handleDownload(record)" v-has="'fileMaintenance:download'">下载</a>
|
||||||
<a @click="handleDelete(record.id)" v-has="'fileMaintenance:delete'">删除</a>
|
<a @click="handleDelete(record.id)" v-has="'fileMaintenance:delete'">删除</a>
|
||||||
</span>
|
</span>
|
||||||
@@ -79,6 +79,7 @@
|
|||||||
:project-type="projectType"
|
:project-type="projectType"
|
||||||
:is-batch="isBatchDistribute"
|
:is-batch="isBatchDistribute"
|
||||||
:record-id="dataId"
|
:record-id="dataId"
|
||||||
|
:file-id="fileId"
|
||||||
@ok="modalFormOk"></work-group-distribute-module>
|
@ok="modalFormOk"></work-group-distribute-module>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -158,6 +159,7 @@ export default {
|
|||||||
distributeModalVisible: false,
|
distributeModalVisible: false,
|
||||||
isBatchDistribute: false,
|
isBatchDistribute: false,
|
||||||
dataId: '', // 资料id,传给分发
|
dataId: '', // 资料id,传给分发
|
||||||
|
fileId: '', // 文件id, 单个分发时查询用
|
||||||
canOperate: true // 是否可操作(负责人B不可操作)
|
canOperate: true // 是否可操作(负责人B不可操作)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -184,6 +186,11 @@ export default {
|
|||||||
this.canOperate = this.$route.query.canOperate === 'true'
|
this.canOperate = this.$route.query.canOperate === 'true'
|
||||||
this.projectType = 4
|
this.projectType = 4
|
||||||
this.filters.projectType = 4
|
this.filters.projectType = 4
|
||||||
|
} else if (this.$route.query.hasOwnProperty.call(this.$route.query, 'safetyCenterId')) {
|
||||||
|
// 功能安全中心
|
||||||
|
this.filters.projectId = this.$route.query.safetyCenterId
|
||||||
|
this.projectType = 5
|
||||||
|
this.filters.projectType = 5
|
||||||
}
|
}
|
||||||
this.projectId = this.filters.projectId
|
this.projectId = this.filters.projectId
|
||||||
this.loadData()
|
this.loadData()
|
||||||
@@ -204,8 +211,9 @@ export default {
|
|||||||
/**
|
/**
|
||||||
* 分发
|
* 分发
|
||||||
*/
|
*/
|
||||||
handleDistribute(id) {
|
handleDistribute(record) {
|
||||||
this.dataId = id
|
this.fileId = record.fileId
|
||||||
|
this.dataId = record.id
|
||||||
this.distributeModalVisible = true
|
this.distributeModalVisible = true
|
||||||
this.isBatchDistribute = false
|
this.isBatchDistribute = false
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'workingGroupProject:add'">新增</a-button>
|
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'workingGroupProject:add'">新增</a-button>
|
||||||
<a-button type="danger" icon="delete" @click="batchDel" v-has="'workingGroupProject:batchDel'">批量删除</a-button>
|
<a-button type="danger" icon="delete" @click="batchDel" v-has="'workingGroupProject:batchDel'">批量删除</a-button>
|
||||||
<a-button type="primary" icon="plus" @click="handleBatchAddMemberUnit" v-has="'workingGroupMember:batchAdd'">批量新增成员单位</a-button>
|
<a-button type="primary" icon="plus" @click="handleBatchAddMemberUnit" v-has="'workingGroupMember:batchAdd'">批量新增成员单位</a-button>
|
||||||
|
<a-button type="primary" icon="download" @click="handleExportAllFile" v-has="'workingGroupProject:exportAllFile'">全部文件导出</a-button>
|
||||||
|
|
||||||
<!-- 进度条tooltip-->
|
<!-- 进度条tooltip-->
|
||||||
<div class="tooltip">
|
<div class="tooltip">
|
||||||
@@ -103,7 +104,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template slot="text" slot-scope="text">
|
<template slot="text" slot-scope="text">
|
||||||
<j-ellipsis :value="text" :length="20"></j-ellipsis>
|
<a-tooltip>
|
||||||
|
<template slot="title">{{ text }}</template>
|
||||||
|
<div class="table-text">{{ text }}</div>
|
||||||
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||||
@@ -133,7 +137,7 @@ import ProgressBar from '@comp/ProgressBar'
|
|||||||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
import IconWorkingGruop from '@/assets/imgs/icon/icon_working_group.png'
|
import IconWorkingGruop from '@/assets/imgs/icon/icon_working_group.png'
|
||||||
import { copyWorkingGroup } from '../../api/incomePaymentsApi'
|
import { copyWorkingGroup } from '../../api/incomePaymentsApi'
|
||||||
import { getAction } from '../../api/manage'
|
import { downloadFile, getAction } from '../../api/manage'
|
||||||
import WorkingGroupMemberUnitModule from '@views/projectManagement/modules/WorkingGroupMemberUnitModule'
|
import WorkingGroupMemberUnitModule from '@views/projectManagement/modules/WorkingGroupMemberUnitModule'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -154,7 +158,8 @@ export default {
|
|||||||
url: {
|
url: {
|
||||||
list: '/project/payWorkingGroup/list',
|
list: '/project/payWorkingGroup/list',
|
||||||
delete: '/project/payWorkingGroup/delete',
|
delete: '/project/payWorkingGroup/delete',
|
||||||
deleteBatch: '/project/payWorkingGroup/deleteBatch'
|
deleteBatch: '/project/payWorkingGroup/deleteBatch',
|
||||||
|
exportAllFileUrl: '/project/payWorkingGroup/exportAllFile',
|
||||||
},
|
},
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
@@ -176,6 +181,12 @@ export default {
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
width: 130,
|
width: 130,
|
||||||
dataIndex: 'principalNameA'
|
dataIndex: 'principalNameA'
|
||||||
|
}, {
|
||||||
|
title: '排序',
|
||||||
|
align: 'center',
|
||||||
|
width: 100,
|
||||||
|
dataIndex: 'sortNo',
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
}, {
|
}, {
|
||||||
title: '收款进度',
|
title: '收款进度',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
@@ -197,6 +208,11 @@ export default {
|
|||||||
lastQueryParam: {
|
lastQueryParam: {
|
||||||
year: new Date().getFullYear().toString()
|
year: new Date().getFullYear().toString()
|
||||||
},
|
},
|
||||||
|
/* 排序参数 */
|
||||||
|
isorter: {
|
||||||
|
column: 'sortNo', // 排序顺序自定义 正序
|
||||||
|
order: 'asc',
|
||||||
|
},
|
||||||
operateData: [] // 进行操作权限校验时使用的数据
|
operateData: [] // 进行操作权限校验时使用的数据
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -207,6 +223,16 @@ export default {
|
|||||||
this.$refs.workingGroupMemberUnitModule.title = '批量新增成员单位'
|
this.$refs.workingGroupMemberUnitModule.title = '批量新增成员单位'
|
||||||
this.$refs.workingGroupMemberUnitModule.disableSubmit = false
|
this.$refs.workingGroupMemberUnitModule.disableSubmit = false
|
||||||
},
|
},
|
||||||
|
// 导出全部文件
|
||||||
|
handleExportAllFile () {
|
||||||
|
const fileName = '导出工作组全部文件'
|
||||||
|
let param = this.getQueryParams()
|
||||||
|
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||||
|
param['selections'] = this.selectedRowKeys.join(',')
|
||||||
|
}
|
||||||
|
console.log('导出参数', param)
|
||||||
|
downloadFile(this.url.exportAllFileUrl, fileName + '.zip', param)
|
||||||
|
},
|
||||||
loadData(arg) {
|
loadData(arg) {
|
||||||
if (!this.url.list) {
|
if (!this.url.list) {
|
||||||
this.$message.error('请设置url.list属性!')
|
this.$message.error('请设置url.list属性!')
|
||||||
|
|||||||
@@ -143,11 +143,11 @@
|
|||||||
<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-date placeholder="请选择预估到账日期"
|
<j-month-date placeholder="请选择预估到账日期"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||||
:trigger-change="true"
|
:trigger-change="true"
|
||||||
date-format="YYYY-MM-DD"
|
date-format="YYYY-MM"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -254,11 +254,12 @@ import { USER_INFO } from '../../../store/mutation-types'
|
|||||||
import { money } from '../../../utils/validate'
|
import { money } from '../../../utils/validate'
|
||||||
import { checkAssociatedProject } from '../../../utils/projectCheck'
|
import { checkAssociatedProject } from '../../../utils/projectCheck'
|
||||||
import SelectRevenueContract from '../../../components/tools/SelectRevenueContract'
|
import SelectRevenueContract from '../../../components/tools/SelectRevenueContract'
|
||||||
import JDate from '@/components/tools/JDate'
|
import JMonthDate from '@/components/tools/JMonthDate'
|
||||||
|
import { OpeTypeEnums } from '../../../enums/commonEnums'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'GeneralProjectModule',
|
name: 'GeneralProjectModule',
|
||||||
components: { JYearDate, JUpload, JDate,CompanySelect, SelectPrincipal, SelectContacts, SelectRevenueContract ,JDictSelectTag},
|
components: { JYearDate, JUpload, JMonthDate,CompanySelect, SelectPrincipal, SelectContacts, SelectRevenueContract ,JDictSelectTag},
|
||||||
props: {
|
props: {
|
||||||
// 收入合同关联时传入的企业信息,不可修改
|
// 收入合同关联时传入的企业信息,不可修改
|
||||||
defaultChargeCompany: {
|
defaultChargeCompany: {
|
||||||
@@ -406,6 +407,7 @@ export default {
|
|||||||
selectedMailContact: null, // 编辑时的邮寄联系人
|
selectedMailContact: null, // 编辑时的邮寄联系人
|
||||||
disabledCompany: false, // 企业是否可以编辑
|
disabledCompany: false, // 企业是否可以编辑
|
||||||
isAssociatedContract: false, // 是否已关联合同
|
isAssociatedContract: false, // 是否已关联合同
|
||||||
|
opeType: OpeTypeEnums.add.value, // 操作类型
|
||||||
url: {
|
url: {
|
||||||
add: '/project/payCommonProject/add',
|
add: '/project/payCommonProject/add',
|
||||||
edit: '/project/payCommonProject/edit'
|
edit: '/project/payCommonProject/edit'
|
||||||
@@ -415,6 +417,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
addZero,
|
addZero,
|
||||||
add() {
|
add() {
|
||||||
|
this.opeType = OpeTypeEnums.add.value
|
||||||
this.edit({})
|
this.edit({})
|
||||||
if (this.defaultChargeWay === 2) {
|
if (this.defaultChargeWay === 2) {
|
||||||
this.chargeWayType = 2
|
this.chargeWayType = 2
|
||||||
@@ -426,6 +429,13 @@ export default {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
copy(record) {
|
||||||
|
this.opeType = OpeTypeEnums.copy.value
|
||||||
|
let params = {...record}
|
||||||
|
delete params.id
|
||||||
|
console.log('------params-------', params)
|
||||||
|
this.edit(params)
|
||||||
|
},
|
||||||
edit(record) {
|
edit(record) {
|
||||||
if (this.defaultChargeCompany.hasOwnProperty.call(this.defaultChargeCompany, 'id')) {
|
if (this.defaultChargeCompany.hasOwnProperty.call(this.defaultChargeCompany, 'id')) {
|
||||||
record.chargeCompany = {
|
record.chargeCompany = {
|
||||||
@@ -456,7 +466,7 @@ export default {
|
|||||||
record.contractNum = record.contractNum || undefined
|
record.contractNum = record.contractNum || undefined
|
||||||
this.form.resetFields()
|
this.form.resetFields()
|
||||||
this.model = Object.assign({}, record)
|
this.model = Object.assign({}, record)
|
||||||
if (this.model.id) {
|
if (this.model.id || this.opeType === OpeTypeEnums.copy.value) {
|
||||||
this.selectedContact = {
|
this.selectedContact = {
|
||||||
id: this.model.contactsTemporaryId,
|
id: this.model.contactsTemporaryId,
|
||||||
name: this.model.contactsTemporaryName
|
name: this.model.contactsTemporaryName
|
||||||
|
|||||||
@@ -0,0 +1,259 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<div class="project-name">
|
||||||
|
<!--<div>{{ model.chargeProject }}</div>-->
|
||||||
|
<div>{{ model.chargeCompanyTemporaryName }}</div>
|
||||||
|
</div>
|
||||||
|
<h3 class="title">凭证信息</h3>
|
||||||
|
<div class="basic-info-div">
|
||||||
|
<!--其他项目的显示 -->
|
||||||
|
<template >
|
||||||
|
<a-form-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<div>{{ proofInfo.amountReceived }}元</div>
|
||||||
|
</a-form-item>
|
||||||
|
</template>
|
||||||
|
<a-form-item label="缴费日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<div>{{ proofInfo.paymentDate }}</div>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="申请人" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<div>{{ proofInfo.applicantName }}</div>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item v-if="proofType!=='pdf'" class="proof-form-item" :label="'缴费凭证'" :labelCol="labelCol"
|
||||||
|
:wrapperCol="wrapperCol">
|
||||||
|
<div class="proof-img" v-if="proofType === 'img'">
|
||||||
|
<template v-if="proofInfo.proof && proofInfo.proof !== ''">
|
||||||
|
<div class="proof-img-item" v-for="(item, index) in proofInfo.proof.split(',')" :key="index">
|
||||||
|
<img :src="proofSrc(item)" @click="previewImg(item)">
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<span v-if="proofType==='none'">无</span>
|
||||||
|
</a-form-item>
|
||||||
|
</div>
|
||||||
|
</a-spin>
|
||||||
|
<template slot="footer">
|
||||||
|
<a-button @click="handleCancel">关闭</a-button>
|
||||||
|
<!--<a-button type="primary" @click="handleOk" v-preventclick>确定</a-button>-->
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 缴费凭证预览-->
|
||||||
|
<preview-img-modal ref="previewImg"></preview-img-modal>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getAction } from '../../../api/manage'
|
||||||
|
import PreviewImgModal from '@/components/PreviewImgModal'
|
||||||
|
|
||||||
|
const labelCol = {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 3}
|
||||||
|
}
|
||||||
|
const wrapperCol = {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 21}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'LookVoucherModal',
|
||||||
|
components: {PreviewImgModal},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '查看凭证',
|
||||||
|
width: 600,
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
model: {},
|
||||||
|
labelCol,
|
||||||
|
wrapperCol,
|
||||||
|
labelPayCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 8}
|
||||||
|
},
|
||||||
|
wrapperPayCol: {
|
||||||
|
xs: {span: 24},
|
||||||
|
sm: {span: 16}
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
// 工作组-确认查看凭证
|
||||||
|
confirmVoucher: '/project/payWorkingGroupSubitem/confirmVoucher',
|
||||||
|
// 获取最新一条缴费凭证
|
||||||
|
getLastProof: '/paymentCheck/payPaymentCheck/getLastProof',
|
||||||
|
},
|
||||||
|
// 项目缴费凭证信息
|
||||||
|
proofInfo: {},
|
||||||
|
// 是否显示说明
|
||||||
|
showInstructions: false,
|
||||||
|
// 缴费凭证的类型,默认为img,标协会员、证书根据paymentMethod字段决定:1--图片;2--pdf;3--没有凭证
|
||||||
|
proofType: 'img'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 打开弹框, 需要调用 查看凭证的方法
|
||||||
|
* @param record-项目的record
|
||||||
|
*/
|
||||||
|
open(record) {
|
||||||
|
this.model = Object.assign({}, record)
|
||||||
|
// 获取最新一条缴费凭证
|
||||||
|
this.getLastProof(record.id)
|
||||||
|
// 调用接口
|
||||||
|
this.lookVoucher(record.id)
|
||||||
|
this.visible = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('close')
|
||||||
|
this.visible = false
|
||||||
|
this.model = {}
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
this.$emit('ok')
|
||||||
|
},
|
||||||
|
// 调用查看凭证的接口,更新列表页的状态
|
||||||
|
lookVoucher(id) {
|
||||||
|
getAction(this.url.confirmVoucher, {id: id}).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
// this.$message.success(res.message)
|
||||||
|
} else {
|
||||||
|
if (res.message.indexOf('<br/>') > -1) {
|
||||||
|
this.messageLineFeed('查看凭证失败', res.message)
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 获取最新一条缴费凭证
|
||||||
|
* @param id-项目ID
|
||||||
|
*/
|
||||||
|
getLastProof(id) {
|
||||||
|
this.confirmLoading = true
|
||||||
|
let param = {
|
||||||
|
projectId: id
|
||||||
|
}
|
||||||
|
getAction(this.url.getLastProof, param).then((res) => {
|
||||||
|
if (res.success && res.result !== '无数据') {
|
||||||
|
this.proofInfo = res.result || {}
|
||||||
|
} else {
|
||||||
|
this.proofInfo = {}
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.confirmLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 缴费凭证 src
|
||||||
|
*/
|
||||||
|
proofSrc(imgId) {
|
||||||
|
return `${window._CONFIG['domianURL']}/sys/common/download/${imgId}`
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 预览缴费凭证
|
||||||
|
*/
|
||||||
|
previewImg(imgId) {
|
||||||
|
this.$refs.previewImg.title = '缴费凭证'
|
||||||
|
this.$refs.previewImg.imgId = imgId
|
||||||
|
this.$refs.previewImg.visible = true
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 获取缴费凭证类型
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
getProofType(record) {
|
||||||
|
if (record.projectType && (record.projectType.toString() === '6')) {
|
||||||
|
if (this.proofInfo.paymentMethod.toString() === '1' || this.proofInfo.paymentMethod.toString() === '3') {
|
||||||
|
this.proofType = 'img'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.proofInfo.paymentMethod.toString() === '2') {
|
||||||
|
this.proofType = 'pdf'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.proofInfo.paymentMethod.toString() === '3') {
|
||||||
|
this.proofType = 'none'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.proofType = 'img'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.ant-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-name {
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 30px;
|
||||||
|
font-weight: 700;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3.title::before {
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
left: -10px;
|
||||||
|
content: "";
|
||||||
|
height: 20px;
|
||||||
|
width: 2px;
|
||||||
|
background: #069f99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-item {
|
||||||
|
display: flex;
|
||||||
|
padding: 5px 0;
|
||||||
|
|
||||||
|
label {
|
||||||
|
color: #666666;
|
||||||
|
flex-shrink: 0;
|
||||||
|
display: inline-block;
|
||||||
|
width: 4.5rem;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
div {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将缴费凭证的图片部分提出
|
||||||
|
.proof-img {
|
||||||
|
display: flex;
|
||||||
|
width: calc(100% - 4rem);
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
width: 21%;
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 150px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改缴费基础信息的样式
|
||||||
|
.basic-info-div {
|
||||||
|
/deep/ .ant-form-item:not(.proof-form-item) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -51,6 +51,10 @@
|
|||||||
</a-row>
|
</a-row>
|
||||||
</a-form>
|
</a-form>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 操作按钮区域-->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button type="primary" @click="checkAll()">全选</a-button>
|
||||||
|
</div>
|
||||||
<a-table
|
<a-table
|
||||||
ref="table"
|
ref="table"
|
||||||
size="middle"
|
size="middle"
|
||||||
@@ -92,7 +96,9 @@ import {
|
|||||||
draftGroupPublishRemind
|
draftGroupPublishRemind
|
||||||
} from '@api/incomePaymentsApi'
|
} from '@api/incomePaymentsApi'
|
||||||
import EmailErrorMsgModal from '@views/projectManagement/modules/EmailErrorMsgModal'
|
import EmailErrorMsgModal from '@views/projectManagement/modules/EmailErrorMsgModal'
|
||||||
import { judgeEmailStatus } from "../../../api/incomePaymentsApi";
|
import { judgeEmailStatus } from '../../../api/incomePaymentsApi'
|
||||||
|
import { getAction } from "../../../api/manage";
|
||||||
|
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -232,6 +238,47 @@ export default {
|
|||||||
// scopedSlots: {customRender: 'text'}
|
// scopedSlots: {customRender: 'text'}
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
// 功能安全中心发布提醒 表头
|
||||||
|
safetyCenterColumns: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '成员单位',
|
||||||
|
align: 'center',
|
||||||
|
width: 200,
|
||||||
|
dataIndex: 'companyName',
|
||||||
|
scopedSlots: {customRender: 'text'}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '企业联系人',
|
||||||
|
align: 'center',
|
||||||
|
width: 200,
|
||||||
|
dataIndex: 'contactsName',
|
||||||
|
scopedSlots: {customRender: 'text'}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '是否提醒',
|
||||||
|
align: 'center',
|
||||||
|
width: 200,
|
||||||
|
dataIndex: 'remind_dictText',
|
||||||
|
// scopedSlots: {customRender: 'text'}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邮件提醒',
|
||||||
|
align: 'center',
|
||||||
|
width: 200,
|
||||||
|
dataIndex: 'mailRemind_dictText',
|
||||||
|
// scopedSlots: {customRender: 'text'}
|
||||||
|
},
|
||||||
|
],
|
||||||
model: {},
|
model: {},
|
||||||
labelCol: {
|
labelCol: {
|
||||||
xs: {span: 24},
|
xs: {span: 24},
|
||||||
@@ -284,6 +331,12 @@ export default {
|
|||||||
this.filters.draftingGroupId = this.$route.query.draftingGroupProjectId
|
this.filters.draftingGroupId = this.$route.query.draftingGroupProjectId
|
||||||
this.newColumns = [...this.columns]
|
this.newColumns = [...this.columns]
|
||||||
this.remindType = 4
|
this.remindType = 4
|
||||||
|
} else if (this.$route.query.meetingType === MeetingTypeEnums.safetyCenter.value) {
|
||||||
|
// 功能安全中心
|
||||||
|
this.url.list = '/SafetyCenterSubitem/publishReminderList'
|
||||||
|
this.filters.projectId = this.$route.query.projectId
|
||||||
|
this.newColumns = [...this.safetyCenterColumns]
|
||||||
|
this.remindType = 5
|
||||||
} else {
|
} else {
|
||||||
// 列表需要工作组id参数
|
// 列表需要工作组id参数
|
||||||
this.filters.workingGroupId = this.$route.query.workingGroupProjectId
|
this.filters.workingGroupId = this.$route.query.workingGroupProjectId
|
||||||
@@ -339,6 +392,10 @@ export default {
|
|||||||
// 起草组用起草组的发布提醒
|
// 起草组用起草组的发布提醒
|
||||||
param.draftingGroupId = this.$route.query.draftingGroupProjectId
|
param.draftingGroupId = this.$route.query.draftingGroupProjectId
|
||||||
requestFun = draftGroupPublishRemind
|
requestFun = draftGroupPublishRemind
|
||||||
|
} else if (this.$route.query.meetingType === MeetingTypeEnums.safetyCenter.value) {
|
||||||
|
// 功能安全中心的发布提醒
|
||||||
|
param.safetyCenterId = this.$route.query.projectId
|
||||||
|
requestFun = draftGroupPublishRemind
|
||||||
} else {
|
} else {
|
||||||
// 工作组
|
// 工作组
|
||||||
param.workingGroupId = this.$route.query.workingGroupProjectId
|
param.workingGroupId = this.$route.query.workingGroupProjectId
|
||||||
@@ -403,8 +460,31 @@ export default {
|
|||||||
this.needMail = (res.result || {}).templateType.indexOf(2) > -1
|
this.needMail = (res.result || {}).templateType.indexOf(2) > -1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
checkAll() {
|
||||||
|
this.getAllData()
|
||||||
|
},
|
||||||
|
getAllData() {
|
||||||
|
var params = this.getQueryParams()//查询条件
|
||||||
|
params.pageNo = 1
|
||||||
|
params.pageSize = -1
|
||||||
|
this.loading = true
|
||||||
|
getAction(this.url.list, params).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||||
|
let dataSource = res.result.records || res.result
|
||||||
|
this.selectedRowKeys = dataSource.map(tt => tt.id)
|
||||||
|
this.selectionRows = dataSource
|
||||||
|
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||||
}
|
}
|
||||||
|
if (res.code === 510) {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
this.loading = false
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
switchFullscreen
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<template v-if="dataSource && dataSource !== {}">
|
||||||
|
<div class="detail-container">
|
||||||
|
<div :class="item.class + ' detail-line'" v-for="item in columns" :key="item.dataIndex">
|
||||||
|
<label>{{ item.title }}:</label>
|
||||||
|
<span>{{ dataSource[item.dataIndex] }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<a-empty v-else></a-empty>
|
||||||
|
</a-spin>
|
||||||
|
|
||||||
|
<template slot="footer">
|
||||||
|
<a-button @click="handleCancel">关闭</a-button>
|
||||||
|
</template>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'RecommendHotelModal',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '查看',
|
||||||
|
width: 700,
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 5 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 17 }
|
||||||
|
},
|
||||||
|
dataSource: {},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '推荐人',
|
||||||
|
dataIndex: 'recommendPeople'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '酒店名称',
|
||||||
|
dataIndex: 'hotelName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所在省份',
|
||||||
|
dataIndex: 'hotelProvince'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所在城市',
|
||||||
|
dataIndex: 'hotelCity'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '是否举办过标准院会议',
|
||||||
|
dataIndex: 'isHold_dictText'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '曾举办会议类型',
|
||||||
|
dataIndex: 'meetingType'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '酒店联系方式',
|
||||||
|
class: 'full-width',
|
||||||
|
dataIndex: 'contact'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '备注',
|
||||||
|
class: 'full-width',
|
||||||
|
dataIndex: 'remark'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 打开弹窗
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
open(record) {
|
||||||
|
this.visible = true
|
||||||
|
this.dataSource = Object.assign({}, record)
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.visible = false
|
||||||
|
this.dataSource = Object.assign({}, {})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.detail-container{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
.detail-line {
|
||||||
|
width: 50%;
|
||||||
|
padding: 8px 20px;
|
||||||
|
display: flex;
|
||||||
|
label {
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.full-width{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -207,6 +207,12 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
// 单个分发时的文件Id
|
||||||
|
fileId: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -265,7 +271,7 @@ export default {
|
|||||||
}
|
}
|
||||||
// 非批量上传的时候传当前选中的文件id
|
// 非批量上传的时候传当前选中的文件id
|
||||||
if(!this.isBatch) {
|
if(!this.isBatch) {
|
||||||
param.fileId = this.recordId
|
param.fileId = this.fileId
|
||||||
}
|
}
|
||||||
distributeMemberList(param).then(res => {
|
distributeMemberList(param).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<!-- 批量添加时显示) -->
|
<!-- 批量添加时显示) -->
|
||||||
<!--todo 样式得调整,左侧和下面的成员单位应该保持一致。-->
|
<!--样式得调整,左侧和下面的成员单位应该保持一致。-->
|
||||||
<template v-if="isBatchAdd && model.workingGroupIdList && model.workingGroupIdList.length > 0">
|
<template v-if="isBatchAdd && model.workingGroupIdList && model.workingGroupIdList.length > 0">
|
||||||
<a-row v-for="(_, index) in model.workingGroupIdList" :key="index + ''">
|
<a-row v-for="(_, index) in model.workingGroupIdList" :key="index + ''">
|
||||||
<!-- 对齐其他表单单独设置col样式 -->
|
<!-- 对齐其他表单单独设置col样式 -->
|
||||||
@@ -209,7 +209,8 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<template v-if="chargeWayType === 1 || chargeWayType === 2">
|
<!--2024-07-03 去掉待确收金额相关数据-->
|
||||||
|
<template v-if="!isBatchAdd && (chargeWayType === 1 || chargeWayType === 2)">
|
||||||
<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">
|
||||||
@@ -270,14 +271,15 @@
|
|||||||
</a-row>
|
</a-row>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<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-date placeholder="请选择预估到账日期"
|
<j-month-date placeholder="请选择预估到账日期"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||||
:trigger-change="true"
|
:trigger-change="true"
|
||||||
date-format="YYYY-MM-DD"
|
date-format="YYYY-MM"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -435,12 +437,13 @@ import { checkAssociatedProject } from '../../../utils/projectCheck'
|
|||||||
import SelectRevenueContract from '../../../components/tools/SelectRevenueContract'
|
import SelectRevenueContract from '../../../components/tools/SelectRevenueContract'
|
||||||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||||
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
|
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
|
||||||
|
import JMonthDate from '@/components/tools/JMonthDate'
|
||||||
import JDate from '@/components/tools/JDate'
|
import JDate from '@/components/tools/JDate'
|
||||||
import {getAllWorkProjects} from '@api/incomeMeetingApi'
|
import {getAllWorkProjects} from '@api/incomeMeetingApi'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'WorkingGroupMemberUnitModule',
|
name: 'WorkingGroupMemberUnitModule',
|
||||||
components: { JUpload, JDate, CompanySelect, SelectContacts, SelectRevenueContract, JDictSelectTag },
|
components: { JUpload, JDate, JMonthDate, CompanySelect, SelectContacts, SelectRevenueContract, JDictSelectTag },
|
||||||
mixins: [CalcAmountMixin],
|
mixins: [CalcAmountMixin],
|
||||||
props: {
|
props: {
|
||||||
// 默认来款方式(收入合同新增工作组项目,来款方式默认为2--合同)
|
// 默认来款方式(收入合同新增工作组项目,来款方式默认为2--合同)
|
||||||
@@ -1086,8 +1089,8 @@ export default {
|
|||||||
* @param index
|
* @param index
|
||||||
*/
|
*/
|
||||||
handleAddContact(index) {
|
handleAddContact(index) {
|
||||||
if (this.model.payWorkingGroupSubItemContactsList.length >= 10) {
|
if (this.model.payWorkingGroupSubItemContactsList.length >= 20) {
|
||||||
this.$message.warn('最多添加十个企业联系人')
|
this.$message.warn('最多添加二十个企业联系人')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let obj = {
|
let obj = {
|
||||||
|
|||||||
@@ -15,14 +15,20 @@
|
|||||||
</span>
|
</span>
|
||||||
<a-form :form="form">
|
<a-form :form="form">
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="24">
|
<a-col :span="12">
|
||||||
<a-form-item label="工作组项目" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
<a-form-item label="工作组项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-input placeholder="请输入工作组项目"
|
<a-input placeholder="请输入工作组项目"
|
||||||
v-decorator="['workingGroupProject',validatorRules.workingGroupProject]"
|
v-decorator="['workingGroupProject',validatorRules.workingGroupProject]"
|
||||||
:maxLength='50'
|
:maxLength='50'
|
||||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
<!--排序顺序自定义-->
|
||||||
|
<a-col :span="12" >
|
||||||
|
<a-form-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input-number placeholder="请输入排序" :min="1" :max="99999" style="width: 200px" v-decorator="[ 'sortNo',validatorRules.sortNo]" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
@@ -217,6 +223,10 @@ export default {
|
|||||||
rules: [{ required: true, message: '请输入项目名称' }],
|
rules: [{ required: true, message: '请输入项目名称' }],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
|
sortNo: {
|
||||||
|
rules: [{ required: true, message: '请输入排序' }],
|
||||||
|
validateTrigger: 'blur'
|
||||||
|
},
|
||||||
year: {
|
year: {
|
||||||
rules: [{ required: true, message: '请选择运行年份' }],
|
rules: [{ required: true, message: '请选择运行年份' }],
|
||||||
validateTrigger: 'change'
|
validateTrigger: 'change'
|
||||||
@@ -257,7 +267,7 @@ export default {
|
|||||||
this.model = Object.assign({}, record)
|
this.model = Object.assign({}, record)
|
||||||
this.visible = true
|
this.visible = true
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.form.setFieldsValue(pick(this.model, 'workingGroupProject', 'year', 'payFlag', 'principalIdA', 'principalIdB', 'convokeNum', 'operationCycle', 'yearChargeA', 'chargeNoticeNoA', 'chargeNoticeAId', 'yearChargeB', 'chargeNoticeNoB', 'chargeNoticeBId', 'missionAndObjectives', 'remarks'))
|
this.form.setFieldsValue(pick(this.model, 'workingGroupProject', 'sortNo', 'year', 'payFlag', 'principalIdA', 'principalIdB', 'convokeNum', 'operationCycle', 'yearChargeA', 'chargeNoticeNoA', 'chargeNoticeAId', 'yearChargeB', 'chargeNoticeNoB', 'chargeNoticeBId', 'missionAndObjectives', 'remarks'))
|
||||||
if (!this.model.id) {
|
if (!this.model.id) {
|
||||||
this.form.setFieldsValue({
|
this.form.setFieldsValue({
|
||||||
'year': (new Date().getFullYear()).toString(),
|
'year': (new Date().getFullYear()).toString(),
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
<a-form-item label="确认年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="项目年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<j-year-date style="width:100%" placeholder="请选择确认年份" v-model="queryParam.paymentYear"></j-year-date>
|
<j-year-date style="width:100%" placeholder="请选择项目年份" v-model="queryParam.year"></j-year-date>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero">
|
||||||
@@ -58,6 +58,12 @@
|
|||||||
@change="handleTableChange"
|
@change="handleTableChange"
|
||||||
:class="dataSource.length === 0 ? 'show-scroll' : ''"
|
:class="dataSource.length === 0 ? 'show-scroll' : ''"
|
||||||
class="j-table-force-nowrap main-table">
|
class="j-table-force-nowrap main-table">
|
||||||
|
<template slot="htmlSlot" slot-scope="text,record">
|
||||||
|
<a-tooltip>
|
||||||
|
<template slot="title">{{ text }}</template>
|
||||||
|
<div class="table-text primary-color" @click="toAttendance(record)">{{ text }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
<template slot="text" slot-scope="text">
|
<template slot="text" slot-scope="text">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
@@ -119,6 +125,7 @@ import JYearDate from '@/components/jero/JYearDate'
|
|||||||
import { getAction } from '@api/manage'
|
import { getAction } from '@api/manage'
|
||||||
import {formatMoney} from '@/utils/formatMoney'
|
import {formatMoney} from '@/utils/formatMoney'
|
||||||
import { MonthData } from './statisticData'
|
import { MonthData } from './statisticData'
|
||||||
|
import { MeetingTypeEnums } from '../../enums/commonEnums'
|
||||||
|
|
||||||
const defaultTableColumns = [
|
const defaultTableColumns = [
|
||||||
{
|
{
|
||||||
@@ -126,7 +133,7 @@ const defaultTableColumns = [
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
width: 160,
|
width: 160,
|
||||||
dataIndex: 'meetingName',
|
dataIndex: 'meetingName',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: {customRender: 'htmlSlot'},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '会议类型',
|
title: '会议类型',
|
||||||
@@ -243,14 +250,13 @@ export default {
|
|||||||
footerDataSource: [],
|
footerDataSource: [],
|
||||||
// 给定当年作为来款年份默认查询条件
|
// 给定当年作为来款年份默认查询条件
|
||||||
queryParam: {
|
queryParam: {
|
||||||
paymentYear: new Date().getFullYear().toString(),
|
year: new Date().getFullYear().toString(),
|
||||||
payMode: 3 // 缴费方式-默认打包
|
payMode: 3 // 缴费方式-默认打包
|
||||||
},
|
},
|
||||||
lastQueryParam: {
|
lastQueryParam: {
|
||||||
paymentYear: new Date().getFullYear().toString(),
|
year: new Date().getFullYear().toString(),
|
||||||
payMode: 3 // 缴费方式-默认打包
|
payMode: 3 // 缴费方式-默认打包
|
||||||
},
|
},
|
||||||
// todo 需要替换掉
|
|
||||||
url: {
|
url: {
|
||||||
list: '/statistics/meetingPackStatistics/page',
|
list: '/statistics/meetingPackStatistics/page',
|
||||||
exportXlsUrl: '/statistics/meetingPackStatistics/excelMeetingPackStatistics'
|
exportXlsUrl: '/statistics/meetingPackStatistics/excelMeetingPackStatistics'
|
||||||
@@ -331,11 +337,11 @@ export default {
|
|||||||
},
|
},
|
||||||
searchReset() {
|
searchReset() {
|
||||||
this.lastQueryParam = {
|
this.lastQueryParam = {
|
||||||
paymentYear: new Date().getFullYear().toString(),
|
year: new Date().getFullYear().toString(),
|
||||||
payMode: 3 // 缴费方式-默认打包
|
payMode: 3 // 缴费方式-默认打包
|
||||||
}
|
}
|
||||||
this.queryParam = {
|
this.queryParam = {
|
||||||
paymentYear: new Date().getFullYear().toString(),
|
year: new Date().getFullYear().toString(),
|
||||||
payMode: 3 // 缴费方式-默认打包
|
payMode: 3 // 缴费方式-默认打包
|
||||||
}
|
}
|
||||||
this.loadData(1)
|
this.loadData(1)
|
||||||
@@ -388,10 +394,32 @@ export default {
|
|||||||
},
|
},
|
||||||
// 确认年份 年份选择器改变的事件
|
// 确认年份 年份选择器改变的事件
|
||||||
paymentYearChange() {
|
paymentYearChange() {
|
||||||
if(!this.queryParam.paymentYear) {
|
if(!this.queryParam.year) {
|
||||||
this.queryParam.paymentMonth = undefined
|
this.queryParam.paymentMonth = undefined
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 参会情况
|
||||||
|
* */
|
||||||
|
toAttendance(record) {
|
||||||
|
let pathMap = new Map()
|
||||||
|
pathMap.set('1','/incomePayments/meetManage/AttendanceWorkGroupMeeting')
|
||||||
|
pathMap.set('2','/incomePayments/meetManage/AttendanceStandardsMeeting')
|
||||||
|
pathMap.set('3','/incomePayments/meetManage/AttendanceInternalMeeting')
|
||||||
|
pathMap.set('4','/incomePayments/meetManage/AttendanceOhterMeeting')
|
||||||
|
pathMap.set('5','/incomePayments/meetManage/AttendanceCommitteeMeeting')
|
||||||
|
pathMap.set('6','/incomePayments/meetManage/AttendanceCouncilMeeting')
|
||||||
|
pathMap.set('7','/incomePayments/meetManage/AttendanceDraftGroupMeeting')
|
||||||
|
pathMap.set(MeetingTypeEnums.overseas.value,'/incomePayments/meetManage/AttendanceOverseasMeeting')
|
||||||
|
this.$router.push({
|
||||||
|
path: pathMap.get(record.meetingType+''),
|
||||||
|
query: {
|
||||||
|
id: record.meetingId,
|
||||||
|
meetingName: record.meetingName,
|
||||||
|
meetingType: record.meetingType
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -441,4 +469,9 @@ export default {
|
|||||||
border-left: none;
|
border-left: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.primary-color {
|
||||||
|
color: #069f99;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -159,9 +159,9 @@ export default {
|
|||||||
getAction(this.url.list, params).then((res) => {
|
getAction(this.url.list, params).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
let dataSource = res.result.list
|
let dataSource = res.result.list
|
||||||
// 讲树形结构的数据 ,修改成table可以直接展示的数据,默认只有三行数据
|
// 讲树形结构的数据 ,修改成table可以直接展示的数据,默认只有三行数据 todo
|
||||||
let tableData = [
|
let tableData = [
|
||||||
{indexName: '年度待确收金额', total: res.result.sumOfMoney},
|
{indexName: '预估收入金额', total: res.result.sumOfMoney},
|
||||||
{indexName: '确认收入金额', total: res.result.sumOfConfirmAmount},
|
{indexName: '确认收入金额', total: res.result.sumOfConfirmAmount},
|
||||||
{indexName: '开票金额', total: res.result.sumOfBillMoney},
|
{indexName: '开票金额', total: res.result.sumOfBillMoney},
|
||||||
{indexName: '到账金额', total: res.result.sumOfReallyMoney},
|
{indexName: '到账金额', total: res.result.sumOfReallyMoney},
|
||||||
@@ -171,7 +171,7 @@ export default {
|
|||||||
let keyItem = MonthData.find(ele => Number(ele.value) === (index + 1))
|
let keyItem = MonthData.find(ele => Number(ele.value) === (index + 1))
|
||||||
if(keyItem) {
|
if(keyItem) {
|
||||||
let key = keyItem.key
|
let key = keyItem.key
|
||||||
tableData[0][key] = item.allMoney
|
tableData[0][key] = item.estimatedArrivalMoney // todo
|
||||||
tableData[1][key] = item.confirmAmount
|
tableData[1][key] = item.confirmAmount
|
||||||
tableData[2][key] = item.billMoney
|
tableData[2][key] = item.billMoney
|
||||||
tableData[3][key] = item.comeAllMoney
|
tableData[3][key] = item.comeAllMoney
|
||||||
|
|||||||
@@ -63,6 +63,14 @@
|
|||||||
@change="checkMoney('end')"></a-input>
|
@change="checkMoney('end')"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
|
<a-form-item label="是否打包" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-dict-select-tag v-model="queryParam.pack"
|
||||||
|
placeholder="请选择是否打包"
|
||||||
|
dictCode="yn"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
<a-col :xl="4" :lg="7" :md="8" :sm="24">
|
<a-col :xl="4" :lg="7" :md="8" :sm="24">
|
||||||
<span class="table-page-search-submitButtons">
|
<span class="table-page-search-submitButtons">
|
||||||
<a-button type="primary" icon="search" @click="searchQuery">查询</a-button>
|
<a-button type="primary" icon="search" @click="searchQuery">查询</a-button>
|
||||||
|
|||||||
@@ -99,7 +99,7 @@
|
|||||||
|
|
||||||
<!-- 操作按钮区域-->
|
<!-- 操作按钮区域-->
|
||||||
<div class="table-operator">
|
<div class="table-operator">
|
||||||
<a-button type="primary" icon="export" @click="handleExportXls('项目来款统计')"
|
<a-button type="primary" icon="export" @click="handleExportXls('科室统计')"
|
||||||
v-has="'projectPaymentStatistics:export'">导出
|
v-has="'projectPaymentStatistics:export'">导出
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user