Commit 650a6373 by 史敦盼

修改

1 parent cb9f6fb2
...@@ -584,6 +584,15 @@ export function getPrelDesInspecteTable(params) { ...@@ -584,6 +584,15 @@ export function getPrelDesInspecteTable(params) {
export function savePrelDesInspecte(params) { export function savePrelDesInspecte(params) {
return post('/network/prel-des-inspecte/cComment/', params) return post('/network/prel-des-inspecte/cComment/', params)
} }
// 根据项目ID和类型查询对应评审意见
export function detailPrelDesInspecte(params) {
return post('/network/prel-des-inspecte/qReview/', params)
}
// 根据项目ID和架构归属ID查询对应架构视图
export function qViewPrelDesInspecte(params) {
return post('/network/prel-des-inspecte/qView/', params)
}
// 概设架构遵从检查-列表 // 概设架构遵从检查-列表
export function getGaiSheJiaGouZunCongJiaChaTable(params) { export function getGaiSheJiaGouZunCongJiaChaTable(params) {
...@@ -605,10 +614,22 @@ export function getWordImg(params) { ...@@ -605,10 +614,22 @@ export function getWordImg(params) {
export function getWordTable(params) { export function getWordTable(params) {
return post('/network/prel-des-rvw/qWordTable', params) return post('/network/prel-des-rvw/qWordTable', params)
} }
// 获取评审标准 // 获取评审片段word
export function getReviewNorm(params) { export function getReviewNorm(params) {
return post('/network/prel-des-rvw/gtReviewNorm', params) return post('/network/prel-des-rvw/gtReviewNorm', params)
} }
// 获取评审片段table
export function getQWordTable(params) {
return post('/network/prel-des-rvw/qWordTable', params)
}
// 概设材料审查-架构遵从-根据项目ID获取word片段图片
export function getQWordPic_(params) {
return post('/network/prel-des-inspecte/qWordPic', params)
}
// 获取评审片段img
export function getQWordPic(params) {
return post('/network/prel-des-rvw/qWordPic', params)
}
// 概要设计评审保存 // 概要设计评审保存
export function saveExamine(params) { export function saveExamine(params) {
return post('/network/prel-des-rvw/sComment', params) return post('/network/prel-des-rvw/sComment', params)
......
...@@ -14,3 +14,9 @@ export const queryDemandManagement = '/network/need-info/' ...@@ -14,3 +14,9 @@ export const queryDemandManagement = '/network/need-info/'
export const queryProjectInfo = '/network/prj-info/' export const queryProjectInfo = '/network/prj-info/'
// 概设材料意见编制 // 概设材料意见编制
export const queryConceptualViewOrg = '/network/online-rev-wr/qy/' export const queryConceptualViewOrg = '/network/online-rev-wr/qy/'
// 系统架构管控要求-评审情况(概要设计)-分页查询
export const queryPrelDesInspecte = '/network/prel-des-inspecte/'
// 概设关联业务管理 - 概设统计分析
export const queryQyNeedReviewCount = '/network/online-rev-wr/qyNeedReviewCount'
// 概设关联业务管理 - 总体架构维护
export const queryArcAstSys = '/network/arc-ast-sys/'
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* @Autor: pan * @Autor: pan
* @Date: 2024-03-11 14:53:40 * @Date: 2024-03-11 14:53:40
* @LastEditors: pan * @LastEditors: pan
* @LastEditTime: 2024-03-20 15:09:49 * @LastEditTime: 2024-03-22 17:17:18
--> -->
<!-- 示例 <!-- 示例
columns: [{ label: '头像', prop: 'avatar', align: 'center', __slotName: 'avatar',callback: (row, title) => { columns: [{ label: '头像', prop: 'avatar', align: 'center', __slotName: 'avatar',callback: (row, title) => {
...@@ -217,7 +217,11 @@ export default { ...@@ -217,7 +217,11 @@ export default {
this.$refs.tableConfig.clearSelection() this.$refs.tableConfig.clearSelection()
}, },
handleToText(item, state) { handleToText(item, state) {
const obj = item.options.find((v) => v.value == state) || {} let val = state
if (!val) {
val = item.emptyToNum || 0
}
const obj = item.options.find((v) => v.value == val) || {}
return obj['label'] return obj['label']
}, },
/** /**
......
...@@ -73,3 +73,8 @@ export const sendStateOptions = [ ...@@ -73,3 +73,8 @@ export const sendStateOptions = [
{ label: '未发送', value: 2 }, { label: '未发送', value: 2 },
{ label: '发送失败', value: 3 }, { label: '发送失败', value: 3 },
] ]
export const completionStatus = [
{ label: '未完成', value: 0 },
{ label: '已完成', value: 1 },
]
...@@ -69,7 +69,7 @@ export const menuOptions = [ ...@@ -69,7 +69,7 @@ export const menuOptions = [
children: [ children: [
{ {
name: '架构资产管理', name: '架构资产管理',
path: '', path: '/main/busiAssetslist',
}, },
{ {
name: '架构视图管理', name: '架构视图管理',
......
<!--
* @Description: integration-info-controller
* @Version: 2.0
* @Autor: pan
* @Date: 2024-03-21 20:58:31
* @LastEditors: pan
* @LastEditTime: 2024-03-22 16:48:05
-->
<template> <template>
<div class="searchTable"> <div class="searchTable">
<list-page> <list-page>
......
<!--
* @Description: tab1查/online-rev-wr/qyNeedReviewCount tab2系统架构资产 isExtend传0 同步更新调用继承接口isExtend传0
* @Version: 2.0
* @Autor: pan
* @Date: 2024-03-21 20:58:31
* @LastEditors: pan
* @LastEditTime: 2024-03-22 17:35:45
-->
<template> <template>
<div class="searchTable"> <div class="searchTable">
<list-page> <list-page>
...@@ -29,15 +37,14 @@ ...@@ -29,15 +37,14 @@
</template> </template>
<!-- 中部操作按钮 --> <!-- 中部操作按钮 -->
<template #operationWrap> <template #operationWrap>
<!-- <el-button <el-button
v-if="activeName === '1'" v-if="activeName === '2'"
icon="el-icon-document-add" icon="el-icon-document-add"
type="primary" type="primary"
size="medium" size="medium"
plain plain
@click="fnMaterialAnalysis()" >同步更新</el-button
>材料解析</el-button >
> -->
</template> </template>
<!-- 表格插槽 --> <!-- 表格插槽 -->
<template #tableWrap> <template #tableWrap>
...@@ -47,6 +54,9 @@ ...@@ -47,6 +54,9 @@
:query="query" :query="query"
:columns="columns" :columns="columns"
> >
<template #percent="{ data }">
<span> {{ handlePercent(data) }}</span>
</template>
</table-config> </table-config>
</template> </template>
</list-page> </list-page>
...@@ -59,7 +69,7 @@ import ListPage from '@/components/ListPage.vue' ...@@ -59,7 +69,7 @@ import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue' import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue' import TableConfig from '@/components/TableConfig.vue'
import { queryConceptualReview } from '@/api/interface' import { queryQyNeedReviewCount, queryArcAstSys } from '@/api/interface'
import { exportRiskReport } from '@/api/index' import { exportRiskReport } from '@/api/index'
import { archiPrjReviewEnum, buildType } from '@/utils/dictionary' import { archiPrjReviewEnum, buildType } from '@/utils/dictionary'
// import { str } from './base64' // import { str } from './base64'
...@@ -68,13 +78,12 @@ export default { ...@@ -68,13 +78,12 @@ export default {
data() { data() {
return { return {
src: '', src: '',
constructionTypeOptions: [],
selectRows: [], selectRows: [],
query: { query: {
url: queryConceptualReview, url: queryQyNeedReviewCount,
method: 'post', method: 'post',
queryParam: { queryParam: {
reviewEnum: 'TECH_ROUTE', countType: 1,
}, },
}, },
activeName: '1', activeName: '1',
...@@ -88,17 +97,12 @@ export default { ...@@ -88,17 +97,12 @@ export default {
{ label: '各批次系统统计', name: '2' }, { label: '各批次系统统计', name: '2' },
], ],
subTabOptions2: [ subTabOptions2: [
{ label: '业务流程', name: '1' }, { label: '业务架构', name: '1' },
{ label: '技术路线', name: '2' }, { label: '应用架构', name: '2' },
{ label: '功能清单', name: '3' }, { label: '数据架构', name: '3' },
{ label: '数据实体', name: '4' }, { label: '技术架构', name: '4' },
{ label: '安全设计', name: '5' }, { label: '安全架构', name: '5' },
], ],
activeSubTabItem: {
label: '报告规范性',
value: 'REPORT_NORM',
name: '1',
},
} }
}, },
components: { components: {
...@@ -107,6 +111,18 @@ export default { ...@@ -107,6 +111,18 @@ export default {
TableConfig, TableConfig,
}, },
computed: { computed: {
getCountType() {
if (this.activeName === '1') {
if (this.activeName2 === '1') {
return 1
} else {
console.log('2')
return 2
}
} else {
return undefined
}
},
subTabOptions() { subTabOptions() {
if (this.activeName === '1') { if (this.activeName === '1') {
return this.subTabOptions1 return this.subTabOptions1
...@@ -133,21 +149,50 @@ export default { ...@@ -133,21 +149,50 @@ export default {
if (this.activeName2 === '1') { if (this.activeName2 === '1') {
arr = [ arr = [
{ label: '序号', type: 'index', width: '80px' }, { label: '序号', type: 'index', width: '80px' },
{ label: '单位名称', prop: 'orgName' }, { label: '单位名称', prop: 'manageOrgName' },
{ label: '概设需求数(个)', prop: 'orgName1' }, { label: '概设需求数(个)', prop: 'needCount' },
{ label: '概设材料通过数(个)', prop: 'orgName2' }, { label: '概设材料通过数(个)', prop: 'reviewPassCount' },
{ label: '概设通过比(%)', prop: 'orgName3' }, { label: '概设通过比(%)', __slotName: 'percent' },
] ]
} else { } else {
arr = [ arr = [
{ label: '序号', type: 'index', width: '80px' }, { label: '序号', type: 'index', width: '80px' },
{ label: '批次', prop: 'batName' }, { label: '批次', prop: 'batName' },
{ label: '项目需求数(个)', prop: 'orgName3' }, { label: '项目需求数(个)', prop: 'needCount' },
{ label: '项目通过数(个)', prop: 'orgName2' }, { label: '项目通过数(个)', prop: 'reviewPassCount' },
{ label: '项目通过比(%)', prop: 'prjRate' }, { label: '项目通过比(%)', __slotName: 'percent' },
] ]
} }
} else { } else {
arr = [
{ type: 'selection', width: '55px' },
{ label: '序号', type: 'index', width: '80px' },
{ label: '资产名称', prop: 'assetName' },
{ label: '资产类型(所属元素)', prop: 'eleName' },
{
label: '来源',
prop: 'isExtend',
options: [],
collectionType: true,
},
{ label: '创建人', prop: 'createMan' },
{ label: '创建时间', prop: 'createTime' },
{
label: '操作',
type: 'operation',
width: '200px',
actionButtons: [
{
title: '同步更新',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
],
callback: (row, title) => {},
},
]
} }
return arr return arr
...@@ -155,6 +200,12 @@ export default { ...@@ -155,6 +200,12 @@ export default {
}, },
mounted() {}, mounted() {},
methods: { methods: {
handlePercent(scope) {
const item = scope.row
if (item.reviewPassCount && item.needCount) {
return (item.reviewPassCount / item.needCount).toFixed(2) * 100 + '%'
}
},
// 材料解析 // 材料解析
fnMaterialAnalysis() { fnMaterialAnalysis() {
if (this.selectRows.length == 0) { if (this.selectRows.length == 0) {
...@@ -192,16 +243,20 @@ export default { ...@@ -192,16 +243,20 @@ export default {
this.$refs.searchTable.queryData() this.$refs.searchTable.queryData()
}, },
handleClick(tab, event) { handleClick(tab, event) {
// console.log(tab, event)
// this.activeSubTabItem = tab
this.activeName2 = '1' this.activeName2 = '1'
// this.query.queryParam.reviewEnum = this.getArchiPrjReviewEnum() if (this.activeName === '2') {
this.query.url = queryArcAstSys
this.query.queryParam.isExtend = 0
this.query.queryParam.countType = undefined
} else {
this.query.url = queryQyNeedReviewCount
this.query.queryParam.isExtend = undefined
}
console.log('refs', this.$refs.searchTable)
this.$refs.searchTable.queryData() this.$refs.searchTable.queryData()
}, },
handleSubClick(tab, event) { handleSubClick(tab, event) {
// console.log(tab, event) this.query.queryParam.countType = this.getCountType
this.activeSubTabItem = tab
// this.query.queryParam.reviewEnum = this.getArchiPrjReviewEnum()
this.$refs.searchTable.queryData() this.$refs.searchTable.queryData()
}, },
}, },
......
<!--
* @Description: tab3: 2word tab4: only+ table tab5: only + word tab6: only + word tab7: only + word tab8: + table tab9: + table
* @Version: 2.0
/prj-need-file/
* "busiId": 项目,
"busiIdType": 1,
* @Autor: pan
* @Date: 2024-03-21 20:58:31
* @LastEditors: pan
* @LastEditTime: 2024-03-22 19:51:11
-->
<template> <template>
<div class="flex-column m-10 w-100 conceptualExamine"> <div class="flex-column m-10 w-100 conceptualExamine">
<div class="content flex"> <div class="content flex">
...@@ -13,12 +24,24 @@ ...@@ -13,12 +24,24 @@
> >
<!-- <img :src="leftSrc" alt="" /> --> <!-- <img :src="leftSrc" alt="" /> -->
<template v-if="tab !== '8' && tab !== '9'"> <template v-if="tab !== '8' && tab !== '9'">
<img <div
v-for="(item, idx) in leftBaseOptions" class="office w-100 h-100"
:key="idx" v-if="leftContentType === 'onlyoffice'"
:src="item" >
alt="" <vab-only-office
/> id="office-preview"
:documentServerUrl="documentServerUrl"
:config="config"
/>
</div>
<template v-else>
<img
v-for="(item, idx) in leftBaseOptions"
:key="idx"
:src="item"
alt=""
/>
</template>
</template> </template>
<Tab8Left v-else :tab="tab" @toRemark="toRemark" /> <Tab8Left v-else :tab="tab" @toRemark="toRemark" />
</div> </div>
...@@ -30,15 +53,27 @@ ...@@ -30,15 +53,27 @@
</div> </div>
<div <div
class="right_container_content flex-1" class="right_container_content flex-1"
v-loading="leftLoading" v-loading="rightLoading"
element-loading-text="加载中" element-loading-text="加载中"
> >
<img <div
v-for="(item, idx) in leftBaseOptions" class="office w-100 h-100"
:key="idx" v-if="rightContentType === 'onlyoffice'"
:src="item" >
alt="" <vab-only-office
/> id="office-preview2"
:documentServerUrl="documentServerUrl"
:config="config"
/>
</div>
<template v-else>
<img
v-for="(item, idx) in rightBaseOptions"
:key="idx"
:src="item"
alt=""
/>
</template>
</div> </div>
</div> </div>
</div> </div>
...@@ -91,11 +126,20 @@ ...@@ -91,11 +126,20 @@
<script> <script>
import Tab8Left from '@/views/conceptualReview/Tab8Left' import Tab8Left from '@/views/conceptualReview/Tab8Left'
import { getReviewNorm, saveExamine, exportRiskReport } from '@/api' import vabOnlyOffice from '@/components/onlyOffice/index.vue'
import {
getReviewNorm,
getQWordTable,
getQWordPic,
saveExamine,
exportRiskReport,
getQWordPic_,
} from '@/api'
export default { export default {
name: 'conceptualExamine', name: 'conceptualExamine',
components: { components: {
Tab8Left, Tab8Left,
vabOnlyOffice,
}, },
data() { data() {
return { return {
...@@ -105,9 +149,51 @@ export default { ...@@ -105,9 +149,51 @@ export default {
examinName: '', examinName: '',
row: {}, row: {},
leftSrc: '', leftSrc: '',
leftLoading: true, leftLoading: false,
rightLoading: false,
leftBaseOptions: [], leftBaseOptions: [],
rightBaseOptions: [], rightBaseOptions: [],
leftContentTyp: [],
rightContentType: [],
documentServerUrl: 'http://43.143.211.42:19231/',
config: {
document: {
fileType: 'docx',
// 给服务端用的唯一id,同一个id就会获取服务器缓存里的文件(有这个key,就会先根据它去缓存里找),这项如果最开始只是先试用,可以先给个空字符串
key: '71df19fbd1',
// 文件名
title: '65f90a662c18a9e9f1878156.docx',
//相关权限
// permissions: {
// copy: true, //定义内容是否可以复制到剪贴板。如果该参数设置为false,则只能在当前文档编辑器中粘贴内容。默认值为true。
// download: true, //定义文档是可以下载还是只能在线查看或编辑。如果下载权限设置为“假”的下载为...菜单选项将是缺席的文件菜单。默认值为true。
// edit: true, //定义文档是可以编辑还是只能查看。如果编辑权限设置为“true”,则文件菜单将包含编辑文档菜单选项;请注意,如果编辑权限设置为“false”,文档将在查看器中打开,即使模式参数设置为edit,您也无法将其切换到编辑器。默认值为true。
// print: true, //定义是否可以打印文档。如果打印权限设置为“false”的打印菜单选项将是缺席的文件菜单。默认值为true
// },
// 所要渲染的文件的绝对路径,这个参数很重要,它传的不是文件的本地地址,而是需要把文件传到项目所依赖的服务器,然后拿到文件在服务器的url地址(这个一般情况需要后端支持)才可以用,这个参数决定了能不能实例化出来onlyoffice对象
url: 'http://43.143.211.42:7006/downloadFile/29',
},
documentType: 'word',
height: '100%',
width: '100%',
editorConfig: {
//语言:zh-CN简体中文/en英文
lang: 'zh-CN',
//阅读状态 view/edit
mode: 'edit',
customization: {
//是否显示插件
plugins: false,
},
user: {
// 当前正在view/edit此文档的用户信息
name: '',
},
// 指定文档存储服务器的绝对路径
callbackUrl: 'http://43.143.211.42:7006/callback?fileId=29',
},
},
} }
}, },
created() { created() {
...@@ -115,12 +201,55 @@ export default { ...@@ -115,12 +201,55 @@ export default {
this.examinName = this.$route.query.examinName this.examinName = this.$route.query.examinName
this.row = JSON.parse(this.$route.query.row) this.row = JSON.parse(this.$route.query.row)
this.resultContent = this.row.reviewSuggestion || '' this.resultContent = this.row.reviewSuggestion || ''
if (this.tab === '8') { this.leftContentType = this.$route.query.leftContentType
this.leftLoading = false this.rightContentType = this.$route.query.rightContentType
if (this.tab === '8' || this.tab === '9') {
this.getRightContent()
} else { } else {
this.getReviewNorm() if (this.leftContentType !== 'onlyoffice') {
this.getLeftContent()
}
if (this.rightContentType !== 'onlyoffice') {
this.getRightContent()
}
} }
}, },
computed: {
getLeftApi() {
if (this.leftContentType === 'word') {
return getReviewNorm
} else if (this.leftContentType === 'img') {
if (this.tab === '2') {
// 王勇接口
return getQWordPic_
} else {
// 李振接口
return getQWordPic
}
} else if (this.leftContentType === 'table') {
return getQWordTable
} else {
return ''
}
},
getRightApi() {
if (this.rightContentType === 'word') {
return getReviewNorm
} else if (this.rightContentType === 'img') {
if (this.tab === '2') {
// 王勇接口
return getQWordPic_
} else {
// 李振接口
return getQWordPic
}
} else if (this.rightContentType === 'table') {
return getQWordTable
} else {
return ''
}
},
},
methods: { methods: {
// 带入到备注 // 带入到备注
toRemark(str) { toRemark(str) {
...@@ -128,18 +257,39 @@ export default { ...@@ -128,18 +257,39 @@ export default {
? this.resultContent + '\n' + str ? this.resultContent + '\n' + str
: str : str
}, },
getReviewNorm() { getLeftContent() {
const { needId } = this.row if (!this.getLeftApi) return
this.leftLoading = true
const { needId, prjId, archiPrjReviewEnum } = this.row
const params = { const params = {
needId, needId,
prjId,
archiPrjReviewEnum,
} }
getReviewNorm(params).then((res) => { this.getLeftApi(params).then((res) => {
this.leftLoading = false
if (res.code === 200) { if (res.code === 200) {
this.leftLoading = false
this.leftBaseOptions = res.data.docParserList.map( this.leftBaseOptions = res.data.docParserList.map(
(v) => `data:image/png;base64,${v.docContent}`, (v) => `data:image/png;base64,${v.docContent}`,
) )
// this.leftSrc = `data:image/png;base64,${res.data.docParserList[0].docContent}` }
})
},
getRightContent() {
if (!this.getRightApi) return
this.rightLoading = true
const { needId, prjId, archiPrjReviewEnum } = this.row
const params = {
needId,
prjId,
archiPrjReviewEnum,
}
this.getRightApi(params).then((res) => {
this.rightLoading = false
if (res.code === 200) {
this.rightBaseOptions = res.data.docParserList.map(
(v) => `data:image/png;base64,${v.docContent}`,
)
} }
}) })
}, },
......
...@@ -140,7 +140,7 @@ export default { ...@@ -140,7 +140,7 @@ export default {
{ label: '功能偏差', name: '4' }, { label: '功能偏差', name: '4' },
{ label: '系统部署', name: '5' }, { label: '系统部署', name: '5' },
{ label: '系统集成', name: '6' }, { label: '系统集成', name: '6' },
{ label: '系统按钮', name: '7' }, { label: '系统安全', name: '7' },
{ label: '功能重复风险', name: '8' }, { label: '功能重复风险', name: '8' },
{ label: '数据重复录入风险', name: '9' }, { label: '数据重复录入风险', name: '9' },
], ],
...@@ -160,8 +160,29 @@ export default { ...@@ -160,8 +160,29 @@ export default {
value: 'REPORT_NORM', value: 'REPORT_NORM',
name: '1', name: '1',
}, },
leftContentTypeOptions: ['word', 'img', 'word', 'word', 'word'], leftContentTypeOptions: [
rightContentTypeOptions: ['word', 'img', 'img', 'table', 'word'], 'onlyoffice',
'img',
'word',
'onlyoffice',
'onlyoffice',
'onlyoffice',
'onlyoffice',
null,
null,
],
rightContentTypeOptions: [
'onlyoffice',
'img',
'word',
'table',
'word',
'word',
'word',
'table',
'table',
'table',
],
} }
}, },
components: { components: {
......
...@@ -69,7 +69,7 @@ export default { ...@@ -69,7 +69,7 @@ export default {
return { return {
resultContent: '', resultContent: '',
row: {}, row: {},
leftLoading: true, leftLoading: false,
leftBaseOptions: [], leftBaseOptions: [],
rightBaseOptions: [], rightBaseOptions: [],
onlineReviewState: 1, onlineReviewState: 1,
...@@ -116,6 +116,8 @@ export default { ...@@ -116,6 +116,8 @@ export default {
if (res.code === 200) { if (res.code === 200) {
loading.close() loading.close()
this.$message.success('保存成功') this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
} }
}) })
}, },
......
<template> <template>
<div class="reviewSituationDetails"> <div class="reviewArchiPoliticeCheckDetails">
<el-tabs> <el-tabs class="m-lr-10" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="一致性评审"> <el-tab-pane
<Tab1></Tab1> :label="item.label"
</el-tab-pane> :name="item.name"
<el-tab-pane label="架构遵从"> v-for="item in tabOptions"
<Tab2></Tab2> :key="item.name"
</el-tab-pane> lazy
<el-tab-pane label="关键技术深度评审"> >
<Tab3></Tab3> <keep-alive>
</el-tab-pane> <component :is="item.componentTag"></component>
<el-tab-pane label="功能深度评审"> </keep-alive>
<Tab4></Tab4> </el-tab-pane>
</el-tab-pane> </el-tabs>
<el-tab-pane label="数据深度评审"> </div>
<Tab5></Tab5>
</el-tab-pane>
</el-tabs>
</div>
</template> </template>
<script> <script>
import Tab1 from './tab1.vue'; import Tab1 from './tab1.vue'
import Tab2 from './tab2.vue'; import Tab2 from './tab2.vue'
import Tab3 from './tab3.vue'; import Tab3 from './tab3.vue'
import Tab4 from './tab4.vue'; import Tab4 from './tab4.vue'
import Tab5 from './tab5.vue'; import Tab5 from './tab5.vue'
import { MessageBox, Message } from 'element-ui'; export default {
import $ from 'jquery'; name: 'reviewSituationDetails',
import { components: {
saveArchiViewManageCardDetails Tab1,
} from '@/api/index.js'; Tab2,
Tab3,
export default { Tab4,
name: 'reviewSituationDetails', Tab5,
components: { },
Tab1, data() {
Tab2, return {
Tab3, activeName: '1',
Tab4, tabOptions: [
Tab5, { label: '一致性评审', name: '1', componentTag: 'Tab1' },
}, { label: '架构遵从', name: '2', componentTag: 'Tab2' },
data() { { label: '关键技术深度评审', name: '3', componentTag: 'Tab3' },
return { { label: '功能深度评审', name: '4', componentTag: 'Tab4' },
routerId: null, { label: '数据深度评审', name: '5', componentTag: 'Tab5' },
}; ],
}, componentTag: '',
mounted(){ }
},
}, created() {},
methods: { methods: {
handleClick(tab, event) {
} // console.log(tab, event)
} // this.componentTag = `tab${+tab.index + 1}`
},
},
}
</script> </script>
<style> <style lang="scss" scoped>
.confirmClass{ @import '@/styles/common.scss';
background-color: #0D867F !important; .reviewArchiPoliticeCheckDetails {
} width: 100%;
.el-message-box__content{ & > div {
padding: 60px 15px 60px 15px; height: 100%;
} }
</style> /deep/ .el-tabs__content {
<style scoped> height: calc(100% - 55px);
.el-tabs{ .el-tab-pane {
width: 100%; height: 100%;
height: 100%; }
} }
/deep/ .el-tabs__item.is-active { }
color: #0D867F;
}
/deep/ .el-tabs__item:hover{
color: #0D867F;
}
/deep/ .el-tabs__active-bar{
background-color: #0D867F;
}
/deep/ .el-tabs__content{
height: calc(100% - 38px);
padding: 0;
}
.el-tab-pane{
height: 100%;
}
.reviewSituationDetails{
width: 100%;
height: 100%;
display: flex;
position: relative;
}
/deep/ .el-dialog__header{
background-color: #0D867F;
text-align: left;
}
/deep/ .el-dialog__title{
color: #fff;
}
/deep/ .el-dialog__close {
color: #fff;
}
.greenButton{
background-color: #0D867F;
color: #fff;
}
</style> </style>
<template> <template>
<div class="reviewSituation"> <div class="searchTable">
<div class="table_container"> <list-page>
<div class="search_menu"> <!-- 查询表单插槽 -->
<div class="search_menu_item_container"> <template #formWrap>
<div class="search_menu_item"> <SearchForm @onSearch="querySearch" :form-options="formOptions" />
<span class="search_title">单位</span> </template>
<el-select <!-- 中部操作按钮 -->
v-model="searchParams.let1" <template #operationWrap>
placeholder="请选择" <el-button
class="search_item" icon="el-icon-document-add"
> type="primary"
<el-option size="medium"
v-for="item in fuHeDu" plain
:key="item.value" @click="toDetails()"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="search_menu_item">
<span class="search_title">部门</span>
<el-select
v-model="searchParams.let2"
placeholder="请选择"
class="search_item"
>
<el-option
v-for="item in fuHeDu"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="search_menu_item">
<span class="search_title">系统名称</span>
<el-select
v-model="searchParams.let3"
placeholder="请选择"
class="search_item"
>
<el-option
v-for="item in fuHeDu"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="search_menu_item">
<span class="search_title">建设类型</span>
<el-select
v-model="searchParams.let4"
placeholder="请选择"
class="search_item"
>
<el-option
v-for="item in fuHeDu"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="search_menu_btn_container">
<div class="query_btn" @click="search_table">
<img
class="btn_icon"
src="@/assets/archi-ele-list/search.png"
alt=""
/>
<p>查询</p>
</div>
<div class="reset_btn" @click="reset">
<img
class="btn_icon"
src="@/assets/archi-ele-list/reset.png"
alt=""
/>
<p>重置</p>
</div>
</div>
</div>
<div class="search_btn">
<el-button type="primary" size="medium" @click="toDetails"
>评审情况(概要设计)</el-button >评审情况(概要设计)</el-button
> >
</div> </template>
<el-table <!-- 表格插槽 -->
:height="tableHeight" <template #tableWrap>
v-loading="loading" <table-config
@selection-change="select_table_rows" ref="searchTable"
:data="tableData" @selection-change="selectionChange"
stripe :query="query"
border :columns="columns"
> >
<el-table-column type="selection" width="55"></el-table-column> </table-config>
<el-table-column </template>
type="index" </list-page>
label="序号"
width="80"
align="center"
></el-table-column>
<el-table-column
prop="manageOrgId"
label="单位"
align="center"
></el-table-column>
<el-table-column
prop="manageDeptId"
label="部门"
align="center"
></el-table-column>
<el-table-column
prop="appName"
label="系统名称"
align="center"
width="200"
:show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="buildType"
label="建设类型"
align="center"
></el-table-column>
<el-table-column
prop="prjName"
label="项目名称"
align="center"
></el-table-column>
<el-table-column
prop="prjPlanClass"
label="是否续建"
align="center"
></el-table-column>
<el-table-column
prop="manageOrgId"
label="承建单位"
align="center"
></el-table-column>
<el-table-column
prop="projectManager"
label="项目经理"
align="center"
></el-table-column>
<el-table-column prop="conformCount" label="一致性评审" align="center">
<template slot-scope="scope">
<div>{{ scope.row.conformCount }}%</div>
</template>
</el-table-column>
<el-table-column
prop="usefulCount"
label="架构遵从"
align="center"
></el-table-column>
<el-table-column
prop="remark"
label="关键技术深度评审"
align="center"
></el-table-column>
<el-table-column
prop="remark"
label="功能深度评审"
align="center"
></el-table-column>
<el-table-column
prop="remark"
label="数据深度评审"
align="center"
></el-table-column>
</el-table>
<!-- <el-pagination
background
layout="prev, pager, next"
:total="50">
</el-pagination> -->
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pager.current"
:page-sizes="pager.sizes"
:page-size="pager.size"
layout="total, sizes, prev, pager, next, jumper"
:total="pager.total"
>
</el-pagination>
</div>
<el-dialog
:title="is_add_edit == 'add' ? '新建字典' : '编辑字典'"
:visible.sync="add_dialog"
:center="false"
:close-on-click-modal="false"
width="60%"
>
<el-form
:model="ruleForm"
ref="form"
:rules="rules"
style="display: flex; flex-wrap: wrap"
>
<el-form-item label="字典名称:" prop="let1">
<el-input
v-no-backslash
v-model="ruleForm.let1"
maxlength="100"
></el-input>
</el-form-item>
<el-form-item label="字典标识:" prop="let2">
<el-input
v-no-backslash
v-model="ruleForm.let2"
maxlength="100"
></el-input>
</el-form-item>
<el-form-item class="cross1" label="描述:" prop="let3">
<el-input
v-no-backslash
v-model="ruleForm.let3"
type="textarea"
:rows="3"
maxlength="200"
show-word-limit
placeholder="请输入内容"
></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button class="greenButton" @click="save_dicy">保存</el-button>
<el-button @click="add_dialog = false">取消</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { import ListPage from '@/components/ListPage.vue'
getJiShuZhengCeGuanLianShiYongTable, import SearchForm from '@/components/SearchForm.vue'
getDianXingAnLiSelectData, import TableConfig from '@/components/TableConfig.vue'
getPrelDesInspecteTable,
} from '@/api/index.js'
import { MessageBox, Message } from 'element-ui'
import $ from 'jquery'
import { queryPrelDesInspecte } from '@/api/interface'
import { buildType, prjPlanClass, completionStatus } from '@/utils/dictionary'
export default { export default {
name: 'reviewSituation', name: 'reviewSituation',
components: {},
data() { data() {
return { return {
ruleForm: { query: {
let1: '', url: queryPrelDesInspecte,
let2: '', method: 'post',
let3: '', queryParam: {},
},
rules: {},
add_dialog: false,
is_add_edit: 'add',
tableData: [],
loading: false,
search_select1: [],
pager: {
current: 1,
sizes: [10, 20, 50, 100, 200],
size: 10,
total: 20, //总条数
}, },
tableHeight: null,
searchParams: {
let1: null,
let2: null,
let3: null,
let4: null,
},
fuHeDu: [],
selectRows: [], selectRows: [],
} }
}, },
mounted() { components: {
window.addEventListener('resize', () => { ListPage,
this.set_table_height() SearchForm,
}) TableConfig,
this.set_table_height()
this.get_table()
this.get_fu_he_du_select().then((res) => {
this.fuHeDu = res
})
}, },
methods: { computed: {
select_table_rows(data) { formOptions() {
//表格的勾选 let arr = [
this.selectRows = data {
label: '单位', // label文字
prop: 'manageOrgId', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '部门', // label文字
prop: 'manageDeptId', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '系统名称', // label文字
prop: 'appName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '建设类型', // label文字
prop: 'buildType', // 字段名
element: 'el-select', // 指定elementui组件
initValue: undefined, // 字段初始值
placeholder: '请选择', // elementui组件属性
dictType: 'build_type',
},
]
return arr
}, },
columns() {
let arr = [
{ type: 'selection', width: '55px' },
{ label: '序号', type: 'index', width: '80px' },
{ label: '单位', prop: 'manageOrgId' },
{ label: '部门', prop: 'manageDeptId', width: '200px' },
{
label: '系统名称',
prop: 'appName',
width: '320px',
},
{
label: '建设类型',
width: '100px',
prop: 'buildType',
options: buildType,
collectionType: 'buildType',
},
{
label: '项目名称',
width: '200px',
prop: 'prjName',
},
{
label: '是否续建',
width: '100px',
prop: 'prjPlanClass',
options: prjPlanClass,
collectionType: 'prjPlanClass',
},
{
label: '承建单位',
width: '200px',
prop: 'buildOrg',
},
{
label: '项目经理',
prop: 'projectManager',
},
{
label: '一致性评审',
prop: 'conformanceReview',
options: completionStatus,
collectionType: true,
emptyToNum: 0,
},
{
label: '架构遵从',
prop: 'architecturalCompliance',
options: completionStatus,
collectionType: true,
emptyToNum: 0,
},
{
label: '关键技术深度评审',
prop: 'cruxTechReview',
options: completionStatus,
collectionType: true,
emptyToNum: 0,
},
{
label: '功能深度评审',
prop: 'funcDepthReview',
options: completionStatus,
collectionType: true,
emptyToNum: 0,
},
{
label: '数据深度评审',
prop: 'dataDepthReview',
options: completionStatus,
collectionType: true,
emptyToNum: 0,
},
]
return arr
},
},
mounted() {},
methods: {
toDetails() { toDetails() {
if (this.selectRows.length == 0) { if (this.selectRows.length == 0) {
Message({ return this.$message.warning('请选择一条数据!')
type: 'warning',
message: '请选择一条数据!',
})
return
} }
if (this.selectRows.length > 1) { if (this.selectRows.length > 1) {
Message({ return this.$message.warning('只能选择一条数据!')
type: 'warning',
message: '只能选择一条数据!',
})
return
} }
this.$router.push({ this.$router.push({
path: '/main/reviewSituationDetails', path: '/main/reviewSituationDetails',
...@@ -314,252 +180,20 @@ export default { ...@@ -314,252 +180,20 @@ export default {
}, },
}) })
}, },
save_dicy() { // 表格勾选的数据
//保存字典 selectionChange(data) {
this.$refs.form.validate((valid) => { this.selectRows = data
if (valid) {
} else {
return false
}
})
},
get_fu_he_du_select() {
//符合度下拉
const params = {
key: 'tech_compliance',
}
return new Promise((resolve, reject) => {
getDianXingAnLiSelectData(params).then((res) => {
if (res.code == 200) {
resolve(res.data)
}
})
})
},
set_table_height() {
//动态设置表格高度
const table_container_height = $('.table_container').height()
const search_menu_height = $('.search_menu').height()
const search_btn_height = $('.search_btn').outerHeight(true)
this.tableHeight =
table_container_height -
search_menu_height -
search_btn_height -
90 +
'px'
},
search_table() {
//搜索
this.pager.current = 1
this.get_table()
},
reset() {
//重置
this.searchParams.let1 = null
this.searchParams.let2 = null
this.searchParams.let3 = null
this.searchParams.let4 = null
},
// 每页条数改变
handleSizeChange(val) {
this.pager.current = 1
this.pager.size = val
this.get_table()
},
//当前页码改变
handleCurrentChange(val) {
this.pager.current = val
this.get_table()
}, },
get_table() { querySearch(data) {
//查询表格数据 this.query.queryParam = {
this.loading = true ...this.query.queryParam,
const params = { ...data,
policyName: this.searchParams.let1,
conformCount: this.searchParams.let2,
conformCount: this.searchParams.let3,
conformCount: this.searchParams.let4,
current: this.pager.current,
pageSize: this.pager.size,
} }
getPrelDesInspecteTable(params).then((res) => { this.$refs.searchTable.queryData()
this.loading = false
console.log(res)
// res.records.map(item => {
// const startTime_year = String(new Date(item.startTime).getFullYear());
// const startTime_month = String(new Date(item.startTime).getMonth() + 1);
// let startTime_day = String(new Date(item.startTime).getDay());
// startTime_day = startTime_day.length == 1 ? '0' + startTime_day : startTime_day;
// item['startTime_'] = startTime_year + '-' + startTime_month + '-' + startTime_day;
// });
// this.get_fu_he_du_select().then(res2 => {
// res.records.map(item3 => {
// let result1 = res2.find(item2 => item2.value == item3.conformCount);
// item3['conformCount_'] = result1 ? result1.label : '';
// });
// this.tableData = res.records;
// })
this.tableData = res.records
this.pager.current = res.current
this.pager.total = res.total
this.pager.size = res.size
// if(res.code == 200) {
// this.loading = false;
// console.log(res)
// // this.tableData = res.
// }
})
}, },
}, },
} }
</script> </script>
<style> <style scoped lang="scss">
.confirmClass { @import '@/styles/common.scss';
background-color: #0d867f !important;
}
.el-message-box__content {
padding: 60px 15px 60px 15px;
}
</style>
<style scoped>
.version_btn {
display: flex;
align-items: center;
justify-content: center;
width: 84px;
height: 32px;
background: rgba(13, 134, 127, 0.1);
border-radius: 6px 6px 6px 6px;
/* border: 1px solid #0D867F; */
font-size: 14px;
color: #0d867f;
cursor: pointer;
margin-left: 15px;
}
.cancel_version_btn {
display: flex;
align-items: center;
justify-content: center;
width: 104px;
height: 32px;
background: rgba(13, 134, 127, 0.1);
border-radius: 6px 6px 6px 6px;
/* border: 1px solid #0D867F; */
font-size: 14px;
color: #0d867f;
cursor: pointer;
margin-left: 15px;
}
.reviewSituation {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
}
.el-button--primary {
background: rgba(13, 134, 127, 0.1);
color: #0d867f;
border: 0;
}
/deep/ .el-input-group__append {
background-color: #0d867f;
color: #fff;
cursor: pointer;
}
.search_btn {
width: 100%;
display: flex;
margin-top: 50px;
margin-bottom: 20px;
}
.search_menu {
display: flex;
justify-content: space-between;
margin-bottom: 50px;
}
.search_menu_item_container {
display: flex;
align-items: center;
}
.search_menu_btn_container {
display: flex;
align-items: center;
}
.search_menu_item {
display: flex;
align-items: center;
width: 344px;
}
.search_title {
/* width: 20%; */
flex-shrink: 0;
margin-right: 15px;
}
.search_item {
width: 60%;
}
.query_btn {
display: flex;
align-items: center;
justify-content: center;
width: 76px;
height: 32px;
background: rgba(13, 134, 127, 1);
border-radius: 6px 6px 6px 6px;
border: 1px solid #0d867f;
font-size: 14px;
color: #fff;
margin-right: 10px;
cursor: pointer;
}
.reset_btn {
display: flex;
align-items: center;
justify-content: center;
width: 76px;
height: 32px;
background: rgba(244, 244, 244, 1);
border-radius: 6px 6px 6px 6px;
border: 1px solid #ccc;
font-size: 14px;
color: #666;
cursor: pointer;
}
.btn_icon {
margin-right: 10px;
}
.table_container {
width: 97%;
height: calc(100% - 40px);
margin-top: 20px;
}
.el-pagination {
margin-top: 30px;
}
/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #0d867f;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
text-align: left;
}
/deep/ .el-dialog__title {
color: #fff;
}
/deep/ .el-dialog__close {
color: #fff;
}
.greenButton {
background-color: #0d867f;
color: #fff;
}
.el-form-item {
display: flex;
align-items: center;
width: 33%;
}
</style> </style>
<template> <template>
<div class="tab1"> <div class="tab-component flex-column h-100">
<div class="content"> <div class="content flex">
<div class="left_container"> <div class="left_container m-r-10 flex-column">
<el-alert title="评审标准" type="success" :closable="false"></el-alert> <div class="left_container_title">
<el-select v-model="select1" class="leftSelect"> <i class="el-icon-caret-right icon"></i>
<el-option label="1" value="1"></el-option> <span>评审标准</span>
</el-select> </div>
<div class="left_container_content flex-1"></div>
</div> </div>
<div class="right_container"> <div class="right_container flex-column">
<el-alert title="评审内容" type="success" :closable="false"></el-alert> <div class="right_container_title flex-b-c">
<el-select v-model="select2" class="rightSelect"> <div class="flex">
<el-option label="1" value="1"></el-option> <i class="el-icon-caret-right icon"></i>
</el-select> <span>评审内容</span>
</div>
<el-select class="select-title" v-model="select">
<el-option label="概要设计说明书.doc" value="1"></el-option>
</el-select>
</div>
<div class="right_container_content flex-1"></div>
</div> </div>
</div> </div>
<div class="bottom_container"> <div class="bottom_container">
<div <div class="flex-b-c p-r-20 m-tb-15">
style=" <div class="flex-c">
padding-right: 20px; <span class="m-r-50 p-l-20 bottom_container_title">评审结果</span>
text-align: left; <div class="label m-r-10">是否满足接入要求:</div>
margin: 15px 0; <el-radio
display: flex; v-for="item in selectOptions"
align-items: center; v-model="isMeet"
justify-content: space-between; :key="item.value"
" :label="item.value"
> :value="item.value"
<div> >{{ item.label }}</el-radio
<el-divider direction="vertical"></el-divider> >
<span style="margin-right: 50px">评审意见</span> </div>
<el-radio v-model="radio" label="1">通过</el-radio> <div class="flex">
<el-radio v-model="radio" label="2">不通过</el-radio> <el-button type="primary" size="medium">带入批注</el-button>
<el-button type="primary" size="medium" @click="handleSave"
>保存结果</el-button
>
</div> </div>
<el-button type="primary" size="medium">带入批准</el-button>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div> </div>
<el-input <el-input
type="textarea" type="textarea"
:rows="4" :rows="4"
v-model="textarea" v-model="resultContent"
style="width: 98%" v-no-backslash
class="w-100"
placeholder="请输入"
></el-input> ></el-input>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { savePrelDesInspecte } from '@/api/index.js' import { savePrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
import { MessageBox, Message } from 'element-ui'
export default { export default {
name: 'tab1', name: 'tab1',
components: {}, components: {},
data() { data() {
return { return {
radio: '1', resultContent: '',
textarea: '', isMeet: null,
select1: null, selectOptions: [
select2: null, {
label: '通过',
value: 1,
},
{
label: '不通过',
value: 0,
},
],
select: '1',
row: {}, row: {},
} }
}, },
mounted() { created() {
this.row = JSON.parse(this.$route.query.row) this.row = JSON.parse(this.$route.query.row)
this.getDetail()
}, },
methods: { methods: {
fnSave() { getDetail() {
const params = {
reviewEnum: 'CONFORMANCE_REVIEW',
prjId: this.row.prjId,
}
detailPrelDesInspecte(params).then((res) => {
if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState
}
})
},
handleSave() {
const params = {
reviewEnum: 'CONFORMANCE_REVIEW',
prjId: this.row.prjId,
reviewState: this.isMeet,
reviewSuggestion: this.resultContent,
}
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'CONFORMANCE_REVIEW',
}
savePrelDesInspecte(params).then((res) => { savePrelDesInspecte(params).then((res) => {
loading.close() loading.close()
if (res.code === 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
...@@ -89,48 +118,7 @@ export default { ...@@ -89,48 +118,7 @@ export default {
}, },
} }
</script> </script>
<style scoped> <style lang="scss" scoped>
.tab1 { @import '@/styles/common.scss';
height: 100%; @import '@/views/reviewArchiPoliticeCheck/index.scss';
}
.content {
display: flex;
height: 77%;
}
.leftSelect {
position: absolute;
top: 44px;
left: 22px;
}
.rightSelect {
position: absolute;
top: 44px;
left: 22px;
}
.el-button--primary {
background: rgba(13, 134, 127, 1);
color: #fff;
border: 0;
}
/deep/ .el-alert--success.is-light {
background-color: #d5f5f3;
color: #000;
}
/deep/ .el-divider--vertical {
width: 4px;
background-color: #0d867f;
}
.left_container {
width: 49%;
border: 1px solid red;
margin-right: 1%;
position: relative;
}
.right_container {
width: 49%;
border: 1px solid red;
position: relative;
}
.bottom_container {
}
</style> </style>
<template> <template>
<div class="tab2"> <div class="tab-component flex-column h-100">
<div class="content"> <div class="content flex">
<div class="left_container"> <div class="left_container m-r-10 flex-column">
<el-alert title="评审标准" type="success" :closable="false"></el-alert> <div class="left_container_title">
</div> <i class="el-icon-caret-right icon"></i>
<div class="right_container"> <span>评审标准</span>
<el-alert title="评审内容" type="success" :closable="false"></el-alert> </div>
</div> <div class="left_container_content flex-1"></div>
</div> </div>
<div class="bottom_container"> <div class="right_container flex-column">
<div style="padding-right: 20px;text-align: left;margin: 15px 0;"> <div class="right_container_title flex-b-c">
<el-divider direction="vertical"></el-divider> <div class="flex">
<span style="margin-right: 50px;">审查意见</span> <i class="el-icon-caret-right icon"></i>
</div> <span>评审内容</span>
<el-input type="textarea" :rows="4" v-model="textarea" style="width: 98%;"></el-input> </div>
</div> <el-select class="select-title" v-model="select">
</div> <el-option label="概要设计说明书.doc" value="1"></el-option>
</el-select>
</div>
<div class="right_container_content flex-1"></div>
</div>
</div>
<div class="bottom_container">
<div class="flex-b-c p-r-20 m-tb-15">
<div class="flex-c">
<span class="m-r-50 p-l-20 bottom_container_title">评审结果</span>
<!-- <div class="label m-r-10">是否满足接入要求:</div>
<el-radio
v-for="item in selectOptions"
v-model="isMeet"
:key="item.value"
:label="item.value"
:value="item.value"
>{{ item.label }}</el-radio
> -->
</div>
<!-- <div class="flex">
<el-button type="primary" size="medium">带入批注</el-button>
<el-button type="primary" size="medium" @click="handleSave"
>保存结果</el-button
>
</div> -->
</div>
<el-input
type="textarea"
:rows="4"
v-model="resultContent"
v-no-backslash
class="w-100"
placeholder="请输入"
></el-input>
</div>
</div>
</template> </template>
<script> <script>
import { import { qViewPrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
getArchiViewManageTable
} from '@/api/index.js';
import { MessageBox, Message } from 'element-ui';
export default { export default {
name: 'tab2', name: 'tab2',
components: { components: {},
data() {
}, return {
data() { resultContent: '',
return { isMeet: null,
radio: '1', selectOptions: [
textarea: '' {
}; label: '通过',
}, value: 1,
mounted(){ },
{
}, label: '不通过',
methods: { value: 0,
},
} ],
select: '1',
row: {},
}
},
created() {
this.row = JSON.parse(this.$route.query.row)
this.getDetail()
this.getLeftQview()
this.getRightQview()
},
methods: {
getLeftQview() {
const params = {
archiBelongId: 1,
archiStage: 2,
reviewEnum: 'ARCHITECTURE_CONFORMANCE',
prjId: this.row.prjId,
}
qViewPrelDesInspecte(params).then((res) => {
if (res.code === 200) {
} else {
this.$message.error(res.msg)
}
})
},
getRightQview() {
const params = {
archiBelongId: 1,
archiStage: 3,
reviewEnum: 'ARCHITECTURE_CONFORMANCE',
prjId: this.row.prjId,
}
qViewPrelDesInspecte(params).then((res) => {
if (res.code === 200) {
} else {
this.$message.error(res.msg)
}
})
},
getDetail() {
const params = {
reviewEnum: 'ARCHITECTURE_CONFORMANCE',
prjId: this.row.prjId,
}
detailPrelDesInspecte(params).then((res) => {
if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState
}
})
},
// handleSave() {
// const params = {
// reviewEnum: 'CONFORMANCE_REVIEW',
// prjId: this.row.prjId,
// reviewState: this.isMeet,
// reviewSuggestion: this.resultContent,
// }
// const loading = this.$loading({
// lock: true,
// text: '保存中',
// spinner: 'el-icon-loading',
// })
// savePrelDesInspecte(params).then((res) => {
// loading.close()
// if (res.code == 200) {
// this.$message.success('保存成功')
// } else {
// this.$message.error(res.msg)
// }
// })
// },
},
} }
</script> </script>
<style scoped> <style lang="scss" scoped>
.tab2{ @import '@/styles/common.scss';
height: 100%; @import '@/views/reviewArchiPoliticeCheck/index.scss';
} </style>
.content{
display: flex;
height: 77%;
}
.el-button--primary{
background: rgba(13,134,127,1);
color: #fff;
border: 0;
}
/deep/ .el-alert--success.is-light{
background-color: #D5F5F3;
color: #000;
}
/deep/ .el-divider--vertical{
width: 4px;
background-color: #0D867F;
}
.left_container{
width: 49%;
border: 1px solid red;
margin-right: 1%;
}
.right_container{
width: 49%;
border: 1px solid red;
}
.bottom_container{
}
</style>
\ No newline at end of file
<template> <template>
<div class="tab3"> <div class="tab-component flex-column h-100">
<div class="content"> <div class="content flex">
<div class="left_container"> <div class="left_container m-r-10 flex-column">
<el-alert title="评审标准" type="success" :closable="false"></el-alert> <div class="left_container_title">
<i class="el-icon-caret-right icon"></i>
<span>评审标准</span>
</div>
<div class="left_container_content flex-1"></div>
</div> </div>
<div class="right_container"> <div class="right_container flex-column">
<el-alert title="评审内容" type="success" :closable="false"></el-alert> <div class="right_container_title flex-b-c">
<div class="flex">
<i class="el-icon-caret-right icon"></i>
<span>评审内容</span>
</div>
<el-select class="select-title" v-model="select">
<el-option label="概要设计说明书.doc" value="1"></el-option>
</el-select>
</div>
<div class="right_container_content flex-1"></div>
</div> </div>
</div> </div>
<div class="bottom_container"> <div class="bottom_container">
<div <div class="flex-b-c p-r-20 m-tb-15">
style=" <div class="flex-c">
padding-right: 20px; <span class="m-r-50 p-l-20 bottom_container_title">审查意见</span>
text-align: left; </div>
margin: 15px 0; <div class="flex">
display: flex; <el-button type="primary" size="medium" @click="handleSave"
align-items: center; >保存意见</el-button
justify-content: space-between; >
"
>
<div>
<el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px">审查意见</span>
</div> </div>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div> </div>
<el-input <el-input
type="textarea" type="textarea"
:rows="4" :rows="4"
v-model="textarea" v-model="resultContent"
style="width: 98%" v-no-backslash
class="w-100"
placeholder="请输入"
></el-input> ></el-input>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { savePrelDesInspecte } from '@/api/index.js' import { savePrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
export default { export default {
name: 'tab3', name: 'tab3',
components: {}, components: {},
data() { data() {
return { return {
radio: '1', resultContent: '',
textarea: '', isMeet: null,
select: '1',
row: {}, row: {},
} }
}, },
mounted() { created() {
this.row = JSON.parse(this.$route.query.row) this.row = JSON.parse(this.$route.query.row)
this.getDetail()
}, },
methods: { methods: {
fnSave() { getDetail() {
const params = {
reviewEnum: 'KEY_TECHNOLOGY_REVIEW',
prjId: this.row.prjId,
}
detailPrelDesInspecte(params).then((res) => {
if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState
}
})
},
handleSave() {
const params = {
reviewEnum: 'KEY_TECHNOLOGY_REVIEW',
prjId: this.row.prjId,
reviewState: this.isMeet,
reviewSuggestion: this.resultContent,
}
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'KEY_TECHNOLOGY_REVIEW',
}
savePrelDesInspecte(params).then((res) => { savePrelDesInspecte(params).then((res) => {
loading.close() loading.close()
if (res.code === 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
...@@ -77,36 +98,7 @@ export default { ...@@ -77,36 +98,7 @@ export default {
}, },
} }
</script> </script>
<style scoped> <style lang="scss" scoped>
.tab3 { @import '@/styles/common.scss';
height: 100%; @import '@/views/reviewArchiPoliticeCheck/index.scss';
}
.content {
display: flex;
height: 77%;
}
.el-button--primary {
background: rgba(13, 134, 127, 1);
color: #fff;
border: 0;
}
/deep/ .el-alert--success.is-light {
background-color: #d5f5f3;
color: #000;
}
/deep/ .el-divider--vertical {
width: 4px;
background-color: #0d867f;
}
.left_container {
width: 49%;
border: 1px solid red;
margin-right: 1%;
}
.right_container {
width: 49%;
border: 1px solid red;
}
.bottom_container {
}
</style> </style>
<template> <template>
<div class="tab4"> <div class="tab-component flex-column h-100">
<div class="content"> <div class="content flex">
<div class="left_container"> <div class="left_container m-r-10 flex-column">
<el-alert title="评审标准" type="success" :closable="false"></el-alert> <div class="left_container_title">
<i class="el-icon-caret-right icon"></i>
<span>评审标准</span>
</div>
<div class="left_container_content flex-1"></div>
</div> </div>
<div class="right_container"> <div class="right_container flex-column">
<el-alert title="评审内容" type="success" :closable="false"></el-alert> <div class="right_container_title flex-b-c">
<div class="flex">
<i class="el-icon-caret-right icon"></i>
<span>评审内容</span>
</div>
<el-select class="select-title" v-model="select">
<el-option label="概要设计说明书.doc" value="1"></el-option>
</el-select>
</div>
<div class="right_container_content flex-1"></div>
</div> </div>
</div> </div>
<div class="bottom_container"> <div class="bottom_container">
<div <div class="flex-b-c p-r-20 m-tb-15">
style=" <div class="flex-c">
padding-right: 20px; <span class="m-r-50 p-l-20 bottom_container_title">审查意见</span>
text-align: left; </div>
margin: 15px 0; <div class="flex">
display: flex; <el-button type="primary" size="medium" @click="handleSave"
align-items: center; >保存意见</el-button
justify-content: space-between; >
"
>
<div>
<el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px">评审意见</span>
</div> </div>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div> </div>
<el-input <el-input
type="textarea" type="textarea"
:rows="4" :rows="4"
v-model="textarea" v-model="resultContent"
style="width: 98%" v-no-backslash
class="w-100"
placeholder="请输入"
></el-input> ></el-input>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { savePrelDesInspecte } from '@/api/index.js' import { savePrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
export default { export default {
name: 'tab4', name: 'tab4',
components: {}, components: {},
data() { data() {
return { return {
radio: '1', resultContent: '',
textarea: '', isMeet: null,
select: '1',
row: {}, row: {},
} }
}, },
mounted() { created() {
this.row = JSON.parse(this.$route.query.row) this.row = JSON.parse(this.$route.query.row)
this.getDetail()
}, },
methods: { methods: {
fnSave() { getDetail() {
const params = {
reviewEnum: 'FUNCTIONAL_DEPTH_REVIEW',
prjId: this.row.prjId,
}
detailPrelDesInspecte(params).then((res) => {
if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState
}
})
},
handleSave() {
const params = {
reviewEnum: 'FUNCTIONAL_DEPTH_REVIEW',
prjId: this.row.prjId,
reviewState: this.isMeet,
reviewSuggestion: this.resultContent,
}
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'FUNCTIONAL_DEPTH_REVIEW',
}
savePrelDesInspecte(params).then((res) => { savePrelDesInspecte(params).then((res) => {
loading.close() loading.close()
if (res.code === 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
...@@ -77,36 +98,7 @@ export default { ...@@ -77,36 +98,7 @@ export default {
}, },
} }
</script> </script>
<style scoped> <style lang="scss" scoped>
.tab4 { @import '@/styles/common.scss';
height: 100%; @import '@/views/reviewArchiPoliticeCheck/index.scss';
}
.content {
display: flex;
height: 77%;
}
.el-button--primary {
background: rgba(13, 134, 127, 1);
color: #fff;
border: 0;
}
/deep/ .el-alert--success.is-light {
background-color: #d5f5f3;
color: #000;
}
/deep/ .el-divider--vertical {
width: 4px;
background-color: #0d867f;
}
.left_container {
width: 49%;
border: 1px solid red;
margin-right: 1%;
}
.right_container {
width: 49%;
border: 1px solid red;
}
.bottom_container {
}
</style> </style>
<template> <template>
<div class="tab5"> <div class="tab-component flex-column h-100">
<div class="content"> <div class="content flex">
<div class="left_container"> <div class="left_container m-r-10 flex-column">
<el-alert title="评审标准" type="success" :closable="false"></el-alert> <div class="left_container_title">
<i class="el-icon-caret-right icon"></i>
<span>评审标准</span>
</div>
<div class="left_container_content flex-1"></div>
</div> </div>
<div class="right_container"> <div class="right_container flex-column">
<el-alert title="评审内容" type="success" :closable="false"></el-alert> <div class="right_container_title flex-b-c">
<div class="flex">
<i class="el-icon-caret-right icon"></i>
<span>评审内容</span>
</div>
<el-select class="select-title" v-model="select">
<el-option label="概要设计说明书.doc" value="1"></el-option>
</el-select>
</div>
<div class="right_container_content flex-1"></div>
</div> </div>
</div> </div>
<div class="bottom_container"> <div class="bottom_container">
<div <div class="flex-b-c p-r-20 m-tb-15">
style=" <div class="flex-c">
padding-right: 20px; <span class="m-r-50 p-l-20 bottom_container_title">审查意见</span>
text-align: left; </div>
margin: 15px 0; <div class="flex">
display: flex; <el-button type="primary" size="medium" @click="handleSave"
align-items: center; >保存意见</el-button
justify-content: space-between; >
"
>
<div>
<el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px">评审意见</span>
</div> </div>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div> </div>
<el-input <el-input
type="textarea" type="textarea"
:rows="4" :rows="4"
v-model="textarea" v-model="resultContent"
style="width: 98%" v-no-backslash
class="w-100"
placeholder="请输入"
></el-input> ></el-input>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { savePrelDesInspecte } from '@/api/index.js' import { savePrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
export default { export default {
name: 'tab5', name: 'tab5',
components: {}, components: {},
data() { data() {
return { return {
radio: '1', resultContent: '',
textarea: '', isMeet: null,
select: '1',
row: {}, row: {},
} }
}, },
mounted() { created() {
this.row = JSON.parse(this.$route.query.row) this.row = JSON.parse(this.$route.query.row)
this.getDetail()
}, },
methods: { methods: {
fnSave() { getDetail() {
const params = {
reviewEnum: 'DATA_DEPTH_REVIEW',
prjId: this.row.prjId,
}
detailPrelDesInspecte(params).then((res) => {
if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState
}
})
},
handleSave() {
const params = {
reviewEnum: 'DATA_DEPTH_REVIEW',
prjId: this.row.prjId,
reviewState: this.isMeet,
reviewSuggestion: this.resultContent,
}
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'DATA_DEPTH_REVIEW',
}
savePrelDesInspecte(params).then((res) => { savePrelDesInspecte(params).then((res) => {
loading.close() loading.close()
if (res.code === 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
...@@ -77,36 +98,7 @@ export default { ...@@ -77,36 +98,7 @@ export default {
}, },
} }
</script> </script>
<style scoped> <style lang="scss" scoped>
.tab5 { @import '@/styles/common.scss';
height: 100%; @import '@/views/reviewArchiPoliticeCheck/index.scss';
}
.content {
display: flex;
height: 77%;
}
.el-button--primary {
background: rgba(13, 134, 127, 1);
color: #fff;
border: 0;
}
/deep/ .el-alert--success.is-light {
background-color: #d5f5f3;
color: #000;
}
/deep/ .el-divider--vertical {
width: 4px;
background-color: #0d867f;
}
.left_container {
width: 49%;
border: 1px solid red;
margin-right: 1%;
}
.right_container {
width: 49%;
border: 1px solid red;
}
.bottom_container {
}
</style> </style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!