Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
9
912project
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
CRS
912project
Commits
670859b6
提交
670859b6
authored
4月 15, 2020
作者:
thy
浏览文件
操作
浏览文件
下载
差异文件
0415其他显示
上级
29851433
2f2f7c56
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
455 行增加
和
759 行删除
+455
-759
evaluationReport.vue
src/components/evaluationReport/evaluationReport.vue
+7
-12
otherPdf.vue
src/components/otherPdf/otherPdf.vue
+445
-744
reportAssess.vue
src/components/reportAssess/reportAssess.vue
+1
-1
server.js
src/services/server.js
+2
-2
没有找到文件。
src/components/evaluationReport/evaluationReport.vue
浏览文件 @
670859b6
...
@@ -86,12 +86,11 @@ export default {
...
@@ -86,12 +86,11 @@ export default {
},
},
methods
:
{
methods
:
{
add
(){
add
(){
console
.
log
(
this
.
$store
.
state
.
userData
.
userName
)
this
.
$router
.
push
({
this
.
$router
.
push
({
name
:
'assessmentReport'
,
name
:
'assessmentReport'
,
query
:
{
query
:
{
username
:
this
.
$store
.
state
.
u
serData
.
userName
,
username
:
this
.
$store
.
getters
.
getU
serData
.
userName
,
authority
:
this
.
$store
.
state
.
u
serData
.
type
,
authority
:
this
.
$store
.
getters
.
getU
serData
.
type
,
id
:
null
,
id
:
null
,
}
}
});
});
...
@@ -107,13 +106,10 @@ export default {
...
@@ -107,13 +106,10 @@ export default {
},
},
// 初始请求
// 初始请求
init
()
{
init
()
{
let
username
=
''
if
(
this
.
$store
.
state
.
userData
.
userName
!==
'admin'
){
username
=
this
.
$store
.
state
.
userData
.
userName
}
let
val
=
{
let
val
=
{
'username'
:
username
,
searchMap
:
{
'projectName'
:
this
.
searchVal
,
'username'
:
this
.
$store
.
getters
.
getUserData
.
userName
}
}
}
this
.
$server
.
getEvaluationList
(
this
.
currentPage
,
this
.
pagesize
,
val
).
then
(
res
=>
{
this
.
$server
.
getEvaluationList
(
this
.
currentPage
,
this
.
pagesize
,
val
).
then
(
res
=>
{
console
.
log
(
res
.
data
)
console
.
log
(
res
.
data
)
...
@@ -144,11 +140,10 @@ export default {
...
@@ -144,11 +140,10 @@ export default {
// 评估
// 评估
evaluation
(
row
)
{
evaluation
(
row
)
{
console
.
log
(
row
)
console
.
log
(
row
)
console
.
log
(
this
.
$store
.
state
.
userData
)
this
.
$router
.
push
({
name
:
'assessmentReport'
,
query
:
{
this
.
$router
.
push
({
name
:
'assessmentReport'
,
query
:
{
username
:
row
.
username
,
username
:
row
.
username
,
id
:
row
.
id
,
id
:
row
.
id
,
authority
:
this
.
$store
.
state
.
u
serData
.
type
authority
:
this
.
$store
.
getters
.
getU
serData
.
type
}})
}})
// // return
// // return
// let Logistics= this.$router.resolve({
// let Logistics= this.$router.resolve({
...
@@ -178,7 +173,7 @@ export default {
...
@@ -178,7 +173,7 @@ export default {
this
.
$router
.
push
({
name
:
'reportAssess'
,
query
:
{
this
.
$router
.
push
({
name
:
'reportAssess'
,
query
:
{
username
:
row
.
username
,
username
:
row
.
username
,
id
:
row
.
id
,
id
:
row
.
id
,
authority
:
this
.
$store
.
state
.
u
serData
.
type
,
authority
:
this
.
$store
.
getters
.
getU
serData
.
type
,
}})
}})
},
},
// 删除
// 删除
...
...
src/components/otherPdf/otherPdf.vue
浏览文件 @
670859b6
...
@@ -2,333 +2,335 @@
...
@@ -2,333 +2,335 @@
<div
class=
"otherPdf"
>
<div
class=
"otherPdf"
>
<span
class=
"toPdf"
@
click=
"getPdf('pdfDom')"
>
下载pdf
</span>
<span
class=
"toPdf"
@
click=
"getPdf('pdfDom')"
>
下载pdf
</span>
<div
id=
"pdfDom"
>
<div
id=
"pdfDom"
>
<div
class=
"page"
>
<div
class=
"page
Other
"
>
<p
class=
"title"
>
{{
title
}}
</p>
<p
class=
"title"
>
{{
title
}}
</p>
<p
class=
"title"
>
{{
systemName
}}
</p>
<p
class=
"title"
>
{{
systemName
}}
</p>
<p
class=
"title"
>
{{
reportName
}}
</p>
<p
class=
"title"
>
{{
reportName
}}
</p>
<div>
<div>
<table
border=
"1"
cellspacing=
"0"
style=
"width: 100%"
>
<table
border=
"1"
cellspacing=
"0"
style=
"width: 100%"
>
<tr>
<td
style=
"width: 12px; text-align: center;padding: 0;"
>
序号
</td>
<td
style=
"width: 80px; text-align: center;padding: 0;"
>
概要信息
</td>
<td
colspan=
"2"
style=
"width: 100px; text-align: center;padding: 0;"
>
填写内容
</td>
</tr>
<tr
v-for=
"(item,index) of tableTitle"
>
<td
style=
"text-align: center;padding: 0;"
>
{{
index
+
1
}}
</td>
<td
style=
"text-align: center;padding: 0;"
>
{{
item
.
name
}}
</td>
<td
colspan=
"2"
style=
"text-align: center;padding: 0;"
>
{{
item
.
val
}}
</td>
</tr>
<tr
v-for=
"item of tableContent"
>
<tr
v-for=
"item of tableContent"
>
<td
style=
"width: 152px;
"
>
{{
item
.
name
}}
</td>
<td
colspan=
"2
"
>
{{
item
.
name
}}
</td>
<td
style=
"width: 221px;
"
>
{{
item
.
val
}}
</td>
<td
colspan=
"2
"
>
{{
item
.
val
}}
</td>
</tr>
</tr>
</table>
</table>
</div>
</div>
</div>
</div>
<div
class=
"page"
>
<div
class=
"content"
>
<p
class=
"list"
>
目录
</p>
<div
class=
"page"
>
<div
class=
"listConent"
>
<p
class=
"title"
>
{{
title
}}
</p>
<div
class=
"listContent"
style=
"margin: 0"
v-for=
"(item,index) of listContent"
>
<p
class=
"title"
>
{{
systemName
}}
</p>
<div
v-if=
"index
<
3
"
>
<p
class=
"title"
>
{{
reportName
}}
</p>
<p>
<div>
<span>
{{
item
.
name
}}
</span>
<table
border=
"1"
cellspacing=
"0"
style=
"width: 100%"
>
<span
class=
"listPage"
>
{{
item
.
val
}}
</span>
<tr
v-for=
"item of tableContent"
>
</p>
<td
style=
"width: 152px;"
>
{{
item
.
name
}}
</td>
<div
class=
"listContent"
v-for=
"arr of item.child1"
style=
"margin-left: 20px;"
>
<td
style=
"width: 221px;"
>
{{
item
.
val
}}
</td>
<p>
</tr>
<span>
{{
arr
.
name
}}
</span>
</table>
<span
class=
"listPage"
>
{{
arr
.
val
}}
</span>
</p>
<div
class=
"listContent"
v-for=
"acc of arr.child2"
style=
"margin-left: 30px;"
>
<p>
<span>
{{
acc
.
name
}}
</span>
<span
class=
"listPage"
>
{{
acc
.
val
}}
</span>
</p>
</div>
</div>
</div>
</div>
</div>
<div
class=
"listContent"
style=
"margin: 0"
v-for=
"(item,index) of listContent"
>
</div>
<div
v-if=
"index ===3"
>
<div
class=
"page"
>
<p
>
<p
class=
"list"
>
目录
</p>
<span>
{{
item
.
name
}}
</span>
<div
class=
"listContent"
>
<span
class=
"listPage"
>
{{
item
.
val
}}
</span>
<p
class=
"child"
>
目录....................................................I
</p>
</p>
<p
class=
"child"
>
1. 评估报告声明.........................................3
</p>
<div
class=
"listContent"
v-for=
"(arr,index2) of item.child1"
style=
"margin-left: 20px;"
>
<p
class=
"child"
>
1.1. 报告组成........................................3
</p>
<div
v-if=
"index2
<
2
"
>
<p
class=
"child"
>
1.2. 报告作用........................................4
</p>
<p>
<p
class=
"child"
>
1.3. 其他注意事项....................................4
</p>
<span>
{{
arr
.
name
}}
</span>
<p
class=
"child"
>
2. 评估标准和方法.......................................6
</p>
<span
class=
"listPage"
>
{{
arr
.
val
}}
</span>
<p
class=
"child"
>
2.1. 参照标准........................................6
</p>
</p>
<p
class=
"child"
>
2.1.1. “912工程”相关政策法规....................6
</p>
<div
class=
"listContent"
v-for=
"acc of arr.child2"
style=
"margin-left: 30px;"
>
<p
class=
"child"
>
2.1.2. “912工程”相关国家标准与规范..............6
</p>
<p>
<p
class=
"child"
>
2.1.3. “L77软件工程”国家分类标准................6
</p>
<span>
{{
acc
.
name
}}
</span>
<p
class=
"child"
>
2.1.4. 其他编制依据...............................6
</p>
<span
class=
"listPage"
>
{{
acc
.
val
}}
</span>
<p
class=
"child"
>
2.2. 评估流程与方法.................................11
</p>
</p>
<p
class=
"child"
>
2.2.1. 基本评估流程...............................11
</p>
</div>
<p
class=
"child"
>
2.2.2. 结合国家标准L77类目下的度量说明............12
</p>
</div>
<p
class=
"child"
>
2.2.3. 递归的精度与误差说明.......................17
</p>
</div>
<p
class=
"child"
>
3. 原应用系统评估......................................19
</p>
</div>
<p
class=
"child"
>
3.1. 原应用系统概要.................................19
</p>
<p
class=
"child"
>
3.1.1. 基本信息...................................19
</p>
<p
class=
"child"
>
3.1.2. 原系统代码规模.............................
{{
pageList
[
0
]
}}
</p>
<p
class=
"child"
>
3.2. 关键技术依赖...................................
{{
pageList
[
0
]
}}
</p>
<p
class=
"child"
>
3.2.1. 可优化的项.................................
{{
pageList
[
1
]
}}
</p>
<p
class=
"child"
>
3.2.2. 必须替换的项...............................
{{
pageList
[
2
]
}}
</p>
<p
class=
"child"
>
3.2.3. 需要验证修改的项...........................
{{
pageList
[
3
]
}}
</p>
</div>
</div>
<p
class=
"pageIndex"
>
1
</p>
</div>
</div>
<div
class=
"page"
>
</div>
<div
class=
"listContent"
>
<div
class=
"page"
>
<p
class=
"child"
>
3.3. 难度系数和综合系数修正.........................
{{
pageList
[
4
]
}}
</p>
<div
class=
"listContent"
>
<p
class=
"child"
>
3.4. 人工月估算.....................................
{{
pageList
[
4
]
}}
</p>
<div
class=
"listContent"
style=
"margin: 0"
v-for=
"(item,index) of listContent"
>
<p
class=
"child"
>
3.5. 额外申请.......................................
{{
pageList
[
4
]
}}
</p>
<div
v-if=
"index === 3"
>
<p
class=
"child"
>
3.6. 预算建议.......................................
{{
pageList
[
5
]
}}
</p>
<div
class=
"listContent"
v-for=
"(arr,index2) of item.child1"
style=
"margin-left: 20px;"
>
<p
class=
"child"
>
4. 评估建议............................................
{{
pageList
[
6
]
}}
</p>
<div
v-if=
"index2 > 1"
>
<p
class=
"child"
>
4.1. 适配/改造路线选择..............................
{{
pageList
[
6
]
}}
</p>
<p>
<p
class=
"child"
>
4.2. 关键工作与方法.................................
{{
pageList
[
6
]
}}
</p>
<span>
{{
arr
.
name
}}
</span>
<p
class=
"child"
>
4.2.1. 开发框架解决方法...........................
{{
pageList
[
6
]
}}
</p>
<span
class=
"listPage"
>
{{
arr
.
val
}}
</span>
<p
class=
"child"
>
4.2.2. 浏览器的适配兼容性改造解决方法.............
{{
pageList
[
7
]
}}
</p>
</p>
<p
class=
"child"
>
4.2.3. 浏览器功能组件的替换和适配解决方法.........
{{
pageList
[
7
]
}}
</p>
<div
class=
"listContent"
v-for=
"acc of arr.child2"
style=
"margin-left: 30px;"
>
<p
class=
"child"
>
4.2.4. B/S结构下的重构............................
{{
pageList
[
8
]
}}
</p>
<p>
<p
class=
"child"
>
4.2.5. C/S结构下的重构............................
{{
pageList
[
8
]
}}
</p>
<span>
{{
acc
.
name
}}
</span>
<p
class=
"child"
>
4.2.6. 部署和迁移策略.............................
{{
pageList
[
8
]
}}
</p>
<span
class=
"listPage"
>
{{
acc
.
val
}}
</span>
<p
class=
"child"
>
5. 附件...............................................
{{
pageList
[
11
]
}}
</p>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"listContent"
style=
"margin: 0"
v-for=
"(item,index) of listContent"
>
<p
class=
"pageIndex"
>
2
</p>
<div
v-if=
"index > 3"
>
</div>
<p>
<div
class=
"page"
>
<span>
{{
item
.
name
}}
</span>
<p
class=
"title1"
>
1.
评估报告声明
</p>
<span
class=
"listPage"
>
{{
item
.
val
}}
</span>
<p
class=
"title2"
>
1.1.
报告组成
</p>
</p>
<p
class=
"contentList"
v-for=
"item of reportComposition"
>
{{
item
}}
</p>
<div
class=
"listContent"
v-for=
"arr of item.child1"
style=
"margin-left: 20px;"
>
<p
class=
"pageIndex"
>
3
</p>
<p>
</div>
<span>
{{
arr
.
name
}}
</span>
<div
class=
"page"
>
<span
class=
"listPage"
>
{{
arr
.
val
}}
</span>
<p
class=
"title2"
>
1.2.
报告作用
</p>
</p>
<p
class=
"contentList"
v-for=
"item of reportingRole"
>
{{
item
}}
</p>
<div
class=
"listContent"
v-for=
"acc of arr.child2"
style=
"margin-left: 30px;"
>
<p
class=
"title2"
>
1.3.
其他注意事项
</p>
<p>
<p
class=
"contentList"
v-for=
"item of reportOther"
>
{{
item
}}
</p>
<span>
{{
acc
.
name
}}
</span>
<p
class=
"pageIndex"
>
4
</p>
<span
class=
"listPage"
>
{{
acc
.
val
}}
</span>
</div>
</p>
<div
class=
"page"
>
</div>
<p
class=
"contentList"
v-for=
"item of reportOther2"
>
{{
item
}}
</p>
</div>
<p
class=
"pageIndex"
>
5
</p>
</div>
<div
class=
"page"
>
<p
class=
"title1"
>
2.
评估标准和方法
</p>
<p
class=
"title2"
>
2.1.
参照标准
</p>
<p
class=
"title3"
>
2.1.1.
“912工程”相关政策法规
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px; text-indent:0em;"
v-for=
"item of regulations"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
6
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of regulations"
>
{{
item
}}
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of supplement"
>
{{
item
}}
</p>
<p
class=
"title3"
>
2.1.2.
“912工程”相关国家标准与规范
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of nationalNorms"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
7
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of nationalNorms2"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
8
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of nationalNorms3"
>
{{
item
}}
</p>
<p
class=
"title3"
>
2.1.3.
“L77软件工程”国家分类标准
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of classificationCriteria"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
9
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of classificationCriteria2"
>
{{
item
}}
</p>
<p
class=
"title3"
>
2.1.4.
其他编制依据
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of otherEstablishments"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
10
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of otherEstablishments2"
>
{{
item
}}
</p>
<p
class=
"title2"
>
2.2.
评估流程与方法
</p>
<p
class=
"title3"
>
2.2.1.
基本评估流程
</p>
<p>
<img
src=
"./img/1.png"
style=
"width: 100%"
>
</p>
<p
class=
"contentList"
v-for=
"item of evaluationProcess"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
11
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of evaluationProcess2"
>
{{
item
}}
</p>
<p
class=
"title3"
>
2.2.2.
结合国家标准L77类目下的度量说明
</p>
<p
class=
"contentList"
v-for=
"item of metricDescription"
>
{{
item
}}
</p>
<p
class=
"title4"
>
2.2.2.1.
规模测算
</p>
<p
class=
"contentList"
v-for=
"item of scaleConversion"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
12
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
>
笼统的算法如下式计算:
</p>
<p
class=
"contentList"
style=
"text-align:center;"
>
S = US*CF
</p>
<p
class=
"contentList"
v-for=
"item of scaleConversion2"
>
{{
item
}}
</p>
<p
class=
"title4"
>
2.2.2.2.
工作量测算
</p>
<p
class=
"contentList"
>
根据GB/T 36964-2018的流程,规模测算完成的结果,将指导和约束工作量测算和成本测算。
</p>
<p>
<img
src=
"./img/2.png"
style=
"width: 100%"
>
</p>
<p
class=
"contentList"
>
工作量测算在自动化评估中采用GB/T36964-2018的方程法、类比法、类推法3种方法。包含对未知技术依赖的不确定工作量和测试
</p>
<p
class=
"pageIndex"
>
13
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
修改的不可预见工作量。
</p>
<p
class=
"contentList"
v-for=
"item of workloadCalculation"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
14
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of workloadCalculation2"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
15
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of workloadCalculation3"
>
{{
item
}}
</p>
<p
class=
"title4"
>
2.2.2.3.
人工月单价测算
</p>
<p
class=
"contentList"
v-for=
"item of unitPriceCalculation"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
16
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
1.5万元/人工月,允许委托单位输入时补充额外金额申请。
</p>
<p
class=
"title3"
>
2.2.3.
递归的精度与误差说明
</p>
<p
class=
"contentList"
v-for=
"item of recursivePrecision"
>
{{
item
}}
</p>
<p
class=
"title4"
>
2.2.3.1.
整体类比法
</p>
<p
class=
"contentList"
v-for=
"item of overallAnalogy"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
17
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
码或文件。功能非相关的和功能不启用的部分,交由委托单位现场确认。确认后删除或保留。如发现完整性严重缺失,委托单位重新提交。
</p>
<p
class=
"contentList"
>
而后二次导入,进行自动化评估。该方法将最大程度筛查和杜绝各种原因造成的调研数据错误、代码文件无关参杂的情况。也是确保评估误差可控的前提。
</p>
<p
class=
"title4"
>
2.2.3.1.
开发时间固定百分比法
</p>
<p
class=
"contentList"
v-for=
"item of fixedDevelopment"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
18
</p>
</div>
<!-- 3-->
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
推算的预算建议,将作为宁波市安可办的审核依据和预算约束。
</p>
<p
class=
"title1"
>
3.
原应用系统评估
</p>
<p
class=
"title2"
>
3.1.
原应用系统概要
</p>
<p
class=
"title3"
>
3.1.1.
基本信息
</p>
<p
class=
"pageIndex"
>
19
</p>
</div>
<div
v-for=
"(item,itemIndex) of messageList"
>
<div
class=
"pageOther"
v-for=
"(arr,index) of item.val"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
v-if=
"index ===0"
>
{{
item
.
name
}}
:
</p>
<div>
<table
border=
"1"
cellspacing=
"0"
style=
"margin-top: 10px;width: 100%;"
>
<tr
v-for=
"acc of arr"
>
<td
style=
"width: 10%"
>
{{
acc
.
index
}}
</td>
<td>
{{
acc
.
name
}}
</td>
<td
style=
"width: 150px;"
>
{{
acc
.
value
}}
</td>
</tr>
</table>
</div>
</div>
<p
class=
"pageIndex"
v-for=
"item of messagePage"
>
<span
v-if=
"item.itemIndex === itemIndex && item.arrIndex === index"
>
{{
19
+
item
.
page
}}
</span>
</p>
</div>
</div>
</div>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<p
class=
"title3"
>
3.1.2.
原系统代码规模
</p>
<p
class=
"title1"
>
1.
评估报告声明
</p>
<p
class=
"title2"
>
1.1.
报告组成
</p>
<p
class=
"contentList"
v-for=
"item of reportComposition"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"title2"
>
1.2.
报告作用
</p>
<p
class=
"contentList"
v-for=
"item of reportingRole"
>
{{
item
}}
</p>
<p
class=
"title2"
>
1.3.
其他注意事项
</p>
<p
class=
"contentList"
v-for=
"item of reportOther"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of reportOther2"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"title1"
>
2.
评估标准和方法
</p>
<p
class=
"title2"
>
2.1.
参照标准
</p>
<p
class=
"title3"
>
2.1.1.
“912工程”相关政策法规
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px; text-indent:0em;"
v-for=
"item of regulations"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of regulations"
>
{{
item
}}
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;color: red"
v-for=
"item of supplement"
>
{{
item
}}
这里输入宁波文件
</p>
<p
class=
"title3"
>
2.1.2.
“912工程”相关国家标准与规范
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of nationalNorms"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of nationalNorms2"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of nationalNorms3"
>
{{
item
}}
</p>
<p
class=
"title3"
>
2.1.3.
“L77软件工程”国家分类标准
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of classificationCriteria"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of classificationCriteria2"
>
{{
item
}}
</p>
<p
class=
"title3"
>
2.1.4.
其他编制依据
</p>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of otherEstablishments"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"letter-spacing:1px;text-indent:0em;"
v-for=
"item of otherEstablishments2"
>
{{
item
}}
</p>
<p
class=
"title2"
>
2.2.
评估流程与方法
</p>
<p
class=
"title3"
>
2.2.1.
基本评估流程
</p>
<p>
<img
src=
"./img/1.png"
style=
"width: 100%"
>
</p>
<p
class=
"contentList"
v-for=
"item of evaluationProcess"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of evaluationProcess2"
>
{{
item
}}
</p>
<p
class=
"title3"
>
2.2.2.
结合国家标准L77类目下的度量说明
</p>
<p
class=
"contentList"
v-for=
"item of metricDescription"
>
{{
item
}}
</p>
<p
class=
"title4"
>
2.2.2.1.
规模测算
</p>
<p
class=
"contentList"
v-for=
"item of scaleConversion"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
>
笼统的算法如下式计算:
</p>
<p
class=
"contentList"
style=
"text-align:center;"
>
S = US*CF
</p>
<p
class=
"contentList"
v-for=
"item of scaleConversion2"
>
{{
item
}}
</p>
<p
class=
"title4"
>
2.2.2.2.
工作量测算
</p>
<p
class=
"contentList"
>
根据GB/T 36964-2018的流程,规模测算完成的结果,将指导和约束工作量测算和成本测算。
</p>
<p>
<img
src=
"./img/2.png"
style=
"width: 100%"
>
</p>
<p
class=
"contentList"
>
工作量测算在自动化评估中采用GB/T36964-2018的方程法、类比法、类推法3种方法。包含对未知技术依赖的不确定工作量和测试
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
修改的不可预见工作量。
</p>
<p
class=
"contentList"
v-for=
"item of workloadCalculation"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of workloadCalculation2"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of workloadCalculation3"
>
{{
item
}}
</p>
<p
class=
"title4"
>
2.2.2.3.
人工月单价测算
</p>
<p
class=
"contentList"
v-for=
"item of unitPriceCalculation"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
1.5万元/人工月,允许委托单位输入时补充额外金额申请。
</p>
<p
class=
"title3"
>
2.2.3.
递归的精度与误差说明
</p>
<p
class=
"contentList"
v-for=
"item of recursivePrecision"
>
{{
item
}}
</p>
<p
class=
"title4"
>
2.2.3.1.
整体类比法
</p>
<p
class=
"contentList"
v-for=
"item of overallAnalogy"
>
{{
item
}}
</p>
</div>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
码或文件。功能非相关的和功能不启用的部分,交由委托单位现场确认。确认后删除或保留。如发现完整性严重缺失,委托单位重新提交。
</p>
<p
class=
"contentList"
>
而后二次导入,进行自动化评估。该方法将最大程度筛查和杜绝各种原因造成的调研数据错误、代码文件无关参杂的情况。也是确保评估误差可控的前提。
</p>
<p
class=
"title4"
>
2.2.3.1.
开发时间固定百分比法
</p>
<p
class=
"contentList"
v-for=
"item of fixedDevelopment"
>
{{
item
}}
</p>
</div>
<!-- 3-->
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
推算的预算建议,将作为宁波市安可办的审核依据和预算约束。
</p>
<p
class=
"title1"
>
3.
原应用系统评估
</p>
<p
class=
"title2"
>
3.1.
原应用系统概要
</p>
<p
class=
"title3"
>
3.1.1.
基本信息
</p>
</div>
<div
v-for=
"(item,itemIndex) of messageList"
>
<div
class=
"page"
v-for=
"(arr,index) of item.val"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
v-if=
"index ===0"
>
{{
item
.
name
}}
:
</p>
<div>
<div>
<table
border=
"1"
cellspacing=
"0"
style=
"margin-top: 10px;width: 100%;"
>
<table
border=
"1"
cellspacing=
"0"
style=
"margin: 0px;width: 100%;"
>
<tr
v-for=
"acc of arr"
>
<tr>
<td
style=
"width: 10%"
>
{{
acc
.
index
}}
</td>
<td></td>
<td>
{{
acc
.
name
}}
</td>
<td>
数量
</td>
<td>
{{
acc
.
value
}}
</td>
<td>
备注
</td>
</tr>
<tr>
<td>
代码
</td>
<td>
{{
sysScale
.
codeNum
}}
</td>
<td></td>
</tr>
<tr>
<td>
文件
</td>
<td>
{{
sysScale
.
fileNum
}}
</td>
<td></td>
</tr>
<tr>
<td>
模块
</td>
<td>
{{
sysScale
.
modelNum
}}
</td>
<td></td>
</tr>
</tr>
</table>
</table>
</div>
</div>
<p
class=
"
pageIndex"
v-for=
"item of messagePage"
>
<p
class=
"
title2"
>
3.2.
关键技术依赖
</p
>
<span
v-if=
"item.itemIndex === itemIndex && item.arrIndex === index"
>
{{
19
+
item
.
page
}}
</span
>
<p
class=
"contentList"
>
{{
technologyDependence
}}
</p
>
</p>
<
p
class=
"pageIndex"
>
{{
pageList
[
0
]
}}
<
/p>
</div>
</div>
</div>
<div
v-for=
"(item,itemInd) of optimized"
>
<div
class=
"page"
>
<div
v-for=
"(arr,index) of item.val"
>
<p
class=
"title3"
>
3.1.2.
原系统代码规模
</p>
<div
class=
"pageOther"
v-if=
"arr.length !== 0"
>
<div>
<p
class=
"title3"
v-if=
"itemInd === 0 && index === 0"
>
3.2.1.
可优化的项
</p>
<table
border=
"1"
cellspacing=
"0"
style=
"margin: 0px;width: 100%;"
>
<p
v-if=
"index === 0"
style=
"display: flex;justify-content: space-between"
>
<tr>
<span>
关键技术:
{{
item
.
name
}}
</span>
<td></td>
<span>
替换策略:
<td>
数量
</td>
<td>
备注
</td>
</tr>
<tr>
<td>
代码
</td>
<td>
{{
sysScale
.
codeNum
}}
</td>
<td></td>
</tr>
<tr>
<td>
文件
</td>
<td>
{{
sysScale
.
fileNum
}}
</td>
<td></td>
</tr>
<tr>
<td>
模块
</td>
<td>
{{
sysScale
.
modelNum
}}
</td>
<td></td>
</tr>
</table>
</div>
<p
class=
"title2"
>
3.2.
关键技术依赖
</p>
<p
class=
"contentList"
>
{{
technologyDependence
}}
</p>
</div>
<div
v-for=
"(item,itemInd) of optimized"
>
<div
v-for=
"(arr,index) of item.val"
>
<div
class=
"page"
v-if=
"arr.length !== 0"
>
<p
class=
"title3"
v-if=
"itemInd === 0 && index === 0"
>
3.2.1.
可优化的项
</p>
<p
v-if=
"index === 0"
style=
"display: flex;justify-content: space-between"
>
<span>
关键技术:
{{
item
.
name
}}
</span>
<span>
替换策略:
<span
v-if=
"item.name.match(/.*\((.*)\)/)[1] == '支持'"
>
忽略
</span>
<span
v-if=
"item.name.match(/.*\((.*)\)/)[1] == '支持'"
>
忽略
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '不支持'"
>
重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '不支持'"
>
重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '未知'"
>
修改或重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '未知'"
>
修改或重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '优化'"
>
修改
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '优化'"
>
修改
</span>
<span
v-else
>
-
</span>
<span
v-else
>
-
</span>
</span>
</span>
</p>
</p>
<table
border=
"1"
cellspacing=
"0"
style=
"margin-top: 10px;"
>
<table
border=
"1"
cellspacing=
"0"
style=
"margin-top: 10px;"
>
<tr
v-if=
"index === 0"
>
<tr
v-if=
"index === 0"
>
<td>
关键字
</td>
<td>
关键字
</td>
<td>
所在文件
</td>
<td>
所在文件
</td>
<td>
位置
</td>
<td>
位置
</td>
</tr>
</tr>
<tr
v-for=
"acc of arr"
>
<tr
v-for=
"acc of arr"
>
<td>
{{
acc
.
keyWord
}}
</td>
<td>
{{
acc
.
keyWord
}}
</td>
<td>
{{
acc
.
file
}}
</td>
<td>
{{
acc
.
file
}}
</td>
<td>
{{
acc
.
position
}}
</td>
<td>
{{
acc
.
position
}}
</td>
</tr>
</tr>
</table>
</table>
<p
class=
"pageIndex"
v-for=
"item of optimizedPage"
>
<p
class=
"pageIndex"
v-for=
"item of optimizedPage"
>
<span
v-if=
"item.itemIndex === itemInd && item.arrIndex === index"
>
{{
20
+
item
.
page
+
page1
}}
</span>
<span
v-if=
"item.itemIndex === itemInd && item.arrIndex === index"
>
{{
20
+
item
.
page
+
page1
}}
</span>
</p>
</p>
</div>
</div>
</div>
</div>
</div>
</div
>
<div
class=
"page"
v-if=
"optimized.length === 0"
>
<div
class=
"page"
v-if=
"optimized.length === 0"
>
<p
class=
"title3"
>
3.2.1.
可优化的项
</p
>
<p
class=
"title3"
>
3.2.1.
可优化的项
</p>
<p>
暂无
</p>
<p>
暂无
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
1
]
}}
</p>
</div>
</div>
<div
v-for=
"(item,itemInd) of replaced"
>
<div
v-for=
"(item,itemInd) of replaced"
>
<div
v-for=
"(arr,index) of item.val"
>
<div
v-for=
"(arr,index) of item.val"
>
<div
class=
"page
"
v-if=
"arr.length !== 0"
>
<div
class=
"pageOther
"
v-if=
"arr.length !== 0"
>
<p
class=
"title3"
v-if=
"itemInd === 0 && index === 0"
>
3.2.2.
必须替换的项
</p>
<p
class=
"title3"
v-if=
"itemInd === 0 && index === 0"
>
3.2.2.
必须替换的项
</p>
<p
v-if=
"index === 0"
style=
"display: flex;justify-content: space-between"
>
<p
v-if=
"index === 0"
style=
"display: flex;justify-content: space-between"
>
<span>
关键技术:
{{
item
.
name
}}
</span>
<span>
关键技术:
{{
item
.
name
}}
</span>
<span>
替换策略:
<span>
替换策略:
<span
v-if=
"item.name.match(/.*\((.*)\)/)[1] == '支持'"
>
忽略
</span>
<span
v-if=
"item.name.match(/.*\((.*)\)/)[1] == '支持'"
>
忽略
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '不支持'"
>
重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '不支持'"
>
重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '未知'"
>
修改或重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '未知'"
>
修改或重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '优化'"
>
修改
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '优化'"
>
修改
</span>
<span
v-else
>
-
</span>
<span
v-else
>
-
</span>
</span>
</span>
</p>
</p>
<table
border=
"1"
cellspacing=
"0"
style=
"margin-top: 10px"
>
<table
border=
"1"
cellspacing=
"0"
style=
"margin-top: 10px"
>
<tr
v-if=
"index === 0"
>
<tr
v-if=
"index === 0"
>
<td>
关键字
</td>
<td>
关键字
</td>
<td>
所在文件
</td>
<td>
所在文件
</td>
<td>
位置
</td>
<td>
位置
</td>
</tr>
</tr>
<tr
v-for=
"acc of arr"
>
<tr
v-for=
"acc of arr"
>
<td>
{{
acc
.
keyWord
}}
</td>
<td>
{{
acc
.
keyWord
}}
</td>
<td>
{{
acc
.
file
}}
</td>
<td>
{{
acc
.
file
}}
</td>
<td>
{{
acc
.
position
}}
</td>
<td>
{{
acc
.
position
}}
</td>
</tr>
</tr>
</table>
</table>
<p
class=
"pageIndex"
v-for=
"item of replacedPage"
>
<p
class=
"pageIndex"
v-for=
"item of replacedPage"
>
<span
v-if=
"item.itemIndex === itemInd && item.arrIndex === index && optimized.length !== 0"
>
{{
20
+
item
.
page
+
page1
+
page2
}}
</span>
<span
v-if=
"item.itemIndex === itemInd && item.arrIndex === index && optimized.length !== 0"
>
{{
20
+
item
.
page
+
page1
+
page2
}}
</span>
<span
v-if=
"item.itemIndex === itemInd && item.arrIndex === index && optimized.length === 0"
>
{{
20
+
item
.
page
+
page1
+
1
}}
</span>
<span
v-if=
"item.itemIndex === itemInd && item.arrIndex === index && optimized.length === 0"
>
{{
20
+
item
.
page
+
page1
+
1
}}
</span>
</p>
</p>
</div>
</div>
</div>
</div>
</div>
</div
>
<div
class=
"page"
v-if=
"replaced.length === 0"
>
<div
class=
"page"
v-if=
"replaced.length === 0"
>
<p
class=
"title3"
>
3.2.2.
必须替换的项
</p
>
<p
class=
"title3"
>
3.2.2.
必须替换的项
</p>
<p>
暂无
</p>
<p>
暂无
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
2
]
}}
</p>
</div>
</div>
<div
v-for=
"(item,itemInd) of verification"
>
<div
v-for=
"(item,itemInd) of verification"
>
<div
v-for=
"(arr,index) of item.val"
>
<div
v-for=
"(arr,index) of item.val"
>
<div
class=
"page
"
v-if=
"arr.length !== 0"
>
<div
class=
"pageOther
"
v-if=
"arr.length !== 0"
>
<p
class=
"title3"
v-if=
"itemInd === 0 && index === 0"
>
3.2.3.
需要验证修改的项
</p>
<p
class=
"title3"
v-if=
"itemInd === 0 && index === 0"
>
3.2.3.
需要验证修改的项
</p>
<p
v-if=
"index === 0"
style=
"display: flex;justify-content: space-between"
>
<p
v-if=
"index === 0"
style=
"display: flex;justify-content: space-between"
>
<span>
关键技术:
{{
item
.
name
}}
</span>
<span>
关键技术:
{{
item
.
name
}}
</span>
<span>
替换策略:
<span>
替换策略:
<span
v-if=
"item.name.match(/.*\((.*)\)/)[1] == '支持'"
>
忽略
</span>
<span
v-if=
"item.name.match(/.*\((.*)\)/)[1] == '支持'"
>
忽略
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '不支持'"
>
重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '不支持'"
>
重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '未知'"
>
修改或重新开发
</span>
<span
v-else-if=
"item.name.match(/.*\((.*)\)/)[1] == '未知'"
>
修改或重新开发
</span>
...
@@ -360,6 +362,7 @@
...
@@ -360,6 +362,7 @@
<div
class=
"page"
v-if=
"verification.length === 0"
>
<div
class=
"page"
v-if=
"verification.length === 0"
>
<p
class=
"title3"
>
3.2.3.
需要验证修改的项
</p>
<p
class=
"title3"
>
3.2.3.
需要验证修改的项
</p>
<p>
暂无
</p>
<p>
暂无
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
3
]
}}
</p>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<p
class=
"title2"
>
3.3.
难度系数和综合系数修正
</p>
<p
class=
"title2"
>
3.3.
难度系数和综合系数修正
</p>
...
@@ -434,6 +437,7 @@
...
@@ -434,6 +437,7 @@
</tr>
</tr>
</table>
</table>
</div>
</div>
<p
class=
"pageIndex"
>
{{
pageList
[
4
]
}}
</p>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<p
class=
"title2"
>
3.6.
预算建议
</p>
<p
class=
"title2"
>
3.6.
预算建议
</p>
...
@@ -475,6 +479,7 @@
...
@@ -475,6 +479,7 @@
</tr>
</tr>
</table>
</table>
</div>
</div>
<p
class=
"pageIndex"
>
{{
pageList
[
5
]
}}
</p>
</div>
</div>
<!-- 4-->
<!-- 4-->
<div
class=
"page"
>
<div
class=
"page"
>
...
@@ -485,6 +490,7 @@
...
@@ -485,6 +490,7 @@
<p
class=
"title3"
>
4.2.1.
开发框架解决方法
</p>
<p
class=
"title3"
>
4.2.1.
开发框架解决方法
</p>
<p
class=
"contentList"
>
J2EE和类似跨平台的开发框架,可通过适配和代码改造,完全移植到国产化环境下。
</p>
<p
class=
"contentList"
>
J2EE和类似跨平台的开发框架,可通过适配和代码改造,完全移植到国产化环境下。
</p>
<p
class=
"contentList"
>
基于.NET体系下使用VB、Delphi、VC、C++、C#等语言,完全依
</p>
<p
class=
"contentList"
>
基于.NET体系下使用VB、Delphi、VC、C++、C#等语言,完全依
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
6
]
}}
</p>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
赖Window组件和库的应用系统,需要换框架重构。
</p>
<p
class=
"contentList"
style=
"text-indent:0em;"
>
赖Window组件和库的应用系统,需要换框架重构。
</p>
...
@@ -492,6 +498,7 @@
...
@@ -492,6 +498,7 @@
<p
class=
"contentList"
v-for=
"item of adaptationCompatible"
>
{{
item
}}
</p>
<p
class=
"contentList"
v-for=
"item of adaptationCompatible"
>
{{
item
}}
</p>
<p
class=
"title3"
>
4.2.3.
浏览器功能组件的替换和适配解决方法
</p>
<p
class=
"title3"
>
4.2.3.
浏览器功能组件的替换和适配解决方法
</p>
<p
class=
"contentList"
v-for=
"item of replacementAndAdaptation"
>
{{
item
}}
</p>
<p
class=
"contentList"
v-for=
"item of replacementAndAdaptation"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
7
]
}}
</p>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<p
class=
"title3"
>
4.2.4.
B/S结构下的重构
</p>
<p
class=
"title3"
>
4.2.4.
B/S结构下的重构
</p>
...
@@ -501,6 +508,7 @@
...
@@ -501,6 +508,7 @@
<p
class=
"contentList"
>
如改造后允许以B/S结构部署,则改造工作量和不可预见问题将大为减少。
</p>
<p
class=
"contentList"
>
如改造后允许以B/S结构部署,则改造工作量和不可预见问题将大为减少。
</p>
<p
class=
"title3"
>
4.2.6.
部署和迁移策略
</p>
<p
class=
"title3"
>
4.2.6.
部署和迁移策略
</p>
<p
class=
"contentList"
v-for=
"item of deploymentAndMigration"
>
{{
item
}}
</p>
<p
class=
"contentList"
v-for=
"item of deploymentAndMigration"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
8
]
}}
</p>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of deploymentAndMigration2"
style=
"text-indent:0em;"
>
{{
item
}}
</p>
<p
class=
"contentList"
v-for=
"item of deploymentAndMigration2"
style=
"text-indent:0em;"
>
{{
item
}}
</p>
...
@@ -508,18 +516,22 @@
...
@@ -508,18 +516,22 @@
<img
src=
"./img/3.png"
style=
"width: 50%"
>
<img
src=
"./img/3.png"
style=
"width: 50%"
>
</p>
</p>
<p
class=
"contentList"
v-for=
"item of deploymentAndMigration3"
>
{{
item
}}
</p>
<p
class=
"contentList"
v-for=
"item of deploymentAndMigration3"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
9
]
}}
</p>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<p
class=
"contentList"
v-for=
"item of deploymentAndMigration4"
style=
"text-indent:0em;"
>
{{
item
}}
</p>
<p
class=
"contentList"
v-for=
"item of deploymentAndMigration4"
style=
"text-indent:0em;"
>
{{
item
}}
</p>
<p
class=
"contentList"
>
最后要监测解决冲突,及时对异常数据进行处理。由于数据库双向可写,需监控监测冲突,并做好对应的日志记录。当出现异常数据,例如要求插入的数据,数据库中已经存在;或者更新数据,发现数据记录并不存在,需根据预定义的规则进行相应的处理。
</p>
<p
class=
"contentList"
>
最后要监测解决冲突,及时对异常数据进行处理。由于数据库双向可写,需监控监测冲突,并做好对应的日志记录。当出现异常数据,例如要求插入的数据,数据库中已经存在;或者更新数据,发现数据记录并不存在,需根据预定义的规则进行相应的处理。
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
10
]
}}
</p>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<p
class=
"title1"
>
5.
附件
</p>
<p
class=
"title1"
>
5.
附件
</p>
<p
class=
"contentList"
v-for=
"item of annex"
style=
"text-indent:0em;"
>
{{
item
}}
</p>
<p
class=
"contentList"
v-for=
"item of annex"
style=
"text-indent:0em;"
>
{{
item
}}
</p>
<p
class=
"pageIndex"
>
{{
pageList
[
11
]
}}
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -528,182 +540,31 @@ export default {
...
@@ -528,182 +540,31 @@ export default {
data
()
{
data
()
{
return
{
return
{
htmlTitle
:
''
,
// pdf名称
htmlTitle
:
''
,
// pdf名称
title
:
'XXXXX
X
'
,
// 单位名称
title
:
'XXXXX'
,
// 单位名称
systemName
:
'XXXXXXXXX'
,
// 系统名称
systemName
:
'XXXXXXXXX'
,
// 系统名称
version
:
1
,
// 第几次评估
version
:
1
,
// 第几次评估
reportName
:
'在国产化安全自主可控环境下的适配/改造工作评估报告'
,
reportName
:
'在国产化安全自主可控环境下的适配/改造工作评估报告'
,
tableTitle
:[
{
name
:
'单位名称'
,
val
:
''
},
{
name
:
'原应用系统名称'
,
val
:
''
},
{
name
:
'原开发金额'
,
val
:
''
},
{
name
:
'主要语言'
,
val
:
''
},
{
name
:
'架构'
,
val
:
''
},
{
name
:
'代码行'
,
val
:
''
},
{
name
:
'文件/模块数'
,
val
:
''
},
{
name
:
'综合难度系数'
,
val
:
''
},
{
name
:
'替换建议'
,
val
:
''
},
{
name
:
'评估总工作量'
,
val
:
''
},
{
name
:
'额外申请费用'
,
val
:
''
},
{
name
:
'评估预算总费用'
,
val
:
''
}
],
tableContent
:
[
tableContent
:
[
{
name
:
'评估机构:'
,
val
:
'宁波市
安可办
'
},
{
name
:
'评估机构:'
,
val
:
'宁波市
委XXXX局
'
},
{
name
:
'报告版本:'
,
val
:
''
},
{
name
:
'报告版本:'
,
val
:
''
},
{
name
:
'时间:'
,
val
:
''
},
{
name
:
'时间:'
,
val
:
''
},
{
name
:
'委托单位签字:'
,
val
:
''
},
{
name
:
'委托单位签字:'
,
val
:
''
},
{
name
:
'评估机构签字:'
,
val
:
''
}
{
name
:
'评估机构签字:'
,
val
:
''
}
],
],
listContent
:
[
{
name
:
'目录'
,
val
:
1
},
{
name
:
'1. 评估报告声明'
,
val
:
''
,
child1
:
[
{
name
:
'1.1. 报告组成'
,
val
:
''
,
},
{
name
:
'1.2. 报告作用'
,
val
:
''
,
},
{
name
:
'1.3. 其他注意事项'
,
val
:
''
,
}
]
},
{
name
:
'2. 评估标准和方法'
,
val
:
''
,
child1
:
[
{
name
:
'2.1. 参照标准'
,
val
:
''
,
child2
:
[
{
name
:
'2.1.1. “912工程”相关政策法规'
,
val
:
''
},
{
name
:
'2.1.2. “912工程”相关国家标准与规范'
,
val
:
''
},
{
name
:
'2.1.3. “L77软件工程”国家分类标准'
,
val
:
''
},
{
name
:
'2.1.4. 其他编制依据'
,
val
:
''
}
]
},
{
name
:
'2.2. 评估流程与方法'
,
val
:
''
,
child2
:
[
{
name
:
'2.2.1. 基本评估流程'
,
val
:
''
},
{
name
:
'2.2.2. 结合国家标准L77类目下的度量说明'
,
val
:
''
},
{
name
:
'2.2.3. 递归的精度与误差说明'
,
val
:
''
}
]
}
]
},
{
name
:
'3. 原应用系统评估'
,
val
:
''
,
child1
:
[
{
name
:
'3.1. 原应用系统概要'
,
val
:
''
,
child2
:
[
{
name
:
'3.1.1. 基本信息'
,
val
:
''
,
},
{
name
:
'3.1.2. 原系统代码规模'
,
val
:
''
,
}
]
},
{
name
:
'3.2. 关键技术依赖'
,
val
:
''
,
child2
:
[
{
name
:
'3.2.1. 可优化的项'
,
val
:
''
},
{
name
:
'3.2.2. 必须替换的项'
,
val
:
''
},
{
name
:
'3.2.3. 需要验证修改的项'
,
val
:
''
}
]
},
{
name
:
'3.3. 难度系数和综合系数修正'
,
val
:
''
},
{
name
:
'3.4. 人工月估算'
,
val
:
''
},
{
name
:
'3.5. 额外申请'
,
val
:
''
},
{
name
:
'3.6. 预算建议'
,
val
:
''
}
]
},
{
name
:
'4. 评估建议'
,
val
:
''
,
child1
:
[
{
name
:
'4.1. 适配/改造路线选择'
,
val
:
''
},
{
name
:
'4.2. 关键工作与方法'
,
val
:
''
,
child2
:
[
{
name
:
'4.2.1. 开发框架解决方法'
,
val
:
''
},
{
name
:
'4.2.2. 浏览器的适配兼容性改造解决方法'
,
val
:
''
},
{
name
:
'4.2.3. 浏览器功能组件的替换和适配解决方法'
,
val
:
''
},
{
name
:
'4.2.4. B/S结构下的重构'
,
val
:
''
},
{
name
:
'4.2.5. C/S结构下的重构'
,
val
:
''
},
{
name
:
'4.2.6. 部署和迁移策略'
,
val
:
''
}
]
}
]
},
{
name
:
'5. 附件'
,
val
:
''
}
],
// 目录内容
reportComposition
:
[
reportComposition
:
[
'本报告由标准、流程和方法解释、评估结果、建议等组成。'
,
'本报告由标准、流程和方法解释、评估结果、建议等组成。'
,
'其中标准相关章节,涵盖了国家、省、市有关“912工程”的相关政策、法规、技术标准,以及国家分类标准“L77”软件工程类目下最新的度量、评价、技术标准。'
,
'其中标准相关章节,涵盖了国家、省、市有关“912工程”的相关政策、法规、技术标准,以及国家分类标准“L77”软件工程类目下最新的度量、评价、技术标准。'
,
...
@@ -743,7 +604,7 @@ export default {
...
@@ -743,7 +604,7 @@ export default {
'《政务信息资源共享管理暂行办法》(国发〔2016〕51号);'
,
'《政务信息资源共享管理暂行办法》(国发〔2016〕51号);'
,
'《关于进一步加快电子政务内网建设和保密测评审查做好发至县团级中央文件网上传递和办理支撑工作的通知》(国政网办〔2019〕3号)。'
'《关于进一步加快电子政务内网建设和保密测评审查做好发至县团级中央文件网上传递和办理支撑工作的通知》(国政网办〔2019〕3号)。'
],
],
supplement
:
[
1
],
// 宁波补充文件
supplement
:
[],
// 宁波补充文件
nationalNorms
:
[
nationalNorms
:
[
'《党政机关电子公文系统安全可靠应用需求规范(暂行)》(电文安办〔2017〕4号)'
,
'《党政机关电子公文系统安全可靠应用需求规范(暂行)》(电文安办〔2017〕4号)'
,
'《电子政务内网密钥管理基础设施建设要求》;'
,
'《电子政务内网密钥管理基础设施建设要求》;'
,
...
@@ -976,135 +837,7 @@ export default {
...
@@ -976,135 +837,7 @@ export default {
}
}
},
},
degreeOfDifficulty
:
0
,
// 难度系数
degreeOfDifficulty
:
0
,
// 难度系数
messageAll
:
{
messageAll
:
[],
"arrayList"
:
[
{
"name"
:
"概要信息"
,
"remark"
:
"备注"
,
"value"
:
"填写内容"
,
"version"
:
"联系方式"
},
{
"name"
:
"单位名称"
,
"remark"
:
""
,
"value"
:
"XXXXX局"
,
"version"
:
"联系人:XXX
\
n电话:139XXXXXX"
},
{
"name"
:
"原应用系统名称"
,
"remark"
:
""
,
"value"
:
"XXXXX信息系统"
,
"version"
:
"/"
},
{
"name"
:
"原开发金额(单位:万元,精确到小数点后2位)"
,
"remark"
:
"万元"
,
"value"
:
"135.0"
,
"version"
:
"/"
},
{
"name"
:
"原开发周期(单位:年)"
,
"remark"
:
""
,
"value"
:
"1年"
,
"version"
:
"/"
},
{
"name"
:
"已运行时间(单位:年)"
,
"remark"
:
""
,
"value"
:
"4年"
,
"version"
:
"/"
},
{
"name"
:
"原开发单位是否有本地开发团队"
,
"remark"
:
""
,
"value"
:
"是"
,
"version"
:
"联系人:XXX
\
n电话:139XXXXXX"
},
{
"name"
:
"是否为涉密应用"
,
"remark"
:
""
,
"value"
:
"否"
,
"version"
:
"/"
},
{
"name"
:
"原应用是否通过等级保护/分级保护应用测评"
,
"remark"
:
""
,
"value"
:
"是"
,
"version"
:
"/"
},
{
"name"
:
"原应用系统结构"
,
"remark"
:
""
,
"value"
:
"B/S"
,
"version"
:
"/"
},
{
"name"
:
"原应用的部署是否具有容灾恢复能力"
,
"remark"
:
""
,
"value"
:
"否"
,
"version"
:
"/"
},
{
"name"
:
"原应用系统类型"
,
"remark"
:
""
,
"value"
:
"数据收集、分析、态势感知等大数据应用类"
,
"version"
:
"/"
},
{
"name"
:
"主要功能模块数"
,
"remark"
:
"个"
,
"value"
:
"145.0"
,
"version"
:
"/"
},
{
"name"
:
"当前数据占用的硬盘空间(单位:TB,精确到小数点后2位,所有当前数据实际使用空间)"
,
"remark"
:
"TB"
,
"value"
:
"45.0"
,
"version"
:
"/"
},
{
"name"
:
"国产化的替代方案"
,
"remark"
:
""
,
"value"
:
"整体改造"
,
"version"
:
"/"
},
{
"name"
:
"原开发语言体系"
,
"remark"
:
"版本/类型(如有)"
,
"value"
:
""
,
"version"
:
"备注(可一栏填写多项,使用逗号隔开)"
},
{
"name"
:
"原应用主要开发架构1"
,
"remark"
:
""
,
"value"
:
"J2EE体系下的框架"
,
"version"
:
""
},
{
"name"
:
"原应用主要开发架构2"
,
"remark"
:
""
,
"value"
:
"Tornado"
,
"version"
:
""
},
{
"name"
:
"原应用主要开发架构3"
,
"remark"
:
""
,
"value"
:
"无"
,
"version"
:
""
},
{
"name"
:
"原应用主要开发架构4"
,
"remark"
:
""
,
"value"
:
"无"
,
"version"
:
""
},
{
"name"
:
"原应用主要开发架构5"
,
"remark"
:
""
,
"value"
:
"无"
,
"version"
:
""
}]
},
messageList
:[],
messageList
:[],
page1
:
0
,
// 3.1.1 基本信息页码数
page1
:
0
,
// 3.1.1 基本信息页码数
page2
:
0
,
// 可优化页码数
page2
:
0
,
// 可优化页码数
...
@@ -1112,6 +845,7 @@ export default {
...
@@ -1112,6 +845,7 @@ export default {
page4
:
0
,
// 需要验证页码数
page4
:
0
,
// 需要验证页码数
pageAll
:
0
,
// page2,3,4所有页码数
pageAll
:
0
,
// page2,3,4所有页码数
del
:
0
,
// page2,3,4没有数据的页码数
del
:
0
,
// page2,3,4没有数据的页码数
pageList
:
[],
// 3之后的页面页码
messagePage
:
[],
// 基本信息页码数列
messagePage
:
[],
// 基本信息页码数列
optimizedPage
:
[],
// 可优化页码数列
optimizedPage
:
[],
// 可优化页码数列
replacedPage
:
[],
// 必须替换页码数列
replacedPage
:
[],
// 必须替换页码数列
...
@@ -1126,76 +860,21 @@ export default {
...
@@ -1126,76 +860,21 @@ export default {
methods
:{
methods
:{
// 获取页码
// 获取页码
getPage
()
{
getPage
()
{
for
(
let
i
=
1
;
i
<
$
(
'.page'
).
length
;
i
++
)
{
// 遍历所有的page页面,动态加载的页无法找到,其中里面多了三页无数据页
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
let
html
=
'<p class="pageIndex">'
+
i
+
'</p>'
;
// 创造页脚
if
(
i
===
1
||
i
===
2
)
{
if
(
i
===
20
)
{
// 20页的前两页是3.1.1基本信息的动态数据
this
.
pageList
.
push
(
i
+
this
.
page1
+
19
)
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
)
+
'</p>'
;
// 20页 + 动态数据页码数
}
else
if
(
i
===
3
)
{
}
this
.
pageList
.
push
(
i
+
this
.
page1
+
19
+
this
.
page2
)
if
(
i
>
20
&&
this
.
del
!==
0
)
{
// 20页之后是可优化项动态数据,判断不为空时
}
else
if
(
i
===
4
)
{
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
+
this
.
pageAll
-
this
.
del
)
+
'</p>'
;
// 都不为空,当前页码 + 基本信息页码 + 后面三个动态数据页码 - 为空时添加的三个页码
if
(
this
.
page2
!==
0
&&
this
.
page3
!==
0
)
{
if
(
i
===
21
&&
this
.
page2
===
0
)
{
// 可优化页码为空时,以创造的暂无数据页替代
this
.
pageList
.
push
(
i
+
this
.
page1
+
19
+
this
.
page2
+
this
.
page3
-
2
)
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
)
+
'</p>'
;
}
else
if
(
this
.
page2
!==
0
||
this
.
page3
!==
0
)
{
}
this
.
pageList
.
push
(
i
+
this
.
page1
+
19
+
this
.
page2
+
this
.
page3
-
1
)
if
(
i
===
22
&&
this
.
page3
===
0
&&
this
.
page2
!==
0
)
{
// 必须替换页面为空时
}
else
if
(
this
.
page2
===
0
&&
this
.
page3
===
0
)
{
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
+
this
.
page2
)
+
'</p>'
;
// 必须替换页面为空,可优化不为空
this
.
pageList
.
push
(
i
+
this
.
page1
+
19
+
this
.
page2
+
this
.
page3
)
}
else
if
(
i
===
22
&&
this
.
page3
===
0
&&
this
.
page2
===
0
)
{
// 必须替换页面为空,可优化为空
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
+
this
.
page2
-
1
)
+
'</p>'
;
// 加上前面所有页然后减去前面1页无数据页
}
if
(
i
===
23
&&
this
.
page4
===
0
&&
this
.
page2
!==
0
&&
this
.
page3
!==
0
)
{
// 需要验证页为空,可优化和必须替换不为空
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
+
this
.
page2
+
this
.
page3
)
+
'</p>'
;
// 当前页面加上所有动态加载的页码
}
else
if
(
i
===
23
&&
this
.
page4
===
0
&&
this
.
page2
===
0
||
i
===
23
&&
this
.
page4
===
0
&&
this
.
page3
===
0
)
{
// 可优化或者必须替换一个为空
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
+
this
.
page2
+
this
.
page3
-
1
)
+
'</p>'
;
// 加上所有页然后减去前面1页无数据页
}
else
if
(
i
===
23
&&
this
.
page4
===
0
&&
this
.
page2
===
0
&&
this
.
page3
===
0
)
{
// 全部为空时
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
+
this
.
page2
+
this
.
page3
-
2
)
+
'</p>'
;
// 技术所有页然后减去前面2页无数据页
}
}
else
if
(
i
>
20
&&
this
.
del
===
0
)
{
// 当三个页面都为空时,只需要加上之前的基本信息页码
html
=
'<p class="pageIndex">'
+
(
i
+
this
.
page1
)
+
'</p>'
;
}
let
other
=
'.page:nth-child('
+
(
i
+
1
)
+
')'
;
$
(
other
).
append
(
html
);
// 添加页脚
for
(
let
item
of
this
.
listContent
)
{
// 导入目录页码
if
(
$
(
'.page'
)[
i
].
innerText
.
indexOf
(
item
.
name
)
!==
-
1
&&
item
.
name
!==
'目录'
)
{
// 去除目录页
item
.
val
=
i
;
if
(
item
.
name
===
'4. 评估建议'
||
item
.
name
===
'5. 附件'
)
{
// 判断为3之后的页面
item
.
val
=
i
+
this
.
page1
+
this
.
pageAll
-
this
.
del
;
// 3之后的页面需要+所有动态加载页-无数据页面
}
}
if
(
item
.
child1
!==
undefined
)
{
// 轮询二级目录
for
(
let
arr
of
item
.
child1
)
{
if
(
$
(
'.page'
)[
i
].
innerText
.
indexOf
(
arr
.
name
)
!==
-
1
)
{
arr
.
val
=
i
;
if
(
arr
.
name
===
'3.2. 关键技术依赖'
)
{
// 加载在两个动态数据中间页,需要加上前一个动态数据页码
arr
.
val
=
i
+
this
.
page1
;
}
// 以下为3之后的页面
if
(
arr
.
name
===
'3.3. 难度系数和综合系数修正'
||
arr
.
name
===
'3.4. 人工月估算'
||
arr
.
name
===
'3.5. 额外申请'
||
arr
.
name
===
'3.6. 预算建议'
||
arr
.
name
===
'4.1. 适配/改造路线选择'
||
arr
.
name
===
'4.2. 关键工作与方法'
)
{
arr
.
val
=
i
+
this
.
page1
+
this
.
pageAll
-
this
.
del
;
// 当前页+所有动态数据页-无数据页
}
}
if
(
arr
.
child2
!==
undefined
)
{
// 轮询三级目录
for
(
let
acc
of
arr
.
child2
)
{
if
(
$
(
'.page'
)[
i
].
innerText
.
indexOf
(
acc
.
name
)
!==
-
1
)
{
acc
.
val
=
i
;
if
(
acc
.
name
===
'3.1.2. 原系统代码规模'
||
acc
.
name
===
'3.2.1. 可优化的项'
)
{
// 夹杂在两个动态数据中间的页,需要加上前面动态数据页码
acc
.
val
=
i
+
this
.
page1
}
else
if
(
acc
.
name
===
'3.2.2. 必须替换的项'
&&
this
.
page2
===
0
)
{
// 判断优化项是否为空
acc
.
val
=
i
+
this
.
page1
// 为空只需要加之前的基本信息页码
}
else
if
(
acc
.
name
===
'3.2.2. 必须替换的项'
&&
this
.
page2
!==
0
)
{
// 优化项不为空
acc
.
val
=
i
+
this
.
page1
+
this
.
page2
;
// 再加优化项的页码
}
else
if
(
acc
.
name
===
'3.2.3. 需要验证修改的项'
&&
this
.
page2
!==
0
||
acc
.
name
===
'3.2.3. 需要验证修改的项'
&&
this
.
page3
!==
0
)
{
// 判断优化项或者替换项其中一个为空
acc
.
val
=
i
+
this
.
page1
+
this
.
page2
+
this
.
page3
-
1
;
// 加上所有的页码 - 1个无数据页
}
else
if
(
acc
.
name
===
'3.2.3. 需要验证修改的项'
&&
this
.
page2
===
0
&&
this
.
page3
===
0
)
{
// 优化项和替换项都为空
acc
.
val
=
i
+
this
.
page1
+
this
.
page2
+
this
.
page3
-
2
;
// 加上所有页码 - 2个无数据页
}
else
if
(
acc
.
name
===
'4.2.1. 开发框架解决方法'
||
acc
.
name
===
'4.2.2. 浏览器的适配兼容性改造解决方法'
||
acc
.
name
===
'4.2.3. 浏览器功能组件的替换和适配解决方法'
||
acc
.
name
===
'4.2.4. B/S结构下的重构'
||
acc
.
name
===
'4.2.5. C/S结构下的重构'
||
acc
.
name
===
'4.2.6. 部署和迁移策略'
)
{
acc
.
val
=
i
+
this
.
page1
+
this
.
pageAll
-
this
.
del
// 动态页面之后的子菜单,加上所有的页码 - 无数据页
}
}
}
}
}
}
}
}
else
{
this
.
pageList
.
push
(
i
+
this
.
page1
+
19
+
this
.
pageAll
-
this
.
del
)
}
}
}
}
},
},
...
@@ -1263,6 +942,19 @@ export default {
...
@@ -1263,6 +942,19 @@ export default {
this
.
newCost
.
other
.
now
=
res
.
data
.
manufacturingCost
===
''
?
0
:
res
.
data
.
manufacturingCost
.
apply
.
calculation
;
this
.
newCost
.
other
.
now
=
res
.
data
.
manufacturingCost
===
''
?
0
:
res
.
data
.
manufacturingCost
.
apply
.
calculation
;
this
.
newCost
.
cost
.
now
=
res
.
data
.
manufacturingCost
===
''
?
0
:
(
(
(
Number
(
this
.
newCost
.
person
.
normal
)
+
Number
(
this
.
newCost
.
person
.
operating
))
*
Number
(
this
.
newCost
.
work
.
now
)
)
+
Number
(
this
.
newCost
.
other
.
now
)
).
toFixed
(
3
)
this
.
newCost
.
cost
.
now
=
res
.
data
.
manufacturingCost
===
''
?
0
:
(
(
(
Number
(
this
.
newCost
.
person
.
normal
)
+
Number
(
this
.
newCost
.
person
.
operating
))
*
Number
(
this
.
newCost
.
work
.
now
)
)
+
Number
(
this
.
newCost
.
other
.
now
)
).
toFixed
(
3
)
this
.
degreeOfDifficulty
=
res
.
data
.
manufacturingCost
.
degreeOfDifficulty
.
calculation
;
this
.
degreeOfDifficulty
=
res
.
data
.
manufacturingCost
.
degreeOfDifficulty
.
calculation
;
this
.
tableTitle
[
0
].
val
=
this
.
title
;
// 单位名称
this
.
tableTitle
[
1
].
val
=
this
.
systemName
;
// 原系统名称
this
.
tableTitle
[
2
].
val
=
this
.
newCost
.
cost
.
now
+
'万元'
;
// 适配预算
this
.
tableTitle
[
3
].
val
=
res
.
data
.
language
===
1
?
'java'
:
res
.
data
.
language
===
2
?
'js'
:
res
.
data
.
language
===
3
?
'python'
:
res
.
data
.
language
===
4
?
'asp'
:
res
.
data
.
language
===
6
?
'go'
:
res
.
data
.
language
===
7
?
'html'
:
res
.
data
.
language
===
8
?
'c#'
:
res
.
data
.
language
===
10
?
'unknow'
:
'-'
;
// 语言
this
.
tableTitle
[
4
].
val
=
res
.
data
.
framework
===
1
?
'前后端分离'
:
res
.
data
.
framework
===
2
?
'混合'
:
res
.
data
.
framework
===
-
1
?
'-'
:
''
;
// 架构
this
.
tableTitle
[
5
].
val
=
this
.
sysScale
.
codeNum
;
// 代码行
this
.
tableTitle
[
6
].
val
=
this
.
sysScale
.
fileNum
+
'/'
+
this
.
sysScale
.
modelNum
;
// 文件/模块
this
.
tableTitle
[
7
].
val
=
this
.
degreeOfDifficulty
;
// 综合难度系数
this
.
tableTitle
[
8
].
val
=
res
.
data
.
type
===
1
?
'修改'
:
(
res
.
data
.
type
===
2
&&
res
.
data
.
language
===
1
&&
res
.
data
.
framework
===
1
)
?
'修改'
:
'重构'
;
// 建议
this
.
tableTitle
[
9
].
val
=
this
.
newCost
.
work
.
now
+
'人工月'
;
// 总工作量
this
.
tableTitle
[
10
].
val
=
this
.
newCost
.
other
.
now
+
'万元'
;
// 额外申请费用
this
.
tableTitle
[
11
].
val
=
this
.
newCost
.
cost
.
now
+
'万元'
;
// 评估预算总费用
if
(
res
.
data
.
technologyList
.
technologyReports
.
length
!==
0
)
{
// 轮询 3.2
if
(
res
.
data
.
technologyList
.
technologyReports
.
length
!==
0
)
{
// 轮询 3.2
for
(
let
i
=
0
;
i
<
res
.
data
.
technologyList
.
technologyReports
.
length
;
i
++
)
{
// 轮询出所有的表
for
(
let
i
=
0
;
i
<
res
.
data
.
technologyList
.
technologyReports
.
length
;
i
++
)
{
// 轮询出所有的表
let
name
=
{
let
name
=
{
...
@@ -1308,108 +1000,108 @@ export default {
...
@@ -1308,108 +1000,108 @@ export default {
})
})
},
},
init2
()
{
init2
()
{
// this.$server.getExcel('this.$route.query.id').then(res =>{
this
.
$server
.
getExcel
(
this
.
$route
.
query
.
id
).
then
(
res
=>
{
// console.log(res)
this
.
messageAll
=
res
.
data
;
// })
console
.
log
(
this
.
messageAll
);
for
(
let
item
in
this
.
messageAll
)
{
// 遍历基本信息数据
// console.log(item,this.messageAll[item]);
let
array
=
[];
let
array
=
[];
let
val
=
{
for
(
let
item
of
this
.
messageAll
)
{
name
:
''
,
if
(
item
.
arrayList
.
length
!==
0
)
{
val
:
[]
let
val
=
{
}
name
:
item
.
name
,
if
(
item
===
'arrayList'
)
{
val
:
[]
val
.
name
=
'概要信息'
}
}
array
.
push
(
val
);
// 新增名称和对应的空数组
array
.
push
(
val
);
// 新增名称和对应的空数组
let
page
=
0
;
// 当前页为0
let
page
=
0
;
// 当前页为0
for
(
let
a
=
0
;
a
<
item
.
arrayList
.
length
;
a
++
)
{
// 遍历内容
for
(
let
a
=
0
;
a
<
this
.
messageAll
[
item
].
length
;
a
++
)
{
// 遍历内容
if
(
a
%
20
===
0
)
{
// 二十条为一页
if
(
a
%
20
===
0
)
{
// 二十条为一页
array
[
array
.
length
-
1
].
val
.
push
([]);
// 当到了二十条,在对应的位置添加空数组
array
[
array
.
length
-
1
].
val
.
push
([]);
// 当到了二十条,在对应的位置添加空数组
if
(
a
!==
0
)
{
// a初始为0时,page不加1
if
(
a
!==
0
)
{
// a初始为0时,page不加1
page
+=
1
;
page
+=
1
;
}
}
let
value
=
{
index
:
(
a
+
1
),
name
:
item
.
arrayList
[
a
].
name
,
value
:
item
.
arrayList
[
a
].
value
}
array
[
array
.
length
-
1
].
val
[
page
].
push
(
value
)
// 将值放到对应的数组中
}
}
}
}
let
value
=
{
index
:
(
a
+
1
),
name
:
this
.
messageAll
.
arrayList
[
a
].
name
,
value
:
this
.
messageAll
.
arrayList
[
a
].
value
}
array
[
array
.
length
-
1
].
val
[
page
].
push
(
value
)
// 将值放到对应的数组中
}
}
this
.
messageList
=
array
;
// 赋值
this
.
messageList
=
array
;
// 赋值
}
// 遍历内容获取新增数据的页码以及统计所有页码
// 遍历内容获取新增数据的页码以及统计所有页码
let
messagePa
=
0
;
// 基本信息页码为0
let
messagePa
=
0
;
// 基本信息页码为0
for
(
let
i
=
0
;
i
<
this
.
messageList
.
length
;
i
++
)
{
// 遍历基本信息
for
(
let
i
=
0
;
i
<
this
.
messageList
.
length
;
i
++
)
{
// 遍历基本信息
this
.
page1
+=
this
.
messageList
[
i
].
val
.
length
;
// 基本信息总页码统计
this
.
page1
+=
this
.
messageList
[
i
].
val
.
length
;
// 基本信息总页码统计
for
(
let
a
=
0
;
a
<
this
.
messageList
[
i
].
val
.
length
;
a
++
)
{
// 遍历所有的表
for
(
let
a
=
0
;
a
<
this
.
messageList
[
i
].
val
.
length
;
a
++
)
{
// 遍历所有的表
messagePa
+=
1
// 统计当前页为第几页
messagePa
+=
1
// 统计当前页为第几页
let
val
=
{
let
val
=
{
itemIndex
:
i
,
// 第几章表
itemIndex
:
i
,
// 第几章表
arrIndex
:
a
,
// 对应表的第几页
arrIndex
:
a
,
// 对应表的第几页
page
:
messagePa
// 当前页码
page
:
messagePa
// 当前页码
}
this
.
messagePage
.
push
(
val
)
// 放到变量中,进行动态数据页手动添加页脚
}
}
this
.
messagePage
.
push
(
val
)
// 放到变量中,进行动态数据页手动添加页脚
}
}
}
// 可优化的项,同上
// 可优化的项,同上
let
optimizedPa
=
0
;
let
optimizedPa
=
0
;
if
(
this
.
optimized
.
length
!==
0
)
{
if
(
this
.
optimized
.
length
!==
0
)
{
for
(
let
i
=
0
;
i
<
this
.
optimized
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
this
.
optimized
.
length
;
i
++
)
{
this
.
page2
+=
this
.
optimized
[
i
].
val
.
length
;
this
.
page2
+=
this
.
optimized
[
i
].
val
.
length
;
for
(
let
a
=
0
;
a
<
this
.
optimized
[
i
].
val
.
length
;
a
++
)
{
for
(
let
a
=
0
;
a
<
this
.
optimized
[
i
].
val
.
length
;
a
++
)
{
optimizedPa
+=
1
optimizedPa
+=
1
let
val
=
{
let
val
=
{
itemIndex
:
i
,
itemIndex
:
i
,
arrIndex
:
a
,
arrIndex
:
a
,
page
:
optimizedPa
page
:
optimizedPa
}
this
.
optimizedPage
.
push
(
val
)
}
}
this
.
optimizedPage
.
push
(
val
)
}
}
this
.
del
+=
1
;
// 可优化的页码不为空,需要删除掉一页无数据页
}
}
this
.
del
+=
1
;
// 可优化的页码不为空,需要删除掉一页无数据页
}
// 必须替换页码,同上
// 必须替换页码,同上
let
replacedPa
=
0
;
let
replacedPa
=
0
;
if
(
this
.
replaced
.
length
!==
0
)
{
if
(
this
.
replaced
.
length
!==
0
)
{
for
(
let
i
=
0
;
i
<
this
.
replaced
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
this
.
replaced
.
length
;
i
++
)
{
this
.
page3
+=
this
.
replaced
[
i
].
val
.
length
;
this
.
page3
+=
this
.
replaced
[
i
].
val
.
length
;
for
(
let
a
=
0
;
a
<
this
.
replaced
[
i
].
val
.
length
;
a
++
)
{
for
(
let
a
=
0
;
a
<
this
.
replaced
[
i
].
val
.
length
;
a
++
)
{
replacedPa
+=
1
replacedPa
+=
1
let
val
=
{
let
val
=
{
itemIndex
:
i
,
itemIndex
:
i
,
arrIndex
:
a
,
arrIndex
:
a
,
page
:
replacedPa
page
:
replacedPa
}
this
.
replacedPage
.
push
(
val
)
}
}
this
.
replacedPage
.
push
(
val
)
}
}
this
.
del
+=
1
;
// 必须替换页码不为空,需要删除掉一页无数据页
}
}
this
.
del
+=
1
;
// 必须替换页码不为空,需要删除掉一页无数据页
}
// 需要验证页码,同上
// 需要验证页码,同上
let
verificationPa
=
0
;
let
verificationPa
=
0
;
if
(
this
.
verification
.
length
!==
0
)
{
if
(
this
.
verification
.
length
!==
0
)
{
for
(
let
i
=
0
;
i
<
this
.
verification
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
this
.
verification
.
length
;
i
++
)
{
this
.
page4
+=
this
.
verification
[
i
].
val
.
length
;
this
.
page4
+=
this
.
verification
[
i
].
val
.
length
;
for
(
let
a
=
0
;
a
<
this
.
verification
[
i
].
val
.
length
;
a
++
)
{
for
(
let
a
=
0
;
a
<
this
.
verification
[
i
].
val
.
length
;
a
++
)
{
verificationPa
+=
1
verificationPa
+=
1
let
val
=
{
let
val
=
{
itemIndex
:
i
,
itemIndex
:
i
,
arrIndex
:
a
,
arrIndex
:
a
,
page
:
verificationPa
page
:
verificationPa
}
this
.
verificationPage
.
push
(
val
)
}
}
this
.
verificationPage
.
push
(
val
)
}
}
this
.
del
+=
1
;
// 需要验证页码不为空,需要删除掉一页无数据页
}
}
this
.
del
+=
1
;
// 需要验证页码不为空,需要删除掉一页无数据页
this
.
pageAll
=
this
.
page2
+
this
.
page3
+
this
.
page4
;
// 可优化的页 + 必须替换的页 + 需要验证的页
}
this
.
getPage
()
// 获取页码
this
.
pageAll
=
this
.
page2
+
this
.
page3
+
this
.
page4
;
// 可优化的页 + 必须替换的页 + 需要验证的页
})
this
.
getPage
()
// 获取页码
}
}
}
}
}
}
...
@@ -1424,10 +1116,11 @@ export default {
...
@@ -1424,10 +1116,11 @@ export default {
.otherPdf
#pdfDom
{
.otherPdf
#pdfDom
{
width
:
595px
;
width
:
595px
;
background
:
#fff
;
background
:
#fff
;
font-family
:
'
仿宋GB2312
'
;
font-family
:
'
宋体
'
;
margin
:
0
auto
;
margin
:
0
auto
;
}
}
.otherPdf
.page
{
.otherPdf
.page
,
.otherPdf
.pageOther
{
width
:
595px
;
height
:
842px
;
height
:
842px
;
padding
:
90px
70px
;
padding
:
90px
70px
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
...
@@ -1452,6 +1145,12 @@ export default {
...
@@ -1452,6 +1145,12 @@ export default {
word-break
:
break-all
;
word-break
:
break-all
;
word-wrap
:
break-word
;
word-wrap
:
break-word
;
}
}
.otherPdf
table
td
:nth-child
(
1
)
{
width
:
50px
;
}
.otherPdf
table
td
:nth-child
(
3
)
{
width
:
50px
;
}
.otherPdf
.list
{
.otherPdf
.list
{
margin-bottom
:
15px
;
margin-bottom
:
15px
;
font-size
:
22px
;
font-size
:
22px
;
...
@@ -1461,6 +1160,12 @@ export default {
...
@@ -1461,6 +1160,12 @@ export default {
.otherPdf
.listContent
{
.otherPdf
.listContent
{
line-height
:
1.5
;
line-height
:
1.5
;
}
}
.otherPdf
.listContent
p
{
white-space
:
nowrap
;
}
.otherPdf
.listContent
.child
{
text-align
:
right
;
}
.otherPdf
.title1
{
.otherPdf
.title1
{
font-size
:
22px
;
font-size
:
22px
;
line-height
:
1.5
;
line-height
:
1.5
;
...
@@ -1493,16 +1198,12 @@ export default {
...
@@ -1493,16 +1198,12 @@ export default {
font-size
:
12px
;
font-size
:
12px
;
text-align
:
center
;
text-align
:
center
;
position
:
absolute
;
position
:
absolute
;
bottom
:
1
5px
;
bottom
:
2
5px
;
left
:
297px
;
left
:
297px
;
}
}
.otherPdf
.listContent
{
.otherPdf
.listContent
{
position
:
relative
;
position
:
relative
;
}
}
.otherPdf
.listPage
{
position
:
absolute
;
right
:
0
;
}
.otherPdf
.toPdf
{
.otherPdf
.toPdf
{
display
:
inline-block
;
display
:
inline-block
;
width
:
100px
;
width
:
100px
;
...
...
src/components/reportAssess/reportAssess.vue
浏览文件 @
670859b6
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
<div
class=
"one"
>
<div
class=
"one"
>
<div
class=
"oneTitle"
>
<i></i>
概要
</div>
<div
class=
"oneTitle"
>
<i></i>
概要
</div>
<div
class=
"lineTop"
>
<div
class=
"lineTop"
>
<span>
导出PDF格式
</span>
<span
@
click=
"jump"
>
导出PDF格式
</span>
<span
@
click=
"reback"
>
信息填报
</span>
<span
@
click=
"reback"
>
信息填报
</span>
<span
@
click=
"goBackprev"
>
关闭
</span>
<span
@
click=
"goBackprev"
>
关闭
</span>
<!--
<div
><span
@
click=
"goBackprev"
>
返回
</span>
-->
<!--
<div
><span
@
click=
"goBackprev"
>
返回
</span>
-->
...
...
src/services/server.js
浏览文件 @
670859b6
...
@@ -350,7 +350,7 @@ const server = {
...
@@ -350,7 +350,7 @@ const server = {
delConfig
(
id
){
// 规则配置删除
delConfig
(
id
){
// 规则配置删除
return
axios
(
assessma
+
'/rule/'
+
id
,{
return
axios
(
assessma
+
'/rule/'
+
id
,{
method
:
'delete'
,
method
:
'delete'
,
})
})
},
},
getConfigPageList
(
page
,
size
,
data
){
// 未知规则配置搜索
getConfigPageList
(
page
,
size
,
data
){
// 未知规则配置搜索
...
@@ -397,7 +397,7 @@ const server = {
...
@@ -397,7 +397,7 @@ const server = {
})
})
},
},
getExcel
(
id
){
getExcel
(
id
){
return
axios
(
assess
+
'/evaluation/in/excel/'
+
id
,{
return
axios
(
assess
ma
+
'/evaluation/in/excel/'
+
id
,{
method
:
'get'
method
:
'get'
})
})
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论