Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
liangzhen
/
framework-tools-web
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 650a6373
authored
Mar 22, 2024
by
史敦盼
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
1 parent
cb9f6fb2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
806 additions
and
531 deletions
src/api/index.js
src/api/interface.js
src/components/TableConfig.vue
src/utils/dictionary.js
src/views/Main/menu.js
src/views/conceptualBaseManagement/index.vue
src/views/conceptualRelated/index.vue
src/views/conceptualReview/Examine.vue
src/views/conceptualReview/index.vue
src/views/conceptualViewOrg/OnlineReview.vue
src/views/reviewSituation/details.vue
src/views/reviewSituation/index.vue
src/views/reviewSituation/tab1.vue
src/views/reviewSituation/tab2.vue
src/views/reviewSituation/tab3.vue
src/views/reviewSituation/tab4.vue
src/views/reviewSituation/tab5.vue
src/api/index.js
View file @
650a637
...
...
@@ -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
)
...
...
src/api/interface.js
View file @
650a637
...
...
@@ -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/'
src/components/TableConfig.vue
View file @
650a637
...
...
@@ -4,7 +4,7 @@
* @Autor: pan
* @Date: 2024-03-11 14:53:40
* @LastEditors: pan
* @LastEditTime: 2024-03-2
0 15:09:49
* @LastEditTime: 2024-03-2
2 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'
]
},
/**
...
...
src/utils/dictionary.js
View file @
650a637
...
...
@@ -73,3 +73,8 @@ export const sendStateOptions = [
{
label
:
'未发送'
,
value
:
2
},
{
label
:
'发送失败'
,
value
:
3
},
]
export
const
completionStatus
=
[
{
label
:
'未完成'
,
value
:
0
},
{
label
:
'已完成'
,
value
:
1
},
]
src/views/Main/menu.js
View file @
650a637
...
...
@@ -69,7 +69,7 @@ export const menuOptions = [
children
:
[
{
name
:
'架构资产管理'
,
path
:
''
,
path
:
'
/main/busiAssetslist
'
,
},
{
name
:
'架构视图管理'
,
...
...
src/views/conceptualBaseManagement/index.vue
View file @
650a637
<!--
* @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>
...
...
src/views/conceptualRelated/index.vue
View file @
650a637
<!--
* @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
{
query
ConceptualReview
}
from
'@/api/interface'
import
{
query
QyNeedReviewCount
,
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
:
query
ConceptualReview
,
url
:
query
QyNeedReviewCount
,
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
:
'
o
rgName'
},
{
label
:
'概设需求数(个)'
,
prop
:
'
orgName1
'
},
{
label
:
'概设材料通过数(个)'
,
prop
:
'
orgName2
'
},
{
label
:
'概设通过比(%)'
,
prop
:
'orgName3
'
},
{
label
:
'单位名称'
,
prop
:
'
manageO
rgName'
},
{
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
()
},
},
...
...
src/views/conceptualReview/Examine.vue
View file @
650a637
<!--
* @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=
"
lef
tLoading"
v-loading=
"
righ
tLoading"
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
}
`
,
)
}
})
},
...
...
src/views/conceptualReview/index.vue
View file @
650a637
...
...
@@ -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
:
{
...
...
src/views/conceptualViewOrg/OnlineReview.vue
View file @
650a637
...
...
@@ -69,7 +69,7 @@ export default {
return
{
resultContent
:
''
,
row
:
{},
leftLoading
:
tru
e
,
leftLoading
:
fals
e
,
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
)
}
})
},
...
...
src/views/reviewSituation/details.vue
View file @
650a637
<
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
>
src/views/reviewSituation/index.vue
View file @
650a637
This diff is collapsed.
Click to expand it.
src/views/reviewSituation/tab1.vue
View file @
650a637
<
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
:
{},
}
},
moun
ted
()
{
crea
ted
()
{
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
>
src/views/reviewSituation/tab2.vue
View file @
650a637
<
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
>
src/views/reviewSituation/tab3.vue
View file @
650a637
<
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
:
{},
}
},
moun
ted
()
{
crea
ted
()
{
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
>
src/views/reviewSituation/tab4.vue
View file @
650a637
<
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
:
{},
}
},
moun
ted
()
{
crea
ted
()
{
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
>
src/views/reviewSituation/tab5.vue
View file @
650a637
<
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
:
{},
}
},
moun
ted
()
{
crea
ted
()
{
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
>
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment