update 起草组完善

This commit is contained in:
danshihao
2024-01-10 09:06:50 +08:00
parent ef0ef97443
commit 6fc993c16b
10 changed files with 365 additions and 15 deletions
+3 -1
View File
@@ -143,7 +143,8 @@ const copyDraftingGroup = (param) => postAction('/drafting/payDraftingGroup/copy
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,
@@ -219,4 +220,5 @@ export {
copyDraftingGroup,
getWorkingGroupList,
getDraftingGroupById,
draftGroupPublishRemind,
}
@@ -63,7 +63,7 @@
<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="'workGroupMeeting:search'">查询</a-button>
v-has="'draftGroupMeeting:search'">查询</a-button>
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
</span>
</a-col>
@@ -74,15 +74,15 @@
<!-- 操作按钮区域-->
<div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'workGroupMeeting:add'" v-if="canOperate">新增
<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="'workGroupMeeting:export'">导出
v-has="'draftGroupMeeting:export'">导出
</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'workGroupMeeting:batchDel'" v-if="canOperate">
<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="'workGroupMeeting:publish'" v-if="canOperate">发布
<a-button type="primary" @click="publishRemind" v-has="'draftGroupMeeting:publish'" v-if="canOperate">发布
</a-button>
</div>
<!-- /操作按钮区域-end-->
@@ -114,11 +114,11 @@
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record" v-if="canOperate">
<a @click="uploadFile(record,'1')" v-has="'workGroupMeeting:uploadCouncil'">会议纪要</a>
<a @click="uploadFile(record,'2')" v-has="'workGroupMeeting:upload'">上传文件</a>
<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="'workGroupMeeting:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'workGroupMeeting:delete'">删除</a>
<a @click="handleEdit(record)" v-has="'draftGroupMeeting:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'draftGroupMeeting:delete'">删除</a>
</span>
</a-table>
</div>
@@ -284,7 +284,8 @@ export default {
query: {
draftingGroupProject: record.draftingGroupProject,
draftingGroupProjectId: record.id,
canOperate: record.checkoutOperation === 1
canOperate: record.checkoutOperation === 1,
meetingType: '7'
}
})
},
@@ -32,6 +32,25 @@
<a-divider></a-divider>
<!-- 入会信息 -->
<div class="part-title">
<div class="part-title-text">入会信息</div>
</div>
<a-spin :spinning="spinning">
<a-row class="flex-col">
<a-col :xxl="8" :xl="12" :sm="24">
<label>报名链接</label><span>{{ signUpHerfUrl }}</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(signUpHerfUrl)">复制</i>
</a-col>
</a-row>
</a-spin>
<!-- /入会信息 -->
<a-divider></a-divider>
<!-- 查询区域-->
<div class="part-title">
<div class="part-title-text">成员信息</div>
@@ -137,6 +156,8 @@
</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:edit'">审核</a>
<a @click="handleEdit(record)" v-has="'draftingGroupMember:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'draftingGroupMember:delete'">删除</a>
</span>
@@ -146,6 +167,8 @@
<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"/>
</div>
</template>
@@ -159,6 +182,8 @@ import DraftingGroupMemberUnitModule from './modules/DraftingGroupMemberUnitModu
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
@@ -166,6 +191,7 @@ const Base64 = require('js-base64').Base64
export default {
name: 'DraftingGroupMemberUnitMaintenance',
components: {
DraftingGroupMemberUnitCheckModule,
PageHeaderTitle,
StatusSlot,
ProjectDetailModal,
@@ -174,12 +200,21 @@ export default {
},
mixins: [JeroListMixin],
computed: {
// 报名链接
signUpHerfUrl() {
return `${ window._CONFIG['singUpQRCodeURL'] }?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: '',
@@ -338,6 +373,26 @@ export default {
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)
})
})
},
/**
* 初始化起草组信息
*/
@@ -360,7 +415,29 @@ export default {
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()
@@ -445,4 +522,37 @@ export default {
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;
}
.ant-row {
line-height: 3;
.ant-col {
label {
color: #999;
}
span {
color: black;
}
}
}
</style>
@@ -0,0 +1,212 @@
<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.phone }}</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="1">
通过
</a-radio>
<a-radio value='2'>
驳回
</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<a-col :xl="24" :sm="24" v-if="checkBool">
<a-form-item label="审核说明" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入审核说明"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
v-decorator="['checkRemark',validatorRules.checkRemark]"
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
<a-col :xl="24" :sm="24" v-if="!checkBool">
<a-form-item label="审核说明" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入审核说明"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
v-decorator="['checkRemark']"
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-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: '/meeting/draftGroupMeetingSituation/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 === '1') {
this.checkBool = false
} else if (e.target.value === '2') {
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>
@@ -113,7 +113,7 @@ import { checkAssociatedProject } from '../../../utils/projectCheck'
import { CalcAmountMixin } from '@/mixins/CalcAmountMixin'
export default {
name: 'WorkingGroupMemberUnitModule',
name: 'DraftingGroupMemberUnitModule',
components: { CompanySelect, SelectContacts },
mixins: [CalcAmountMixin],
props: {
@@ -411,6 +411,8 @@ export default {
let method = 'post'
if (!this.model.id) {
httpurl += this.url.add
// 通过添加成员来的,默认状态为通过
values.checkResult = 2
} else {
httpurl += this.url.edit
}
@@ -916,6 +916,7 @@ export default {
formData.meetingType = '2'
formData.standardsId = this.$route.query.standardsId
}
// 如果是起草组会议需要加上起草组id与会议类型
if (this.isDraftGroupMeetType) {
formData.meetingType = '7'
formData.draftingGroupId = this.$route.query.draftingGroupProjectId
@@ -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() {
@@ -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
+2
View File
@@ -234,6 +234,8 @@ export default {
return '分标委会议'
case '6':
return '理事会会议'
case '7':
return '起草组会议'
}
} else {
return ''