Compare commits
| 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 | ||
|
|
bae6e5ade4 | ||
|
|
82bb7a2cbe | ||
|
|
a1623df600 |
+4
-1
@@ -120,6 +120,8 @@ export const transitRESTful = {
|
||||
const getContactsByCompany = (params) => getAction('/company/payContactsManagement/queryByCompany', params)
|
||||
// 通过企业名称获取该企业下的联系人无权限接口
|
||||
const getContactsByCompanyNoLimit = (params) => getAction('/company/payContactsManagement/queryByCompanyMeeting', params)
|
||||
// 通过企业名称获取该企业下的联系人 功能安全中心接口只能看到父级的
|
||||
const getContactsByCompanyBySafetyCenter = (params) => getAction('/company/payContactsManagement/queryBySafetyCenter', params)
|
||||
// 通过联系人id获取联系人信息
|
||||
const getContactsById = (param) => getAction('/company/payContactsManagement/queryByIdMeeting', param)
|
||||
// 企业管理员重置密码
|
||||
@@ -203,7 +205,8 @@ export {
|
||||
ssLoginEnterTerminal,
|
||||
companyAdminResetPassword,
|
||||
companyAdminEnable,
|
||||
queryCompanyInfoById
|
||||
queryCompanyInfoById,
|
||||
getContactsByCompanyBySafetyCenter
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@ const getStandardNumberList = (params) => getAction('/meeting/standardsMeeting/g
|
||||
// 国际研讨会-WASIC-通过会议ID获取关联主题的信息
|
||||
const getLinkTopics = (params) => getAction('/meeting/internalMeeting/getLinkTopics', params)
|
||||
|
||||
// 通过id获取海外会议参会人详细信息
|
||||
const getSingUpUserInfoOverseas = (params) => getAction('/meeting/overseasSituation/queryById', params)
|
||||
|
||||
export {
|
||||
getUserInfo,
|
||||
@@ -46,5 +48,6 @@ export {
|
||||
addGenerateCodeList,
|
||||
editGenerateCodeList,
|
||||
getStandardNumberList,
|
||||
getLinkTopics
|
||||
getLinkTopics,
|
||||
getSingUpUserInfoOverseas
|
||||
}
|
||||
|
||||
@@ -170,6 +170,12 @@ const updatePackageEnterprise = (params) => postAction('/company/payCompanyManag
|
||||
// 判断是否打包企业
|
||||
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 {
|
||||
getWorkingGroupById,
|
||||
getChargeNotice,
|
||||
@@ -257,5 +263,8 @@ export {
|
||||
workingGroupEditAccount,
|
||||
getAllDraftProjects,
|
||||
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"
|
||||
cancelText="关闭">
|
||||
<!-- 基本信息begin-->
|
||||
<section class="base-info" v-if="projectType !== ProjectTypeEnums.DRAFT_PRO.value">
|
||||
<section class="base-info" v-if="hideCostInfo && !isSafetyCenterMeeting">
|
||||
<h3 class="title">基本信息</h3>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
@@ -204,8 +204,8 @@
|
||||
<!-- 企业联系人信息start-->
|
||||
<section>
|
||||
<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-col :span="12">
|
||||
<label>企业联系人:</label>
|
||||
@@ -243,8 +243,8 @@
|
||||
</a-col>
|
||||
</a-row>
|
||||
</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 + ''">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
@@ -292,7 +292,7 @@
|
||||
</section>
|
||||
<!-- 企业联系人信息end-->
|
||||
<!--到账信息begin-->
|
||||
<section class="payment-info" v-if="projectType !== ProjectTypeEnums.DRAFT_PRO.value">
|
||||
<section class="payment-info" v-if="hideCostInfo && !isSafetyCenterMeeting">
|
||||
<h3 class="title">到账信息</h3>
|
||||
<div class="payment-info-box">
|
||||
<section class="payment-info-title">到账信息</section>
|
||||
@@ -306,7 +306,7 @@
|
||||
</section>
|
||||
<!--到账信息end-->
|
||||
<!--开票邮寄信息begin-->
|
||||
<section class="logistics-info" v-if="projectType !== ProjectTypeEnums.DRAFT_PRO.value">
|
||||
<section class="logistics-info" v-if="hideCostInfo && !isSafetyCenterMeeting">
|
||||
<h3 class="title">开票邮寄信息</h3>
|
||||
<div class="wrap-table">
|
||||
<a-table
|
||||
@@ -341,7 +341,7 @@
|
||||
import { queryCommonProjectById, getStanderMemberLastProofInfo, getCertificateLastProofInfo } from '@api/incomePaymentsApi'
|
||||
import JEllipsis from '@comp/jero/JEllipsis'
|
||||
import PreviewFile from './jero/PreviewFile'
|
||||
import { ProjectTypeEnums } from '@/enums/commonEnums'
|
||||
import {MeetingTypeEnums, ProjectTypeEnums} from '@/enums/commonEnums'
|
||||
import Vue from 'vue'
|
||||
import {ACCESS_TOKEN} from '@/store/mutation-types'
|
||||
import PreviewFileModal from '@comp/PreviewFileModal'
|
||||
@@ -414,6 +414,11 @@ export default {
|
||||
projectType:{
|
||||
type: Number,
|
||||
required: false
|
||||
},
|
||||
// 会议类型
|
||||
meetingType: {
|
||||
type: String,
|
||||
required: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -441,6 +446,16 @@ export default {
|
||||
}
|
||||
},
|
||||
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() {
|
||||
// 去掉未审核 去判断的企业是否是标协会企业
|
||||
|
||||
@@ -77,6 +77,18 @@ export default {
|
||||
type:Boolean,
|
||||
required:false,
|
||||
default:false
|
||||
},
|
||||
// 自定义列表接口(功能安全中心只能看到父级已添加的企业)
|
||||
customListUrl: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
// 自定义列表查询参数,功能安全中心会议
|
||||
customListParams: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -133,7 +145,16 @@ export default {
|
||||
params.memberNature = this.memberNature
|
||||
}
|
||||
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) {
|
||||
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||
this.dataSource = res.result.records || res.result
|
||||
@@ -180,7 +201,23 @@ export default {
|
||||
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.selectedRowKeys = selectedRowKeys
|
||||
|
||||
@@ -94,7 +94,6 @@ export default {
|
||||
* @param value
|
||||
*/
|
||||
handleOk(value) {
|
||||
console.log('--------value---------', value)
|
||||
let company = {id: undefined, companyName: undefined}
|
||||
// 多选的时候 全部放在一起,以逗号分隔
|
||||
if (this.isMultiple) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- 在点击组件时获取联系人列表-->
|
||||
<div>
|
||||
<a-row>
|
||||
<a-col :span="20">
|
||||
<a-col :span="canAdd ? 20 : 24">
|
||||
<a-select :value="value"
|
||||
v-bind="$attrs"
|
||||
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>
|
||||
</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-col>
|
||||
</a-row>
|
||||
@@ -50,6 +50,12 @@ export default {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
// 是否可以新增:true--可以;false--不可以
|
||||
canAdd: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: true
|
||||
},
|
||||
value: {
|
||||
type: [String, Object],
|
||||
required: false,
|
||||
@@ -72,6 +78,18 @@ export default {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 自定义列表接口(功能安全中心只能看到父级已添加的企业)
|
||||
customListFn: {
|
||||
type: [Function, null],
|
||||
required: false,
|
||||
default: null
|
||||
},
|
||||
// 自定义列表查询参数,功能安全中心会议
|
||||
customListParams: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -126,6 +144,22 @@ export default {
|
||||
} else {
|
||||
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) {
|
||||
// 调用无权限接口
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
@font-face {
|
||||
font-family: "anticon-jeecg"; /* Project id 2798517 */
|
||||
src: url('iconfont.woff2?t=1705570227820') format('woff2'),
|
||||
url('iconfont.woff?t=1705570227820') format('woff'),
|
||||
url('iconfont.ttf?t=1705570227820') format('truetype');
|
||||
src: url('iconfont.woff2?t=1717644876199') format('woff2'),
|
||||
url('iconfont.woff?t=1717644876199') format('woff'),
|
||||
url('iconfont.ttf?t=1717644876199') format('truetype');
|
||||
}
|
||||
|
||||
.anticon-jeecg {
|
||||
@@ -13,6 +13,10 @@
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.anticonyinzhang:before {
|
||||
content: "\e785";
|
||||
}
|
||||
|
||||
.anticondraftgroup:before {
|
||||
content: "\e65e";
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -5,6 +5,13 @@
|
||||
"css_prefix_text": "anticon",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "39837879",
|
||||
"name": "cus_tc",
|
||||
"font_class": "yinzhang",
|
||||
"unicode": "e785",
|
||||
"unicode_decimal": 59269
|
||||
},
|
||||
{
|
||||
"icon_id": "3009589",
|
||||
"name": "cus_draftgroup",
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -89,8 +89,14 @@
|
||||
type:Number,
|
||||
required:false,
|
||||
default:0
|
||||
}
|
||||
},
|
||||
//update-end-author:wangshuai date:20201021 for:LOWCOD-969 新增number属性,用于判断上传数量
|
||||
// 限制的后缀数组
|
||||
fileTypeList: {
|
||||
type: Array,
|
||||
required: false,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
//透传给下级组件的事件,需要排除本组件使用的change事件
|
||||
@@ -190,6 +196,15 @@
|
||||
this.$message.warning('请上传图片')
|
||||
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) {
|
||||
this.picUrl = false
|
||||
|
||||
@@ -316,8 +316,8 @@ export default {
|
||||
file.uploadGoOn = true
|
||||
const fileSize = file.size // 上传的文件大小
|
||||
const fileType = file.type // 上传的文件类型
|
||||
if (fileSize > 1024 * 1024 * 100) {
|
||||
this.$message.warning('文件大小限制为100M')
|
||||
if (fileSize > 1024 * 1024 * 200) {
|
||||
this.$message.warning('文件大小限制为200M')
|
||||
this.uploadGoOn = false
|
||||
file.uploadGoOn = 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,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 是否需要发票字段的KEY值,目前只有标协会员使用了,发票使用的。
|
||||
invoiceKey: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: 'needInvoice'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -89,9 +95,9 @@ export default {
|
||||
status() {
|
||||
// 非打包项目,其他项目如果被打包,就除了打包列全部置灰
|
||||
// 如果有打包字段 && 当前列不是打包列 && 当前行是打包为"是" && 当前项目不是打包项目
|
||||
if (this.packField && this.statusKey !== 'pack' && this.statuObj[this.packField] === 1 && this.statuObj.projectType !== ProjectTypeEnums.PACK_PRO.value) {
|
||||
return zero
|
||||
}
|
||||
// if (this.packField && this.statusKey !== 'pack' && this.statuObj[this.packField] === 1 && this.statuObj.projectType !== ProjectTypeEnums.PACK_PRO.value) {
|
||||
// return zero
|
||||
// }
|
||||
if (this.statuObj.amountReceivable === '0.00' || this.statuObj.receivableAmount === '0.00') {
|
||||
if (this.statusType) {
|
||||
// 待确收金额为0 未到账 未邮寄 未开票的状态
|
||||
@@ -110,7 +116,7 @@ export default {
|
||||
// 待确收金额不为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
|
||||
} else {
|
||||
return error
|
||||
|
||||
@@ -83,7 +83,6 @@ export default {
|
||||
id: uId,
|
||||
email: uEmail
|
||||
}
|
||||
this.getPublicKey()
|
||||
let timer = setTimeout(() => {
|
||||
this.form.setFieldsValue({ email: this.model.email })
|
||||
clearTimeout(timer)
|
||||
@@ -93,17 +92,22 @@ export default {
|
||||
}
|
||||
},
|
||||
getPublicKey() {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
return new Promise(resolve => {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
}).finally(() => {
|
||||
resolve(this.rsaPublicKey)
|
||||
})
|
||||
})
|
||||
},
|
||||
handleOk() {
|
||||
const that = this
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
this.form.validateFields(async (err, values) => {
|
||||
if (!err) {
|
||||
that.confirmLoading = true
|
||||
let params = Object.assign(this.model, values)
|
||||
await this.getPublicKey()
|
||||
params.emailPassword = encrypt(this.rsaPublicKey, values.emailPassword)
|
||||
params.rsaPublicKey = this.rsaPublicKey
|
||||
console.log('修改授权码提交数据', params)
|
||||
|
||||
@@ -166,7 +166,8 @@ export default {
|
||||
// update-begin author:wangshuai date:20200601 for: 退出登录跳转登录页面
|
||||
that.$router.push({ path: '/user/login' })
|
||||
// update-end author:wangshuai date:20200601 for: 退出登录跳转登录页面
|
||||
//window.location.reload()
|
||||
// 退出登录必须要刷新页面,否则会保留上一个用户的菜单权限
|
||||
window.location.reload()
|
||||
}).catch(err => {
|
||||
that.$message.error({
|
||||
title: '错误',
|
||||
|
||||
@@ -125,14 +125,17 @@ export default {
|
||||
return
|
||||
} else {
|
||||
this.username = uname
|
||||
this.getPublicKey()
|
||||
this.form.resetFields()
|
||||
this.visible = true
|
||||
}
|
||||
},
|
||||
getPublicKey() {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
return new Promise(resolve => {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
}).finally(() => {
|
||||
resolve(this.rsaPublicKey)
|
||||
})
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
@@ -147,9 +150,10 @@ export default {
|
||||
handleOk() {
|
||||
const that = this
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
this.form.validateFields(async (err, values) => {
|
||||
if (!err) {
|
||||
that.confirmLoading = true
|
||||
await this.getPublicKey()
|
||||
let params = {}
|
||||
params.username = this.username
|
||||
params.rsaPublicKey = this.rsaPublicKey
|
||||
|
||||
@@ -8,7 +8,8 @@ export const ProjectTypeEnums = {
|
||||
STANDARD_MEMBER_PRO: {name: '标协会员项目', value: 5},
|
||||
STANDARD_CERTIFICATE_PRO: {name: '标协证书项目', value: 6},
|
||||
DRAFT_PRO: {name: '起草组项目', value: 7},
|
||||
PACK_PRO: { name: '打包项目', value: 8 }
|
||||
PACK_PRO: { name: '打包项目', value: 8 },
|
||||
SAFETY_CENTER_PRO: { name: '功能安全中心项目', value: 9 }
|
||||
}
|
||||
|
||||
// 参会人员身份类型
|
||||
@@ -62,4 +63,30 @@ export const PayMode = {
|
||||
remittance: { name: '汇款', value: 1 },
|
||||
onSitePayment: { name: '现场缴费', value: 2 },
|
||||
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为批量删除
|
||||
*/
|
||||
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 {ACCESS_TOKEN, TENANT_ID} from '@/store/mutation-types'
|
||||
import store from '@/store'
|
||||
@@ -58,6 +58,8 @@ export const JeroListMixin = {
|
||||
superQueryParams: '',
|
||||
/** 高级查询拼接方式 */
|
||||
superQueryMatchType: 'and',
|
||||
// 新增的删除接口请求方式改成post,需要的模块设置成true
|
||||
postMethodDel: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -193,7 +195,9 @@ export const JeroListMixin = {
|
||||
content: '是否删除选中数据?',
|
||||
onOk: function () {
|
||||
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) {
|
||||
that.$message.success(res.message)
|
||||
// 判断当前删除的数据是否是最后一页的全部数据,如果是的话页码减一
|
||||
@@ -228,7 +232,9 @@ export const JeroListMixin = {
|
||||
title: '确认删除',
|
||||
content: '确定要删除此条数据吗?',
|
||||
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) {
|
||||
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)
|
||||
// console.log('------异常响应------', token)
|
||||
// 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) {
|
||||
case 403:
|
||||
notification.error({ message: '系统提示', description: '拒绝访问', duration: 4 })
|
||||
@@ -60,7 +66,7 @@ const err = (error) => {
|
||||
}
|
||||
break
|
||||
case 404:
|
||||
notification.error({ message: '系统提示', description: '很抱歉,资源未找到!', duration: 4 })
|
||||
tipFlag && notification.error({ message: '系统提示', description: '很抱歉,资源未找到!', duration: 4 })
|
||||
break
|
||||
case 504:
|
||||
notification.error({ message: '系统提示', description: '网络超时' })
|
||||
@@ -76,7 +82,7 @@ const err = (error) => {
|
||||
}
|
||||
break
|
||||
default:
|
||||
notification.error({
|
||||
tipFlag && notification.error({
|
||||
message: '系统提示',
|
||||
description: data.message,
|
||||
duration: 4
|
||||
|
||||
@@ -120,44 +120,44 @@ export default {
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
}, {
|
||||
title: '企业名称',
|
||||
align: 'center',
|
||||
width: 300,
|
||||
dataIndex: 'companyName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '姓名',
|
||||
align: 'center',
|
||||
width: 280,
|
||||
width: 300,
|
||||
dataIndex: 'name',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '性别',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
width: 100,
|
||||
dataIndex: 'gender_dictText'
|
||||
}, {
|
||||
title: '职务',
|
||||
align: 'center',
|
||||
width: 280,
|
||||
width: 300,
|
||||
dataIndex: 'post',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '手机号',
|
||||
align: 'center',
|
||||
width: 140,
|
||||
width: 175,
|
||||
dataIndex: 'phone'
|
||||
},{
|
||||
title: '角色',
|
||||
align: 'center',
|
||||
width: 140,
|
||||
width: 175,
|
||||
dataIndex: 'roleCode_dictText'
|
||||
}, {
|
||||
title: '创建时间',
|
||||
align: 'center',
|
||||
width: 150,
|
||||
dataIndex: 'createTime'
|
||||
}, {
|
||||
title: '企业名称',
|
||||
align: 'center',
|
||||
width: 280,
|
||||
dataIndex: 'companyName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
// }, {
|
||||
// title: '创建时间',
|
||||
// align: 'center',
|
||||
// width: 150,
|
||||
// dataIndex: 'createTime'
|
||||
}, {
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
|
||||
@@ -122,7 +122,6 @@ export default {
|
||||
},
|
||||
edit(record) {
|
||||
this.form.resetFields()
|
||||
this.getRSAPublicKeyFunc()
|
||||
this.model = Object.assign({}, record)
|
||||
// 回显企业
|
||||
this.model.companyId = {
|
||||
@@ -148,8 +147,15 @@ export default {
|
||||
* 获取公钥
|
||||
* */
|
||||
getRSAPublicKeyFunc() {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
// getRSAPublicKey().then(res => {
|
||||
// this.rsaPublicKey = res.result
|
||||
// })
|
||||
return new Promise(resolve => {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
}).finally(() => {
|
||||
resolve(this.rsaPublicKey)
|
||||
})
|
||||
})
|
||||
},
|
||||
close() {
|
||||
@@ -164,7 +170,7 @@ export default {
|
||||
this.confirmLoading = true
|
||||
const that = this
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
this.form.validateFields(async (err, values) => {
|
||||
if (!err) {
|
||||
let httpurl = ''
|
||||
let method = 'post'
|
||||
@@ -173,6 +179,7 @@ export default {
|
||||
} else {
|
||||
httpurl += this.url.edit
|
||||
}
|
||||
await this.getRSAPublicKeyFunc()
|
||||
const formData = Object.assign(this.model, values)
|
||||
formData.companyName = this.selectedCompany.companyName
|
||||
formData.companyId = this.selectedCompany.id
|
||||
|
||||
@@ -305,7 +305,7 @@
|
||||
:signed-contact-id="signedContactId"
|
||||
: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>
|
||||
|
||||
<!-- 会员项目选择-->
|
||||
|
||||
@@ -112,6 +112,14 @@ import '@/assets/less/TableExpand.less'
|
||||
export default {
|
||||
name: 'SelectMeetingProjectModule',
|
||||
mixins: [JeroListMixin],
|
||||
props: {
|
||||
// 项目类型,1--普通项目;2--工作组项目;3--会议项目;4--会员项目
|
||||
projectType: {
|
||||
type: Number,
|
||||
requird: false,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
components: {
|
||||
JDate,
|
||||
JYearDate,
|
||||
@@ -310,6 +318,7 @@ export default {
|
||||
|
||||
let submitData = []
|
||||
let projectItem
|
||||
console.log(this.selectionRows)
|
||||
this.selectedRowKeys.forEach(item => {
|
||||
projectItem = {
|
||||
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>
|
||||
</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>
|
||||
|
||||
<!-- 表格区域beign -->
|
||||
@@ -88,6 +95,7 @@ export default {
|
||||
mixins: [JeroListMixin],
|
||||
data() {
|
||||
return {
|
||||
activeIndex: 'childProject',
|
||||
disableMixinCreated: true,
|
||||
url: {
|
||||
list: '/index/overallDepartmentStatistics',
|
||||
@@ -104,6 +112,15 @@ export default {
|
||||
this.loadData(1)
|
||||
},
|
||||
methods: {
|
||||
toggleEcharts(key) {
|
||||
if (key === this.activeIndex) {
|
||||
return
|
||||
} else {
|
||||
this.activeIndex = key
|
||||
this.loadData()
|
||||
this.$forceUpdate()
|
||||
}
|
||||
},
|
||||
formatMoney,
|
||||
loadData(arg) {
|
||||
if (!this.url.list) {
|
||||
@@ -114,8 +131,12 @@ export default {
|
||||
if (arg === 1) {
|
||||
this.ipagination.current = 1
|
||||
}
|
||||
let typeEnum = {
|
||||
packProject: 1,
|
||||
childProject: 2
|
||||
}
|
||||
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
|
||||
getAction(this.url.list, params).then((res) => {
|
||||
if (res.success) {
|
||||
@@ -188,6 +209,11 @@ export default {
|
||||
let chartDom = document.getElementById('departmentTotal')
|
||||
let myChart = echarts.init(chartDom)
|
||||
let option
|
||||
let provideNumber = 8
|
||||
if(chartDom) {
|
||||
const chartDomWidth = chartDom.offsetWidth
|
||||
provideNumber = Math.floor(chartDomWidth / 200)
|
||||
}
|
||||
|
||||
option = {
|
||||
color: ['#069F99', '#FFA17A'],
|
||||
@@ -234,7 +260,7 @@ export default {
|
||||
formatter: function (params) {
|
||||
let newParamsName = '' // 最终拼接成的字符串
|
||||
let paramsNameNumber = params.length // 实际标签的个数
|
||||
let provideNumber = 8 // 每行能显示的字的个数
|
||||
// let provideNumber = provideNumber // 每行能显示的字的个数
|
||||
let rowNumber = Math.ceil(paramsNameNumber / provideNumber) // 换行的话,需要显示几行,向上取整
|
||||
/**
|
||||
* 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
|
||||
@@ -334,6 +360,7 @@ export default {
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
//height: auto;
|
||||
}
|
||||
|
||||
@@ -368,4 +395,38 @@ export default {
|
||||
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>
|
||||
@@ -1,30 +1,39 @@
|
||||
<!-- 分类统计-->
|
||||
<template>
|
||||
<div class="container">
|
||||
<div class="title">收入分类统计
|
||||
<a-tree-select
|
||||
:multiple="false"
|
||||
show-search
|
||||
:replaceFields="{value:'orgCode'}"
|
||||
allowClear
|
||||
tree-default-expand-all
|
||||
tree-node-filter-prop="title"
|
||||
@change="changeDepart"
|
||||
style="width:20%"
|
||||
:dropdownStyle="{ maxHeight: '200px',maxWidth:'100px','overflow-x':'hidden',' overflo-y': 'auto' }"
|
||||
:treeData="treeDepartData"
|
||||
v-model="queryParam.departCode"
|
||||
placeholder="请选择部门">
|
||||
</a-tree-select>
|
||||
<j-year-date style="width:20%" class="year" placeholder="请选择年份" v-model="queryParam.year" @change="loadData"></j-year-date>
|
||||
</div>
|
||||
<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
|
||||
:multiple="false"
|
||||
show-search
|
||||
:replaceFields="{value:'orgCode'}"
|
||||
allowClear
|
||||
tree-default-expand-all
|
||||
tree-node-filter-prop="title"
|
||||
@change="changeDepart"
|
||||
style="width:20%"
|
||||
:dropdownStyle="{ maxHeight: '200px',maxWidth:'100px','overflow-x':'hidden',' overflo-y': 'auto' }"
|
||||
:treeData="treeDepartData"
|
||||
v-model="queryParam.departCode"
|
||||
placeholder="请选择部门">
|
||||
</a-tree-select>
|
||||
<j-year-date style="width:20%" class="year" placeholder="请选择年份" v-model="queryParam.year" @change="loadData"></j-year-date>
|
||||
</div>
|
||||
<div class="operator sub-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>
|
||||
<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>
|
||||
<div class="echarts-box" id="incomeSort"></div>
|
||||
<!-- 表格区域beign -->
|
||||
@@ -46,6 +55,12 @@
|
||||
<div class="table-text">{{ text }}</div>
|
||||
</a-tooltip>
|
||||
</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">
|
||||
<a-tooltip>
|
||||
@@ -102,6 +117,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
activeIndex: 'income',
|
||||
projectActiveIndex: 'childProject', // 打包项目、打包子项目选中的索引
|
||||
echartsInstace: null,
|
||||
columns,
|
||||
url: {
|
||||
@@ -118,6 +134,15 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
formatMoney,
|
||||
projectToggleEcharts(key) {
|
||||
if (key === this.projectActiveIndex) {
|
||||
return
|
||||
} else {
|
||||
this.projectActiveIndex = key
|
||||
this.loadData()
|
||||
this.$forceUpdate()
|
||||
}
|
||||
},
|
||||
toggleEcharts(key) {
|
||||
if (key === this.activeIndex) {
|
||||
return
|
||||
@@ -163,7 +188,11 @@ export default {
|
||||
confirmAmount: 2,
|
||||
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) {
|
||||
let dataSource = res.result
|
||||
this.initColumns(res.result)
|
||||
@@ -177,7 +206,7 @@ export default {
|
||||
let dataIndex = 'key' + index
|
||||
tableData[0][dataIndex] = item.money
|
||||
// tableData[1][dataIndex] = item.value ? item.value +'%' :''
|
||||
if(index !== 5){
|
||||
if(index !== 6){
|
||||
tableData[1][dataIndex] = item.value ? item.value + '%' :''
|
||||
}else {
|
||||
tableData[1][dataIndex] = '100%'
|
||||
@@ -188,7 +217,7 @@ export default {
|
||||
})
|
||||
},
|
||||
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) => {
|
||||
return pre.concat({value: val.value, name: val.name_dictText, money: val.money})
|
||||
}, [])
|
||||
@@ -213,8 +242,8 @@ export default {
|
||||
legend: {
|
||||
bottom: '2%',
|
||||
right: '2%',
|
||||
padding: [0,70, 0, 70],
|
||||
itemGap:40 // 图例之间的间距
|
||||
padding: [0, 70, 10, 70],
|
||||
itemGap: 20 // 图例之间的间距
|
||||
},
|
||||
labelLine: {
|
||||
lineStyle: {
|
||||
@@ -260,7 +289,7 @@ export default {
|
||||
* 处理表头
|
||||
* */
|
||||
initColumns(data) {
|
||||
const newData = data.slice(0,5)
|
||||
const newData = data.slice(0,6)
|
||||
this.columns = [
|
||||
{
|
||||
title: '',
|
||||
@@ -272,7 +301,9 @@ export default {
|
||||
]
|
||||
newData.map((item, index) => {
|
||||
this.columns.push({
|
||||
title: item.name_dictText,
|
||||
// title: item.name_dictText,
|
||||
slots:{title: 'key' + index},
|
||||
['key' + index]:item.name_dictText,
|
||||
align: 'center',
|
||||
width: 80,
|
||||
dataIndex: 'key' + index,
|
||||
@@ -283,7 +314,7 @@ export default {
|
||||
title: '总数',
|
||||
align: 'center',
|
||||
width: 70,
|
||||
dataIndex: 'key5',
|
||||
dataIndex: 'key6',
|
||||
scopedSlots: {customRender: 'allMoney'}
|
||||
},)
|
||||
},
|
||||
@@ -347,24 +378,36 @@ export default {
|
||||
right: 20px;
|
||||
top: 20px;
|
||||
width: 180px;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
border: 1px solid #069F99;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
&-left {
|
||||
width: 33.3%;
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
border-right: 1px solid #069F99;
|
||||
}
|
||||
|
||||
&-right {
|
||||
width: 33.3%;
|
||||
width: 50%;
|
||||
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 {
|
||||
background: #069F99;
|
||||
color: #fff;
|
||||
@@ -373,7 +416,7 @@ export default {
|
||||
.echarts-box {
|
||||
min-width: 300px;
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
height: 440px;
|
||||
}
|
||||
|
||||
.point {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<!-- 未收账款统计-->
|
||||
<template>
|
||||
<div class="container">
|
||||
<div class="title">应收账款
|
||||
<div class="title">应收账款</div>
|
||||
<div class="search-class">
|
||||
<a-tree-select
|
||||
:multiple="false"
|
||||
show-search
|
||||
@@ -17,14 +18,6 @@
|
||||
placeholder="请选择部门">
|
||||
</a-tree-select>
|
||||
</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>
|
||||
<!-- 表格区域beign -->
|
||||
<div style="width: 100%">
|
||||
@@ -184,7 +177,7 @@ export default {
|
||||
initEcharts(data) {
|
||||
let color = ['#069F99', '#88C87E ', '#6D7FD0', '#FA9D81', '#A5B3FF']
|
||||
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)
|
||||
echartsData = this.initPoint(echartsData, color)
|
||||
let chartDom = document.getElementById('notReceived')
|
||||
@@ -206,10 +199,10 @@ export default {
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
left:'15%',
|
||||
bottom: '2%',
|
||||
right: '2%',
|
||||
padding: [0, 50, 0, 50],
|
||||
width: '80%',
|
||||
// padding: [0, 50, 0, 50],
|
||||
type: 'scroll',
|
||||
itemGap:50
|
||||
},
|
||||
labelLine: {
|
||||
@@ -371,6 +364,10 @@ export default {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.search-class {
|
||||
position: relative;
|
||||
padding-top: 21px;
|
||||
}
|
||||
|
||||
.active {
|
||||
background: #069F99;
|
||||
@@ -380,7 +377,7 @@ export default {
|
||||
.echarts-box {
|
||||
min-width: 300px;
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
height: 440px;
|
||||
}
|
||||
|
||||
.point {
|
||||
|
||||
@@ -240,6 +240,9 @@ export default {
|
||||
},
|
||||
legend: {
|
||||
data: [ '预估收入金额', '确认收入金额', '开票金额', '到账金额'],
|
||||
lineStyle: {
|
||||
type: 'solid'
|
||||
},
|
||||
right: '2%'
|
||||
},
|
||||
grid: {
|
||||
|
||||
@@ -224,6 +224,9 @@ export default {
|
||||
},
|
||||
legend: {
|
||||
data: ['预估收入金额', '确认收入金额', '开票金额', '到账金额'],
|
||||
lineStyle: {
|
||||
type: 'solid'
|
||||
},
|
||||
right: '2%'
|
||||
},
|
||||
grid: {
|
||||
|
||||
@@ -326,6 +326,9 @@ export default {
|
||||
legend: {
|
||||
type: 'scroll',
|
||||
data: legend,
|
||||
lineStyle: {
|
||||
type: 'solid'
|
||||
},
|
||||
right: '2%'
|
||||
},
|
||||
grid: {
|
||||
|
||||
@@ -304,6 +304,9 @@ export default {
|
||||
legend: {
|
||||
type: 'scroll',
|
||||
data: legend,
|
||||
lineStyle: {
|
||||
type: 'solid'
|
||||
},
|
||||
right: '2%'
|
||||
},
|
||||
grid: {
|
||||
|
||||
@@ -136,6 +136,7 @@ export default {
|
||||
this.form.resetFields()
|
||||
this.model = Object.assign({}, record)
|
||||
this.visible = true
|
||||
this.model.principalIdB = this.model.principalIdB || undefined
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.model, 'name', 'abbreviation', 'remarks', 'principalIdA', 'principalIdB'))
|
||||
})
|
||||
|
||||
@@ -258,7 +258,7 @@ export default {
|
||||
created() {
|
||||
this.draftingGroupProject = this.$route.query.draftingGroupProject
|
||||
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.loadData(1)
|
||||
},
|
||||
|
||||
@@ -97,16 +97,12 @@
|
||||
</template>
|
||||
|
||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||
<a @click="goUnderStudyProject(record)" v-has="'draftingGroup:underStudyProject'"
|
||||
v-if="record.checkoutOperation === 1">在研项目</a>
|
||||
<a @click="goUnderStudyProject(record)" v-has="'draftingGroup:underStudyProject'">在研项目</a>
|
||||
<a @click="goFilesMaintenance(record)" v-has="'draftingGroup:fileMaintenance'">其他分发资料</a>
|
||||
<a @click="goConferenceMaintenance(record)" v-has="'draftingGroup:meetingMaintenance'">起草组会议</a>
|
||||
<a @click="copyDraftGroup(record.id)" v-has="'draftingGroup:copy'"
|
||||
v-if="record.checkoutOperation === 1">复制</a>
|
||||
<a @click="handleEdit(record)" v-has="'draftingGroup:edit'"
|
||||
v-if="record.checkoutOperation === 1">基本信息维护</a>
|
||||
<a @click="handleDelete(record.id)" v-has="'draftingGroup:delete'"
|
||||
v-if="record.checkoutOperation === 1">删除</a>
|
||||
<a @click="copyDraftGroup(record.id)" v-has="'draftingGroup:copy'">复制</a>
|
||||
<a @click="handleEdit(record)" v-has="'draftingGroup:edit'">基本信息维护</a>
|
||||
<a @click="handleDelete(record.id)" v-has="'draftingGroup:delete'">删除</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</div>
|
||||
@@ -281,7 +277,7 @@ export default {
|
||||
path: '/projectManagement/WorkingGroupProjectDataMaintenance',
|
||||
query: {
|
||||
draftingGroupId: record.id,
|
||||
canOperate: record.checkoutOperation === 1
|
||||
canOperate: true
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -295,7 +291,7 @@ export default {
|
||||
query: {
|
||||
draftingGroupProject: record.draftingGroupProject,
|
||||
draftingGroupProjectId: record.id,
|
||||
canOperate: record.checkoutOperation === 1,
|
||||
canOperate: true,
|
||||
meetingType: '7'
|
||||
}
|
||||
})
|
||||
@@ -325,7 +321,7 @@ export default {
|
||||
query: {
|
||||
draftingGroupProject: record.draftingGroupProject,
|
||||
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>
|
||||
<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>-->
|
||||
</div>
|
||||
<!-- /操作按钮区域-end-->
|
||||
@@ -150,6 +154,8 @@
|
||||
<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-batch-check-module ref="draftingGroupMemberUnitBatchCheckModule" @ok="modalFormOk" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -165,6 +171,8 @@ import PreviewFile from '../../components/jero/PreviewFile'
|
||||
import {createQcCode} from '@api/incomeMeetingApi'
|
||||
import DraftingGroupMemberUnitCheckModule from '@views/draftingGroup/modules/DraftingGroupMemberUnitCheckModule'
|
||||
import { ProjectTypeEnums } from '../../enums/commonEnums'
|
||||
import DraftingGroupMemberUnitBatchCheckModule
|
||||
from '@views/draftingGroup/modules/DraftingGroupMemberUnitBatchCheckModule'
|
||||
|
||||
// eslint-disable-next-line no-undef,no-unused-vars
|
||||
const Base64 = require('js-base64').Base64
|
||||
@@ -172,6 +180,7 @@ const Base64 = require('js-base64').Base64
|
||||
export default {
|
||||
name: 'DraftingGroupMemberUnitMaintenance',
|
||||
components: {
|
||||
DraftingGroupMemberUnitBatchCheckModule,
|
||||
DraftingGroupMemberUnitCheckModule,
|
||||
PageHeaderTitle,
|
||||
ProjectDetailModal,
|
||||
@@ -358,6 +367,15 @@ export default {
|
||||
this.initWorkGroupData()
|
||||
},
|
||||
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) {
|
||||
this.$refs.draftingGroupMemberUnitCheckModule.open(record)
|
||||
},
|
||||
@@ -385,7 +403,7 @@ export default {
|
||||
this.spinning = true
|
||||
this.draftingGroupProject = this.$route.query.draftingGroupProject || ''
|
||||
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.importParam.draftGroupId = this.draftingGroupProjectId
|
||||
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
|
||||
*/
|
||||
handleAddContact(index) {
|
||||
if (this.model.payDraftingGroupSubItemContactsList.length >= 10) {
|
||||
this.$message.warn('最多添加十个企业联系人')
|
||||
if (this.model.payDraftingGroupSubItemContactsList.length >= 20) {
|
||||
this.$message.warn('最多添加二十个企业联系人')
|
||||
return
|
||||
}
|
||||
let obj = {
|
||||
|
||||
@@ -175,9 +175,13 @@
|
||||
:disabled="record.projectType === 3 && record.registerCheckResult === '0'">来款</a>
|
||||
<!-- 2024年2月变更 :disabled="record.needInvoice === 0" -->
|
||||
<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: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>
|
||||
|
||||
@@ -239,7 +243,14 @@
|
||||
@ok="modalFormOk"
|
||||
>
|
||||
</invoice-info-change-module>
|
||||
|
||||
<!--修改待确认金额-->
|
||||
<edit-receivable-amount
|
||||
ref="editReceivableAmount"
|
||||
:project-id="selectProjectId"
|
||||
:project-type="selectProjectType"
|
||||
@ok="modalFormOk"
|
||||
>
|
||||
</edit-receivable-amount>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -263,6 +274,7 @@ import {getPayConfirmList} from '../../../api/incomePaymentsApi'
|
||||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||
import InvoiceInfoChangeModule from '../../packManagement/modules/InvoiceInfoChangeModule'
|
||||
import { formatMoney } from '@/utils/formatMoney'
|
||||
import EditReceivableAmount from './modules/EditReceivableAmount'
|
||||
|
||||
// 项目类型 数据字典 的定义 和数据库的保持一致
|
||||
const ProjectTypeEnums = {
|
||||
@@ -290,7 +302,9 @@ export default {
|
||||
AuditProofModule,
|
||||
AuditModal,
|
||||
ConfirmStageModule,
|
||||
InvoiceInfoChangeModule
|
||||
InvoiceInfoChangeModule,
|
||||
// 修改待确收金额
|
||||
EditReceivableAmount
|
||||
},
|
||||
mixins: [JeroListMixin],
|
||||
data() {
|
||||
@@ -398,7 +412,7 @@ export default {
|
||||
dataIndex: 'action',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 300,
|
||||
width: 380,
|
||||
scopedSlots: {customRender: 'action'}
|
||||
}
|
||||
],
|
||||
@@ -632,6 +646,15 @@ export default {
|
||||
// this.confirmStageVisible = true
|
||||
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>
|
||||
@@ -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>
|
||||
@@ -176,7 +176,7 @@
|
||||
<a-row :gutter="24">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<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-col>
|
||||
</a-row>
|
||||
@@ -404,12 +404,12 @@
|
||||
<template v-if="!isWasic">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="会议费用" :labelCol="labelCol" :wrapperCol="{ xs: {span: 24},sm: {span: 16}}">
|
||||
<!-- 起草组会议费用默认0不可修改 -->
|
||||
<!-- 起草组会议、海外会议、功能安全中心会议费用默认0不可修改 -->
|
||||
<a-input placeholder="请输入会议费用"
|
||||
:maxLength='50'
|
||||
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"
|
||||
@blur="addZero"
|
||||
:disabled="meetingType === '7'"
|
||||
:disabled="disabledMeetingCosts"
|
||||
v-decorator="[ 'meetingCosts',validateInviteCode.meetingCosts]"></a-input>
|
||||
<span class="yuan">元/人</span>
|
||||
</a-form-item>
|
||||
@@ -630,7 +630,7 @@ import JImageUpload from '@comp/jero/JImageUpload'
|
||||
import {checkMeetingName} from '@/utils/validateOnly'
|
||||
import {addZero} from '@/utils/util'
|
||||
import {money, phoneReg} from '@/utils/validate'
|
||||
import { LinkTopicsEnums } from '../../../enums/commonEnums'
|
||||
import {LinkTopicsEnums, MeetingTypeEnums} from '../../../enums/commonEnums'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -763,6 +763,16 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 禁用会议费用
|
||||
disabledMeetingCosts () {
|
||||
// 禁用的会议类型
|
||||
const arr = [
|
||||
MeetingTypeEnums.draftGroup.value, // 起草组会议
|
||||
MeetingTypeEnums.overseas.value, // 海外会议
|
||||
MeetingTypeEnums.safetyCenter.value, // 功能安全中心会议
|
||||
]
|
||||
return arr.includes(this.meetingType)
|
||||
},
|
||||
// 是否从工作组会议维护来的
|
||||
isWorkGroupMeetType() {
|
||||
if (this.$route.query.workingGroupProjectId) {
|
||||
@@ -802,6 +812,14 @@ export default {
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
},
|
||||
// 是否功能安全中心来的
|
||||
isSafetyCenterId() {
|
||||
if (this.$route.query.safetyCenterId) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -922,8 +940,13 @@ export default {
|
||||
// 后端需要的注册签到时间
|
||||
this.newSignInTime = [this.model.startSignInTime, this.model.endSignInTime]
|
||||
|
||||
// 起草组会议费用默认0
|
||||
if (this.meetingType === '7') {
|
||||
// 部分会议费用默认0
|
||||
const zeroCostscArr = [
|
||||
MeetingTypeEnums.draftGroup.value, // 起草组会议
|
||||
MeetingTypeEnums.overseas.value, // 海外会议
|
||||
MeetingTypeEnums.safetyCenter.value, // 功能安全中心会议
|
||||
]
|
||||
if (zeroCostscArr.includes(this.meetingType)) {
|
||||
this.model.meetingCosts = '0.00'
|
||||
this.QRcodeBool = false
|
||||
}
|
||||
@@ -1039,6 +1062,11 @@ export default {
|
||||
formData.meetingType = '7'
|
||||
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.endTime = this.newConvokeTime[1]
|
||||
@@ -1187,7 +1215,8 @@ export default {
|
||||
* 添加会议联系人
|
||||
* */
|
||||
addMeetingContacts(index) {
|
||||
if (this.model.meetingContactsList.length >= 5) {
|
||||
// 国际研讨会不限制5个会议联系人
|
||||
if ((this.meetingType !== MeetingTypeEnums.internationalSeminar.value) && (this.model.meetingContactsList.length >= 5)) {
|
||||
this.$message.warning('最多添加5个会议联系人')
|
||||
return
|
||||
}
|
||||
@@ -1400,6 +1429,18 @@ export default {
|
||||
add: '/meeting/draftGroupMeeting/add',
|
||||
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"
|
||||
@click="copy(showSignUpHref)">复制</i>
|
||||
</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="签到二维码"/>
|
||||
<!-- <i class="copy primary-color" @click="copy(signInUrl)">复制</i>-->
|
||||
</a-col>
|
||||
@@ -174,7 +175,7 @@
|
||||
<!-- 查询区域 -->
|
||||
<div class="table-page-search-wrapper">
|
||||
<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-form-item label="参会单位">
|
||||
<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-form-item>
|
||||
</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="审核">
|
||||
<j-dict-select-tag v-model="queryParam.checkResult" placeholder="请选择"
|
||||
dictCode="signup_status"/>
|
||||
@@ -207,7 +208,7 @@
|
||||
</a-form-item>
|
||||
</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="来款年份">
|
||||
<j-year-date style="width:100%" placeholder="请选择来款年份" v-model="queryParam.particularYear"></j-year-date>
|
||||
</a-form-item>
|
||||
@@ -226,29 +227,30 @@
|
||||
dictCode="guest_type"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="是否打包">
|
||||
<j-dict-select-tag v-model="queryParam.pack" placeholder="请选择是否打包" @input="selectIdentity"
|
||||
dictCode="yn"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero">
|
||||
<a-form-item label="缴费方式">
|
||||
<j-dict-select-tag
|
||||
v-model="queryParam.payMode"
|
||||
placeholder="请选择缴费方式"
|
||||
dictCode="meeting_pay_type"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero">
|
||||
<a-form-item label="发票项目">
|
||||
<j-dict-select-tag
|
||||
v-model="queryParam.invoiceProject"
|
||||
placeholder="请选择发票项目"
|
||||
dictCode="invoice_project"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<template v-if="!isSafetyCenter">
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="是否打包">
|
||||
<j-dict-select-tag v-model="queryParam.pack" placeholder="请选择是否打包" @input="selectIdentity"
|
||||
dictCode="yn"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero">
|
||||
<a-form-item label="缴费方式">
|
||||
<j-dict-select-tag
|
||||
v-model="queryParam.payMode"
|
||||
placeholder="请选择缴费方式"
|
||||
dictCode="meeting_pay_type"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero">
|
||||
<a-form-item label="发票项目">
|
||||
<j-dict-select-tag
|
||||
v-model="queryParam.invoiceProject"
|
||||
placeholder="请选择发票项目"
|
||||
dictCode="invoice_project"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</template>
|
||||
<!-- 国际研讨会 且为 WASIC时显示 -->
|
||||
<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="会议名称">
|
||||
@@ -273,6 +275,56 @@
|
||||
</span>
|
||||
</a-col>
|
||||
</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>
|
||||
</div>
|
||||
<!-- 查询区域-END -->
|
||||
@@ -292,6 +344,10 @@
|
||||
<a-button type="primary" @click="batchSetGuestsUploadFileFlag" v-has:[authorCode.guestsUploadFileFlag]="'attendance:guestsUploadFileFlag'">
|
||||
批量设置资料状态
|
||||
</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不需要合并开票 -->
|
||||
<!-- 变更将此功能添加到到账开票了 暂时注释 2021-09-16 -->
|
||||
<!-- <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"
|
||||
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)"
|
||||
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>
|
||||
<!-- 非成员报名被拒绝 无法编辑 -->
|
||||
<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>
|
||||
<!--详情-->
|
||||
<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>
|
||||
<!--设置资料状态--即嘉宾是否可以在企业端上传资料-->
|
||||
<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 { formatMoney } from '@/utils/formatMoney'
|
||||
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
||||
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||
|
||||
|
||||
|
||||
export default {
|
||||
@@ -458,6 +518,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
MeetingTypeEnums,
|
||||
description: '参会情况',
|
||||
columns: [
|
||||
{
|
||||
@@ -570,6 +631,123 @@ export default {
|
||||
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: {},
|
||||
// 其他会议的参会情况的权限编码
|
||||
@@ -582,7 +760,9 @@ export default {
|
||||
delete: 'otherMeetingSituation:delete',
|
||||
auditRecord: 'otherMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'otherMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'otherMeetingSituation:guestsUploadFileFlag'
|
||||
guestsUploadFileFlag: 'otherMeetingSituation:guestsUploadFileFlag',
|
||||
lookVoucher: 'otherMeetingSituation:lookVoucher' // 查看凭证
|
||||
|
||||
},
|
||||
// 分标委会议的参会情况权限编码
|
||||
committeeMeetingCode: {
|
||||
@@ -594,7 +774,8 @@ export default {
|
||||
delete: 'committeeMeetingSituation:delete',
|
||||
auditRecord: 'committeeMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'committeeMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'committeeMeetingSituation:guestsUploadFileFlag'
|
||||
guestsUploadFileFlag: 'committeeMeetingSituation:guestsUploadFileFlag',
|
||||
lookVoucher: 'committeeMeetingSituation:lookVoucher' // 查看凭证
|
||||
},
|
||||
// 工作组会议的参会情况的权限编码
|
||||
workGroupMeetingCode: {
|
||||
@@ -606,7 +787,9 @@ export default {
|
||||
delete: 'workGroupMeetingSituation:delete',
|
||||
auditRecord: 'workGroupMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'workGroupMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'workGroupMeetingSituation:guestsUploadFileFlag'
|
||||
batchAuditSignUpInfo: 'workGroupMeetingSituation:batchAuditSignUp', // 批量审核报名信息
|
||||
guestsUploadFileFlag: 'workGroupMeetingSituation:guestsUploadFileFlag',
|
||||
lookVoucher: 'workGroupMeetingSituation:lookVoucher' // 查看凭证
|
||||
},
|
||||
// 国际研讨会的参会情况的权限编码
|
||||
internalMeetingCode: {
|
||||
@@ -618,7 +801,8 @@ export default {
|
||||
delete: 'internalMeetingSituation:delete',
|
||||
auditRecord: 'internalMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'internalMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'internalMeetingSituation:guestsUploadFileFlag'
|
||||
guestsUploadFileFlag: 'internalMeetingSituation:guestsUploadFileFlag',
|
||||
lookVoucher: 'internalMeetingSituation:lookVoucher' // 查看凭证
|
||||
},
|
||||
// 标协会议的参会情况的权限编码
|
||||
standardsMeetingCode: {
|
||||
@@ -630,7 +814,8 @@ export default {
|
||||
delete: 'standardsMeetingSituation:delete',
|
||||
auditRecord: 'standardsMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'standardsMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'standardsMeetingSituation:guestsUploadFileFlag'
|
||||
guestsUploadFileFlag: 'standardsMeetingSituation:guestsUploadFileFlag',
|
||||
lookVoucher: 'standardsMeetingSituation:lookVoucher' // 查看凭证
|
||||
},
|
||||
// 理事会的参会情况的权限编码
|
||||
councilMeetingCode: {
|
||||
@@ -642,7 +827,8 @@ export default {
|
||||
delete: 'councilMeetingSituation:delete',
|
||||
auditRecord: 'councilMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'councilMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'councilMeetingSituation:guestsUploadFileFlag'
|
||||
guestsUploadFileFlag: 'councilMeetingSituation:guestsUploadFileFlag',
|
||||
lookVoucher: 'councilMeetingSituation:lookVoucher' // 查看凭证
|
||||
},
|
||||
// 起草组会议的参会情况的权限编码
|
||||
draftGroupMeetingCode: {
|
||||
@@ -654,8 +840,33 @@ export default {
|
||||
delete: 'draftGroupMeetingSituation:delete',
|
||||
auditRecord: 'draftGroupMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'draftGroupMeetingSituation:auditSignUp',
|
||||
batchAuditSignUpInfo: 'draftGroupMeetingSituation:batchAuditSignUp', // 批量审核报名信息
|
||||
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,
|
||||
// url: {
|
||||
// list: '/meeting/payMeetingSituation/page',
|
||||
@@ -720,6 +931,22 @@ export default {
|
||||
exportXlsUrl: '/meeting/draftGroupMeetingSituation/exportXls',
|
||||
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: {},
|
||||
meetingType: '',
|
||||
@@ -739,6 +966,14 @@ export default {
|
||||
},
|
||||
created() {
|
||||
// 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)
|
||||
// 获取会议详情
|
||||
@@ -755,7 +990,9 @@ export default {
|
||||
// 列表表头只有国际研讨会有对接人字段
|
||||
if (this.currentMeetingInfo.meetingType !== '3') {
|
||||
let index = this.columns.findIndex(item => item.dataIndex === 'dockName')
|
||||
this.columns.splice(index, 1)
|
||||
if (index !== -1) {
|
||||
this.columns.splice(index, 1)
|
||||
}
|
||||
}
|
||||
// 计算会议费用 会议费用为0 添加参会人不显示邮寄信息与缴费信息 标协会议
|
||||
if (this.currentMeetingInfo.meetingType === '2' && this.currentMeetingInfo.meetingCostsVip) {
|
||||
@@ -802,6 +1039,14 @@ export default {
|
||||
this.signInQRCode = await this.generateQRCode(this.signInUrl)
|
||||
},
|
||||
computed: {
|
||||
// 是否功能安全中心
|
||||
isSafetyCenter() {
|
||||
return this.$route.query.meetingType === MeetingTypeEnums.safetyCenter.value
|
||||
},
|
||||
// 是否海外会议
|
||||
isOverseasMeeting () {
|
||||
return this.$route.query.meetingType === MeetingTypeEnums.overseas.value
|
||||
},
|
||||
// 标协会议类型
|
||||
tbMeetingType() {
|
||||
if (this.currentMeetingInfo.tbMeetingType === '1') {
|
||||
@@ -832,6 +1077,12 @@ export default {
|
||||
return this.councilMeetingUrl
|
||||
case '7':
|
||||
return this.draftGroupMeetingUrl
|
||||
// 海外会议
|
||||
case MeetingTypeEnums.overseas.value:
|
||||
return this.overseasMeetingUrl
|
||||
// 功能安全中心会议
|
||||
case MeetingTypeEnums.safetyCenter.value:
|
||||
return this.safetyCenterMeetingUrl
|
||||
// 为了解决控制台报错写的
|
||||
default:return this.workGroupMeetingUrl
|
||||
}
|
||||
@@ -917,8 +1168,10 @@ export default {
|
||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||
param['selections'] = this.selectedRowKeys.join(',')
|
||||
}
|
||||
// 增加特有的企业名称排序
|
||||
param.column = 'companyName'
|
||||
// 增加特有的企业名称排序,海外会议按创建时间
|
||||
if (!this.isOverseasMeeting) {
|
||||
param.column = 'companyName'
|
||||
}
|
||||
downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
|
||||
},
|
||||
/*
|
||||
@@ -932,12 +1185,18 @@ export default {
|
||||
* 添加参会人
|
||||
* */
|
||||
addParticipant() {
|
||||
let path = '/incomePayments/meetManage/SignUpInfoEdit'
|
||||
// 海外会议跳转另一个页面
|
||||
if (this.isOverseasMeeting) {
|
||||
path = '/incomePayments/meetManage/SignUpInfoEditOverseas'
|
||||
}
|
||||
this.$router.push({
|
||||
path: '/incomePayments/meetManage/SignUpInfoEdit',
|
||||
path,
|
||||
query: {
|
||||
meetingType: this.currentMeetingInfo.meetingType,
|
||||
meetingId: this.$route.query.id,
|
||||
costBool: this.meetingCostBool
|
||||
costBool: this.meetingCostBool,
|
||||
safetyCenterId: this.currentMeetingInfo.safetyCenterId
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -945,13 +1204,19 @@ export default {
|
||||
* 编辑参会人
|
||||
* */
|
||||
handleEdit(record) {
|
||||
let path = '/incomePayments/meetManage/SignUpInfoEdit'
|
||||
// 海外会议跳转另一个页面
|
||||
if (this.isOverseasMeeting) {
|
||||
path = '/incomePayments/meetManage/SignUpInfoEditOverseas'
|
||||
}
|
||||
this.$router.push({
|
||||
path: '/incomePayments/meetManage/SignUpInfoEdit',
|
||||
path,
|
||||
query: {
|
||||
id: record.id,
|
||||
meetingId: this.$route.query.id,
|
||||
meetingType: this.currentMeetingInfo.meetingType,
|
||||
costBool: this.meetingCostBool
|
||||
costBool: this.meetingCostBool,
|
||||
safetyCenterId: this.currentMeetingInfo.safetyCenterId
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -1036,6 +1301,11 @@ export default {
|
||||
return '理事会会议'
|
||||
case '7':
|
||||
return '起草组会议'
|
||||
case MeetingTypeEnums.overseas.value:
|
||||
return '海外会议'
|
||||
// 功能安全中心会议
|
||||
case MeetingTypeEnums.safetyCenter.value:
|
||||
return MeetingTypeEnums.safetyCenter.name
|
||||
default:
|
||||
return '其他会议'
|
||||
}
|
||||
@@ -1138,8 +1408,49 @@ export default {
|
||||
case '7':
|
||||
this.authorCode = Object.assign({}, this.draftGroupMeetingCode)
|
||||
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-col>
|
||||
</a-row>
|
||||
<!-- 只有编辑的时候并且缴费方式不是打包, 显示 待确收金额 税率 税额 等信息 -->
|
||||
<template v-if="!!$route.query.id && identifyType === 2 && !payModeBool">
|
||||
|
||||
<!-- 只有编辑的时候并且缴费方式不是打包, 显示 待确收金额 税率 税额 等信息 !!$route.query.id && identifyType === 2 && !payModeBool -->
|
||||
<!--20240801 修改-缴费方式为 打包的时候也要待确收金额-->
|
||||
<template v-if="!!$route.query.id && identifyType === 2">
|
||||
<!-- 到账后 待确收金额 税率不能编辑 -->
|
||||
<a-row :gutter="24">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
|
||||
@@ -28,28 +28,28 @@
|
||||
<!--个人信息end-->
|
||||
|
||||
<!-- 不是国际研讨会的 -->
|
||||
<div v-if="meetingType !== '3' ">
|
||||
<!-- 功能安全中心不显示其他信息 -->
|
||||
<div v-if="(meetingType !== '3') && (meetingType !== MeetingTypeEnums.safetyCenter.value)">
|
||||
<!--行程信息begin-->
|
||||
<template>
|
||||
<div class="item-title">行程信息</div>
|
||||
<a-row :gutter="24" class="flex-col">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<label class="label">是否住酒店:</label><span>{{ model.checkInHotel_dictText }}</span>
|
||||
</a-col>
|
||||
<!-- 抵达时间和离开时间 填写了才显示 -->
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="!!model.arrivalTime">
|
||||
<label class="label">抵达时间:</label><span>{{ model.arrivalTime }}</span>
|
||||
</a-col>
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="!!model.departureTime">
|
||||
<label class="label">离开时间:</label><span>{{ model.departureTime }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</template>
|
||||
<div class="item-title">行程信息</div>
|
||||
<a-row :gutter="24" class="flex-col">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<label class="label">是否住酒店:</label><span>{{ model.checkInHotel_dictText }}</span>
|
||||
</a-col>
|
||||
<!-- 抵达时间和离开时间 填写了才显示 -->
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="!!model.arrivalTime">
|
||||
<label class="label">抵达时间:</label><span>{{ model.arrivalTime }}</span>
|
||||
</a-col>
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="!!model.departureTime">
|
||||
<label class="label">离开时间:</label><span>{{ model.departureTime }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<!--行程信息end-->
|
||||
|
||||
<!--其他会议的身份选择参会人才显示 缴费信息和邮寄信息 -->
|
||||
<!--缴费信息begin-->
|
||||
<template v-if="model.identity === 2">
|
||||
<!-- 功能安全中心不显示缴费信息 -->
|
||||
<template v-if="(model.identity === 2)">
|
||||
<div class="item-title">缴费信息</div>
|
||||
<a-row :gutter="24" class="flex-col">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
@@ -270,6 +270,7 @@ import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||
import {getSingUpUserInfo} from '@api/incomeMeetingApi'
|
||||
import JImageUpload from '@comp/jero/JImageUpload'
|
||||
import PreviewFile from '@comp/jero/PreviewFile'
|
||||
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -293,6 +294,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
MeetingTypeEnums,
|
||||
model: {}, // 会议信息
|
||||
meetingType: '' // 会议类型
|
||||
}
|
||||
|
||||
@@ -12,21 +12,26 @@
|
||||
<add-meeting-company @change="changeCompany" v-decorator="['companyId',validatorRules.companyId]"
|
||||
placeholder="请选择参会企业"
|
||||
full-company-info
|
||||
:customListUrl="safetyCenterId ? companyList : ''"
|
||||
:customListParams="safetyCenterId ? customListParams : {}"
|
||||
:disabled="model.checkResult === 1"
|
||||
:maxLength='50'>
|
||||
</add-meeting-company>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-row :gutter="24" type="flex">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<select-contacts :selected-company="selectedCompany"
|
||||
placeholder="请选择参会人"
|
||||
v-decorator="['companyContactId',validatorRules.companyContactId]"
|
||||
:maxLength='50'
|
||||
:can-add="!safetyCenterId"
|
||||
:disabled="model.checkResult === 1"
|
||||
:init-contacts="selectPerson"
|
||||
:customListFn="safetyCenterId ? getContactsByCompanyBySafetyCenter : null"
|
||||
:customListParams="safetyCenterId ? customListParams : {}"
|
||||
@change="changeContact"
|
||||
ref="selectMailContacts"
|
||||
@ok="addContactsOk"></select-contacts>
|
||||
@@ -42,6 +47,15 @@
|
||||
</a-form-item>
|
||||
</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-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<!--内部企业的时候不允许进行修改参会身份-->
|
||||
@@ -144,7 +158,6 @@
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<div class="center">
|
||||
<a-button class="submit" type="primary" @click="handleOk" v-preventclick>确定</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 SeminarPartnerForm from '@views/incomePayments/meetManage/modules/SeminarPartnerForm'
|
||||
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 {judgeCompanyIsPackaged, judgeInternalEnterprise} from '../../../api/incomePaymentsApi'
|
||||
import {httpAction} from '@api/manage'
|
||||
import pick from 'lodash.pick'
|
||||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||
import { queryCompanyInfoById } from '../../../api/api'
|
||||
import { LinkTopicsEnums } from '../../../enums/commonEnums'
|
||||
import {LinkTopicsEnums, MeetingTypeEnums} from '../../../enums/commonEnums'
|
||||
import WasicTopicData from './modules/wasicStaticData'
|
||||
|
||||
export default {
|
||||
@@ -185,6 +198,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
MeetingTypeEnums,
|
||||
description: '报名信息编辑页',
|
||||
form: this.$form.createForm(this),
|
||||
confirmLoading: false,
|
||||
@@ -233,8 +247,11 @@ export default {
|
||||
guestType:{
|
||||
rules: [{required: true, message: '请选择嘉宾类型'}],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
post: {
|
||||
rules: [{required: true, message: '请输入职务'}],
|
||||
validateTrigger: 'blur'
|
||||
}
|
||||
|
||||
},
|
||||
// 身份类型
|
||||
identifyType: null,
|
||||
@@ -289,6 +306,16 @@ export default {
|
||||
add: '/meeting/draftGroupMeetingSituation/add',
|
||||
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:'添加参会人',
|
||||
// 当前参会企业是否是内部企业
|
||||
isInternalEnterprise: false,
|
||||
@@ -297,7 +324,17 @@ export default {
|
||||
// 可选会议名称的数组
|
||||
linkTopicsOptionArr: [],
|
||||
// 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() {
|
||||
@@ -340,10 +377,17 @@ export default {
|
||||
return this.councilMeetingUrl
|
||||
case '7':
|
||||
return this.draftGroupMeetingUrl
|
||||
// 海外会议
|
||||
case MeetingTypeEnums.overseas.value:
|
||||
return this.overseasMeetingUrl
|
||||
// 功能安全中心会议
|
||||
case MeetingTypeEnums.safetyCenter.value:
|
||||
return this.safetyCenterMeetingUrl
|
||||
}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
getContactsByCompanyBySafetyCenter,
|
||||
// 验证选择会议名称的情况
|
||||
checkChoiceTopic(rules, value, callback) {
|
||||
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"
|
||||
cancelText="关闭">
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<section class="check">
|
||||
<section class="check" v-if="!batchCheckSignUp">
|
||||
<h3>报名信息</h3>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
@@ -63,46 +63,49 @@
|
||||
<label class="color-999">订单后四位:</label>
|
||||
<span class="color-black">{{ model.orderCode }}</span></a-col>
|
||||
</a-row>
|
||||
<!--非查看状态 显示审核数据-->
|
||||
<template v-if="!lookVoucherBool">
|
||||
|
||||
<h3>审核</h3>
|
||||
<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="1">
|
||||
通过
|
||||
</a-radio>
|
||||
<a-radio value='2'>
|
||||
驳回
|
||||
</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-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="1">
|
||||
通过
|
||||
</a-radio>
|
||||
<a-radio value='2'>
|
||||
驳回
|
||||
</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>
|
||||
</template>
|
||||
</a-spin>
|
||||
<template slot="footer">
|
||||
<a-button @click="handleCancel">关闭</a-button>
|
||||
@@ -115,6 +118,7 @@
|
||||
import JImageUpload from '@comp/jero/JImageUpload'
|
||||
import {httpAction} from '@api/manage'
|
||||
import {getSingUpUserInfo} from '@api/incomeMeetingApi'
|
||||
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||
|
||||
export default {
|
||||
name: 'AuditModal',
|
||||
@@ -185,7 +189,9 @@ export default {
|
||||
// 审核凭证
|
||||
check: '/meeting/workGroupMeetingSituation/check',
|
||||
// 审核报名信息
|
||||
checkSignUp: '/meeting/workGroupMeetingSituation/checkRegister'
|
||||
checkSignUp: '/meeting/workGroupMeetingSituation/checkRegister',
|
||||
// 批量审核报名信息
|
||||
checkSignUpBatch: '/meeting/workGroupMeetingSituation/checkRegisterBatch',
|
||||
},
|
||||
// 分标委会议url
|
||||
committeeMeetingUrl: {
|
||||
@@ -220,14 +226,27 @@ export default {
|
||||
// 审核凭证
|
||||
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,
|
||||
// 是否是审核报名信息
|
||||
checkSignBool: false,
|
||||
// 是否批量 核查报名信息
|
||||
batchCheckSignUp: false,
|
||||
// 参会人id
|
||||
signUpPersonId: '',
|
||||
// 是否为查看凭证
|
||||
lookVoucherBool: false
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
@@ -238,12 +257,23 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/*
|
||||
* record- 审核参数
|
||||
* signUp- 是否审核报名信息
|
||||
* */
|
||||
open(record, signUp) {
|
||||
this.form.resetFields()
|
||||
this.signUpPersonId = this.situationId ? this.situationId : record.id
|
||||
// 控制行程信息显示 审核凭证不显示
|
||||
this.checkSignBool = signUp || false
|
||||
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' ){
|
||||
meetingType = record.meetingType + ''
|
||||
@@ -256,11 +286,19 @@ export default {
|
||||
this.url = Object.assign({}, this.createUrlByMeetingType(meetingType))
|
||||
this.visible = true
|
||||
},
|
||||
/* 查看凭证
|
||||
* record- 审核参数
|
||||
* */
|
||||
lookVoucher(record) {
|
||||
this.lookVoucherBool = true
|
||||
this.open(record, false)
|
||||
},
|
||||
close() {
|
||||
this.$emit('close')
|
||||
this.visible = false
|
||||
this.model = {}
|
||||
this.signUpPersonId = ''
|
||||
this.lookVoucherBool = false
|
||||
},
|
||||
handleOk() {
|
||||
const that = this
|
||||
@@ -268,17 +306,24 @@ export default {
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
that.confirmLoading = true
|
||||
const formData = Object.assign({}, values)
|
||||
let httpurl = ''
|
||||
if (that.checkSignBool) {
|
||||
// 审核报名信息的接口
|
||||
httpurl = this.url.checkSignUp
|
||||
if(this.batchCheckSignUp) {
|
||||
// 批量 审核报名信息的接口
|
||||
httpurl = this.url.checkSignUpBatch
|
||||
formData.ids = this.model.ids
|
||||
} else {
|
||||
// 审核报名信息的接口
|
||||
httpurl = this.url.checkSignUp
|
||||
formData.id = this.model.id
|
||||
}
|
||||
} else {
|
||||
// 审核凭证的接口
|
||||
httpurl = this.url.check
|
||||
formData.id = this.model.id
|
||||
}
|
||||
let method = 'post'
|
||||
const formData = Object.assign({}, values)
|
||||
formData.id = this.model.id
|
||||
httpAction(httpurl, formData, method).then((res) => {
|
||||
if (res.success) {
|
||||
that.$message.success(res.message)
|
||||
@@ -335,6 +380,9 @@ export default {
|
||||
return this.councilMeetingUrl
|
||||
case '7':
|
||||
return this.draftGroupMeetingUrl
|
||||
// 功能安全中心
|
||||
case MeetingTypeEnums.safetyCenter.value:
|
||||
return this.safetyCenterMeetingUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
<script>
|
||||
import { httpAction } from '@api/manage'
|
||||
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||
const requestUrlObj = {
|
||||
workGroupMeetingUrl: '/meeting/workGroupMeetingSituation/setGuestsUploadFile', // 工作组
|
||||
standardsMeetingUrl: '/meeting/payMeetingSituation/setGuestsUploadFile', // 标协会议
|
||||
@@ -36,6 +37,7 @@ const requestUrlObj = {
|
||||
committeeMeetingUrl: '/meeting/committeeMeetingSituation/setGuestsUploadFile', // 分标委会议的url
|
||||
councilMeetingUrl: '/meeting/councilMeetingSituation/setGuestsUploadFile', // 理事会的url
|
||||
draftGroupMeetingUrl: '/meeting/draftGroupMeetingSituation/setGuestsUploadFile', // 起草组
|
||||
safetyCenterMeetingUrl: '/meeting/safetyCenterMeetingSituation/setGuestsUploadFile', // 功能安全中心url
|
||||
}
|
||||
|
||||
export default {
|
||||
@@ -68,6 +70,9 @@ export default {
|
||||
return requestUrlObj.councilMeetingUrl
|
||||
case 7:
|
||||
return requestUrlObj.draftGroupMeetingUrl
|
||||
// 功能安全中心
|
||||
case Number(MeetingTypeEnums.safetyCenter.value):
|
||||
return requestUrlObj.safetyCenterMeetingUrl
|
||||
// 为了解决控制台报错写的
|
||||
default:return requestUrlObj.workGroupMeetingUrl
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<!-- 以表格的形式展示 所有的文件 -->
|
||||
<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"
|
||||
>
|
||||
<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 store from '@/store'
|
||||
import { isExternalTerminal } from '../../../../utils/util'
|
||||
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||
const FILE_TYPE_ALL = 'all'
|
||||
|
||||
const columns = [
|
||||
@@ -208,6 +209,18 @@ export default {
|
||||
uploadFile: '/meeting/draftGroupMeeting/uploadFile',
|
||||
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() {
|
||||
@@ -356,8 +369,8 @@ export default {
|
||||
file.uploadGoOn = true
|
||||
const fileSize = file.size // 上传的文件大小
|
||||
const fileType = file.type // 上传的文件类型
|
||||
if (fileSize > 1024 * 1024 * 100) {
|
||||
this.$message.warning('文件大小限制为100M')
|
||||
if (fileSize > 1024 * 1024 * 200) {
|
||||
this.$message.warning('文件大小限制为200M')
|
||||
this.uploadGoOn = false
|
||||
file.uploadGoOn = 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>
|
||||
</a-form-item>
|
||||
</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-range-picker
|
||||
style="width: 100%"
|
||||
v-model="queryParam.estimatedArrivalDate"
|
||||
format="YYYY-MM-DD"
|
||||
:placeholder="['开始时间', '结束时间']"
|
||||
@change="onDateChange"
|
||||
<j-month-date placeholder="请选择开始日期"
|
||||
class="query-group-cust"
|
||||
v-model="queryParam[rangeMonthKey.start]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM"
|
||||
: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>
|
||||
@@ -179,17 +187,20 @@ import { formatMoney } from '@/utils/formatMoney'
|
||||
import {getAction} from '@api/manage'
|
||||
import {getFileInfo} from '@api/api'
|
||||
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
||||
import { MonthRangeMixin } from '../../../mixins/MonthRangeMixins'
|
||||
import JMonthDate from '../../../components/tools/JMonthDate'
|
||||
|
||||
export default {
|
||||
name: 'SafeguardMemberList',
|
||||
mixins: [JeroListMixin, mixinDevice],
|
||||
mixins: [JeroListMixin, mixinDevice, MonthRangeMixin],
|
||||
components: {
|
||||
JYearDate,
|
||||
SafeguardMemberModal,
|
||||
ProjectDetailModal,
|
||||
StatusSlot,
|
||||
PageHeaderTitle,
|
||||
PreviewFile
|
||||
PreviewFile,
|
||||
JMonthDate
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -369,10 +380,6 @@ export default {
|
||||
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>
|
||||
</a-form-item>
|
||||
</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-range-picker
|
||||
style="width: 100%"
|
||||
v-model="queryParam.estimatedArrivalDateArr"
|
||||
format="YYYY-MM-DD"
|
||||
:placeholder="['开始时间', '结束时间']"
|
||||
@change="onDateChange"
|
||||
<j-month-date placeholder="请选择开始日期"
|
||||
class="query-group-cust"
|
||||
v-model="queryParam[rangeMonthKey.start]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM"
|
||||
: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>
|
||||
@@ -180,7 +188,7 @@
|
||||
|
||||
<!-- 开票-->
|
||||
<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>
|
||||
|
||||
<!-- 确收 -->
|
||||
@@ -227,10 +235,12 @@ import {getPayConfirmList, getStardsMemberProjectById, memberDrawTicket} from '@
|
||||
import MemberEquityModal from './modules/MemberEquityModal'
|
||||
import MemberCopyModal from './modules/MemberCopyModal'
|
||||
import { ProjectTypeEnums } from '@/enums/commonEnums'
|
||||
import { MonthRangeMixin } from '../../../mixins/MonthRangeMixins'
|
||||
import JMonthDate from '../../../components/tools/JMonthDate'
|
||||
|
||||
export default {
|
||||
name: 'SafeguardStardsMemberList',
|
||||
mixins: [JeroListMixin, mixinDevice],
|
||||
mixins: [JeroListMixin, mixinDevice, MonthRangeMixin],
|
||||
components: {
|
||||
ProjectDetailModal,
|
||||
StatusSlot,
|
||||
@@ -238,7 +248,8 @@ export default {
|
||||
PreviewFile,
|
||||
SafeguardStardsMemberModal,
|
||||
MemberEquityModal,
|
||||
MemberCopyModal
|
||||
MemberCopyModal,
|
||||
JMonthDate
|
||||
},
|
||||
computed: {
|
||||
importExcelUrl: function () {
|
||||
@@ -373,6 +384,10 @@ export default {
|
||||
}
|
||||
],
|
||||
disableMixinCreated: true,
|
||||
rangeMonthKey:{
|
||||
start: 'estimatedArrivalDate_begin',
|
||||
end: 'estimatedArrivalDate_end',
|
||||
},
|
||||
url: {
|
||||
list: '/member/tbMemberProjectSubitem/page',
|
||||
exportXlsUrl: '/member/tbMemberProjectSubitem/exportXls',
|
||||
@@ -447,8 +462,8 @@ export default {
|
||||
this.uploadGoOn = true
|
||||
file.uploadGoOn = true
|
||||
const fileSize = file.size // 上传的文件大小
|
||||
if (fileSize > 1024 * 1024 * 100) {
|
||||
this.$message.warning('文件大小限制为100M')
|
||||
if (fileSize > 1024 * 1024 * 200) {
|
||||
this.$message.warning('文件大小限制为200M')
|
||||
this.uploadGoOn = false
|
||||
file.uploadGoOn = false
|
||||
return false
|
||||
|
||||
+13
-2
@@ -60,6 +60,7 @@
|
||||
</template>
|
||||
|
||||
<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="handleMaintainMeeting(record)" v-has="'council:meetingMaintenance'">理事会会议</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-member-modal ref="memberModalForm" @ok="modalFormOk"></council-maintenance-member-modal>
|
||||
<!-- 导入到标协会员 -->
|
||||
<import-member-module-modal ref="importMemberModuleModal" @ok="modalFormOk"></import-member-module-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -104,10 +107,11 @@ import IconImg from '../../../../assets/imgs/icon/icon_stander_member.png'
|
||||
import { getAction } from '../../../../api/manage'
|
||||
import CouncilMaintenanceModal from './modules/CouncilMaintenanceModal'
|
||||
import CouncilMaintenanceMemberModal from './modules/CouncilMaintenanceMemberModal'
|
||||
import ImportMemberModuleModal from './modules/ImportMemberModuleModal'
|
||||
|
||||
export default {
|
||||
name: 'CouncilMaintenanceList',
|
||||
components: { PageHeaderTitle, CouncilMaintenanceModal, CouncilMaintenanceMemberModal },
|
||||
components: { PageHeaderTitle, CouncilMaintenanceModal, CouncilMaintenanceMemberModal, ImportMemberModuleModal },
|
||||
mixins: [JeroListMixin],
|
||||
data() {
|
||||
return {
|
||||
@@ -139,7 +143,7 @@ export default {
|
||||
title: '操作',
|
||||
dataIndex: 'operation',
|
||||
align: 'center',
|
||||
width: 420,
|
||||
width: 580,
|
||||
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-col :xl="12" :sm="24">
|
||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-date placeholder="请选择预估到账日期"
|
||||
<j-month-date placeholder="请选择预估到账日期"
|
||||
style="width: 100%;"
|
||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM-DD"
|
||||
date-format="YYYY-MM"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -276,14 +276,14 @@ import { checkAssociatedProject } from '@/utils/projectCheck'
|
||||
import SelectRevenueContract from '../../../../components/tools/SelectRevenueContract'
|
||||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
|
||||
import JDate from '@/components/tools/JDate'
|
||||
import JMonthDate from '@/components/tools/JMonthDate'
|
||||
|
||||
export default {
|
||||
name: 'SafeguardMemberModal',
|
||||
mixins:[CalcAmountMixin],
|
||||
components: {
|
||||
JUpload,
|
||||
JDate,
|
||||
JMonthDate,
|
||||
JDictSelectTag,
|
||||
CompanySelect,
|
||||
// ContactManagementModule,
|
||||
|
||||
@@ -150,11 +150,11 @@
|
||||
<a-row :gutter="24">
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-date placeholder="请选择预估到账日期"
|
||||
<j-month-date placeholder="请选择预估到账日期"
|
||||
style="width: 100%;"
|
||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM-DD"
|
||||
date-format="YYYY-MM"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -265,7 +265,7 @@
|
||||
|
||||
<script>
|
||||
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 CompanySelect from '@/components/company/CompanySelect'
|
||||
import SelectContacts from '@/components/company/SelectContacts'
|
||||
@@ -283,7 +283,7 @@ export default {
|
||||
mixins: [CalcAmountMixin],
|
||||
components: {
|
||||
JUpload,
|
||||
JDate,
|
||||
JMonthDate,
|
||||
JDictSelectTag,
|
||||
CompanySelect,
|
||||
SelectContacts,
|
||||
|
||||
@@ -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>
|
||||
@@ -279,6 +279,12 @@ const defaultTableColumns = [
|
||||
width: 140,
|
||||
dataIndex: 'principalName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '排序',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
dataIndex: 'sortNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '待确收金额',
|
||||
align: 'center',
|
||||
@@ -364,7 +370,7 @@ export default {
|
||||
dataIndex: 'email'
|
||||
}, {
|
||||
title: '打包费用总计',
|
||||
dataIndex: 'packChargeTotal'
|
||||
dataIndex: 'receivableAmount'
|
||||
}, {
|
||||
title: '实际到账费用',
|
||||
dataIndex: 'receiptExpense'
|
||||
|
||||
@@ -146,11 +146,11 @@
|
||||
</a-col>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-date placeholder="请选择预估到账日期"
|
||||
<j-month-date placeholder="请选择预估到账日期"
|
||||
style="width: 100%;"
|
||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM-DD"
|
||||
date-format="YYYY-MM"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -248,12 +248,12 @@ import { addZero } from '../../../utils/util'
|
||||
import SelectPrincipal from '@comp/company/SelectPrincipal.vue'
|
||||
import SelectRevenueContract from '@comp/tools/SelectRevenueContract'
|
||||
import JUpload from '@comp/jero/JUpload'
|
||||
import JDate from '@comp/tools/JDate'
|
||||
import JMonthDate from '@comp/tools/JMonthDate'
|
||||
import {checkAssociatedProject} from '@/utils/projectCheck'
|
||||
|
||||
export default {
|
||||
name: 'PackCompanyModule',
|
||||
components: {JDate, JUpload, SelectRevenueContract, CompanySelect, SelectContacts, JYearDate, SelectPrincipal },
|
||||
components: {JMonthDate, JUpload, SelectRevenueContract, CompanySelect, SelectContacts, JYearDate, SelectPrincipal },
|
||||
props: {
|
||||
// 合同号是否可编辑
|
||||
isContractNumDisabled: {
|
||||
|
||||
@@ -168,6 +168,12 @@ export default {
|
||||
width: 280,
|
||||
dataIndex: 'principalName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '排序',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
dataIndex: 'sortNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},{
|
||||
title: '企业联系人',
|
||||
align: 'center',
|
||||
|
||||
@@ -98,8 +98,8 @@
|
||||
<!-- 操作按钮区域 -->
|
||||
<div class="table-operator">
|
||||
<!-- <a-button @click="handleAdd" type="primary" icon="plus" v-has="'otherMeeting:add'">新增</a-button>-->
|
||||
<a-button type="primary" icon="download" @click="handleExportXls('会议汇总')" v-has="'allmeeting:export'">导出
|
||||
</a-button>
|
||||
<a-button type="primary" icon="download" @click="handleExportXls('会议汇总')" v-has="'allmeeting:export'">导出</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 @click="releaseMeeing" type="primary" v-has="'otherMeeting:release'">发布</a-button>-->
|
||||
</div>
|
||||
@@ -151,6 +151,7 @@ import '@/assets/less/TableExpand.less'
|
||||
import JDate from '@comp/tools/JDate'
|
||||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||
import moment from 'moment'
|
||||
import {MeetingTypeEnums} from '@/enums/commonEnums'
|
||||
|
||||
export default {
|
||||
name: 'AllMeetingList',
|
||||
@@ -296,6 +297,10 @@ export default {
|
||||
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')
|
||||
// 功能安全中心会议
|
||||
pathMap.set(MeetingTypeEnums.safetyCenter.value,'/incomePayments/meetManage/AttendanceFunctionalSafetyCenter')
|
||||
this.$router.push({
|
||||
path: pathMap.get(record.meetingType+''),
|
||||
query: {
|
||||
@@ -330,6 +335,12 @@ export default {
|
||||
}
|
||||
return startValue.valueOf() > endValue.valueOf()
|
||||
},
|
||||
// 进入会议酒店推荐页面
|
||||
handleEnterRecommendHotelPage() {
|
||||
this.$router.push({
|
||||
path: '/projectManagement/allMeetingList/RecommendHotelPage'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -42,14 +42,22 @@
|
||||
<j-year-date style="width:100%" placeholder="请选择运行年份" v-model="queryParam.year"></j-year-date>
|
||||
</a-form-item>
|
||||
</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-range-picker
|
||||
style="width: 100%"
|
||||
v-model="queryParam.estimatedArrivalDate"
|
||||
format="YYYY-MM-DD"
|
||||
:placeholder="['开始时间', '结束时间']"
|
||||
@change="onDateChange"
|
||||
<j-month-date placeholder="请选择开始日期"
|
||||
class="query-group-cust"
|
||||
v-model="queryParam[rangeMonthKey.start]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM"
|
||||
: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>
|
||||
@@ -138,6 +146,7 @@
|
||||
<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="handleCopy(record)" v-has="'generalProject:copy'">复制</a>
|
||||
<a @click="handleDelete(record.id)" v-has="'generalProject:delete'">删除</a>
|
||||
</span>
|
||||
</a-table>
|
||||
@@ -159,11 +168,13 @@ import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||
import IconProjectManagement from '@/assets/imgs/icon/icon_project_management.png'
|
||||
import { formatMoney } from '../../utils/formatMoney'
|
||||
import {getPayConfirmList} from '@api/incomePaymentsApi'
|
||||
import { MonthRangeMixin } from '../../mixins/MonthRangeMixins'
|
||||
import JMonthDate from '../../components/tools/JMonthDate'
|
||||
|
||||
export default {
|
||||
name: 'GeneralProjectManagement',
|
||||
components: { JYearDate, GeneralProjectModule, SelectPrincipal, ProjectDetailModal, StatusSlot, PageHeaderTitle },
|
||||
mixins: [JeroListMixin],
|
||||
components: { JYearDate, GeneralProjectModule, SelectPrincipal, ProjectDetailModal, StatusSlot, PageHeaderTitle, JMonthDate },
|
||||
mixins: [JeroListMixin, MonthRangeMixin],
|
||||
computed: {
|
||||
importExcelUrl: function () {
|
||||
return `${ window._CONFIG['domianURL'] }/${ this.url.importExcelUrl }`
|
||||
@@ -312,10 +323,12 @@ export default {
|
||||
this.$refs.basicInfo = basicInfo
|
||||
this.$refs.projectDetail.open(record)
|
||||
},
|
||||
onDateChange: function (value, dateString) {
|
||||
this.queryParam.estimatedArrivalStartDate = dateString[0]
|
||||
this.queryParam.estimatedArrivalEndDate = dateString[1]
|
||||
}
|
||||
// 复制功能
|
||||
handleCopy: function (record) {
|
||||
this.$refs.modalForm.copy(record)
|
||||
this.$refs.modalForm.title = '复制'
|
||||
this.$refs.modalForm.disableSubmit = false
|
||||
},
|
||||
}
|
||||
}
|
||||
</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-form-item>
|
||||
</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-range-picker
|
||||
style="width: 100%"
|
||||
v-model="queryParam.estimatedArrivalDate"
|
||||
format="YYYY-MM-DD"
|
||||
:placeholder="['开始时间', '结束时间']"
|
||||
@change="onDateChange"
|
||||
<j-month-date placeholder="请选择开始日期"
|
||||
class="query-group-cust"
|
||||
v-model="queryParam[rangeMonthKey.start]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM"
|
||||
: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-col>
|
||||
@@ -196,6 +220,7 @@
|
||||
<a @click="handleEditAccount(record)" :disabled="isAllowEditAccount(record)" v-has="'workingGroupMember:editAccount'">调账</a>
|
||||
<a @click="handleEdit(record)" v-has="'workingGroupMember:edit'">编辑</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>
|
||||
</a-table>
|
||||
</div>
|
||||
@@ -209,6 +234,8 @@
|
||||
<email-error-msg-modal ref="emailError"></email-error-msg-modal>
|
||||
|
||||
<work-group-set-label ref="workGroupSetLabel" @ok="modalFormOk"></work-group-set-label>
|
||||
<!--查看凭证-->
|
||||
<look-voucher-modal ref="lookVoucherModal" @ok="modalFormOk"></look-voucher-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -228,6 +255,10 @@ import EmailErrorMsgModal from './modules/EmailErrorMsgModal'
|
||||
import WorkGroupSetLabel from './modules/WorkGroupSetLabel'
|
||||
import { formatMoney } from '../../utils/formatMoney'
|
||||
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
|
||||
const Base64 = require('js-base64').Base64
|
||||
@@ -243,9 +274,11 @@ export default {
|
||||
WorkingGroupMemberSetChargeNotice,
|
||||
PreviewFile,
|
||||
EmailErrorMsgModal,
|
||||
WorkGroupSetLabel
|
||||
WorkGroupSetLabel,
|
||||
JMonthDate,
|
||||
LookVoucherModal
|
||||
},
|
||||
mixins: [JeroListMixin],
|
||||
mixins: [JeroListMixin, MonthRangeMixin],
|
||||
computed: {
|
||||
importExcelUrl: function () {
|
||||
return `${ window._CONFIG['domianURL'] }/${ this.url.importExcelUrl }`
|
||||
@@ -307,7 +340,9 @@ export default {
|
||||
deleteBatch: '/project/payWorkingGroupSubitem/deleteBatch',
|
||||
exportXlsUrl: '/project/payWorkingGroupSubitem/exportXls',
|
||||
importExcelUrl: '/project/payWorkingGroupSubitem/importExcel',
|
||||
downTemplateUrl: '/project/payWorkingGroupSubitem/downloadExcelModel'
|
||||
downTemplateUrl: '/project/payWorkingGroupSubitem/downloadExcelModel',
|
||||
// 查看凭证
|
||||
confirmVoucher: '/project/payWorkingGroupSubitem/confirmVoucher'
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
@@ -375,7 +410,24 @@ export default {
|
||||
width: 80,
|
||||
dataIndex: '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: '需要发票',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
@@ -408,7 +460,7 @@ export default {
|
||||
dataIndex: 'action',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 180,
|
||||
width: 220,
|
||||
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) {
|
||||
this.queryParam.estimatedArrivalStartDate = dateString[0]
|
||||
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 沟通后去掉了这个功能
|
||||
// searchReset() {
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
</template>
|
||||
|
||||
<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="handleDelete(record.id)" v-has="'fileMaintenance:delete'">删除</a>
|
||||
</span>
|
||||
@@ -79,6 +79,7 @@
|
||||
:project-type="projectType"
|
||||
:is-batch="isBatchDistribute"
|
||||
:record-id="dataId"
|
||||
:file-id="fileId"
|
||||
@ok="modalFormOk"></work-group-distribute-module>
|
||||
</div>
|
||||
</template>
|
||||
@@ -158,6 +159,7 @@ export default {
|
||||
distributeModalVisible: false,
|
||||
isBatchDistribute: false,
|
||||
dataId: '', // 资料id,传给分发
|
||||
fileId: '', // 文件id, 单个分发时查询用
|
||||
canOperate: true // 是否可操作(负责人B不可操作)
|
||||
}
|
||||
},
|
||||
@@ -184,6 +186,11 @@ export default {
|
||||
this.canOperate = this.$route.query.canOperate === 'true'
|
||||
this.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.loadData()
|
||||
@@ -204,8 +211,9 @@ export default {
|
||||
/**
|
||||
* 分发
|
||||
*/
|
||||
handleDistribute(id) {
|
||||
this.dataId = id
|
||||
handleDistribute(record) {
|
||||
this.fileId = record.fileId
|
||||
this.dataId = record.id
|
||||
this.distributeModalVisible = true
|
||||
this.isBatchDistribute = false
|
||||
},
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
<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="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-->
|
||||
<div class="tooltip">
|
||||
@@ -103,7 +104,10 @@
|
||||
</template>
|
||||
|
||||
<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>
|
||||
|
||||
<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 IconWorkingGruop from '@/assets/imgs/icon/icon_working_group.png'
|
||||
import { copyWorkingGroup } from '../../api/incomePaymentsApi'
|
||||
import { getAction } from '../../api/manage'
|
||||
import { downloadFile, getAction } from '../../api/manage'
|
||||
import WorkingGroupMemberUnitModule from '@views/projectManagement/modules/WorkingGroupMemberUnitModule'
|
||||
|
||||
export default {
|
||||
@@ -154,7 +158,8 @@ export default {
|
||||
url: {
|
||||
list: '/project/payWorkingGroup/list',
|
||||
delete: '/project/payWorkingGroup/delete',
|
||||
deleteBatch: '/project/payWorkingGroup/deleteBatch'
|
||||
deleteBatch: '/project/payWorkingGroup/deleteBatch',
|
||||
exportAllFileUrl: '/project/payWorkingGroup/exportAllFile',
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
@@ -176,6 +181,12 @@ export default {
|
||||
align: 'center',
|
||||
width: 130,
|
||||
dataIndex: 'principalNameA'
|
||||
}, {
|
||||
title: '排序',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
dataIndex: 'sortNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '收款进度',
|
||||
align: 'center',
|
||||
@@ -197,6 +208,11 @@ export default {
|
||||
lastQueryParam: {
|
||||
year: new Date().getFullYear().toString()
|
||||
},
|
||||
/* 排序参数 */
|
||||
isorter: {
|
||||
column: 'sortNo', // 排序顺序自定义 正序
|
||||
order: 'asc',
|
||||
},
|
||||
operateData: [] // 进行操作权限校验时使用的数据
|
||||
}
|
||||
},
|
||||
@@ -207,6 +223,16 @@ export default {
|
||||
this.$refs.workingGroupMemberUnitModule.title = '批量新增成员单位'
|
||||
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) {
|
||||
if (!this.url.list) {
|
||||
this.$message.error('请设置url.list属性!')
|
||||
|
||||
@@ -143,11 +143,11 @@
|
||||
<a-row>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-date placeholder="请选择预估到账日期"
|
||||
<j-month-date placeholder="请选择预估到账日期"
|
||||
style="width: 100%;"
|
||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM-DD"
|
||||
date-format="YYYY-MM"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -254,11 +254,12 @@ import { USER_INFO } from '../../../store/mutation-types'
|
||||
import { money } from '../../../utils/validate'
|
||||
import { checkAssociatedProject } from '../../../utils/projectCheck'
|
||||
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 {
|
||||
name: 'GeneralProjectModule',
|
||||
components: { JYearDate, JUpload, JDate,CompanySelect, SelectPrincipal, SelectContacts, SelectRevenueContract ,JDictSelectTag},
|
||||
components: { JYearDate, JUpload, JMonthDate,CompanySelect, SelectPrincipal, SelectContacts, SelectRevenueContract ,JDictSelectTag},
|
||||
props: {
|
||||
// 收入合同关联时传入的企业信息,不可修改
|
||||
defaultChargeCompany: {
|
||||
@@ -406,6 +407,7 @@ export default {
|
||||
selectedMailContact: null, // 编辑时的邮寄联系人
|
||||
disabledCompany: false, // 企业是否可以编辑
|
||||
isAssociatedContract: false, // 是否已关联合同
|
||||
opeType: OpeTypeEnums.add.value, // 操作类型
|
||||
url: {
|
||||
add: '/project/payCommonProject/add',
|
||||
edit: '/project/payCommonProject/edit'
|
||||
@@ -415,6 +417,7 @@ export default {
|
||||
methods: {
|
||||
addZero,
|
||||
add() {
|
||||
this.opeType = OpeTypeEnums.add.value
|
||||
this.edit({})
|
||||
if (this.defaultChargeWay === 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) {
|
||||
if (this.defaultChargeCompany.hasOwnProperty.call(this.defaultChargeCompany, 'id')) {
|
||||
record.chargeCompany = {
|
||||
@@ -456,7 +466,7 @@ export default {
|
||||
record.contractNum = record.contractNum || undefined
|
||||
this.form.resetFields()
|
||||
this.model = Object.assign({}, record)
|
||||
if (this.model.id) {
|
||||
if (this.model.id || this.opeType === OpeTypeEnums.copy.value) {
|
||||
this.selectedContact = {
|
||||
id: this.model.contactsTemporaryId,
|
||||
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-form>
|
||||
</div>
|
||||
<!-- 操作按钮区域-->
|
||||
<div class="table-operator">
|
||||
<a-button type="primary" @click="checkAll()">全选</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
@@ -92,7 +96,9 @@ import {
|
||||
draftGroupPublishRemind
|
||||
} from '@api/incomePaymentsApi'
|
||||
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 {
|
||||
@@ -232,6 +238,47 @@ export default {
|
||||
// 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: {},
|
||||
labelCol: {
|
||||
xs: {span: 24},
|
||||
@@ -284,6 +331,12 @@ export default {
|
||||
this.filters.draftingGroupId = this.$route.query.draftingGroupProjectId
|
||||
this.newColumns = [...this.columns]
|
||||
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 {
|
||||
// 列表需要工作组id参数
|
||||
this.filters.workingGroupId = this.$route.query.workingGroupProjectId
|
||||
@@ -339,6 +392,10 @@ export default {
|
||||
// 起草组用起草组的发布提醒
|
||||
param.draftingGroupId = this.$route.query.draftingGroupProjectId
|
||||
requestFun = draftGroupPublishRemind
|
||||
} else if (this.$route.query.meetingType === MeetingTypeEnums.safetyCenter.value) {
|
||||
// 功能安全中心的发布提醒
|
||||
param.safetyCenterId = this.$route.query.projectId
|
||||
requestFun = draftGroupPublishRemind
|
||||
} else {
|
||||
// 工作组
|
||||
param.workingGroupId = this.$route.query.workingGroupProjectId
|
||||
@@ -403,8 +460,31 @@ export default {
|
||||
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>
|
||||
|
||||
@@ -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,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 单个分发时的文件Id
|
||||
fileId: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -265,7 +271,7 @@ export default {
|
||||
}
|
||||
// 非批量上传的时候传当前选中的文件id
|
||||
if(!this.isBatch) {
|
||||
param.fileId = this.recordId
|
||||
param.fileId = this.fileId
|
||||
}
|
||||
distributeMemberList(param).then(res => {
|
||||
if (res.success) {
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
</a-col>
|
||||
</a-row>
|
||||
<!-- 批量添加时显示) -->
|
||||
<!--todo 样式得调整,左侧和下面的成员单位应该保持一致。-->
|
||||
<!--样式得调整,左侧和下面的成员单位应该保持一致。-->
|
||||
<template v-if="isBatchAdd && model.workingGroupIdList && model.workingGroupIdList.length > 0">
|
||||
<a-row v-for="(_, index) in model.workingGroupIdList" :key="index + ''">
|
||||
<!-- 对齐其他表单单独设置col样式 -->
|
||||
@@ -209,7 +209,8 @@
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<template v-if="chargeWayType === 1 || chargeWayType === 2">
|
||||
<!--2024-07-03 去掉待确收金额相关数据-->
|
||||
<template v-if="!isBatchAdd && (chargeWayType === 1 || chargeWayType === 2)">
|
||||
<a-row>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="待确收金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
@@ -270,14 +271,15 @@
|
||||
</a-row>
|
||||
|
||||
</template>
|
||||
|
||||
<a-row>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-date placeholder="请选择预估到账日期"
|
||||
<j-month-date placeholder="请选择预估到账日期"
|
||||
style="width: 100%;"
|
||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM-DD"
|
||||
date-format="YYYY-MM"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -435,12 +437,13 @@ import { checkAssociatedProject } from '../../../utils/projectCheck'
|
||||
import SelectRevenueContract from '../../../components/tools/SelectRevenueContract'
|
||||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||||
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
|
||||
import JMonthDate from '@/components/tools/JMonthDate'
|
||||
import JDate from '@/components/tools/JDate'
|
||||
import {getAllWorkProjects} from '@api/incomeMeetingApi'
|
||||
|
||||
export default {
|
||||
name: 'WorkingGroupMemberUnitModule',
|
||||
components: { JUpload, JDate, CompanySelect, SelectContacts, SelectRevenueContract, JDictSelectTag },
|
||||
components: { JUpload, JDate, JMonthDate, CompanySelect, SelectContacts, SelectRevenueContract, JDictSelectTag },
|
||||
mixins: [CalcAmountMixin],
|
||||
props: {
|
||||
// 默认来款方式(收入合同新增工作组项目,来款方式默认为2--合同)
|
||||
@@ -1086,8 +1089,8 @@ export default {
|
||||
* @param index
|
||||
*/
|
||||
handleAddContact(index) {
|
||||
if (this.model.payWorkingGroupSubItemContactsList.length >= 10) {
|
||||
this.$message.warn('最多添加十个企业联系人')
|
||||
if (this.model.payWorkingGroupSubItemContactsList.length >= 20) {
|
||||
this.$message.warn('最多添加二十个企业联系人')
|
||||
return
|
||||
}
|
||||
let obj = {
|
||||
|
||||
@@ -15,14 +15,20 @@
|
||||
</span>
|
||||
<a-form :form="form">
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="工作组项目" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||
<a-col :span="12">
|
||||
<a-form-item label="工作组项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入工作组项目"
|
||||
v-decorator="['workingGroupProject',validatorRules.workingGroupProject]"
|
||||
:maxLength='50'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
||||
</a-form-item>
|
||||
</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-col :span="12">
|
||||
@@ -217,6 +223,10 @@ export default {
|
||||
rules: [{ required: true, message: '请输入项目名称' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
sortNo: {
|
||||
rules: [{ required: true, message: '请输入排序' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
year: {
|
||||
rules: [{ required: true, message: '请选择运行年份' }],
|
||||
validateTrigger: 'change'
|
||||
@@ -257,7 +267,7 @@ export default {
|
||||
this.model = Object.assign({}, record)
|
||||
this.visible = true
|
||||
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) {
|
||||
this.form.setFieldsValue({
|
||||
'year': (new Date().getFullYear()).toString(),
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
</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.paymentYear"></j-year-date>
|
||||
<a-form-item label="项目年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-year-date style="width:100%" placeholder="请选择项目年份" v-model="queryParam.year"></j-year-date>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero">
|
||||
@@ -58,6 +58,12 @@
|
||||
@change="handleTableChange"
|
||||
:class="dataSource.length === 0 ? 'show-scroll' : ''"
|
||||
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">
|
||||
<a-tooltip>
|
||||
@@ -119,6 +125,7 @@ import JYearDate from '@/components/jero/JYearDate'
|
||||
import { getAction } from '@api/manage'
|
||||
import {formatMoney} from '@/utils/formatMoney'
|
||||
import { MonthData } from './statisticData'
|
||||
import { MeetingTypeEnums } from '../../enums/commonEnums'
|
||||
|
||||
const defaultTableColumns = [
|
||||
{
|
||||
@@ -126,7 +133,7 @@ const defaultTableColumns = [
|
||||
align: 'center',
|
||||
width: 160,
|
||||
dataIndex: 'meetingName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: {customRender: 'htmlSlot'},
|
||||
},
|
||||
{
|
||||
title: '会议类型',
|
||||
@@ -243,14 +250,13 @@ export default {
|
||||
footerDataSource: [],
|
||||
// 给定当年作为来款年份默认查询条件
|
||||
queryParam: {
|
||||
paymentYear: new Date().getFullYear().toString(),
|
||||
year: new Date().getFullYear().toString(),
|
||||
payMode: 3 // 缴费方式-默认打包
|
||||
},
|
||||
lastQueryParam: {
|
||||
paymentYear: new Date().getFullYear().toString(),
|
||||
year: new Date().getFullYear().toString(),
|
||||
payMode: 3 // 缴费方式-默认打包
|
||||
},
|
||||
// todo 需要替换掉
|
||||
url: {
|
||||
list: '/statistics/meetingPackStatistics/page',
|
||||
exportXlsUrl: '/statistics/meetingPackStatistics/excelMeetingPackStatistics'
|
||||
@@ -331,11 +337,11 @@ export default {
|
||||
},
|
||||
searchReset() {
|
||||
this.lastQueryParam = {
|
||||
paymentYear: new Date().getFullYear().toString(),
|
||||
year: new Date().getFullYear().toString(),
|
||||
payMode: 3 // 缴费方式-默认打包
|
||||
}
|
||||
this.queryParam = {
|
||||
paymentYear: new Date().getFullYear().toString(),
|
||||
year: new Date().getFullYear().toString(),
|
||||
payMode: 3 // 缴费方式-默认打包
|
||||
}
|
||||
this.loadData(1)
|
||||
@@ -388,10 +394,32 @@ export default {
|
||||
},
|
||||
// 确认年份 年份选择器改变的事件
|
||||
paymentYearChange() {
|
||||
if(!this.queryParam.paymentYear) {
|
||||
if(!this.queryParam.year) {
|
||||
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>
|
||||
@@ -441,4 +469,9 @@ export default {
|
||||
border-left: none;
|
||||
}
|
||||
}
|
||||
|
||||
.primary-color {
|
||||
color: #069f99;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
@@ -159,9 +159,9 @@ export default {
|
||||
getAction(this.url.list, params).then((res) => {
|
||||
if (res.success) {
|
||||
let dataSource = res.result.list
|
||||
// 讲树形结构的数据 ,修改成table可以直接展示的数据,默认只有三行数据
|
||||
// 讲树形结构的数据 ,修改成table可以直接展示的数据,默认只有三行数据 todo
|
||||
let tableData = [
|
||||
{indexName: '年度待确收金额', total: res.result.sumOfMoney},
|
||||
{indexName: '预估收入金额', total: res.result.sumOfMoney},
|
||||
{indexName: '确认收入金额', total: res.result.sumOfConfirmAmount},
|
||||
{indexName: '开票金额', total: res.result.sumOfBillMoney},
|
||||
{indexName: '到账金额', total: res.result.sumOfReallyMoney},
|
||||
@@ -171,7 +171,7 @@ export default {
|
||||
let keyItem = MonthData.find(ele => Number(ele.value) === (index + 1))
|
||||
if(keyItem) {
|
||||
let key = keyItem.key
|
||||
tableData[0][key] = item.allMoney
|
||||
tableData[0][key] = item.estimatedArrivalMoney // todo
|
||||
tableData[1][key] = item.confirmAmount
|
||||
tableData[2][key] = item.billMoney
|
||||
tableData[3][key] = item.comeAllMoney
|
||||
|
||||
@@ -63,6 +63,14 @@
|
||||
@change="checkMoney('end')"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="是否打包" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-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">
|
||||
<span class="table-page-search-submitButtons">
|
||||
<a-button type="primary" icon="search" @click="searchQuery">查询</a-button>
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
|
||||
<!-- 操作按钮区域-->
|
||||
<div class="table-operator">
|
||||
<a-button type="primary" icon="export" @click="handleExportXls('项目来款统计')"
|
||||
<a-button type="primary" icon="export" @click="handleExportXls('科室统计')"
|
||||
v-has="'projectPaymentStatistics:export'">导出
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
+432
@@ -0,0 +1,432 @@
|
||||
<!--企业来款分类统计-->
|
||||
<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="10" :lg="8" :md="8" :sm="24">
|
||||
<a-form-item label="来款企业" :labelCol="labelCol" :wrapperCol="wrapperCol" style="margin-bottom: -1px">
|
||||
<company-select isMultiple :can-add="false" placeholder="请选择来款企业"
|
||||
v-model="queryParam.chargeCompany"></company-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||
<a-form-item label="项目年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-year-date class="query-group-cust" placeholder="请选择开始年份" v-model="queryParam.year_begin" :disabled-date="disabledStartDate"></j-year-date>
|
||||
<span class="query-group-split-cust"></span>
|
||||
<j-year-date class="query-group-cust" placeholder="请选择结束年份" v-model="queryParam.year_end" :disabled-date="disabledEndDate"></j-year-date>
|
||||
</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="'companyPaymentClassificationStatistics: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="export" @click="handleExportXls('企业来款分类统计')"
|
||||
v-has="'companyPaymentClassificationStatistics:export'">导出
|
||||
</a-button>
|
||||
</div>
|
||||
<!-- 操作按钮区域-end-->
|
||||
|
||||
<!-- table表格区域 :pagination="ipagination" -->
|
||||
<div>
|
||||
<a-table
|
||||
size="middle"
|
||||
ref="table"
|
||||
bordered
|
||||
rowKey="chargeCompanyId"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
:loading="loading"
|
||||
:scroll="{x: 1000}"
|
||||
@change="handleTableChange"
|
||||
:class="dataSource.length === 0 ? 'show-scroll' : ''"
|
||||
class="j-table-force-nowrap main-table">
|
||||
|
||||
<!-- 项目名称-->
|
||||
<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>
|
||||
<template slot="allMoney" slot-scope="text">
|
||||
|
||||
<a-tooltip>
|
||||
<template slot="title">{{ formatMoney(text) }}</template>
|
||||
<div class="table-text">{{ formatMoney(text) }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!--<span slot="action" class="action-span-cell" slot-scope="text, record">-->
|
||||
<!-- <a @click="goDetail(record)" v-has="'companyPaymentClassificationStatistics:detail'">详情</a>-->
|
||||
<!--</span>-->
|
||||
|
||||
<template slot="footer" v-if="dataSource.length > 0">
|
||||
|
||||
<a-table
|
||||
size="middle"
|
||||
ref="footTable"
|
||||
rowKey="id"
|
||||
:columns="columnsFooter"
|
||||
:dataSource="footerDataSource"
|
||||
:showHeader="false"
|
||||
:pagination="false"
|
||||
:scroll="{x: 1000}"
|
||||
class="j-table-force-nowrap footer-table">
|
||||
|
||||
<!-- 项目名称-->
|
||||
<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">
|
||||
<j-ellipsis :value="text" :length="18"></j-ellipsis>
|
||||
</template>
|
||||
|
||||
<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>
|
||||
</div>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import IconImg from '@/assets/imgs/icon/icon_statistical_report.png'
|
||||
import PageHeaderTitle from '../../../components/layouts/PageHeaderTitle'
|
||||
import { JeroListMixin } from '../../../mixins/JeroListMixin'
|
||||
import JYearDate from '../../../components/jero/JYearDate'
|
||||
import { getAction } from '@api/manage'
|
||||
import CompanySelect from '@comp/company/CompanySelect'
|
||||
import { filterObj } from '../../../utils/util'
|
||||
import {formatMoney} from '@/utils/formatMoney'
|
||||
import { MonthData } from '../statisticData'
|
||||
import { RangeDateMixin } from '../../../mixins/RangeDateMixin'
|
||||
|
||||
const defaultTableColumns = [
|
||||
{
|
||||
title: '来款企业',
|
||||
align: 'center',
|
||||
width: 160,
|
||||
dataIndex: 'name',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
// {
|
||||
// title: '年度待确收金额',
|
||||
// align: 'center',
|
||||
// width: 160,
|
||||
// sorter: true,
|
||||
// dataIndex: 'allMoney',
|
||||
// scopedSlots: { customRender: 'allMoney' }
|
||||
// },
|
||||
// {
|
||||
// title: '操作',
|
||||
// dataIndex: 'action',
|
||||
// align: 'center',
|
||||
// fixed: 'right',
|
||||
// width: 160,
|
||||
// scopedSlots: { customRender: 'action' }
|
||||
// }
|
||||
]
|
||||
const firstColumnTop = {
|
||||
title: '序号',
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
}
|
||||
|
||||
const firstColumnFooter = {
|
||||
title: '序号',
|
||||
dataIndex: 'title',
|
||||
align: 'center',
|
||||
width: 60
|
||||
}
|
||||
// // 统计的项目分类
|
||||
// const projectCategory = [
|
||||
// { name: '工作组', key: 'workGroup' },
|
||||
// { name: '项目合作', key: 'generalProject' },
|
||||
// { name: '会议费', key: 'meeting' },
|
||||
// { name: '会员费', key: 'member' }
|
||||
// ]
|
||||
|
||||
export default {
|
||||
name: 'EnterprisePaymentStatisticsList',
|
||||
components: { PageHeaderTitle, JYearDate, CompanySelect },
|
||||
mixins: [JeroListMixin, RangeDateMixin],
|
||||
data() {
|
||||
return {
|
||||
MonthData,
|
||||
IconImg,
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 5 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 10 }
|
||||
},
|
||||
url: {
|
||||
list: '/statistics/companyComeMoney/classification',
|
||||
exportXlsUrl: '/statistics/companyComeMoney/classificationExcel'
|
||||
},
|
||||
columns: [firstColumnTop, ...defaultTableColumns],
|
||||
// 总计表头,与主表表头一致
|
||||
columnsFooter: [firstColumnFooter, ...defaultTableColumns],
|
||||
// 总计数据
|
||||
footerDataSource: [],
|
||||
// 给定当年作为来款年份默认查询条件
|
||||
queryParam: {
|
||||
year_begin: new Date().getFullYear().toString(),
|
||||
year_end: new Date().getFullYear().toString()
|
||||
},
|
||||
lastQueryParam: {
|
||||
year_begin: new Date().getFullYear().toString(),
|
||||
year_end: new Date().getFullYear().toString()
|
||||
},
|
||||
// 混入中方法重写
|
||||
dateKeyObj: {
|
||||
beginKey: 'year_begin',
|
||||
endKey: 'year_end'
|
||||
},
|
||||
rangeDateFormat: {
|
||||
begin: 'YYYY',
|
||||
end: 'YYYY'
|
||||
},
|
||||
// disableMixinCreated: true // 不调用混用的created方法
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.setScroll()
|
||||
},
|
||||
methods: {
|
||||
formatMoney,
|
||||
// 同步表与footer滚动,保留底部滚动条
|
||||
setScroll() {
|
||||
if (this.dataSource.length === 0) {
|
||||
return
|
||||
}
|
||||
let dom = this.$refs.footTable.$el.querySelectorAll('.ant-table-body')[0]
|
||||
console.log(this.$refs.footTable.$el.querySelectorAll('.ant-table-body'))
|
||||
dom.addEventListener(
|
||||
'scroll',
|
||||
() => {
|
||||
this.$refs.table.$el.querySelectorAll(
|
||||
'.ant-table-body'
|
||||
)[0].scrollLeft = dom.scrollLeft
|
||||
},
|
||||
true
|
||||
)
|
||||
},
|
||||
getQueryParams() {
|
||||
//获取查询条件
|
||||
let sqp = {}
|
||||
if (this.superQueryParams) {
|
||||
sqp['superQueryParams'] = encodeURI(this.superQueryParams)
|
||||
sqp['superQueryMatchType'] = this.superQueryMatchType
|
||||
}
|
||||
// var param = Object.assign(sqp, this.queryParam, this.isorter ,this.filters);
|
||||
let param = Object.assign(sqp, this.lastQueryParam, this.isorter, this.filters)
|
||||
param.field = this.getQueryField()
|
||||
param.pageNo = this.ipagination.current
|
||||
param.pageSize = this.ipagination.pageSize
|
||||
// 获取企业id作为查询参数
|
||||
if (param.chargeCompany && param.chargeCompany.hasOwnProperty.call(param.chargeCompany, 'id')) {
|
||||
param.chargeCompanyId = param.chargeCompany.id
|
||||
// 将企业信息对象从查询参数中去掉
|
||||
delete param.chargeCompany
|
||||
}
|
||||
|
||||
return filterObj(param)
|
||||
},
|
||||
/*
|
||||
* 获取查询的列数
|
||||
* titleList: item数组
|
||||
* item 信息
|
||||
* item."name": "企业名称",
|
||||
* item."key": "name"
|
||||
* */
|
||||
getColumnsData(titleList) {
|
||||
let columnsObj = []
|
||||
titleList.map(title => {
|
||||
let item = {
|
||||
title: title.name,
|
||||
align: 'center',
|
||||
width: 160,
|
||||
// sorter: true,
|
||||
dataIndex: title.key,
|
||||
scopedSlots: { customRender: 'allMoney' }
|
||||
}
|
||||
columnsObj.push(item)
|
||||
})
|
||||
return columnsObj
|
||||
},
|
||||
loadData(arg) {
|
||||
if (!this.url.list) {
|
||||
this.$message.error('请设置url.list属性!')
|
||||
return
|
||||
}
|
||||
//加载数据 若传入参数1则加载第一页的内容
|
||||
if (arg === 1) {
|
||||
this.ipagination.current = 1
|
||||
}
|
||||
let params = this.getQueryParams()//查询条件
|
||||
this.loading = true
|
||||
getAction(this.url.list, params).then((res) => {
|
||||
if (res.success) {
|
||||
// 处理TableColumns 的数据
|
||||
// let columnsKeys = res.result.columns || []
|
||||
let syncColumns = this.getColumnsData(res.result.titleList || [])
|
||||
this.columns = [firstColumnTop, ...defaultTableColumns, ...syncColumns]
|
||||
this.columnsFooter = [firstColumnFooter, ...defaultTableColumns, ...syncColumns]
|
||||
// this.dataSource = res.result.pageList.records
|
||||
// 表格数据
|
||||
this.dataSource = res.result.valList || []
|
||||
this.dataSource.map(data => {
|
||||
syncColumns.map(col => {
|
||||
data[col.dataIndex] = data[col.dataIndex] || '0.00' + ''
|
||||
})
|
||||
})
|
||||
// 操作汇总表格的数据
|
||||
let footerData = res.result.allMap || {}
|
||||
let obj = {
|
||||
id: '1',
|
||||
title: '总计'
|
||||
// allMoney: res.result.sumOfMoney || '0.00' + '',
|
||||
// comeAllMoney: res.result.sumOfReallyMoney || '0.00' + '',
|
||||
// billMoney: res.result.sumOfBillMoney || '0.00' + '',
|
||||
// confirmAmount: res.result.sumOfConfirmAmount || '0.00' + ''
|
||||
}
|
||||
syncColumns.map(col => {
|
||||
obj[col.dataIndex] = footerData[col.dataIndex] || '0.00' + ''
|
||||
})
|
||||
this.footerDataSource = [obj]
|
||||
if (res.result.page.total) {
|
||||
this.ipagination.total = res.result.page.total
|
||||
} else {
|
||||
this.ipagination.total = 0
|
||||
}
|
||||
}
|
||||
if (this.dataSource.length > 0) {
|
||||
this.$nextTick(() => {
|
||||
this.setScroll()
|
||||
})
|
||||
}
|
||||
if (res.code === 510) {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
this.loading = false
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
searchQuery() {
|
||||
if(!this.queryParam.year_begin || !this.queryParam.year_end) {
|
||||
this.$message.warning('请选择项目年份时间段')
|
||||
return
|
||||
}
|
||||
// if(!this.queryParam.chargeCompany) {
|
||||
// this.$message.warning('请选择来款企业进行查询')
|
||||
// return
|
||||
// }
|
||||
this.lastQueryParam = {...this.queryParam}
|
||||
this.loadData(1)
|
||||
},
|
||||
searchReset() {
|
||||
this.lastQueryParam = {
|
||||
year_begin: new Date().getFullYear().toString(),
|
||||
year_end: new Date().getFullYear().toString()
|
||||
}
|
||||
this.queryParam = {
|
||||
year_begin: new Date().getFullYear().toString(),
|
||||
year_end: new Date().getFullYear().toString()
|
||||
}
|
||||
this.loadData(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
// 隐藏主列表的横向滚动条
|
||||
.main-table {
|
||||
/deep/ .ant-table-thead th div{
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
/deep/ .ant-table-body {
|
||||
overflow-x: hidden !important;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-footer {
|
||||
padding: 0 0;
|
||||
}
|
||||
|
||||
/deep/ .ant-table.ant-table-bordered .ant-table-footer {
|
||||
border-left: none;
|
||||
margin-top: -2px;
|
||||
}
|
||||
}
|
||||
|
||||
.show-scroll {
|
||||
/deep/ .ant-table-body {
|
||||
overflow-x: auto !important;
|
||||
}
|
||||
}
|
||||
|
||||
// 去除底部表格边框
|
||||
.footer-table {
|
||||
/deep/ .ant-table-tbody > tr > td {
|
||||
border: none;
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-fixed-right table {
|
||||
border-left: none !important;
|
||||
background: none;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-body {
|
||||
overflow-x: auto !important;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-bordered .ant-table-header > table {
|
||||
border-left: none;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
+8
@@ -63,6 +63,14 @@
|
||||
@change="checkMoney('end')"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="是否打包" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-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">
|
||||
<span class="table-page-search-submitButtons">
|
||||
<a-button type="primary" icon="search" @click="searchQuery">查询</a-button>
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
<!--年度数据锁定-->
|
||||
<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="8" :lg="8" :md="8" :sm="24">
|
||||
<a-form-item label="年份">
|
||||
<j-year-date style="width:100%" placeholder="请选择年份"
|
||||
v-model="queryParam.year"></j-year-date>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||||
<a-button type="primary" @click="searchQuery" icon="search" v-has="'annualDataLockingList:search'">查询</a-button>
|
||||
<a-button class="reset-button" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮区域-->
|
||||
<div class="table-operator">
|
||||
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'annualDataLockingList:add'">新增</a-button>
|
||||
<a-button type="danger" icon="delete" @click="batchDel" v-has="'annualDataLockingList:batchDel'">批量删除</a-button>
|
||||
</div>
|
||||
<!-- 操作按钮区域-end-->
|
||||
|
||||
<!-- table表格区域-->
|
||||
<div>
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
bordered
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:scroll="{x: 600}"
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
:loading="loading"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||
@change="handleTableChange"
|
||||
class="j-table-force-nowrap">
|
||||
|
||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||
<!--<a @click="handleEdit(record)" v-has="'annualDataLockingList:edit'">编辑</a>-->
|
||||
<a @click="handleDelete(record.id)" v-has="'annualDataLockingList:delete'">删除</a>
|
||||
</span>
|
||||
|
||||
</a-table>
|
||||
</div>
|
||||
<annual-data-locking-modal ref="modalForm" @ok="modalFormOk"></annual-data-locking-modal>
|
||||
</a-card>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||
import JYearDate from '@comp/jero/JYearDate'
|
||||
import IconImg from '@/assets/imgs/icon/icon_system.png'
|
||||
import AnnualDataLockingModal from './modules/AnnualDataLockingModal'
|
||||
|
||||
|
||||
export default {
|
||||
name: 'AnnualDataLockingList',
|
||||
mixins: [JeroListMixin],
|
||||
components: {
|
||||
PageHeaderTitle,
|
||||
JYearDate,
|
||||
AnnualDataLockingModal
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
IconImg,
|
||||
columns: [
|
||||
{
|
||||
title: '年份',
|
||||
align: 'center',
|
||||
dataIndex: 'year',
|
||||
// width: 280,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
// width: 240,
|
||||
// fixed: 'right',
|
||||
scopedSlots: { customRender: 'action' },
|
||||
align: 'center'
|
||||
}
|
||||
],
|
||||
postMethodDel: true,
|
||||
url: {
|
||||
list: '/sys/annualDataLocking/page',
|
||||
delete: '/sys/annualDataLocking/delete',
|
||||
deleteBatch: '/sys/annualDataLocking/deleteBatch'
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
</style>
|
||||
@@ -0,0 +1,118 @@
|
||||
<!--年度数据锁定-新增、编辑-->
|
||||
<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">
|
||||
<j-year-date
|
||||
style="width:100%"
|
||||
placeholder="请选择年份"
|
||||
v-decorator="['year',validatorRules.year]">
|
||||
</j-year-date>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-spin>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import pick from 'lodash.pick'
|
||||
import JYearDate from '../../../components/jero/JYearDate'
|
||||
import { postAction } from '../../../api/manage'
|
||||
|
||||
export default {
|
||||
name: 'AnnualDataLockingModal',
|
||||
components: {JYearDate },
|
||||
data() {
|
||||
return {
|
||||
title: '操作',
|
||||
width: 900,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
form: this.$form.createForm(this),
|
||||
model: {},
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 6 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 14 }
|
||||
},
|
||||
url: {
|
||||
add: '/sys/annualDataLocking/add',
|
||||
edit: '/sys/annualDataLocking/edit'
|
||||
},
|
||||
validatorRules: {
|
||||
year: {
|
||||
rules: [{ required: true, message: '请选择年份' }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
add() {
|
||||
this.edit({})
|
||||
},
|
||||
edit(record) {
|
||||
this.visible = true
|
||||
this.form.resetFields()
|
||||
this.model = Object.assign({}, record)
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.model, 'year'))
|
||||
})
|
||||
},
|
||||
handleOk() {
|
||||
if (this.confirmLoading) {
|
||||
return
|
||||
}
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.confirmLoading = true
|
||||
let httpUrl = ''
|
||||
if (!this.model.id) {
|
||||
httpUrl += this.url.add
|
||||
} else {
|
||||
httpUrl += this.url.edit
|
||||
}
|
||||
const formData = Object.assign({}, this.model, values)
|
||||
postAction(httpUrl, formData).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.$emit('ok')
|
||||
this.handleCancel()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
},
|
||||
close() {
|
||||
this.visible = false
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -392,7 +392,7 @@ export default {
|
||||
// 加载角色数据
|
||||
this.loadRolesTreeData()
|
||||
// 获取公钥
|
||||
this.getPublicKey()
|
||||
// this.getPublicKey()
|
||||
let that = this
|
||||
that.initialRoleList()
|
||||
that.checkedDepartNameString = ''
|
||||
@@ -479,9 +479,14 @@ export default {
|
||||
},
|
||||
getPublicKey() {
|
||||
// 获取公钥
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
return new Promise(resolve => {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
}).finally(() => {
|
||||
resolve(this.rsaPublicKey)
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
loadCheckedDeparts() {
|
||||
let that = this
|
||||
@@ -538,7 +543,7 @@ export default {
|
||||
console.log('username', this.form.getFieldValue('username'))
|
||||
const that = this
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
this.form.validateFields(async (err, values) => {
|
||||
if (!err) {
|
||||
that.confirmLoading = true
|
||||
console.log('values=======', values)
|
||||
@@ -548,6 +553,7 @@ export default {
|
||||
} else {
|
||||
formData.avatar = null
|
||||
}
|
||||
await this.getPublicKey()
|
||||
// 公钥参数
|
||||
formData.rsaPublicKey = that.rsaPublicKey
|
||||
// 新建 JSEncrypt 对象
|
||||
|
||||
@@ -150,8 +150,9 @@ export default {
|
||||
let that = this
|
||||
let loginParams = {}
|
||||
that.loginBtn = true
|
||||
that.form.validateFields([ 'username', 'password','inputCode', 'rememberMe' ], { force: true }, (err, values) => {
|
||||
that.form.validateFields([ 'username', 'password','inputCode', 'rememberMe' ], { force: true }, async (err, values) => {
|
||||
if (!err) {
|
||||
await this.getPublicKey()
|
||||
loginParams.remember_me = values.rememberMe
|
||||
loginParams.captcha = that.inputCodeContent
|
||||
loginParams.checkKey = that.currdatetime
|
||||
@@ -243,13 +244,16 @@ export default {
|
||||
}).catch(()=>{
|
||||
this.requestCodeSuccess=false
|
||||
})
|
||||
this.getPublicKey()
|
||||
},
|
||||
//获取RSA公钥
|
||||
getPublicKey(){
|
||||
// 获取公钥
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
return new Promise(resolve => {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
}).finally(() => {
|
||||
resolve(this.rsaPublicKey)
|
||||
})
|
||||
})
|
||||
},
|
||||
loginSuccess () {
|
||||
|
||||
@@ -180,9 +180,10 @@ export default {
|
||||
submit() {
|
||||
let that = this
|
||||
that.loading = true
|
||||
this.form.validateFields((err, values) => {
|
||||
this.form.validateFields(async (err, values) => {
|
||||
if (!err) {
|
||||
let params = {}
|
||||
await this.getPublicKey()
|
||||
console.log(values, '======values')
|
||||
params.rsaPublicKey = this.rsaPublicKey
|
||||
let encrypt = new JSEncrypt()
|
||||
@@ -271,7 +272,6 @@ export default {
|
||||
}
|
||||
setTimeout(hide, 500)
|
||||
})
|
||||
this.getPublicKey()
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -283,8 +283,12 @@ export default {
|
||||
})
|
||||
},
|
||||
getPublicKey() {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
return new Promise(resolve => {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
}).finally(() => {
|
||||
resolve(this.rsaPublicKey)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 密码禁止粘贴
|
||||
|
||||
+3
-2
@@ -79,7 +79,7 @@ module.exports = {
|
||||
},
|
||||
|
||||
devServer: {
|
||||
port: 3000,
|
||||
port: 21825,
|
||||
proxy: {
|
||||
/* '/api': {
|
||||
target: 'https://mock.ihx.me/mock/5baf3052f7da7e07e04a5116/antd-pro', //mock API接口系统
|
||||
@@ -91,7 +91,8 @@ module.exports = {
|
||||
},*/
|
||||
'/jero-boot': {
|
||||
// ''
|
||||
target: 'http://localhost:8080', //请求本地 jero-boot后台项目
|
||||
// target: 'http://10.0.10.78:21824', //请求本地 jero-boot后台项目
|
||||
target: "http://localhost:21824", //
|
||||
ws: false,
|
||||
changeOrigin: true
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user