Commit 650a6373 by 史敦盼

修改

1 parent cb9f6fb2
......@@ -584,6 +584,15 @@ export function getPrelDesInspecteTable(params) {
export function savePrelDesInspecte(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) {
......@@ -605,10 +614,22 @@ export function getWordImg(params) {
export function getWordTable(params) {
return post('/network/prel-des-rvw/qWordTable', params)
}
// 获取评审标准
// 获取评审片段word
export function getReviewNorm(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) {
return post('/network/prel-des-rvw/sComment', params)
......
......@@ -14,3 +14,9 @@ export const queryDemandManagement = '/network/need-info/'
export const queryProjectInfo = '/network/prj-info/'
// 概设材料意见编制
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 @@
* @Autor: pan
* @Date: 2024-03-11 14:53:40
* @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) => {
......@@ -217,7 +217,11 @@ export default {
this.$refs.tableConfig.clearSelection()
},
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']
},
/**
......
......@@ -73,3 +73,8 @@ export const sendStateOptions = [
{ label: '未发送', value: 2 },
{ label: '发送失败', value: 3 },
]
export const completionStatus = [
{ label: '未完成', value: 0 },
{ label: '已完成', value: 1 },
]
......@@ -69,7 +69,7 @@ export const menuOptions = [
children: [
{
name: '架构资产管理',
path: '',
path: '/main/busiAssetslist',
},
{
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>
<div class="searchTable">
<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>
<div class="searchTable">
<list-page>
......@@ -29,15 +37,14 @@
</template>
<!-- 中部操作按钮 -->
<template #operationWrap>
<!-- <el-button
v-if="activeName === '1'"
<el-button
v-if="activeName === '2'"
icon="el-icon-document-add"
type="primary"
size="medium"
plain
@click="fnMaterialAnalysis()"
>材料解析</el-button
> -->
>同步更新</el-button
>
</template>
<!-- 表格插槽 -->
<template #tableWrap>
......@@ -47,6 +54,9 @@
:query="query"
:columns="columns"
>
<template #percent="{ data }">
<span> {{ handlePercent(data) }}</span>
</template>
</table-config>
</template>
</list-page>
......@@ -59,7 +69,7 @@ import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue'
import { queryConceptualReview } from '@/api/interface'
import { queryQyNeedReviewCount, queryArcAstSys } from '@/api/interface'
import { exportRiskReport } from '@/api/index'
import { archiPrjReviewEnum, buildType } from '@/utils/dictionary'
// import { str } from './base64'
......@@ -68,13 +78,12 @@ export default {
data() {
return {
src: '',
constructionTypeOptions: [],
selectRows: [],
query: {
url: queryConceptualReview,
url: queryQyNeedReviewCount,
method: 'post',
queryParam: {
reviewEnum: 'TECH_ROUTE',
countType: 1,
},
},
activeName: '1',
......@@ -88,17 +97,12 @@ export default {
{ label: '各批次系统统计', name: '2' },
],
subTabOptions2: [
{ label: '业务流程', name: '1' },
{ label: '技术路线', name: '2' },
{ label: '功能清单', name: '3' },
{ label: '数据实体', name: '4' },
{ label: '安全设计', name: '5' },
{ label: '业务架构', name: '1' },
{ label: '应用架构', name: '2' },
{ label: '数据架构', name: '3' },
{ label: '技术架构', name: '4' },
{ label: '安全架构', name: '5' },
],
activeSubTabItem: {
label: '报告规范性',
value: 'REPORT_NORM',
name: '1',
},
}
},
components: {
......@@ -107,6 +111,18 @@ export default {
TableConfig,
},
computed: {
getCountType() {
if (this.activeName === '1') {
if (this.activeName2 === '1') {
return 1
} else {
console.log('2')
return 2
}
} else {
return undefined
}
},
subTabOptions() {
if (this.activeName === '1') {
return this.subTabOptions1
......@@ -133,21 +149,50 @@ export default {
if (this.activeName2 === '1') {
arr = [
{ label: '序号', type: 'index', width: '80px' },
{ label: '单位名称', prop: 'orgName' },
{ label: '概设需求数(个)', prop: 'orgName1' },
{ label: '概设材料通过数(个)', prop: 'orgName2' },
{ label: '概设通过比(%)', prop: 'orgName3' },
{ label: '单位名称', prop: 'manageOrgName' },
{ label: '概设需求数(个)', prop: 'needCount' },
{ label: '概设材料通过数(个)', prop: 'reviewPassCount' },
{ label: '概设通过比(%)', __slotName: 'percent' },
]
} else {
arr = [
{ label: '序号', type: 'index', width: '80px' },
{ label: '批次', prop: 'batName' },
{ label: '项目需求数(个)', prop: 'orgName3' },
{ label: '项目通过数(个)', prop: 'orgName2' },
{ label: '项目通过比(%)', prop: 'prjRate' },
{ label: '项目需求数(个)', prop: 'needCount' },
{ label: '项目通过数(个)', prop: 'reviewPassCount' },
{ label: '项目通过比(%)', __slotName: 'percent' },
]
}
} 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
......@@ -155,6 +200,12 @@ export default {
},
mounted() {},
methods: {
handlePercent(scope) {
const item = scope.row
if (item.reviewPassCount && item.needCount) {
return (item.reviewPassCount / item.needCount).toFixed(2) * 100 + '%'
}
},
// 材料解析
fnMaterialAnalysis() {
if (this.selectRows.length == 0) {
......@@ -192,16 +243,20 @@ export default {
this.$refs.searchTable.queryData()
},
handleClick(tab, event) {
// console.log(tab, event)
// this.activeSubTabItem = tab
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()
},
handleSubClick(tab, event) {
// console.log(tab, event)
this.activeSubTabItem = tab
// this.query.queryParam.reviewEnum = this.getArchiPrjReviewEnum()
this.query.queryParam.countType = this.getCountType
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>
<div class="flex-column m-10 w-100 conceptualExamine">
<div class="content flex">
......@@ -13,12 +24,24 @@
>
<!-- <img :src="leftSrc" alt="" /> -->
<template v-if="tab !== '8' && tab !== '9'">
<img
v-for="(item, idx) in leftBaseOptions"
:key="idx"
:src="item"
alt=""
/>
<div
class="office w-100 h-100"
v-if="leftContentType === 'onlyoffice'"
>
<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>
<Tab8Left v-else :tab="tab" @toRemark="toRemark" />
</div>
......@@ -30,15 +53,27 @@
</div>
<div
class="right_container_content flex-1"
v-loading="leftLoading"
v-loading="rightLoading"
element-loading-text="加载中"
>
<img
v-for="(item, idx) in leftBaseOptions"
:key="idx"
:src="item"
alt=""
/>
<div
class="office w-100 h-100"
v-if="rightContentType === 'onlyoffice'"
>
<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>
......@@ -91,11 +126,20 @@
<script>
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 {
name: 'conceptualExamine',
components: {
Tab8Left,
vabOnlyOffice,
},
data() {
return {
......@@ -105,9 +149,51 @@ export default {
examinName: '',
row: {},
leftSrc: '',
leftLoading: true,
leftLoading: false,
rightLoading: false,
leftBaseOptions: [],
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() {
......@@ -115,12 +201,55 @@ export default {
this.examinName = this.$route.query.examinName
this.row = JSON.parse(this.$route.query.row)
this.resultContent = this.row.reviewSuggestion || ''
if (this.tab === '8') {
this.leftLoading = false
this.leftContentType = this.$route.query.leftContentType
this.rightContentType = this.$route.query.rightContentType
if (this.tab === '8' || this.tab === '9') {
this.getRightContent()
} 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: {
// 带入到备注
toRemark(str) {
......@@ -128,18 +257,39 @@ export default {
? this.resultContent + '\n' + str
: str
},
getReviewNorm() {
const { needId } = this.row
getLeftContent() {
if (!this.getLeftApi) return
this.leftLoading = true
const { needId, prjId, archiPrjReviewEnum } = this.row
const params = {
needId,
prjId,
archiPrjReviewEnum,
}
getReviewNorm(params).then((res) => {
this.getLeftApi(params).then((res) => {
this.leftLoading = false
if (res.code === 200) {
this.leftLoading = false
this.leftBaseOptions = res.data.docParserList.map(
(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 {
{ label: '功能偏差', name: '4' },
{ label: '系统部署', name: '5' },
{ label: '系统集成', name: '6' },
{ label: '系统按钮', name: '7' },
{ label: '系统安全', name: '7' },
{ label: '功能重复风险', name: '8' },
{ label: '数据重复录入风险', name: '9' },
],
......@@ -160,8 +160,29 @@ export default {
value: 'REPORT_NORM',
name: '1',
},
leftContentTypeOptions: ['word', 'img', 'word', 'word', 'word'],
rightContentTypeOptions: ['word', 'img', 'img', 'table', 'word'],
leftContentTypeOptions: [
'onlyoffice',
'img',
'word',
'onlyoffice',
'onlyoffice',
'onlyoffice',
'onlyoffice',
null,
null,
],
rightContentTypeOptions: [
'onlyoffice',
'img',
'word',
'table',
'word',
'word',
'word',
'table',
'table',
'table',
],
}
},
components: {
......
......@@ -69,7 +69,7 @@ export default {
return {
resultContent: '',
row: {},
leftLoading: true,
leftLoading: false,
leftBaseOptions: [],
rightBaseOptions: [],
onlineReviewState: 1,
......@@ -116,6 +116,8 @@ export default {
if (res.code === 200) {
loading.close()
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
}
})
},
......
<template>
<div class="reviewSituationDetails">
<el-tabs>
<el-tab-pane label="一致性评审">
<Tab1></Tab1>
</el-tab-pane>
<el-tab-pane label="架构遵从">
<Tab2></Tab2>
</el-tab-pane>
<el-tab-pane label="关键技术深度评审">
<Tab3></Tab3>
</el-tab-pane>
<el-tab-pane label="功能深度评审">
<Tab4></Tab4>
</el-tab-pane>
<el-tab-pane label="数据深度评审">
<Tab5></Tab5>
</el-tab-pane>
</el-tabs>
</div>
<div class="reviewArchiPoliticeCheckDetails">
<el-tabs class="m-lr-10" v-model="activeName" @tab-click="handleClick">
<el-tab-pane
:label="item.label"
:name="item.name"
v-for="item in tabOptions"
:key="item.name"
lazy
>
<keep-alive>
<component :is="item.componentTag"></component>
</keep-alive>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import Tab1 from './tab1.vue';
import Tab2 from './tab2.vue';
import Tab3 from './tab3.vue';
import Tab4 from './tab4.vue';
import Tab5 from './tab5.vue';
import { MessageBox, Message } from 'element-ui';
import $ from 'jquery';
import {
saveArchiViewManageCardDetails
} from '@/api/index.js';
export default {
name: 'reviewSituationDetails',
components: {
Tab1,
Tab2,
Tab3,
Tab4,
Tab5,
},
data() {
return {
routerId: null,
};
},
mounted(){
},
methods: {
}
}
import Tab1 from './tab1.vue'
import Tab2 from './tab2.vue'
import Tab3 from './tab3.vue'
import Tab4 from './tab4.vue'
import Tab5 from './tab5.vue'
export default {
name: 'reviewSituationDetails',
components: {
Tab1,
Tab2,
Tab3,
Tab4,
Tab5,
},
data() {
return {
activeName: '1',
tabOptions: [
{ label: '一致性评审', name: '1', componentTag: 'Tab1' },
{ label: '架构遵从', name: '2', componentTag: 'Tab2' },
{ label: '关键技术深度评审', name: '3', componentTag: 'Tab3' },
{ label: '功能深度评审', name: '4', componentTag: 'Tab4' },
{ label: '数据深度评审', name: '5', componentTag: 'Tab5' },
],
componentTag: '',
}
},
created() {},
methods: {
handleClick(tab, event) {
// console.log(tab, event)
// this.componentTag = `tab${+tab.index + 1}`
},
},
}
</script>
<style>
.confirmClass{
background-color: #0D867F !important;
}
.el-message-box__content{
padding: 60px 15px 60px 15px;
}
</style>
<style scoped>
.el-tabs{
width: 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 lang="scss" scoped>
@import '@/styles/common.scss';
.reviewArchiPoliticeCheckDetails {
width: 100%;
& > div {
height: 100%;
}
/deep/ .el-tabs__content {
height: calc(100% - 55px);
.el-tab-pane {
height: 100%;
}
}
}
</style>
<template>
<div class="tab1">
<div class="content">
<div class="left_container">
<el-alert title="评审标准" type="success" :closable="false"></el-alert>
<el-select v-model="select1" class="leftSelect">
<el-option label="1" value="1"></el-option>
</el-select>
<div class="tab-component flex-column h-100">
<div class="content flex">
<div class="left_container m-r-10 flex-column">
<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 class="right_container">
<el-alert title="评审内容" type="success" :closable="false"></el-alert>
<el-select v-model="select2" class="rightSelect">
<el-option label="1" value="1"></el-option>
</el-select>
<div class="right_container flex-column">
<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 class="bottom_container">
<div
style="
padding-right: 20px;
text-align: left;
margin: 15px 0;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div>
<el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px">评审意见</span>
<el-radio v-model="radio" label="1">通过</el-radio>
<el-radio v-model="radio" label="2">不通过</el-radio>
<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>
<el-button type="primary" size="medium">带入批准</el-button>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div>
<el-input
type="textarea"
:rows="4"
v-model="textarea"
style="width: 98%"
v-model="resultContent"
v-no-backslash
class="w-100"
placeholder="请输入"
></el-input>
</div>
</div>
</template>
<script>
import { savePrelDesInspecte } from '@/api/index.js'
import { MessageBox, Message } from 'element-ui'
import { savePrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
export default {
name: 'tab1',
components: {},
data() {
return {
radio: '1',
textarea: '',
select1: null,
select2: null,
resultContent: '',
isMeet: null,
selectOptions: [
{
label: '通过',
value: 1,
},
{
label: '不通过',
value: 0,
},
],
select: '1',
row: {},
}
},
mounted() {
created() {
this.row = JSON.parse(this.$route.query.row)
this.getDetail()
},
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({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'CONFORMANCE_REVIEW',
}
savePrelDesInspecte(params).then((res) => {
loading.close()
if (res.code === 200) {
if (res.code == 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
......@@ -89,48 +118,7 @@ export default {
},
}
</script>
<style scoped>
.tab1 {
height: 100%;
}
.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 lang="scss" scoped>
@import '@/styles/common.scss';
@import '@/views/reviewArchiPoliticeCheck/index.scss';
</style>
<template>
<div class="tab2">
<div class="content">
<div class="left_container">
<el-alert title="评审标准" type="success" :closable="false"></el-alert>
</div>
<div class="right_container">
<el-alert title="评审内容" type="success" :closable="false"></el-alert>
</div>
</div>
<div class="bottom_container">
<div style="padding-right: 20px;text-align: left;margin: 15px 0;">
<el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px;">审查意见</span>
</div>
<el-input type="textarea" :rows="4" v-model="textarea" style="width: 98%;"></el-input>
</div>
</div>
<div class="tab-component flex-column h-100">
<div class="content flex">
<div class="left_container m-r-10 flex-column">
<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 class="right_container flex-column">
<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 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>
<script>
import {
getArchiViewManageTable
} from '@/api/index.js';
import { MessageBox, Message } from 'element-ui';
import { qViewPrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
export default {
name: 'tab2',
components: {
},
data() {
return {
radio: '1',
textarea: ''
};
},
mounted(){
},
methods: {
}
name: 'tab2',
components: {},
data() {
return {
resultContent: '',
isMeet: null,
selectOptions: [
{
label: '通过',
value: 1,
},
{
label: '不通过',
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>
<style scoped>
.tab2{
height: 100%;
}
.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
<style lang="scss" scoped>
@import '@/styles/common.scss';
@import '@/views/reviewArchiPoliticeCheck/index.scss';
</style>
<template>
<div class="tab3">
<div class="content">
<div class="left_container">
<el-alert title="评审标准" type="success" :closable="false"></el-alert>
<div class="tab-component flex-column h-100">
<div class="content flex">
<div class="left_container m-r-10 flex-column">
<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 class="right_container">
<el-alert title="评审内容" type="success" :closable="false"></el-alert>
<div class="right_container flex-column">
<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 class="bottom_container">
<div
style="
padding-right: 20px;
text-align: left;
margin: 15px 0;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div>
<el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px">审查意见</span>
<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>
<div class="flex">
<el-button type="primary" size="medium" @click="handleSave"
>保存意见</el-button
>
</div>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div>
<el-input
type="textarea"
:rows="4"
v-model="textarea"
style="width: 98%"
v-model="resultContent"
v-no-backslash
class="w-100"
placeholder="请输入"
></el-input>
</div>
</div>
</template>
<script>
import { savePrelDesInspecte } from '@/api/index.js'
import { savePrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
export default {
name: 'tab3',
components: {},
data() {
return {
radio: '1',
textarea: '',
resultContent: '',
isMeet: null,
select: '1',
row: {},
}
},
mounted() {
created() {
this.row = JSON.parse(this.$route.query.row)
this.getDetail()
},
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({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'KEY_TECHNOLOGY_REVIEW',
}
savePrelDesInspecte(params).then((res) => {
loading.close()
if (res.code === 200) {
if (res.code == 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
......@@ -77,36 +98,7 @@ export default {
},
}
</script>
<style scoped>
.tab3 {
height: 100%;
}
.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 lang="scss" scoped>
@import '@/styles/common.scss';
@import '@/views/reviewArchiPoliticeCheck/index.scss';
</style>
<template>
<div class="tab4">
<div class="content">
<div class="left_container">
<el-alert title="评审标准" type="success" :closable="false"></el-alert>
<div class="tab-component flex-column h-100">
<div class="content flex">
<div class="left_container m-r-10 flex-column">
<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 class="right_container">
<el-alert title="评审内容" type="success" :closable="false"></el-alert>
<div class="right_container flex-column">
<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 class="bottom_container">
<div
style="
padding-right: 20px;
text-align: left;
margin: 15px 0;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div>
<el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px">评审意见</span>
<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>
<div class="flex">
<el-button type="primary" size="medium" @click="handleSave"
>保存意见</el-button
>
</div>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div>
<el-input
type="textarea"
:rows="4"
v-model="textarea"
style="width: 98%"
v-model="resultContent"
v-no-backslash
class="w-100"
placeholder="请输入"
></el-input>
</div>
</div>
</template>
<script>
import { savePrelDesInspecte } from '@/api/index.js'
import { savePrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
export default {
name: 'tab4',
components: {},
data() {
return {
radio: '1',
textarea: '',
resultContent: '',
isMeet: null,
select: '1',
row: {},
}
},
mounted() {
created() {
this.row = JSON.parse(this.$route.query.row)
this.getDetail()
},
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({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'FUNCTIONAL_DEPTH_REVIEW',
}
savePrelDesInspecte(params).then((res) => {
loading.close()
if (res.code === 200) {
if (res.code == 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
......@@ -77,36 +98,7 @@ export default {
},
}
</script>
<style scoped>
.tab4 {
height: 100%;
}
.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 lang="scss" scoped>
@import '@/styles/common.scss';
@import '@/views/reviewArchiPoliticeCheck/index.scss';
</style>
<template>
<div class="tab5">
<div class="content">
<div class="left_container">
<el-alert title="评审标准" type="success" :closable="false"></el-alert>
<div class="tab-component flex-column h-100">
<div class="content flex">
<div class="left_container m-r-10 flex-column">
<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 class="right_container">
<el-alert title="评审内容" type="success" :closable="false"></el-alert>
<div class="right_container flex-column">
<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 class="bottom_container">
<div
style="
padding-right: 20px;
text-align: left;
margin: 15px 0;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div>
<el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px">评审意见</span>
<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>
<div class="flex">
<el-button type="primary" size="medium" @click="handleSave"
>保存意见</el-button
>
</div>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div>
<el-input
type="textarea"
:rows="4"
v-model="textarea"
style="width: 98%"
v-model="resultContent"
v-no-backslash
class="w-100"
placeholder="请输入"
></el-input>
</div>
</div>
</template>
<script>
import { savePrelDesInspecte } from '@/api/index.js'
import { savePrelDesInspecte, detailPrelDesInspecte } from '@/api/index.js'
export default {
name: 'tab5',
components: {},
data() {
return {
radio: '1',
textarea: '',
resultContent: '',
isMeet: null,
select: '1',
row: {},
}
},
mounted() {
created() {
this.row = JSON.parse(this.$route.query.row)
this.getDetail()
},
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({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'DATA_DEPTH_REVIEW',
}
savePrelDesInspecte(params).then((res) => {
loading.close()
if (res.code === 200) {
if (res.code == 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
......@@ -77,36 +98,7 @@ export default {
},
}
</script>
<style scoped>
.tab5 {
height: 100%;
}
.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 lang="scss" scoped>
@import '@/styles/common.scss';
@import '@/views/reviewArchiPoliticeCheck/index.scss';
</style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!