[add] 企标评审会记录联调
This commit is contained in:
@@ -23,8 +23,10 @@ const collectStandard = (params) => getAction('', params)
|
||||
// 分享企标
|
||||
const shareStandard = (params) => getAction('', params)
|
||||
|
||||
// 企标评审会记录
|
||||
const setQualityStandard = (params) => getAction('', params)
|
||||
// 企标评审会记录-设置优质标准
|
||||
const setQualityStandard = (params) => getAction('/enterprise/reviewMeeting/setQualityStandards', params)
|
||||
// 获取评分详情
|
||||
const getScoreDetail = (params) => getAction('/enterprise/reviewMeeting/evaluateDetail/' + `${params.id}`, params)
|
||||
|
||||
export {
|
||||
getEnterpriseStandardTableHeader,
|
||||
@@ -39,5 +41,6 @@ export {
|
||||
collectStandard,
|
||||
shareStandard,
|
||||
|
||||
setQualityStandard
|
||||
setQualityStandard,
|
||||
getScoreDetail
|
||||
}
|
||||
|
||||
@@ -8,6 +8,48 @@ module.exports = {
|
||||
temporaryPermissionSet: 'Temporary Permission Setting',
|
||||
collection: 'Collect',
|
||||
cancelCollection: 'Cancel Collection',
|
||||
templateExport: 'Enterprise Standard Template'
|
||||
templateExport: 'Enterprise Standard Template',
|
||||
pleaseSelectLeastOneNode: 'Please select Level 2 and below system first',
|
||||
authorizationDepart: '授权部门',
|
||||
authorizationUser: '授权人员',
|
||||
maturityDate: '授权到期日期',
|
||||
detailTitle: '企业标准详情页',
|
||||
evaluate: '企标评价',
|
||||
updateRecord: '更新记录',
|
||||
submitQuestion: '提交问题',
|
||||
standardResolutionSheet: '标准分解单'
|
||||
},
|
||||
// 评审会记录
|
||||
reviewMeeting: {
|
||||
enterpriseStandardName: '企标名称',
|
||||
enterpriseStandardNum: '企标编号',
|
||||
reviewData: '评审日期',
|
||||
setQualityStandard: '设置优质标准',
|
||||
reviewDetail: '评分详情',
|
||||
principalDrafter: '主起草人',
|
||||
mainDraftUnit: '主起草单位',
|
||||
reviewer: '评审人',
|
||||
average: '平均总分',
|
||||
isQuality: '是否推荐为优质标准',
|
||||
selectMaxTen: '请最多选择10条',
|
||||
scoreDetailTitle: '企标详情',
|
||||
project: '项目',
|
||||
desc: '描述',
|
||||
score: '分值',
|
||||
grade: '评分',
|
||||
groundsForDemerit: '扣分理由'
|
||||
},
|
||||
// 宣贯
|
||||
publicize: {
|
||||
enterpriseStandardNum: '企标编号',
|
||||
enterpriseStandardName: '企标名称',
|
||||
publicizeData: '宣贯日期',
|
||||
publicist: '宣贯人',
|
||||
exportName: '企标宣贯表',
|
||||
fileExportName: '企标宣贯表',
|
||||
templateName: '企标宣贯模板',
|
||||
releaseDate: '发布日期',
|
||||
materialDate: '实施日期',
|
||||
relatedMaterial: '相关材料'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
<a-col :span="6">
|
||||
<a-form-item :label="$t('enterpriseStandardLibrary.publicize.publicizeData')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-range-picker
|
||||
:placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.publicize.publicizeData')"
|
||||
value-format="YYYY-MM-DD"
|
||||
format="YYYY-MM-DD"
|
||||
@change="publicizeDataChange"
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
@change="handleTableChange">
|
||||
|
||||
<!-- 企标编号/企标名称 -->
|
||||
<template v-slot:enterpriseStandardNum="{text, record}">
|
||||
<template v-slot:toDeatil="{text, record}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<a class="link-a" @click="handleGoDetail(record)">{{ text }}</a>
|
||||
@@ -66,12 +66,10 @@
|
||||
|
||||
<!-- 操作栏 -->
|
||||
<div slot="action" slot-scope="{text, record}" class="action-span-cell">
|
||||
<a @click="handleEdit(record)" class="table-ope-btn">{{ $t('edit') }}</a>
|
||||
<a @click="handleReviewDetail(record)" class="table-ope-btn">{{ $t('enterpriseStandardLibrary.reviewMeeting.reviewDetail') }}</a>
|
||||
</div>
|
||||
|
||||
</j-table>
|
||||
<review-meeting-modal ref="modalForm" @ok="modalFormOk"></review-meeting-modal>
|
||||
|
||||
<score-detail ref="scoreDetail" @ok="loadData"></score-detail>
|
||||
</div>
|
||||
@@ -79,15 +77,15 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import '@assets/less/common.less'
|
||||
import JTable from '@/components/jero/JTable'
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import { setQualityStandard } from '@/api/enterpriseStandardLibraryApi'
|
||||
import ScoreDetail from './modules/ScoreDetail'
|
||||
import ReviewMeetingModal from './modules/ReviewMeetingModal'
|
||||
|
||||
export default {
|
||||
name: 'ReviewMeetingList',
|
||||
components: { ReviewMeetingModal, ScoreDetail, JTable },
|
||||
components: { ScoreDetail, JTable },
|
||||
mixins: [JeroListMixin],
|
||||
data () {
|
||||
return {
|
||||
@@ -113,55 +111,56 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'standardNo',
|
||||
scopedSlots: { customRender: 'enterpriseStandardNum' }
|
||||
scopedSlots: { customRender: 'toDeatil' }
|
||||
},
|
||||
{
|
||||
title: this.$t('enterpriseStandardLibrary.reviewMeeting.enterpriseStandardName'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'standardName',
|
||||
scopedSlots: { customRender: 'enterpriseStandardName' }
|
||||
scopedSlots: { customRender: 'toDeatil' }
|
||||
},
|
||||
{
|
||||
title: this.$t('enterpriseStandardLibrary.reviewMeeting.principalDrafter'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'principalDrafter',
|
||||
dataIndex: 'mainDraftingUser',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('enterpriseStandardLibrary.reviewMeeting.mainDraftUnit'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'mainDraftUnit',
|
||||
dataIndex: 'mainDraftingUnit',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('enterpriseStandardLibrary.reviewMeeting.reviewData'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'reviewData',
|
||||
dataIndex: 'reviewDate',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('enterpriseStandardLibrary.reviewMeeting.reviewer'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'declareUserName',
|
||||
dataIndex: 'reviewUsers',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('enterpriseStandardLibrary.reviewMeeting.average'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'declareFileName',
|
||||
dataIndex: 'avgScore',
|
||||
sorter: true,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('enterpriseStandardLibrary.reviewMeeting.isQuality'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'isQuality',
|
||||
dataIndex: 'qualityFlag',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
@@ -182,6 +181,18 @@ export default {
|
||||
this.queryParam.reviewStartDate = val[0]
|
||||
this.queryParam.reviewEndDate = val[1]
|
||||
},
|
||||
handleTableChange (pagination, filters, sorter) {
|
||||
// 分页、排序、筛选变化时触发
|
||||
if (Object.keys(sorter).length > 0 && sorter.order) {
|
||||
this.isorter.column = sorter.field
|
||||
this.isorter.order = sorter.order === 'ascend' ? 'asc' : 'desc'
|
||||
} else {
|
||||
this.isorter.column = 'createTime'
|
||||
this.isorter.order = 'desc'
|
||||
}
|
||||
this.ipagination = pagination
|
||||
this.loadData()
|
||||
},
|
||||
// 点击跳转企标详情
|
||||
handleGoDetail (record) {
|
||||
this.$openPageNewSheet({
|
||||
@@ -213,7 +224,7 @@ export default {
|
||||
},
|
||||
// 点击评分详情
|
||||
handleReviewDetail (record) {
|
||||
|
||||
this.$refs.scoreDetail.open(record.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
<template>
|
||||
<a-modal
|
||||
:title="title"
|
||||
:maskClosable="true"
|
||||
:width="800"
|
||||
:closable="true"
|
||||
@cancel="handleCancel"
|
||||
@ok="handleOk"
|
||||
:visible="visible">
|
||||
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<a-form :form="form">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('enterpriseStandardLibrary.reviewMeeting.isQuality')">
|
||||
<j-dict-select-tag
|
||||
v-decorator.trim="[ 'isQuality', validatorRules.isQuality]">
|
||||
</j-dict-select-tag>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-spin>
|
||||
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import pick from 'lodash.pick'
|
||||
import { postAction } from '@/api/manage'
|
||||
import JDictSelectTag from '@/components/dict/JDictSelectTag'
|
||||
|
||||
export default {
|
||||
name: 'ReviewMeetingModal',
|
||||
components: { JDictSelectTag },
|
||||
data () {
|
||||
return {
|
||||
title: '',
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
form: this.$form.createForm(this),
|
||||
model: {},
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 6 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 16 }
|
||||
},
|
||||
validatorRules: {
|
||||
isQuality: {
|
||||
rules: [
|
||||
{ required: false, message: this.$t('pleaseEnter') + this.$t('enterpriseStandardLibrary.standard.authorizationDepart') }
|
||||
],
|
||||
validateTrigger: 'change'
|
||||
}
|
||||
},
|
||||
url: {
|
||||
edit: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
edit (record) {
|
||||
this.visible = true
|
||||
this.form.resetFields()
|
||||
this.model = Object.assign({}, record)
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.model, 'isQuality'))
|
||||
})
|
||||
},
|
||||
handleCancel () {
|
||||
this.close()
|
||||
},
|
||||
handleOk () {
|
||||
if (this.confirmLoading) return
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.confirmLoading = true
|
||||
const param = Object.assign({}, values)
|
||||
param.id = this.model.id
|
||||
postAction(this.url.edit, param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.success)
|
||||
this.$emit('ok')
|
||||
this.visible = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.confirmLoading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
close () {
|
||||
this.visible = false
|
||||
this.model = {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
<script>
|
||||
|
||||
import { getScoreDetail } from '../../../../api/enterpriseStandardLibraryApi'
|
||||
|
||||
const fixDataSourse = [
|
||||
{
|
||||
id: 1,
|
||||
@@ -359,9 +361,6 @@ export default {
|
||||
dataSource: []
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.initData()
|
||||
},
|
||||
watch: {
|
||||
leftCurr: {
|
||||
immediate: true,
|
||||
@@ -386,10 +385,26 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
initData () {
|
||||
this.scoreData = initData
|
||||
this.nameArr = Object.keys(this.scoreData)
|
||||
this.leftCurr = this.nameArr[0]
|
||||
open (id) {
|
||||
this.visible = true
|
||||
this.initData(id)
|
||||
},
|
||||
initData (id) {
|
||||
this.confirmLoading = true
|
||||
getScoreDetail({ id: id }).then(res => {
|
||||
if (res.success) {
|
||||
this.scoreData = res.result
|
||||
this.nameArr = Object.keys(this.scoreData)
|
||||
this.leftCurr = this.nameArr[0]
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
this.scoreData = []
|
||||
this.nameArr = []
|
||||
this.leftCurr = ''
|
||||
}
|
||||
}).finally(() => {
|
||||
this.confirmLoading = false
|
||||
})
|
||||
},
|
||||
// 左侧选中改变
|
||||
leftChange (value) {
|
||||
|
||||
Reference in New Issue
Block a user