Merge branch '2023年7月变更'
This commit is contained in:
@@ -13,11 +13,14 @@ window._CONFIG["onlinePreviewDomainURL"] = "http://139.9.235.66:8012/onlinePrevi
|
||||
|
||||
// todo 需要改为企业端的报名地址 --- 139
|
||||
// 会议管理报名二维码地址
|
||||
window._CONFIG["singUpQRCodeURL"] = "http://bxxt.hzwlsoft.com/signupentrance"
|
||||
// window._CONFIG["singUpQRCodeURL"] = "http://bxxt.hzwlsoft.com/signupentrance"
|
||||
window._CONFIG["singUpQRCodeURL"] = "http://10.10.10.46:8066/signupentrance"
|
||||
// 会议管理签到二维码地址 微信扫描二维码 跳转的 地址 要么全大写 要么全小写
|
||||
window._CONFIG["singInQRCodeURL"] = "http://bxxt.hzwlsoft.com/signinurl"
|
||||
// window._CONFIG["singInQRCodeURL"] = "http://bxxt.hzwlsoft.com/signinurl"
|
||||
window._CONFIG["singInQRCodeURL"] = "http://10.10.10.46:8066/signinurl"
|
||||
// 页面显示用的会议报名二维码连接
|
||||
window._CONFIG["singInQRCodHref"]= 'http://139.9.235.66/signupentrance'
|
||||
// window._CONFIG["singInQRCodHref"]= 'http://139.9.235.66/signupentrance'
|
||||
window._CONFIG["singInQRCodHref"]= 'http://10.10.10.46:8066/signupentrance'
|
||||
|
||||
// 票据打印--寄件人单位名称
|
||||
window._CONFIG["sendCompanyName"] = "中国汽车标准化研究院"
|
||||
@@ -27,4 +30,5 @@ window._CONFIG["sendAddress"] = "天津市东丽区先锋东路68号"
|
||||
window._CONFIG["sendPostCode"] = "300300"
|
||||
|
||||
// 查看物流信息
|
||||
window._CONFIG["lookExpressDomainURL"] = "http://bxxt.hzwlsoft.com/lookExpressInfo";
|
||||
// window._CONFIG["lookExpressDomainURL"] = "http://bxxt.hzwlsoft.com/lookExpressInfo";
|
||||
window._CONFIG["lookExpressDomainURL"] = "http://10.10.10.46:8066/lookExpressInfo";
|
||||
+8
-1
@@ -101,6 +101,8 @@ const getTransitURL = url => `/sys/common/transitRESTful?url=${encodeURIComponen
|
||||
|
||||
// 通过文件的id获取文件的相应信息
|
||||
const getFileInfo = (params) => getAction('/sys/oss/file/queryById', params)
|
||||
// 通过多个文件的ids 获取文件的相应信息
|
||||
const getFileInfoByIds = (params) => getAction('/sys/oss/file/queryByIds', params)
|
||||
|
||||
// 中转HTTP请求
|
||||
export const transitRESTful = {
|
||||
@@ -122,6 +124,9 @@ const companyAdminResetPassword = (param) => postAction('/payManagerManagement/r
|
||||
// 企业管理员启用禁用
|
||||
const companyAdminEnable= (param) => postAction('/payManagerManagement/frozenBatch', param)
|
||||
|
||||
// 通过企业id查询企业的相关发票信息
|
||||
const queryCompanyInfoById= (param) => getAction('/company/payCompanyManagement/queryById', param)
|
||||
|
||||
// 加密获取key 与 iv
|
||||
const getKeyIv = (param) => getAction('/sys/getEncryptedString',param)
|
||||
|
||||
@@ -186,11 +191,13 @@ export {
|
||||
queryallRoles,
|
||||
getContactsById,
|
||||
getFileInfo,
|
||||
getFileInfoByIds,
|
||||
getKeyIv,
|
||||
getContactsByCompanyNoLimit,
|
||||
loginIdmPlatform,
|
||||
companyAdminResetPassword,
|
||||
companyAdminEnable
|
||||
companyAdminEnable,
|
||||
queryCompanyInfoById
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -125,6 +125,11 @@ const addPayConfirm = (param) => postAction('/payConfirmPaymentRecord/add', para
|
||||
// 编辑一个确认来款信息
|
||||
const editPayConfirm = (param) => postAction('/payConfirmPaymentRecord/edit', param)
|
||||
|
||||
|
||||
//2023-07-13 工作组相关功能的接口
|
||||
// 判断当前节点 是否可以发邮件
|
||||
const judgeEmailStatus = (param) => getAction('/sys/message/sysMessageTemplate/queryByCode', param)
|
||||
|
||||
export {
|
||||
getWorkingGroupById,
|
||||
getChargeNotice,
|
||||
@@ -189,5 +194,8 @@ export {
|
||||
|
||||
getPayConfirmList,
|
||||
addPayConfirm,
|
||||
editPayConfirm
|
||||
editPayConfirm,
|
||||
|
||||
|
||||
judgeEmailStatus
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 7.5 KiB |
@@ -170,6 +170,10 @@
|
||||
<label>银行账户:</label>
|
||||
<span>{{ otherCompanyInfo.bankAccount }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>联行号:</label>
|
||||
<span>{{ otherCompanyInfo.linkBankNumber || '' }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</template>
|
||||
</section>
|
||||
@@ -406,7 +410,9 @@ export default {
|
||||
computed: {
|
||||
// 是否是第三方代付
|
||||
hasOtherCompany() {
|
||||
return this.isInvoicing && this.otherCompanyInfo.headerName && (this.otherCompanyInfo.headerName !== this.basicInfo.companyName)
|
||||
// 去掉未审核 去判断的企业是否是标协会企业
|
||||
let companyName = this.basicInfo.companyName.replaceAll('(未审核)','')
|
||||
return this.isInvoicing && this.otherCompanyInfo.headerName && (this.otherCompanyInfo.headerName !== companyName)
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
||||
@@ -36,6 +36,12 @@ export default {
|
||||
valueKey: {
|
||||
type: String,
|
||||
default: 'companyName'
|
||||
},
|
||||
// 是否返回企业的全部信息,如果是 则再change方法中以第二个参数返回
|
||||
fullCompanyInfo: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
@@ -70,7 +76,11 @@ export default {
|
||||
* */
|
||||
setCompanyVal(selectedVal) {
|
||||
let {id, companyName} = selectedVal
|
||||
this.$emit('change', {id, companyName})
|
||||
if(this.fullCompanyInfo) {
|
||||
this.$emit('change', {id, companyName}, {...selectedVal})
|
||||
} else {
|
||||
this.$emit('change', {id, companyName})
|
||||
}
|
||||
}
|
||||
},
|
||||
model: {
|
||||
|
||||
@@ -7,4 +7,18 @@ export const ProjectTypeEnums = {
|
||||
MEMBER_PRO: {name: '资料网员', value: 4},
|
||||
STANDARD_MEMBER_PRO: {name: '标协会员项目', value: 5},
|
||||
STANDARD_CERTIFICATE_PRO: {name: '标协证书项目', value: 6},
|
||||
}
|
||||
}
|
||||
|
||||
// 参会人员身份类型
|
||||
export const MeetIdentifyTypeEnums = {
|
||||
guest: { name: '嘉宾', index: 1 },
|
||||
attendee: { name: '参会人', index: 2 },
|
||||
internal: { name: '内部企业', index: 3 }
|
||||
}
|
||||
|
||||
// 需要发票的类型
|
||||
export const InvoiceTypeEnums = {
|
||||
noNeed: { name: '不需要', index: 0 },
|
||||
plain: { name: '增值税普通发票', index: 1 },
|
||||
special: { name: '增值税专用发票', index: 2 }
|
||||
}
|
||||
|
||||
@@ -174,6 +174,7 @@
|
||||
:project-id="selectProjectId"
|
||||
:project-type="selectProjectType"
|
||||
:need-invoice="selectNeedInvoice"
|
||||
:can-add-stage="canAddStage"
|
||||
:visible.sync="arriveVisible"></arrive-stage-module>
|
||||
|
||||
<!-- 开票阶段-->
|
||||
@@ -409,6 +410,12 @@ export default {
|
||||
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 批量来款是否可以新增阶段--会员缴费、证书缴费 不能新增阶段
|
||||
canAddStage() {
|
||||
return Number(this.selectProjectType) !== 5 && Number(this.selectProjectType) !== 6
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getPayConfirmList,
|
||||
/**
|
||||
|
||||
@@ -80,7 +80,8 @@
|
||||
<a-empty v-else></a-empty>
|
||||
|
||||
<template slot="footer">
|
||||
<a-button type="primary" @click="handleAdd" v-preventclick v-if="Number(projectType) !== 5 && Number(projectType) !== 6">添加阶段</a-button>
|
||||
<!--Number(projectType) !== 5 && Number(projectType) !== 6 -->
|
||||
<a-button type="primary" @click="handleAdd" v-preventclick v-if="canAddStageFlag">添加阶段</a-button>
|
||||
</template>
|
||||
|
||||
<arrive-module ref="arriveModal" :project-id="projectId" @ok="addArriveOk" v-bind="$attrs" :project-type="projectType"></arrive-module>
|
||||
@@ -96,6 +97,7 @@ import {amountReceivedList, revokeIncome} from '../../../../api/incomePaymentsAp
|
||||
import PreviewImgModal from '../../../../components/PreviewImgModal'
|
||||
import PreviewFile from '../../../../components/jero/PreviewFile.vue'
|
||||
import {ajaxGetDictItems} from '@api/api'
|
||||
import { ProjectTypeEnums } from '../../../../enums/commonEnums'
|
||||
|
||||
export default {
|
||||
name: 'ArriveStageModule',
|
||||
@@ -117,6 +119,22 @@ export default {
|
||||
type: [Number, String],
|
||||
required: false,
|
||||
default: null
|
||||
},
|
||||
// 是否能增加阶段-从外部进行模块的区分
|
||||
canAddStage: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
canAddStageFlag() {
|
||||
// 标协会员项目和证书项目 需要判断 当前的阶段是否有值,这两类项目只能来款一次
|
||||
if(Number(this.projectType) === ProjectTypeEnums.STANDARD_CERTIFICATE_PRO.value || Number(this.projectType) === ProjectTypeEnums.STANDARD_MEMBER_PRO.value) {
|
||||
return this.stageList.length === 0 && this.canAddStage
|
||||
} else {
|
||||
return this.canAddStage
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
<!-- 标协会员、证书的缴费凭证类型根据paymentMethod字段决定:1--图片;2--pdf;3--没有凭证 -->
|
||||
<!-- proofType处理过的缴费凭证类型:img--图片;pdf--pdf;none--无缴费凭证 -->
|
||||
<!-- <div class="info-item">-->
|
||||
<a-form-item class="proof-form-item" :label="proofType==='pdf' ? '打包协议' : '缴费凭证'" :labelCol="labelCol"
|
||||
<a-form-item v-if="proofType!=='pdf'" class="proof-form-item" :label="'缴费凭证'" :labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol">
|
||||
<!-- <label>{{proofType==='pdf' ? '打包协议' : '缴费凭证'}}:</label>-->
|
||||
<div class="proof-img" v-if="proofType === 'img'">
|
||||
@@ -68,9 +68,9 @@
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div v-if="proofType==='pdf'">
|
||||
<preview-file :fileId="proofInfo.proof"></preview-file>
|
||||
</div>
|
||||
<!--<div v-if="proofType==='pdf'">-->
|
||||
<!-- <preview-file :fileId="proofInfo.proof"></preview-file>-->
|
||||
<!--</div>-->
|
||||
<span v-if="proofType==='none'">无</span>
|
||||
</a-form-item>
|
||||
<!-- </div>-->
|
||||
|
||||
@@ -133,6 +133,17 @@
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<!-- 2023-07变更,添加会议文件字段 -->
|
||||
<a-row :gutter="24" v-if="meetingType === '2' && tbMeetingType === 3">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="会议文件" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-upload :multiple="true"
|
||||
:return-id="true"
|
||||
v-decorator="['fileIds',validatorRules.fileIds]"></j-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">
|
||||
@@ -714,7 +725,7 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
// 加定时器是因为有可能赋值不成功
|
||||
setTimeout(() => {
|
||||
this.form.setFieldsValue(pick(this.model,'venue', 'notice', 'hotelContactsList', 'hotelName', 'hotelAddress', 'paymentQrCode', 'meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone','meetingContactsList')), 200
|
||||
this.form.setFieldsValue(pick(this.model,'venue', 'notice', 'hotelContactsList', 'hotelName', 'hotelAddress', 'paymentQrCode', 'meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone','meetingContactsList', 'fileIds')), 200
|
||||
})
|
||||
// 如果是标协会议则回显 标协会议的字段
|
||||
if (this.meetingType === '2') {
|
||||
@@ -726,6 +737,7 @@ export default {
|
||||
if(Number(record.tbMeetingType) === 3) {
|
||||
// 信息交流会议
|
||||
this.$refs.standardMeetingType.setCurrentDictOptions(arr.splice(2, 1))
|
||||
this.tbMeetingType = Number(this.model.tbMeetingType)
|
||||
}else {
|
||||
this.model.isAddQuestion = Number(this.model.isAddQuestion)
|
||||
this.isAddQuestion = this.model.isAddQuestion
|
||||
|
||||
@@ -212,6 +212,14 @@
|
||||
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>
|
||||
<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"
|
||||
@@ -236,6 +244,9 @@
|
||||
<a-button type="danger" icon="delete" @click="batchDel" v-has:[authorCode.batchDel]="'attendance:batchDel'">
|
||||
批量删除
|
||||
</a-button>
|
||||
<a-button type="primary" @click="batchSetGuestsUploadFileFlag" v-has:[authorCode.guestsUploadFileFlag]="'attendance:guestsUploadFileFlag'">
|
||||
批量设置资料状态
|
||||
</a-button>
|
||||
<!--当会议费用为0不需要合并开票 -->
|
||||
<!-- 变更将此功能添加到到账开票了 暂时注释 2021-09-16 -->
|
||||
<!-- <a-button type="primary" @click="batchInvoice" v-show="currentMeetingInfo.meetingCosts !== 0">合并开票</a-button>-->
|
||||
@@ -274,9 +285,15 @@
|
||||
<div v-else class="primary-color" @click="toSignUpDetail(record)">{{ text }}</div>
|
||||
</template>
|
||||
|
||||
<!--<template slot="text" slot-scope="text">-->
|
||||
<!-- <j-ellipsis v-if="text" :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>
|
||||
<a-tooltip>
|
||||
<template slot="title">{{ text }}</template>
|
||||
<div class="table-text">{{ text }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 打包、需要发票、到账、开票、邮寄状态-->
|
||||
@@ -302,7 +319,7 @@
|
||||
<!-- 只有缴费方式为汇款并且上传了汇款凭证的的才会有审核按钮 审核报名信息通过后才能审核凭证 审核通过后不显示 审核凭证按钮 -->
|
||||
<a @click="handleAudit(record)" v-if="(record.payMode === 1 || record.payMode === 2 ) && record.paymentRecord && record.checkResult !== 1"
|
||||
v-has:[authorCode.auditRecord]="'attendance:auditCredentials'">审核凭证</a>
|
||||
<!-- 只有工作组会议与分标委会议理事会会议才有审核报名信息-->
|
||||
<!-- 只有工作组会议与分标委会议理事会会议 才有审核报名信息-->
|
||||
<a @click="handleAuditSignUp(record)"
|
||||
v-show="(currentMeetingInfo.meetingType === '1' || currentMeetingInfo.meetingType === '5' || currentMeetingInfo.meetingType === '6') && record.registerCheckResult === 0 "
|
||||
v-has:[authorCode.auditSignUpInfo]="'attendance:auditSignUp'">审核报名信息</a>
|
||||
@@ -310,6 +327,12 @@
|
||||
<a @click="handleEdit(record)" v-if="record.registerCheckResult !== 2" v-has:[authorCode.edit]="'attendance:edit'">编辑</a>
|
||||
<!--删除参会人需要判断改参会人是否与合同关联-->
|
||||
<a @click="handleDelete(record.id)" v-has:[authorCode.delete]="'attendance:delete'">删除</a>
|
||||
<!-- 只有嘉宾才可以设置 且报名信息不需要审核-->
|
||||
<a
|
||||
@click="setGuestsUploadFileFlag(record)"
|
||||
v-show="record.identity === 1 && record.registerCheckResult !== 0"
|
||||
v-has:[authorCode.guestsUploadFileFlag]="'attendance:guestsUploadFileFlag'"
|
||||
>资料状态</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</div>
|
||||
@@ -323,6 +346,8 @@
|
||||
<project-detail-modal ref="projectDetailModal"></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>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
@@ -342,6 +367,8 @@ import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||
import StatusSlot from '@comp/tools/StatusSlot'
|
||||
import PreviewFile from '@comp/jero/PreviewFile'
|
||||
import JImageUpload from '@comp/jero/JImageUpload'
|
||||
import SetGuessUploadFlagModal from './modules/SetGuessUploadFlagModal'
|
||||
import { downloadFile } from '../../../api/manage'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -358,7 +385,8 @@ export default {
|
||||
PageHeaderTitle,
|
||||
StatusSlot,
|
||||
PreviewFile,
|
||||
JImageUpload
|
||||
JImageUpload,
|
||||
SetGuessUploadFlagModal
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -410,6 +438,18 @@ export default {
|
||||
title: '是否签到',
|
||||
align: 'center',
|
||||
dataIndex: 'checkIn_dictText',
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
title: '身份',
|
||||
align: 'center',
|
||||
dataIndex: 'identity_dictText',
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
title: '发票项目',
|
||||
align: 'center',
|
||||
dataIndex: 'invoiceProject_dictText',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
@@ -471,7 +511,8 @@ export default {
|
||||
edit: 'otherMeetingSituation:edit',
|
||||
delete: 'otherMeetingSituation:delete',
|
||||
auditRecord: 'otherMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'otherMeetingSituation:auditSignUp'
|
||||
auditSignUpInfo: 'otherMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'otherMeetingSituation:guestsUploadFileFlag'
|
||||
},
|
||||
// 分标委会议的参会情况权限编码
|
||||
committeeMeetingCode: {
|
||||
@@ -482,7 +523,8 @@ export default {
|
||||
edit: 'committeeMeetingSituation:edit',
|
||||
delete: 'committeeMeetingSituation:delete',
|
||||
auditRecord: 'committeeMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'committeeMeetingSituation:auditSignUp'
|
||||
auditSignUpInfo: 'committeeMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'committeeMeetingSituation:guestsUploadFileFlag'
|
||||
},
|
||||
// 工作组会议的参会情况的权限编码
|
||||
workGroupMeetingCode: {
|
||||
@@ -493,7 +535,8 @@ export default {
|
||||
edit: 'workGroupMeetingSituation:edit',
|
||||
delete: 'workGroupMeetingSituation:delete',
|
||||
auditRecord: 'workGroupMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'workGroupMeetingSituation:auditSignUp'
|
||||
auditSignUpInfo: 'workGroupMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'workGroupMeetingSituation:guestsUploadFileFlag'
|
||||
},
|
||||
// 国际研讨会的参会情况的权限编码
|
||||
internalMeetingCode: {
|
||||
@@ -504,7 +547,8 @@ export default {
|
||||
edit: 'internalMeetingSituation:edit',
|
||||
delete: 'internalMeetingSituation:delete',
|
||||
auditRecord: 'internalMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'internalMeetingSituation:auditSignUp'
|
||||
auditSignUpInfo: 'internalMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'internalMeetingSituation:guestsUploadFileFlag'
|
||||
},
|
||||
// 标协会议的参会情况的权限编码
|
||||
standardsMeetingCode: {
|
||||
@@ -515,7 +559,8 @@ export default {
|
||||
edit: 'standardsMeetingSituation:edit',
|
||||
delete: 'standardsMeetingSituation:delete',
|
||||
auditRecord: 'standardsMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'standardsMeetingSituation:auditSignUp'
|
||||
auditSignUpInfo: 'standardsMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'standardsMeetingSituation:guestsUploadFileFlag'
|
||||
},
|
||||
// 理事会的参会情况的权限编码
|
||||
councilMeetingCode: {
|
||||
@@ -526,7 +571,8 @@ export default {
|
||||
edit: 'councilMeetingSituation:edit',
|
||||
delete: 'councilMeetingSituation:delete',
|
||||
auditRecord: 'councilMeetingSituation:auditCredentials',
|
||||
auditSignUpInfo: 'councilMeetingSituation:auditSignUp'
|
||||
auditSignUpInfo: 'councilMeetingSituation:auditSignUp',
|
||||
guestsUploadFileFlag: 'councilMeetingSituation:guestsUploadFileFlag'
|
||||
},
|
||||
disableMixinCreated: true,
|
||||
// url: {
|
||||
@@ -594,7 +640,9 @@ export default {
|
||||
// 收款二维码
|
||||
payMentQRCode: '',
|
||||
// 会议费用
|
||||
meetingCostBool: false
|
||||
meetingCostBool: false,
|
||||
meetingId: '',
|
||||
meetingTypeValue: '',
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -605,6 +653,7 @@ export default {
|
||||
const param = {
|
||||
id: this.$route.query.id
|
||||
}
|
||||
|
||||
getMeetInfoById(param).then(res => {
|
||||
if (res.success) {
|
||||
this.currentMeetingInfo = Object.assign({}, res.result)
|
||||
@@ -645,6 +694,9 @@ export default {
|
||||
}
|
||||
})
|
||||
this.filters.meetingId = this.$route.query.id
|
||||
// 存储会议的基础信息
|
||||
this.meetingId = this.$route.query.id
|
||||
this.meetingTypeValue = Number(this.$route.query.meetingType)
|
||||
if(this.disableMixinCreated){
|
||||
this.loadData(1)
|
||||
}
|
||||
@@ -724,6 +776,19 @@ export default {
|
||||
this.$refs.auditModal.title = '审核报名信息'
|
||||
this.$refs.auditModal.open(record, true)
|
||||
},
|
||||
// 导出参会人信息
|
||||
handleExportXls(fileName) {
|
||||
if (!fileName || typeof fileName != 'string') {
|
||||
fileName = '导出文件'
|
||||
}
|
||||
let param = this.getQueryParams()
|
||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||
param['selections'] = this.selectedRowKeys.join(',')
|
||||
}
|
||||
// 增加特有的企业名称排序
|
||||
param.column = 'companyName'
|
||||
downloadFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
|
||||
},
|
||||
/*
|
||||
* 导入参会人
|
||||
* */
|
||||
@@ -890,6 +955,28 @@ export default {
|
||||
newInput.remove()
|
||||
this.$message.success('复制成功')
|
||||
},
|
||||
// 行内 设置嘉宾是否可上传文件,只有参会方式是嘉宾的可以设置
|
||||
setGuestsUploadFileFlag(record) {
|
||||
// 参会人员不是嘉宾,直接返回
|
||||
if(record.identity !== 1 || record.registerCheckResult === 0) return
|
||||
this.$refs.setGuessUploadFlagModal.show(record)
|
||||
},
|
||||
// 批量设置嘉宾是否可上传文件,只有参会方式是嘉宾的可以设置
|
||||
batchSetGuestsUploadFileFlag() {
|
||||
if (this.selectedRowKeys.length <= 0) {
|
||||
this.$message.warning('请选择一条记录!')
|
||||
return
|
||||
}
|
||||
// 判断只能身份为嘉宾的数据 设置资料状态
|
||||
let flag = this.selectionRows.some(item => {
|
||||
return item.identity !== 1 || item.registerCheckResult === 0
|
||||
})
|
||||
if(flag) {
|
||||
this.$message.warn('只有身份为嘉宾且报名信息审核通过的数据才可设置资料状态')
|
||||
return
|
||||
}
|
||||
this.$refs.setGuessUploadFlagModal.showBatch(this.selectedRowKeys)
|
||||
},
|
||||
/*
|
||||
* 通过会议类型设置权限编码
|
||||
* type 会议类型
|
||||
|
||||
@@ -1,32 +1,5 @@
|
||||
<template>
|
||||
<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">-->
|
||||
<!-- <a-radio-group v-decorator="['checkInHotel']">-->
|
||||
<!-- <a-radio :value="1">是</a-radio>-->
|
||||
<!-- <a-radio :value="0">否</a-radio>-->
|
||||
<!-- </a-radio-group>-->
|
||||
<!-- </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="['arrivalTime']" :trigger-change="true" :disabled-date="disabledStartDate"-->
|
||||
<!-- 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="请选择离开时间" :disabled-date="disabledEndDate" style="width: 100%;"-->
|
||||
<!-- v-decorator="['departureTime']" :trigger-change="true"-->
|
||||
<!-- date-format="YYYY-MM-DD"/>-->
|
||||
<!-- </a-form-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- </a-row>-->
|
||||
<!-- 选择嘉宾和内部企业、缴费方式为打包也不显示-->
|
||||
<!-- 会议费为0不显示 -->
|
||||
<template v-if="!meetingCostBool">
|
||||
<div class="item-title" v-if="identifyType === 2">缴费信息</div>
|
||||
@@ -104,12 +77,87 @@
|
||||
</template>
|
||||
|
||||
</template>
|
||||
<!-- 其他会议选择嘉宾和内部企业、缴费方式为打包也不显示-->
|
||||
<!-- 会议费为0不显示 -->
|
||||
<template v-if="!meetingCostBool && !needInvoiceBool ">
|
||||
<div class="item-title" v-if="identifyType === 2 && !payModeBool ">邮寄信息</div>
|
||||
|
||||
<!-- 发票信息=== 会议费用不为0 且需要发票 且 身份为参会人 且 缴费方式不是打包 -->
|
||||
<template v-if="!meetingCostBool && selectedInvoiceType && identifyType === MeetIdentifyTypeEnums.attendee.index && !payModeBool">
|
||||
<div class="item-title">发票信息</div>
|
||||
<a-row :gutter="24">
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool ">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="企业名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入企业名称"
|
||||
v-decorator="['companyName',validatorRules.companyName]"
|
||||
:maxLength='50'
|
||||
disabled
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></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="请输入信用代码"
|
||||
v-decorator="['dutyCode', validatorRules.dutyCode]"
|
||||
:maxLength='18'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!--增值税专用发票 多5个信息-->
|
||||
<template v-if="selectedInvoiceType === InvoiceTypeEnums.special.index">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="公司地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入公司地址"
|
||||
v-decorator="['companyAddress', validatorRules.companyAddress]"
|
||||
:maxLength='50'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></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="请输入公司电话"
|
||||
v-decorator="['companyPhone', validatorRules.companyPhone]"
|
||||
:maxLength='15'
|
||||
@change="e => e.target.value = (e.target.value.replace(/[^0-9-]/g, '')).trim()"></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="请输入开户行"
|
||||
v-decorator="['openingBank', validatorRules.openingBank]"
|
||||
:maxLength='50'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></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="请输入银行账号"
|
||||
v-decorator="['bankAccount', validatorRules.bankAccount]"
|
||||
:maxLength='50'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></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="请输入联行号"
|
||||
v-decorator="['linkBankNumber', validatorRules.linkBankNumber]"
|
||||
:maxLength='50'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</template>
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="发票项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-dict-select-tag style="width: 100%" dict-code="invoice_project"
|
||||
v-decorator="['invoiceProject',validatorRules.invoiceProject]"
|
||||
:trigger-change="true"
|
||||
placeholder="请选择发票项目"></j-dict-select-tag>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</template>
|
||||
<!-- 其他会议选择嘉宾和内部企业、缴费方式为打包也不显示-->
|
||||
<!-- 会议费用不为0 且需要发票 且 身份为参会人 且 缴费方式不是打包 -->
|
||||
<template v-if="!meetingCostBool && selectedInvoiceType && identifyType === MeetIdentifyTypeEnums.attendee.index && !payModeBool ">
|
||||
<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">
|
||||
<select-contacts :selected-company="selectedCompany"
|
||||
:init-contacts="selectPostPerson"
|
||||
@@ -124,7 +172,7 @@
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!-- 选择嘉宾和内部企业、缴费方式为打包也不显示-->
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool ">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="邮寄地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入邮寄地址"
|
||||
:maxLength='50'
|
||||
@@ -133,7 +181,7 @@
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 && !payModeBool ">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="邮编" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入邮编"
|
||||
:disabled="isEditBool"
|
||||
@@ -158,6 +206,8 @@ import {getContactsById} from '@api/api'
|
||||
import {money} from '@/utils/validate'
|
||||
import {CalcAmountMixin} from '@/mixins/CalcAmountMixin'
|
||||
import {addZero} from '@/utils/util'
|
||||
import { InvoiceTypeEnums, MeetIdentifyTypeEnums } from '../../../enums/commonEnums'
|
||||
|
||||
|
||||
export default {
|
||||
name: 'OtherMeetingForm',
|
||||
@@ -196,6 +246,8 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
InvoiceTypeEnums,
|
||||
MeetIdentifyTypeEnums,
|
||||
desription: '其他会议的参会情况的表单',
|
||||
ysjeKey: 'amountReceivable',
|
||||
form: this.$form.createForm(this),
|
||||
@@ -262,12 +314,45 @@ export default {
|
||||
rules: [{required: true, message: '请输入邮编'}],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
companyName: {
|
||||
rules: [{ required: true, message: '请输入企业名称' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
dutyCode: {
|
||||
rules: [{required: true, message: '请输入信用代码'}, {
|
||||
pattern: /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/,
|
||||
message: '请输入15位、18位的信用代码'
|
||||
}],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
companyAddress: {
|
||||
rules: [{ required: true, message: '请输入公司地址' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
companyPhone: {
|
||||
rules: [{ required: true, validator: this.checkCompanyPhone }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
openingBank: {
|
||||
rules: [{ required: true, message: '请输入开户行' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
bankAccount: {
|
||||
rules: [{ required: true, message: '请输入银行账号' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
linkBankNumber: { rules: [{ required: true, message: '请输入联行号' }], validateTrigger: 'blur' },
|
||||
invoiceProject: {
|
||||
rules: [{required: true, message: '请选择发票项目'}],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
|
||||
},
|
||||
// 是否可编辑
|
||||
isEditBool: false,
|
||||
// 是否需要发票
|
||||
needInvoiceBool: true,
|
||||
needInvoiceBool: false,
|
||||
selectedInvoiceType: 0, // 选择是否需要发票
|
||||
// 是否已经到账
|
||||
isCheckInBool: false,
|
||||
}
|
||||
@@ -319,6 +404,29 @@ export default {
|
||||
handleOk() {
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
// 如果需要发票,判断当前的发票信息是否进行了修改,用于最后提交的时候判断是否请求接口,减少冗余的请求
|
||||
let needInvoice = Number(values.needInvoice)
|
||||
if (needInvoice) {
|
||||
let confirmArr = [
|
||||
{name: '企业名称', key: 'companyName'},
|
||||
{name: '信用代码', key: 'dutyCode'},
|
||||
]
|
||||
if(needInvoice === InvoiceTypeEnums.special.index) {
|
||||
confirmArr = confirmArr.concat([
|
||||
{name: '公司地址', key: 'companyAddress'},
|
||||
{name: '公司电话', key: 'companyPhone'},
|
||||
{name: '开户行', key: 'openingBank'},
|
||||
{name: '银行账号', key: 'bankAccount'},
|
||||
{name: '联行号', key: 'linkBankNumber'}
|
||||
])
|
||||
}
|
||||
let changeInvoiceFlag = confirmArr.some(tt => {
|
||||
if(this.selectedCompany[tt.key] !== values[tt.key]) {
|
||||
return true
|
||||
}
|
||||
})
|
||||
values.changeInvoiceFlag = changeInvoiceFlag
|
||||
}
|
||||
this.$emit('formData', values)
|
||||
} else {
|
||||
this.$emit('formData', {stop: true})
|
||||
@@ -398,7 +506,10 @@ export default {
|
||||
setFormVal(record) {
|
||||
// this.isEditBool = record.checkResult === 1
|
||||
this.isEditBool = false
|
||||
this.needInvoiceBool = record.needInvoice === 0
|
||||
// this.needInvoiceBool = Number(record.needInvoice) !== 0
|
||||
this.changeInvoice(record.needInvoice)
|
||||
// this.selectedInvoiceType = Number(record.needInvoice)
|
||||
|
||||
// 是否已经到账
|
||||
this.isCheckInBool = record.inAccount === 1
|
||||
// 回显邮寄联系人
|
||||
@@ -424,7 +535,8 @@ export default {
|
||||
'amountReceivable',
|
||||
'taxRate',
|
||||
'tax',
|
||||
'noTaxAmount'
|
||||
'noTaxAmount',
|
||||
'invoiceProject' // 发票项目
|
||||
))
|
||||
})
|
||||
|
||||
@@ -434,11 +546,43 @@ export default {
|
||||
* 选择发票
|
||||
* */
|
||||
changeInvoice(val) {
|
||||
if (val === '0') {
|
||||
this.selectedInvoiceType = Number(val)
|
||||
if (this.selectedInvoiceType === 0) {
|
||||
// 不需要发票
|
||||
this.needInvoiceBool = true
|
||||
// this.needInvoiceBool = false
|
||||
} else {
|
||||
this.needInvoiceBool = false
|
||||
// this.needInvoiceBool = true
|
||||
}
|
||||
this.setInvoiceFormItem()
|
||||
},
|
||||
// 设置表单中发票的信息
|
||||
setInvoiceFormItem() {
|
||||
if (this.selectedInvoiceType === InvoiceTypeEnums.special.index) {
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.selectedCompany, 'companyName', 'dutyCode', 'companyAddress', 'companyPhone', 'bankAccount', 'openingBank', 'linkBankNumber'))
|
||||
})
|
||||
} else if(this.selectedInvoiceType === InvoiceTypeEnums.plain.index) {
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.selectedCompany, 'companyName', 'dutyCode'))
|
||||
})
|
||||
}
|
||||
},
|
||||
// 清空 发票信息的数据
|
||||
clearInvoiceFormItem() {
|
||||
this.form.resetFields(['companyName', 'dutyCode', 'companyAddress', 'companyPhone', 'bankAccount', 'openingBank', 'linkBankNumber'])
|
||||
},
|
||||
/*
|
||||
* 验证发票信息-电话号码 的正确性
|
||||
* */
|
||||
checkCompanyPhone(rule, value, callback) {
|
||||
const reg = /^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9])|(19[8|9])|(16[6]))\d{8}$|^([0-9]{3,4}-)[0-9]{7,8}$/
|
||||
if (!value) {
|
||||
callback('请输入电话号码')
|
||||
}
|
||||
if (value && !reg.test(value)) {
|
||||
callback(new Error('请输入正确格式的电话号码'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
addContactsOk() {
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<a-form-item label="参会企业" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<add-meeting-company @change="changeCompany" v-decorator="['companyId',validatorRules.companyId]"
|
||||
placeholder="请选择参会企业"
|
||||
full-company-info
|
||||
:disabled="model.checkResult === 1"
|
||||
:maxLength='50'>
|
||||
</add-meeting-company>
|
||||
@@ -43,28 +44,10 @@
|
||||
</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'-->
|
||||
<!-- disabled-->
|
||||
<!-- v-decorator="[ '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'-->
|
||||
<!-- disabled-->
|
||||
<!-- 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-radio-group v-decorator="['identity',validatorRules.identify]" @change="changeIdentify">
|
||||
<!--内部企业的时候不允许进行修改参会身份-->
|
||||
<a-radio-group :disabled="identifyType === 3" v-decorator="['identity',validatorRules.identify]" @change="changeIdentify">
|
||||
<a-radio :value="1">嘉宾</a-radio>
|
||||
<a-radio :value="2">参会人</a-radio>
|
||||
<a-radio :value="3" :disabled="!isInternalEnterprise">内部企业</a-radio>
|
||||
@@ -114,6 +97,20 @@
|
||||
<seminar-partner-form ref="seminarPartnerForm" @formData="getFormData"></seminar-partner-form>
|
||||
</template>
|
||||
|
||||
<div class="item-title">其他信息</div>
|
||||
<a-row :gutter="24">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||
<a-textarea
|
||||
placeholder="请输入备注"
|
||||
:auto-size="{ minRows: 3, maxRows: 6 }"
|
||||
v-decorator="['remark']"
|
||||
:maxLength='200'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
|
||||
</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>
|
||||
@@ -137,6 +134,7 @@ import { 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'
|
||||
|
||||
export default {
|
||||
name: 'SignUpInfoEdit',
|
||||
@@ -291,13 +289,28 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 通过企业的id获取企业管理中的基本信息,用于发票回显
|
||||
queryCompanyInfoById(id) {
|
||||
return new Promise(resolve => {
|
||||
let result = {}
|
||||
queryCompanyInfoById({id}).then(res => {
|
||||
if(res.success) {
|
||||
result = res.result || {}
|
||||
result = pick(res.result, 'companyName', 'dutyCode', 'companyAddress', 'companyPhone', 'openingBank', 'bankAccount', 'linkBankNumber')
|
||||
}
|
||||
}).finally(() => {
|
||||
resolve(result)
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
addContactsOk() {
|
||||
this.$refs.selectContacts.getContactsList()
|
||||
},
|
||||
/*
|
||||
* 编辑
|
||||
* */
|
||||
edit(record){
|
||||
async edit(record){
|
||||
this.isInternalEnterprise = false
|
||||
this.form.resetFields()
|
||||
this.model = Object.assign({},record)
|
||||
@@ -310,10 +323,30 @@ export default {
|
||||
// 参会单位回显
|
||||
this.model.companyId = {
|
||||
id:this.model.companyId,
|
||||
companyName:this.model.companyName
|
||||
companyName:this.model.companyName,
|
||||
}
|
||||
// 参会人回显
|
||||
this.selectedCompany = this.model.companyId
|
||||
// this.selectedCompany = this.model.companyId
|
||||
// 如果当前的参会人信息中发票信息不全 则从企业管理中获取一下
|
||||
// if(!this.model.dutyCode && !this.model.companyAddress)
|
||||
// 从企业管理中获取全部的会议信息
|
||||
let companyInfo = await this.queryCompanyInfoById(this.model.companyId.id)
|
||||
// 判断当前数据中企业信息是否完整 将有数据的赋值到数据中
|
||||
// 写入发票的信息,因为需要回显
|
||||
// dutyCode:this.model.dutyCode, // 信用代码
|
||||
// companyAddress:this.model.companyAddress, // 公司地址
|
||||
// companyPhone:this.model.companyPhone, // 公司电话
|
||||
// openingBank:this.model.openingBank, // 开户行
|
||||
// bankAccount:this.model.bankAccount, // 银行账号
|
||||
// linkBankNumber:this.model.linkBankNumber // 联行号
|
||||
let invoiceKeys = ['dutyCode', 'companyAddress', 'companyPhone', 'openingBank', 'bankAccount', 'linkBankNumber']
|
||||
let invoiceInfo = {}
|
||||
invoiceKeys.map(key => {
|
||||
if(this.model[key]) {
|
||||
invoiceInfo[key] = this.model[key]
|
||||
}
|
||||
})
|
||||
this.selectedCompany = Object.assign({}, companyInfo, this.model.companyId, invoiceInfo)
|
||||
this.selectPerson = {
|
||||
id:this.model.companyContactTemporaryId,
|
||||
name:this.model.companyContactName
|
||||
@@ -354,7 +387,8 @@ export default {
|
||||
'email',
|
||||
'post',
|
||||
'identity',
|
||||
'guestType'
|
||||
'guestType',
|
||||
'remark'
|
||||
))
|
||||
})
|
||||
},
|
||||
@@ -382,6 +416,10 @@ export default {
|
||||
if (!err) {
|
||||
this.confirmLoading = true
|
||||
let submitData = Object.assign({},values,this.formData)
|
||||
// 去掉所有的未审核字段,有中文的 有英文的
|
||||
if(submitData.companyName) {
|
||||
submitData.companyName = (submitData.companyName || '').replaceAll(' (未审核)','').replaceAll(' (未审核)','')
|
||||
}
|
||||
submitData.companyId = values.companyId.id
|
||||
// 会议id
|
||||
submitData.meetingId = this.$route.query.meetingId
|
||||
@@ -438,7 +476,7 @@ export default {
|
||||
this.guestType = null
|
||||
}
|
||||
this.$nextTick( ()=> {
|
||||
this.$refs.formother.setFormVal(this.model)
|
||||
this.$refs.formother.setFormVal(Object.assign({}, this.model, { identify: this.identifyType}))
|
||||
})
|
||||
},
|
||||
/*
|
||||
@@ -450,8 +488,9 @@ export default {
|
||||
/*
|
||||
* 选择参会企业
|
||||
* */
|
||||
changeCompany(value) {
|
||||
this.selectedCompany = value
|
||||
changeCompany(value, otherParams) {
|
||||
// this.selectedCompany = value
|
||||
this.selectedCompany = otherParams
|
||||
// 去掉未审核 去判断的企业是否是标协会企业
|
||||
let companyName = this.selectedCompany.companyName.replaceAll('(未审核)','')
|
||||
|
||||
@@ -480,10 +519,13 @@ export default {
|
||||
this.form.resetFields(['companyContactId','phone'])
|
||||
if(this.$refs.formother ){
|
||||
this.$refs.formother.clearFormItem()
|
||||
// 设置发票的相关信息
|
||||
this.$refs.formother.setInvoiceFormItem()
|
||||
}
|
||||
// 判断当前企业是否是内部企业
|
||||
console.log('-----this.selectedCompany-----', this.selectedCompany)
|
||||
this.judgeInternalEnterprise(this.selectedCompany.id)
|
||||
|
||||
},
|
||||
/*
|
||||
* 选择联系人获取信息
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
<!--设置嘉宾上传文件的标识-->
|
||||
<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="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-dict-select-tag v-decorator="['guestsUploadFileFlag', validatorRules.guestsUploadFileFlag]"
|
||||
:trigger-change="true"
|
||||
placeholder="请选择状态"
|
||||
dictCode="yn" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</a-spin>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { httpAction } from '@api/manage'
|
||||
const requestUrlObj = {
|
||||
workGroupMeetingUrl: '/meeting/workGroupMeetingSituation/setGuestsUploadFile', // 工作组
|
||||
standardsMeetingUrl: '/meeting/standardsMeetingSituation/setGuestsUploadFile', // 标协会议
|
||||
internalMeetingUrl: '/meeting/internalMeetingSituation/setGuestsUploadFile', // 国际研讨会的url
|
||||
otherMeetingUrl: '/meeting/ohterMeetingSituation/setGuestsUploadFile', // 其他会议的url
|
||||
committeeMeetingUrl: '/meeting/committeeMeetingSituation/setGuestsUploadFile', // 分标委会议的url
|
||||
councilMeetingUrl: '/meeting/councilMeetingSituation/setGuestsUploadFile', // 理事会的url
|
||||
}
|
||||
|
||||
export default {
|
||||
name: 'SetGuessUploadFlagModal',
|
||||
props: {
|
||||
// 会议类型
|
||||
meetingType: {
|
||||
type: Number,
|
||||
required: false
|
||||
},
|
||||
meetingId: {
|
||||
type: String,
|
||||
required: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
requestUrl() {
|
||||
switch (Number(this.meetingType)) {
|
||||
case 1:
|
||||
return requestUrlObj.workGroupMeetingUrl
|
||||
case 2:
|
||||
return requestUrlObj.standardsMeetingUrl
|
||||
case 3:
|
||||
return requestUrlObj.internalMeetingUrl
|
||||
case 4:
|
||||
return requestUrlObj.otherMeetingUrl
|
||||
case 5:
|
||||
return requestUrlObj.committeeMeetingUrl
|
||||
case 6:
|
||||
return requestUrlObj.councilMeetingUrl
|
||||
// 为了解决控制台报错写的
|
||||
default:return requestUrlObj.workGroupMeetingUrl
|
||||
}
|
||||
},
|
||||
},
|
||||
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 }
|
||||
},
|
||||
validatorRules: {
|
||||
guestsUploadFileFlag: {
|
||||
rules: [{ required: true, message: '请选择状态' }],
|
||||
validateTrigger: 'blur'
|
||||
}
|
||||
},
|
||||
url: {
|
||||
// setLabel: '/project/payWorkingGroupSubitem/setLabel'
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 行内的展示
|
||||
show(record) {
|
||||
this.form.resetFields()
|
||||
let params = {}
|
||||
if(record) {
|
||||
params.guestsUploadFileFlag = record.guestsUploadFileFlag || 0
|
||||
this.selectedIds = [record.id]
|
||||
} else {
|
||||
params.guestsUploadFileFlag = 0
|
||||
}
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(params)
|
||||
})
|
||||
},
|
||||
// 批量处理
|
||||
showBatch(ids) {
|
||||
this.selectedIds = ids
|
||||
this.show()
|
||||
},
|
||||
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 = this.requestUrl
|
||||
let method = 'post'
|
||||
const formData = Object.assign({}, values)
|
||||
formData.meetingId = that.meetingId
|
||||
formData.meetingSituationIds = that.selectedIds.join(',')
|
||||
this.confirmLoading = false
|
||||
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()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -12,12 +12,12 @@
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<!--上传会议资料显示 -->
|
||||
<a-form-item label="会议文件" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="type === '2' ">
|
||||
<j-upload file-type-error-message="请上传会议文件" :multiple="true"
|
||||
:return-id="true"
|
||||
v-decorator="['fileIds']"
|
||||
:trigger-change="true"></j-upload>
|
||||
</a-form-item>
|
||||
<!--<a-form-item label="会议文件" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="type === '2' ">-->
|
||||
<!-- <j-upload file-type-error-message="请上传会议文件" :multiple="true"-->
|
||||
<!-- :return-id="true"-->
|
||||
<!-- v-decorator="['fileIds']"-->
|
||||
<!-- :trigger-change="true"></j-upload>-->
|
||||
<!--</a-form-item>-->
|
||||
<!--上传会议纪要显示 -->
|
||||
<a-form-item label="会议纪要" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="type === '1' ">
|
||||
<j-upload file-type-error-message="请上传会议纪要" :multiple="true"
|
||||
@@ -28,6 +28,42 @@
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
<!-- 以表格的形式展示 所有的文件 -->
|
||||
<template v-if="type === '2' ">
|
||||
<div class="table-operator">
|
||||
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
|
||||
:action="importExcelUrl" :beforeUpload="beforeUpload" @change="handleChange"
|
||||
>
|
||||
<a-button type="primary" icon="plus">新增</a-button>
|
||||
</a-upload>
|
||||
<a-button type="danger" icon="delete" @click="batchDel">
|
||||
批量删除
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
rowKey="id"
|
||||
:scroll="{x:auto}"
|
||||
:pagination="false"
|
||||
:columns="columns"
|
||||
:dataSource="fileList"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||
class="j-table-force-nowrap"
|
||||
>
|
||||
<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="record" class="action-span-cell">
|
||||
<a class="color-blue" @click="myDownload(record)">下载</a>
|
||||
<a class="color-blue" @click="myPreview(record)">查看</a>
|
||||
<a class="color-blue" @click="deleteFile(record)">删除</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</template>
|
||||
</a-spin>
|
||||
<email-error-msg-modal ref="emailError"></email-error-msg-modal>
|
||||
</j-modal>
|
||||
@@ -36,7 +72,38 @@
|
||||
<script>
|
||||
import JUpload from '@comp/jero/JUpload'
|
||||
import {httpAction} from '@api/manage'
|
||||
import {getFileInfoByIds} from '@/api/api'
|
||||
import EmailErrorMsgModal from '@views/projectManagement/modules/EmailErrorMsgModal'
|
||||
import Vue from 'vue'
|
||||
import { downloadFile } from '../../../../api/manage'
|
||||
import { ACCESS_TOKEN } from '../../../../store/mutation-types'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
import store from '@/store'
|
||||
const FILE_TYPE_ALL = 'all'
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: '文件名',
|
||||
align: 'center',
|
||||
dataIndex: 'fileName',
|
||||
width: 200,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '上传人',
|
||||
align: 'center',
|
||||
dataIndex: 'createBy',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
dataIndex: '',
|
||||
scopedSlots: {customRender: 'action'},
|
||||
width: 150
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'UploadMeetFileModal',
|
||||
@@ -47,7 +114,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
title: '上传文件',
|
||||
width: 400,
|
||||
width: 1000,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
form: this.$form.createForm(this),
|
||||
@@ -66,7 +133,22 @@ export default {
|
||||
// 已经上传的会议文件
|
||||
meetingFileIds: '',
|
||||
validatorRules: {},
|
||||
url: {}
|
||||
url: {},
|
||||
columns,
|
||||
fileList: [],
|
||||
/* table选中keys*/
|
||||
selectedRowKeys: [],
|
||||
fileType: FILE_TYPE_ALL
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
//token header
|
||||
tokenHeader() {
|
||||
let head = {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)}
|
||||
return head
|
||||
},
|
||||
importExcelUrl: function () {
|
||||
return `${ window._CONFIG['domianURL'] }/sys/common/uploadByToken`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -74,7 +156,7 @@ export default {
|
||||
this.edit({})
|
||||
},
|
||||
// type 1上传会议纪要 2上传会议资料
|
||||
edit(record, type) {
|
||||
async edit(record, type) {
|
||||
this.visible = true
|
||||
this.type = type
|
||||
this.form.resetFields()
|
||||
@@ -93,8 +175,9 @@ export default {
|
||||
} else if (type === '2') {
|
||||
this.meetingFileIds = this.model.meetingData ? this.model.meetingData : ''
|
||||
if (this.meetingFileIds && this.meetingFileIds !== '') {
|
||||
this.fileList = await this.getFileInfoArr(this.meetingFileIds)
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue({'fileIds': this.meetingFileIds})
|
||||
// this.form.setFieldsValue({'fileIds': this.meetingFileIds})
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -105,6 +188,7 @@ export default {
|
||||
this.meetingFileIds = ''
|
||||
this.type = ''
|
||||
this.visible = false
|
||||
this.confirmLoading = false
|
||||
},
|
||||
// uplodFile 上传会议资料的接口 uploadCouncilFile 上传会议纪要的接口
|
||||
createUrlByMeetingType(meetingType) {
|
||||
@@ -153,57 +237,249 @@ export default {
|
||||
return
|
||||
}
|
||||
this.confirmLoading = true
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err && values.fileIds !== undefined) {
|
||||
const params = {
|
||||
fileIds: values.fileIds,
|
||||
id: that.meetingId
|
||||
}
|
||||
let url
|
||||
if (this.type === '1') {
|
||||
// 上传会议纪要用会议纪要的接口
|
||||
url = this.url.uploadCouncilFile
|
||||
} else if (this.type === '2') {
|
||||
url = this.url.uploadFile
|
||||
}
|
||||
httpAction(url, params, 'post').then(res => {
|
||||
if (res.success) {
|
||||
// 所有的数据验证后请求的回调方法
|
||||
const callbackFunc = (url, params) => {
|
||||
httpAction(url, params, 'post').then(res => {
|
||||
if (res.success) {
|
||||
|
||||
if (Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
that.$refs.emailError.open()
|
||||
that.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
}else {
|
||||
that.$message.success(res.message)
|
||||
}
|
||||
that.$emit('ok')
|
||||
this.confirmLoading = false
|
||||
that.close()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
this.confirmLoading = false
|
||||
if (Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
that.$refs.emailError.open()
|
||||
that.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
}else {
|
||||
that.$message.success(res.message)
|
||||
}
|
||||
}).catch((err) => {
|
||||
console.log(err, 'err')
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
} else {
|
||||
that.close()
|
||||
that.$emit('ok')
|
||||
this.confirmLoading = false
|
||||
that.close()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
this.confirmLoading = false
|
||||
}
|
||||
}).catch((err) => {
|
||||
console.log(err, 'err')
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
}
|
||||
|
||||
// 会议纪要-触发表单的验证
|
||||
if(this.type === '1') {
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err && values.fileIds !== undefined) {
|
||||
const params = {
|
||||
fileIds: values.fileIds,
|
||||
id: that.meetingId
|
||||
}
|
||||
let url = this.url.uploadCouncilFile
|
||||
callbackFunc(url, params)
|
||||
} else {
|
||||
that.close()
|
||||
}
|
||||
})
|
||||
} else if (this.type === '2'){
|
||||
// 会议文件
|
||||
let ids = this.fileList.map(tt => tt.id).join(',')
|
||||
const params = {
|
||||
fileIds: ids,
|
||||
id: that.meetingId
|
||||
}
|
||||
})
|
||||
let url = this.url.uploadFile
|
||||
// 会议文件 不用对比开始与最后文件的差别,后端会自己比对
|
||||
callbackFunc(url, params)
|
||||
}
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
},
|
||||
/**
|
||||
* 通过文件的id获取文件的相关信息
|
||||
* @param id
|
||||
*/
|
||||
getFileInfoArr(ids) {
|
||||
return new Promise(resolve => {
|
||||
let result = {}
|
||||
getFileInfoByIds({ids: ids}).then(res => {
|
||||
if (res.success) {
|
||||
result = res.result
|
||||
}
|
||||
}).finally(() => {
|
||||
resolve(result)
|
||||
})
|
||||
})
|
||||
},
|
||||
onSelectChange(selectedRowKeys, selectionRows) {
|
||||
this.selectedRowKeys = selectedRowKeys
|
||||
this.selectionRows = selectionRows
|
||||
},
|
||||
onClearSelected() {
|
||||
this.selectedRowKeys = []
|
||||
this.selectionRows = []
|
||||
},
|
||||
/**
|
||||
* 单个文件的下载功能
|
||||
* @param file
|
||||
*/
|
||||
myDownload(file) {
|
||||
downloadFile(`sys/common/download/${file.id}`, file.fileName)
|
||||
},
|
||||
/**
|
||||
* 单个文件的预览功能
|
||||
* @param file
|
||||
*/
|
||||
myPreview(file) {
|
||||
if (file && file.url) {
|
||||
const fileName = (file || {}).fileName
|
||||
const fileNameNotType = fileName.substring(0, fileName.lastIndexOf('.'))
|
||||
const previewUrl = (file || {}).url || ''
|
||||
const previewName = previewUrl.substring(previewUrl.lastIndexOf(fileNameNotType))
|
||||
|
||||
const fileFullUrl = `${window._CONFIG['domianWebSocketURL']}/sys/common/download/${file.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${previewName}`
|
||||
let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}`
|
||||
window.open(url)
|
||||
}
|
||||
},
|
||||
// 单个文件的删除
|
||||
deleteFile(file) {
|
||||
const that = this
|
||||
this.$confirm({
|
||||
title: '确认删除',
|
||||
content: '确定要删除此条数据吗?',
|
||||
onOk: function () {
|
||||
let index = that.fileList.findIndex(tt => tt.id === file.id)
|
||||
that.fileList.splice(index, 1)
|
||||
that.onClearSelected()
|
||||
}
|
||||
})
|
||||
},
|
||||
batchDel() {
|
||||
if (this.selectedRowKeys.length <= 0) {
|
||||
this.$message.warning('请选择一条记录!')
|
||||
return
|
||||
}
|
||||
const that = this
|
||||
this.$confirm({
|
||||
title: '确认删除',
|
||||
content: '是否删除选中数据?',
|
||||
onOk: function () {
|
||||
that.fileList = that.fileList.filter(tt => !that.selectedRowKeys.includes(tt.id))
|
||||
that.onClearSelected()
|
||||
}
|
||||
})
|
||||
},
|
||||
beforeUpload(file) {
|
||||
this.uploadGoOn = true
|
||||
file.uploadGoOn = true
|
||||
const fileSize = file.size // 上传的文件大小
|
||||
const fileType = file.type // 上传的文件类型
|
||||
if (fileSize > 1024 * 1024 * 100) {
|
||||
this.$message.warning('文件大小限制为100M')
|
||||
this.uploadGoOn = false
|
||||
file.uploadGoOn = false
|
||||
return false
|
||||
}
|
||||
// 不等于全部类型可以上传的时候,对上传的文件进行判断
|
||||
if (this.fileType !== FILE_TYPE_ALL) {
|
||||
// filter(tt => fileType.indexOf(tt) > -1) 判断用户传的文件类型,和要求传的文件类型是否一致
|
||||
// 当上传的图片格式为jpg时,在此组件中,会返回类型为 image/jpeg ElememntUI设计如此 所以需要把用户传下来的jpg强制改成jpeg
|
||||
this.fileTypes = this.fileTypes.replace('jpg', 'jpeg')
|
||||
const arr = this.fileTypes.split(',').filter(tt => fileType.indexOf(tt) > -1)
|
||||
if (arr.length === 0) {
|
||||
this.$message.warning(this.fileTypeErrorMessage || `请上传${this.fileTypes}文件`)
|
||||
this.uploadGoOn = false
|
||||
file.uploadGoOn = false
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
},
|
||||
handleChange(info) {
|
||||
if (info.file.status !== 'uploading') {
|
||||
console.log(info.file, info.fileList)
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
if (info.file.response.success) {
|
||||
// this.$message.success(`${info.file.name} 文件上传成功`);
|
||||
if (info.file.response.code === 201) {
|
||||
let {message, result: {msg, fileUrl, fileName}} = info.file.response
|
||||
let href = window._CONFIG['domianURL'] + fileUrl
|
||||
this.$warning({
|
||||
title: message,
|
||||
content: (<div>
|
||||
<span>{msg}</span>
|
||||
<br/>
|
||||
<span>具体详情请
|
||||
<a href={href} target="_blank" download={fileName}>点击下载</a>
|
||||
</span>
|
||||
</div>
|
||||
)
|
||||
})
|
||||
} else {
|
||||
this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`)
|
||||
}
|
||||
|
||||
this.fileList.push(info.file.response.result)
|
||||
} else {
|
||||
this.messageLineFeed('文件导入错误', info.file.response.message)
|
||||
}
|
||||
} else if (info.file.status === 'error') {
|
||||
if (info.file.response.status === 500) {
|
||||
let data = info.file.response
|
||||
const token = Vue.ls.get(ACCESS_TOKEN)
|
||||
if (token && data.message.includes('Token失效')) {
|
||||
Modal.error({
|
||||
title: '登录已过期',
|
||||
content: '很抱歉,登录已过期,请重新登录',
|
||||
okText: '重新登录',
|
||||
mask: false,
|
||||
onOk: () => {
|
||||
store.dispatch('Logout').then(() => {
|
||||
Vue.ls.remove(ACCESS_TOKEN)
|
||||
window.location.reload()
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$message.error(`文件上传失败: ${info.file.msg} `)
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
/**
|
||||
* 对包含<br/>的后端错误信息进行处理
|
||||
* @param title
|
||||
* @param content
|
||||
*/
|
||||
messageLineFeed(title, content) {
|
||||
const messageArr = content.split('<br/>')
|
||||
let htmlDom = []
|
||||
messageArr.map(tt => {
|
||||
if (tt) {
|
||||
htmlDom.push((<div>{tt}</div>))
|
||||
}
|
||||
})
|
||||
this.$warning({
|
||||
title: title,
|
||||
content: (h) => <div>
|
||||
{htmlDom}
|
||||
</div>
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
/*表格滚动条*/
|
||||
.ant-table-body {
|
||||
overflow-x: auto!important;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
@@ -24,6 +24,16 @@
|
||||
:maxLength='200'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-textarea>
|
||||
</a-form-item>
|
||||
<!-- 2023-07变更:设置消息提醒截止时间,超出截止时间未读弹框提醒 -->
|
||||
<a-form-item label="消息提醒截止时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-date-picker
|
||||
placeholder="请选择消息提醒截止时间"
|
||||
v-decorator="['deadline', validatorRules.deadline]"
|
||||
show-time
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-spin>
|
||||
</j-modal>
|
||||
@@ -44,11 +54,11 @@ export default {
|
||||
model: {},
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 4 }
|
||||
sm: { span: 5 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 20 }
|
||||
sm: { span: 19 }
|
||||
},
|
||||
url: '/send/message/sendAllUserMessage',
|
||||
validatorRules: {
|
||||
@@ -59,6 +69,10 @@ export default {
|
||||
content: {
|
||||
rules: [{ required: true, message: '请输入通知内容' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
deadline: {
|
||||
rules: [{ required: true, message: '请选择消息提醒截止时间' }],
|
||||
validateTrigger: 'change'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
<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="8" :md="8" :sm="24">
|
||||
<a-form-item label="公告名称">
|
||||
<a-input placeholder="请输入公告名称" v-model="queryParam.noticeName" :maxLength="50"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
||||
<a-form-item label="公告内容">
|
||||
<a-input placeholder="请输入公告内容" v-model="queryParam.noticeContent"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<span class="table-page-search-submitButtons">
|
||||
<!-- v-has="'template:list'"-->
|
||||
<a-button type="primary" @click="searchQuery" icon="search" v-has="'sysNotice:pageList'">查询</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>
|
||||
|
||||
<!-- 操作按钮区域 -->
|
||||
<div class="table-operator">
|
||||
<!-- v-has="'template:add:systemNotifications'"-->
|
||||
<a-button @click="handleAdd" type="primary" icon="plus" v-has="'sysNotice:add'">新增</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">
|
||||
|
||||
<!-- 字符串超长截取省略号显示-->
|
||||
<span slot="templateContent" slot-scope="text">
|
||||
<a-tooltip>
|
||||
<template slot="title">
|
||||
<span v-html="text"></span>
|
||||
</template>
|
||||
<span v-html="myEllipsis(text,40)"></span>
|
||||
</a-tooltip>
|
||||
</span>
|
||||
|
||||
<template slot="text" slot-scope="text">
|
||||
<j-ellipsis v-if="text" :length="20" :value="text"></j-ellipsis>
|
||||
<span v-else></span>
|
||||
</template>
|
||||
|
||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||
<!-- v-has="'template:list'"-->
|
||||
<a @click="handleEdit(record)" v-has="'sysNotice:edit'">编辑</a>
|
||||
<!-- v-has="'template:delete'"-->
|
||||
<a @click="handleDelete(record.id)" v-has="'sysNotice:deleteById'">删除</a>
|
||||
</span>
|
||||
|
||||
</a-table>
|
||||
</div>
|
||||
<!-- table区域-end -->
|
||||
|
||||
<!-- 表单区域 -->
|
||||
<sys-notice-modal ref="modalForm" @ok="modalFormOk"></sys-notice-modal>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||
import IconImg from '@/assets/imgs/icon/icon_notice.png'
|
||||
import SysNoticeModal from './modules/SysNoticeModal'
|
||||
import PageHeaderTitle from '../../../components/layouts/PageHeaderTitle'
|
||||
|
||||
export default {
|
||||
name: 'SysNoticeList',
|
||||
mixins: [JeroListMixin],
|
||||
components: {SysNoticeModal, PageHeaderTitle},
|
||||
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: 'noticeName',
|
||||
scopedSlots: { customRender: 'text' },
|
||||
width: 300
|
||||
},
|
||||
{
|
||||
title: '公告内容',
|
||||
align: 'center',
|
||||
dataIndex: 'noticeContent',
|
||||
scopedSlots: { customRender: 'text' },
|
||||
width: 200
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
align: 'center',
|
||||
scopedSlots: { customRender: 'action' },
|
||||
width: 160
|
||||
}
|
||||
],
|
||||
url: {
|
||||
list: '/sysNotice/pageList',
|
||||
delete: '/sysNotice/deleteById',
|
||||
deleteBatch: '/sysNotice/deleteBatch'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
</style>
|
||||
@@ -0,0 +1,143 @@
|
||||
<template>
|
||||
<a-modal
|
||||
:title="title"
|
||||
:width="800"
|
||||
:visible="visible"
|
||||
:confirmLoading="confirmLoading"
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
cancelText="关闭">
|
||||
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<a-form :form="form">
|
||||
|
||||
<a-form-item
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
label="公告名称">
|
||||
<a-input placeholder="请输入公告名称" v-decorator="['noticeName', validatorRules.noticeName]" :maxLength="50"/>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
label="公告内容">
|
||||
<a-textarea placeholder="请输入发送内容" v-decorator="['noticeContent', validatorRules.noticeContent]"
|
||||
:autoSize="{minRows: 3, maxRows: 6}" :maxLength="200"/>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
label="附件">
|
||||
<j-upload :returnId="true" v-decorator="['noticeFile', validatorRules.noticeFile]"/>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
label="使用状态">
|
||||
<a-switch checkedChildren="禁用" unCheckedChildren="启用" v-model="model.noticeStatus"/>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-spin>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import pick from 'lodash.pick'
|
||||
import { httpAction } from '@/api/manage'
|
||||
import JUpload from '@/components/jero/JUpload'
|
||||
|
||||
export default {
|
||||
name: 'SysNoticeModal',
|
||||
components: {JUpload},
|
||||
data() {
|
||||
return {
|
||||
title: '操作',
|
||||
visible: false,
|
||||
disable: true,
|
||||
model: {noticeStatus: false},
|
||||
labelCol: {
|
||||
xs: {span: 24},
|
||||
sm: {span: 5},
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: {span: 24},
|
||||
sm: {span: 16},
|
||||
},
|
||||
confirmLoading: false,
|
||||
form: this.$form.createForm(this),
|
||||
disableSubmit: false,
|
||||
validatorRules: {
|
||||
noticeName: {rules: [{required: true, message: '请输入公告名称!' }],validateTrigger: 'blur'},
|
||||
noticeContent: {rules: [{required: true, message: '请选择公告内容!'}],validateTrigger: 'blur'},
|
||||
noticeFile:{rules: [{required: false, message: '请上传附件!'}],validateTrigger: 'change'}
|
||||
},
|
||||
url: {
|
||||
add: '/sysNotice/add',
|
||||
edit: '/sysNotice/edit',
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
add() {
|
||||
this.disable = false
|
||||
this.edit({})
|
||||
},
|
||||
edit(record) {
|
||||
this.form.resetFields()
|
||||
this.model = Object.assign({}, record)
|
||||
if (this.model.id) {
|
||||
this.model.noticeStatus = (this.model.noticeStatus === 1 ? true : false)
|
||||
}
|
||||
console.log(this.model)
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.model, 'noticeName', 'noticeContent', 'noticeFile'))
|
||||
})
|
||||
},
|
||||
close() {
|
||||
this.$emit('close')
|
||||
this.visible = false
|
||||
this.disable = true
|
||||
},
|
||||
handleOk() {
|
||||
const that = this
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
that.confirmLoading = true
|
||||
let httpurl = ''
|
||||
let method = 'post'
|
||||
if (!this.model.id) {
|
||||
httpurl += this.url.add
|
||||
} else {
|
||||
httpurl += this.url.edit
|
||||
}
|
||||
console.log(values)
|
||||
let formData = Object.assign(this.model, values)
|
||||
formData.noticeStatus = formData.noticeStatus ? 1 : 0
|
||||
console.log(formData)
|
||||
httpAction(httpurl, formData, method).then((res) => {
|
||||
if (res.success) {
|
||||
that.$message.success(res.message)
|
||||
that.$emit('ok')
|
||||
} else {
|
||||
that.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
that.confirmLoading = false
|
||||
that.close()
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -132,7 +132,7 @@
|
||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||
<a @click="incomePayment(record)" :disabled="Number(record.receivableAmount) === 0"
|
||||
v-has="'packProject:incomePayment'">来款</a>
|
||||
<a @click="cancelPack(record.id)" v-has="'packProject:cancelPack'">取消打包</a>
|
||||
<a @click="cancelPack(record.id)" :disabled="Number(record.receivableAmount) === 0" v-has="'packProject:cancelPack'">取消打包</a>
|
||||
<a @click="invoicing(record)" :disabled="record.needInvoice === 0 || Number(record.receivableAmount) === 0"
|
||||
v-has="'packProject:invoicing'">开票</a>
|
||||
<a v-has="'packProject:confirmPayment'" @click="confirmPayment(record)" :disabled="Number(record.receivableAmount) === 0">确认收入</a>
|
||||
|
||||
@@ -65,6 +65,11 @@
|
||||
/>
|
||||
</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">
|
||||
@@ -103,6 +108,7 @@
|
||||
<a-button type="primary" @click="setDunningReminder" v-has="'workingGroupMember:setDunningReminder'"
|
||||
v-if="canOperate">催款提醒
|
||||
</a-button>
|
||||
<a-button type="primary" @click="setLabel" v-has="'workingGroupMember:setLabel'">设置标签</a-button>
|
||||
</div>
|
||||
<!-- /操作按钮区域-end-->
|
||||
|
||||
@@ -170,6 +176,8 @@
|
||||
@ok="modalFormOk"></working-group-member-set-charge-notice>
|
||||
|
||||
<email-error-msg-modal ref="emailError"></email-error-msg-modal>
|
||||
|
||||
<work-group-set-label ref="workGroupSetLabel" @ok="modalFormOk"></work-group-set-label>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -186,6 +194,7 @@ import Vue from 'vue'
|
||||
import { ACCESS_TOKEN } from '../../store/mutation-types'
|
||||
import PreviewFile from '../../components/jero/PreviewFile'
|
||||
import EmailErrorMsgModal from './modules/EmailErrorMsgModal'
|
||||
import WorkGroupSetLabel from './modules/WorkGroupSetLabel'
|
||||
|
||||
// eslint-disable-next-line no-undef,no-unused-vars
|
||||
const Base64 = require('js-base64').Base64
|
||||
@@ -200,7 +209,8 @@ export default {
|
||||
WorkingGroupMemberUnitModule,
|
||||
WorkingGroupMemberSetChargeNotice,
|
||||
PreviewFile,
|
||||
EmailErrorMsgModal
|
||||
EmailErrorMsgModal,
|
||||
WorkGroupSetLabel
|
||||
},
|
||||
mixins: [JeroListMixin],
|
||||
computed: {
|
||||
@@ -288,13 +298,6 @@ export default {
|
||||
width: 120,
|
||||
dataIndex: 'contactsTemporaryNameOne',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
// 2021-10-22需求变更新加
|
||||
title: '收费通知号',
|
||||
align: 'center',
|
||||
width: 280,
|
||||
dataIndex: 'chargeNoticeNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '待确收金额',
|
||||
align: 'center',
|
||||
@@ -311,33 +314,51 @@ export default {
|
||||
customRender: (text, record) => (
|
||||
<j-ellipsis value={ record.paidAmount + '元' } length={ 15 }></j-ellipsis>
|
||||
)
|
||||
}, {
|
||||
title: '标签名称',
|
||||
align: 'center',
|
||||
dataIndex: 'label',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
// 2021-10-22需求变更新加
|
||||
title: '收费通知号',
|
||||
align: 'center',
|
||||
width: 280,
|
||||
dataIndex: 'chargeNoticeNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}, {
|
||||
title: '打包',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 80,
|
||||
dataIndex: 'pack',
|
||||
scopedSlots: { customRender: 'status-pack' }
|
||||
}, {
|
||||
title: '需要发票',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 80,
|
||||
dataIndex: 'needInvoice',
|
||||
scopedSlots: { customRender: 'status-pack' }
|
||||
}, {
|
||||
title: '到账',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 80,
|
||||
dataIndex: 'inAccount',
|
||||
scopedSlots: { customRender: 'status' }
|
||||
}, {
|
||||
title: '开票',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 80,
|
||||
dataIndex: 'makeInvoice',
|
||||
scopedSlots: { customRender: 'status-bill' }
|
||||
}, {
|
||||
title: '邮寄',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 80,
|
||||
dataIndex: 'mail',
|
||||
scopedSlots: { customRender: 'status-mail' }
|
||||
@@ -517,6 +538,14 @@ export default {
|
||||
let url = `${ window._CONFIG['onlinePreviewDomainURL'] }?url=${ encodeURIComponent(fileFullUrl) }`
|
||||
window.open(url)
|
||||
}
|
||||
},
|
||||
// 设置标签
|
||||
setLabel() {
|
||||
if (this.selectedRowKeys.length <= 0) {
|
||||
this.$message.warning('请选择一条记录!')
|
||||
return
|
||||
}
|
||||
this.$refs.workGroupSetLabel.show(this.selectedRowKeys)
|
||||
}
|
||||
// 2021 10 11 沟通后去掉了这个功能
|
||||
// searchReset() {
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||
import {publishRemind,commitePublishRemind,councilPublishRemind} from '@api/incomePaymentsApi'
|
||||
import EmailErrorMsgModal from '@views/projectManagement/modules/EmailErrorMsgModal'
|
||||
import { judgeEmailStatus } from "../../../api/incomePaymentsApi";
|
||||
|
||||
|
||||
export default {
|
||||
@@ -121,7 +122,7 @@ export default {
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '是否提醒',
|
||||
title: '邮件提醒',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'remind_dictText',
|
||||
@@ -155,7 +156,7 @@ export default {
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '是否提醒',
|
||||
title: '邮件提醒',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'remind_dictText',
|
||||
@@ -189,7 +190,7 @@ export default {
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '是否提醒',
|
||||
title: '邮件提醒',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'remind_dictText',
|
||||
@@ -215,6 +216,10 @@ export default {
|
||||
newColumns: [],
|
||||
// 提醒类型 1 是工作组 2 是分标委 3是理事会
|
||||
remindType:'',
|
||||
// 是否需要发邮件
|
||||
needMail: false,
|
||||
// 发消息需要验证的模板code码
|
||||
mailTemplateCode: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -223,7 +228,8 @@ export default {
|
||||
this.visible = true
|
||||
// 保存选中的会议
|
||||
this.selectedMetingList = [...meetingList]
|
||||
|
||||
// 设置请求的模板CODE 一样的
|
||||
this.mailTemplateCode = 'QY_1_HYTZ_WORK_GROUP_CREATE'
|
||||
// 分标委会议需要分标标委的id
|
||||
if (this.$route.query.meetingType === '5') {
|
||||
// 分标委
|
||||
@@ -243,6 +249,7 @@ export default {
|
||||
this.filters.workingGroupId = this.$route.query.workingGroupProjectId
|
||||
// 工作组
|
||||
this.remindType = 1
|
||||
|
||||
this.newColumns = [...this.columns]
|
||||
}
|
||||
// 发布提醒需要会议id 只有选择一个会议的时候 才会有这个参数
|
||||
@@ -255,6 +262,7 @@ export default {
|
||||
this.newColumns = this.newColumns.filter(item => item.dataIndex !== 'remind_dictText')
|
||||
}
|
||||
this.searchReset()
|
||||
this.judgeEmailStatusFunc()
|
||||
},
|
||||
close() {
|
||||
this.$emit('close')
|
||||
@@ -270,85 +278,89 @@ export default {
|
||||
this.$message.warn('请至少选择一个成员')
|
||||
this.confirmLoading = false
|
||||
return
|
||||
} else {
|
||||
}
|
||||
// 定义请求成功的方法 sendEmailFlag: 0-不发送 1-发送
|
||||
const callbackFunc = (sendEmailFlag) => {
|
||||
// TODO 分标委、理事会是否需要验证 再定
|
||||
const param = {
|
||||
meetingIds: this.selectedMetingList,
|
||||
subitemIds: this.selectedRowKeys,
|
||||
projectType:this.remindType
|
||||
}
|
||||
let requestFun
|
||||
param.sendEmailFlag = sendEmailFlag
|
||||
// 分标委用分标委的接口
|
||||
if(this.$route.query.meetingType === '5' ){
|
||||
commitePublishRemind(param).then(res => {
|
||||
if (res.success) {
|
||||
// this.$message.success(res.message)
|
||||
if (Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
this.$refs.emailError.open()
|
||||
this.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
}
|
||||
this.$emit('ok')
|
||||
this.confirmLoading = false
|
||||
this.handleCancel()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
requestFun = commitePublishRemind
|
||||
}else if(this.$route.query.meetingType === '6'){
|
||||
// 理事会的用理事会的发布提醒
|
||||
councilPublishRemind(param).then(res => {
|
||||
if (res.success) {
|
||||
// this.$message.success(res.message)
|
||||
if (Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
this.$refs.emailError.open()
|
||||
this.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
}
|
||||
this.$emit('ok')
|
||||
this.confirmLoading = false
|
||||
this.handleCancel()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
requestFun = councilPublishRemind
|
||||
} else {
|
||||
// 工作组
|
||||
param.workingGroupId = this.$route.query.workingGroupProjectId
|
||||
publishRemind(param).then(res => {
|
||||
if (res.success) {
|
||||
// this.$message.success(res.result)
|
||||
if (Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
this.$refs.emailError.open()
|
||||
this.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
}
|
||||
this.$emit('ok')
|
||||
this.confirmLoading = false
|
||||
this.handleCancel()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
requestFun = publishRemind
|
||||
}
|
||||
|
||||
requestFun(param).then(res => {
|
||||
if (res.success) {
|
||||
if (sendEmailFlag && Array.isArray(res.result) && res.result.length > 0) {
|
||||
this.$refs.emailError.open()
|
||||
this.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
} else {
|
||||
this.$message.success(res.message)
|
||||
}
|
||||
this.$emit('ok')
|
||||
this.confirmLoading = false
|
||||
this.handleCancel()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
}
|
||||
|
||||
if(this.needMail) {
|
||||
this.$confirm({
|
||||
title: '消息确认',
|
||||
content: '确认要向选择的成员发送邮件吗?',
|
||||
cancelText: '不发送',
|
||||
okText: '确认发送',
|
||||
onOk: function () {
|
||||
callbackFunc(1)
|
||||
},
|
||||
onCancel: function() {
|
||||
callbackFunc(0)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
// 若全局没有配置则不发送邮件信息
|
||||
callbackFunc(0)
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
},
|
||||
// 判断全局设置的是否需要发邮件
|
||||
judgeEmailStatusFunc() {
|
||||
this.needMail = false
|
||||
if(!this.mailTemplateCode) return
|
||||
// 工作组的会议通知模板 --QY_1_HYTZ_WORK_GROUP_CREATE
|
||||
const params = {
|
||||
code: this.mailTemplateCode
|
||||
}
|
||||
judgeEmailStatus(params).then(res => {
|
||||
if(res.success) {
|
||||
// 发送邮件的类型 1-短信 2-邮件 3-系统 数据字典codem sgType
|
||||
this.needMail = (res.result || {}).templateType.indexOf(2) > -1
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -11,6 +11,28 @@
|
||||
<a-spin :spinning="confirmLoading">
|
||||
|
||||
<template v-if="dataSourceInit.length > 0">
|
||||
<!--查询条件 单个文件分发的时候才存在-->
|
||||
<div class="table-page-search-wrapper" v-if="!isBatch">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row>
|
||||
<a-col :xl="8" :lg="8" :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="4" :lg="8" :md="8" :sm="24" >
|
||||
<span class="table-page-search-submitButtons">
|
||||
<a-button type="primary" icon="search" @click="searchQuery">查询</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" @click="checkAll()">全选</a-button>
|
||||
@@ -47,9 +69,112 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { distribute, batchDistribute, distributeMemberList } from '../../../api/incomePaymentsApi'
|
||||
import { distribute, batchDistribute, distributeMemberList, judgeEmailStatus } from '../../../api/incomePaymentsApi'
|
||||
import EmailErrorMsgModal from '@views/projectManagement/modules/EmailErrorMsgModal.vue'
|
||||
|
||||
// 工作组发布提醒 表头
|
||||
const columns = [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '联系人',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'name',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '成员单位',
|
||||
align: 'center',
|
||||
dataIndex: 'companyName',
|
||||
width: 280,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '邮件通知',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'remind_dictText',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
}
|
||||
]
|
||||
// 分标委发布提醒 表头
|
||||
const commitColumns = [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '联系人',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'name',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '成员单位',
|
||||
align: 'center',
|
||||
dataIndex: 'companyName',
|
||||
width: 280,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '邮件通知',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'remind_dictText',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
}
|
||||
]
|
||||
// 理事会成员的表头
|
||||
const councilColumns = [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '联系人',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'name',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '成员单位',
|
||||
align: 'center',
|
||||
dataIndex: 'companyName',
|
||||
width: 280,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '邮件通知',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'remind_dictText',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'WorkGroupDistributeModule',
|
||||
components: { EmailErrorMsgModal },
|
||||
@@ -96,24 +221,10 @@ export default {
|
||||
title: '分发',
|
||||
width: 1000,
|
||||
confirmLoading: false,
|
||||
columns: [
|
||||
{
|
||||
title: '联系人',
|
||||
align: 'center',
|
||||
dataIndex: 'name',
|
||||
width: 280,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '成员单位',
|
||||
align: 'center',
|
||||
dataIndex: 'companyName',
|
||||
width: 280,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}
|
||||
],
|
||||
columns: [],
|
||||
dataSource: [], // 表格中显示的数据
|
||||
dataSourceInit: [], // 所有分发单位的数据
|
||||
dataSourceInitShow: [], // 拥有过滤条件后显示的所有数据
|
||||
/* 分页参数 */
|
||||
ipagination: {
|
||||
current: 1,
|
||||
@@ -127,7 +238,19 @@ export default {
|
||||
total: 0
|
||||
},
|
||||
/* table选中keys*/
|
||||
selectedRowKeys: []
|
||||
selectedRowKeys: [],
|
||||
// 查询条件
|
||||
queryParam: {},
|
||||
lastQueryParam: {},
|
||||
labelCol: {
|
||||
xs: {span: 24},
|
||||
sm: {span: 6}
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: {span: 24},
|
||||
sm: {span: 18}
|
||||
},
|
||||
needMail: false // 消息模板中是否设置了可以发邮件 重要
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -140,9 +263,14 @@ export default {
|
||||
projectId: this.projectId,
|
||||
projectType: this.projectType
|
||||
}
|
||||
// 非批量上传的时候传当前选中的文件id
|
||||
if(!this.isBatch) {
|
||||
param.fileId = this.recordId
|
||||
}
|
||||
distributeMemberList(param).then(res => {
|
||||
if (res.success) {
|
||||
this.dataSourceInit = res.result || []
|
||||
this.dataSourceInitShow = res.result || []
|
||||
this.loadData(1)
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
@@ -158,11 +286,27 @@ export default {
|
||||
* 初始化数据
|
||||
*/
|
||||
initData() {
|
||||
console.log("-----------------")
|
||||
this.checkedKeys = []
|
||||
this.selectedRowKeys = []
|
||||
this.ipagination.current = 1
|
||||
this.ipagination.pageSize = 10
|
||||
// 通过不同的项目类型 展示不同的columns 目前里面的信息是一致的
|
||||
// 项目类型:1--工作组;2--分标委;3--理事会
|
||||
if(this.projectType === 1) {
|
||||
this.columns = [...columns]
|
||||
} else if(this.projectType === 2) {
|
||||
this.columns = [...commitColumns]
|
||||
} else {
|
||||
this.columns = [...councilColumns]
|
||||
}
|
||||
// 选择多个资料的时候不需要提醒字段 这样写是因为无法精准定位每一个人对应的每一个资料 这个人是否被提醒
|
||||
if (this.isBatch) {
|
||||
// 去掉列表的提醒字段
|
||||
this.columns = this.columns.filter(item => item.dataIndex !== 'remind_dictText')
|
||||
}
|
||||
this.getMemberList()
|
||||
this.judgeEmailStatusFunc()
|
||||
|
||||
},
|
||||
handleTableChange(pagination) {
|
||||
@@ -185,13 +329,27 @@ export default {
|
||||
//加载数据 若传入参数1则加载第一页的内容
|
||||
if (arg === 1) {
|
||||
this.ipagination.current = 1
|
||||
if(this.lastQueryParam.remind === undefined) {
|
||||
this.dataSourceInitShow = this.dataSourceInit
|
||||
} else {
|
||||
this.dataSourceInitShow = this.dataSourceInit.filter(tt => tt.remind + '' === this.lastQueryParam.remind + '')
|
||||
}
|
||||
}
|
||||
var params = this.getQueryParams()//查询条件
|
||||
this.ipagination.total = this.dataSourceInit.length
|
||||
this.dataSource = this.dataSourceInit.slice((params.pageNo - 1) * params.pageSize, (params.pageNo * params.pageSize))
|
||||
this.ipagination.total = this.dataSourceInitShow.length
|
||||
this.dataSource = this.dataSourceInitShow.slice((params.pageNo - 1) * params.pageSize, (params.pageNo * params.pageSize))
|
||||
},
|
||||
searchQuery() {
|
||||
this.lastQueryParam = {...this.queryParam}
|
||||
this.loadData(1)
|
||||
},
|
||||
searchReset() {
|
||||
this.lastQueryParam = {}
|
||||
this.queryParam = {}
|
||||
this.loadData(1)
|
||||
},
|
||||
checkAll() {
|
||||
this.selectedRowKeys = this.dataSourceInit.map(tt => tt.id)
|
||||
this.selectedRowKeys = this.dataSourceInitShow.map(tt => tt.id)
|
||||
},
|
||||
close() {
|
||||
this.$emit('update:visible', false)
|
||||
@@ -212,68 +370,106 @@ export default {
|
||||
this.confirmLoading = false
|
||||
return
|
||||
}
|
||||
|
||||
if (this.isBatch) {
|
||||
let str = this.selectedRowKeys.join(',')
|
||||
// 批量分发
|
||||
const formData = {
|
||||
contactsIds: str,
|
||||
dataIds: this.recordId,
|
||||
projectId: this.projectId,
|
||||
projectType: this.projectType
|
||||
// 定义请求成功的方法 sendEmailFlag: 0-不发送 1-发送
|
||||
const callbackFunc = (sendEmailFlag) => {
|
||||
if (this.isBatch) {
|
||||
let str = this.selectedRowKeys.join(',')
|
||||
// 批量分发
|
||||
const formData = {
|
||||
contactsIds: str,
|
||||
dataIds: this.recordId,
|
||||
projectId: this.projectId,
|
||||
projectType: this.projectType,
|
||||
sendEmailFlag
|
||||
}
|
||||
batchDistribute(formData).then(res => {
|
||||
if (res.success) {
|
||||
// 发送邮件的时候才提醒 是否有邮件发送失败 有就给出提示信息
|
||||
if (sendEmailFlag && Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
this.$refs.emailError.open()
|
||||
this.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
} else {
|
||||
this.$message.success(res.message)
|
||||
}
|
||||
this.close()
|
||||
this.$emit('ok')
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
} else {
|
||||
// 单个分发
|
||||
const formData = {
|
||||
contactsIds: this.selectedRowKeys.join(','),
|
||||
dataId: this.recordId,
|
||||
projectId: this.projectId,
|
||||
projectType: this.projectType,
|
||||
sendEmailFlag
|
||||
}
|
||||
distribute(formData).then(res => {
|
||||
if (res.success) {
|
||||
if (sendEmailFlag && Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
this.$refs.emailError.open()
|
||||
this.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
} else {
|
||||
this.$message.success(res.message)
|
||||
}
|
||||
this.close()
|
||||
this.$emit('ok')
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
}
|
||||
batchDistribute(formData).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
// 是否有邮件发送失败 有就给出提示信息
|
||||
if (Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
this.$refs.emailError.open()
|
||||
this.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
}
|
||||
this.close()
|
||||
this.$emit('ok')
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
if(this.needMail) {
|
||||
this.$confirm({
|
||||
title: '消息确认',
|
||||
content: '确认要向选择的成员发送邮件吗?',
|
||||
cancelText: '不发送',
|
||||
okText: '确认发送',
|
||||
onOk: function () {
|
||||
callbackFunc(1)
|
||||
},
|
||||
onCancel: function() {
|
||||
callbackFunc(0)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
} else {
|
||||
// 单个分发
|
||||
const formData = {
|
||||
contactsIds: this.selectedRowKeys.join(','),
|
||||
dataId: this.recordId,
|
||||
projectId: this.projectId,
|
||||
projectType: this.projectType
|
||||
}
|
||||
distribute(formData).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
if (Array.isArray(res.result) && res.result.length > 0) {
|
||||
// msgWarn(this,res.result,0)
|
||||
this.$refs.emailError.open()
|
||||
this.$refs.emailError.msgList = res.result
|
||||
console.log(this.$refs.emailError.msgList, 'this.$refs.emailError.msgList ')
|
||||
}
|
||||
this.close()
|
||||
this.$emit('ok')
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
// 若全局没有配置则不发送邮件信息
|
||||
callbackFunc(0)
|
||||
}
|
||||
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
},
|
||||
// 判断全局设置的是否需要发邮件
|
||||
judgeEmailStatusFunc() {
|
||||
this.needMail = false
|
||||
// 非工作组项目的情况 不进行请求
|
||||
// if(this.projectType !== 1) return
|
||||
const params = {
|
||||
code: 'QY_12_WJTZ_WORK_GROUP_SEND'
|
||||
}
|
||||
judgeEmailStatus(params).then(res => {
|
||||
if(res.success) {
|
||||
// 发送邮件的类型 1-短信 2-邮件 3-系统 数据字典codem sgType
|
||||
this.needMail = (res.result || {}).templateType.indexOf(2) > -1
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
<!--工作组 设置标签-->
|
||||
<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="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入标签名称"
|
||||
v-decorator="['label',validatorRules.label]"
|
||||
:maxLength='50'
|
||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</a-spin>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { httpAction } from '@api/manage'
|
||||
|
||||
export default {
|
||||
name: 'WorkGroupSetLabel',
|
||||
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 }
|
||||
},
|
||||
validatorRules: {
|
||||
label: {
|
||||
rules: [{ required: true, message: '请输入标签名称' }],
|
||||
validateTrigger: 'blur'
|
||||
}
|
||||
},
|
||||
url: {
|
||||
setLabel: '/project/payWorkingGroupSubitem/setLabel'
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
show(ids) {
|
||||
this.form.resetFields()
|
||||
this.selectedIds = ids
|
||||
this.visible = true
|
||||
},
|
||||
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 = this.url.setLabel
|
||||
let method = 'post'
|
||||
const formData = Object.assign(this.model, values)
|
||||
formData.subIds = that.selectedIds.join(',')
|
||||
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()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -62,8 +62,10 @@
|
||||
<!-- <a @click="handleDelete(record.id)" v-has="'sys:dict:del'">删除</a>-->
|
||||
</span>
|
||||
<template slot="text" slot-scope="text">
|
||||
<span v-if="!text"></span>
|
||||
<j-ellipsis :value="text" :length="10"></j-ellipsis>
|
||||
<a-tooltip>
|
||||
<template slot="title">{{ text }}</template>
|
||||
<div class="table-text">{{ text }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-table>
|
||||
|
||||
@@ -108,7 +110,7 @@ export default {
|
||||
title: '序号',
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 120,
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
@@ -117,18 +119,21 @@ export default {
|
||||
{
|
||||
title: '字典名称',
|
||||
align: 'left',
|
||||
width: 120,
|
||||
dataIndex: 'dictName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '字典编号',
|
||||
align: 'left',
|
||||
width: 120,
|
||||
dataIndex: 'dictCode',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '描述',
|
||||
align: 'left',
|
||||
width: 300,
|
||||
dataIndex: 'description',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
@@ -136,6 +141,7 @@ export default {
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
scopedSlots: { customRender: 'action' }
|
||||
}
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user