Merge branch 'change0706'
This commit is contained in:
+8
-1
@@ -116,6 +116,11 @@ const getContactsByCompany = (params) => getAction('/company/payContactsManageme
|
||||
const getContactsByCompanyNoLimit = (params) => getAction('/company/payContactsManagement/queryByCompanyMeeting', params)
|
||||
// 通过联系人id获取联系人信息
|
||||
const getContactsById = (param) => getAction('/company/payContactsManagement/queryByIdMeeting', param)
|
||||
// 企业管理员重置密码
|
||||
const companyAdminResetPassword = (param) => postAction('/payManagerManagement/resetPassword', param)
|
||||
|
||||
// 企业管理员启用禁用
|
||||
const companyAdminEnable= (param) => postAction('/payManagerManagement/frozenBatch', param)
|
||||
|
||||
// 加密获取key 与 iv
|
||||
const getKeyIv = (param) => getAction('/sys/getEncryptedString',param)
|
||||
@@ -183,7 +188,9 @@ export {
|
||||
getFileInfo,
|
||||
getKeyIv,
|
||||
getContactsByCompanyNoLimit,
|
||||
loginIdmPlatform
|
||||
loginIdmPlatform,
|
||||
companyAdminResetPassword,
|
||||
companyAdminEnable
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -26,6 +26,10 @@ const addGenerateCodeList = (params) => postAction('/meeting/randomCode/add', pa
|
||||
// 国际研讨会--列表页编辑一条随机码数据
|
||||
const editGenerateCodeList = (params) => postAction('/meeting/randomCode/edit', params)
|
||||
|
||||
// 标协会议-问题征集详情-查询标准号下拉框数据
|
||||
const getStandardNumberList = (params) => getAction('/meeting/standardsMeeting/getStandardNumberList', params)
|
||||
|
||||
|
||||
export {
|
||||
getUserInfo,
|
||||
getMeetInfoById,
|
||||
@@ -37,5 +41,6 @@ export {
|
||||
getGeneratedCodeList,
|
||||
generateCode,
|
||||
addGenerateCodeList,
|
||||
editGenerateCodeList
|
||||
editGenerateCodeList,
|
||||
getStandardNumberList
|
||||
}
|
||||
|
||||
@@ -108,6 +108,10 @@
|
||||
<label>银行账号:</label>
|
||||
<span>{{ basicInfo.bankAccount }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>联行号:</label>
|
||||
<span>{{ basicInfo.linkBankNumber || '' }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</section>
|
||||
<!--企业信息end-->
|
||||
@@ -117,7 +121,7 @@
|
||||
<h3 class="title">第三方垫付信息</h3>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>关联付款发票名称:</label>
|
||||
<label>付款单位发票抬头:</label>
|
||||
<span><j-ellipsis :value="otherCompanyInfo.headerName" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
@@ -289,7 +293,7 @@ import { queryCommonProjectById, getStanderMemberLastProofInfo, getCertificateLa
|
||||
import JEllipsis from '@comp/jero/JEllipsis'
|
||||
import PreviewFile from './jero/PreviewFile'
|
||||
import { ProjectTypeEnums } from '@/enums/commonEnums'
|
||||
import pick from 'lodash.pick'
|
||||
// import pick from 'lodash.pick'
|
||||
// import {getAction} from "@api/manage";
|
||||
const columns = [
|
||||
{
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
<template>
|
||||
<div>
|
||||
<page-header-title :img-for-icon="IconImg"></page-header-title>
|
||||
<a-card :bordered="false">
|
||||
<!-- 查询区域-start -->
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row>
|
||||
<!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">-->
|
||||
<!-- <a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||
<!-- <a-input placeholder="请输入手机号" v-model="queryParam.phone" :maxLength='50'></a-input>-->
|
||||
<!-- </a-form-item>-->
|
||||
<!-- </a-col>-->
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="用户姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入用户姓名" v-model="queryParam.name" :maxLength='50'></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="企业名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName" :maxLength='11'></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="'companyadmin:page'">查询</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="'companyadmin:add'">新增</a-button>
|
||||
<a-button type="primary" icon="export" @click="handleExportXls('企业管理员')" v-has="'companyadmin:export'">导出
|
||||
</a-button>
|
||||
<a-button type="danger" icon="delete" @click="batchDel" v-has="'companyadmin:deleteBatch'">批量删除</a-button>
|
||||
</div>
|
||||
<!-- 操作按钮区域-end-->
|
||||
|
||||
<!-- table表格区域-->
|
||||
<div>
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
bordered
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
: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="handleUse(record)"
|
||||
:class="{'color-red':record.status === 1}"
|
||||
v-has="'companyadmin:use'">{{ record.status === 1 ? '禁用' : '启用' }}</a>
|
||||
<a @click="handleEdit(record)" v-has="'companyadmin:edit'">编辑</a>
|
||||
<a @click="resetPassword(record)" v-has="'companyadmin:resetPassword'">重置密码</a>
|
||||
<a @click="handleDelete(record.id)" v-has="'companyadmin:delete'">删除</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</div>
|
||||
<company-admin-module ref="modalForm" @ok="modalFormOk"></company-admin-module>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||
import CompanyAdminModule from '@views/businessManagement/modules/CompanyAdminModule'
|
||||
import IconImg from '@/assets/imgs/icon/icon_company_management.png'
|
||||
import {companyAdminEnable, companyAdminResetPassword} from '@api/api'
|
||||
|
||||
export default {
|
||||
name: 'CompanyAdmin',
|
||||
components: {CompanyAdminModule, PageHeaderTitle},
|
||||
mixins: [JeroListMixin],
|
||||
computed: {
|
||||
importExcelUrl: function () {
|
||||
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
IconImg,
|
||||
labelCol: {
|
||||
xs: {span: 24},
|
||||
sm: {span: 5}
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: {span: 24},
|
||||
sm: {span: 10}
|
||||
},
|
||||
url: {
|
||||
list: '/payManagerManagement/page',
|
||||
delete: '/payManagerManagement/delete',
|
||||
deleteBatch: '/payManagerManagement/deleteBatch',
|
||||
exportXlsUrl: '/payManagerManagement/exportXls',
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
}, {
|
||||
title: '企业名称',
|
||||
align: 'center',
|
||||
dataIndex: 'companyName',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '用户姓名',
|
||||
align: 'center',
|
||||
dataIndex: 'name',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '手机号',
|
||||
align: 'center',
|
||||
dataIndex: 'phone',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
dataIndex: 'status_dictText'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
align: 'center',
|
||||
scopedSlots: {customRender: 'action'}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 重置密码
|
||||
* */
|
||||
resetPassword(record) {
|
||||
const that = this
|
||||
this.$confirm({
|
||||
title: '确认重置密码',
|
||||
content: '是否重置该用户密码',
|
||||
onOk: function () {
|
||||
const param = {
|
||||
id: record.id
|
||||
}
|
||||
companyAdminResetPassword(param).then(res => {
|
||||
if (res.success) {
|
||||
that.$message.success(res.message)
|
||||
that.loadData()
|
||||
} else {
|
||||
that.$message.warning(res.message)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 启用禁用
|
||||
* */
|
||||
handleUse(record) {
|
||||
let status
|
||||
if (record.status === 1) {
|
||||
status = 2
|
||||
} else if (record.status === 2) {
|
||||
status = 1
|
||||
}
|
||||
const param = {
|
||||
ids: record.id,
|
||||
status
|
||||
}
|
||||
companyAdminEnable(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.loadData()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
.color-red {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
@@ -83,6 +83,16 @@
|
||||
</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="['linkBankNumber', validatorRules.linkBankNumber]"
|
||||
: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">
|
||||
@@ -178,7 +188,11 @@ export default {
|
||||
dutyCode: {
|
||||
rules: [{ required: true, validator: this.checkDutyCode }],
|
||||
validateTrigger: 'blur'
|
||||
}
|
||||
},
|
||||
linkBankNumber: {
|
||||
rules: [{ required: true, message: '请输入联行号' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
},
|
||||
url: {
|
||||
add: '/company/payCompanyManagement/add',
|
||||
@@ -201,7 +215,7 @@ export default {
|
||||
this.model = Object.assign({}, record)
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.model, 'companyName', 'companyAddress', 'companyPhone', 'postalCode', 'bankAccountName', 'openingBank', 'bankAccount', 'dutyCode', 'remarks'))
|
||||
this.form.setFieldsValue(pick(this.model, 'companyName', 'companyAddress', 'companyPhone', 'postalCode', 'bankAccountName', 'openingBank', 'bankAccount', 'dutyCode','linkBankNumber', 'remarks'))
|
||||
})
|
||||
},
|
||||
close() {
|
||||
|
||||
@@ -0,0 +1,230 @@
|
||||
<template>
|
||||
<j-modal
|
||||
:title="title"
|
||||
:width="width"
|
||||
:visible="visible"
|
||||
:confirmLoading="confirmLoading"
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
cancelText="关闭">
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<a-form :form="form">
|
||||
<a-row :gutter="24">
|
||||
<a-col :xl="24" :sm="24">
|
||||
<a-form-item label="公司名称" :labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol">
|
||||
<company-select placeholder="请选择公司" @change="changeCompany"
|
||||
v-decorator="['companyId',validatorRules.companyId]"></company-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :xl="24" :sm="24">
|
||||
<a-form-item label="用户姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入用户姓名"
|
||||
@change="event => event.target.value = event.target.value.trim()" :maxLength="50"
|
||||
v-decorator="['name',validatorRules.name]"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<!-- <a-row :gutter="24">-->
|
||||
<!-- <a-col :xl="24" :sm="24">-->
|
||||
<!-- <a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||
<!-- <a-input placeholder="请输入用户账号"-->
|
||||
<!-- @change="event => event.target.value = event.target.value.trim()" :maxLength="50"-->
|
||||
<!-- v-decorator="['username',validatorRules.username]"></a-input>-->
|
||||
<!-- </a-form-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- </a-row>-->
|
||||
<a-row :gutter="24">
|
||||
<a-col :xl="24" :sm="24">
|
||||
<a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入手机号"
|
||||
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"
|
||||
:maxLength="11"
|
||||
v-decorator="['phone',validatorRules.phone]"></a-input>
|
||||
</a-form-item>
|
||||
<span class="notice">更改手机号,需要重新登录企业端设置密码</span>
|
||||
</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 {getRSAPublicKey} from '@api/login'
|
||||
import {JSEncrypt} from 'jsencrypt'
|
||||
import {phoneReg} from '@/utils/validate'
|
||||
|
||||
export default {
|
||||
name: 'CompanyAdminModule',
|
||||
components:{
|
||||
CompanySelect,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: '操作',
|
||||
width: 800,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
form: this.$form.createForm(this),
|
||||
c:'',// 加密公钥
|
||||
model: {},
|
||||
selectedCompany:null,// 选择的公司
|
||||
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: {
|
||||
companyId: {
|
||||
rules: [{ required: true, message: '请选择公司' }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
name: {
|
||||
rules: [{ required: true, message: '请输入用户姓名' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
username: {
|
||||
rules: [{ required: true, message: '请输入用户账号' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
phone: {
|
||||
rules: [{ required: true, validator: this.validatePhone }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
},
|
||||
url: {
|
||||
add: '/payManagerManagement/add',
|
||||
edit: '/payManagerManagement/edit'
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
add() {
|
||||
this.edit({})
|
||||
},
|
||||
edit(record) {
|
||||
this.form.resetFields()
|
||||
this.getRSAPublicKeyFunc()
|
||||
this.model = Object.assign({}, record)
|
||||
// 回显企业
|
||||
this.model.companyId = {
|
||||
id:this.model.companyId,
|
||||
companyName:this.model.companyName
|
||||
}
|
||||
// 回显姓名
|
||||
this.selectedCompany = this.model.companyId
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.model,'username','phone','companyId','name'))
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 选择公司
|
||||
* */
|
||||
changeCompany(value){
|
||||
this.selectedCompany = value
|
||||
console.log(value,'选择公司')
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取公钥
|
||||
* */
|
||||
getRSAPublicKeyFunc() {
|
||||
getRSAPublicKey().then(res => {
|
||||
this.rsaPublicKey = res.result
|
||||
})
|
||||
},
|
||||
close() {
|
||||
this.$emit('close')
|
||||
this.visible = false
|
||||
this.selectedCompany = null
|
||||
},
|
||||
handleOk: function () {
|
||||
if (this.confirmLoading) {
|
||||
return
|
||||
}
|
||||
this.confirmLoading = true
|
||||
const that = this
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
let httpurl = ''
|
||||
let method = 'post'
|
||||
if (!this.model.id) {
|
||||
httpurl += this.url.add
|
||||
} else {
|
||||
httpurl += this.url.edit
|
||||
}
|
||||
const formData = Object.assign(this.model, values)
|
||||
formData.companyName = this.selectedCompany.companyName
|
||||
formData.companyId = this.selectedCompany.id
|
||||
let encrypt = new JSEncrypt()
|
||||
encrypt.setPublicKey(this.rsaPublicKey)
|
||||
formData.phone = encrypt.encrypt(values.phone)
|
||||
formData.rsaPublicKey = this.rsaPublicKey
|
||||
httpAction(httpurl, formData, method).then((res) => {
|
||||
if (res.success) {
|
||||
that.$message.success(res.message)
|
||||
that.$emit('ok', res.result)
|
||||
that.close()
|
||||
} else {
|
||||
that.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
})
|
||||
} else {
|
||||
this.confirmLoading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
},
|
||||
/**
|
||||
* 手机号校验
|
||||
* */
|
||||
validatePhone(rule,value,callback){
|
||||
if(!value){
|
||||
callback(new Error('请输入手机号'))
|
||||
}
|
||||
|
||||
if(value && phoneReg(value)) {
|
||||
callback()
|
||||
}else {
|
||||
callback(new Error('手机号格式不正确'))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.notice {
|
||||
position: absolute;
|
||||
color:red;
|
||||
left: 26%;
|
||||
bottom: -17%;
|
||||
}
|
||||
</style>
|
||||
@@ -9,6 +9,9 @@
|
||||
@cancel="handleCancel"
|
||||
cancelText="关闭">
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<span class="prompt-message">
|
||||
说明:1.负责人A为该分标委的主负责人,负责人B为该分标委的辅助负责人。
|
||||
</span>
|
||||
<a-form :form="form">
|
||||
<a-row :gutter="10">
|
||||
<a-col :xl="12" :sm="24">
|
||||
@@ -31,6 +34,22 @@
|
||||
</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>
|
||||
<a-form-item label="目标简述" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||
@@ -50,10 +69,13 @@
|
||||
|
||||
<script>
|
||||
import pick from 'lodash.pick'
|
||||
import SelectPrincipal from '@comp/company/SelectPrincipal'
|
||||
import { httpAction } from '@api/manage'
|
||||
import {isRepeat} from '../../../../utils/util'
|
||||
|
||||
export default {
|
||||
name: 'CommitteeModule',
|
||||
components: { SelectPrincipal },
|
||||
data() {
|
||||
return {
|
||||
title: '操作',
|
||||
@@ -87,6 +109,14 @@ export default {
|
||||
rules: [{ required: true, message: '请输入分标委简称' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
principalIdA: {
|
||||
rules: [{ required: true, validator: this.validatePrincipal }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
principalIdB: {
|
||||
rules: [{ required: false, validator: this.validatePrincipal }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
remarks: {
|
||||
rules: [{ required: true, message: '请输入目标简述' }],
|
||||
validateTrigger: 'blur'
|
||||
@@ -107,13 +137,38 @@ export default {
|
||||
this.model = Object.assign({}, record)
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.model, 'name', 'abbreviation', 'remarks'))
|
||||
this.form.setFieldsValue(pick(this.model, 'name', 'abbreviation', 'remarks', 'principalIdA', 'principalIdB'))
|
||||
})
|
||||
},
|
||||
close() {
|
||||
this.$emit('close')
|
||||
this.visible = false
|
||||
},
|
||||
/**
|
||||
* 校验负责人是否重复
|
||||
* @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()
|
||||
},
|
||||
handleOk() {
|
||||
if (this.confirmLoading) {
|
||||
return
|
||||
@@ -175,4 +230,12 @@ export default {
|
||||
padding: 0 10px 0 5px;
|
||||
}
|
||||
}
|
||||
.prompt-message {
|
||||
float: left;
|
||||
color: red;
|
||||
margin-bottom: 10px;
|
||||
&-line2 {
|
||||
padding-left: 2.7rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -60,6 +60,12 @@
|
||||
<j-dict-select-tag v-model="queryParam.paidInvoicStatus" placeholder="请选择来款开票状态"
|
||||
dictCode="paid_invoic_status"/>
|
||||
</a-form-item>
|
||||
</a-col>>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="确认收入状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-dict-select-tag v-model="queryParam.affirmIncome" placeholder="请选择确认收入状态"
|
||||
dictCode="affirmi_ncome"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<span class="table-page-search-submitButtons">
|
||||
@@ -221,6 +227,7 @@ import AuditProofModule from './modules/AuditProofModule'
|
||||
import AuditModal from '@views/incomePayments/meetManage/modules/AuditModal'
|
||||
import ConfirmStageModule from './modules/ConfirmStageModule'
|
||||
import {getPayConfirmList} from '../../../api/incomePaymentsApi'
|
||||
import JDictSelectTag from "@comp/dict/JDictSelectTag";
|
||||
|
||||
// 项目类型 数据字典 的定义 和数据库的保持一致
|
||||
const ProjectTypeEnums = {
|
||||
@@ -238,6 +245,7 @@ export default {
|
||||
components: {
|
||||
PageHeaderTitle,
|
||||
JYearDate,
|
||||
JDictSelectTag,
|
||||
StatusSlot,
|
||||
ArriveStageModule,
|
||||
InvoicingStageModule,
|
||||
|
||||
@@ -17,9 +17,25 @@
|
||||
<a-form :form="form">
|
||||
<h3 class="title">凭证信息</h3>
|
||||
<div class="basic-info-div">
|
||||
<a-form-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<div>{{ proofInfo.amountReceived }}元</div>
|
||||
</a-form-item>
|
||||
<!--标协会员项目的缴费 显示-->
|
||||
<template v-if="model.projectType === 5 || model.projectType === 6 ">
|
||||
<a-form-item label="会员缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<div>{{ proofInfo.memberPaymentAmount || ''}}<span v-if="!!proofInfo.memberPaymentAmount">元</span></div>
|
||||
</a-form-item>
|
||||
<a-form-item label="证书缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<div>{{ proofInfo.certificatePaymentAmount || '' }}<span v-if="!!proofInfo.certificatePaymentAmount">元</span></div>
|
||||
</a-form-item>
|
||||
<a-form-item label="其他缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<div>{{ proofInfo.otherPaymentAmount || ''}}<span v-if="!!proofInfo.otherPaymentAmount">元</span></div>
|
||||
</a-form-item>
|
||||
</template>
|
||||
<!--其他项目的显示 -->
|
||||
<template v-else>
|
||||
<a-form-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<div>{{ proofInfo.amountReceived }}元</div>
|
||||
</a-form-item>
|
||||
</template>
|
||||
|
||||
|
||||
<a-form-item label="缴费日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<div>{{ proofInfo.paymentDate }}</div>
|
||||
@@ -27,23 +43,24 @@
|
||||
<a-form-item label="申请人" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<div>{{ proofInfo.applicantName }}</div>
|
||||
</a-form-item>
|
||||
<!-- <div class="info-item">-->
|
||||
<!-- <label>缴费金额:</label>-->
|
||||
<!-- <div>{{ proofInfo.amountReceived }}元</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="info-item">-->
|
||||
<!-- <label>缴费日期:</label>-->
|
||||
<!-- <div>{{ proofInfo.paymentDate }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="info-item">-->
|
||||
<!-- <label>申请人:</label>-->
|
||||
<!-- <div>{{ proofInfo.applicantName }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="info-item">-->
|
||||
<!-- <label>缴费金额:</label>-->
|
||||
<!-- <div>{{ proofInfo.amountReceived }}元</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="info-item">-->
|
||||
<!-- <label>缴费日期:</label>-->
|
||||
<!-- <div>{{ proofInfo.paymentDate }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="info-item">-->
|
||||
<!-- <label>申请人:</label>-->
|
||||
<!-- <div>{{ proofInfo.applicantName }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- 标协会员、证书的缴费凭证类型根据paymentMethod字段决定:1--图片;2--pdf;3--没有凭证 -->
|
||||
<!-- proofType处理过的缴费凭证类型:img--图片;pdf--pdf;none--无缴费凭证 -->
|
||||
<!-- <div class="info-item">-->
|
||||
<a-form-item class="proof-form-item" :label="proofType==='pdf' ? '打包协议' : '缴费凭证'" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<!-- <label>{{proofType==='pdf' ? '打包协议' : '缴费凭证'}}:</label>-->
|
||||
<!-- <div class="info-item">-->
|
||||
<a-form-item class="proof-form-item" :label="proofType==='pdf' ? '打包协议' : '缴费凭证'" :labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol">
|
||||
<!-- <label>{{proofType==='pdf' ? '打包协议' : '缴费凭证'}}:</label>-->
|
||||
<div class="proof-img" v-if="proofType === 'img'">
|
||||
<template v-if="proofInfo.proof && proofInfo.proof !== ''">
|
||||
<div class="proof-img-item" v-for="(item, index) in proofInfo.proof.split(',')" :key="index">
|
||||
@@ -56,7 +73,7 @@
|
||||
</div>
|
||||
<span v-if="proofType==='none'">无</span>
|
||||
</a-form-item>
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<a-form-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-textarea
|
||||
placeholder="请输入备注"
|
||||
@@ -67,7 +84,8 @@
|
||||
</a-form-item>
|
||||
</div>
|
||||
<!-- 当前的缴费凭证是否是标协会员、证书缴费 时展示 付款信息,用户财务人员核实 -->
|
||||
<template v-if="model.projectType && (model.projectType.toString() === '5' || model.projectType.toString() === '6')">
|
||||
<template
|
||||
v-if="model.projectType && (model.projectType.toString() === '5' || model.projectType.toString() === '6')">
|
||||
<h3 class="title">付款信息</h3>
|
||||
<div class="pay-info-div">
|
||||
<a-row>
|
||||
@@ -79,18 +97,18 @@
|
||||
v-decorator="['invoiceRequirements',{ rules: validatorRules.invoiceRequirements.rules, initialValue:proofInfo.invoiceRequirements, validateTrigger: 'change'},]"
|
||||
:trigger-change="true"
|
||||
dictCode="invoice_type"
|
||||
placeholder="请选择发票" />
|
||||
placeholder="请选择发票"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row v-if="currentSelectInvoiceType">
|
||||
<a-col :span="12">
|
||||
<a-form-item label="关联付款发票名称" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
|
||||
<a-form-item label="付款单位发票抬头" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
|
||||
<a-input
|
||||
v-decorator="['headerName',{ rules: validatorRules.headerName.rules, validateTrigger: 'blur',initialValue:proofInfo.headerName}]"
|
||||
:trigger-change="true"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
placeholder="请输入关联付款发票名称"
|
||||
placeholder="请输入付款单位发票抬头"
|
||||
:maxLength="50"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -145,6 +163,15 @@
|
||||
:maxLength="50"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item label="联行号" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
|
||||
<a-input
|
||||
@change="(e) => {e.target.value = e.target.value.trim()}"
|
||||
v-decorator="['linkBankNumber',{ rules: validatorRules.linkBankNumber.rules, validateTrigger: 'blur', initialValue:proofInfo.linkBankNumber}]"
|
||||
placeholder="请输入联行号"
|
||||
:maxLength="50"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</template>
|
||||
</div>
|
||||
@@ -182,10 +209,16 @@
|
||||
|
||||
<script>
|
||||
import pick from 'lodash.pick'
|
||||
import { postAction } from '../../../../api/manage'
|
||||
import {postAction} from '../../../../api/manage'
|
||||
import Vue from 'vue'
|
||||
import { USER_INFO } from '../../../../store/mutation-types'
|
||||
import { getLastProofInfo, getStanderMemberLastProofInfo, getCertificateLastProofInfo, incomingUpdatePayment, incomingUpdateCertificate } from '../../../../api/incomePaymentsApi'
|
||||
import {USER_INFO} from '../../../../store/mutation-types'
|
||||
import {
|
||||
getLastProofInfo,
|
||||
getStanderMemberLastProofInfo,
|
||||
getCertificateLastProofInfo,
|
||||
incomingUpdatePayment,
|
||||
incomingUpdateCertificate
|
||||
} from '../../../../api/incomePaymentsApi'
|
||||
import PreviewFile from '../../../../components/jero/PreviewFile.vue'
|
||||
import PreviewImgModal from '@/components/PreviewImgModal'
|
||||
|
||||
@@ -207,7 +240,7 @@ const wrapperPayCol = {
|
||||
|
||||
export default {
|
||||
name: 'AuditProofModule',
|
||||
components: { PreviewFile, PreviewImgModal },
|
||||
components: {PreviewFile, PreviewImgModal},
|
||||
data() {
|
||||
return {
|
||||
title: '来款信息',
|
||||
@@ -219,24 +252,24 @@ export default {
|
||||
labelCol,
|
||||
wrapperCol,
|
||||
labelPayCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 8 }
|
||||
xs: {span: 24},
|
||||
sm: {span: 8}
|
||||
},
|
||||
wrapperPayCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 16 }
|
||||
xs: {span: 24},
|
||||
sm: {span: 16}
|
||||
},
|
||||
validatorRules: {
|
||||
reviewerName: {
|
||||
rules: [{ required: true, message: '请输入审核人' }],
|
||||
rules: [{required: true, message: '请输入审核人'}],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
paymentStatus: {
|
||||
rules: [{ required: true, message: '请选择审核状态' }],
|
||||
rules: [{required: true, message: '请选择审核状态'}],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
reviewInstructions: {
|
||||
rules: [{ required: true, message: '请输入说明' }],
|
||||
rules: [{required: true, message: '请输入说明'}],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
invoiceRequirements: {
|
||||
@@ -247,14 +280,14 @@ export default {
|
||||
// 会员发票信息的回显
|
||||
headerName: {
|
||||
rules: [
|
||||
{ required: true, message: '请输入付款单位发票抬头', validateTrigger: 'blur' },
|
||||
{ min: 1, max: 50, message: '长度不超过50个字符' }
|
||||
{required: true, message: '请输入付款单位发票抬头', validateTrigger: 'blur'},
|
||||
{min: 1, max: 50, message: '长度不超过50个字符'}
|
||||
],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
taxNumber: {
|
||||
rules: [
|
||||
{ required: true, message: '请输入社会统一代码/税号', validateTrigger: 'blur' },
|
||||
{required: true, message: '请输入社会统一代码/税号', validateTrigger: 'blur'},
|
||||
{
|
||||
pattern: /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/,
|
||||
message: '请输入15位、18位的社会统一代码/税号'
|
||||
@@ -263,10 +296,12 @@ export default {
|
||||
validateTrigger: 'blur'
|
||||
|
||||
},
|
||||
invoiceAddress: { rules: [{ required: true, message: '请输入单位地址' }], validateTrigger: 'blur' },
|
||||
invoicePhone: { rules: [{ required: true, validator: this.handleInvoicePhoneCheck }], validateTrigger: 'blur' },
|
||||
depositBank: { rules: [{ required: true, message: '请输入开户银行' }], validateTrigger: 'blur' },
|
||||
bankAccount: { rules: [{ required: true, message: '请输入银行账户' }], validateTrigger: 'blur' }
|
||||
invoiceAddress: {rules: [{required: true, message: '请输入单位地址'}], validateTrigger: 'blur'},
|
||||
invoicePhone: {rules: [{required: true, validator: this.handleInvoicePhoneCheck}], validateTrigger: 'blur'},
|
||||
depositBank: {rules: [{required: true, message: '请输入开户银行'}], validateTrigger: 'blur'},
|
||||
bankAccount: {rules: [{required: true, message: '请输入银行账户'}], validateTrigger: 'blur'},
|
||||
linkBankNumber: {rules: [{required: false, message: '请输入联行号'}], validateTrigger: 'blur'}
|
||||
|
||||
},
|
||||
// 项目缴费凭证信息
|
||||
proofInfo: {},
|
||||
@@ -282,19 +317,19 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async open(record) {
|
||||
if(record.projectType.toString() === '5' || record.projectType.toString() === '6') {
|
||||
// 会员缴费、证书缴费 模态框调整宽度
|
||||
this.width = 1000
|
||||
this.labelCol = labelPayCol
|
||||
this.wrapperCol = wrapperPayCol
|
||||
} else {
|
||||
this.labelCol = labelCol
|
||||
this.wrapperCol = wrapperCol
|
||||
this.width = 600
|
||||
}
|
||||
async open(record) {
|
||||
if (record.projectType.toString() === '5' || record.projectType.toString() === '6') {
|
||||
// 会员缴费、证书缴费 模态框调整宽度
|
||||
this.width = 1000
|
||||
this.labelCol = labelPayCol
|
||||
this.wrapperCol = wrapperPayCol
|
||||
} else {
|
||||
this.labelCol = labelCol
|
||||
this.wrapperCol = wrapperCol
|
||||
this.width = 600
|
||||
}
|
||||
let flag = await this.getProofInfo(record)
|
||||
if(!flag){
|
||||
if (!flag) {
|
||||
this.$message.warn('项目已审核')
|
||||
return
|
||||
}
|
||||
@@ -314,7 +349,7 @@ export default {
|
||||
* @param record
|
||||
*/
|
||||
getProofType(record) {
|
||||
if (record.projectType && (record.projectType.toString() === '5' || record.projectType.toString() === '6')) {
|
||||
if (record.projectType && (record.projectType.toString() === '5' || record.projectType.toString() === '6')) {
|
||||
if (this.proofInfo.paymentMethod.toString() === '1') {
|
||||
this.proofType = 'img'
|
||||
return
|
||||
@@ -349,7 +384,7 @@ export default {
|
||||
} else {
|
||||
httpMethod = getLastProofInfo
|
||||
}
|
||||
return new Promise(resolve => {
|
||||
return new Promise(resolve => {
|
||||
httpMethod(param).then(res => {
|
||||
if (res.success && res.result !== '无数据') {
|
||||
this.proofInfo = res.result || {}
|
||||
@@ -360,7 +395,7 @@ export default {
|
||||
this.proofInfo.paymentDate = res.result.submissionTime
|
||||
this.proofInfo.applicantName = res.result.liaisonMan
|
||||
this.currentSelectInvoiceType = Number(res.result.invoiceRequirements)
|
||||
if(this.currentSelectInvoiceType) {
|
||||
if (this.currentSelectInvoiceType) {
|
||||
this.invoiceRequirementsFlag = false
|
||||
} else {
|
||||
this.invoiceRequirementsFlag = true
|
||||
@@ -371,7 +406,7 @@ export default {
|
||||
}
|
||||
this.getProofType(record)
|
||||
resolve(true)
|
||||
}else{
|
||||
} else {
|
||||
resolve(false)
|
||||
}
|
||||
})
|
||||
@@ -384,7 +419,7 @@ export default {
|
||||
let request = projectType === 5 && incomingUpdatePayment || incomingUpdateCertificate
|
||||
let isSuccess = false
|
||||
request(params).then(res => {
|
||||
if(res.success) {
|
||||
if (res.success) {
|
||||
isSuccess = true
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
@@ -410,9 +445,9 @@ export default {
|
||||
const formData = Object.assign(this.proofInfo, values)
|
||||
console.log(formData)
|
||||
// 标协会员缴费、证书缴费 需要先调用 编辑的接口,编辑成功后在调用审核的接口
|
||||
if(this.proofInfo.projectType + '' === '5' || this.proofInfo.projectType + '' === '6') {
|
||||
if (this.proofInfo.projectType + '' === '5' || this.proofInfo.projectType + '' === '6') {
|
||||
let updateResult = await this.updateMemberPaymentInfo(formData, Number(this.proofInfo.projectType))
|
||||
if(!updateResult) {
|
||||
if (!updateResult) {
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = false
|
||||
}, 1000)
|
||||
@@ -458,7 +493,7 @@ export default {
|
||||
* 缴费凭证 src
|
||||
*/
|
||||
proofSrc(imgId) {
|
||||
return `${ window._CONFIG['domianURL'] }/sys/common/download/${ imgId }`
|
||||
return `${window._CONFIG['domianURL']}/sys/common/download/${imgId}`
|
||||
},
|
||||
/**
|
||||
* 预览缴费凭证
|
||||
@@ -538,13 +573,15 @@ h3.title::before {
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
// 将缴费凭证的图片部分提出
|
||||
.proof-img {
|
||||
display: flex;
|
||||
width:calc(100% - 4rem);
|
||||
width: calc(100% - 4rem);
|
||||
|
||||
&-item {
|
||||
width: 50%;
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
max-height: 150px;
|
||||
@@ -552,9 +589,10 @@ h3.title::before {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 修改缴费基础信息的样式
|
||||
.basic-info-div{
|
||||
/deep/.ant-form-item:not(.proof-form-item){
|
||||
.basic-info-div {
|
||||
/deep/ .ant-form-item:not(.proof-form-item) {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,9 +46,12 @@
|
||||
<!-- 编辑的时候按照不同的类型显示不同的数据: 标准宣贯、学习培训一起显示; 信息交流会单独显示 -->
|
||||
<j-dict-select-tag
|
||||
ref="standardMeetingType"
|
||||
v-decorator="['tbMeetingType',validatorRules.tbMeetingType]" :trigger-change="true"
|
||||
style="width: 100%" dict-code="standard_meeting_type"
|
||||
v-decorator="['tbMeetingType',validatorRules.tbMeetingType]"
|
||||
:trigger-change="true"
|
||||
style="width: 100%"
|
||||
dict-code="standard_meeting_type"
|
||||
placeholder="请选择标协会议类型"
|
||||
@change="tbMeetingTypeChange"
|
||||
></j-dict-select-tag>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -96,19 +99,19 @@
|
||||
<a-row>
|
||||
<a-col :xxl='8' :xl="12" :sm="24">
|
||||
<a-form-item label="召开地点" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-area-linkage
|
||||
type="cascader"
|
||||
placeholder="请选择省市"
|
||||
:has-error="hasError"
|
||||
@change="changeConvoke"
|
||||
v-decorator="['convokeLocale',validatorRules.convokeLocale]"
|
||||
></j-area-linkage>
|
||||
<!-- <j-area-linkage-->
|
||||
<!-- type="cascader"-->
|
||||
<!-- placeholder="请选择省市"-->
|
||||
<!-- :has-error="hasError"-->
|
||||
<!-- @change="changeConvoke"-->
|
||||
<!-- v-decorator="['convokeLocale',validatorRules.convokeLocale]"-->
|
||||
<!-- ></j-area-linkage>-->
|
||||
<a-input placeholder="请输入召开地点/腾讯会议" v-decorator="['venue',validatorRules.venue]"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xxl='8' :xl="12" :sm="24">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入详细地址"
|
||||
class="address"
|
||||
<a-input placeholder="请输入详细地址/腾讯会议号"
|
||||
v-decorator="['address',validatorRules.address]"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:maxLength='50'
|
||||
@@ -139,7 +142,73 @@
|
||||
</a-row>
|
||||
|
||||
<!--会议信息end-->
|
||||
|
||||
<!-- 会议问题征集--只有标协会议存在 -->
|
||||
<section v-if="meetingType === '2' && (tbMeetingType === 1 || tbMeetingType === 2)" >
|
||||
<!-- 选择是否需要问题征集-->
|
||||
<a-row :gutter="24">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<a-form-item label="问题征集" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-radio-group v-decorator="['isAddQuestion',validatorRules.isAddQuestion]"
|
||||
@change="changeIsAddQuestion">
|
||||
<a-radio :value="1">需要</a-radio>
|
||||
<a-radio :value="0">不需要</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="isAddQuestion">
|
||||
<a-form-item label="征集截止时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-date
|
||||
placeholder="请选择征集截止时间"
|
||||
style="width: 100%;"
|
||||
v-decorator="['endTimeAddQuestion',validatorRules.endTimeAddQuestion]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM-DD HH:mm:00"
|
||||
:show-time="true"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<div class="item-title" v-if="isAddQuestion" >问题征集列表</div>
|
||||
<!-- 问题征集的详细信息-->
|
||||
<section v-if="isAddQuestion">
|
||||
<a-row :gutter="24" v-for="(question, index) in model.questionList" :key="index">
|
||||
<!-- 存儲初始化的id-->
|
||||
<a-col v-show="false">
|
||||
<a-form-item :label="'标准号id ' + (index + 1) " :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:maxLength="50"
|
||||
v-decorator="['questionList['+index+'].id']"
|
||||
placeholder="请输入标准号id"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xxl="8" :xl="10" :sm="24">
|
||||
<a-form-item :label="'标准号 ' + (index + 1) " :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:maxLength="50"
|
||||
v-decorator="['questionList['+index+'].standardNumber', validatorRules.standardNumber]"
|
||||
placeholder="请输入标准号"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xxl="8" :xl="10" :sm="24">
|
||||
<a-form-item label="标准名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:maxLength="11"
|
||||
v-decorator="['questionList['+index+'].standardName',validateInviteCode.standardName]"
|
||||
placeholder="请输入标准名称"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xxl="8" :xl="4" :sm="24">
|
||||
<a-form-item>
|
||||
<a-button icon="plus" @click="addQuestionNew"></a-button>
|
||||
<a-button icon="minus" @click="removeQuestion(index)" style="margin-left: 8px;"></a-button>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!--邀请码begin-->
|
||||
<!-- 国际研讨会出现-->
|
||||
@@ -390,7 +459,7 @@ import JYearDate from '@comp/jero/JYearDate'
|
||||
import JUpload from '@comp/jero/JUpload'
|
||||
import JDate from '@comp/jero/JDate'
|
||||
import SelectPrincipal from '@comp/company/SelectPrincipal'
|
||||
import JAreaLinkage from '@comp/jero/JAreaLinkagePca'
|
||||
// import JAreaLinkage from '@comp/jero/JAreaLinkagePca'
|
||||
import AreaPca from '@comp/_util/AreaPca'
|
||||
import moment from 'moment'
|
||||
import pick from 'lodash.pick'
|
||||
@@ -410,7 +479,7 @@ export default {
|
||||
JUpload,
|
||||
JDate,
|
||||
SelectPrincipal,
|
||||
JAreaLinkage,
|
||||
// JAreaLinkage,
|
||||
PageHeaderTitle,
|
||||
JImageUpload
|
||||
},
|
||||
@@ -508,7 +577,11 @@ export default {
|
||||
// 召开地点border颜色控制
|
||||
hasError: false,
|
||||
// 会议类型
|
||||
meetingType: ''
|
||||
meetingType: '',
|
||||
// 是否需要 问题征集
|
||||
isAddQuestion: 0,
|
||||
// 标协会议类型
|
||||
tbMeetingType: undefined,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -593,6 +666,14 @@ export default {
|
||||
meetingContactsPhone: undefined
|
||||
}]
|
||||
}
|
||||
if((this.model.questionList || []).length === 0) {
|
||||
// 问题征集列表
|
||||
this.model.questionList = [{
|
||||
standardNumber: undefined,
|
||||
standardName: undefined
|
||||
}]
|
||||
}
|
||||
this.model.isAddQuestion = this.model.isAddQuestion || 0 // 处理历史数据的问题
|
||||
} else {
|
||||
this.title = '新增会议'
|
||||
// 所有的会议都显示酒店联系人
|
||||
@@ -605,10 +686,16 @@ export default {
|
||||
meetingContactsId: undefined,
|
||||
meetingContactsPhone: ''
|
||||
}]
|
||||
// 问题征集列表
|
||||
this.model.questionList = [{
|
||||
standardNumber: undefined,
|
||||
standardName: undefined
|
||||
}]
|
||||
// 新增取路由参数
|
||||
this.meetingType = this.$route.query.meetingType
|
||||
// 新增根据路由参数 会议类型更换不同的接口
|
||||
this.url = this.createUrlByMeetingType(this.meetingType)
|
||||
this.model.isAddQuestion = 0 // 默认不需要问题征集
|
||||
}
|
||||
console.log(this.model)
|
||||
// 召开时间回显
|
||||
@@ -627,12 +714,12 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
// 加定时器是因为有可能赋值不成功
|
||||
setTimeout(() => {
|
||||
this.form.setFieldsValue(pick(this.model, 'notice', 'hotelContactsList', 'hotelName', 'hotelAddress', 'paymentQrCode', 'meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone','meetingContactsList')), 200
|
||||
this.form.setFieldsValue(pick(this.model,'venue', 'notice', 'hotelContactsList', 'hotelName', 'hotelAddress', 'paymentQrCode', 'meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone','meetingContactsList')), 200
|
||||
})
|
||||
// 如果是标协会议则回显 标协会议的字段
|
||||
if (this.meetingType === '2') {
|
||||
console.log('this.model', this.model)
|
||||
this.form.setFieldsValue(pick(this.model, 'signInTime', 'tbMeetingType', 'meetingCostsVip'))
|
||||
let otherKeys = []
|
||||
// 编辑情况下 判断类型改变“标协会议类型”选择框的下拉框数
|
||||
if (this.model.id) {
|
||||
let arr = this.$refs.standardMeetingType.getCurrentDictOptions()
|
||||
@@ -640,10 +727,19 @@ export default {
|
||||
// 信息交流会议
|
||||
this.$refs.standardMeetingType.setCurrentDictOptions(arr.splice(2, 1))
|
||||
}else {
|
||||
this.model.isAddQuestion = Number(this.model.isAddQuestion)
|
||||
this.isAddQuestion = this.model.isAddQuestion
|
||||
if(this.model.isAddQuestion) {
|
||||
otherKeys = ['endTimeAddQuestion', 'questionList']
|
||||
}
|
||||
this.tbMeetingType = Number(this.model.tbMeetingType)
|
||||
// 标准宣贯或者学习培训
|
||||
this.$refs.standardMeetingType.setCurrentDictOptions(arr.splice(0, 2))
|
||||
}
|
||||
}
|
||||
setTimeout(() => {
|
||||
this.form.setFieldsValue(pick(this.model, 'signInTime', 'tbMeetingType', 'meetingCostsVip', 'isAddQuestion', ...otherKeys))
|
||||
})
|
||||
}
|
||||
// 如果是工作组会议 赋值工作组
|
||||
if (this.meetingType === '1') {
|
||||
@@ -663,6 +759,7 @@ export default {
|
||||
handleOk() {
|
||||
const that = this
|
||||
this.form.validateFields((err, values) => {
|
||||
console.log(values)
|
||||
// 这是设置召开时间不选择的边框颜色为红色
|
||||
if (err && Object.prototype.hasOwnProperty.call(err, 'convokeLocale')) {
|
||||
this.hasError = true
|
||||
@@ -676,8 +773,13 @@ export default {
|
||||
} else {
|
||||
httpurl = this.url.add
|
||||
}
|
||||
let placeName = values.convokeLocale
|
||||
const formData = Object.assign(this.model, values, {venue: this.getPcaText(placeName)})
|
||||
// 判断问题征集的列表 如果没有则增加key
|
||||
if(!values.questionList) {
|
||||
values.questionList = null
|
||||
}
|
||||
// let placeName = values.convokeLocale
|
||||
//{venue: this.getPcaText(placeName)}
|
||||
const formData = Object.assign(this.model, values)
|
||||
// 如果会议的费用为0 不能上传缴费凭证
|
||||
if (values.meetingCosts === '0.00') {
|
||||
delete formData.paymentQrCode
|
||||
@@ -713,6 +815,8 @@ export default {
|
||||
formData.startSignInTime = this.newSignInTime[0]
|
||||
formData.endSignInTime = this.newSignInTime[1]
|
||||
}
|
||||
formData.convokeLocale = '10001'
|
||||
|
||||
console.log('表单提交数据', formData)
|
||||
httpAction(httpurl, formData, method).then((res) => {
|
||||
if (res.success) {
|
||||
@@ -766,6 +870,19 @@ export default {
|
||||
}
|
||||
},
|
||||
/*
|
||||
* 监听标协会议类型变化
|
||||
* */
|
||||
tbMeetingTypeChange(val) {
|
||||
this.tbMeetingType = Number(val)
|
||||
// 标准宣贯、学习培训 有问题征集功能
|
||||
if (this.tbMeetingType === 1 || this.tbMeetingType === 2) {
|
||||
this.isAddQuestion = 0
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue({ isAddQuestion: this.isAddQuestion })
|
||||
})
|
||||
}
|
||||
},
|
||||
/*
|
||||
* 会议负责人
|
||||
* */
|
||||
selectPerson(val) {
|
||||
@@ -915,6 +1032,51 @@ export default {
|
||||
}
|
||||
},
|
||||
/*
|
||||
* 添加问题征集信息
|
||||
* */
|
||||
addQuestionNew(index) {
|
||||
if (this.model.questionList.length >= 20) {
|
||||
this.$message.warning('最多添加20个问题')
|
||||
return
|
||||
}
|
||||
const {form} = this
|
||||
const obj = {
|
||||
standardNumber: undefined,
|
||||
standardName: undefined
|
||||
}
|
||||
const keys = form.getFieldValue('questionList')
|
||||
// 增加数据后重新赋值
|
||||
this.model.questionList.splice(index + 1, 0, obj)
|
||||
// keys.splice(index , 0, obj)
|
||||
this.$nextTick(() => {
|
||||
form.setFieldsValue({
|
||||
questionList: keys
|
||||
})
|
||||
})
|
||||
},
|
||||
/*
|
||||
* 删减问题征集信息
|
||||
* */
|
||||
removeQuestion(k) {
|
||||
// 如果长度是1的话则不进行删除操作
|
||||
if (this.model.questionList.length === 1) {
|
||||
return
|
||||
}
|
||||
const {form} = this
|
||||
// // can use data-binding to get
|
||||
const questionList = form.getFieldValue('questionList')
|
||||
// 把循环的dom元素删除
|
||||
this.model.questionList.splice(k, 1)
|
||||
// 把绑定在dom里面的值删除
|
||||
questionList.splice(k, 1)
|
||||
this.$nextTick(() => {
|
||||
// 重新赋值
|
||||
form.setFieldsValue({
|
||||
questionList
|
||||
})
|
||||
})
|
||||
},
|
||||
/*
|
||||
* 召开地点吗转换
|
||||
* */
|
||||
getPcaText(code) {
|
||||
@@ -932,6 +1094,10 @@ export default {
|
||||
changeSignTime(date, dateString) {
|
||||
this.newSignInTime = dateString
|
||||
},
|
||||
// 是否需要问题征集 单选框改变事件
|
||||
changeIsAddQuestion(e) {
|
||||
this.isAddQuestion = e.target.value
|
||||
},
|
||||
/*
|
||||
* 根据会议类型返回不同的会议新增与编辑接口
|
||||
* */
|
||||
|
||||
@@ -47,6 +47,21 @@
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<label>预计参加人数:</label><span>{{ currentMeetingInfo.estimatedNumber }}</span>
|
||||
</a-col>
|
||||
<!-- 标协会议:标准宣贯、学习培训是有 问题征集相关操作 和信息的-->
|
||||
<template v-if="currentMeetingInfo.meetingType === '2' && (currentMeetingInfo.tbMeetingType === '1' || currentMeetingInfo.tbMeetingType === '2')">
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<label>问题征集:</label><span>{{ currentMeetingInfo.isAddQuestion === '1' ? '需要' : '不需要' }}</span>
|
||||
</a-col>
|
||||
<a-col :xxl="8" :xl="12" :sm="24" v-if="currentMeetingInfo.isAddQuestion === '1'">
|
||||
<label>征集截止时间:</label><span>{{ currentMeetingInfo.endTimeAddQuestion }}</span>
|
||||
</a-col>
|
||||
<a-row class="flex-col mul-row-row" v-if="currentMeetingInfo.isAddQuestion === '1'">
|
||||
<label class="label">标准号及标准名称:</label>
|
||||
<span class="mul-row-content">
|
||||
<span class="content" v-for="(item,index) of currentMeetingInfo.questionList" :key="index">{{item.standardNumber + ' ( ' + item.standardName + ' ) '}}</span>
|
||||
</span>
|
||||
</a-row>
|
||||
</template>
|
||||
<a-col :xxl="8" :xl="12" :sm="24">
|
||||
<label>酒店名称:</label><span>{{ currentMeetingInfo.hotelName }}</span>
|
||||
</a-col>
|
||||
@@ -965,6 +980,7 @@ export default {
|
||||
display: block;
|
||||
.content{
|
||||
display: block;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,98 +1,128 @@
|
||||
export default {
|
||||
meetingType: {
|
||||
rules: [
|
||||
{ required: true, message: '请选择会议类型' },
|
||||
{required: true, message: '请选择会议类型'},
|
||||
],
|
||||
validateTrigger:['blur','change']
|
||||
validateTrigger: ['blur', 'change']
|
||||
},
|
||||
convokeTime: {
|
||||
rules: [
|
||||
{ required: true, message: '请选择召开时间' },
|
||||
{required: true, message: '请选择召开时间'},
|
||||
],
|
||||
validateTrigger:['change']
|
||||
validateTrigger: ['change']
|
||||
},
|
||||
meetingFiles:{
|
||||
meetingFiles: {
|
||||
rules: [
|
||||
{ required: false, message: '请上传会议通知' },
|
||||
{required: false, message: '请上传会议通知'},
|
||||
],
|
||||
validateTrigger:['change']
|
||||
validateTrigger: ['change']
|
||||
},
|
||||
meetingContent:{
|
||||
meetingContent: {
|
||||
rules: [
|
||||
{ required: true, message: '请输入会议内容' },
|
||||
{required: true, message: '请输入会议内容'},
|
||||
],
|
||||
validateTrigger:['blur']
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
meetingContactsList:{
|
||||
meetingContactsList: {
|
||||
rules: [
|
||||
{ required: true, message: '请选择会议联系人' },
|
||||
{required: true, message: '请选择会议联系人'},
|
||||
],
|
||||
validateTrigger:['change']
|
||||
validateTrigger: ['change']
|
||||
},
|
||||
registerDeadline:{
|
||||
registerDeadline: {
|
||||
rules: [
|
||||
{ required: true, message: '请选择报名截止时间' },
|
||||
{required: true, message: '请选择报名截止时间'},
|
||||
],
|
||||
validateTrigger:['blur','change']
|
||||
validateTrigger: ['blur', 'change']
|
||||
},
|
||||
convokeLocale: {
|
||||
rules: [
|
||||
{ required: true, message: '请选择省市' },
|
||||
{required: true, message: '请选择省市'},
|
||||
],
|
||||
validateTrigger:['change']
|
||||
validateTrigger: ['change']
|
||||
},
|
||||
address:{
|
||||
venue: {
|
||||
rules: [
|
||||
{ required: true, message: '请输入详细地址' },
|
||||
{required: true, message: '请输入召开地点/腾讯会议'},
|
||||
],
|
||||
validateTrigger:['blur']
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
meetingCosts:{
|
||||
address: {
|
||||
rules: [
|
||||
{ required: true, message: '请输入会议费用' },
|
||||
{required: true, message: '请输入详细地址/腾讯会议号'},
|
||||
],
|
||||
validateTrigger:['blur']
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
directorId:{
|
||||
meetingCosts: {
|
||||
rules: [
|
||||
{ required: true, message: '请选择会议负责人' },
|
||||
{required: true, message: '请输入会议费用'},
|
||||
],
|
||||
validateTrigger:['blur','change']
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
tbMeetingType:{
|
||||
directorId: {
|
||||
rules: [
|
||||
{ required: true, message: '请选择标协会议类型' },
|
||||
{required: true, message: '请选择会议负责人'},
|
||||
],
|
||||
validateTrigger:['blur','change']
|
||||
validateTrigger: ['blur', 'change']
|
||||
},
|
||||
signInTime:{
|
||||
tbMeetingType: {
|
||||
rules: [
|
||||
{ required: true, message: '请选择注册签到时间' },
|
||||
{required: true, message: '请选择标协会议类型'},
|
||||
],
|
||||
validateTrigger:['change']
|
||||
validateTrigger: ['blur', 'change']
|
||||
},
|
||||
meetingCostsVip:{
|
||||
signInTime: {
|
||||
rules: [
|
||||
{ required: true, message: '请输入会议费用' },
|
||||
{required: true, message: '请选择注册签到时间'},
|
||||
],
|
||||
validateTrigger:['blur','change']
|
||||
validateTrigger: ['change']
|
||||
},
|
||||
hotelName:{
|
||||
meetingCostsVip: {
|
||||
rules: [
|
||||
{ required: false, message: '请输入酒店名称' },
|
||||
{required: true, message: '请输入会议费用'},
|
||||
],
|
||||
validateTrigger:['blur']
|
||||
validateTrigger: ['blur', 'change']
|
||||
},
|
||||
hotelAddress:{
|
||||
hotelName: {
|
||||
rules: [
|
||||
{ required: false, message: '请输入酒店地址' },
|
||||
{required: false, message: '请输入酒店名称'},
|
||||
],
|
||||
validateTrigger:['blur']
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
contactPerson:{
|
||||
hotelAddress: {
|
||||
rules: [
|
||||
{ required: false, message: '请输入酒店联系人' },
|
||||
{required: false, message: '请输入酒店地址'},
|
||||
],
|
||||
validateTrigger:['blur']
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
contactPerson: {
|
||||
rules: [
|
||||
{required: false, message: '请输入酒店联系人'},
|
||||
],
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
isAddQuestion: {
|
||||
rules: [
|
||||
{required: true, message: '请选择'},
|
||||
],
|
||||
validateTrigger: ['change']
|
||||
},
|
||||
endTimeAddQuestion: {
|
||||
rules: [
|
||||
{required: true, message: '请选择征集截止时间'},
|
||||
],
|
||||
validateTrigger: ['change']
|
||||
},
|
||||
standardNumber: {
|
||||
rules: [
|
||||
{required: true, message: '请输入标准号'},
|
||||
],
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
standardName: {
|
||||
rules: [
|
||||
{required: true, message: '请输入标准名称'},
|
||||
],
|
||||
validateTrigger: ['blur']
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,247 @@
|
||||
<template>
|
||||
<div>
|
||||
<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">
|
||||
<span>{{model.registerDeadline}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<span>{{model.addQuestionStatue_dictText}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="标准号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-select style="width:100%" placeholder="请选择标准号" v-model="queryParam.standardNumber" show-search allowClear>
|
||||
<a-select-option v-for="item in standardNumberArr" :key="item" :value="item">{{item}}</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="提问人" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input placeholder="请输入提问人" v-model="queryParam.creater" :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" v-has="'standardsMeeting:problemCollection:search'" @click="searchQuery">查询</a-button>
|
||||
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<!-- 查询区域-end-->
|
||||
|
||||
<!-- 操作按钮区域-->
|
||||
<div class="table-operator">
|
||||
<a-button type="primary" icon="export" v-has="'standardsMeeting:problemCollection:export'" @click="handleExportXls('问题征集')">导出</a-button>
|
||||
</div>
|
||||
<!-- 操作按钮区域-end-->
|
||||
|
||||
<!-- table表格区域-->
|
||||
<div>
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
bordered
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:scroll="{x: 1200}"
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
:loading="loading"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||
@change="handleTableChange"
|
||||
class="j-table-force-nowrap">
|
||||
<template slot="text" slot-scope="text">
|
||||
<a-tooltip>
|
||||
<template v-if="text" slot="title">{{ text }}</template>
|
||||
<div class="table-text">{{ text }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<template slot="name-text" slot-scope="text">
|
||||
<a-tooltip overlayClassName="name-text-tooltip">
|
||||
<template v-if="text" slot="title">{{ text }}</template>
|
||||
<div class="table-text table-name-text">{{ text }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
</a-table>
|
||||
</div>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||
import {getStandardNumberList} from '../../../../api/incomeMeetingApi'
|
||||
import {downloadPostFile } from '../../../../api/manage'
|
||||
|
||||
export default {
|
||||
name: 'ProblemCollectionList',
|
||||
components: {},
|
||||
mixins: [JeroListMixin],
|
||||
computed: {
|
||||
importExcelUrl: function () {
|
||||
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
model: {},
|
||||
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',
|
||||
width: 280,
|
||||
dataIndex: 'standardNumber',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'center',
|
||||
width: 250,
|
||||
dataIndex: 'standardName',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '章条编号',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
dataIndex: 'number',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '问题描述',
|
||||
align: 'center',
|
||||
width: 250,
|
||||
dataIndex: 'questionName',
|
||||
scopedSlots: {customRender: 'name-text'}
|
||||
},
|
||||
{
|
||||
title: '提问人',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
dataIndex: 'creater',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
},
|
||||
{
|
||||
title: '提问人邮箱',
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'email',
|
||||
scopedSlots: {customRender: 'text'}
|
||||
}
|
||||
],
|
||||
url: {
|
||||
list: '/payMeetingQuestion/payMeetingQuestion/list',
|
||||
exportXlsUrl: '/payMeetingQuestion/payMeetingQuestion/exportXls',
|
||||
},
|
||||
// 标准号下拉框的数据
|
||||
standardNumberArr: [],
|
||||
disableMixinCreated: true // 禁止初始化请求接口
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 刷新列表页
|
||||
refresh(record) {
|
||||
this.initData(record)
|
||||
this.getStandardNumberListFunc()
|
||||
this.loadData(1)
|
||||
},
|
||||
/*
|
||||
* 当前时间是否超过征集截止时间
|
||||
* */
|
||||
compareCurrentTime(time) {
|
||||
let date = new Date()
|
||||
let compareTime = new Date(time)
|
||||
if (date.getTime() > compareTime.getTime()) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
},
|
||||
// 初始化数据
|
||||
initData(record) {
|
||||
this.lastQueryParam = {}
|
||||
this.queryParam = {}
|
||||
if(record.endTimeAddQuestion && !record.addQuestionStatue_dictText) {
|
||||
let canOpe = !this.compareCurrentTime(record.endTimeAddQuestion)
|
||||
record.addQuestionStatue_dictText = canOpe ? '征集中' : '已结束'
|
||||
}
|
||||
this.model = Object.assign({}, record)
|
||||
|
||||
this.filters.meetingId = record.id
|
||||
},
|
||||
// 获取 标准类别名称
|
||||
getStandardNumberListFunc() {
|
||||
this.standardNumberArr = []
|
||||
getStandardNumberList({meetingId: this.model.id}).then(res => {
|
||||
if(res.success) {
|
||||
this.standardNumberArr = res.result || []
|
||||
}
|
||||
})
|
||||
},
|
||||
// 导出
|
||||
handleExportXls(fileName) {
|
||||
if (!fileName || typeof fileName != 'string') {
|
||||
fileName = '导出文件'
|
||||
}
|
||||
let param = this.getQueryParams()
|
||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||
param['selections'] = this.selectedRowKeys.join(',')
|
||||
}
|
||||
console.log('导出参数', param)
|
||||
downloadPostFile(this.url.exportXlsUrl, fileName + '.xlsx', param)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
.table-name-text {
|
||||
//white-space: pre-wrap;
|
||||
}
|
||||
.table-text {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
/*表格滚动条*/
|
||||
/deep/.ant-table-body {
|
||||
overflow-x: auto!important;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.name-text-tooltip .ant-tooltip-inner {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,58 @@
|
||||
<!--问题征集的模态框-->
|
||||
<template>
|
||||
<j-modal
|
||||
:title="title"
|
||||
:width="width"
|
||||
:visible="visible"
|
||||
:confirmLoading="confirmLoading"
|
||||
switchFullscreen
|
||||
fullscreen
|
||||
:footer="null"
|
||||
@cancel="handleCancel"
|
||||
cancelText="关闭">
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<problem-collection-list ref="problemCollectionList"></problem-collection-list>
|
||||
</a-spin>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProblemCollectionList from './ProblemCollectionList'
|
||||
|
||||
export default {
|
||||
name: 'ProblemCollectionModal',
|
||||
components: {
|
||||
ProblemCollectionList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: '问题征集详情',
|
||||
width: 1200,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
form: this.$form.createForm(this),
|
||||
model: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
show(record) {
|
||||
this.visible = true
|
||||
this.title = `${record.meetingName}问题征集详情`
|
||||
this.$nextTick(() => {
|
||||
this.$refs.problemCollectionList.refresh(record)
|
||||
})
|
||||
},
|
||||
close() {
|
||||
this.$emit('close')
|
||||
this.visible = false
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -143,12 +143,15 @@
|
||||
<!-- <a @click="applyMsg">报名信息</a>-->
|
||||
<a @click="handleEdit(record)" v-has:[authorCode.edit]="'committeeMeeting:edit'">编辑</a>
|
||||
<a @click="handleDelete(record.id)" v-has:[authorCode.delete]="'committeeMeeting:delete'">删除</a>
|
||||
<!-- 标协会议(标准宣贯、学习培训 且需要问题征集)的时候 有问题征集 功能-->
|
||||
<a v-if="meetingType === '2'" v-show="(record.tbMeetingType === 1 || record.tbMeetingType === 2) && Number(record.isAddQuestion)" @click="problemCollectionDetail(record)" v-has="'standardsMeeting:problemCollection'">问题征集</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>
|
||||
<problem-collection-modal ref="problemCollectionModal"></problem-collection-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -163,6 +166,8 @@ import PublishRemindModal from '@views/projectManagement/modules/PublishRemindMo
|
||||
import UploadMeetFileModal from '@views/incomePayments/meetManage/modules/UploadMeetFileModal'
|
||||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||
import '@/assets/less/TableExpand.less'
|
||||
// 问题征集 组件
|
||||
import ProblemCollectionModal from '../incomePayments/meetManage/modules/ProblemCollectionModal'
|
||||
|
||||
export default {
|
||||
name: 'CommitteeMeeting',
|
||||
@@ -172,7 +177,8 @@ export default {
|
||||
JDictSelectTag,
|
||||
PublishRemindModal,
|
||||
UploadMeetFileModal,
|
||||
PageHeaderTitle
|
||||
PageHeaderTitle,
|
||||
ProblemCollectionModal
|
||||
},
|
||||
mixins: [JeroListMixin, RangeDateMixin],
|
||||
data() {
|
||||
@@ -497,6 +503,14 @@ export default {
|
||||
this.lastQueryParam = {...this.queryParam}
|
||||
this.loadData(1)
|
||||
},
|
||||
/*
|
||||
* 问题征集按钮点击后的回调
|
||||
* */
|
||||
problemCollectionDetail(record) {
|
||||
if(!Number(record.isAddQuestion) || !this.meetingType === '2') return
|
||||
if(!(record.tbMeetingType === 1 || record.tbMeetingType === 2)) return
|
||||
this.$refs.problemCollectionModal.show(record)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
+40
@@ -36,6 +36,24 @@
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xxl="6" :xl="10" :lg="12" :md="12" :sm="24">
|
||||
<a-form-item
|
||||
label="部门"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol">
|
||||
<a-tree-select
|
||||
:multiple="false"
|
||||
show-search
|
||||
tree-default-expand-all
|
||||
tree-node-filter-prop="title"
|
||||
style="width:100%"
|
||||
:dropdownStyle="{ maxHeight: '200px',maxWidth:'100px','overflow-x':'hidden',' overflo-y': 'auto' }"
|
||||
:treeData="treeDepartData"
|
||||
v-model="queryParam.departId"
|
||||
placeholder="请选择部门">
|
||||
</a-tree-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||
<a-form-item label="应收款项" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input
|
||||
@@ -170,6 +188,7 @@ import JYearDate from '../../../components/jero/JYearDate'
|
||||
import { getAction } from '../../../api/manage'
|
||||
import {formatMoney} from '@/utils/formatMoney'
|
||||
import { MonthData } from '../statisticData'
|
||||
import {queryDepartTreeList} from '@api/api'
|
||||
|
||||
const defaultTableColumns = [
|
||||
{
|
||||
@@ -269,6 +288,7 @@ export default {
|
||||
},
|
||||
columns: [firstColumnTop, ...defaultTableColumns],
|
||||
dataSource: [],
|
||||
treeDepartData:[],// 组织机构
|
||||
// 总计表头,与主表表头一致
|
||||
columnsFooter: [firstColumnFooter, ...defaultTableColumns],
|
||||
// 给定当年作为来款年份默认查询条件
|
||||
@@ -282,6 +302,9 @@ export default {
|
||||
footerDataSource: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.loadDepartTreeData()
|
||||
},
|
||||
methods: {
|
||||
formatMoney,
|
||||
loadData(arg) {
|
||||
@@ -324,6 +347,23 @@ export default {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
/*
|
||||
* 组织机构下拉数据
|
||||
* */
|
||||
loadDepartTreeData() {
|
||||
const that = this
|
||||
queryDepartTreeList().then((res) => {
|
||||
if (res.success) {
|
||||
that.treeDepartData = []
|
||||
let treeList = res.result
|
||||
for (let a = 0; a < treeList.length; a++) {
|
||||
let temp = treeList[a]
|
||||
temp.isLeaf = temp.leaf
|
||||
that.treeDepartData.push(temp)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
searchReset() {
|
||||
this.lastQueryParam = {
|
||||
year: new Date().getFullYear().toString()
|
||||
|
||||
Reference in New Issue
Block a user