对接法规技术评估

This commit is contained in:
qq787203167
2022-07-14 15:23:21 +08:00
parent 8c1a59a4e5
commit d292b1424b
6 changed files with 267 additions and 105 deletions
+2
View File
@@ -1136,4 +1136,6 @@ module.exports = {
sponsorFeedback:'Sponsor feedback',
processNumber:'Process number',
processName:'Process Name',
feedbackResults:'Feedback results',
theDoesNotSupportPreview:'The current file format does not support Preview',
}
+2
View File
@@ -1140,4 +1140,6 @@ module.exports = {
sponsorFeedback:'发起人反馈',
processNumber:'流程编号',
processName:'流程名称',
feedbackResults:'反馈结果',
theDoesNotSupportPreview:'当前文件格式不支持预览',
}
@@ -26,10 +26,10 @@
<a-icon type="cloud-upload"/>
{{$t('uploadMonthly')}}
</div>
<div @click="BatchDeleteClick" class="operator-text">
<a-icon type="delete"/>
{{$t('BatchDelete')}}
</div>
<!-- <div @click="BatchDeleteClick" class="operator-text">-->
<!-- <a-icon type="delete"/>-->
<!-- {{$t('BatchDelete')}}-->
<!-- </div>-->
</div>
<div>
<a-table
@@ -46,13 +46,21 @@
<span slot="language" slot-scope="text,record">
<span>{{text == 1?$t('chinese'):$t('English')}}</span>
</span>
<span slot="RegulationMonthlyName" slot-scope="text,record">
<a @click="preview(record)">{{text}}</a>
</span>
<span slot="operation" slot-scope="text,record">
<a class="text-operation"
v-if="record.createBy == userData.username"
@click="withdraw(record)">
{{record.issueStatus == 2 ? $t('release') : $t('withdraw')}}
</a>
<a class="text-operation"
v-if="record.createBy == userData.username && record.issueStatus == 2"
@click="deleteLib(record)">{{$t('deleteLib')}}</a>
<a class="text-operation"
v-if="record.createBy == userData.username || record.issueStatus == 1"
@click="download(record)">{{$t('download')}}</a>
</span>
</a-table>
<div class="page" v-if="dataSource && dataSource.length > 0">
@@ -75,7 +83,9 @@
<script>
import eventBUs from '../../../../common/event'
import managementAdd from './modules/managementAdd'
import { getAction, postAction } from '@/api/manage'
import { getAction, postAction, downloadFile } from '@/api/manage'
import { mapGetters } from 'vuex'
import { Base64 } from 'js-base64'
export default {
name: 'RegulationMonthlyManagement',
@@ -97,13 +107,16 @@
pageSize: 10,
pageNo: 1,
queryParam: {},
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
userData: {},
columns: [
{
title: this.$t('RegulationMonthlyName'),
align: 'center',
dataIndex: 'name',
width: 190,
ellipsis: true
ellipsis: true,
scopedSlots: { customRender: 'RegulationMonthlyName' }
},
{
title: this.$t('monthlyLanguage'),
@@ -146,8 +159,10 @@
},
mounted() {
this.getList()
this.userData = this.userInfo()
},
methods: {
...mapGetters(['userInfo']),
searchQuery() {
this.pageNo = 1
this.getList()
@@ -191,6 +206,26 @@
}
})
},
preview(item) {
let fileName = item.name
let index1 = fileName.lastIndexOf('.')
let index2 = fileName.length
let fileSuffix = fileName.substring(index1, index2)
if (fileSuffix === '.pdf') {
window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + item.fileId + '&userName=' + this.userInfo().username))
} else if (fileSuffix === '.docx') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.fileId + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.fileId + fileSuffix)
window.open(url, '_blank')
} else {
this.$message.warning(this.$t('theDoesNotSupportPreview'))
}
},
download(item) {
downloadFile('/sys/common/downLoadFile', item.name, { id: item.fileId, userName: this.userInfo().username })
},
uploadMonthlyClick() {
this.$refs.managementAddRef.add()
},
@@ -6,7 +6,7 @@
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
<!-- <a-icon type="home" style="margin-right: 6px;"/>-->
<!-- </span>-->
{{$t('regulatoryTechnicalEvaluationResults')}}
{{$route.query.serialNumber +' '+$t('regulatoryTechnicalEvaluationResults')}}
</div>
</div>
<div style="padding-top: 68px;background: #fff">
@@ -19,7 +19,7 @@
</a-button>
</div>
<div class="processBackground-text">
dskf' ;sdfl';s sd稍等景点风光大家分工法规地方官给,。不买;两个客人坦克;量大幅高开的管理骨科大夫给的快感的法律公开大家赶快来的风格
{{$route.query.processBackground}}
</div>
<div class="header-text">
{{$t('engineerFeedbackResults')}}
@@ -35,10 +35,10 @@
</div>
<PersonnelSelection class="box-input"
:personneQuery="queryParam"
:query="{db_field_name:'Assessor',db_field_txt:$t('Assessor')}"
:query="{db_field_name:'evaluators',db_field_txt:$t('Assessor')}"
:isInput="true"
@change="PersonnelSelectionChange"
v-model="queryParam.AssessorName"/>
v-model="queryParam.evaluatorsName"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
@@ -46,8 +46,18 @@
<div class="title-text" :title="$t('complianceResults')">
<span>{{$t('complianceResults')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('complianceResults')"
v-model="queryParam.title"></j-input>
<a-select :placeholder="$t('PleaseSelect')+$t('complianceResults')"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
v-model="queryParam.complianceResult">
<a-select-option v-for="(item, key) in complianceResultsList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title="item.name ">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
@@ -61,7 +71,7 @@
</div>
<div class="table-operator">
<div @click="fileExportClick" class="operator-text">
<a-icon type="apartment"/>
<a-icon type="export" :rotate="-90"/>
{{$t('fileExport')}}
</div>
</div>
@@ -71,142 +81,203 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%'}"
:scroll="{x: '100%',y:'calc(100vh - 100px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns"
>
<div slot="clauseContent" slot-scope="text,result">
<a-tooltip placement="topLeft">
<template slot="title">
<span v-html="text"></span>
</template>
<div class="clauseContent-text" v-html="text"></div>
</a-tooltip>
</div>
<span slot="accessoryFile" slot-scope="text,result">
<a v-if="text" @click="accessoryFileClick(text)">
{{ $t('viewFile') }}
</a>
<span v-else>--</span>
</span>
</a-table>
<!-- <div class="page" v-if="dataSource && dataSource.length > 0">-->
<!-- <a-pagination-->
<!-- :show-total="total => $t('total')+` ${total} `+$t('strip')"-->
<!-- show-quick-jumper-->
<!-- show-size-changer-->
<!-- :page-size.sync="pageSize"-->
<!-- :total="total"-->
<!-- :current="pageNo"-->
<!-- @change="pageOnChange"-->
<!-- @showSizeChange="SizeChange"-->
<!-- />-->
<!-- </div>-->
</div>
</a-card>
</div>
</div>
</div>
</div>
<viewFileModel ref="viewFileModelRef"/>
</div>
</template>
<script>
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { getAction, postAction, downloadFile } from '@/api/manage'
import viewFileModel from '@/components/viewFileModel/index'
export default {
name: 'evaluationResultsClause',
components:{
PersonnelSelection
components: {
PersonnelSelection,
viewFileModel
},
data() {
return {
queryParam: {},
dataSource: [],
selectedRowKeys: [],
complianceResultsList: [
{
name: this.$t('accord'),
value: 'Compliance'
},
{
name: this.$t('nonConformity'),
value: 'Non-Compliance'
}
],
loading: false,
url: {
list: '/lawsTechnologyEvaluation/lawsTechnologyEvaluationItemResultEO/list',
exportData: '/lawsTechnologyEvaluation/lawsTechnologyEvaluationItemResultEO/exportZip'
},
columns: [
{
title: this.$t('clauseNo'),
dataIndex: 'items_num',
dataIndex: 'itemNum',
align: 'center',
ellipsis: true
ellipsis: true,
width: 160
},
{
title: this.$t('clauseName'),
dataIndex: 'items_name',
dataIndex: 'itemName',
align: 'center',
ellipsis: true
ellipsis: true,
width: 160
},
{
title: this.$t('clauseContent'),
dataIndex: 'iterms_conditions',
dataIndex: 'itemContent',
align: 'center',
ellipsis: true
width: 260,
scopedSlots: { customRender: 'clauseContent' }
},
{
title: this.$t('Assessor'),
dataIndex: 'Assessor',
align: 'center',
ellipsis: true
ellipsis: true,
width: 160
},
{
title: this.$t('evaluationMethod'),
dataIndex: 'evaluationMethod',
dataIndex: 'evaluationMethodsName',
align: 'center',
ellipsis: true
ellipsis: true,
width: 160
},
{
title: this.$t('nameTechnicalDocument'),
dataIndex: 'nameTechnicalDocument',
dataIndex: 'technicalFileName',
align: 'center',
ellipsis: true
ellipsis: true,
width: 260
},
{
title: this.$t('chapter'),
dataIndex: 'chapter',
dataIndex: 'section',
align: 'center',
ellipsis: true
ellipsis: true,
width: 260
},
{
title: this.$t('complianceResults'),
dataIndex: 'complianceResults',
dataIndex: 'complianceResultName',
align: 'center',
ellipsis: true
ellipsis: true,
width: 160
},
{
title: this.$t('opinion'),
dataIndex: 'opinion',
align: 'center',
ellipsis: true
ellipsis: true,
width: 260
},
{
title: this.$t('enclosure'),
dataIndex: 'enclosure',
dataIndex: 'accessoryFile',
align: 'center',
ellipsis: true
ellipsis: true,
width: 160,
scopedSlots: { customRender: 'accessoryFile' }
},
{
title: this.$t('feedbackTime'),
dataIndex: 'feedbackTime',
dataIndex: 'createTime',
align: 'center',
ellipsis: true
ellipsis: true,
width: 160
}
]
}
},
mounted() {
this.getList()
},
methods: {
CurrentStandard() {
},
onSelectChange(value) {
this.selectedRowKeys = value
},
searchQuery() {
this.pageNo = 1
this.getList()
},
searchReset() {
this.queryParam = {}
this.pageNo = 1
this.getList()
},
getList() {
let query = {
lawsTechnologyEvaluationId: this.$route.query.id,
...this.queryParam
}
this.loading = true
getAction(this.url.list, query).then((res) => {
if (res.success) {
this.dataSource = res.result || []
this.loading = false
} else {
this.dataSource = []
this.loading = false
}
})
},
fileExportClick() {
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
let query = {
...this.queryParam,
ids: selectedRowKeys.join(','),
lawsTechnologyEvaluationId: this.$route.query.id
}
downloadFile(this.url.exportData, this.$route.query.serialNumber + ' ' + this.$t('regulatoryTechnicalEvaluationResults') + '.zip',
query, this.Deselect)
},
Deselect() {
this.selectedRowKeys = []
},
PersonnelSelectionChange(value, id) {
this.queryParam[value] = id
this.queryParam = { ...this.queryParam }
},
accessoryFileClick(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
}
}
}
</script>
@@ -228,6 +299,7 @@
display: flex;
justify-content: space-between;
border-bottom: 2px #eff1f3 solid;
z-index: 1000;
background: #fff;
.doc-detail-title {
@@ -326,9 +398,30 @@
margin-top: 2px;
}
.clauseContent-text {
width: 100%;
overflow: hidden;
display: -webkit-box;
text-overflow: ellipsis;
/*! autoprefixer: off */
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
/*! autoprefixer: on;*/
text-justify: inter-ideograph;
word-break: break-all
}
</style>
<style>
.box-clause .ant-card-body {
padding: 0;
}
.box-input .ant-select-selection--single {
height: 38px;
}
.box-input .ant-select-selection__rendered {
line-height: 38px;
height: 38px;
}
</style>
@@ -6,7 +6,7 @@
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
<!-- <a-icon type="home" style="margin-right: 6px;"/>-->
<!-- </span>-->
{{$t('regulatoryTechnicalEvaluationResults')}}
{{$route.query.serialNumber +' '+$t('regulatoryTechnicalEvaluationResults')}}
</div>
</div>
<div style="padding-top: 68px;background: #fff">
@@ -19,18 +19,18 @@
</a-button>
</div>
<div class="processBackground-text">
dskf' ;sdfl';s sd稍等景点风光大家分工法规地方官给,。不买;两个客人坦克;量大幅高开的管理骨科大夫给的快感的法律公开大家赶快来的风格
{{$route.query.processBackground}}
</div>
<!-- <div class="header-text">-->
<!-- {{$t('engineerFeedbackResults')}}-->
<!-- </div>-->
<a-card :bordered="false" class="box-clause" style="margin-top: 20px" v-for="item in dataSource">
<a-card :bordered="false" class="box-clause" style="margin-top: 20px" v-for="(item,index) in dataSource">
<div class="table-operator">
<div @click="fileExportClick" class="operator-text" style="float: left;font-size: 16px">
{{$t('engineerFeedbackResults')}}
<div class="operator-text" style="float: left;font-size: 16px">
{{$t('engineer')+item.createBy+$t('feedbackResults')}}
</div>
<div @click="fileExportClick" class="operator-text">
<a-icon type="apartment"/>
<div @click="fileExportClick" v-if="index == 0" class="operator-text">
<a-icon type="export" :rotate="-90"/>
{{$t('fileExport')}}
</div>
</div>
@@ -40,77 +40,77 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%'}"
:data-source="item.dataList"
:scroll="{x: '100%',y:350}"
:data-source="item.lawsTechnologyEvaluationResultEOList"
:columns="columns"
>
<span slot="accessoryFile" slot-scope="text,result">
<a v-if="text" @click="accessoryFileClick(text)">
{{ $t('viewFile') }}
</a>
<span v-else>--</span>
</span>
</a-table>
</div>
<div class="text-results">
{{$t('complianceResults')}}{{item.complianceResultName}}
</div>
</a-card>
</div>
</div>
</div>
</div>
<viewFileModel ref="viewFileModelRef"/>
</div>
</template>
<script>
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { getAction, postAction, downloadFile } from '@/api/manage'
import viewFileModel from '@/components/viewFileModel/index'
export default {
name: 'evaluationResultsWhole',
components: {
PersonnelSelection
PersonnelSelection,
viewFileModel
},
data() {
return {
queryParam: {},
dataSource: [
{
dataList:[
{
relevantSections:111,
problemDescription:222,
enclosure:'',
}
]
},
{
dataList:[
{
relevantSections:111,
problemDescription:222,
enclosure:'',
}
]
}
],
dataSource: [],
url: {
list: '/lawsTechnologyEvaluation/lawsTechnologyEvaluationComplianceResultEO/list',
exportData:'lawsTechnologyEvaluation/lawsTechnologyEvaluationComplianceResultEO/exportZip',
},
selectedRowKeys: [],
loading: false,
columns: [
{
title: this.$t('relevantSections'),
dataIndex: 'relevantSections',
dataIndex: 'relatedSection',
align: 'center',
ellipsis: true
},
{
title: this.$t('problemDescription'),
dataIndex: 'problemDescription',
dataIndex: 'issueOrSuggest',
align: 'center',
ellipsis: true
},
{
title: this.$t('enclosure'),
dataIndex: 'enclosure',
dataIndex: 'accessoryFile',
align: 'center',
ellipsis: true
ellipsis: true,
scopedSlots: { customRender: 'accessoryFile' }
}
]
}
},
mounted() {
this.getList()
},
methods: {
CurrentStandard() {
@@ -118,22 +118,30 @@
},
onSelectChange(value) {
},
searchQuery() {
this.pageNo = 1
this.getList()
},
searchReset() {
this.queryParam = {}
this.pageNo = 1
this.getList()
},
fileExportClick() {
let query = {
lawsTechnologyEvaluationId: this.$route.query.id
}
downloadFile(this.url.exportData, this.$route.query.serialNumber + ' ' + this.$t('regulatoryTechnicalEvaluationResults') + '.zip', query)
},
PersonnelSelectionChange(value, id) {
this.queryParam[value] = id
this.queryParam = { ...this.queryParam }
getList() {
let query = {
lawsTechnologyEvaluationId: this.$route.query.id
}
this.loading = true
getAction(this.url.list, query).then((res) => {
if (res.success) {
this.dataSource = res.result || []
this.loading = false
} else {
this.dataSource = []
this.loading = false
}
})
},
accessoryFileClick(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
}
}
}
@@ -150,6 +158,7 @@
.doc-detail-header {
width: 100%;
height: 68px;
z-index: 1000;
line-height: 68px;
padding: 0 0 0 32px;
box-sizing: border-box;
@@ -254,6 +263,10 @@
margin-top: 2px;
}
.text-results {
font-size: 14px;
margin-top: 10px;
}
</style>
<style>
.box-clause .ant-card-body {
@@ -156,9 +156,10 @@
<script>
import { getAction, postAction } from '@/api/manage'
import processInformation from './components/processInformation'
export default {
name: 'index',
components:{
components: {
processInformation
},
data() {
@@ -360,11 +361,27 @@
this.$refs.processInformationRef.getData(JSON.parse(JSON.stringify(row)))
},
evaluationResultsClick(row) {
let newUrl = this.$router.resolve({
path: '/evaluationResultsWhole',
query: row
})
window.open(newUrl.href, '_blank')
if (row.evaluationType == 'Feedback evaluation') {
let newUrl = this.$router.resolve({
path: '/evaluationResultsWhole',
query: {
id:row.id,
processBackground:row.processBackground,
serialNumber:row.serialNumber
}
})
window.open(newUrl.href, '_blank')
} else {
let newUrl = this.$router.resolve({
path: '/evaluationResultsClause',
query: {
id:row.id,
processBackground:row.processBackground,
serialNumber:row.serialNumber
}
})
window.open(newUrl.href, '_blank')
}
}
}
}