[update] 修改UAT问题:企标制修订流程征求意见对象填写意见后面的几个节点,增加有无意见的查询条件,主起草人汇总节点增加批量设置处理意见按钮
This commit is contained in:
@@ -167,7 +167,8 @@ module.exports = {
|
|||||||
confirmIsInsertSignatureCancelText: '确认签章页无误并提交',
|
confirmIsInsertSignatureCancelText: '确认签章页无误并提交',
|
||||||
haveNoOpinion: '有无意见',
|
haveNoOpinion: '有无意见',
|
||||||
have: '有',
|
have: '有',
|
||||||
noHave: '无'
|
noHave: '无',
|
||||||
|
batchSetHandleAdvice: '批量设置处理意见'
|
||||||
},
|
},
|
||||||
// 企标更改流程
|
// 企标更改流程
|
||||||
enStandardChange: {
|
enStandardChange: {
|
||||||
|
|||||||
@@ -612,3 +612,9 @@ export const EnterpriseNameCode = {
|
|||||||
JC: { text: 'JC', value: 'JC' },
|
JC: { text: 'JC', value: 'JC' },
|
||||||
JHK: { text: 'JHK', value: 'JHK' }
|
JHK: { text: 'JHK', value: 'JHK' }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 企标制修订-有无意见
|
||||||
|
export const HaveNoOpinion = {
|
||||||
|
HAVE: { text: '有', value: '1' },
|
||||||
|
NO: { text: '无', value: '0' }
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:maskClosable="true"
|
||||||
|
:width="500"
|
||||||
|
:closable="true"
|
||||||
|
switchFullscreen
|
||||||
|
@cancel="handleCancel"
|
||||||
|
@ok="handleOk"
|
||||||
|
:visible="visible">
|
||||||
|
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<a-form :form="form">
|
||||||
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.enStandardRevision.handlingSuggestion')">
|
||||||
|
<a-select v-decorator.trim="[ 'handleAdvice', validatorRules.handleAdvice ]"
|
||||||
|
:placeholder="$t('pleaseEnter') + $t('workCenter.enStandardRevision.handlingSuggestion')"
|
||||||
|
:options="handlingSuggestionOption"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'BatchSetHandleAdviceModal',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
title: this.$t('workCenter.enStandardRevision.batchSetHandleAdvice'),
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
model: {},
|
||||||
|
labelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 6 }
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 16 }
|
||||||
|
},
|
||||||
|
handlingSuggestionOption: [
|
||||||
|
{ value: '1', label: '采纳' },
|
||||||
|
{ value: '2', label: '部分采纳' },
|
||||||
|
{ value: '3', label: '不采纳' }
|
||||||
|
],
|
||||||
|
validatorRules: {
|
||||||
|
handleAdvice: {
|
||||||
|
rules: [
|
||||||
|
{ required: true, message: this.$t('pleaseSelect') + this.$t('workCenter.enStandardRevision.handlingSuggestion') }
|
||||||
|
],
|
||||||
|
validateTrigger: 'change'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
show () {
|
||||||
|
this.form.resetFields()
|
||||||
|
this.visible = true
|
||||||
|
},
|
||||||
|
close () {
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
handleOk () {
|
||||||
|
// 触发表单验证
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
this.confirmLoading = true
|
||||||
|
this.$emit('ok', values.handleAdvice)
|
||||||
|
this.close()
|
||||||
|
this.confirmLoading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancel () {
|
||||||
|
this.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
+4
-2
@@ -27,10 +27,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="item-model" prop="haveNoOpinion">
|
<a-form-model-item class="item-model" prop="haveNoOpinion">
|
||||||
<a-radio-group v-model="formInline.haveNoOpinion" :disabled="disabled" @change="reviewMeetingFlagChange">
|
<a-radio-group v-model="formInline.haveNoOpinion" :disabled="disabled" @change="reviewMeetingFlagChange">
|
||||||
<a-radio value="1">
|
<a-radio :value="HaveNoOpinion.HAVE.value">
|
||||||
{{ $t('workCenter.enStandardRevision.have') }}
|
{{ $t('workCenter.enStandardRevision.have') }}
|
||||||
</a-radio>
|
</a-radio>
|
||||||
<a-radio value="0">
|
<a-radio :value="HaveNoOpinion.NO.value">
|
||||||
{{ $t('workCenter.enStandardRevision.noHave') }}
|
{{ $t('workCenter.enStandardRevision.noHave') }}
|
||||||
</a-radio>
|
</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
@@ -77,6 +77,7 @@
|
|||||||
import BaseInfoForm from './BaseInfoForm'
|
import BaseInfoForm from './BaseInfoForm'
|
||||||
import JTable from '@/components/jero/JTable'
|
import JTable from '@/components/jero/JTable'
|
||||||
import CommentModal from './CommentModal'
|
import CommentModal from './CommentModal'
|
||||||
|
import { HaveNoOpinion } from '../../../../enums/commonEnums'
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import { kkFilePreview } from '@/utils/kkFilePreview'
|
import { kkFilePreview } from '@/utils/kkFilePreview'
|
||||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||||
@@ -95,6 +96,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
HaveNoOpinion,
|
||||||
loading: false,
|
loading: false,
|
||||||
formInline: {},
|
formInline: {},
|
||||||
rules: {
|
rules: {
|
||||||
|
|||||||
+82
-9
@@ -16,6 +16,32 @@
|
|||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 搜索区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<!-- 有无意见 -->
|
||||||
|
<a-col :span="8" class="search-col">
|
||||||
|
<a-form-item :label="$t('workCenter.enStandardRevision.haveNoOpinion')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-select
|
||||||
|
:placeholder="$t('pleaseSelect')+$t('workCenter.enStandardRevision.haveNoOpinion')"
|
||||||
|
v-model="queryParam.haveNoOpinion">
|
||||||
|
<a-select-option value="">{{ $t('pleaseSelect') }}</a-select-option>
|
||||||
|
<a-select-option :value="HaveNoOpinion.HAVE.value">{{ $t('workCenter.enStandardRevision.have') }}</a-select-option>
|
||||||
|
<a-select-option :value="HaveNoOpinion.NO.value">{{ $t('workCenter.enStandardRevision.noHave') }}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px">{{ $t('query') }}</a-button>
|
||||||
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 操作区域 -->
|
<!-- 操作区域 -->
|
||||||
<div v-if="!disabled" class="table-operator">
|
<div v-if="!disabled" class="table-operator">
|
||||||
<!-- 新增 -->
|
<!-- 新增 -->
|
||||||
@@ -77,11 +103,7 @@ import BaseInfoForm from './BaseInfoForm'
|
|||||||
import JTable from '@/components/jero/JTable'
|
import JTable from '@/components/jero/JTable'
|
||||||
import CommentModal from './CommentModal'
|
import CommentModal from './CommentModal'
|
||||||
import UserSelection from '@/components/selection/UserSelection'
|
import UserSelection from '@/components/selection/UserSelection'
|
||||||
import Vue from 'vue'
|
import { HaveNoOpinion } from '../../../../enums/commonEnums'
|
||||||
import { kkFilePreview } from '@/utils/kkFilePreview'
|
|
||||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
|
||||||
import { queryFileInfoByEditId } from '../../../../api/workCenter'
|
|
||||||
import { Base64 } from 'js-base64'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DepartLiaisonCollectBaseInfo',
|
name: 'DepartLiaisonCollectBaseInfo',
|
||||||
@@ -95,7 +117,15 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
HaveNoOpinion,
|
||||||
loading: false,
|
loading: false,
|
||||||
|
labelCol: {
|
||||||
|
span: 12
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
span: 12
|
||||||
|
},
|
||||||
|
queryParam: {},
|
||||||
/* 分页参数 */
|
/* 分页参数 */
|
||||||
ipagination: {
|
ipagination: {
|
||||||
current: 1,
|
current: 1,
|
||||||
@@ -155,6 +185,7 @@ export default {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
dataSource: [],
|
dataSource: [],
|
||||||
|
dataList: [], // 全部数据,防止查询后数据丢失
|
||||||
formInline: {},
|
formInline: {},
|
||||||
rules: {
|
rules: {
|
||||||
// 部门联络人主管级领导
|
// 部门联络人主管级领导
|
||||||
@@ -182,6 +213,7 @@ export default {
|
|||||||
...item
|
...item
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.dataList = JSON.parse(JSON.stringify(this.dataSource))
|
||||||
this.formInline = Object.assign({}, data)
|
this.formInline = Object.assign({}, data)
|
||||||
this.onEditFile = data.onEditFile
|
this.onEditFile = data.onEditFile
|
||||||
// 给表单赋值
|
// 给表单赋值
|
||||||
@@ -193,7 +225,7 @@ export default {
|
|||||||
getData () {
|
getData () {
|
||||||
// 把数据抛出,在线编辑不知道要不要抛
|
// 把数据抛出,在线编辑不知道要不要抛
|
||||||
const data = Object.assign({}, this.formInline)
|
const data = Object.assign({}, this.formInline)
|
||||||
data.advices = this.dataSource
|
data.advices = this.dataList
|
||||||
// 在线编辑文件id
|
// 在线编辑文件id
|
||||||
data.onEditFile = this.onEditFile
|
data.onEditFile = this.onEditFile
|
||||||
return data
|
return data
|
||||||
@@ -203,9 +235,9 @@ export default {
|
|||||||
let data = {} // 需要返回的数据
|
let data = {} // 需要返回的数据
|
||||||
await this.$refs.ruleForm.validate(valid => {
|
await this.$refs.ruleForm.validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (this.dataSource && this.dataSource.length > 0) {
|
if (this.dataList && this.dataList.length > 0) {
|
||||||
data = Object.assign({}, this.formInline)
|
data = Object.assign({}, this.formInline)
|
||||||
data.advices = this.dataSource
|
data.advices = this.dataList
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('addAtLeastOneRowOfData'))
|
this.$message.warning(this.$t('addAtLeastOneRowOfData'))
|
||||||
data = false
|
data = false
|
||||||
@@ -216,6 +248,23 @@ export default {
|
|||||||
})
|
})
|
||||||
return data
|
return data
|
||||||
},
|
},
|
||||||
|
searchQuery () {
|
||||||
|
if (this.queryParam.haveNoOpinion === HaveNoOpinion.HAVE.value) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.haveNoOpinion === HaveNoOpinion.HAVE.value
|
||||||
|
})
|
||||||
|
} else if (this.queryParam.haveNoOpinion === HaveNoOpinion.NO.value) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.haveNoOpinion === HaveNoOpinion.NO.value
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
searchReset () {
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
this.queryParam = {}
|
||||||
|
},
|
||||||
handleTableChange (pagination) {
|
handleTableChange (pagination) {
|
||||||
this.ipagination = pagination
|
this.ipagination = pagination
|
||||||
},
|
},
|
||||||
@@ -241,6 +290,8 @@ export default {
|
|||||||
onOk: () => {
|
onOk: () => {
|
||||||
const dataIndex = this.dataSource.findIndex(item => item.uid === uid)
|
const dataIndex = this.dataSource.findIndex(item => item.uid === uid)
|
||||||
this.dataSource.splice(dataIndex, 1)
|
this.dataSource.splice(dataIndex, 1)
|
||||||
|
const dataIndexTwo = this.dataList.findIndex(item => item.uid === uid)
|
||||||
|
this.dataList.splice(dataIndexTwo, 1)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -253,13 +304,21 @@ export default {
|
|||||||
this.$set(this.dataSource[dataIndex], 'clauseNum', value.clauseNum)
|
this.$set(this.dataSource[dataIndex], 'clauseNum', value.clauseNum)
|
||||||
this.$set(this.dataSource[dataIndex], 'clauseName', value.clauseName)
|
this.$set(this.dataSource[dataIndex], 'clauseName', value.clauseName)
|
||||||
this.$set(this.dataSource[dataIndex], 'editAdvice', value.editAdvice)
|
this.$set(this.dataSource[dataIndex], 'editAdvice', value.editAdvice)
|
||||||
|
const dataIndexTwo = this.dataList.findIndex(item => item.uid === uid)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'clauseNum', value.clauseNum)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'clauseName', value.clauseName)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'editAdvice', value.editAdvice)
|
||||||
// this.dataSource.splice(index, 1, value)
|
// this.dataSource.splice(index, 1, value)
|
||||||
} else {
|
} else {
|
||||||
// 没有下标, 是新增
|
// 没有下标, 是新增
|
||||||
const uidGenerator = () => {
|
const uidGenerator = () => {
|
||||||
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
||||||
}
|
}
|
||||||
this.dataSource.push({ uid: uidGenerator(), ...value })
|
if (!this.queryParam.haveNoOpinion || this.queryParam.haveNoOpinion === HaveNoOpinion.HAVE.value) {
|
||||||
|
// 有意见或者没有筛选项的时候dataSource才增加
|
||||||
|
this.dataSource.push({ uid: uidGenerator(), ...value, haveNoOpinion: HaveNoOpinion.HAVE.value })
|
||||||
|
}
|
||||||
|
this.dataList.push({ uid: uidGenerator(), ...value, haveNoOpinion: HaveNoOpinion.HAVE.value })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 选择用户得到用户名
|
// 选择用户得到用户名
|
||||||
@@ -296,4 +355,18 @@ export default {
|
|||||||
.title-text-long {
|
.title-text-long {
|
||||||
width: 180px !important;
|
width: 180px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table-page-search-wrapper {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
.search-col {
|
||||||
|
/deep/ .ant-form-item-label {
|
||||||
|
width: 128px !important;
|
||||||
|
text-align: right !important;
|
||||||
|
padding-right: 16px !important;
|
||||||
|
}
|
||||||
|
/deep/ .ant-form-item-control-wrapper {
|
||||||
|
padding-right: 12px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+82
-9
@@ -15,6 +15,32 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 搜索区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<!-- 有无意见 -->
|
||||||
|
<a-col :span="8" class="search-col">
|
||||||
|
<a-form-item :label="$t('workCenter.enStandardRevision.haveNoOpinion')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-select
|
||||||
|
:placeholder="$t('pleaseSelect')+$t('workCenter.enStandardRevision.haveNoOpinion')"
|
||||||
|
v-model="queryParam.haveNoOpinion">
|
||||||
|
<a-select-option value="">{{ $t('pleaseSelect') }}</a-select-option>
|
||||||
|
<a-select-option :value="HaveNoOpinion.HAVE.value">{{ $t('workCenter.enStandardRevision.have') }}</a-select-option>
|
||||||
|
<a-select-option :value="HaveNoOpinion.NO.value">{{ $t('workCenter.enStandardRevision.noHave') }}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px">{{ $t('query') }}</a-button>
|
||||||
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
<!-- 操作区域 -->
|
<!-- 操作区域 -->
|
||||||
<div v-if="!disabled" class="table-operator">
|
<div v-if="!disabled" class="table-operator">
|
||||||
<!-- 新增 -->
|
<!-- 新增 -->
|
||||||
@@ -52,11 +78,7 @@
|
|||||||
import BaseInfoForm from './BaseInfoForm'
|
import BaseInfoForm from './BaseInfoForm'
|
||||||
import JTable from '@/components/jero/JTable'
|
import JTable from '@/components/jero/JTable'
|
||||||
import CommentModal from './CommentModal'
|
import CommentModal from './CommentModal'
|
||||||
import Vue from 'vue'
|
import { HaveNoOpinion } from '../../../../enums/commonEnums'
|
||||||
import { kkFilePreview } from '@/utils/kkFilePreview'
|
|
||||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
|
||||||
import { queryFileInfoByEditId } from '../../../../api/workCenter'
|
|
||||||
import { Base64 } from 'js-base64'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DepartLiaisonLeaderApproveBaseInfo',
|
name: 'DepartLiaisonLeaderApproveBaseInfo',
|
||||||
@@ -70,7 +92,15 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
HaveNoOpinion,
|
||||||
loading: false,
|
loading: false,
|
||||||
|
labelCol: {
|
||||||
|
span: 12
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
span: 12
|
||||||
|
},
|
||||||
|
queryParam: {},
|
||||||
/* 分页参数 */
|
/* 分页参数 */
|
||||||
ipagination: {
|
ipagination: {
|
||||||
current: 1,
|
current: 1,
|
||||||
@@ -130,6 +160,7 @@ export default {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
dataSource: [],
|
dataSource: [],
|
||||||
|
dataList: [], // 全部数据,防止查询后数据丢失
|
||||||
onEditFile: '' // 在线编辑的文件id
|
onEditFile: '' // 在线编辑的文件id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -146,6 +177,7 @@ export default {
|
|||||||
...item
|
...item
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.dataList = JSON.parse(JSON.stringify(this.dataSource))
|
||||||
this.onEditFile = data.onEditFile
|
this.onEditFile = data.onEditFile
|
||||||
// 给表单赋值
|
// 给表单赋值
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
@@ -156,7 +188,7 @@ export default {
|
|||||||
getData () {
|
getData () {
|
||||||
// 把数据抛出,在线编辑不知道要不要抛
|
// 把数据抛出,在线编辑不知道要不要抛
|
||||||
const data = {}
|
const data = {}
|
||||||
data.advices = this.dataSource
|
data.advices = this.dataList
|
||||||
data.businessJson = JSON.stringify(this.$refs.baseInfoForm.getData())
|
data.businessJson = JSON.stringify(this.$refs.baseInfoForm.getData())
|
||||||
// 在线编辑文件id
|
// 在线编辑文件id
|
||||||
data.onEditFile = this.onEditFile
|
data.onEditFile = this.onEditFile
|
||||||
@@ -164,15 +196,32 @@ export default {
|
|||||||
},
|
},
|
||||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||||
getDataValidate () {
|
getDataValidate () {
|
||||||
if (this.dataSource && this.dataSource.length > 0) {
|
if (this.dataList && this.dataList.length > 0) {
|
||||||
const data = {}
|
const data = {}
|
||||||
data.advices = this.dataSource
|
data.advices = this.dataList
|
||||||
return data
|
return data
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('addAtLeastOneRowOfData'))
|
this.$message.warning(this.$t('addAtLeastOneRowOfData'))
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
searchQuery () {
|
||||||
|
if (this.queryParam.haveNoOpinion === HaveNoOpinion.HAVE.value) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.haveNoOpinion === HaveNoOpinion.HAVE.value
|
||||||
|
})
|
||||||
|
} else if (this.queryParam.haveNoOpinion === HaveNoOpinion.NO.value) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.haveNoOpinion === HaveNoOpinion.NO.value
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
searchReset () {
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
this.queryParam = {}
|
||||||
|
},
|
||||||
handleTableChange (pagination) {
|
handleTableChange (pagination) {
|
||||||
this.ipagination = pagination
|
this.ipagination = pagination
|
||||||
},
|
},
|
||||||
@@ -198,6 +247,8 @@ export default {
|
|||||||
onOk: () => {
|
onOk: () => {
|
||||||
const dataIndex = this.dataSource.findIndex(item => item.uid === uid)
|
const dataIndex = this.dataSource.findIndex(item => item.uid === uid)
|
||||||
this.dataSource.splice(dataIndex, 1)
|
this.dataSource.splice(dataIndex, 1)
|
||||||
|
const dataIndexTwo = this.dataList.findIndex(item => item.uid === uid)
|
||||||
|
this.dataList.splice(dataIndexTwo, 1)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -210,13 +261,21 @@ export default {
|
|||||||
this.$set(this.dataSource[dataIndex], 'clauseNum', value.clauseNum)
|
this.$set(this.dataSource[dataIndex], 'clauseNum', value.clauseNum)
|
||||||
this.$set(this.dataSource[dataIndex], 'clauseName', value.clauseName)
|
this.$set(this.dataSource[dataIndex], 'clauseName', value.clauseName)
|
||||||
this.$set(this.dataSource[dataIndex], 'editAdvice', value.editAdvice)
|
this.$set(this.dataSource[dataIndex], 'editAdvice', value.editAdvice)
|
||||||
|
const dataIndexTwo = this.dataList.findIndex(item => item.uid === uid)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'clauseNum', value.clauseNum)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'clauseName', value.clauseName)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'editAdvice', value.editAdvice)
|
||||||
// this.dataSource.splice(index, 1, value)
|
// this.dataSource.splice(index, 1, value)
|
||||||
} else {
|
} else {
|
||||||
// 没有下标, 是新增
|
// 没有下标, 是新增
|
||||||
const uidGenerator = () => {
|
const uidGenerator = () => {
|
||||||
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
||||||
}
|
}
|
||||||
this.dataSource.push({ uid: uidGenerator(), ...value })
|
if (!this.queryParam.haveNoOpinion || this.queryParam.haveNoOpinion === HaveNoOpinion.HAVE.value) {
|
||||||
|
// 有意见或者没有筛选项的时候dataSource才增加
|
||||||
|
this.dataSource.push({ uid: uidGenerator(), ...value, haveNoOpinion: HaveNoOpinion.HAVE.value })
|
||||||
|
}
|
||||||
|
this.dataList.push({ uid: uidGenerator(), ...value, haveNoOpinion: HaveNoOpinion.HAVE.value })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 在线编辑的查看
|
// 在线编辑的查看
|
||||||
@@ -243,4 +302,18 @@ export default {
|
|||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table-page-search-wrapper {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
.search-col {
|
||||||
|
/deep/ .ant-form-item-label {
|
||||||
|
width: 128px !important;
|
||||||
|
text-align: right !important;
|
||||||
|
padding-right: 16px !important;
|
||||||
|
}
|
||||||
|
/deep/ .ant-form-item-control-wrapper {
|
||||||
|
padding-right: 12px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+127
-7
@@ -16,12 +16,42 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 搜索区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<!-- 有无意见 -->
|
||||||
|
<a-col :span="8" class="search-col">
|
||||||
|
<a-form-item :label="$t('workCenter.enStandardRevision.haveNoOpinion')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-select
|
||||||
|
:placeholder="$t('pleaseSelect')+$t('workCenter.enStandardRevision.haveNoOpinion')"
|
||||||
|
v-model="queryParam.haveNoOpinion">
|
||||||
|
<a-select-option value="">{{ $t('pleaseSelect') }}</a-select-option>
|
||||||
|
<a-select-option :value="HaveNoOpinion.HAVE.value">{{ $t('workCenter.enStandardRevision.have') }}</a-select-option>
|
||||||
|
<a-select-option :value="HaveNoOpinion.NO.value">{{ $t('workCenter.enStandardRevision.noHave') }}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px">{{ $t('query') }}</a-button>
|
||||||
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
<!-- 操作区域 -->
|
<!-- 操作区域 -->
|
||||||
<div v-if="!disabled" class="table-operator">
|
<div v-if="!disabled" class="table-operator">
|
||||||
<!-- 新增 -->
|
<!-- 新增 -->
|
||||||
<a-button icon="plus" type="primary" @click="handleAdd" :disabled="disabled">
|
<a-button icon="plus" type="primary" @click="handleAdd" :disabled="disabled">
|
||||||
{{ $t('newlyAdded') }}
|
{{ $t('newlyAdded') }}
|
||||||
</a-button>
|
</a-button>
|
||||||
|
<!-- 批量设置处理意见 -->
|
||||||
|
<a-button icon="setting" type="primary" ghost @click="batchSetHandleAdvice" :disabled="disabled">
|
||||||
|
{{ $t('workCenter.enStandardRevision.batchSetHandleAdvice') }}
|
||||||
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@@ -34,6 +64,7 @@
|
|||||||
:dataSource="dataSource"
|
:dataSource="dataSource"
|
||||||
:pagination="ipagination"
|
:pagination="ipagination"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
@change="handleTableChange">
|
@change="handleTableChange">
|
||||||
|
|
||||||
<template slot="customTitleHandlingSuggestion">
|
<template slot="customTitleHandlingSuggestion">
|
||||||
@@ -44,6 +75,8 @@
|
|||||||
</j-table>
|
</j-table>
|
||||||
</div>
|
</div>
|
||||||
<comment-modal ref="commentModal" @ok="modalFormOk"></comment-modal>
|
<comment-modal ref="commentModal" @ok="modalFormOk"></comment-modal>
|
||||||
|
<!-- 批量设置处理意见 -->
|
||||||
|
<batch-set-handle-advice-modal ref="batchSetHandleAdviceModal" @ok="batchSetHandleAdviceOk"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -55,11 +88,12 @@ import { USER_INFO } from '@/store/mutation-types'
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import { onlineEditor } from '../../../../utils/onlyOfficeUtils'
|
import { onlineEditor } from '../../../../utils/onlyOfficeUtils'
|
||||||
import { getStandardEditFileByNo } from '../../../../api/workCenter'
|
import { getStandardEditFileByNo } from '../../../../api/workCenter'
|
||||||
import { ProjectType } from '../../../../enums/commonEnums'
|
import { ProjectType, HaveNoOpinion } from '../../../../enums/commonEnums'
|
||||||
|
import BatchSetHandleAdviceModal from './BatchSetHandleAdviceModal'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MainDrafterCollectBaseInfo',
|
name: 'MainDrafterCollectBaseInfo',
|
||||||
components: { CommentModal, BaseInfoForm, JTable },
|
components: { CommentModal, BaseInfoForm, JTable, BatchSetHandleAdviceModal },
|
||||||
props: {
|
props: {
|
||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@@ -69,7 +103,17 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
HaveNoOpinion,
|
||||||
loading: false,
|
loading: false,
|
||||||
|
labelCol: {
|
||||||
|
span: 12
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
span: 12
|
||||||
|
},
|
||||||
|
queryParam: {},
|
||||||
|
selectedRowKeys: [],
|
||||||
|
selectionRows: [],
|
||||||
/* 分页参数 */
|
/* 分页参数 */
|
||||||
ipagination: {
|
ipagination: {
|
||||||
current: 1,
|
current: 1,
|
||||||
@@ -132,6 +176,10 @@ export default {
|
|||||||
children: <a-select v-model={row.handleAdvice} disabled={this.disabled}
|
children: <a-select v-model={row.handleAdvice} disabled={this.disabled}
|
||||||
placeholder={this.$t('pleaseSelect')} class={'handle-suggest-select'}
|
placeholder={this.$t('pleaseSelect')} class={'handle-suggest-select'}
|
||||||
options={this.handlingSuggestionOption}
|
options={this.handlingSuggestionOption}
|
||||||
|
onChange={ value => {
|
||||||
|
const listIndex = this.dataList.findIndex(item => item.uid === row.uid)
|
||||||
|
this.dataList[listIndex].handleAdvice = value
|
||||||
|
} }
|
||||||
/>,
|
/>,
|
||||||
attrs: {}
|
attrs: {}
|
||||||
}
|
}
|
||||||
@@ -150,6 +198,8 @@ export default {
|
|||||||
onChange={ e => {
|
onChange={ e => {
|
||||||
e.target.value = e.target.value.trim()
|
e.target.value = e.target.value.trim()
|
||||||
row.reason = e.target.value.trim()
|
row.reason = e.target.value.trim()
|
||||||
|
const listIndex = this.dataList.findIndex(item => item.uid === row.uid)
|
||||||
|
this.dataList[listIndex].reason = e.target.value.trim()
|
||||||
} }
|
} }
|
||||||
/>,
|
/>,
|
||||||
attrs: {}
|
attrs: {}
|
||||||
@@ -159,6 +209,7 @@ export default {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
dataSource: [],
|
dataSource: [],
|
||||||
|
dataList: [], // 全部数据,防止查询后数据丢失
|
||||||
handlingSuggestionOption: [
|
handlingSuggestionOption: [
|
||||||
{ value: '1', label: '采纳' },
|
{ value: '1', label: '采纳' },
|
||||||
{ value: '2', label: '部分采纳' },
|
{ value: '2', label: '部分采纳' },
|
||||||
@@ -182,6 +233,7 @@ export default {
|
|||||||
handleAdvice: item.handleAdvice ? item.handleAdvice : undefined
|
handleAdvice: item.handleAdvice ? item.handleAdvice : undefined
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.dataList = JSON.parse(JSON.stringify(this.dataSource))
|
||||||
this.onEditFile = data.onEditFile
|
this.onEditFile = data.onEditFile
|
||||||
// 给表单赋值
|
// 给表单赋值
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
@@ -192,7 +244,7 @@ export default {
|
|||||||
getData () {
|
getData () {
|
||||||
// 把数据抛出,在线编辑不知道要不要抛
|
// 把数据抛出,在线编辑不知道要不要抛
|
||||||
const data = {}
|
const data = {}
|
||||||
data.advices = this.dataSource
|
data.advices = this.dataList
|
||||||
data.businessJson = JSON.stringify(this.$refs.baseInfoForm.getData())
|
data.businessJson = JSON.stringify(this.$refs.baseInfoForm.getData())
|
||||||
data.onEditFile = this.onEditFile
|
data.onEditFile = this.onEditFile
|
||||||
return data
|
return data
|
||||||
@@ -200,7 +252,7 @@ export default {
|
|||||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||||
getDataValidate () {
|
getDataValidate () {
|
||||||
let hasErr = false
|
let hasErr = false
|
||||||
for (const item of this.dataSource) {
|
for (const item of this.dataList) {
|
||||||
// 处理意见必填,不采纳,部分采纳必填理由
|
// 处理意见必填,不采纳,部分采纳必填理由
|
||||||
if (!item.handleAdvice || ((item.handleAdvice === '2' || item.handleAdvice === '3') && !item.reason)) {
|
if (!item.handleAdvice || ((item.handleAdvice === '2' || item.handleAdvice === '3') && !item.reason)) {
|
||||||
console.log(item.handleAdvice)
|
console.log(item.handleAdvice)
|
||||||
@@ -213,7 +265,7 @@ export default {
|
|||||||
this.$message.warning(this.$t('pleaseCompleteTableInfo'))
|
this.$message.warning(this.$t('pleaseCompleteTableInfo'))
|
||||||
data = false
|
data = false
|
||||||
} else {
|
} else {
|
||||||
data.advices = this.dataSource
|
data.advices = this.dataList
|
||||||
data.onEditFile = this.onEditFile
|
data.onEditFile = this.onEditFile
|
||||||
}
|
}
|
||||||
return data
|
return data
|
||||||
@@ -227,6 +279,44 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
searchQuery () {
|
||||||
|
if (this.queryParam.haveNoOpinion === HaveNoOpinion.HAVE.value) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.haveNoOpinion === HaveNoOpinion.HAVE.value
|
||||||
|
})
|
||||||
|
} else if (this.queryParam.haveNoOpinion === HaveNoOpinion.NO.value) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.haveNoOpinion === HaveNoOpinion.NO.value
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
searchReset () {
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
this.queryParam = {}
|
||||||
|
},
|
||||||
|
// 点击批量设置处理意见
|
||||||
|
batchSetHandleAdvice () {
|
||||||
|
if (this.selectedRowKeys.length <= 0) {
|
||||||
|
// 请选择要分发的数据
|
||||||
|
this.$message.warning(this.$t('selectAtLeastOne'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$refs.batchSetHandleAdviceModal.show()
|
||||||
|
},
|
||||||
|
// 批量设置处理意见确认回调
|
||||||
|
batchSetHandleAdviceOk (value) {
|
||||||
|
for (const i of this.selectedRowKeys) {
|
||||||
|
const dataIndex = this.dataSource.findIndex(item => item.uid === i)
|
||||||
|
this.dataSource[dataIndex].handleAdvice = value
|
||||||
|
const dataIndexTwo = this.dataList.findIndex(item => item.uid === i)
|
||||||
|
this.dataList[dataIndexTwo].handleAdvice = value
|
||||||
|
}
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataSource))
|
||||||
|
this.dataList = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
this.selectedRowKeys = []
|
||||||
|
},
|
||||||
// 制修订类型改变
|
// 制修订类型改变
|
||||||
typeOfRevisionChange (val, originStandardNum) {
|
typeOfRevisionChange (val, originStandardNum) {
|
||||||
if (val === ProjectType.ENACT.value) {
|
if (val === ProjectType.ENACT.value) {
|
||||||
@@ -238,6 +328,11 @@ export default {
|
|||||||
handleTableChange (pagination) {
|
handleTableChange (pagination) {
|
||||||
this.ipagination = pagination
|
this.ipagination = pagination
|
||||||
},
|
},
|
||||||
|
// 表格选中
|
||||||
|
onSelectChange (selectedRowKeys, selectionRows) {
|
||||||
|
this.selectedRowKeys = selectedRowKeys
|
||||||
|
this.selectionRows = selectionRows
|
||||||
|
},
|
||||||
// 新增征求意见
|
// 新增征求意见
|
||||||
handleAdd () {
|
handleAdd () {
|
||||||
// 不知道左侧要预览哪个文件
|
// 不知道左侧要预览哪个文件
|
||||||
@@ -269,7 +364,14 @@ export default {
|
|||||||
if (uid || uid === 0) {
|
if (uid || uid === 0) {
|
||||||
// 有下标,说明是编辑
|
// 有下标,说明是编辑
|
||||||
const dataIndex = this.dataSource.findIndex(item => item.uid === uid)
|
const dataIndex = this.dataSource.findIndex(item => item.uid === uid)
|
||||||
this.dataSource.splice(dataIndex, 1, value)
|
// 有下标,说明是编辑
|
||||||
|
this.$set(this.dataSource[dataIndex], 'clauseNum', value.clauseNum)
|
||||||
|
this.$set(this.dataSource[dataIndex], 'clauseName', value.clauseName)
|
||||||
|
this.$set(this.dataSource[dataIndex], 'editAdvice', value.editAdvice)
|
||||||
|
const dataIndexTwo = this.dataList.findIndex(item => item.uid === uid)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'clauseNum', value.clauseNum)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'clauseName', value.clauseName)
|
||||||
|
this.$set(this.dataList[dataIndexTwo], 'editAdvice', value.editAdvice)
|
||||||
} else {
|
} else {
|
||||||
// 没有下标, 是新增
|
// 没有下标, 是新增
|
||||||
const currentUser = Vue.ls.get(USER_INFO)
|
const currentUser = Vue.ls.get(USER_INFO)
|
||||||
@@ -277,7 +379,11 @@ export default {
|
|||||||
const uidGenerator = () => {
|
const uidGenerator = () => {
|
||||||
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
||||||
}
|
}
|
||||||
this.dataSource.push({ ...value, createUserId_dictText: currentUserId, uid: uidGenerator() })
|
if (!this.queryParam.haveNoOpinion || this.queryParam.haveNoOpinion === HaveNoOpinion.HAVE.value) {
|
||||||
|
// 有意见或者没有筛选项的时候dataSource才增加
|
||||||
|
this.dataSource.push({ ...value, createUserId_dictText: currentUserId, uid: uidGenerator(), haveNoOpinion: HaveNoOpinion.HAVE.value })
|
||||||
|
}
|
||||||
|
this.dataList.push({ ...value, createUserId_dictText: currentUserId, uid: uidGenerator(), haveNoOpinion: HaveNoOpinion.HAVE.value })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
@@ -322,4 +428,18 @@ export default {
|
|||||||
.handle-suggest-select {
|
.handle-suggest-select {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table-page-search-wrapper {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
.search-col {
|
||||||
|
/deep/ .ant-form-item-label {
|
||||||
|
width: 128px !important;
|
||||||
|
text-align: right !important;
|
||||||
|
padding-right: 16px !important;
|
||||||
|
}
|
||||||
|
/deep/ .ant-form-item-control-wrapper {
|
||||||
|
padding-right: 12px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user