Merge remote-tracking branch 'origin/branch20241月中旬'

This commit is contained in:
fengchenchen
2024-01-17 17:40:53 +08:00
31 changed files with 3061 additions and 23 deletions
+7 -1
View File
@@ -13,7 +13,7 @@ window._CONFIG["casPrefixUrl"] = "http://cas.example.org:8443/cas";
window._CONFIG["onlinePreviewDomainURL"] = "http://10.0.1.9:9012/onlinePreview";
// 会议管理报名二维码地址 小程序生成二维码用的
window._CONFIG["singUpQRCodeURL"] = "http://10.0.1.9:21824/signupentrance"
window._CONFIG["singUpQRCodeURL"] = "http://bxxt.hzwlsoft.com/signupentrance"
// 会议管理签到二维码地址 微信扫描二维码 跳转的 地址 要么全大写 要么全小写
window._CONFIG["singInQRCodeURL"] = "http://10.10.10.46:8055/signinurl"
@@ -21,6 +21,12 @@ window._CONFIG["singInQRCodeURL"] = "http://10.10.10.46:8055/signinurl"
// 页面显示用的会议报名二维码连接 // 报名页面迁移到企业端 地址需要修改为企业端的地址
window._CONFIG["singInQRCodHref"]= 'http://localhost:3001/signupentrance'
// 起草组报名页面-报名二维码网址 -生成小程序二维码使用
window._CONFIG['singUpDraftTeamQRCodeURL'] = 'https://bxxt.hzwlsoft.com/signupdraftteamentrance'
// 起草组成员维护-企业端报名入口
window._CONFIG["singInDraftHref"]= 'http://localhost:3001/signupdraftteamentrance'
// 票据打印--寄件人单位名称
window._CONFIG["sendCompanyName"] = "中国汽车标准化研究院"
// 票据打印--寄件人地址
@@ -22,6 +22,12 @@ window._CONFIG["singInQRCodeURL"] = "http://10.10.10.46:8066/signinurl"
// window._CONFIG["singInQRCodHref"]= 'http://139.9.235.66/signupentrance'
window._CONFIG["singInQRCodHref"]= 'http://10.10.10.46:8066/signupentrance'
// 起草组报名页面-报名二维码网址 -生成小程序二维码使用
window._CONFIG['singUpDraftTeamQRCodeURL'] = 'https://bxxt.hzwlsoft.com/signupdraftteamentrance'
// 起草组成员维护-企业端报名入口
window._CONFIG["singInDraftHref"]= 'http://10.10.10.46:8066/signupdraftteamentrance'
// 票据打印--寄件人单位名称
window._CONFIG["sendCompanyName"] = "中国汽车标准化研究院"
// 票据打印--寄件人地址
+6
View File
@@ -18,6 +18,12 @@ window._CONFIG["singInQRCodeURL"] = "https://cwp.catarc.org.cn/signinurl"
// 页面显示用的会议报名二维码连接
window._CONFIG["singInQRCodHref"]= 'http://cwp.catarc.org.cn/signupentrance'
// 起草组报名页面-报名二维码网址 -生成小程序二维码使用
window._CONFIG['singUpDraftTeamQRCodeURL'] = 'https://cwp.catarc.org.cn/signupdraftteamentrance'
// 起草组成员维护-企业端报名入口
window._CONFIG["singInDraftHref"]= 'http://cwp.catarc.org.cn/signupdraftteamentrance'
// 票据打印--寄件人单位名称
window._CONFIG["sendCompanyName"] = "中国汽车标准化研究院"
// 票据打印--寄件人地址
+15 -1
View File
@@ -136,6 +136,15 @@ const revokeConfirm = (params) => postAction(`/payConfirmPaymentRecord/backIncom
// 判断当前节点 是否可以发邮件
const judgeEmailStatus = (param) => getAction('/sys/message/sysMessageTemplate/queryByCode', param)
// 2024-01-08 起草组相关功能接口
// 起草组管理-复制
const copyDraftingGroup = (param) => postAction('/drafting/payDraftingGroup/copy', param)
// 起草组管理-工作组下拉
const getWorkingGroupList = (param) => getAction('/drafting/payDraftingGroup/queryAllWorkingGroupsIdAndName', param)
// 通过id获取起草组详情
const getDraftingGroupById = (params) => getAction('/drafting/payDraftingGroup/queryById', params)
// 起草组会议的发布提醒
const draftGroupPublishRemind = (param) => postAction('/meeting/draftGroupMeeting/publishReminder', param)
export {
getWorkingGroupById,
getChargeNotice,
@@ -206,5 +215,10 @@ export {
revokeConfirm,
judgeEmailStatus
judgeEmailStatus,
copyDraftingGroup,
getWorkingGroupList,
getDraftingGroupById,
draftGroupPublishRemind,
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

+3 -3
View File
@@ -5,19 +5,19 @@
<div class="progress" v-if="(data.allPayment + data.partPayment + data.notPayment) !== 0">
<!-- 将全部付款和部分付款放入一个div中-->
<div class="full-and-partial"
:style="{width: (data.allPayment + data.partPayment)/(data.allPayment + data.partPayment + data.notPayment) * 100 + '%'}">
:style="{width: (data.allPayment + data.partPayment)/(data.allPayment + data.partPayment + data.notPayment) * 100 + '%', minWidth: 'fit-content'}">
<!-- 全部付款-->
<div :style="{width: data.allPayment/(data.allPayment + data.partPayment) * 100 + '%'}"
class="progress-item pay-in-full" v-if="data.allPayment !== 0">
{{ data.allPayment }}
</div>
<!-- 部分付款-->
<div :style="{width: data.partPayment/(data.allPayment + data.partPayment) * 100 + '%'}"
<div :style="{width: data.partPayment/(data.allPayment + data.partPayment) * 100 + '%', minWidth: 'fit-content'}"
class="progress-item partial-payment" v-if="data.partPayment !== 0">
{{ data.partPayment }}
</div>
</div>
<div :style="{width: data.notPayment/(data.allPayment + data.partPayment + data.notPayment) * 100 + '%'}"
<div :style="{width: data.notPayment/(data.allPayment + data.partPayment + data.notPayment) * 100 + '%', minWidth: 'fit-content'}"
class="progress-item non-payment" v-if="data.notPayment !== 0">
{{ data.notPayment }}
</div>
+4 -4
View File
@@ -182,8 +182,8 @@
<!-- 企业联系人信息start-->
<section>
<h3 class="title">企业联系人信息</h3>
<!-- 项目类型不是工作组正常显示一个企业联系人的信息-->
<template v-if="basicInfo.projectType !== 2">
<!-- 项目类型不是工作组或起草组正常显示一个企业联系人的信息-->
<template v-if="![2, 7].includes(basicInfo.projectType)">
<a-row :gutter="24">
<a-col :span="12">
<label>企业联系人</label>
@@ -221,8 +221,8 @@
</a-col>
</a-row>
</template>
<!-- 工作组项目使用循环显示出联系人信息-->
<template v-if="basicInfo.projectType === 2 && basicInfo.payWorkingGroupSubItemContactsList && basicInfo.payWorkingGroupSubItemContactsList.length > 0">
<!-- 工作组项目或起草组项目使用循环显示出联系人信息-->
<template v-if="[2, 7].includes(basicInfo.projectType) && basicInfo.payWorkingGroupSubItemContactsList && basicInfo.payWorkingGroupSubItemContactsList.length > 0">
<div v-for="(item, index) in basicInfo.payWorkingGroupSubItemContactsList" :key="index + ''">
<a-row :gutter="24">
<a-col :span="12" class="detail-item">
+2 -1
View File
@@ -77,6 +77,7 @@ export default {
this.$refs.businessSelect.visible = true
if (!this.isMultiple) {
this.$refs.businessSelect.selectedRowKeys[0] = this.value.id
this.$refs.businessSelect.selectedCompany = this.value
} else {
// 很重要 内部的删除像没有作用一样
if(this.value.id) {
@@ -93,7 +94,7 @@ export default {
* @param value
*/
handleOk(value) {
console.log('--------value---------', 'value')
console.log('--------value---------', value)
let company = {id: undefined, companyName: undefined}
// 多选的时候 全部放在一起,以逗号分隔
if (this.isMultiple) {
+6
View File
@@ -172,5 +172,11 @@
}
}
}
// icon图片默认是选中的图片,如果没被选中,就设置灰掉
.ant-menu-item:not(.ant-menu-item-selected) {
.icon-img {
filter: grayscale(100%);
}
}
</style>
<!-- update_end author:sunjianlei date:20190530 for: 选中首页的时候不显示背景颜色 -->
+6
View File
@@ -146,6 +146,12 @@ export default {
)
},
renderIcon (icon) {
// 图片做菜单iconcus_img_xxx.png, xxx.png放在assets/imgs/icon/
if (icon !== 'none' && icon !== undefined && icon.indexOf('cus_img_') !== -1) {
const img = require('@/assets/imgs/icon/' + icon.substr(8) + '_act.png')
return (<img style="width:16px;height:16px;user-select:none;margin-right:8px;vertical-align:sub;"
src={img} alt="" class="icon-img"/>)
}
if (icon !== 'none' && icon !== undefined && icon.indexOf('cus_') !== -1) {
let className = `anticon-jeecg anticon${icon.substr(4)}`
return <i class={className} style='margin-right: 8px'></i>
@@ -0,0 +1,395 @@
<template>
<div>
<page-header-title :is-level-one="false" :level-two-title="draftingGroupProject"></page-header-title>
<a-card :bordered="false">
<!-- 查询区域-->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="会议名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="10" :lg="12" :md="12" :sm="24">
<a-form-item label="会议时间">
<j-date
placeholder="请选择开始日期"
class="query-group-cust"
v-model="queryParam.meetingStartTime"
:disabled-date="disabledStartDate">
</j-date>
<span class="query-group-split-cust"></span>
<j-date
placeholder="请选择结束日期"
class="query-group-cust"
v-model="queryParam.meetingEndTime"
:disabled-date="disabledEndDate">
</j-date>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-year-date style="width:100%" placeholder="请选择年份"
v-model="queryParam.particularYear"></j-year-date>
</a-form-item>
</a-col>
<a-col :xl="10" :lg="12" :md="12" :sm="24">
<a-form-item label="创建时间">
<j-date
placeholder="请选择开始日期"
class="query-group-cust"
v-model="queryParam.createTime_begin"
:disabled-date="disabledStartCreateDate">
</j-date>
<span class="query-group-split-cust"></span>
<j-date
placeholder="请选择结束日期"
class="query-group-cust"
v-model="queryParam.createTime_end"
:disabled-date="disabledEndCreateDate">
</j-date>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="已提醒" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag style="width: 100%"
dict-code="yn"
v-model="queryParam.remind"
placeholder="请选择提醒类型"></j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" icon="search" @click="searchQuery"
v-has="'draftGroupMeeting:search'">查询</a-button>
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- /查询区域-->
<!-- 操作按钮区域-->
<div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'draftGroupMeeting:add'" v-if="canOperate">新增
</a-button>
<a-button type="primary" icon="export" @click="handleExportXls('工作组会议')"
v-has="'draftGroupMeeting:export'">导出
</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'draftGroupMeeting:batchDel'" v-if="canOperate">
批量删除
</a-button>
<a-button type="primary" @click="publishRemind" v-has="'draftGroupMeeting:publish'" v-if="canOperate">发布
</a-button>
</div>
<!-- /操作按钮区域-end-->
<!-- table表格区域-->
<div>
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:scroll="{x:true}"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange"
class="j-table-force-nowrap">
<!-- 会议名称 点击去参会情况-->
<template slot="htmlSlot" slot-scope="text, record">
<j-ellipsis v-if="!!text" class="primary-color" :value="text" :length="20"
@click="toAttendance(record)"></j-ellipsis>
</template>
<template slot="text" slot-scope="text">
<j-ellipsis :value="text" :length="20"></j-ellipsis>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record" v-if="canOperate">
<a @click="uploadFile(record,'1')" v-has="'draftGroupMeeting:uploadCouncil'">会议纪要</a>
<a @click="uploadFile(record,'2')" v-has="'draftGroupMeeting:upload'">上传文件</a>
<!-- <a @click="applyMsg">报名信息</a>-->
<a @click="handleEdit(record)" v-has="'draftGroupMeeting:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'draftGroupMeeting:delete'">删除</a>
</span>
</a-table>
</div>
<publish-remind-modal ref="publishRemindModal" @ok="modalFormOk"></publish-remind-modal>
<upload-meet-file-modal ref="modalForm" @ok="modalFormOk"></upload-meet-file-modal>
</a-card>
</div>
</template>
<script>
import { JeroListMixin } from '@/mixins/JeroListMixin'
import { RangeDateMixin } from '@/mixins/RangeDateMixin'
import JYearDate from '@comp/jero/JYearDate'
import JDate from '@comp/tools/JDate'
import moment from 'moment'
import JDictSelectTag from '@comp/dict/JDictSelectTag'
import PublishRemindModal from '@views/projectManagement/modules/PublishRemindModal'
import UploadMeetFileModal from '@views/incomePayments/meetManage/modules/UploadMeetFileModal'
import '@/assets/less/TableExpand.less'
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
export default {
name: 'ConferenceMaintenance',
components: {
JYearDate,
JDate,
JDictSelectTag,
PublishRemindModal,
UploadMeetFileModal,
PageHeaderTitle
},
mixins: [JeroListMixin, RangeDateMixin],
data() {
return {
draftingGroupProject: '',
draftingGroupProjectId: '',
disableMixinCreated: true,
list: [],
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 10 }
},
dateKeyObj: {
beginKey: 'meetingStartTime',
endKey: 'meetingEndtTime'
},
columns: [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function (t, r, index) {
return parseInt(index) + 1
}
},
{
title: '会议名称',
align: 'center',
dataIndex: 'meetingName',
scopedSlots: { customRender: 'htmlSlot' },
width: 160
},
{
title: '会议类型',
align: 'center',
dataIndex: 'meetingType_dictText',
width: 100,
scopedSlots: { customRender: 'text' }
},
{
title: '负责人',
align: 'center',
dataIndex: 'directorName',
width: 160,
scopedSlots: { customRender: 'text' }
},
{
title: '召开时间',
align: 'center',
dataIndex: 'startTime',
width: 200,
customRender: (text, record) => (
<j-ellipsis value={ record.startTime + '~' + record.endTime } length={ 20 }></j-ellipsis>)
},
{
title: '召开地点',
align: 'center',
dataIndex: 'venue',
width: 200,
customRender: (text, record) => (
<j-ellipsis value={ text + '/' + record.address } length={ 20 }></j-ellipsis>)
},
{
title: '年份',
align: 'center',
dataIndex: 'particularYear',
width: 120,
scopedSlots: { customRender: 'text' }
},
{
title: '已提醒',
align: 'center',
dataIndex: 'remind_dictText',
width: 100,
scopedSlots: { customRender: 'text' }
},
{
title: '创建时间',
align: 'center',
dataIndex: 'createTime',
scopedSlots: { customRender: 'text' }
},
{
title: '操作',
align: 'center',
fixed: 'right',
width: 160,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: '/meeting/draftGroupMeeting/page',
delete: '/meeting/draftGroupMeeting/delete',
deleteBatch: '/meeting/draftGroupMeeting/deleteBatch',
exportXlsUrl: '/meeting/draftGroupMeeting/exportXls'
},
canOperate: true // 是否可操作(负责人B不可操作)
}
},
created() {
this.draftingGroupProject = this.$route.query.draftingGroupProject
this.draftingGroupProjectId = this.$route.query.draftingGroupProjectId
this.canOperate = this.$route.query.canOperate === 'true' ? true : false
this.filters.draftingGroupId = this.draftingGroupProjectId
this.loadData(1)
},
methods: {
/**
* 返回工作组项目列表
*/
backWorkingGroupProject() {
this.$router.push({
path: '/draftingGroup/DraftingGroupManagement'
})
},
/*
* 新增
* */
handleAdd() {
// 记录当前的工作组id
let currentId = this.$route.query.draftingGroupProjectId
this.$router.push({
path: '/incomePayments/meetManage/AddOrDetailMeet',
query: {
draftingGroupProjectId: currentId,
meetingType: '7'
}
})
},
/*
* 编辑
* */
handleEdit(record) {
// 记录当前的工作组id
let currentId = this.$route.query.draftingGroupProjectId
this.$router.push({
path: '/incomePayments/meetManage/AddOrDetailMeet',
query: {
draftingGroupProjectId: currentId,
id: record.id
}
})
},
/*
* 发布
* */
publishRemind() {
if (this.selectionRows.length === 0) {
this.$message.warn('请选择一个会议')
return
} else {
// 传入选中的会议id
this.$refs.publishRemindModal.open(this.selectedRowKeys)
this.$refs.publishRemindModal.title = '发布'
}
},
/*
* 上传文件
* */
uploadFile(record,type) {
this.$refs.modalForm.edit(record,type)
},
/*
* 报名信息
* */
applyMsg() {
this.$router.push({
path: '/incomePayments/meetManage/SignUpInfoList'
})
},
/*
* 参会情况
* */
toAttendance(record) {
this.$router.push({
path: '/incomePayments/meetManage/AttendanceDraftGroupMeeting',
query: {
id: record.id,
meetingName: record.meetingName,
meetingType: '7'
}
})
},
/*
* 创建时间开始禁用
* */
disabledStartCreateDate(startValue) {
const endValue = this.queryParam.createTime_end && moment(this.queryParam.createTime_end, this.rangeDateFormat.end)
if (!startValue || !endValue) {
return false
}
return startValue.valueOf() > endValue.valueOf()
},
/*
* 创建时间结束禁用
* */
disabledEndCreateDate(endValue) {
const startValue = this.queryParam.createTime_begin && moment(this.queryParam.createTime_begin, this.rangeDateFormat.begin)
if (!endValue || !startValue) {
return false
}
return startValue.valueOf() > endValue.valueOf()
},
/*
* 修改查询条件
* */
searchQuery() {
this.queryParam.meetingStartTime = this.queryParam.meetingStartTime ? this.queryParam.meetingStartTime + ' ' + '00:00:00' : undefined
this.queryParam.meetingEndTime = this.queryParam.meetingEndTime ? this.queryParam.meetingEndTime + ' ' + '23:59:59' : undefined
this.queryParam.createTime_begin = this.queryParam.createTime_begin ? this.queryParam.createTime_begin + ' ' + '00:00:00' : undefined
this.queryParam.createTime_end = this.queryParam.createTime_end ? this.queryParam.createTime_end + ' ' + '23:59:59' : undefined
this.lastQueryParam = { ...this.queryParam }
this.loadData(1)
}
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
.title {
&-text {
padding-left: 1rem;
font-size: 18px;
line-height: 22px;
}
}
.divider {
height: 1px;
background-color: #cccccc;
margin: 15px -24px;
}
</style>
@@ -0,0 +1,405 @@
<template>
<div>
<page-header-title :img-for-icon="IconDraftingGruop"></page-header-title>
<a-card :bordered="false">
<!-- 查询区域-start -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row>
<a-col :xxl="6" :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="起草组项目" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入起草组项目" v-model="queryParam.draftingGroupProject" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xxl="6" :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="关联工作组" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select
placeholder="请选择关联工作组"
show-search
allowClear
v-model="queryParam.workingGroupId"
:filter-option="filterOption"
>
<a-select-option v-for="item in workingGroupList" :key="item.id" :value="item.id">
{{ item.workingGroupProject }}
</a-select-option>
</a-select>
<!-- <a-input placeholder="请输入关联工作组" v-model="queryParam.workingGroupName" :maxLength='50'></a-input>-->
</a-form-item>
</a-col>
<a-col :xxl="6" :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="负责人A" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-principal placeholder="请选择负责人" v-model="queryParam.principalIdA"></select-principal>
</a-form-item>
</a-col>
<a-col :xxl="6" :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="运行年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-year-date style="width:100%" placeholder="请选择运行年份" v-model="queryParam.year"></j-year-date>
</a-form-item>
</a-col>
<a-col :xxl="6" :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="企业名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xxl="6" :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="企业联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入企业联系人" v-model="queryParam.companyContactName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="4" :lg="7" :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" icon="search" @click="searchQuery"
v-has="'draftingGroup:search'">查询</a-button>
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- /查询区域-end-->
<!-- 操作按钮区域-->
<div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'draftingGroup:add'">新增</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'draftingGroup:batchDel'">批量删除</a-button>
</div>
<!-- /操作按钮区域-end-->
<!-- table表格区域-->
<div>
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:scroll="{x: 1300}"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange"
class="j-table-force-nowrap">
<!-- 起草组名称-->
<template slot="projectName" slot-scope="text, record">
<a-tooltip>
<template slot="title">{{ text }}</template>
<div class="primary-color text-over" @click="goMemberUnitMaintenance(record)">{{ text }}</div>
</a-tooltip>
</template>
<template slot="text" slot-scope="text">
<j-ellipsis :value="text" :length="20"></j-ellipsis>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record">
<a @click="goUnderStudyProject(record)" v-has="'draftingGroup:underStudyProject'"
v-if="record.checkoutOperation === 1">在研项目</a>
<a @click="goFilesMaintenance(record)" v-has="'draftingGroup:fileMaintenance'">其他分发资料</a>
<a @click="goConferenceMaintenance(record)" v-has="'draftingGroup:meetingMaintenance'">起草组会议</a>
<a @click="copyDraftGroup(record.id)" v-has="'draftingGroup:copy'"
v-if="record.checkoutOperation === 1">复制</a>
<a @click="handleEdit(record)" v-has="'draftingGroup:edit'"
v-if="record.checkoutOperation === 1">基本信息维护</a>
<a @click="handleDelete(record.id)" v-has="'draftingGroup:delete'"
v-if="record.checkoutOperation === 1">删除</a>
</span>
</a-table>
</div>
<!-- /table表格区域-->
<drafting-group-module ref="modalForm" @ok="modalFormOk"></drafting-group-module>
</a-card>
</div>
</template>
<script>
import { JeroListMixin } from '@/mixins/JeroListMixin'
import JYearDate from '@comp/jero/JYearDate'
import SelectPrincipal from '@comp/company/SelectPrincipal'
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
import IconDraftingGruop from '@/assets/imgs/icon/icon_drafting_group.png'
import {copyDraftingGroup, getWorkingGroupList} from '../../api/incomePaymentsApi'
import { getAction } from '../../api/manage'
import DraftingGroupModule from './modules/DraftingGroupModule'
export default {
name: 'DraftingGroupManagement',
components: { JYearDate, DraftingGroupModule, SelectPrincipal, PageHeaderTitle },
mixins: [JeroListMixin],
data() {
return {
IconDraftingGruop,
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 10 }
},
url: {
list: '/drafting/payDraftingGroup/list',
delete: '/drafting/payDraftingGroup/delete',
deleteBatch: '/drafting/payDraftingGroup/deleteBatch'
},
columns: [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function (t, r, index) {
return parseInt(index) + 1
}
}, {
title: '起草组项目',
align: 'center',
dataIndex: 'draftingGroupProject',
scopedSlots: { customRender: 'projectName' }
}, {
title: '关联工作组',
align: 'center',
dataIndex: 'workingGroupName',
width: 300
}, {
title: '负责人A',
align: 'center',
width: 130,
dataIndex: 'principalNameA'
}, {
title: '操作',
dataIndex: 'action',
align: 'center',
fixed: 'right',
width: 500,
scopedSlots: { customRender: 'action' }
}
],
queryParam: {
year: new Date().getFullYear().toString()
},
lastQueryParam: {
year: new Date().getFullYear().toString()
},
// 关联工作组下拉
workingGroupList: [],
operateData: [] // 进行操作权限校验时使用的数据
}
},
created () {
this.loadWorkingGroupList()
},
methods: {
// 获取工作组下拉列表
loadWorkingGroupList () {
getWorkingGroupList().then(res => {
if (res.success) {
this.workingGroupList = res.result || []
}
})
},
loadData(arg) {
if (!this.url.list) {
this.$message.error('请设置url.list属性!')
return
}
//加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1
}
var params = this.getQueryParams()//查询条件
this.loading = true
getAction(this.url.list, params).then((res) => {
if (res.success) {
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
//清空列表选中
this.onClearSelected()
} else {
this.ipagination.total = 0
}
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
}
if (res.code === 510) {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
// 判断登录用户是否为负责人B 2021-10-13:修改为后端在列表字段返回checkoutOperation字段控制,1--可操作,2--不可操作
// if (this.dataSource.length > 0) {
// for (let index = 0; index < this.dataSource.length; index++) {
// this.checkWorkingGroupPrincipal(index).then((res) => {
// res.showOperate = true
// this.$set(this.dataSource, index, res)
// })
// }
// }
})
},
/**
* 判断登录用户是否为负责人B
*/
// checkWorkingGroupPrincipal(index) {
// let item = this.dataSource[index]
// // (负责人B不可操作)
// return new Promise(resolve => {
// checkoutWorkingGroupPrincipal({ id: item.id }).then(res => {
// // 不可操作则置否
// if (res.success) {
// item.canOperate = true
// } else {
// item.canOperate = false
// }
// }).finally(() => {
// resolve(item)
// })
// })
// },
/**
* 文件维护
* @param record
*/
goFilesMaintenance(record) {
console.log(record)
this.$router.push({
path: '/projectManagement/WorkingGroupProjectDataMaintenance',
query: {
draftingGroupId: record.id,
canOperate: record.checkoutOperation === 1
}
})
},
/**
* 会议维护
* @param record
*/
goConferenceMaintenance(record) {
this.$router.push({
path: '/draftingGroup/ConferenceMaintenance',
query: {
draftingGroupProject: record.draftingGroupProject,
draftingGroupProjectId: record.id,
canOperate: record.checkoutOperation === 1,
meetingType: '7'
}
})
},
/**
* 复制
* @param id
*/
copyDraftGroup(id) {
copyDraftingGroup({ id: id }).then(res => {
if (res.success) {
this.$message.success(res.message)
} else {
this.$message.warn(res.message)
}
}).finally(() => {
this.loadData()
})
},
/**
* 成员维护
* @param record
*/
goMemberUnitMaintenance(record) {
this.$router.push({
path: '/draftingGroup/DraftingGroupMemberUnitMaintenance',
query: {
draftingGroupProject: record.draftingGroupProject,
draftingGroupProjectId: record.id,
canOperate: record.checkoutOperation === 1
}
})
},
searchReset() {
this.lastQueryParam = {
year: new Date().getFullYear().toString()
}
this.queryParam = {
year: new Date().getFullYear().toString()
}
this.loadData(1)
},
/**
* 在研项目
* @param record
*/
goUnderStudyProject(record) {
this.$router.push({
path: '/draftingGroup/DraftingGroupUnderStudyProject',
query: {
title: record.draftingGroupProject,
id: record.id
}
})
},
/**
* 重写编辑
* @param record
*/
handleEdit(record) {
this.$refs.modalForm.edit(record)
this.$refs.modalForm.title = '基本信息维护'
this.$refs.modalForm.disableSubmit = false
},
// 下拉框的搜索
filterOption(input, option) {
return (
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
)
}
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
.tooltip {
float: right;
width: auto;
display: flex;
justify-content: flex-end;
align-items: flex-end;
height: 40px;
&-item {
margin-right: 10px;
display: flex;
align-items: center;
}
&-color {
width: 13px;
height: 13px;
margin-right: 5px;
border-radius: 2px;
}
&-pay-in-full {
background: linear-gradient(0deg, #069f99 0%, #07b0a9 100%);
}
&-partial-payment {
background: linear-gradient(0deg, #0075a9 0%, #0096d8 100%);
}
&-non-payment {
background: #e8e8e8;
}
}
.text-over {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>
@@ -0,0 +1,562 @@
<template>
<div>
<page-header-title :is-level-one="false" :level-two-title="draftingGroupProject"></page-header-title>
<a-card :bordered="false">
<div class="part-title">
<div class="part-title-text">起草组信息</div>
</div>
<!-- 起草组信息区域-->
<a-spin :spinning="spinning">
<div class="work-group-detail">
<div class="work-group-detail-item work-group-detail-item-small"
v-for="(item, index) in detailTitleList"
:key="index">
<div class="work-group-detail-item-title">{{ item.title }}</div>
<div class="work-group-detail-item-content work-group-detail-item-filename"
v-if="(item.fieldName === 'chargeNoticeAId' || item.fieldName === 'chargeNoticeBId') && draftingGroupDetail[item.fieldName]">
<preview-file :file-id="draftingGroupDetail[item.fieldName]"></preview-file>
</div>
<div class="work-group-detail-item-content" v-else>{{ draftingGroupDetail[item.fieldName] }}</div>
</div>
<div class="work-group-detail-item">
<div class="work-group-detail-item-title">任务及目标</div>
<div class="work-group-detail-item-content">{{ draftingGroupDetail.missionAndObjectives }}</div>
</div>
<div class="work-group-detail-item">
<div class="work-group-detail-item-title">备注</div>
<div class="work-group-detail-item-content">{{ draftingGroupDetail.remarks }}</div>
</div>
</div>
</a-spin>
<!-- /起草组信息区域-->
<a-divider></a-divider>
<!-- 入会信息 -->
<div class="part-title">
<div class="part-title-text">入会信息</div>
</div>
<a-spin :spinning="spinning">
<a-row class="flex-col signUpInfo">
<a-col :xxl="8" :xl="12" :sm="24">
<label>报名链接</label><span>{{ showSignUpHref }}</span>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<label>报名二维码</label><img class="qr-code" :src="signUpQRCode" alt="报名二维码"/><i class="copy primary-color"
@click="copy(showSignUpHref)">复制</i>
</a-col>
</a-row>
</a-spin>
<!-- /入会信息 -->
<a-divider></a-divider>
<!-- 查询区域-->
<div class="part-title">
<div class="part-title-text">成员信息</div>
</div>
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="成员单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入成员单位" v-model="queryParam.chargeCompanyTemporaryName"
:maxLength='50'></a-input>
</a-form-item>
</a-col>
<!--<a-col :xl="6" :lg="7" :md="8" :sm="24">-->
<!-- <a-form-item label="标签名称" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <a-input placeholder="请输入标签名称" v-model="queryParam.label" :maxLength='50'></a-input>-->
<!-- </a-form-item>-->
<!--</a-col>-->
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" icon="search" @click="searchQuery"
v-has="'draftingGroupMember:search'">查询</a-button>
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- /查询区域-->
<!-- 操作按钮区域-->
<div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'draftingGroupMember:add'" v-if="canOperate">
添加成员
</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :data="importParam"
:action="importExcelUrl" @change="handleImportExcel" v-has="'draftingGroupMember:import'"
v-if="canOperate">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<a-button type="primary" icon="export" @click="handleExportXls('起草组成员')" v-has="'draftingGroupMember:export'">
导出
</a-button>
<a-button type="primary" icon="download" @click="downTemplate('起草组成员导入模板')"
v-has="'draftingGroupMember:downTemplate'" v-if="canOperate">下载模板
</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'draftingGroupMember:batchDel'" v-if="canOperate">
批量删除
</a-button>
<!--<a-button type="primary" @click="setLabel" v-has="'workingGroupMember:setLabel'">设置标签</a-button>-->
</div>
<!-- /操作按钮区域-end-->
<!-- table表格区域-->
<div>
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:scroll="{x: 800}"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange"
class="j-table-force-nowrap">
<!-- 起草组名称-->
<template slot="projectName" slot-scope="text, record">
<j-ellipsis :value="text"
:length="18"
class="primary-color"
@click="openDetailModal(record)"></j-ellipsis>
</template>
<!-- 打包需要发票到账开票邮寄状态-->
<template slot="status" slot-scope="text,record">
<status-slot :statu-obj="record" :status-no="text" :status-type="true"></status-slot>
</template>
<!-- 开票-->
<template slot="status-bill" slot-scope="text,record">
<status-slot :statu-obj="record" :status-no="text" :status-type="true" status-key="bill"></status-slot>
</template>
<!-- 邮寄-->
<template slot="status-mail" slot-scope="text,record">
<status-slot :statu-obj="record" :status-no="text" :status-type="true" status-key="mail"></status-slot>
</template>
<template slot="status-pack" slot-scope="text,record">
<status-slot :statu-obj="record" :status-no="text"></status-slot>
</template>
<template slot="text" slot-scope="text">
<a-tooltip>
<template slot="title">{{ text }}</template>
<div class="table-text">{{ text }}</div>
</a-tooltip>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record" v-if="canOperate">
<!-- 1.待审核 2.已通过 3.已驳回 -->
<a @click="handleCheck(record)" v-if="record.checkResult === 1" v-has="'draftingGroupMember:check'">审核</a>
<a @click="handleEdit(record)" v-has="'draftingGroupMember:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'draftingGroupMember:delete'">删除</a>
</span>
</a-table>
</div>
</a-card>
<project-detail-modal ref="projectDetail"></project-detail-modal>
<drafting-group-member-unit-module ref="modalForm" @ok="modalFormOk"></drafting-group-member-unit-module>
<!-- 审核弹框 -->
<drafting-group-member-unit-check-module ref="draftingGroupMemberUnitCheckModule" @ok="modalFormOk"/>
</div>
</template>
<script>
import { JeroListMixin } from '@/mixins/JeroListMixin'
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
import {getDraftingGroupById} from '@api/incomePaymentsApi'
import StatusSlot from '../../components/tools/StatusSlot'
import ProjectDetailModal from '../../components/ProjectDetailModal'
import DraftingGroupMemberUnitModule from './modules/DraftingGroupMemberUnitModule'
import Vue from 'vue'
import { ACCESS_TOKEN } from '../../store/mutation-types'
import PreviewFile from '../../components/jero/PreviewFile'
import {createQcCode} from '@api/incomeMeetingApi'
import DraftingGroupMemberUnitCheckModule from '@views/draftingGroup/modules/DraftingGroupMemberUnitCheckModule'
// eslint-disable-next-line no-undef,no-unused-vars
const Base64 = require('js-base64').Base64
export default {
name: 'DraftingGroupMemberUnitMaintenance',
components: {
DraftingGroupMemberUnitCheckModule,
PageHeaderTitle,
StatusSlot,
ProjectDetailModal,
DraftingGroupMemberUnitModule,
PreviewFile
},
mixins: [JeroListMixin],
computed: {
// 小程序报名链接
signUpHerfUrl() {
return `${ window._CONFIG['singUpDraftTeamQRCodeURL'] }?id=${ this.$route.query.draftingGroupProjectId }`
},
// 企业端报名地址
showSignUpHref(){
return `${ window._CONFIG['singInDraftHref'] }?id=${ this.$route.query.draftingGroupProjectId }`
},
importExcelUrl: function () {
return `${ window._CONFIG['domianURL'] }/${ this.url.importExcelUrl }`
}
},
async mounted() {
// 生成会议报名二维码
this.signUpQRCode = await this.generateQRCode(this.signUpHerfUrl)
},
data() {
return {
signUpQRCode: '',
disableMixinCreated: true,
draftingGroupProject: '',
draftingGroupProjectId: '',
spinning: false,
detailTitleList: [
{
title: '起草组项目名称',
fieldName: 'draftingGroupProject'
},{
title: '关联工作组',
fieldName: 'workingGroupName'
}, {
title: '负责人A',
fieldName: 'principalNameA'
}, {
title: '负责人B',
fieldName: 'principalNameB'
}, {
title: '每年召开次数',
fieldName: 'convokeNum'
}, {
title: '运行周期',
fieldName: 'operationCycle'
}
],
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 10 }
},
url: {
list: '/drafting/payDraftingGroupSubitem/list',
delete: '/drafting/payDraftingGroupSubitem/delete',
deleteBatch: '/drafting/payDraftingGroupSubitem/deleteBatch',
exportXlsUrl: '/drafting/payDraftingGroupSubitem/exportXls',
importExcelUrl: '/drafting/payDraftingGroupSubitem/importExcel',
downTemplateUrl: '/drafting/payDraftingGroupSubitem/downloadExcelModel'
},
columns: [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function (t, r, index) {
return parseInt(index) + 1
}
}, {
title: '成员单位',
align: 'center',
// width: 280,
dataIndex: 'chargeCompanyTemporaryName',
scopedSlots: { customRender: 'projectName' }
}, {
title: '企业联系人',
align: 'center',
// width: 280,
dataIndex: 'contactsTemporaryNameOne',
scopedSlots: { customRender: 'text' }
},
// {
// title: '待确收金额',
// align: 'center',
// dataIndex: 'receivableAmount',
// width: 180,
// customRender: (text, record) => (
// <j-ellipsis value={ record.receivableAmount + '元' } length={ 15 }></j-ellipsis>
// )
// }, {
// title: '实收金额',
// align: 'center',
// dataIndex: 'paidAmount',
// width: 180,
// 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: 100,
// 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' }
// },
{
title: '操作',
dataIndex: 'action',
align: 'center',
fixed: 'right',
width: 180,
scopedSlots: { customRender: 'action' }
}
],
draftingGroupDetail: {},
chargeNoticeList: [], // 收费通知号选项
importParam: {},
// 给定当年作为来款年份默认查询条件
// queryParam: {
// paymentDate: new Date().getFullYear().toString()
// },
// lastQueryParam: {
// paymentDate: new Date().getFullYear().toString()
// },
canOperate: true // 是否可操作(负责人B不可操作)
}
},
created() {
// 初始化起草组信息
this.initWorkGroupData()
},
methods: {
handleCheck (record) {
this.$refs.draftingGroupMemberUnitCheckModule.open(record)
},
/*
* 生成二维码
* */
generateQRCode(params) {
return new Promise(resolve => {
let code = ''
createQcCode({ contact: params }).then(res => {
if (res.success) {
code = res.result
} else {
console.error('生成二维码失败')
}
}).finally(() => {
resolve(code)
})
})
},
/**
* 初始化起草组信息
*/
initWorkGroupData() {
this.spinning = true
this.draftingGroupProject = this.$route.query.draftingGroupProject || ''
this.draftingGroupProjectId = this.$route.query.draftingGroupProjectId || ''
this.canOperate = this.$route.query.canOperate === 'true' ? true : false
this.filters.draftingGroupId = this.draftingGroupProjectId
this.importParam.draftGroupId = this.draftingGroupProjectId
this.loadData()
let param = {
id: this.draftingGroupProjectId
}
getDraftingGroupById(param).then(res => {
if (res.success) {
this.draftingGroupDetail = res.result || {}
}
}).finally(() => {
this.spinning = false
})
},
/*
* 复制地址
* */
copy(data) {
// 存储传递过来的数据
let OrderNumber = data
// 创建一个input 元素
// createElement() 方法通过指定名称创建一个元素
let newInput = document.createElement('input')
// 讲存储的数据赋值给input的value值
newInput.value = OrderNumber
// appendChild() 方法向节点添加最后一个子节点。
document.body.appendChild(newInput)
// 选中input元素中的文本
// select() 方法用于选择该元素中的文本。
newInput.select()
// 执行浏览器复制命令
// execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令
document.execCommand('Copy')
// 清空输入框
newInput.remove()
this.$message.success('复制成功')
},
handleAdd: function () {
this.$refs.modalForm.draftingGroupId = this.draftingGroupProjectId
this.$refs.modalForm.add()
this.$refs.modalForm.title = '添加成员'
this.$refs.modalForm.disableSubmit = false
},
handleEdit: function (record) {
this.$refs.modalForm.draftingGroupId = this.draftingGroupProjectId
this.$refs.modalForm.edit(record)
this.$refs.modalForm.title = '编辑'
this.$refs.modalForm.disableSubmit = false
},
/**
* 文件预览
* @param file
*/
previewFile(file) {
console.log(file)
if (file && file.url) {
const fileFullUrl = `${ window._CONFIG['domianWebSocketURL'] }/sys/common/download/${ file.id }?token=${ Vue.ls.get(ACCESS_TOKEN) }&fullfilename=${ file.fileName }`
// let url = `${ window._CONFIG['onlinePreviewDomainURL'] }?url=${ encodeURIComponent(Base64.encode(fileFullUrl)) }`
let url = `${ window._CONFIG['onlinePreviewDomainURL'] }?url=${ encodeURIComponent(Base64.encode(fileFullUrl)) }`
window.open(url)
}
},
// 2021 10 11 沟通后去掉了这个功能
// searchReset() {
// this.lastQueryParam = {
// paymentDate: new Date().getFullYear().toString()
// }
// this.queryParam = {
// paymentDate: new Date().getFullYear().toString()
// }
// this.loadData(1)
// },
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
.ant-divider-horizontal {
height: 1px;
background-color: #F2F2F2;
margin: 15px 0px;
}
.work-group-detail {
display: flex;
flex-wrap: wrap;
padding-bottom: 20px;
&-item-small {
width: 33.3% !important;
}
&-item {
display: flex;
padding: 5px 5px;
width: 100%;
font-size: 14px;
&-title {
flex-shrink: 0;
color: #999999;
}
&-content {
word-break: break-all;
color: #2F3133;
}
&-filename {
//cursor: pointer;
}
}
}
.table-text {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.flex-col {
.ant-col {
display: flex;
}
label {
flex-shrink: 0;
}
}
.qr-code {
width: 100px;
height: 100px;
}
.copy {
font-style: normal;
cursor: pointer;
}
.signUpInfo {
line-height: 3;
.ant-col {
label {
color: #999;
}
span {
color: black;
}
}
}
</style>
@@ -0,0 +1,177 @@
<template>
<div>
<page-header-title :is-level-one="false" :level-two-title="$route.query.title"></page-header-title>
<a-card :bordered="false">
<!-- 查询区域-start -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="项目名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入项目名称" v-model="queryParam.projectName" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" icon="search" @click="searchQuery" v-has="'draftingGroup:underStudy:search'">查询</a-button>
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-end-->
<!-- 操作按钮区域-->
<div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'draftingGroup:underStudy:add'">新增</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'draftingGroup:batchDel'">批量删除</a-button>
</div>
<!-- 操作按钮区域-end-->
<!-- table表格区域-->
<div>
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:scroll="{x: 1000}"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange"
class="j-table-force-nowrap">
<template slot="text" slot-scope="text">
<j-ellipsis :value="text" :length="18"></j-ellipsis>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record">
<a @click="handleEdit(record)" v-has="'draftingGroup:underStudy:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'draftingGroup:underStudy:delete'">删除</a>
</span>
</a-table>
</div>
</a-card>
<drafting-group-under-study-project-modal ref="modalForm" @ok="modalFormOk"></drafting-group-under-study-project-modal>
</div>
</template>
<script>
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
import { JeroListMixin } from '../../mixins/JeroListMixin'
import DraftingGroupUnderStudyProjectModal from './modules/DraftingGroupUnderStudyProjectModal'
import { getAction } from '../../api/manage'
export default {
name: 'DraftingGroupUnderStudyProject',
components: { PageHeaderTitle, DraftingGroupUnderStudyProjectModal },
mixins: [JeroListMixin],
data() {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 10 }
},
columns: [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function (t, r, index) {
return parseInt(index) + 1
}
}, {
title: '项目名称',
align: 'center',
dataIndex: 'projectName',
scopedSlots: { customRender: 'text' }
}, {
title: '主要起草单位',
align: 'center',
dataIndex: 'draftCompany',
scopedSlots: { customRender: 'text' }
}, {
title: '项目进度',
align: 'center',
dataIndex: 'projectSchedule',
scopedSlots: { customRender: 'text' }
}, {
title: '操作',
align: 'center',
width: 180,
fixed: 'right',
dataIndex: 'bankAccountName',
scopedSlots: { customRender: 'action' }
}
],
url: {
list: '/drafting/payDraftingGroupResearchProject/list',
delete: '/drafting/payDraftingGroupResearchProject/delete',
deleteBatch: '/drafting/payDraftingGroupResearchProject/deleteBatch'
}
}
},
methods: {
loadData(arg) {
if (!this.url.list) {
this.$message.error('请设置url.list属性!')
return
}
//加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1
}
let params = this.getQueryParams()//查询条件
params.draftingGroupId = this.$route.query.id
this.loading = true
getAction(this.url.list, params).then((res) => {
if (res.success) {
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
//清空列表选中
this.onClearSelected()
} else {
this.ipagination.total = 0
}
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
}
if (res.code === 510) {
this.$message.warning(res.message)
}
this.loading = false
}).finally(() => {
this.loading = false
})
},
handleEdit: function (record) {
this.$refs.modalForm.draftingGroupId = this.$route.query.id
this.$refs.modalForm.edit(record)
this.$refs.modalForm.title = '编辑'
this.$refs.modalForm.disableSubmit = false
},
handleAdd: function () {
this.$refs.modalForm.draftingGroupId = this.$route.query.id
this.$refs.modalForm.add()
this.$refs.modalForm.title = '新增'
this.$refs.modalForm.disableSubmit = false
},
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
</style>
@@ -0,0 +1,219 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<a-spin :spinning="confirmLoading">
<section class="check">
<h3>报名信息</h3>
<a-row :gutter="24">
<a-col :span="24">
<label>参会企业</label>
<span>{{ model.chargeCompanyTemporaryName }}</span>
</a-col>
</a-row>
<a-row :gutter="24" v-for="item in model.payDraftingGroupSubItemContactsList" :key="item.id">
<a-col :span="12">
<label>姓名</label>
<span>{{ item.contactsTemporaryName }}</span></a-col>
<a-col :span="12">
<label>备注</label>
<span>{{ item.remarks }}</span></a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<label>备注</label>
<span>{{ model.remarks }}</span>
</a-col>
</a-row>
</section>
<h3>审核</h3>
<a-form :form="form">
<a-row :gutter="24">
<a-col :xl="12" :sm="24">
<a-form-item label="审核" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['checkResult',validatorRules.checkResult]" placeholder="请选择审核结果"
@change="changeCheck">
<a-radio value="2">
通过
</a-radio>
<a-radio value='3'>
驳回
</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<a-col :xl="24" :sm="24" v-if="checkBool">
<a-form-item label="审核说明" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入审核说明"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
v-decorator="['checkRemark',validatorRules.checkRemark]"
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
<a-col :xl="24" :sm="24" v-if="!checkBool">
<a-form-item label="审核说明" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入审核说明"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
v-decorator="['checkRemark']"
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
<template slot="footer">
<a-button @click="handleCancel">关闭</a-button>
<a-button type="primary" @click="handleOk" v-preventclick>确定</a-button>
</template>
</j-modal>
</template>
<script>
import {postAction} from '@api/manage'
export default {
name: 'DraftingGroupMemberUnitCheckModule',
data() {
return {
title: '审核入会信息',
width: 800,
visible: false,
confirmLoading: false,
form: this.$form.createForm(this),
model: {},
labelCol: {
xs: {span: 24},
sm: {span: 6}
},
wrapperCol: {
xs: {span: 24},
sm: {span: 18}
},
remarksLabelCol: {
xs: {span: 24},
sm: {span: 3}
},
remarksWrapperCol: {
xs: {span: 24},
sm: {span: 21}
},
validatorRules: {
checkRemark: {
rules: [{required: true, message: '请输入审核说明'}],
validateTrigger: 'blur'
},
checkResult: {
rules: [{required: true, message: '请选择审核结果'}],
validateTrigger: 'change'
}
},
url: {
// 审核报名信息
check: '/drafting/payDraftingGroupSubitem/checkRegister'
},
// 审核结果选择
checkBool: false
}
},
methods: {
open(record) {
console.log(record)
this.form.resetFields()
this.model = Object.assign({}, record)
this.userList = []
this.visible = true
},
close() {
this.$emit('close')
this.visible = false
this.model = {}
},
handleOk() {
const that = this
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
that.confirmLoading = true
const formData = Object.assign({}, values)
formData.id = this.model.id
postAction(this.url.check, formData).then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
that.confirmLoading = false
that.close()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
that.confirmLoading = false
})
}
})
},
handleCancel() {
this.close()
},
/*
* 选择审核结果
* */
changeCheck(e) {
console.log(e)
// 审核结果选择拒绝 审核说明必填
if (e.target.value === '2') {
this.checkBool = false
} else if (e.target.value === '3') {
this.checkBool = true
}
}
}
}
</script>
<style scoped lang="less">
.check {
.ant-row {
line-height: 3;
.ant-col {
label {
color: #999;
}
span {
color: black;
}
}
}
.label {
color: #999999;
}
.content {
color: black;
}
}
.color-999 {
color: #999;
}
.color-black {
color: black;
}
</style>
@@ -0,0 +1,619 @@
<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 v-if="defaultChargeWay">
<a-col>
<a-form-item label="起草组项目" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-select
placeholder="请选择起草组项目"
show-search
v-decorator="['draftingGroupId',validatorRules.draftingGroupId]"
:maxLength='50'
:filter-option="filterOption"
>
<a-select-option v-for="item in workingGroupList" :key="item.id" :value="item.id">
{{ item.workingGroupProject }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col>
<a-form-item label="成员单位" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<company-select placeholder="请选择成员单位"
v-decorator="['chargeCompany',validatorRules.chargeCompany]"
:disabled="disabledCompany"
@change="companyChange"
:maxLength='50'>
</company-select>
</a-form-item>
</a-col>
</a-row>
<template
v-if="model.payDraftingGroupSubItemContactsList && model.payDraftingGroupSubItemContactsList.length > 0">
<a-row v-for="(item, index) in model.payDraftingGroupSubItemContactsList" :key="index + ''">
<a-col :xl="12" :sm="24">
<a-form-item :label="`企业联系人${index + 1}`" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-contacts :selected-company="selectedCompany"
:placeholder="`请选择企业联系人${index + 1}`"
v-decorator="[`payDraftingGroupSubItemContactsList[${index}].contactsId`, {rules: [{ required: index === 0, validator: index === 0 ? validateContactRequired : validateContact }],validateTrigger: 'change'}]"
:maxLength='50'
:ref="`selectContacts${index}`"
@ok="addContactsOneOk"></select-contacts>
</a-form-item>
</a-col>
<a-col :xl="9" :sm="20">
<!-- v-show="hasContactOne"-->
<a-form-item :label="`备注${index + 1}`" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:placeholder="`请输入备注${index + 1}`"
v-decorator="[`payDraftingGroupSubItemContactsList[${index}].remarks`]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}">
</a-input>
</a-form-item>
</a-col>
<a-col :xl="3" :sm="4">
<a-button type="link" class="contact-btn" @click="handleAddContact(index)">添加</a-button>
<a-button type="link" class="contact-btn del-btn" @click="handleDelContact(index)">删除</a-button>
</a-col>
</a-row>
</template>
<!--<a-row>-->
<!-- <a-col :xl="12" :sm="24">-->
<!-- <a-form-item label="邮寄联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <select-contacts :selected-company="selectedCompany"-->
<!-- :init-contacts="selectedMailContact"-->
<!-- placeholder="请选择邮寄联系人"-->
<!-- v-decorator="['mailContactsId',validatorRules.mailContactsId]"-->
<!-- :maxLength='50'-->
<!-- ref="selectMailContacts">-->
<!-- </select-contacts>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!--</a-row>-->
<a-row>
<a-col>
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入备注"
:auto-size="{ minRows: 3, maxRows: 6 }"
v-decorator="['remarks']"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
</j-modal>
</template>
<script>
import pick from 'lodash.pick'
import { httpAction } from '@api/manage'
import CompanySelect from '@comp/company/CompanySelect'
import SelectContacts from '@comp/company/SelectContacts'
import { getWorkingGroupListByNotCompany } from '../../../api/incomePaymentsApi'
// import { isRepeat } from '../../../utils/util'
import { addZero } from '../../../utils/util'
import { money } from '../../../utils/validate'
import { checkAssociatedProject } from '../../../utils/projectCheck'
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
export default {
name: 'DraftingGroupMemberUnitModule',
components: { CompanySelect, SelectContacts },
mixins: [CalcAmountMixin],
props: {
// 默认来款方式(收入合同新增工作组项目,来款方式默认为2--合同)
defaultChargeWay: {
type: Number,
required: false,
default: null
},
// 收入合同关联时传入的企业信息,不可修改
defaultChargeCompany: {
type: Object,
required: false,
default: () => {
return {}
}
},
// 是否可以修改来款企业
disabledChargeCompany: {
type: Boolean,
required: false,
default: false
},
// 收入合同新增项目时带入合同号且不可修改
defaultContractNum: {
type: String,
requirde: false,
default: null
},
// 合同号是否可编辑
isContractNumDisabled: {
type: Boolean,
required: false,
default: false
},
// 企业的签订联系人id,收入合同新增企业联系人、邮寄联系人默认为签订联系人
signedContactId: {
type: String,
required: false,
default: undefined
},
// 收入合同新增时为1
flag: {
type: Number,
requirded: false,
default: null
}
},
data() {
return {
title: '操作',
width: 800,
visible: false,
confirmLoading: false,
form: this.$form.createForm(this),
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 8 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
remarksLabelCol: {
xs: { span: 24 },
sm: { span: 4 }
},
remarksWrapperCol: {
xs: { span: 24 },
sm: { span: 20 }
},
validatorRules: {
draftingGroupId: {
rules: [{ required: true, message: '请选择起草组项目' }],
validateTrigger: 'change'
},
chargeCompany: {
rules: [{ required: true, validator: this.checkCompany }],
validateTrigger: 'change'
},
taxRate: {
rules: [{ required: true, message: '请选择税率' }],
validateTrigger: 'change', initialValue: '0.06'
},
contactsIdOne: {
rules: [{ required: true, message: '请选择企业联系人1' }],
validateTrigger: 'change'
},
contactsRepeat: {
rules: [{ required: false, validator: this.validateContact }],
validateTrigger: 'change'
},
mailContactsId: {
rules: [{ required: true, message: '请选择邮寄联系人' }],
validateTrigger: 'blur'
},
chargeWay: {
rules: [{ required: true, message: '请选择来款方式' }],
validateTrigger: 'change'
},
receivableAmount: {
rules: [{ required: true, validator: this.checkMoney }],
validateTrigger: 'blur'
},
contractNum: {
rules: [{ required: true, message: '请选择合同号' }],
validateTrigger: 'change'
},
charge: {
rules: [{ required: true, message: '请输入收费通知号' }],
validateTrigger: 'blur'
},
needInvoice: {
rules: [{ required: true, message: '请选择发票类型' }],
validateTrigger: 'change'
}
},
chargeWayType: null,
selectedCompany: null, // 当前选中的企业
selectedContact1: null, // 编辑时的联系人
selectedContact2: null, // 编辑时的联系人
selectedContact3: null, // 编辑时的联系人
selectedMailContact: null, // 编辑时的邮寄联系人
selectedChargeNotice: null, // 选中的收费通知号
draftingGroupId: null,
workingGroupList: [],
disabledCompany: false, // 企业是否禁用
isAssociatedContract: false, // 是否关联合同
// hasContactOne: false, // 是否选择联系人1
// hasContactTwo: false, // 是否选择联系人2
// hasContactThree: false, // 是否选择联系人3
url: {
add: '/drafting/payDraftingGroupSubitem/add',
edit: '/drafting/payDraftingGroupSubitem/edit'
},
// 默认的联系人数据
defaultPayWorkingGroupSubItemContact: {
contactsId: undefined,
remarks: null,
name: null
}
}
},
methods: {
addZero,
add() {
this.edit({})
// 判断默认来款用途是否为合同(收入合同新增)
if (this.defaultChargeWay) {
this.loadWorkingGroupList()
this.chargeWayType = 2
}
// 判断是否存在默认合同号(收入合同新增)
if (this.defaultContractNum && this.defaultContractNum !== '') {
this.model.contractNum = this.defaultContractNum
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'contractNum'))
})
}
},
/**
* 获取工作组列表
*/
loadWorkingGroupList() {
let param = {
companyId: this.defaultChargeCompany.id
}
getWorkingGroupListByNotCompany(param).then(res => {
if (res.success) {
this.workingGroupList = res.result
} else {
this.$message.warn(res.message)
}
})
},
edit(record) {
// 存在默认选中企业时显示默认企业
if (this.defaultChargeCompany.hasOwnProperty.call(this.defaultChargeCompany, 'id')) {
record.chargeCompany = {
id: this.defaultChargeCompany.id,
companyName: this.defaultChargeCompany.companyName
}
} else {
record.chargeCompany = {
id: record.chargeCompanyId,
companyName: record.chargeCompanyTemporaryName
}
}
// 验证项目是否关联收入合同,项目来款、开票、邮寄、打包、关联合同后,企业不可更改
if (record.id) {
checkAssociatedProject(record.id).then(res => {
this.disabledCompany = this.disabledChargeCompany || res || (!!record.inAccount && record.inAccount !== 0) || (!!record.makeInvoice && record.makeInvoice !== 0) || (!!record.mail && record.mail !== 0)
this.isAssociatedContract = res
})
} else {
this.disabledCompany = this.disabledChargeCompany
}
// 回显选中的企业
this.selectedCompany = record.chargeCompany
this.companyChange(this.selectedCompany)
this.form.resetFields()
record.contractNum = record.contractNum || undefined
this.model = Object.assign({}, JSON.parse(JSON.stringify(record)))
// 是否存在从收入合同传入的签订联系人id
this.model.contactsIdOne = this.signedContactId || this.model.contactsTemporaryIdOne || undefined
this.model.contactsIdTwo = this.model.contactsTemporaryIdTwo || undefined
this.model.contactsIdThree = this.model.contactsTemporaryIdThree || undefined
// 是否存在从收入合同传入的签订联系人id
// this.model.mailContactsId = this.signedContactId || this.model.mailContactsTemporaryId || undefined
if (this.model.id) {
// 传给组件的init-contact值,需要id和name两个属性
this.model.payDraftingGroupSubItemContactsList && this.model.payDraftingGroupSubItemContactsList.forEach(item => {
item.name = item.contactsTemporaryName
})
// this.selectedContact1 = {
// id: this.model.contactsTemporaryIdOne,
// name: this.model.contactsTemporaryNameOne
// }
// this.selectedContact2 = {
// id: this.model.contactsTemporaryIdTwo,
// name: this.model.contactsTemporaryNameTwo
// }
// this.selectedContact3 = {
// id: this.model.contactsTemporaryIdThree,
// name: this.model.contactsTemporaryNameThree
// }
this.selectedMailContact = {
id: this.model.mailContactsTemporaryId,
name: this.model.mailContactsTemporaryName
}
// // 是否需要显示联系人备注信息
// if (this.model.contactsTemporaryIdOne) {
// this.hasContactOne = true
// }
// if (this.model.contactsTemporaryIdTwo) {
// this.hasContactTwo = true
// }
// if (this.model.contactsTemporaryIdThree) {
// this.hasContactThree = true
// }
} else {
// 新增处理默认显示的三个企业联系人
this.model.payDraftingGroupSubItemContactsList = []
this.model.payDraftingGroupSubItemContactsList.push(this.defaultPayWorkingGroupSubItemContact)
this.model.payDraftingGroupSubItemContactsList.push(this.defaultPayWorkingGroupSubItemContact)
this.model.payDraftingGroupSubItemContactsList.push(this.defaultPayWorkingGroupSubItemContact)
}
this.chargeWayType = record.chargeWay
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'chargeCompany', 'contactsIdOne', 'contactsIdTwo', 'contactsIdThree', 'remarks', 'remarksOne', 'remarksTwo', 'remarksThree', 'payDraftingGroupSubItemContactsList'))
})
},
close() {
this.$emit('close')
this.chargeWayType = null
this.selectedCompany = null
// 清除选中联系人信息
this.selectedContact1 = null
this.selectedContact2 = null
this.selectedContact3 = null
this.selectedMailContact = null
// 清除企业、来款方式、合同号的限制
this.isAssociatedContract = false
this.disabledCompany = false
// 清除联系人备注信息
// this.hasContactOne = false
// this.hasContactTwo = false
// this.hasContactThree = false
this.visible = false
this.model = Object.assign({}, {})
this.form.resetFields()
},
handleOk() {
if (this.confirmLoading) {
return
}
this.confirmLoading = true
const that = this
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
that.confirmLoading = true
// 收入合同新建项目手动赋值
if (this.defaultChargeWay === 2) {
values.chargeWay = 2
}
if (this.flag === 1) {
values.flag = this.flag
}
values.chargeCompanyTemporaryName = values.chargeCompany.companyName
values.chargeCompanyId = values.chargeCompany.id
let httpurl = ''
let method = 'post'
if (!this.model.id) {
httpurl += this.url.add
// 通过添加成员来的,默认状态为通过
values.checkResult = 2
} else {
httpurl += this.url.edit
}
if (this.draftingGroupId) {
values.draftingGroupId = this.draftingGroupId
}
// 企业联系人信息中将没有值的去掉
let haveValueContactArr = values.payDraftingGroupSubItemContactsList.filter(tt => tt.contactsId)
let obj = {
payDraftingGroupSubItemContactsList: haveValueContactArr
}
const formData = Object.assign(this.model, values, obj)
console.log('表单提交数据', formData)
httpAction(httpurl, formData, method).then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
that.close()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
setTimeout(() => {
this.confirmLoading = false
}, 1000)
})
} else {
this.confirmLoading = false
}
})
},
handleCancel() {
this.close()
},
/**
* 选中企业变化,将联系人的值清空
* @param value
*/
companyChange(value) {
// 当前选中的企业和之前选中的企业一致,就不修改了
if (this.selectedCompany && value && this.selectedCompany.id === value.id) {
return
}
this.selectedCompany = value
// this.model.contactsIdOne = undefined
// this.model.contactsIdTwo = undefined
// this.model.contactsIdThree = undefined
// 处理默认显示的三个企业联系人
this.model.payDraftingGroupSubItemContactsList = []
this.model.payDraftingGroupSubItemContactsList.push(this.defaultPayWorkingGroupSubItemContact)
this.model.payDraftingGroupSubItemContactsList.push(this.defaultPayWorkingGroupSubItemContact)
this.model.payDraftingGroupSubItemContactsList.push(this.defaultPayWorkingGroupSubItemContact)
// this.model.mailContactsId = undefined
this.selectedMailContact = null
this.model.contractNum = undefined
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'contractNum', 'payDraftingGroupSubItemContactsList'))
})
},
/**
* 企业必填校验
* @param rules
* @param value
* @param callback
*/
checkCompany(rules, value, callback) {
if (value.id && value.companyName) {
callback()
return
}
callback('请选择成员单位')
},
/**
* 校验金额格式
* @param rules
* @param value
* @param callback
*/
checkMoney(rules, value, callback) {
if (value) {
if (money(value)) {
callback()
return
}
callback('请输入合法的金额数字,最多2位小数,10位整数')
}
callback('请输入待确收金额')
},
/**
* 在新增成功后重新获取联系人列表
*/
addContactsOneOk() {
this.$refs.selectMailContacts.getContactsList()
},
addMailContactsOk() {
this.$refs.selectContacts1.getContactsList()
this.$refs.selectContacts2.getContactsList()
this.$refs.selectContacts3.getContactsList()
},
validateContactRequired(rule, value, callback) {
if (value) {
callback()
}
callback('请选择企业联系人1')
},
/**
* 校验企业联系人是否重复
* @param rule
* @param value
* @param callback
*/
validateContact(rule, value, callback) {
if (value) {
let contactsList = this.form.getFieldValue('payDraftingGroupSubItemContactsList')
let hasValueArr = contactsList.filter(tt => tt.contactsId === value)
if (hasValueArr.length <= 1) {
callback()
}
callback('请选择不同的联系人')
return
}
callback()
},
/**
* 添加联系人
* @param index
*/
handleAddContact(index) {
if (this.model.payDraftingGroupSubItemContactsList.length >= 10) {
this.$message.warn('最多添加十个企业联系人')
return
}
let obj = {
contactsId: undefined,
remarks: null
}
this.model.payDraftingGroupSubItemContactsList.splice(index + 1, 0, obj)
this.$forceUpdate()
let formData = this.form.getFieldValue('payDraftingGroupSubItemContactsList')
formData.splice(index + 1, 0, obj)
this.$nextTick(() => {
this.form.setFieldsValue({ payDraftingGroupSubItemContactsList: formData })
})
},
/**
* 删除联系人
* @param index
*/
handleDelContact(index) {
if (this.model.payDraftingGroupSubItemContactsList.length === 1) {
this.$message.warn('最少需要一个企业联系人')
return
}
this.model.payDraftingGroupSubItemContactsList.splice(index, 1)
let formData = this.form.getFieldValue('payDraftingGroupSubItemContactsList')
formData.splice(index, 1)
this.$nextTick(() => {
this.form.setFieldsValue({ payDraftingGroupSubItemContactsList: formData })
})
},
// 下拉框的搜索
filterOption(input, option) {
return (
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
)
},
}
}
</script>
<style scoped lang="less">
.charge-notice-no {
width: 100%;
/deep/ .ant-radio-wrapper {
display: inline-block;
width: 100%;
span.ant-radio + * {
display: inline-block;
width: 100%;
span {
vertical-align: bottom;
display: inline-block;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
}
.contact-btn {
display: inline-block;
margin: 0 8px;
padding: 0;
height: 40px;
}
.del-btn {
color: #ff4d4f
}
</style>
@@ -0,0 +1,330 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<a-spin :spinning="confirmLoading">
<span class="prompt-message">
说明1.负责人A为该起草组的主负责人负责人B为该起草组的辅助负责人<br>
</span>
<a-form :form="form">
<a-row>
<a-col :span="24">
<a-form-item label="起草组项目" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-input placeholder="请输入起草组项目"
v-decorator="['draftingGroupProject',validatorRules.draftingGroupProject]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<a-form-item label="关联工作组" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-select
placeholder="请选择关联工作组"
show-search
v-decorator="['workingGroupId',validatorRules.workingGroupId]"
:filter-option="filterOption"
>
<a-select-option v-for="item in workingGroupList" :key="item.id" :value="item.id">
{{ item.workingGroupProject }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="运行年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-year-date style="width:100%" placeholder="请选择运行年份"
v-decorator="['year',validatorRules.year]"></j-year-date>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="负责人A" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-principal placeholder="请选择负责人A"
v-decorator="['principalIdA',validatorRules.principalIdA]"
:maxLength='50'></select-principal>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="负责人B" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-principal placeholder="请选择负责人B"
v-decorator="['principalIdB',validatorRules.principalIdB]"
:maxLength='50'></select-principal>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="每年召开次数" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入每年召开次数"
v-decorator="['convokeNum']"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="运行周期" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入运行周期"
v-decorator="['operationCycle']"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col>
<a-form-item label="任务及目标" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入任务及目标"
:auto-size="{ minRows: 3, maxRows: 6 }"
v-decorator="['missionAndObjectives']"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col>
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入备注"
:auto-size="{ minRows: 3, maxRows: 6 }"
v-decorator="['remarks']"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
</j-modal>
</template>
<script>
import pick from 'lodash.pick'
import { httpAction } from '@api/manage'
import JYearDate from '@comp/jero/JYearDate'
import SelectPrincipal from '@comp/company/SelectPrincipal'
import { isRepeat } from '../../../utils/util'
import { money } from '../../../utils/validate'
import { addZero } from '../../../utils/util'
import { getWorkingGroupList } from '@api/incomePaymentsApi'
export default {
name: 'DraftingGroupModule',
components: { JYearDate, SelectPrincipal },
data() {
return {
title: '操作',
width: 800,
visible: false,
confirmLoading: false,
form: this.$form.createForm(this),
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 18 }
},
remarksLabelCol: {
xs: { span: 24 },
sm: { span: 3 }
},
remarksWrapperCol: {
xs: { span: 24 },
sm: { span: 21 }
},
validatorRules: {
draftingGroupProject: {
rules: [{ required: true, message: '请输入起草组项目' }],
validateTrigger: 'blur'
},
workingGroupId: {
rules: [{ required: true, message: '请选择关联工作组' }],
validateTrigger: 'change'
},
year: {
rules: [{ required: true, message: '请选择运行年份' }],
validateTrigger: 'change'
},
principalIdA: {
rules: [{ required: true, validator: this.validatePrincipal }],
validateTrigger: 'change'
},
principalIdB: {
rules: [{ required: false, validator: this.validatePrincipal }],
validateTrigger: 'change'
},
checkMoney: {
rules: [{ required: false, validator: this.checkMoney }],
validateTrigger: 'blur'
}
},
url: {
add: '/drafting/payDraftingGroup/add',
edit: '/drafting/payDraftingGroup/edit'
},
// 工作组下拉列表
workingGroupList: [],
}
},
methods: {
addZero,
add() {
this.edit({})
},
edit(record) {
// 获取工作组下拉列表
this.loadWorkingGroupList()
this.form.resetFields()
// 防止下拉选项出现问题
record.principalIdA = record.principalIdA || undefined
record.principalIdB = record.principalIdB || undefined
this.model = Object.assign({}, record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model,
'draftingGroupProject',
'workingGroupId',
'year',
'principalIdA',
'principalIdB',
'convokeNum',
'operationCycle',
'missionAndObjectives',
'remarks'
))
if (!this.model.id) {
this.form.setFieldsValue({'year': (new Date().getFullYear()).toString()})
}
})
},
// 获取工作组下拉列表
loadWorkingGroupList () {
getWorkingGroupList().then(res => {
if (res.success) {
this.workingGroupList = res.result || []
}
})
},
close() {
this.$emit('close')
this.visible = false
},
handleOk() {
if (this.confirmLoading) {
return
}
this.confirmLoading = true
const that = this
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
that.confirmLoading = true
let httpurl = ''
let method = 'post'
if (!this.model.id) {
httpurl += this.url.add
} else {
httpurl += this.url.edit
}
values.yearChargeA = values.yearChargeA ? Number(values.yearChargeA) : null
values.yearChargeB = values.yearChargeB ? Number(values.yearChargeB) : null
values.chargeA = values.chargeNoticeNoA ? 'a' : null
values.chargeB = values.chargeNoticeNoB ? 'b' : null
const formData = Object.assign(this.model, values)
console.log('表单提交数据', formData)
httpAction(httpurl, formData, method).then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
that.close()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
setTimeout(() => {
this.confirmLoading = false
}, 1000)
})
} else {
this.confirmLoading = false
}
})
},
// 下拉框的搜索
filterOption(input, option) {
return (
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
)
},
handleCancel() {
this.close()
},
/**
* 校验负责人是否重复
* @param rule
* @param value
* @param callback
*/
validatePrincipal(rule, value, callback) {
if (rule.field === 'principalIdA') {
if (!value) {
callback('请选择负责人A')
}
}
if (value) {
const principalObj = this.form.getFieldsValue(['principalIdA', 'principalIdB'])
const principalArr = Object.values(principalObj)
principalArr.filter(tt => tt !== undefined)
if (isRepeat(principalArr)) {
callback('请选择不同的负责人')
} else {
callback()
}
return
}
callback()
},
/**
* 校验金额格式
* @param rules
* @param value
* @param callback
*/
checkMoney(rules, value, callback) {
if (value) {
if (money(value)) {
callback()
return
}
callback('请输入合法的金额数字,最多2位小数,10位整数')
}
callback()
},
}
}
</script>
<style scoped lang="less">
.prompt-message {
color: red;
&-line2 {
padding-left: 2.7rem;
}
}
</style>
@@ -0,0 +1,183 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-row>
<a-col>
<a-form-item label="项目名称" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-input placeholder="请输入项目名称"
v-decorator="['projectName',validatorRules.projectName]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :xl="12" :sm="24">
<a-form-item label="主要起草单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入主要起草单位"
v-decorator="['draftCompany', validatorRules.draftCompany]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
<a-col :xl="12" :sm="24">
<a-form-item label="项目进度" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入项目进度"
v-decorator="['projectSchedule', validatorRules.projectSchedule]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col >
<!-- :xl="12" :sm="24"-->
<a-form-item label="过程文件" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<j-upload file-type="all"
file-type-error-message="请上传过程文件"
:multiple="true"
:number="20"
:return-id="true"
v-decorator="['files', validatorRules.files]"
:trigger-change="true"></j-upload>
<div class="tip">最多只能添加20个文件如果文件过多请打包上传</div>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
</j-modal>
</template>
<script>
import pick from 'lodash.pick'
import { postAction } from '../../../api/manage'
import JUpload from '../../../components/jero/JUpload'
export default {
name: 'DraftingGroupUnderStudyProjectModal',
components: { JUpload },
data() {
return {
title: '操作',
width: 800,
visible: false,
confirmLoading: false,
form: this.$form.createForm(this),
model: {},
// 起草组id
draftingGroupId: '',
labelCol: {
xs: { span: 24 },
sm: { span: 8 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
remarksLabelCol: {
xs: { span: 24 },
sm: { span: 4 }
},
remarksWrapperCol: {
xs: { span: 24 },
sm: { span: 20 }
},
validatorRules: {
projectName: {
rules: [{ required: true, message: '请输入项目名称' }],
validateTrigger: 'blur'
},
draftCompany: {
rules: [{ required: true, message: '请输入主要起草单位' }],
validateTrigger: 'blur'
},
projectSchedule: {
rules: [{ required: true, message: '请输入项目进度' }],
validateTrigger: 'blur'
},
files: {
rules: [{ required: true, message: '请上传过程文件' }],
validateTrigger: 'change'
}
},
url: {
add: '/drafting/payDraftingGroupResearchProject/add',
edit: '/drafting/payDraftingGroupResearchProject/edit'
}
}
},
methods: {
add() {
this.edit({})
},
edit(record) {
this.form.resetFields()
this.model = Object.assign({}, record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'projectName', 'draftCompany', 'projectSchedule', 'files'))
})
},
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) {
let httpurl = ''
if (!this.model.id) {
httpurl += this.url.add
} else {
httpurl += this.url.edit
}
values.draftingGroupId = this.draftingGroupId
const formData = Object.assign(this.model, values)
console.log('表单提交数据', formData)
postAction(httpurl, formData).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>
.tip{
color: #f5222d;
}
</style>
@@ -135,7 +135,7 @@
<!-- @change="changeConvoke"-->
<!-- v-decorator="['convokeLocale',validatorRules.convokeLocale]"-->
<!-- ></j-area-linkage>-->
<a-input placeholder="请输入召开地点/腾讯会议" v-decorator="['venue',validatorRules.venue]"></a-input>
<a-input placeholder="请输入召开地点/腾讯会议" :maxLength='50' v-decorator="['venue',validatorRules.venue]"></a-input>
</a-form-item>
</a-col>
<a-col :xxl='8' :xl="12" :sm="24">
@@ -314,10 +314,12 @@
<template v-if="!isWasic">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="会议费用" :labelCol="labelCol" :wrapperCol="{ xs: {span: 24},sm: {span: 16}}">
<!-- 起草组会议费用默认0不可修改 -->
<a-input placeholder="请输入会议费用"
:maxLength='50'
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"
@blur="addZero"
:disabled="meetingType === '7'"
v-decorator="[ 'meetingCosts',validateInviteCode.meetingCosts]"></a-input>
<span class="yuan">元/人</span>
</a-form-item>
@@ -702,6 +704,14 @@ export default {
} else {
return false
}
},
// 是否从起草组会议维护来的
isDraftGroupMeetType() {
if (this.$route.query.draftingGroupProjectId) {
return true
} else {
return false
}
}
},
mounted() {
@@ -800,6 +810,11 @@ export default {
// 后端需要的注册签到时间
this.newSignInTime = [this.model.startSignInTime, this.model.endSignInTime]
// 起草组会议费用默认0
if (this.meetingType === '7') {
this.model.meetingCosts = '0.00'
this.QRcodeBool = false
}
this.$nextTick(() => {
// 加定时器是因为有可能赋值不成功
setTimeout(() => {
@@ -901,6 +916,11 @@ export default {
formData.meetingType = '2'
formData.standardsId = this.$route.query.standardsId
}
// 如果是起草组会议需要加上起草组id与会议类型
if (this.isDraftGroupMeetType) {
formData.meetingType = '7'
formData.draftingGroupId = this.$route.query.draftingGroupProjectId
}
// 转换召开时间
formData.startTime = this.newConvokeTime[0]
formData.endTime = this.newConvokeTime[1]
@@ -1256,6 +1276,12 @@ export default {
add: '/meeting/councilMeeting/add',
edit: '/meeting/councilMeeting/edit'
}
// 起草组会议
case '7':
return {
add: '/meeting/draftGroupMeeting/add',
edit: '/meeting/draftGroupMeeting/edit'
}
}
},
/*
@@ -192,9 +192,9 @@
dictCode="signup_status"/>
</a-form-item>
</a-col>
<!-- 只有工作组会议与分标委会议 理事会会议审核信息-->
<!-- 只有工作组会议与分标委会议 理事会会议 起草组会议审核信息-->
<a-col :xl="6" :lg="7" :md="8" :sm="24"
v-show="currentMeetingInfo.meetingType === '1' || currentMeetingInfo.meetingType === '5' || currentMeetingInfo.meetingType === '6' ">
v-show="['1', '5', '6', '7'].includes(currentMeetingInfo.meetingType)">
<a-form-item label="审核报名信息">
<j-dict-select-tag v-model="queryParam.registerCheckResult" placeholder="请选择"
dictCode="signup_status"/>
@@ -249,7 +249,8 @@
dictCode="invoice_project"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero">
<!-- 国际研讨会 且为 WASIC时显示 -->
<a-col :xl="6" :lg="7" :md="8" :sm="24" class="flex-width-zero" v-if="currentMeetingInfo.meetingType === '3' && currentMeetingInfo.isWasic">
<a-form-item label="会议名称">
<j-multi-select-tag
v-model="queryParam.choiceTopic_regexp"
@@ -371,9 +372,9 @@
<!-- 只有缴费方式为汇款并且上传了汇款凭证的的才会有审核按钮 审核报名信息通过后才能审核凭证 审核通过后不显示 审核凭证按钮 -->
<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-show="(['1', '5', '6', '7'].includes(currentMeetingInfo.meetingType)) && record.registerCheckResult === 0 "
v-has:[authorCode.auditSignUpInfo]="'attendance:auditSignUp'">审核报名信息</a>
<!-- 非成员报名被拒绝 无法编辑 -->
<a @click="handleEdit(record)" v-if="record.registerCheckResult !== 2" v-has:[authorCode.edit]="'attendance:edit'">编辑</a>
@@ -630,6 +631,18 @@ export default {
auditSignUpInfo: 'councilMeetingSituation:auditSignUp',
guestsUploadFileFlag: 'councilMeetingSituation:guestsUploadFileFlag'
},
// 起草组会议的参会情况的权限编码
draftGroupMeetingCode: {
search: 'draftGroupMeetingSituation:search',
add: 'draftGroupMeetingSituation:add',
export: 'draftGroupMeetingSituation:export',
batchDel: 'draftGroupMeetingSituation:batchDel',
edit: 'draftGroupMeetingSituation:edit',
delete: 'draftGroupMeetingSituation:delete',
auditRecord: 'draftGroupMeetingSituation:auditCredentials',
auditSignUpInfo: 'draftGroupMeetingSituation:auditSignUp',
guestsUploadFileFlag: 'draftGroupMeetingSituation:guestsUploadFileFlag'
},
disableMixinCreated: true,
// url: {
// list: '/meeting/payMeetingSituation/page',
@@ -686,6 +699,14 @@ export default {
exportXlsUrl: '/meeting/councilMeetingSituation/exportXls',
importExcelUrl: '/meeting/councilMeetingSituation/importExcel'
},
// 起草组会议的url
draftGroupMeetingUrl: {
list: '/meeting/draftGroupMeetingSituation/page',
delete: '/meeting/draftGroupMeetingSituation/delete',
deleteBatch: '/meeting/draftGroupMeetingSituation/deleteBatch',
exportXlsUrl: '/meeting/draftGroupMeetingSituation/exportXls',
importExcelUrl: '/meeting/draftGroupMeetingSituation/importExcel'
},
// 当前的会议信息详情
currentMeetingInfo: {},
meetingType: '',
@@ -796,6 +817,8 @@ export default {
return this.committeeMeetingUrl
case '6':
return this.councilMeetingUrl
case '7':
return this.draftGroupMeetingUrl
// 为了解决控制台报错写的
default:return this.workGroupMeetingUrl
}
@@ -997,6 +1020,8 @@ export default {
return '分标委会议'
case '6':
return '理事会会议'
case '7':
return '起草组会议'
default:
return '其他会议'
}
@@ -1096,6 +1121,9 @@ export default {
case '6':
this.authorCode = Object.assign({}, this.councilMeetingCode)
break
case '7':
this.authorCode = Object.assign({}, this.draftGroupMeetingCode)
break
}
}
}
@@ -282,6 +282,11 @@ export default {
add: '/meeting/councilMeetingSituation/add',
edit:'/meeting/councilMeetingSituation/edit'
},
// 起草组会议的url
draftGroupMeetingUrl: {
add: '/meeting/draftGroupMeetingSituation/add',
edit:'/meeting/draftGroupMeetingSituation/edit'
},
title:'添加参会人',
// 当前参会企业是否是内部企业
isInternalEnterprise: false,
@@ -329,6 +334,8 @@ export default {
return this.committeeMeetingUrl
case '6':
return this.councilMeetingUrl
case '7':
return this.draftGroupMeetingUrl
}
},
},
@@ -215,6 +215,13 @@ export default {
// 审核报名信息
checkSignUp: '/meeting/councilMeetingSituation/checkRegister'
},
// 起草组会议url
draftGroupMeetingUrl: {
// 审核凭证
check: '/meeting/draftGroupMeetingSituation/check',
// 审核报名信息
checkSignUp: '/meeting/draftGroupMeetingSituation/checkRegister'
},
// 审核结果选择
checkBool: false,
// 是否是审核报名信息
@@ -326,6 +333,8 @@ export default {
return this.committeeMeetingUrl
case '6':
return this.councilMeetingUrl
case '7':
return this.draftGroupMeetingUrl
}
}
}
@@ -35,6 +35,7 @@ const requestUrlObj = {
otherMeetingUrl: '/meeting/ohterMeetingSituation/setGuestsUploadFile', // 其他会议的url
committeeMeetingUrl: '/meeting/committeeMeetingSituation/setGuestsUploadFile', // 分标委会议的url
councilMeetingUrl: '/meeting/councilMeetingSituation/setGuestsUploadFile', // 理事会的url
draftGroupMeetingUrl: '/meeting/draftGroupMeetingSituation/setGuestsUploadFile', // 起草组
}
export default {
@@ -65,6 +66,8 @@ export default {
return requestUrlObj.committeeMeetingUrl
case 6:
return requestUrlObj.councilMeetingUrl
case 7:
return requestUrlObj.draftGroupMeetingUrl
// 为了解决控制台报错写的
default:return requestUrlObj.workGroupMeetingUrl
}
@@ -238,6 +238,12 @@ export default {
uploadFile: '/meeting/councilMeeting/uploadFile',
uploadCouncilFile: '/meeting/councilMeeting/uploadCouncilFile',
}
// 起草组会议
case '7':
return {
uploadFile: '/meeting/draftGroupMeeting/uploadFile',
uploadCouncilFile: '/meeting/draftGroupMeeting/uploadCouncilFile',
}
}
},
handleOk() {
@@ -406,7 +412,7 @@ export default {
}
return true
},
handleChange(info) {
async handleChange(info) {
if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList)
}
@@ -430,8 +436,8 @@ export default {
} else {
this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`)
}
this.fileList.push(info.file.response.result)
let newFile = await this.getFileInfoArr(info.file.response.result.id)
this.fileList.push(newFile[0])
} else {
this.messageLineFeed('文件导入错误', info.file.response.message)
}
@@ -291,6 +291,7 @@ export default {
pathMap.set('4','/incomePayments/meetManage/AttendanceOhterMeeting')
pathMap.set('5','/incomePayments/meetManage/AttendanceCommitteeMeeting')
pathMap.set('6','/incomePayments/meetManage/AttendanceCouncilMeeting')
pathMap.set('7','/incomePayments/meetManage/AttendanceDraftGroupMeeting')
this.$router.push({
path: pathMap.get(record.meetingType+''),
query: {
@@ -154,7 +154,7 @@ export default {
],
disableMixinCreated: true,
projectId: null, // 项目id
projectType: null, // 1--工作组;2--分标委
projectType: null, // 1--工作组;2--分标委4--起草组
distributeModalVisible: false,
isBatchDistribute: false,
dataId: '', // 资料id,传给分发
@@ -178,6 +178,12 @@ export default {
this.filters.projectId = this.$route.query.councilId
this.projectType = 3
this.filters.projectType = 3
} else if (this.$route.query.hasOwnProperty.call(this.$route.query, 'draftingGroupId')) {
// 起草组
this.filters.projectId = this.$route.query.draftingGroupId
this.canOperate = this.$route.query.canOperate === 'true'
this.projectType = 4
this.filters.projectType = 4
}
this.projectId = this.filters.projectId
this.loadData()
@@ -85,7 +85,12 @@
<script>
import {JeroListMixin} from '@/mixins/JeroListMixin'
import {publishRemind,commitePublishRemind,councilPublishRemind} from '@api/incomePaymentsApi'
import {
publishRemind,
commitePublishRemind,
councilPublishRemind,
draftGroupPublishRemind
} from '@api/incomePaymentsApi'
import EmailErrorMsgModal from '@views/projectManagement/modules/EmailErrorMsgModal'
import { judgeEmailStatus } from "../../../api/incomePaymentsApi";
@@ -244,7 +249,7 @@ export default {
// 会议维护选中的会议
selectedMetingList: [],
newColumns: [],
// 提醒类型 1 是工作组 2 是分标委 3是理事会
// 提醒类型 1 是工作组 2 是分标委 3是理事会 4是起草组
remindType:'',
// 是否需要发邮件
needMail: false,
@@ -274,6 +279,11 @@ export default {
//理事会成员的接口
this.url.list = '/payCaseCouncilSubitem/payCaseCouncilSubitem/list'
this.remindType = 3
} else if (this.$route.query.meetingType === '7') {
this.url.list = '/meeting/draftGroupMeetingSituation/publishReminderList'
this.filters.draftingGroupId = this.$route.query.draftingGroupProjectId
this.newColumns = [...this.columns]
this.remindType = 4
} else {
// 列表需要工作组id参数
this.filters.workingGroupId = this.$route.query.workingGroupProjectId
@@ -325,6 +335,10 @@ export default {
}else if(this.$route.query.meetingType === '6'){
// 理事会的用理事会的发布提醒
requestFun = councilPublishRemind
} else if (this.$route.query.meetingType === '7') {
// 起草组用起草组的发布提醒
param.draftingGroupId = this.$route.query.draftingGroupProjectId
requestFun = draftGroupPublishRemind
} else {
// 工作组
param.workingGroupId = this.$route.query.workingGroupProjectId
@@ -45,7 +45,6 @@
<a-col :xl="12" :sm="24">
<a-form-item :label="`企业联系人${index + 1}`" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-contacts :selected-company="selectedCompany"
:init-contacts="model.payWorkingGroupSubItemContactsList[index]"
:placeholder="`请选择企业联系人${index + 1}`"
v-decorator="[`payWorkingGroupSubItemContactsList[${index}].contactsId`, {rules: [{ required: index === 0, validator: index === 0 ? validateContactRequired : validateContact }],validateTrigger: 'change'}]"
:maxLength='50'
+2
View File
@@ -234,6 +234,8 @@ export default {
return '分标委会议'
case '6':
return '理事会会议'
case '7':
return '起草组会议'
}
} else {
return ''
+2
View File
@@ -437,6 +437,8 @@ export default {
return '分标委会议'
case '6':
return '理事会会议'
case '7':
return '起草组会议'
}
} else {
return ''