[add] 企标评审会记录联调

This commit is contained in:
lideqin
2023-09-11 16:24:28 +08:00
parent ce03708101
commit 9240f9fa55
6 changed files with 96 additions and 129 deletions
+6 -3
View File
@@ -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) {