[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 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 { export {
getEnterpriseStandardTableHeader, getEnterpriseStandardTableHeader,
@@ -39,5 +41,6 @@ export {
collectStandard, collectStandard,
shareStandard, shareStandard,
setQualityStandard setQualityStandard,
getScoreDetail
} }
@@ -8,6 +8,48 @@ module.exports = {
temporaryPermissionSet: 'Temporary Permission Setting', temporaryPermissionSet: 'Temporary Permission Setting',
collection: 'Collect', collection: 'Collect',
cancelCollection: 'Cancel Collection', 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-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.publicize.publicizeData')" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item :label="$t('enterpriseStandardLibrary.publicize.publicizeData')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-range-picker <a-range-picker
:placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.publicize.publicizeData')"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
format="YYYY-MM-DD" format="YYYY-MM-DD"
@change="publicizeDataChange" @change="publicizeDataChange"
@@ -57,7 +57,7 @@
@change="handleTableChange"> @change="handleTableChange">
<!-- 企标编号/企标名称 --> <!-- 企标编号/企标名称 -->
<template v-slot:enterpriseStandardNum="{text, record}"> <template v-slot:toDeatil="{text, record}">
<a-tooltip overlay-class-name="tooltip-style"> <a-tooltip overlay-class-name="tooltip-style">
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template> <template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<a class="link-a" @click="handleGoDetail(record)">{{ text }}</a> <a class="link-a" @click="handleGoDetail(record)">{{ text }}</a>
@@ -66,12 +66,10 @@
<!-- 操作栏 --> <!-- 操作栏 -->
<div slot="action" slot-scope="{text, record}" class="action-span-cell"> <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> <a @click="handleReviewDetail(record)" class="table-ope-btn">{{ $t('enterpriseStandardLibrary.reviewMeeting.reviewDetail') }}</a>
</div> </div>
</j-table> </j-table>
<review-meeting-modal ref="modalForm" @ok="modalFormOk"></review-meeting-modal>
<score-detail ref="scoreDetail" @ok="loadData"></score-detail> <score-detail ref="scoreDetail" @ok="loadData"></score-detail>
</div> </div>
@@ -79,15 +77,15 @@
</template> </template>
<script> <script>
import '@assets/less/common.less'
import JTable from '@/components/jero/JTable' import JTable from '@/components/jero/JTable'
import { JeroListMixin } from '@/mixins/JeroListMixin' import { JeroListMixin } from '@/mixins/JeroListMixin'
import { setQualityStandard } from '@/api/enterpriseStandardLibraryApi' import { setQualityStandard } from '@/api/enterpriseStandardLibraryApi'
import ScoreDetail from './modules/ScoreDetail' import ScoreDetail from './modules/ScoreDetail'
import ReviewMeetingModal from './modules/ReviewMeetingModal'
export default { export default {
name: 'ReviewMeetingList', name: 'ReviewMeetingList',
components: { ReviewMeetingModal, ScoreDetail, JTable }, components: { ScoreDetail, JTable },
mixins: [JeroListMixin], mixins: [JeroListMixin],
data () { data () {
return { return {
@@ -113,55 +111,56 @@ export default {
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'standardNo', dataIndex: 'standardNo',
scopedSlots: { customRender: 'enterpriseStandardNum' } scopedSlots: { customRender: 'toDeatil' }
}, },
{ {
title: this.$t('enterpriseStandardLibrary.reviewMeeting.enterpriseStandardName'), title: this.$t('enterpriseStandardLibrary.reviewMeeting.enterpriseStandardName'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'standardName', dataIndex: 'standardName',
scopedSlots: { customRender: 'enterpriseStandardName' } scopedSlots: { customRender: 'toDeatil' }
}, },
{ {
title: this.$t('enterpriseStandardLibrary.reviewMeeting.principalDrafter'), title: this.$t('enterpriseStandardLibrary.reviewMeeting.principalDrafter'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'principalDrafter', dataIndex: 'mainDraftingUser',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ {
title: this.$t('enterpriseStandardLibrary.reviewMeeting.mainDraftUnit'), title: this.$t('enterpriseStandardLibrary.reviewMeeting.mainDraftUnit'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'mainDraftUnit', dataIndex: 'mainDraftingUnit',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ {
title: this.$t('enterpriseStandardLibrary.reviewMeeting.reviewData'), title: this.$t('enterpriseStandardLibrary.reviewMeeting.reviewData'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'reviewData', dataIndex: 'reviewDate',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ {
title: this.$t('enterpriseStandardLibrary.reviewMeeting.reviewer'), title: this.$t('enterpriseStandardLibrary.reviewMeeting.reviewer'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'declareUserName', dataIndex: 'reviewUsers',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ {
title: this.$t('enterpriseStandardLibrary.reviewMeeting.average'), title: this.$t('enterpriseStandardLibrary.reviewMeeting.average'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'declareFileName', dataIndex: 'avgScore',
sorter: true,
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ {
title: this.$t('enterpriseStandardLibrary.reviewMeeting.isQuality'), title: this.$t('enterpriseStandardLibrary.reviewMeeting.isQuality'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'isQuality', dataIndex: 'qualityFlag',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ {
@@ -182,6 +181,18 @@ export default {
this.queryParam.reviewStartDate = val[0] this.queryParam.reviewStartDate = val[0]
this.queryParam.reviewEndDate = val[1] 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) { handleGoDetail (record) {
this.$openPageNewSheet({ this.$openPageNewSheet({
@@ -213,7 +224,7 @@ export default {
}, },
// 点击评分详情 // 点击评分详情
handleReviewDetail (record) { 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> <script>
import { getScoreDetail } from '../../../../api/enterpriseStandardLibraryApi'
const fixDataSourse = [ const fixDataSourse = [
{ {
id: 1, id: 1,
@@ -359,9 +361,6 @@ export default {
dataSource: [] dataSource: []
} }
}, },
mounted () {
this.initData()
},
watch: { watch: {
leftCurr: { leftCurr: {
immediate: true, immediate: true,
@@ -386,10 +385,26 @@ export default {
} }
}, },
methods: { methods: {
initData () { open (id) {
this.scoreData = initData this.visible = true
this.nameArr = Object.keys(this.scoreData) this.initData(id)
this.leftCurr = this.nameArr[0] },
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) { leftChange (value) {