Commit 78cc68f4 by 史敦盼

架构遵从检查

1 parent f045bb57
...@@ -760,6 +760,18 @@ export function addOrgInfo(params) { ...@@ -760,6 +760,18 @@ export function addOrgInfo(params) {
export function updOrgInfo(params) { export function updOrgInfo(params) {
return post(EADC_ARRCHITECTURE + '/org-info/upd', params) return post(EADC_ARRCHITECTURE + '/org-info/upd', params)
} }
// 架构遵从检查-保存评审意见
export function saveArchitectureFollows(params) {
return post(EADC_ARRCHITECTURE + '/architectureFollows/ad', params)
}
// 架构遵从检查-查询评审意见
export function viewArchitectureFollows(params) {
return post(EADC_ARRCHITECTURE + '/architectureFollows/qReview', params)
}
// 架构遵从检查-查询对应架构视图
export function qViewArchitectureFollows(params) {
return post(EADC_ARRCHITECTURE + '/architectureFollows/qView', params)
}
export function postRequest(url, params) { export function postRequest(url, params) {
return post(EADC_ARRCHITECTURE + url, params) return post(EADC_ARRCHITECTURE + url, params)
} }
...@@ -34,3 +34,6 @@ export const querySupervisionProblem = ...@@ -34,3 +34,6 @@ export const querySupervisionProblem =
export const queryConceptualBaseManagement = EADC_ARRCHITECTURE + '/int-info/' export const queryConceptualBaseManagement = EADC_ARRCHITECTURE + '/int-info/'
// 概设评审基础管理-组织机构管理 // 概设评审基础管理-组织机构管理
export const queryConceptualBaseOrg = EADC_ARRCHITECTURE + '/org-info/' export const queryConceptualBaseOrg = EADC_ARRCHITECTURE + '/org-info/'
// 架构遵从检查列表
export const queryArchitectureFollowExamine =
EADC_ARRCHITECTURE + '/architectureFollows/'
...@@ -296,25 +296,32 @@ const routes = [ ...@@ -296,25 +296,32 @@ const routes = [
component: () => import('@/views/architectureFollowExamine/index.vue'), component: () => import('@/views/architectureFollowExamine/index.vue'),
}, },
{ {
path: '/main/architectureFollowExamineDetails', // 架构督查 - 架构遵从检查-详情
name: 'architectureFollowExamineDetails',
component: () =>
import('@/views/architectureFollowExamine/details.vue'),
},
{
path: '/main/artPolicyExamine', // 架构督查-技术政策审查 path: '/main/artPolicyExamine', // 架构督查-技术政策审查
name: 'artPolicyExamine', name: 'artPolicyExamine',
component: () => import('@/views/artPolicyExamine/index.vue'), component: () => import('@/views/artPolicyExamine/index.vue'),
}, },
{ {
path:'/main/collectDataConfiguration',// 架构督查 - 收集资料配置 path: '/main/collectDataConfiguration', // 架构督查 - 收集资料配置
name:'collectDataConfiguration', name: 'collectDataConfiguration',
component:()=> import('@/views/collectDataConfiguration/index.vue'), component: () => import('@/views/collectDataConfiguration/index.vue'),
}, },
{ {
path:'/main/supervisionDatacollection', // 架构督查 - 督查资料收集 path: '/main/supervisionDatacollection', // 架构督查 - 督查资料收集
name:'supervisionDataCollection', name: 'supervisionDataCollection',
component:()=>import('@/views/supervisionDataCollection/index.vue') component: () => import('@/views/supervisionDataCollection/index.vue'),
}, },
{ {
path:'/main/architectureInspectionAnalysis',// 架构督查 - 架构督查分析 path: '/main/architectureInspectionAnalysis', // 架构督查 - 架构督查分析
name:'architectureInspectionAnalysis', name: 'architectureInspectionAnalysis',
component:()=> import('@/views/architectureInspectionAnalysis/index.vue'), component: () =>
import('@/views/architectureInspectionAnalysis/index.vue'),
}, },
], ],
}, },
......
...@@ -98,3 +98,22 @@ export const analysisState = [ ...@@ -98,3 +98,22 @@ export const analysisState = [
{ label: '已解析', value: 1 }, { label: '已解析', value: 1 },
{ label: '解析失败', value: 2 }, { label: '解析失败', value: 2 },
] ]
export const architectureFollowsReviewEnum = [
{
label: '业务架构遵从',
value: 'BUSINESS_ARCHITECTURE_CONFORMANCE_SUPERVISE',
},
{
label: '应用架构遵从',
value: 'APPLICATION_ARCHITECTURE_CONFORMANCE_SUPERVISE',
},
{
label: '技术架构遵从',
value: 'TECHNICAL_ARCHITECTURE_CONFORMANCE_SUPERVISE',
},
{ label: '数据架构遵从', value: 'DATA_ARCHITECTURE_CONFORMANCE_SUPERVISE' },
{
label: '安全架构遵从',
value: 'SECURITY_ARCHITECTURE_CONFORMANCE_SUPERVISE',
},
]
<!--
* @Description: 架构督查-架构遵从检查
* @Version: 2.0
* @Autor: pan
* @Date: 2024-03-26 18:27:18
* @LastEditors: pan
* @LastEditTime: 2024-03-28 14:18:52
-->
<template>
<div class="architectureFollowExamine">
<el-tabs class="m-lr-10" v-model="activeName">
<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 { getArchiViewManage } from '@/api/index.js'
export default {
name: 'architectureFollowExamine',
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: '',
leftSelectOptions: [],
rightSelectOptions: [],
leftSelect: undefined,
rightSelect: undefined,
}
},
components: {
Tab1,
Tab2,
Tab3,
Tab4,
Tab5,
},
created() {
// this.getLeftTree()
// this.getRightTree()
},
methods: {
getLeftTree() {
getArchiViewManage({ archiStage: 2 }).then((res) => {
if (res.code === 200) {
this.leftSelectOptions = res.data
this.leftSelect = this.leftSelectOptions[0].viewId
}
})
},
getRightTree() {
getArchiViewManage({ archiStage: 3 }).then((res) => {
if (res.code === 200) {
this.rightSelectOptions = res.data
this.rightSelect = this.rightSelectOptions[0].viewId
}
})
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/common.scss';
.architectureFollowExamine {
width: 100%;
& > div {
height: 100%;
}
::v-deep .el-tabs__content {
height: calc(100% - 55px);
.el-tab-pane {
height: 100%;
}
}
}
</style>
<!-- <!--
* @Description: 架构督查-架构遵从检查 * @Description: 架构督查-架构遵从检查列表
* @Version: 2.0 * @Version: 2.0
* @Autor: pan * @Autor: pan
* @Date: 2024-03-26 18:27:18 * @Date: 2024-03-26 19:31:32
* @LastEditors: pan * @LastEditors: pan
* @LastEditTime: 2024-03-26 19:08:43 * @LastEditTime: 2024-03-28 09:44:32
--> -->
<template> <template>
<div class="architectureFollowExamine"> <div class="searchTable">
<el-tabs class="m-lr-10" v-model="activeName" @tab-click="handleClick"> <list-page>
<el-tab-pane <!-- 查询表单插槽 -->
:label="item.label" <template #formWrap>
:name="item.name" <SearchForm @onSearch="querySearch" :form-options="formOptions" />
v-for="item in tabOptions" </template>
:key="item.name" <!-- 表格插槽 -->
lazy <template #tableWrap>
> <table-config
<keep-alive> ref="searchTable"
<component :is="item.componentTag"></component> :query="query"
</keep-alive> :columns="columns"
</el-tab-pane> id-key="elementId"
</el-tabs> >
</table-config>
</template>
</list-page>
</div> </div>
</template> </template>
<script> <script>
import Tab1 from './tab1.vue' import ListPage from '@/components/ListPage.vue'
import Tab2 from './tab2.vue' import SearchForm from '@/components/SearchForm.vue'
import Tab3 from './tab3.vue' import TableConfig from '@/components/TableConfig.vue'
import Tab4 from './tab4.vue' import { updReportManage, delReportManage } from '@/api/index.js'
import Tab5 from './tab5.vue' import { queryArchitectureFollowExamine } from '@/api/interface'
import { buildType } from '@/utils/dictionary'
export default { export default {
name: 'architectureFollowExamine', name: 'architectureFollowExamine',
components: {
ListPage,
SearchForm,
TableConfig,
},
data() { data() {
return { return {
activeName: '1', selectRows: [],
tabOptions: [ query: {
{ label: '业务架构遵从', name: '1', componentTag: 'Tab1' }, url: queryArchitectureFollowExamine,
{ label: '应用架构遵从', name: '2', componentTag: 'Tab2' }, method: 'post',
{ label: '数据架构遵从', name: '3', componentTag: 'Tab3' }, queryParam: {},
{ label: '技术架构遵从', name: '4', componentTag: 'Tab4' }, },
{ label: '安全数据架构遵从', name: '5', componentTag: 'Tab5' }, visible: false,
], rowData: {},
componentTag: '', dialogTitle: '',
approvalVisible: false,
} }
}, },
components: { computed: {
Tab1, formOptions() {
Tab2, return [
Tab3, {
Tab4, label: '项目名称', // label文字
Tab5, prop: 'prjName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '建设类型',
width: '100px',
prop: 'buildType',
element: 'el-select', // 指定elementui组件
dictType: 'build_type',
placeholder: '请选择', // elementui组件属性
},
]
},
columns() {
return [
{ label: '序号', type: 'index', width: '80px' },
{
label: '系统名称',
prop: 'appName',
},
{
label: '建设类型', // label文字
prop: 'buildType', // 字段名
options: buildType,
collectionType: true,
width: '120px',
},
{
label: '项目名称',
prop: 'projectName',
},
{
label: '承建单位',
prop: 'buildOrgName',
},
{
label: '项目经理',
prop: 'projectManager',
},
{
label: '创建人',
prop: 'createMan',
},
{
label: '创建时间',
prop: 'createTime',
},
{
label: '操作',
type: 'operation',
width: '240px',
actionButtons: [
{
title: '遵从检查',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
],
callback: (row, title) => {
this.fnOperation(row, title)
},
},
]
},
},
created() {},
methods: {
querySearch(data) {
this.query.queryParam = {
...this.query.queryParam,
...data,
}
this.$refs.searchTable.queryData()
},
/**
* @description: 操作按钮
* @param {Object} row 当前操作行数据
* @param {String} title 当前操作按钮名称
* @author: pan
*/
fnOperation(row, title) {
this.$router.push({
path: '/main/architectureFollowExamineDetails',
query: {
row: JSON.stringify(row),
},
})
},
}, },
mounted() {},
methods: {},
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import '@/styles/common.scss'; @import '@/styles/common.scss';
.architectureFollowExamine {
width: 100%;
& > div {
height: 100%;
}
::v-deep .el-tabs__content {
height: calc(100% - 55px);
.el-tab-pane {
height: 100%;
}
}
}
</style> </style>
...@@ -3,15 +3,34 @@ ...@@ -3,15 +3,34 @@
<div class="content flex"> <div class="content flex">
<div class="left_container m-r-10 flex-column"> <div class="left_container m-r-10 flex-column">
<div class="left_container_title"> <div class="left_container_title">
<i class="el-icon-caret-right icon"></i> <div class="flex">
<span>系统业务架构视图</span> <i class="el-icon-caret-right icon"></i>
<span>系统业务架构视图</span>
</div>
<el-select
class="select-title"
@change="leftSelectChange"
v-model="leftSelect"
>
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in leftSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="left_container_content flex-1"> <div
class="left_container_content flex-1"
v-loading="leftLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in leftBaseOptions" v-for="(item, idx) in leftBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -21,13 +40,26 @@ ...@@ -21,13 +40,26 @@
<i class="el-icon-caret-right icon"></i> <i class="el-icon-caret-right icon"></i>
<span>概设阶段业务架构视图</span> <span>概设阶段业务架构视图</span>
</div> </div>
<el-select class="select-title" v-model="rightSelect">
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in rightSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="right_container_content flex-1"> <div
class="right_container_content flex-1"
v-loading="rightLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in rightBaseOptions" v-for="(item, idx) in rightBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -55,8 +87,10 @@ ...@@ -55,8 +87,10 @@
<script> <script>
import { import {
saveReviewArchiFollowCheckRightSuggestion, saveArchitectureFollows,
queryReviewArchiFollowCheckRightSuggestionDetails, viewArchitectureFollows,
qViewArchitectureFollows,
getArchiViewManage,
} from '@/api/index.js' } from '@/api/index.js'
export default { export default {
name: 'tab1', name: 'tab1',
...@@ -66,37 +100,106 @@ export default { ...@@ -66,37 +100,106 @@ export default {
resultContent: '', resultContent: '',
leftBaseOptions: [], leftBaseOptions: [],
rightBaseOptions: [], rightBaseOptions: [],
leftLoading: false,
rightLoading: false,
leftSelect: undefined,
leftSelectOptions: [],
rightSelect: undefined,
rightSelectOptions: [],
row: {},
} }
}, },
created() { created() {
this.getDetail() this.row = JSON.parse(this.$route.query.row)
this.getLeftTree().then((res) => {
this.getDetail()
})
this.getRightTree()
this.getLeftQview()
this.getRightQview()
}, },
methods: { methods: {
leftSelectChange() {
this.getDetail()
},
commonParams() {
return {
reviewEnum: 'BUSINESS_ARCHITECTURE_CONFORMANCE_SUPERVISE',
appId: this.row.appId,
reviewState: 0,
}
},
getDetail() { getDetail() {
const params = { const params = {
reviewEnum: 'OPERATIONAL_SAFETY_COMPLIANCE_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId, subViewId: this.leftSelect,
} }
queryReviewArchiFollowCheckRightSuggestionDetails(params).then((res) => { viewArchitectureFollows(params).then((res) => {
if (res.code === 200) { if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState }
})
},
getLeftTree() {
return getArchiViewManage({ archiStage: 2 }).then((res) => {
if (res.code === 200) {
this.leftSelectOptions = res.data
this.leftSelect = this.leftSelectOptions[0].viewId
}
})
},
getRightTree() {
getArchiViewManage({ archiStage: 3 }).then((res) => {
if (res.code === 200) {
this.rightSelectOptions = res.data
this.rightSelect = this.rightSelectOptions[0].viewId
}
})
},
getLeftQview() {
const params = {
appId: this.row.appId,
archiBelongId: 1,
archiStage: 2,
}
this.leftLoading = true
qViewArchitectureFollows(params).then((res) => {
this.leftLoading = false
if (res.code === 200) {
this.leftBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
}
})
},
getRightQview() {
const params = {
appId: this.row.appId,
archiBelongId: 1,
archiStage: 3,
}
this.rightLoading = true
qViewArchitectureFollows(params).then((res) => {
this.rightLoading = false
if (res.code === 200) {
this.rightBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
} }
}) })
}, },
handleSave() { handleSave() {
const params = { const params = {
reviewEnum: 'OPERATIONAL_SAFETY_COMPLIANCE_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId,
reviewState: this.isMeet,
reviewSuggestion: this.resultContent, reviewSuggestion: this.resultContent,
subViewId: this.leftSelect,
} }
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
saveReviewArchiFollowCheckRightSuggestion(params).then((res) => { saveArchitectureFollows(params).then((res) => {
loading.close() loading.close()
if (res.code == 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
......
...@@ -3,15 +3,34 @@ ...@@ -3,15 +3,34 @@
<div class="content flex"> <div class="content flex">
<div class="left_container m-r-10 flex-column"> <div class="left_container m-r-10 flex-column">
<div class="left_container_title"> <div class="left_container_title">
<i class="el-icon-caret-right icon"></i> <div class="flex">
<span>系统应用架构视图</span> <i class="el-icon-caret-right icon"></i>
<span>系统业务架构视图</span>
</div>
<el-select
class="select-title"
@change="leftSelectChange"
v-model="leftSelect"
>
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in leftSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="left_container_content flex-1"> <div
class="left_container_content flex-1"
v-loading="leftLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in leftBaseOptions" v-for="(item, idx) in leftBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -19,15 +38,28 @@ ...@@ -19,15 +38,28 @@
<div class="right_container_title flex-b-c"> <div class="right_container_title flex-b-c">
<div class="flex"> <div class="flex">
<i class="el-icon-caret-right icon"></i> <i class="el-icon-caret-right icon"></i>
<span>概设阶段应用架构视图</span> <span>概设阶段业务架构视图</span>
</div> </div>
<el-select class="select-title" v-model="rightSelect">
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in rightSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="right_container_content flex-1"> <div
class="right_container_content flex-1"
v-loading="rightLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in rightBaseOptions" v-for="(item, idx) in rightBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -55,8 +87,10 @@ ...@@ -55,8 +87,10 @@
<script> <script>
import { import {
saveReviewArchiFollowCheckRightSuggestion, saveArchitectureFollows,
queryReviewArchiFollowCheckRightSuggestionDetails, viewArchitectureFollows,
qViewArchitectureFollows,
getArchiViewManage,
} from '@/api/index.js' } from '@/api/index.js'
export default { export default {
name: 'tab2', name: 'tab2',
...@@ -66,37 +100,106 @@ export default { ...@@ -66,37 +100,106 @@ export default {
resultContent: '', resultContent: '',
leftBaseOptions: [], leftBaseOptions: [],
rightBaseOptions: [], rightBaseOptions: [],
leftLoading: false,
rightLoading: false,
leftSelect: undefined,
leftSelectOptions: [],
rightSelect: undefined,
rightSelectOptions: [],
row: {},
} }
}, },
created() { created() {
this.getDetail() this.row = JSON.parse(this.$route.query.row)
this.getLeftTree().then((res) => {
this.getDetail()
})
this.getRightTree()
this.getLeftQview()
this.getRightQview()
}, },
methods: { methods: {
leftSelectChange() {
this.getDetail()
},
commonParams() {
return {
reviewEnum: 'APPLICATION_ARCHITECTURE_CONFORMANCE_SUPERVISE',
appId: this.row.appId,
reviewState: 0,
}
},
getDetail() { getDetail() {
const params = { const params = {
reviewEnum: 'FUNCTIONAL_SATISFACTION_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId, subViewId: this.leftSelect,
} }
queryReviewArchiFollowCheckRightSuggestionDetails(params).then((res) => { viewArchitectureFollows(params).then((res) => {
if (res.code === 200) { if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState }
})
},
getLeftTree() {
return getArchiViewManage({ archiStage: 2 }).then((res) => {
if (res.code === 200) {
this.leftSelectOptions = res.data
this.leftSelect = this.leftSelectOptions[0].viewId
}
})
},
getRightTree() {
getArchiViewManage({ archiStage: 3 }).then((res) => {
if (res.code === 200) {
this.rightSelectOptions = res.data
this.rightSelect = this.rightSelectOptions[0].viewId
}
})
},
getLeftQview() {
const params = {
appId: this.row.appId,
archiBelongId: 2,
archiStage: 2,
}
this.leftLoading = true
qViewArchitectureFollows(params).then((res) => {
this.leftLoading = false
if (res.code === 200) {
this.leftBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
}
})
},
getRightQview() {
const params = {
appId: this.row.appId,
archiBelongId: 2,
archiStage: 3,
}
this.rightLoading = true
qViewArchitectureFollows(params).then((res) => {
this.rightLoading = false
if (res.code === 200) {
this.rightBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
} }
}) })
}, },
handleSave() { handleSave() {
const params = { const params = {
reviewEnum: 'FUNCTIONAL_SATISFACTION_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId,
reviewState: '0',
reviewSuggestion: this.resultContent, reviewSuggestion: this.resultContent,
subViewId: this.leftSelect,
} }
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
saveReviewArchiFollowCheckRightSuggestion(params).then((res) => { saveArchitectureFollows(params).then((res) => {
loading.close() loading.close()
if (res.code == 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
......
...@@ -3,15 +3,34 @@ ...@@ -3,15 +3,34 @@
<div class="content flex"> <div class="content flex">
<div class="left_container m-r-10 flex-column"> <div class="left_container m-r-10 flex-column">
<div class="left_container_title"> <div class="left_container_title">
<i class="el-icon-caret-right icon"></i> <div class="flex">
<span>系统数据架构视图</span> <i class="el-icon-caret-right icon"></i>
<span>系统业务架构视图</span>
</div>
<el-select
class="select-title"
@change="leftSelectChange"
v-model="leftSelect"
>
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in leftSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="left_container_content flex-1"> <div
class="left_container_content flex-1"
v-loading="leftLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in leftBaseOptions" v-for="(item, idx) in leftBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -19,15 +38,28 @@ ...@@ -19,15 +38,28 @@
<div class="right_container_title flex-b-c"> <div class="right_container_title flex-b-c">
<div class="flex"> <div class="flex">
<i class="el-icon-caret-right icon"></i> <i class="el-icon-caret-right icon"></i>
<span>概设阶段数据架构视图</span> <span>概设阶段业务架构视图</span>
</div> </div>
<el-select class="select-title" v-model="rightSelect">
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in rightSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="right_container_content flex-1"> <div
class="right_container_content flex-1"
v-loading="rightLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in rightBaseOptions" v-for="(item, idx) in rightBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -55,8 +87,10 @@ ...@@ -55,8 +87,10 @@
<script> <script>
import { import {
saveReviewArchiFollowCheckRightSuggestion, saveArchitectureFollows,
queryReviewArchiFollowCheckRightSuggestionDetails, viewArchitectureFollows,
qViewArchitectureFollows,
getArchiViewManage,
} from '@/api/index.js' } from '@/api/index.js'
export default { export default {
name: 'tab3', name: 'tab3',
...@@ -66,37 +100,106 @@ export default { ...@@ -66,37 +100,106 @@ export default {
resultContent: '', resultContent: '',
leftBaseOptions: [], leftBaseOptions: [],
rightBaseOptions: [], rightBaseOptions: [],
leftLoading: false,
rightLoading: false,
leftSelect: undefined,
leftSelectOptions: [],
rightSelect: undefined,
rightSelectOptions: [],
row: {},
} }
}, },
created() { created() {
this.getDetail() this.row = JSON.parse(this.$route.query.row)
this.getLeftTree().then((res) => {
this.getDetail()
})
this.getRightTree()
this.getLeftQview()
this.getRightQview()
}, },
methods: { methods: {
leftSelectChange() {
this.getDetail()
},
commonParams() {
return {
reviewEnum: 'TECHNICAL_ARCHITECTURE_CONFORMANCE_SUPERVISE',
appId: this.row.appId,
reviewState: 0,
}
},
getDetail() { getDetail() {
const params = { const params = {
reviewEnum: 'OPERATIONAL_RELIABILITY_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId, subViewId: this.leftSelect,
} }
queryReviewArchiFollowCheckRightSuggestionDetails(params).then((res) => { viewArchitectureFollows(params).then((res) => {
if (res.code === 200) { if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState }
})
},
getLeftTree() {
return getArchiViewManage({ archiStage: 2 }).then((res) => {
if (res.code === 200) {
this.leftSelectOptions = res.data
this.leftSelect = this.leftSelectOptions[0].viewId
}
})
},
getRightTree() {
getArchiViewManage({ archiStage: 3 }).then((res) => {
if (res.code === 200) {
this.rightSelectOptions = res.data
this.rightSelect = this.rightSelectOptions[0].viewId
}
})
},
getLeftQview() {
const params = {
appId: this.row.appId,
archiBelongId: 3,
archiStage: 2,
}
this.leftLoading = true
qViewArchitectureFollows(params).then((res) => {
this.leftLoading = false
if (res.code === 200) {
this.leftBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
}
})
},
getRightQview() {
const params = {
appId: this.row.appId,
archiBelongId: 3,
archiStage: 3,
}
this.rightLoading = true
qViewArchitectureFollows(params).then((res) => {
this.rightLoading = false
if (res.code === 200) {
this.rightBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
} }
}) })
}, },
handleSave() { handleSave() {
const params = { const params = {
reviewEnum: 'OPERATIONAL_RELIABILITY_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId,
reviewState: '0',
reviewSuggestion: this.resultContent, reviewSuggestion: this.resultContent,
subViewId: this.leftSelect,
} }
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
saveReviewArchiFollowCheckRightSuggestion(params).then((res) => { saveArchitectureFollows(params).then((res) => {
loading.close() loading.close()
if (res.code == 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
......
...@@ -3,15 +3,34 @@ ...@@ -3,15 +3,34 @@
<div class="content flex"> <div class="content flex">
<div class="left_container m-r-10 flex-column"> <div class="left_container m-r-10 flex-column">
<div class="left_container_title"> <div class="left_container_title">
<i class="el-icon-caret-right icon"></i> <div class="flex">
<span>系统技术架构视图</span> <i class="el-icon-caret-right icon"></i>
<span>系统业务架构视图</span>
</div>
<el-select
class="select-title"
@change="leftSelectChange"
v-model="leftSelect"
>
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in leftSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="left_container_content flex-1"> <div
class="left_container_content flex-1"
v-loading="leftLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in leftBaseOptions" v-for="(item, idx) in leftBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -19,15 +38,28 @@ ...@@ -19,15 +38,28 @@
<div class="right_container_title flex-b-c"> <div class="right_container_title flex-b-c">
<div class="flex"> <div class="flex">
<i class="el-icon-caret-right icon"></i> <i class="el-icon-caret-right icon"></i>
<span>概设阶段技术架构视图</span> <span>概设阶段业务架构视图</span>
</div> </div>
<el-select class="select-title" v-model="rightSelect">
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in rightSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="right_container_content flex-1"> <div
class="right_container_content flex-1"
v-loading="rightLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in rightBaseOptions" v-for="(item, idx) in rightBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -55,8 +87,10 @@ ...@@ -55,8 +87,10 @@
<script> <script>
import { import {
saveReviewArchiFollowCheckRightSuggestion, saveArchitectureFollows,
queryReviewArchiFollowCheckRightSuggestionDetails, viewArchitectureFollows,
qViewArchitectureFollows,
getArchiViewManage,
} from '@/api/index.js' } from '@/api/index.js'
export default { export default {
name: 'tab4', name: 'tab4',
...@@ -66,37 +100,106 @@ export default { ...@@ -66,37 +100,106 @@ export default {
resultContent: '', resultContent: '',
leftBaseOptions: [], leftBaseOptions: [],
rightBaseOptions: [], rightBaseOptions: [],
leftLoading: false,
rightLoading: false,
leftSelect: undefined,
leftSelectOptions: [],
rightSelect: undefined,
rightSelectOptions: [],
row: {},
} }
}, },
created() { created() {
this.getDetail() this.row = JSON.parse(this.$route.query.row)
this.getLeftTree().then((res) => {
this.getDetail()
})
this.getRightTree()
this.getLeftQview()
this.getRightQview()
}, },
methods: { methods: {
leftSelectChange() {
this.getDetail()
},
commonParams() {
return {
reviewEnum: 'DATA_ARCHITECTURE_CONFORMANCE_SUPERVISE',
appId: this.row.appId,
reviewState: 0,
}
},
getDetail() { getDetail() {
const params = { const params = {
reviewEnum: 'SYSTEM_PRACTICALITY_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId, subViewId: this.leftSelect,
} }
queryReviewArchiFollowCheckRightSuggestionDetails(params).then((res) => { viewArchitectureFollows(params).then((res) => {
if (res.code === 200) { if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState }
})
},
getLeftTree() {
return getArchiViewManage({ archiStage: 2 }).then((res) => {
if (res.code === 200) {
this.leftSelectOptions = res.data
this.leftSelect = this.leftSelectOptions[0].viewId
}
})
},
getRightTree() {
getArchiViewManage({ archiStage: 3 }).then((res) => {
if (res.code === 200) {
this.rightSelectOptions = res.data
this.rightSelect = this.rightSelectOptions[0].viewId
}
})
},
getLeftQview() {
const params = {
appId: this.row.appId,
archiBelongId: 4,
archiStage: 2,
}
this.leftLoading = true
qViewArchitectureFollows(params).then((res) => {
this.leftLoading = false
if (res.code === 200) {
this.leftBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
}
})
},
getRightQview() {
const params = {
appId: this.row.appId,
archiBelongId: 4,
archiStage: 3,
}
this.rightLoading = true
qViewArchitectureFollows(params).then((res) => {
this.rightLoading = false
if (res.code === 200) {
this.rightBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
} }
}) })
}, },
handleSave() { handleSave() {
const params = { const params = {
reviewEnum: 'SYSTEM_PRACTICALITY_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId,
reviewState: '0',
reviewSuggestion: this.resultContent, reviewSuggestion: this.resultContent,
subViewId: this.leftSelect,
} }
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
saveReviewArchiFollowCheckRightSuggestion(params).then((res) => { saveArchitectureFollows(params).then((res) => {
loading.close() loading.close()
if (res.code == 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
......
...@@ -3,15 +3,34 @@ ...@@ -3,15 +3,34 @@
<div class="content flex"> <div class="content flex">
<div class="left_container m-r-10 flex-column"> <div class="left_container m-r-10 flex-column">
<div class="left_container_title"> <div class="left_container_title">
<i class="el-icon-caret-right icon"></i> <div class="flex">
<span>系统安全架构视图</span> <i class="el-icon-caret-right icon"></i>
<span>系统业务架构视图</span>
</div>
<el-select
class="select-title"
@change="leftSelectChange"
v-model="leftSelect"
>
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in leftSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="left_container_content flex-1"> <div
class="left_container_content flex-1"
v-loading="leftLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in leftBaseOptions" v-for="(item, idx) in leftBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -19,15 +38,28 @@ ...@@ -19,15 +38,28 @@
<div class="right_container_title flex-b-c"> <div class="right_container_title flex-b-c">
<div class="flex"> <div class="flex">
<i class="el-icon-caret-right icon"></i> <i class="el-icon-caret-right icon"></i>
<span>概设阶段安全架构视图</span> <span>概设阶段业务架构视图</span>
</div> </div>
<el-select class="select-title" v-model="rightSelect">
<el-option
:label="item.viewName"
:value="item.viewId"
v-for="item in rightSelectOptions"
:key="item.viewId"
></el-option>
</el-select>
</div> </div>
<div class="right_container_content flex-1"> <div
class="right_container_content flex-1"
v-loading="rightLoading"
element-loading-text="加载中"
>
<img <img
v-for="(item, idx) in rightBaseOptions" v-for="(item, idx) in rightBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
class="w-100 h-100"
/> />
</div> </div>
</div> </div>
...@@ -55,8 +87,10 @@ ...@@ -55,8 +87,10 @@
<script> <script>
import { import {
saveReviewArchiFollowCheckRightSuggestion, saveArchitectureFollows,
queryReviewArchiFollowCheckRightSuggestionDetails, viewArchitectureFollows,
qViewArchitectureFollows,
getArchiViewManage,
} from '@/api/index.js' } from '@/api/index.js'
export default { export default {
name: 'tab5', name: 'tab5',
...@@ -66,37 +100,106 @@ export default { ...@@ -66,37 +100,106 @@ export default {
resultContent: '', resultContent: '',
leftBaseOptions: [], leftBaseOptions: [],
rightBaseOptions: [], rightBaseOptions: [],
leftLoading: false,
rightLoading: false,
leftSelect: undefined,
leftSelectOptions: [],
rightSelect: undefined,
rightSelectOptions: [],
row: {},
} }
}, },
created() { created() {
this.getDetail() this.row = JSON.parse(this.$route.query.row)
this.getLeftTree().then((res) => {
this.getDetail()
})
this.getRightTree()
this.getLeftQview()
this.getRightQview()
}, },
methods: { methods: {
leftSelectChange() {
this.getDetail()
},
commonParams() {
return {
reviewEnum: 'SECURITY_ARCHITECTURE_CONFORMANCE_SUPERVISE',
appId: this.row.appId,
reviewState: 0,
}
},
getDetail() { getDetail() {
const params = { const params = {
reviewEnum: 'SYSTEM_SECURITY_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId, subViewId: this.leftSelect,
} }
queryReviewArchiFollowCheckRightSuggestionDetails(params).then((res) => { viewArchitectureFollows(params).then((res) => {
if (res.code === 200) { if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState }
})
},
getLeftTree() {
return getArchiViewManage({ archiStage: 2 }).then((res) => {
if (res.code === 200) {
this.leftSelectOptions = res.data
this.leftSelect = this.leftSelectOptions[0].viewId
}
})
},
getRightTree() {
getArchiViewManage({ archiStage: 3 }).then((res) => {
if (res.code === 200) {
this.rightSelectOptions = res.data
this.rightSelect = this.rightSelectOptions[0].viewId
}
})
},
getLeftQview() {
const params = {
appId: this.row.appId,
archiBelongId: 5,
archiStage: 2,
}
this.leftLoading = true
qViewArchitectureFollows(params).then((res) => {
this.leftLoading = false
if (res.code === 200) {
this.leftBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
}
})
},
getRightQview() {
const params = {
appId: this.row.appId,
archiBelongId: 5,
archiStage: 3,
}
this.rightLoading = true
qViewArchitectureFollows(params).then((res) => {
this.rightLoading = false
if (res.code === 200) {
this.rightBaseOptions = res.data.map(
(v) => v.metaModelSvg && `data:image/png;base64,${v.metaModelSvg}`,
)
} }
}) })
}, },
handleSave() { handleSave() {
const params = { const params = {
reviewEnum: 'SYSTEM_SECURITY_REVIEW', ...this.commonParams(),
prjId: this.$route.query.prjId,
reviewState: '0',
reviewSuggestion: this.resultContent, reviewSuggestion: this.resultContent,
subViewId: this.leftSelect,
} }
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
saveReviewArchiFollowCheckRightSuggestion(params).then((res) => { saveArchitectureFollows(params).then((res) => {
loading.close() loading.close()
if (res.code == 200) { if (res.code == 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
......
...@@ -7,7 +7,17 @@ ...@@ -7,7 +7,17 @@
@close="handleClose()" @close="handleClose()"
@open="handleOpen()" @open="handleOpen()"
> >
<div></div> <div>
<div class="prjName">项目名称:{{ rowData.prjName }}</div>
<el-tabs tab-position="left">
<el-tab-pane :label="item.name" v-for="item in options" :key="item.name"
><div class="content">
{{ item.name }}
</div></el-tab-pane
>
</el-tabs>
</div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="handleClose()" size="mini">关 闭</el-button> <el-button @click="handleClose()" size="mini">关 闭</el-button>
</span></el-dialog </span></el-dialog
...@@ -32,7 +42,25 @@ export default { ...@@ -32,7 +42,25 @@ export default {
}, },
}, },
data() { data() {
return {} return {
options: [
{
name: '技术路线表',
},
{
name: '架构遵从表',
},
{
name: '功能清单',
},
{
name: '数据实体清单',
},
{
name: '集成系统清单',
},
],
}
}, },
components: {}, components: {},
computed: { computed: {
...@@ -61,4 +89,14 @@ export default { ...@@ -61,4 +89,14 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import '@/styles/elementui.scss'; @import '@/styles/elementui.scss';
.prjName {
font-weight: bold;
text-align: left;
font-size: 20px;
margin-bottom: 20px;
}
.content {
height: 300px;
overflow-y: auto;
}
</style> </style>
...@@ -20,12 +20,19 @@ ...@@ -20,12 +20,19 @@
v-loading="leftLoading" v-loading="leftLoading"
element-loading-text="加载中" element-loading-text="加载中"
> >
<img <!-- <img
v-for="(item, idx) in leftBaseOptions" v-for="(item, idx) in leftBaseOptions"
:key="idx" :key="idx"
:src="item" :src="item"
alt="" alt=""
/> /> -->
<div class="office w-100 h-100">
<vab-only-office
id="office-preview"
:documentServerUrl="documentServerUrl"
:config="config"
/>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -60,6 +67,8 @@ ...@@ -60,6 +67,8 @@
<script> <script>
import OnlineReviewLeft from '@/views/conceptualViewOrg/OnlineReviewLeft' import OnlineReviewLeft from '@/views/conceptualViewOrg/OnlineReviewLeft'
import { getReviewNorm, editConceptualViewOrg, exportRiskReport } from '@/api' import { getReviewNorm, editConceptualViewOrg, exportRiskReport } from '@/api'
import { documentServerUrl, documentServerUrl2 } from '@/config'
import { EADC_SHARED_ABILITY } from '@/config/micromodule'
export default { export default {
name: 'OnlineReview', name: 'OnlineReview',
components: { components: {
...@@ -73,6 +82,46 @@ export default { ...@@ -73,6 +82,46 @@ export default {
leftBaseOptions: [], leftBaseOptions: [],
rightBaseOptions: [], rightBaseOptions: [],
onlineReviewState: 1, onlineReviewState: 1,
documentServerUrl: documentServerUrl2,
config: {
document: {
fileType: 'docx',
// 给服务端用的唯一id,同一个id就会获取服务器缓存里的文件(有这个key,就会先根据它去缓存里找),这项如果最开始只是先试用,可以先给个空字符串
key: '',
// 文件名
title: '概要设计说明书.docx',
//相关权限
// permissions: {
// copy: true, //定义内容是否可以复制到剪贴板。如果该参数设置为false,则只能在当前文档编辑器中粘贴内容。默认值为true。
// download: true, //定义文档是可以下载还是只能在线查看或编辑。如果下载权限设置为“假”的下载为...菜单选项将是缺席的文件菜单。默认值为true。
// edit: true, //定义文档是可以编辑还是只能查看。如果编辑权限设置为“true”,则文件菜单将包含编辑文档菜单选项;请注意,如果编辑权限设置为“false”,文档将在查看器中打开,即使模式参数设置为edit,您也无法将其切换到编辑器。默认值为true。
// print: true, //定义是否可以打印文档。如果打印权限设置为“false”的打印菜单选项将是缺席的文件菜单。默认值为true
// },
// 所要渲染的文件的绝对路径,这个参数很重要,它传的不是文件的本地地址,而是需要把文件传到项目所依赖的服务器,然后拿到文件在服务器的url地址(这个一般情况需要后端支持)才可以用,这个参数决定了能不能实例化出来onlyoffice对象
url: `${documentServerUrl}${EADC_SHARED_ABILITY}/downloadFile/302`,
},
documentType: 'word',
height: '100%',
width: '100%',
editorConfig: {
//语言:zh-CN简体中文/en英文
lang: 'zh-CN',
//阅读状态 view/edit
mode: 'edit',
customization: {
//是否显示插件
plugins: false,
forcesave: true,
autosave: false,
},
user: {
// 当前正在view/edit此文档的用户信息
name: '管理员',
},
// 指定文档存储服务器的绝对路径
callbackUrl: `${documentServerUrl}${EADC_SHARED_ABILITY}/callback?fileId=302`,
},
},
} }
}, },
created() { created() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!