提交 670859b6 authored 作者: thy's avatar thy

0415其他显示

......@@ -86,12 +86,11 @@ export default {
},
methods: {
add(){
console.log(this.$store.state.userData.userName)
this.$router.push({
name: 'assessmentReport',
query: {
username:this.$store.state.userData.userName,
authority: this.$store.state.userData.type,
username:this.$store.getters.getUserData.userName,
authority: this.$store.getters.getUserData.type,
id: null,
}
});
......@@ -107,13 +106,10 @@ export default {
},
// 初始请求
init() {
let username = ''
if (this.$store.state.userData.userName !== 'admin'){
username =this.$store.state.userData.userName
}
let val = {
'username':username,
'projectName': this.searchVal,
searchMap: {
'username':this.$store.getters.getUserData.userName
}
}
this.$server.getEvaluationList(this.currentPage,this.pagesize,val).then(res=>{
console.log(res.data)
......@@ -144,11 +140,10 @@ export default {
// 评估
evaluation(row) {
console.log(row)
console.log(this.$store.state.userData)
this.$router.push({name:'assessmentReport', query: {
username: row.username,
id: row.id,
authority: this.$store.state.userData.type
authority: this.$store.getters.getUserData.type
}})
// // return
// let Logistics= this.$router.resolve({
......@@ -178,7 +173,7 @@ export default {
this.$router.push({name:'reportAssess',query: {
username: row.username,
id:row.id,
authority:this.$store.state.userData.type,
authority:this.$store.getters.getUserData.type,
}})
},
// 删除
......
......@@ -2,6 +2,30 @@
<div class="otherPdf">
<span class="toPdf" @click="getPdf('pdfDom')">下载pdf</span>
<div id="pdfDom">
<div class="pageOther">
<p class="title">{{title}}</p>
<p class="title">{{systemName}}</p>
<p class="title">{{reportName}}</p>
<div>
<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">
<td colspan="2">{{item.name}}</td>
<td colspan="2">{{item.val}}</td>
</tr>
</table>
</div>
</div>
<div class="content">
<div class="page">
<p class="title">{{title}}</p>
<p class="title">{{systemName}}</p>
......@@ -17,132 +41,98 @@
</div>
<div class="page">
<p class="list">目录</p>
<div class="listConent">
<div class="listContent" style="margin: 0" v-for="(item,index) of listContent">
<div v-if="index < 3">
<p>
<span>{{item.name}}</span>
<span class="listPage">{{item.val}}</span>
</p>
<div class="listContent" v-for="arr of item.child1" style="margin-left: 20px;">
<p>
<span>{{arr.name}}</span>
<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 class="listContent" style="margin: 0" v-for="(item,index) of listContent">
<div v-if="index ===3">
<p >
<span>{{item.name}}</span>
<span class="listPage">{{item.val}}</span>
</p>
<div class="listContent" v-for="(arr,index2) of item.child1" style="margin-left: 20px;">
<div v-if="index2 < 2">
<p>
<span>{{arr.name}}</span>
<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>
<div class="listContent">
<p class="child">目录....................................................I</p>
<p class="child">1. 评估报告声明.........................................3</p>
<p class="child">1.1. 报告组成........................................3</p>
<p class="child">1.2. 报告作用........................................4</p>
<p class="child">1.3. 其他注意事项....................................4</p>
<p class="child">2. 评估标准和方法.......................................6</p>
<p class="child">2.1. 参照标准........................................6</p>
<p class="child">2.1.1. “912工程”相关政策法规....................6</p>
<p class="child">2.1.2. “912工程”相关国家标准与规范..............6</p>
<p class="child">2.1.3. “L77软件工程”国家分类标准................6</p>
<p class="child">2.1.4. 其他编制依据...............................6</p>
<p class="child">2.2. 评估流程与方法.................................11</p>
<p class="child">2.2.1. 基本评估流程...............................11</p>
<p class="child">2.2.2. 结合国家标准L77类目下的度量说明............12</p>
<p class="child">2.2.3. 递归的精度与误差说明.......................17</p>
<p class="child">3. 原应用系统评估......................................19</p>
<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>
<p class="pageIndex">1</p>
</div>
<div class="page">
<div class="listContent">
<div class="listContent" style="margin: 0" v-for="(item,index) of listContent">
<div v-if="index === 3">
<div class="listContent" v-for="(arr,index2) of item.child1" style="margin-left: 20px;">
<div v-if="index2 > 1">
<p>
<span>{{arr.name}}</span>
<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 v-if="index > 3">
<p>
<span>{{item.name}}</span>
<span class="listPage">{{item.val}}</span>
</p>
<div class="listContent" v-for="arr of item.child1" style="margin-left: 20px;">
<p>
<span>{{arr.name}}</span>
<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>
<p class="child">3.3. 难度系数和综合系数修正.........................{{pageList[4]}}</p>
<p class="child">3.4. 人工月估算.....................................{{pageList[4]}}</p>
<p class="child">3.5. 额外申请.......................................{{pageList[4]}}</p>
<p class="child">3.6. 预算建议.......................................{{pageList[5]}}</p>
<p class="child">4. 评估建议............................................{{pageList[6]}}</p>
<p class="child">4.1. 适配/改造路线选择..............................{{pageList[6]}}</p>
<p class="child">4.2. 关键工作与方法.................................{{pageList[6]}}</p>
<p class="child">4.2.1. 开发框架解决方法...........................{{pageList[6]}}</p>
<p class="child">4.2.2. 浏览器的适配兼容性改造解决方法.............{{pageList[7]}}</p>
<p class="child">4.2.3. 浏览器功能组件的替换和适配解决方法.........{{pageList[7]}}</p>
<p class="child">4.2.4. B/S结构下的重构............................{{pageList[8]}}</p>
<p class="child">4.2.5. C/S结构下的重构............................{{pageList[8]}}</p>
<p class="child">4.2.6. 部署和迁移策略.............................{{pageList[8]}}</p>
<p class="child">5. 附件...............................................{{pageList[11]}}</p>
</div>
<p class="pageIndex">2</p>
</div>
<div class="page">
<p class="title1">1.&nbsp;&nbsp;&nbsp;评估报告声明</p>
<p class="title2">1.1.&nbsp;&nbsp;&nbsp;报告组成</p>
<p class="contentList" v-for="item of reportComposition">{{item}}</p>
<p class="pageIndex">3</p>
</div>
<div class="page">
<p class="title2">1.2.&nbsp;报告作用</p>
<p class="contentList" v-for="item of reportingRole">{{item}}</p>
<p class="title2">1.3.&nbsp;其他注意事项</p>
<p class="contentList" v-for="item of reportOther">{{item}}</p>
<p class="pageIndex">4</p>
</div>
<div class="page">
<p class="contentList" v-for="item of reportOther2">{{item}}</p>
<p class="pageIndex">5</p>
</div>
<div class="page">
<p class="title1">2.&nbsp;评估标准和方法</p>
<p class="title2">2.1.&nbsp;参照标准</p>
<p class="title3">2.1.1.&nbsp;“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;color: red" v-for="item of supplement">{{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.&nbsp;“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.&nbsp;“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.&nbsp;其他编制依据</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>
......@@ -152,6 +142,7 @@
<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>
......@@ -159,6 +150,7 @@
<p class="contentList" v-for="item of metricDescription">{{item}}</p>
<p class="title4">2.2.2.1.&nbsp;规模测算</p>
<p class="contentList" v-for="item of scaleConversion">{{item}}</p>
<p class="pageIndex">12</p>
</div>
<div class="page">
<p class="contentList">笼统的算法如下式计算:</p>
......@@ -170,18 +162,22 @@
<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.&nbsp;人工月单价测算</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>
......@@ -189,29 +185,32 @@
<p class="contentList" v-for="item of recursivePrecision">{{item}}</p>
<p class="title4">2.2.3.1.&nbsp;整体类比法</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.&nbsp;开发时间固定百分比法</p>
<p class="contentList" v-for="item of fixedDevelopment">{{item}}</p>
<p class="pageIndex">18</p>
</div>
<!-- 3-->
<!-- 3-->
<div class="page">
<p class="contentList" style="text-indent:0em;">推算的预算建议,将作为宁波市安可办的审核依据和预算约束。</p>
<p class="title1">3.&nbsp;原应用系统评估</p>
<p class="title2">3.1.&nbsp;原应用系统概要</p>
<p class="title3">3.1.1.&nbsp;基本信息</p>
<p class="pageIndex">19</p>
</div>
<div v-for="(item,itemIndex) of messageList">
<div class="page" v-for="(arr,index) of item.val">
<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>{{acc.value}}</td>
<td style="width: 150px;">{{acc.value}}</td>
</tr>
</table>
</div>
......@@ -248,10 +247,11 @@
</div>
<p class="title2">3.2.&nbsp;关键技术依赖</p>
<p class="contentList">{{technologyDependence}}</p>
<p class="pageIndex">{{pageList[0]}}</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">
<div class="pageOther" v-if="arr.length !== 0">
<p class="title3" v-if="itemInd === 0 && index === 0">3.2.1.&nbsp;可优化的项</p>
<p v-if="index === 0" style="display: flex;justify-content: space-between">
<span>关键技术:{{item.name}}</span>
......@@ -284,10 +284,11 @@
<div class="page" v-if="optimized.length === 0">
<p class="title3">3.2.1.&nbsp;可优化的项</p>
<p>暂无</p>
<p class="pageIndex">{{pageList[1]}}</p>
</div>
<div v-for="(item,itemInd) of replaced">
<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.&nbsp;必须替换的项</p>
<p v-if="index === 0" style="display: flex;justify-content: space-between">
<span>关键技术:{{item.name}}</span>
......@@ -321,10 +322,11 @@
<div class="page" v-if="replaced.length === 0">
<p class="title3">3.2.2.&nbsp;必须替换的项</p>
<p>暂无</p>
<p class="pageIndex">{{pageList[2]}}</p>
</div>
<div v-for="(item,itemInd) of verification">
<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.&nbsp;需要验证修改的项</p>
<p v-if="index === 0" style="display: flex;justify-content: space-between">
<span>关键技术:{{item.name}}</span>
......@@ -360,6 +362,7 @@
<div class="page" v-if="verification.length === 0">
<p class="title3">3.2.3.&nbsp;需要验证修改的项</p>
<p>暂无</p>
<p class="pageIndex">{{pageList[3]}}</p>
</div>
<div class="page">
<p class="title2">3.3.&nbsp;难度系数和综合系数修正</p>
......@@ -434,6 +437,7 @@
</tr>
</table>
</div>
<p class="pageIndex">{{pageList[4]}}</p>
</div>
<div class="page">
<p class="title2">3.6.&nbsp;预算建议</p>
......@@ -475,6 +479,7 @@
</tr>
</table>
</div>
<p class="pageIndex">{{pageList[5]}}</p>
</div>
<!-- 4-->
<div class="page">
......@@ -485,6 +490,7 @@
<p class="title3">4.2.1.&nbsp;开发框架解决方法</p>
<p class="contentList">J2EE和类似跨平台的开发框架,可通过适配和代码改造,完全移植到国产化环境下。</p>
<p class="contentList">基于.NET体系下使用VB、Delphi、VC、C++、C#等语言,完全依</p>
<p class="pageIndex">{{pageList[6]}}</p>
</div>
<div class="page">
<p class="contentList" style="text-indent:0em;">赖Window组件和库的应用系统,需要换框架重构。</p>
......@@ -492,6 +498,7 @@
<p class="contentList" v-for="item of adaptationCompatible">{{item}}</p>
<p class="title3">4.2.3.&nbsp;浏览器功能组件的替换和适配解决方法</p>
<p class="contentList" v-for="item of replacementAndAdaptation">{{item}}</p>
<p class="pageIndex">{{pageList[7]}}</p>
</div>
<div class="page">
<p class="title3">4.2.4.&nbsp;B/S结构下的重构</p>
......@@ -501,6 +508,7 @@
<p class="contentList">如改造后允许以B/S结构部署,则改造工作量和不可预见问题将大为减少。</p>
<p class="title3">4.2.6.&nbsp;部署和迁移策略</p>
<p class="contentList" v-for="item of deploymentAndMigration">{{item}}</p>
<p class="pageIndex">{{pageList[8]}}</p>
</div>
<div class="page">
<p class="contentList" v-for="item of deploymentAndMigration2" style="text-indent:0em;">{{item}}</p>
......@@ -508,18 +516,22 @@
<img src="./img/3.png" style="width: 50%">
</p>
<p class="contentList" v-for="item of deploymentAndMigration3">{{item}}</p>
<p class="pageIndex">{{pageList[9]}}</p>
</div>
<div class="page">
<p class="contentList" v-for="item of deploymentAndMigration4" style="text-indent:0em;">{{item}}</p>
<p class="contentList">最后要监测解决冲突,及时对异常数据进行处理。由于数据库双向可写,需监控监测冲突,并做好对应的日志记录。当出现异常数据,例如要求插入的数据,数据库中已经存在;或者更新数据,发现数据记录并不存在,需根据预定义的规则进行相应的处理。</p>
<p class="pageIndex">{{pageList[10]}}</p>
</div>
<div class="page">
<p class="title1">5.&nbsp;附件</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>
</template>
<script>
......@@ -528,182 +540,31 @@ export default {
data () {
return {
htmlTitle:'', // pdf名称
title: 'XXXXXX', // 单位名称
title: 'XXXXX', // 单位名称
systemName: 'XXXXXXXXX', // 系统名称
version: 1, // 第几次评估
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: [
{name: '评估机构:', val: '宁波市安可办'},
{name: '评估机构:', val: '宁波市委XXXX局'},
{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: [
'本报告由标准、流程和方法解释、评估结果、建议等组成。',
'其中标准相关章节,涵盖了国家、省、市有关“912工程”的相关政策、法规、技术标准,以及国家分类标准“L77”软件工程类目下最新的度量、评价、技术标准。',
......@@ -743,7 +604,7 @@ export default {
'《政务信息资源共享管理暂行办法》(国发〔2016〕51号);',
'《关于进一步加快电子政务内网建设和保密测评审查做好发至县团级中央文件网上传递和办理支撑工作的通知》(国政网办〔2019〕3号)。'
],
supplement: [1], // 宁波补充文件
supplement: [], // 宁波补充文件
nationalNorms: [
'《党政机关电子公文系统安全可靠应用需求规范(暂行)》(电文安办〔2017〕4号)',
'《电子政务内网密钥管理基础设施建设要求》;',
......@@ -976,135 +837,7 @@ export default {
}
},
degreeOfDifficulty: 0, // 难度系数
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": ""
}]
},
messageAll: [],
messageList:[],
page1: 0, // 3.1.1 基本信息页码数
page2: 0, // 可优化页码数
......@@ -1112,6 +845,7 @@ export default {
page4: 0, // 需要验证页码数
pageAll: 0, // page2,3,4所有页码数
del: 0, // page2,3,4没有数据的页码数
pageList: [], // 3之后的页面页码
messagePage: [], // 基本信息页码数列
optimizedPage: [], // 可优化页码数列
replacedPage: [], // 必须替换页码数列
......@@ -1126,76 +860,21 @@ export default {
methods:{
// 获取页码
getPage() {
for (let i = 1; i < $('.page').length; i++) { // 遍历所有的page页面,动态加载的页无法找到,其中里面多了三页无数据页
let html = '<p class="pageIndex">' + i + '</p>'; // 创造页脚
if (i === 20) { // 20页的前两页是3.1.1基本信息的动态数据
html = '<p class="pageIndex">' + (i + this.page1) + '</p>'; // 20页 + 动态数据页码数
}
if (i > 20 && this.del !== 0) { // 20页之后是可优化项动态数据,判断不为空时
html = '<p class="pageIndex">' + (i + this.page1 + this.pageAll - this.del) + '</p>'; // 都不为空,当前页码 + 基本信息页码 + 后面三个动态数据页码 - 为空时添加的三个页码
if (i === 21 && this.page2 === 0) { // 可优化页码为空时,以创造的暂无数据页替代
html = '<p class="pageIndex">' + (i + this.page1) + '</p>';
}
if (i === 22 && this.page3 === 0 && this.page2 !== 0) { // 必须替换页面为空时
html = '<p class="pageIndex">' + (i + this.page1 + this.page2) + '</p>'; // 必须替换页面为空,可优化不为空
} 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 // 动态页面之后的子菜单,加上所有的页码 - 无数据页
}
}
}
}
}
}
for (let i = 1; i <= 12; i++) {
if (i === 1 || i === 2) {
this.pageList.push(i + this.page1 + 19)
} else if (i === 3) {
this.pageList.push(i + this.page1 + 19 + this.page2)
} else if (i === 4) {
if (this.page2 !== 0 && this.page3 !== 0) {
this.pageList.push(i + this.page1 + 19 + this.page2 + this.page3 - 2)
} else if (this.page2 !== 0 || this.page3 !== 0) {
this.pageList.push(i + this.page1 + 19 + this.page2 + this.page3 - 1)
} else if (this.page2 === 0 && this.page3 === 0) {
this.pageList.push(i + this.page1 + 19 + this.page2 + this.page3)
}
} else {
this.pageList.push(i + this.page1 + 19 + this.pageAll - this.del)
}
}
},
......@@ -1263,6 +942,19 @@ export default {
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.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
for (let i = 0; i < res.data.technologyList.technologyReports.length; i++) { // 轮询出所有的表
let name = {
......@@ -1308,22 +1000,19 @@ export default {
})
},
init2() {
// this.$server.getExcel('this.$route.query.id').then(res =>{
// console.log(res)
// })
for (let item in this.messageAll) { // 遍历基本信息数据
// console.log(item,this.messageAll[item]);
this.$server.getExcel(this.$route.query.id).then(res =>{
this.messageAll = res.data;
console.log(this.messageAll);
let array = [];
for (let item of this.messageAll) {
if (item.arrayList.length !== 0) {
let val = {
name: '',
name: item.name,
val: []
}
if (item === 'arrayList') {
val.name = '概要信息'
}
array.push(val); // 新增名称和对应的空数组
let page = 0; // 当前页为0
for (let a = 0; a < this.messageAll[item].length; a++) { // 遍历内容
for (let a = 0; a < item.arrayList.length; a++) { // 遍历内容
if (a % 20 === 0) { // 二十条为一页
array[array.length - 1].val.push([]); // 当到了二十条,在对应的位置添加空数组
if (a !== 0) { // a初始为0时,page不加1
......@@ -1332,14 +1021,16 @@ export default {
}
let value = {
index: (a+1),
name: this.messageAll.arrayList[a].name,
value: this.messageAll.arrayList[a].value
name: item.arrayList[a].name,
value: item.arrayList[a].value
}
array[array.length - 1].val[page].push(value) // 将值放到对应的数组中
}
this.messageList = array; // 赋值
}
}
this.messageList = array; // 赋值
// 遍历内容获取新增数据的页码以及统计所有页码
let messagePa = 0; // 基本信息页码为0
for (let i = 0; i<this.messageList.length; i++) { // 遍历基本信息
......@@ -1410,6 +1101,7 @@ export default {
}
this.pageAll = this.page2 + this.page3 + this.page4; // 可优化的页 + 必须替换的页 + 需要验证的页
this.getPage() // 获取页码
})
}
}
}
......@@ -1424,10 +1116,11 @@ export default {
.otherPdf #pdfDom{
width: 595px;
background: #fff;
font-family: '仿宋GB2312';
font-family: '宋体';
margin: 0 auto;
}
.otherPdf .page{
.otherPdf .page, .otherPdf .pageOther{
width: 595px;
height: 842px;
padding: 90px 70px;
box-sizing: border-box;
......@@ -1452,6 +1145,12 @@ export default {
word-break: break-all;
word-wrap:break-word;
}
.otherPdf table td:nth-child(1){
width: 50px;
}
.otherPdf table td:nth-child(3){
width: 50px;
}
.otherPdf .list{
margin-bottom: 15px;
font-size: 22px;
......@@ -1461,6 +1160,12 @@ export default {
.otherPdf .listContent{
line-height: 1.5;
}
.otherPdf .listContent p{
white-space:nowrap;
}
.otherPdf .listContent .child{
text-align: right;
}
.otherPdf .title1{
font-size: 22px;
line-height: 1.5;
......@@ -1493,16 +1198,12 @@ export default {
font-size: 12px;
text-align: center;
position: absolute;
bottom: 15px;
bottom: 25px;
left: 297px;
}
.otherPdf .listContent{
position: relative;
}
.otherPdf .listPage{
position: absolute;
right: 0;
}
.otherPdf .toPdf{
display: inline-block;
width: 100px;
......
......@@ -23,7 +23,7 @@
<div class="one">
<div class="oneTitle"> <i></i>概要</div>
<div class="lineTop">
<span>导出PDF格式</span>
<span @click="jump">导出PDF格式</span>
<span @click="reback">信息填报</span>
<span @click="goBackprev">关闭</span>
<!-- <div ><span @click="goBackprev">返回</span> -->
......
......@@ -397,7 +397,7 @@ const server = {
})
},
getExcel(id){
return axios( assess + '/evaluation/in/excel/' + id,{
return axios( assessma + '/evaluation/in/excel/' + id,{
method:'get'
})
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论