Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
Y
yn-science-front
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
徐俊
yn-science-front
Commits
e87de6fa
Commit
e87de6fa
authored
Dec 30, 2024
by
wangxl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
33333
parent
f18fefd0
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1878 additions
and
1728 deletions
+1878
-1728
index.js
src/router/index.js
+6
-7
Index.vue
src/views/audit/project/Index.vue
+0
-4
final.vue
src/views/audit/project/final.vue
+0
-4
Index.vue
src/views/report/project/Index.vue
+0
-7
Index.vue
src/views/report/task/Index.vue
+44
-103
taskCreate.vue
src/views/report/task/components/taskCreate.vue
+156
-0
taskEdit.vue
src/views/report/task/components/taskEdit.vue
+817
-433
taskFileEdit.vue
src/views/report/task/components/taskFileEdit.vue
+0
-245
taskFileInfo.vue
src/views/report/task/components/taskFileInfo.vue
+0
-162
taskInfo.vue
src/views/report/task/components/taskInfo.vue
+692
-494
taskView.vue
src/views/report/task/components/taskView.vue
+163
-72
projectTask.vue
src/views/report/task/projectTask.vue
+0
-197
No files found.
src/router/index.js
View file @
e87de6fa
...
@@ -113,13 +113,12 @@ export const routes = [
...
@@ -113,13 +113,12 @@ export const routes = [
hidden
:
false
,
hidden
:
false
,
children
:
[
children
:
[
{
path
:
'/report/project'
,
name
:
'项目申报'
,
component
:
()
=>
import
(
'@/views/report/project/Index.vue'
),
meta
:
{
title
:
'项目申报'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/report/project'
,
name
:
'项目申报'
,
component
:
()
=>
import
(
'@/views/report/project/Index.vue'
),
meta
:
{
title
:
'项目申报'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/report/task'
,
name
:
'任务书填报1'
,
component
:
()
=>
import
(
'@/views/report/task/Index.vue'
),
meta
:
{
title
:
'任务书填报1'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/report/task'
,
name
:
'合同书上报'
,
component
:
()
=>
import
(
'@/views/report/task/Index.vue'
),
meta
:
{
title
:
'合同书上报'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/report/projectTask'
,
name
:
'任务书填报2'
,
component
:
()
=>
import
(
'@/views/report/task/projectTask.vue'
),
meta
:
{
title
:
'任务书填报2'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/report/check'
,
name
:
'中期考核上报'
,
component
:
()
=>
import
(
'@/views/report/check/Index.vue'
),
meta
:
{
title
:
'中期考核上报'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/report/check'
,
name
:
'中期考核填报'
,
component
:
()
=>
import
(
'@/views/report/check/Index.vue'
),
meta
:
{
title
:
'中期考核填报'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/report/conclusion'
,
name
:
'项目结题'
,
component
:
()
=>
import
(
'@/views/conclusion/index.vue'
),
meta
:
{
title
:
'项目结题'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/report/conclusion'
,
name
:
'项目结题'
,
component
:
()
=>
import
(
'@/views/conclusion/index.vue'
),
meta
:
{
title
:
'项目结题'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/project/create'
,
name
:
'项目创建'
,
component
:
()
=>
import
(
'@/views/report/project/components/projectCreate'
),
meta
:
{
title
:
'项目创建'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/project/create'
,
name
:
'项目创建'
,
component
:
()
=>
import
(
'@/views/report/project/components/projectCreate'
),
meta
:
{
title
:
'项目创建'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/query/project'
,
name
:
'项目申报查询1'
,
component
:
()
=>
import
(
'@/views/query/project/Index.vue'
),
meta
:
{
title
:
'项目申报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/query/project'
,
name
:
'项目申报查询1'
,
component
:
()
=>
import
(
'@/views/query/project/Index.vue'
),
meta
:
{
title
:
'项目申报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/query/task'
,
name
:
'
任务书上报查询1'
,
component
:
()
=>
import
(
'@/views/query/task/Index.vue'
),
meta
:
{
title
:
'任务书上报
查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/query/task'
,
name
:
'
合同书查询1'
,
component
:
()
=>
import
(
'@/views/query/task/Index.vue'
),
meta
:
{
title
:
'合同书
查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/query/check'
,
name
:
'中期考核上报查询1'
,
component
:
()
=>
import
(
'@/views/query/check/Index.vue'
),
meta
:
{
title
:
'中期考核上报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/query/check'
,
name
:
'中期考核上报查询1'
,
component
:
()
=>
import
(
'@/views/query/check/Index.vue'
),
meta
:
{
title
:
'中期考核上报查询'
,
icon
:
''
,
noCache
:
true
}
},
]
]
},
},
...
@@ -133,7 +132,7 @@ export const routes = [
...
@@ -133,7 +132,7 @@ export const routes = [
{
path
:
'/audit/project'
,
name
:
'项目审核'
,
component
:
()
=>
import
(
'@/views/audit/project/Index.vue'
),
meta
:
{
title
:
'项目审核'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/project'
,
name
:
'项目审核'
,
component
:
()
=>
import
(
'@/views/audit/project/Index.vue'
),
meta
:
{
title
:
'项目审核'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/preliminary'
,
name
:
'项目预审'
,
component
:
()
=>
import
(
'@/views/audit/project/Index.vue'
),
meta
:
{
title
:
'项目预审'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/preliminary'
,
name
:
'项目预审'
,
component
:
()
=>
import
(
'@/views/audit/project/Index.vue'
),
meta
:
{
title
:
'项目预审'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/final'
,
name
:
'项目终审'
,
component
:
()
=>
import
(
'@/views/audit/project/final.vue'
),
meta
:
{
title
:
'项目审核'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/final'
,
name
:
'项目终审'
,
component
:
()
=>
import
(
'@/views/audit/project/final.vue'
),
meta
:
{
title
:
'项目审核'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/taskAudit'
,
name
:
'
任务书审核'
,
component
:
()
=>
import
(
'@/views/audit/task/Index.vue'
),
meta
:
{
title
:
'任务
书审核'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/taskAudit'
,
name
:
'
合同书审核'
,
component
:
()
=>
import
(
'@/views/audit/task/Index.vue'
),
meta
:
{
title
:
'合同
书审核'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/checkAudit'
,
name
:
'中期考核表审核'
,
component
:
()
=>
import
(
'@/views/audit/check/Index.vue'
),
meta
:
{
title
:
'中期考核表审核'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/audit/checkAudit'
,
name
:
'中期考核表审核'
,
component
:
()
=>
import
(
'@/views/audit/check/Index.vue'
),
meta
:
{
title
:
'中期考核表审核'
,
icon
:
''
,
noCache
:
true
}
},
// { path: '/peAssign', name: '项目组分配', component: () => import('@/views/peAssign/index.vue'), meta: { title: '项目分配', icon: '', noCache: true } },
// { path: '/peAssign', name: '项目组分配', component: () => import('@/views/peAssign/index.vue'), meta: { title: '项目分配', icon: '', noCache: true } },
{
path
:
'/peAssign'
,
name
:
'项目组分配1'
,
component
:
()
=>
import
(
'@/views/peAssign/projAssign.vue'
),
meta
:
{
title
:
'项目分配'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/peAssign'
,
name
:
'项目组分配1'
,
component
:
()
=>
import
(
'@/views/peAssign/projAssign.vue'
),
meta
:
{
title
:
'项目分配'
,
icon
:
''
,
noCache
:
true
}
},
...
@@ -217,7 +216,7 @@ export const routes = [
...
@@ -217,7 +216,7 @@ export const routes = [
hidden
:
false
,
hidden
:
false
,
children
:
[
children
:
[
{
path
:
'/statistic/project'
,
name
:
'项目申报查询'
,
component
:
()
=>
import
(
'@/views/statistic/project/Index.vue'
),
meta
:
{
title
:
'项目申报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/statistic/project'
,
name
:
'项目申报查询'
,
component
:
()
=>
import
(
'@/views/statistic/project/Index.vue'
),
meta
:
{
title
:
'项目申报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/statistic/task'
,
name
:
'
任务书上报查询'
,
component
:
()
=>
import
(
'@/views/statistic/task/Index.vue'
),
meta
:
{
title
:
'任务
书上报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/statistic/task'
,
name
:
'
合同书上报查询'
,
component
:
()
=>
import
(
'@/views/statistic/task/Index.vue'
),
meta
:
{
title
:
'合同
书上报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/statistic/check'
,
name
:
'中期考核上报查询'
,
component
:
()
=>
import
(
'@/views/statistic/check/Index.vue'
),
meta
:
{
title
:
'中期考核上报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/statistic/check'
,
name
:
'中期考核上报查询'
,
component
:
()
=>
import
(
'@/views/statistic/check/Index.vue'
),
meta
:
{
title
:
'中期考核上报查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/expert/evaluationQuery'
,
name
:
'评分项目查询'
,
component
:
()
=>
import
(
'@/views/evaluation/query.vue'
),
meta
:
{
title
:
'评分项目查询'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/expert/evaluationQuery'
,
name
:
'评分项目查询'
,
component
:
()
=>
import
(
'@/views/evaluation/query.vue'
),
meta
:
{
title
:
'评分项目查询'
,
icon
:
''
,
noCache
:
true
}
},
]
]
...
@@ -245,7 +244,7 @@ export const routes = [
...
@@ -245,7 +244,7 @@ export const routes = [
hidden
:
false
,
hidden
:
false
,
children
:
[
children
:
[
{
path
:
'/timeSet/projectTimeSet'
,
name
:
'申报时间设置'
,
component
:
()
=>
import
(
'@/views/timeSet/projectTimeSet/Index.vue'
),
meta
:
{
title
:
'申报时间设置'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/timeSet/projectTimeSet'
,
name
:
'申报时间设置'
,
component
:
()
=>
import
(
'@/views/timeSet/projectTimeSet/Index.vue'
),
meta
:
{
title
:
'申报时间设置'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/timeSet/taskTimeSet'
,
name
:
'
任务书时间设置'
,
component
:
()
=>
import
(
'@/views/timeSet/taskTimeSet/Index.vue'
),
meta
:
{
title
:
'任务
书时间设置'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/timeSet/taskTimeSet'
,
name
:
'
合同书时间设置'
,
component
:
()
=>
import
(
'@/views/timeSet/taskTimeSet/Index.vue'
),
meta
:
{
title
:
'合同
书时间设置'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/timeSet/checkTimeSet'
,
name
:
'中期考核时间设置'
,
component
:
()
=>
import
(
'@/views/timeSet/checkTimeSet/Index.vue'
),
meta
:
{
title
:
'中期考核时间设置'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/timeSet/checkTimeSet'
,
name
:
'中期考核时间设置'
,
component
:
()
=>
import
(
'@/views/timeSet/checkTimeSet/Index.vue'
),
meta
:
{
title
:
'中期考核时间设置'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/setting/batch'
,
name
:
'申报批次设置'
,
component
:
()
=>
import
(
'@/views/timeSet/batch/Index.vue'
),
meta
:
{
title
:
'申报批次设置'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/setting/batch'
,
name
:
'申报批次设置'
,
component
:
()
=>
import
(
'@/views/timeSet/batch/Index.vue'
),
meta
:
{
title
:
'申报批次设置'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/setting/count'
,
name
:
'申报名额配比'
,
component
:
()
=>
import
(
'@/views/projAcountSet/projAcountSet.vue'
),
meta
:
{
title
:
'申报名额配比管理'
,
icon
:
''
,
noCache
:
true
}
},
{
path
:
'/setting/count'
,
name
:
'申报名额配比'
,
component
:
()
=>
import
(
'@/views/projAcountSet/projAcountSet.vue'
),
meta
:
{
title
:
'申报名额配比管理'
,
icon
:
''
,
noCache
:
true
}
},
...
...
src/views/audit/project/Index.vue
View file @
e87de6fa
...
@@ -57,9 +57,6 @@
...
@@ -57,9 +57,6 @@
<a-modal
v-model=
"visibleView"
v-if=
"visibleView"
title=
"项目详情"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<a-modal
v-model=
"visibleView"
v-if=
"visibleView"
title=
"项目详情"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<project-view
v-model=
"objectId"
@
close=
"closeWindow"
></project-view>
<project-view
v-model=
"objectId"
@
close=
"closeWindow"
></project-view>
</a-modal>
</a-modal>
<a-modal
v-model=
"taskFileInfoView"
title=
"项目任务书"
:width=
"'60%'"
:maskClosable=
"false"
:footer=
"null"
destroyOnClose
class=
"sc_modal"
>
<task-file-info
v-model=
"selectProjId"
@
close=
"closeTaskFileInfoWindow"
/>
</a-modal>
</div>
</div>
</template>
</template>
...
@@ -70,7 +67,6 @@ import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/
...
@@ -70,7 +67,6 @@ import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/
import
audit
from
'@/views/audit/project/audit'
import
audit
from
'@/views/audit/project/audit'
import
batchAudit
from
'@/views/audit/project/batchAudit'
import
batchAudit
from
'@/views/audit/project/batchAudit'
import
projectView
from
'@/views/report/project/components/projectView'
import
projectView
from
'@/views/report/project/components/projectView'
import
taskFileInfo
from
'@/views/report/task/components/taskFileInfo'
export
default
{
export
default
{
name
:
"projectAudit"
,
name
:
"projectAudit"
,
...
...
src/views/audit/project/final.vue
View file @
e87de6fa
...
@@ -79,9 +79,6 @@
...
@@ -79,9 +79,6 @@
<a-modal
v-model=
"visibleView"
v-if=
"visibleView"
title=
"项目详情"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<a-modal
v-model=
"visibleView"
v-if=
"visibleView"
title=
"项目详情"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<project-view
v-model=
"objectId"
@
close=
"closeWindow"
></project-view>
<project-view
v-model=
"objectId"
@
close=
"closeWindow"
></project-view>
</a-modal>
</a-modal>
<a-modal
v-model=
"taskFileInfoView"
title=
"查看项目任务书"
:width=
"'60%'"
:maskClosable=
"false"
:footer=
"null"
destroyOnClose
class=
"sc_modal"
>
<task-file-info
v-model=
"ProjId"
@
close=
"() => this.taskFileInfoView = false"
/>
</a-modal>
<a-modal
v-model=
"visibleEvaluationView"
title=
"专家评分"
width=
"90%"
:dialog-style=
"{ top: '8%' }"
:footer=
"null"
destroyOnClose
>
<a-modal
v-model=
"visibleEvaluationView"
title=
"专家评分"
width=
"90%"
:dialog-style=
"{ top: '8%' }"
:footer=
"null"
destroyOnClose
>
<score-view
v-model=
"assignId"
@
close=
"() => this.visibleEvaluationView = false"
/>
<score-view
v-model=
"assignId"
@
close=
"() => this.visibleEvaluationView = false"
/>
</a-modal>
</a-modal>
...
@@ -101,7 +98,6 @@ import audit from '@/views/audit/project/audit'
...
@@ -101,7 +98,6 @@ import audit from '@/views/audit/project/audit'
import
batchAudit
from
'@/views/audit/project/batchAudit'
import
batchAudit
from
'@/views/audit/project/batchAudit'
import
projectView
from
'@/views/report/project/components/projectView'
import
projectView
from
'@/views/report/project/components/projectView'
import
unitTreeSelect
from
'@/views/components/common/unitTreeSelect'
import
unitTreeSelect
from
'@/views/components/common/unitTreeSelect'
import
taskFileInfo
from
'@/views/report/task/components/taskFileInfo'
import
scoreView
from
'@/views/evaluation/components/scoreView'
import
scoreView
from
'@/views/evaluation/components/scoreView'
export
default
{
export
default
{
...
...
src/views/report/project/Index.vue
View file @
e87de6fa
...
@@ -10,8 +10,6 @@
...
@@ -10,8 +10,6 @@
<a-form-item>
<a-form-item>
<a-button
type=
"primary"
icon=
"search"
@
click=
"search"
>
搜索
</a-button>
<a-button
type=
"primary"
icon=
"search"
@
click=
"search"
>
搜索
</a-button>
<a-button
icon=
"reload"
style=
"margin-left: 10px"
@
click=
"reset"
class=
"bt-normal"
>
重置
</a-button>
<a-button
icon=
"reload"
style=
"margin-left: 10px"
@
click=
"reset"
class=
"bt-normal"
>
重置
</a-button>
<!--
<a-button
type=
"primary"
style=
"margin-left: 10px"
@
click=
"FileDownload"
icon=
"download"
>
项目合同书模板下载
</a-button>
-->
<!--
<a-button
icon=
"primary"
style=
"margin-left: 10px"
@
click=
"FileView"
>
查看
</a-button>
-->
</a-form-item>
</a-form-item>
</a-form>
</a-form>
<div
style=
"width:100%;margin-bottom: 8px;"
>
<div
style=
"width:100%;margin-bottom: 8px;"
>
...
@@ -19,8 +17,6 @@
...
@@ -19,8 +17,6 @@
<btn-group
:data=
"tabDate"
:itemCount=
"itemCount"
v-model=
"activekey"
@
change=
"callback"
/>
<btn-group
:data=
"tabDate"
:itemCount=
"itemCount"
v-model=
"activekey"
@
change=
"callback"
/>
</div>
</div>
<div
style=
"display: inline-block;;width:50%;text-align: right;"
>
<div
style=
"display: inline-block;;width:50%;text-align: right;"
>
<!--
<a-button
type=
"primary"
@
click=
"projectKPI"
icon=
"download"
>
绩效指标表
</a-button>
-->
<!--
<a-button
type=
"primary"
@
click=
"createMember"
>
新建项目组成员
</a-button>
-->
<a-button
type=
"primary"
style=
"margin-right:8px;"
v-if=
"(display && isButten)"
@
click=
"createProject"
>
新建项目
</a-button>
<a-button
type=
"primary"
style=
"margin-right:8px;"
v-if=
"(display && isButten)"
@
click=
"createProject"
>
新建项目
</a-button>
<a-button
type=
"primary"
@
click=
"exportData"
icon=
"download"
>
Excel
</a-button>
<a-button
type=
"primary"
@
click=
"exportData"
icon=
"download"
>
Excel
</a-button>
</div>
</div>
...
@@ -56,9 +52,6 @@
...
@@ -56,9 +52,6 @@
<a-modal
v-model=
"visibleFileView"
title=
"查看"
width=
"1000px"
:dialog-style=
"{ top: '10%' }"
:footer=
"null"
destroyOnClose
:maskClosable=
"false"
>
<a-modal
v-model=
"visibleFileView"
title=
"查看"
width=
"1000px"
:dialog-style=
"{ top: '10%' }"
:footer=
"null"
destroyOnClose
:maskClosable=
"false"
>
<preview-file
v-model=
"realurl.downloadUrl"
:fileName=
"realurl.fileName"
></preview-file>
<preview-file
v-model=
"realurl.downloadUrl"
:fileName=
"realurl.fileName"
></preview-file>
</a-modal>
</a-modal>
<a-modal
v-model=
"projectKPIView"
title=
"查看项目KPI"
width=
"80%"
:dialog-style=
"{ top: '10%' }"
:footer=
"null"
destroyOnClose
:maskClosable=
"false"
>
<project-kpi></project-kpi>
</a-modal>
<a-modal
v-model=
"visiblePersonEdit"
v-if=
"visiblePersonEdit"
title=
"请先完善个人信息!"
width=
"700px"
:dialog-style=
"{ top: '12%' }"
:footer=
"null"
destroyOnClose
:maskClosable=
"false"
>
<a-modal
v-model=
"visiblePersonEdit"
v-if=
"visiblePersonEdit"
title=
"请先完善个人信息!"
width=
"700px"
:dialog-style=
"{ top: '12%' }"
:footer=
"null"
destroyOnClose
:maskClosable=
"false"
>
<person-info-edit
@
sub=
"personSave"
/>
<person-info-edit
@
sub=
"personSave"
/>
</a-modal>
</a-modal>
...
...
src/views/report/task/Index.vue
View file @
e87de6fa
<
template
>
<
template
>
<div
class=
"app-content"
>
<div
class=
"app-content"
>
<a-tabs
:tab-position=
"'top'"
v-model=
"activeTab"
@
change=
"callback"
>
<a-form
:form=
"form"
:model=
"searchForm"
layout=
"inline"
class=
"search_form"
>
<a-tab-pane
key=
"1"
:tab=
"'未上报任务书('+panes.count1+')'"
>
<a-form-item>
</a-tab-pane>
<a-input
placeholder=
"项目名称"
v-model=
"searchForm.projName"
:maxLength=
"100"
style=
"width: 180px"
/>
<a-tab-pane
key=
"2"
:tab=
"'返回修改任务书('+panes.count2+')'"
>
</a-tab-pane>
<a-tab-pane
key=
"3"
:tab=
"'已上报任务书('+panes.count3+')'"
>
</a-tab-pane>
<a-tab-pane
key=
"4"
:tab=
"'所有任务书('+panes.count4+')'"
>
</a-tab-pane>
</a-tabs>
<a-form
layout=
"horizontal"
:form=
"form"
:model=
"searchForm"
>
<a-row
:gutter=
"30"
>
<a-col
:span=
"8"
>
<a-form-item
label=
"项目名称"
>
<a-input
placeholder=
"项目名称"
v-model=
"searchForm.projName"
:maxLength=
"100"
style=
"width: 272px"
/>
</a-form-item>
</a-col>
<a-col
:span=
"8"
>
<a-form-item
label=
"项目编号"
>
<a-input
placeholder=
"项目编号"
v-model=
"searchForm.projNo"
:maxLength=
"100"
style=
"width: 272px"
/>
</a-form-item>
</a-form-item>
</a-col>
<a-col
:span=
"8"
>
<a-form-item>
<a-form-item>
<a-button
type=
"primary"
icon=
"search"
@
click=
"searchList"
>
搜索
</a-button>
<a-input
placeholder=
"项目编号"
v-model=
"searchForm.projNo"
:maxLength=
"100"
style=
"width: 180px"
/>
<a-button
icon=
"reload"
style=
"margin-left: 10px"
@
click=
"searchFormReset"
class=
"bt-normal"
>
重置
</a-button>
</a-form-item>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"30"
>
<a-form-item>
<a-form-item>
<a-button
type=
"primary"
style=
"margin-right:8px;"
v-if=
"(display&&isButten)"
@
click=
"createTaskBook"
>
填写任务书
</a-button>
<a-button
type=
"primary"
icon=
"search"
@
click=
"search"
>
搜索
</a-button>
<a-button
type=
"primary"
@
click=
"exportData"
>
导出Excel
</a-button>
<a-button
icon=
"reload"
style=
"margin-left: 10px"
@
click=
"reset"
class=
"bt-normal"
>
重置
</a-button>
<span
:style=
"
{color:'#DC143C'}"> 填报时间:
{{
description
}}
</span>
</a-form-item>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-form>
<div
style=
"width:100%;margin-bottom: 8px;"
>
<div
style=
"display: inline-block;;width:50%"
>
<btn-group
:data=
"tabDate"
:itemCount=
"itemCount"
v-model=
"activekey"
@
change=
"callback"
/>
</div>
<div
style=
"display: inline-block;;width:50%;text-align: right;"
>
<a-button
type=
"primary"
style=
"margin-right:8px;"
v-if=
"isButten"
@
click=
"createProject"
>
新建项目
</a-button>
<a-button
type=
"primary"
@
click=
"exportData"
icon=
"download"
>
Excel
</a-button>
</div>
</div>
<a-divider
style=
"height: 1px; background-color: #e8e8e8;"
/>
<span
class=
"form-description"
>
※填报时间:
{{
description
}}
</span>
<a-table
:dataSource=
"tableData"
:columns=
"columns"
rowKey=
"projId"
:pagination=
"false"
:loading=
"loading"
:row-selection=
"
{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio' }">
<a-table
:dataSource=
"tableData"
:columns=
"columns"
rowKey=
"projId"
:pagination=
"false"
:loading=
"loading"
:row-selection=
"
{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio' }">
<template
slot=
"testStateName"
slot-scope=
"record"
>
<template
slot=
"testStateName"
slot-scope=
"record"
>
<span
v-if=
"record"
>
<span
v-if=
"record"
>
...
@@ -55,10 +39,10 @@
...
@@ -55,10 +39,10 @@
</
template
>
</
template
>
</a-table>
</a-table>
<a-pagination
v-if=
"pagination.total > 0"
:total=
"pagination.total"
show-size-changer
show-quick-jumper
v-model=
"pagination.pageIndex"
:page-size=
"pagination.pageSize"
:page-size-options=
"pagination.pageSizeOptions"
@
showSizeChange=
"showSizeChange"
@
change=
"change"
:showTotal=
"() => `共 ${pagination.total} 条`"
/>
<a-pagination
v-if=
"pagination.total > 0"
:total=
"pagination.total"
show-size-changer
show-quick-jumper
v-model=
"pagination.pageIndex"
:page-size=
"pagination.pageSize"
:page-size-options=
"pagination.pageSizeOptions"
@
showSizeChange=
"showSizeChange"
@
change=
"change"
:showTotal=
"() => `共 ${pagination.total} 条`"
/>
<a-modal
v-model=
"visibleEdit"
:title=
"
modalTitle
"
:width=
"'80%'"
:dialog-style=
"{ top: '5%' }"
:maskClosable=
"false"
:footer=
"null"
destroyOnClose
class=
"sc_modal"
:centered=
"true"
>
<a-modal
v-model=
"visibleEdit"
:title=
"
'创建/修改'
"
:width=
"'80%'"
:dialog-style=
"{ top: '5%' }"
:maskClosable=
"false"
:footer=
"null"
destroyOnClose
class=
"sc_modal"
:centered=
"true"
>
<test-edit
v-model=
"selectProjId"
@
close=
"closeWindow"
/>
<test-edit
v-model=
"selectProjId"
@
close=
"closeWindow"
/>
</a-modal>
</a-modal>
<a-modal
v-model=
"visibleView"
title=
"查看
任务
书"
:width=
"'80%'"
:dialog-style=
"{ top: '5%' }"
:maskClosable=
"false"
:footer=
"null"
destroyOnClose
class=
"sc_modal"
>
<a-modal
v-model=
"visibleView"
title=
"查看
合同
书"
:width=
"'80%'"
:dialog-style=
"{ top: '5%' }"
:maskClosable=
"false"
:footer=
"null"
destroyOnClose
class=
"sc_modal"
>
<test-view
v-model=
"selectProjId"
@
close=
"closeWindow"
/>
<test-view
v-model=
"selectProjId"
@
close=
"closeWindow"
/>
</a-modal>
</a-modal>
</div>
</div>
...
@@ -89,30 +73,30 @@ export default {
...
@@ -89,30 +73,30 @@ export default {
data
()
{
data
()
{
return
{
return
{
// 选项卡
// 选项卡
activeTab
:
'1'
,
activekey
:
'1'
,
panes
:
{
count1
:
0
,
count2
:
0
,
count3
:
0
,
count4
:
0
,
count5
:
0
,
},
tabDate
:
[
{
key
:
"1"
,
tab
:
"未上报"
},
{
key
:
"2"
,
tab
:
"返回修改"
},
{
key
:
"3"
,
tab
:
"已上报"
},
{
key
:
"4"
,
tab
:
"所有"
},
],
itemCount
:
[
0
,
0
,
0
,
0
,
0
],
form
:
this
.
$form
.
createForm
(
this
,
{
name
:
'advanced_search'
}),
form
:
this
.
$form
.
createForm
(
this
,
{
name
:
'advanced_search'
}),
searchForm
:
{
projName
:
''
,
projNo
:
''
,
testState
:
'1'
,
reportYear
:
null
},
searchForm
:
{
projName
:
''
,
projNo
:
''
,
testState
:
'1'
,
reportYear
:
null
},
tableData
:
[],
tableData
:
[],
columns
:
[],
columns
:
[],
pagination
:
{
pagination
:
{
pageIndex
:
1
,
pageSize
:
this
.
$defaultPageSize
,
total
:
0
,
pageSizeOptions
:
this
.
$defaultPageSizeOptions
,
},
pageIndex
:
1
,
pageSize
:
this
.
$defaultPageSize
,
total
:
0
,
pageSizeOptions
:
this
.
$defaultPageSizeOptions
,
},
loading
:
false
,
loading
:
false
,
// 弹窗
// 弹窗
visibleEdit
:
false
,
visibleEdit
:
false
,
visibleView
:
false
,
visibleView
:
false
,
modalTitle
:
''
,
selectProjId
:
null
,
selectProjId
:
null
,
selectTaskId
:
null
,
selectTaskId
:
null
,
selectedRowKeys
:
[],
selectedRowKeys
:
[],
selectTestState
:
null
,
selectTestState
:
null
,
id
:
null
,
isButten
:
false
,
isButten
:
false
,
display
:
false
,
description
:
''
,
description
:
''
}
}
},
},
components
:
{
components
:
{
...
@@ -140,12 +124,7 @@ export default {
...
@@ -140,12 +124,7 @@ export default {
this
.
getCount
()
this
.
getCount
()
this
.
loading
=
true
this
.
loading
=
true
let
pars
=
isEmptyParams
(
this
.
searchForm
)
let
pars
=
isEmptyParams
(
this
.
searchForm
)
let
par
=
{
let
par
=
{
...
pars
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
}
...
pars
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
}
this
.
$api
.
taskReport
.
getListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
taskReport
.
getListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
if
(
data
)
{
const
{
dataList
=
[],
total
=
0
}
=
data
const
{
dataList
=
[],
total
=
0
}
=
data
...
@@ -163,27 +142,17 @@ export default {
...
@@ -163,27 +142,17 @@ export default {
if
(
data
)
{
if
(
data
)
{
this
.
panes
=
data
this
.
panes
=
data
}
}
}).
catch
(()
=>
{
}).
catch
(()
=>
{
})
})
},
searchFormReset
()
{
this
.
searchForm
=
{
projName
:
''
,
projNo
:
''
,
}
},
},
search
List
()
{
search
()
{
this
.
pagination
.
pageIndex
=
1
this
.
pagination
.
pageIndex
=
1
this
.
getListByPage
()
this
.
getListByPage
()
},
},
onSelectChange
(
selectedRowKeys
,
selectedRows
)
{
reset
()
{
this
.
selectedRowKeys
=
selectedRowKeys
this
.
searchForm
.
projName
=
null
this
.
selectProjId
=
selectedRows
[
0
].
projId
this
.
searchForm
.
projNo
=
null
this
.
selectTaskId
=
selectedRows
[
0
].
id
this
.
pagination
.
pageIndex
=
1
this
.
selectTestState
=
selectedRows
[
0
].
testState
this
.
getListByPage
()
},
submitForm
()
{
},
},
change
()
{
change
()
{
this
.
getListByPage
()
this
.
getListByPage
()
...
@@ -193,6 +162,12 @@ export default {
...
@@ -193,6 +162,12 @@ export default {
this
.
pagination
.
pageSize
=
pageSize
this
.
pagination
.
pageSize
=
pageSize
this
.
getListByPage
()
this
.
getListByPage
()
},
},
onSelectChange
(
selectedRowKeys
,
selectedRows
)
{
this
.
selectedRowKeys
=
selectedRowKeys
this
.
selectProjId
=
selectedRows
[
0
].
projId
this
.
selectTaskId
=
selectedRows
[
0
].
id
this
.
selectTestState
=
selectedRows
[
0
].
testState
},
createTaskBook
()
{
createTaskBook
()
{
if
(
this
.
selectProjId
==
null
)
{
if
(
this
.
selectProjId
==
null
)
{
this
.
$message
.
error
(
'请选择项目'
)
this
.
$message
.
error
(
'请选择项目'
)
...
@@ -202,8 +177,6 @@ export default {
...
@@ -202,8 +177,6 @@ export default {
this
.
$message
.
error
(
'任务书已创建'
)
this
.
$message
.
error
(
'任务书已创建'
)
return
return
}
}
this
.
modalTitle
=
'创建任务书'
this
.
selectTaskId
=
''
this
.
selectTaskId
=
''
this
.
visibleEdit
=
true
this
.
visibleEdit
=
true
},
},
...
@@ -213,7 +186,6 @@ export default {
...
@@ -213,7 +186,6 @@ export default {
this
.
selectTaskId
=
record
.
id
this
.
selectTaskId
=
record
.
id
this
.
visibleView
=
true
this
.
visibleView
=
true
}
else
if
(
type
===
'edit'
)
{
}
else
if
(
type
===
'edit'
)
{
this
.
modalTitle
=
'修改任务书'
this
.
selectProjId
=
record
.
projId
this
.
selectProjId
=
record
.
projId
this
.
visibleEdit
=
true
this
.
visibleEdit
=
true
}
else
{
}
else
{
...
@@ -245,36 +217,6 @@ export default {
...
@@ -245,36 +217,6 @@ export default {
}
}
},
},
watch
:
{
watch
:
{
activeTab
:
{
handler
(
value
)
{
if
(
value
===
'1'
)
{
this
.
display
=
true
;
this
.
columns
=
columns
.
filter
(
e
=>
e
.
tabKey
!==
'1'
)
return
}
this
.
display
=
false
;
this
.
columns
=
columns
.
filter
(
e
=>
e
.
tabKey
!==
'2'
)
},
immediate
:
true
}
}
}
}
}
</
script
>
</
script
>
<
style
scoped
lang=
"less"
>
.app-content {
border: 1px solid #e8e8e8;
padding: 0px 10px 10px 10px;
}
.ant-form-item {
display: flex !important;
}
.ant-form-item-control-wrapper {
flex: 1 !important;
width: 100% !important;
}
.ant-pagination {
float: inherit !important;
margin-top: 15px;
}
</
style
>
\ No newline at end of file
src/views/report/task/components/taskCreate.vue
0 → 100644
View file @
e87de6fa
<
template
>
<div
class=
"app-content"
style=
"height: 76vh;overflow: auto;"
>
<a-spin
:spinning=
"loading"
style=
"width: 100%;height: 100%;"
>
<div
class=
"page-steps"
>
<a-steps
size=
"small"
:current=
"current"
@
change=
"onChange"
>
<a-step
:status=
"item.status"
v-for=
"(item,index) in stepsArray"
:key=
"index+'stepsArray'"
:title=
"item.title"
/>
</a-steps>
</div>
<div
class=
"page-content"
>
<project-edit
v-model=
"value"
@
close=
"closeWindow"
@
load=
"onLoad"
@
onStepChange=
"onStepChange"
:completeStatus
.
sync=
completeStatus
:stepsArray
.
sync=
"stepsArray"
ref=
"projCreate"
></project-edit>
</div>
<div
class=
"page-footer"
>
<a-button
v-if=
"currSteps > 0"
style=
"margin-left: 40px"
type=
"primary"
@
click=
"prev"
>
上一步
</a-button>
<a-button
style=
"margin-left: 40px"
type=
"primary"
@
click=
"save"
>
保 存
</a-button>
<a-button
v-if=
"currSteps
<
stepsArray
.
length
-
1
"
style=
"margin-left: 40px"
type=
"primary"
@
click=
"next"
>
下一步
</a-button>
<a-button
v-if=
"currSteps == stepsArray.length - 1"
style=
"margin-left: 40px"
type=
"primary"
@
click=
"submit"
>
完成填写
</a-button>
</div>
</a-spin>
</div>
</
template
>
<
script
>
import
{
getType
}
from
'@/views/utils/auth'
import
projectEdit
from
"@/views/report/project/components/edit/projectEdit"
import
projectEditKey
from
"@/views/report/project/components/keyProject/projectEdit"
export
default
{
name
:
"projectCreate"
,
components
:
{
projectEdit
,
projectEditKey
,
},
data
()
{
return
{
loading
:
false
,
projType
:
getType
()
==
"1"
,
current
:
10
,
currSteps
:
0
,
stepsArray
:
[
{
status
:
"process"
,
title
:
'基本信息'
,
showStatus
:
true
},
{
status
:
"wait"
,
title
:
'项目组成员及单位'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'经费预算及设备明细'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'阶段目标及课题设置'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'绩效指标'
,
showStatus
:
false
},
{
status
:
"wait"
,
title
:
'附件'
,
showStatus
:
false
}
],
completeStatus
:
"0,0,0,0,0,0"
}
},
props
:
{
value
:
{
type
:
String
,
default
:
()
=>
{
return
null
}
},
},
created
()
{
},
methods
:
{
stepsChange
(
e
)
{
debugger
this
.
currSteps
=
e
this
.
changeSteps
(
this
.
currSteps
)
},
next
()
{
this
.
$refs
.
projCreate
.
submit
(
this
.
currSteps
,
true
)
},
prev
()
{
this
.
currSteps
--
;
this
.
changeSteps
(
this
.
currSteps
)
},
onChange
(
e
)
{
if
(
e
!=
this
.
currSteps
)
{
var
arr
=
this
.
completeStatus
.
split
(
','
)
if
(
arr
[
e
]
==
"1"
)
{
this
.
loading
=
true
this
.
changeSteps
(
e
)
this
.
loading
=
false
}
else
{
this
.
$message
.
error
(
'所选步骤没填写完成,请填写当前步骤后点【下一步】跳转!'
)
}
}
},
onStepChange
(
e
)
{
this
.
completeStatus
=
e
.
state
this
.
changeSteps
(
e
.
step
)
},
changeSteps
(
e
)
{
this
.
currSteps
=
e
var
clone
=
[].
concat
(
this
.
stepsArray
)
clone
.
forEach
(
e
=>
{
e
.
showStatus
=
false
})
clone
[
e
].
showStatus
=
true
;
this
.
stepsArray
=
clone
this
.
getCompleteStatus
(
e
,
this
.
completeStatus
)
},
getCompleteStatus
(
step
,
completeStatus
)
{
var
arr
=
completeStatus
.
split
(
','
)
if
(
!!
arr
&&
arr
.
length
>
0
)
{
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
if
(
arr
[
i
]
==
"1"
)
{
this
.
stepsArray
[
i
].
status
=
"finish"
}
else
{
this
.
stepsArray
[
i
].
status
=
"wait"
}
}
this
.
stepsArray
[
step
].
status
=
"process"
}
},
save
()
{
this
.
$refs
.
projCreate
.
save
(
this
.
currSteps
)
},
submit
()
{
this
.
$refs
.
projCreate
.
submit
(
this
.
currSteps
,
false
)
},
closeWindow
(
value
)
{
this
.
$emit
(
'close'
,
value
)
},
onLoad
(
value
)
{
this
.
loading
=
value
},
},
}
</
script
>
<
style
scoped
lang=
"less"
>
::v-deep .ant-spin-container {
width: 100%;
height: 100%;
}
::-webkit-scrollbar {
width: 8px;
height: 6px;
}
.page-steps {
width: 100%;
height: 40px;
padding: 8px 20px 5px 20px;
background: rgb(248, 248, 248);
border: 1px 1px 0px 1px solid #e8e8e8;
}
.page-content {
width: 100%;
height: calc(100% - 80px);
overflow: auto;
}
.page-footer {
width: 100%;
height: 40px;
line-height: 40px;
background: rgb(248, 248, 248);
text-align: center;
}
</
style
>
src/views/report/task/components/taskEdit.vue
View file @
e87de6fa
<
template
>
<
template
>
<div
class=
"assignment-edit"
style=
"height: 70vh;overflow: auto;"
>
<div>
<a-form-model
ref=
"form"
:model=
"formData"
:rules=
"rules"
class=
"from-table"
>
<a-form-model
ref=
"form"
:model=
"formData"
:rules=
"rules"
style=
"border-top: 0px"
class=
"from-table font-line-space"
>
<div
v-if=
"stepsArray[0].showStatus"
>
<a-row>
<a-row>
<a-col
:span=
"24
"
>
<a-col
:span=
"24"
style=
"border-top: 0px;text-align: center;
"
>
<div
class=
"tb
-title"
>
<div
class=
"main
-title"
>
<span>
研究项目
</span>
<span>
项目基本情况
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
项目名称
</a-col>
<a-col
:span=
"22"
v-if=
"formData.projName != null"
>
{{
formData
.
projName
}}
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
>
<div
class=
"tb-title"
>
<div
class=
"tb-title"
>
<span>
第一承担单位
</span>
<span>
申请人信息
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
名称
<div
class=
"special-middle"
>
<div>
姓名
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
formData
.
appUnitName
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
<div>
{{
formData
.
appPersonName
}}
</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
联系电话
<div
class=
"special-middle"
>
<div>
性别
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
formData
.
linkTel
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
<div>
{{
formData
.
sex
}}
</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-row
>
<div
class=
"special-middle"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div>
出生日期
</div
>
地址
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
formData
.
linkAddress
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
{{
moment
(
formData
.
birthday
).
format
(
'YYYY-MM-DD'
)
}}
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
</a-row>
邮政编码
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
民族
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
formData
.
postcode
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
<div>
{{
formData
.
nationName
}}
</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-row
>
<div
class=
"special-middle"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div>
学位
</div
>
主管部门
</div>
</a-col>
</a-col>
<a-col
:span=
"22"
>
<a-col
:span=
"5"
>
{{
formData
.
authority
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
<div>
{{
formData
.
degreeName
}}
</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
</a-row>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<a-row>
<div>
职称
</div>
<a-col
:span=
"24"
>
</div>
<div
class=
"tb-title"
>
</a-col>
<span>
项目负责人
</span>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
{{
formData
.
titleName
}}
</a-form-model-item>
</div>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
姓名
<div
class=
"special-middle"
>
<div>
电话
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
formData
.
appPersonName
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
<div>
{{
formData
.
mobile
}}
</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
性别
<div
class=
"special-middle"
>
<div>
电子邮箱
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
formData
.
sex
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
<div>
{{
formData
.
email
}}
</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-row
>
<div
class=
"special-middle"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div
class=
"required"
>
每年工作时间(月)
</div
>
出生年
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
formData
.
birthYear
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item
prop=
"jobTime"
>
<a-input-number
v-model=
"formData.jobTime"
:min=
"0"
:max=
"12"
:step=
"1"
style=
"width: 100px"
/>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
</a-row>
联系电话
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
个人通讯地址
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"21"
>
{{
formData
.
mobile
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item
prop=
"address"
>
<a-input
v-model=
"formData.address"
placeholder=
"个人通讯地址(限50字)"
:maxLength=
"50"
style=
"width: 80%;"
/>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
学位
<div
class=
"special-middle"
>
<div>
工作单位
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"21"
>
{{
formData
.
degreeName
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item>
<div>
{{
formData
.
appUnitName
}}
</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
</a-row>
职称
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
主要研究领域
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"21"
>
{{
formData
.
titleName
}}
<div
class=
"special-middle"
>
<div>
<a-form-model-item
prop=
"mainResearchAreas"
>
<a-textarea
placeholder=
"主要研究领域(限500字)"
v-model=
"formData.mainResearchAreas"
:maxLength=
"500"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"24
"
>
<a-col
:span=
"24"
style=
"border-top: 0px
"
>
<div
class=
"tb-title"
>
<div
class=
"tb-title"
>
<span>
项目组
</span>
<span>
申请单位信息
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
type=
"flex"
>
<a-row>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
实施目标和主要内容
</div>
<div>
单位名称
</div>
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"20"
>
<a-form-model-item
prop=
"testContent"
>
<div
class=
"special-middle"
>
<a-textarea
placeholder=
"实施目标和主要内容"
v-model=
"formData.testContent"
:maxLength=
"400"
style=
"width: 80%;height: 160px;margin-top: 12px;"
/>
<div>
<a-form-model-item>
<div>
{{
formData
.
appUnitName
}}
</div>
</a-form-model-item>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"required special-middle"
>
预期成果形式
</div>
<div
class=
"special-middle"
>
<div
class=
"required"
>
联系人
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20
"
>
<a-col
:span=
"8
"
>
<a-form-model-item
prop=
"target
"
>
<div
class=
"special-middle
"
>
<div
style=
"display: flex;flex-wrap: wrap;line-height: 2.5;"
>
<div
>
<div
v-for=
"(item, index) in formData.target"
:key=
"index"
style=
"margin-right: 20px;
"
>
<a-form-model-item
prop=
"unitLinkName
"
>
<a-checkbox
:checked=
"item.checked"
:name=
"item.targetId"
@
change=
"onTargetChange(item)"
>
{{
item
.
targetName
}}
</a-checkbox
>
<a-input
placeholder=
"联系人(限20字)"
v-model=
"formData.unitLinkName"
:maxLength=
"20"
style=
"width:80%"
/
>
<
a-input-number
size=
"small"
:min=
"0"
:max=
"1000"
v-model=
"item.resultCount"
:disabled=
"!item.checked"
/
>
<
/a-form-model-item
>
</div>
</div>
</div>
</div>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"required"
>
总经费
</div>
<div
class=
"special-middle"
>
<div
class=
"required"
>
电话
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"8"
>
<a-form-model-item
prop=
"budgetCount"
>
<div
class=
"special-middle"
>
<a-input-number
:min=
"0"
:max=
"10000000"
v-model=
"formData.budgetCount"
style=
"width: 10%"
/>
(万元)
<div>
<a-form-model-item
prop=
"unitLinkMobile"
>
<a-input
placeholder=
"电话(限20字)"
v-model=
"formData.unitLinkMobile"
:maxLength=
"20"
style=
"width:80%"
/>
</a-form-model-item>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
<!--
<a-col
:span=
"4"
class=
"bg-gray"
>
</a-row>
<div
class=
"required"
>
市卫计委资助
</div>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
电子信箱
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"8"
>
<a-col
:span=
"8"
>
<a-form-model-item
prop=
"budgetGovCount"
>
<div
class=
"special-middle"
>
<a-input-number
:min=
"0"
:max=
"10000000"
v-model=
"formData.budgetGovCount"
style=
"width: 30%"
/>
(万元)
<div>
<a-form-model-item
prop=
"unitLinkEmail"
>
<a-input
placeholder=
"电子信箱(限50字)"
v-model=
"formData.unitLinkEmail"
:maxLength=
"50"
style=
"width:80%"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
--
>
</div
>
</a-row
>
</div
>
<a-row
>
</a-col
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"required"
>
起止日期
</div>
<div
class=
"special-middle"
>
<div
class=
"required"
>
传真
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"8"
>
<a-form-model-item
prop=
"startDate"
style=
"flex-basis: 30%;"
>
<div
class=
"special-middle"
>
<a-date-picker
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"formData.startDate"
style=
"width: 100%"
@
change=
"dateChange(formData)"
/>
<div>
</a-form-model-item>
<a-form-model-item
prop=
"unitLinkFax"
>
<span
style=
"margin: -12px 10px 0 10px;"
>
~
</span>
<a-input
placeholder=
"传真(限20字)"
v-model=
"formData.unitLinkFax"
:maxLength=
"20"
style=
"width:80%"
/>
<a-form-model-item
prop=
"endDate"
style=
"flex-basis: 30%;"
>
<a-date-picker
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"formData.endDate"
style=
"width: 100%"
@
change=
"dateChange(formData)"
/>
</a-form-model-item>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<!-- 项目合作单位 -->
<!--
<cooperative-units-edit
:cooperativeUnits
.
sync=
"formData.cooperativeUnits"
/>
-->
<a-row>
<a-row>
<a-col
:span=
"24
"
>
<a-col
:span=
"24"
style=
"border-top: 0px
"
>
<div
class=
"tb-title"
>
<div
class=
"tb-title"
>
<span>
一、项目要实现的目标和主要研发内容
</span>
<span>
项目基本情况
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
(一)项目要实现的目标
<div
class=
"special-middle"
>
</a-col>
<div
class=
"required"
>
项目名称
</div>
</a-row>
</div>
<a-row>
<a-col
:span=
"2"
class=
"bg-gray"
>
序号
</a-col>
<a-col
:span=
"20"
class=
"bg-gray"
>
内容
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"20"
>
操作
<a-form-model-item
prop=
"projName"
>
<a-input
placeholder=
"项目名称(限100字)"
v-model=
"formData.projName"
:maxLength=
"100"
style=
"width: 80%"
@
change=
"projNameChange"
/>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in formData.cont1"
:key=
"'cont1' + index"
>
<a-col
:span=
"2"
>
<a-row
type=
"flex"
>
(
{{
index
+
1
}}
)
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div
class=
"required"
>
学科代码
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"20"
>
<a-form-model-item
:prop=
"'cont1.' + index + '.contentInfo'"
:rules=
"
{ required: true, message: '内容不能为空' }
">
<a-form-model-item
prop=
"knowledgeId
"
>
<a-input
v-model=
"item.contentInfo"
:maxLength=
"200"
style=
"width: 90%;
"
/>
<cascader-select
v-model=
"formData.knowledgeId
"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"2"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"removeCont(item, 'cont1')"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</a-col>
</a-row>
</a-row>
<a-row
>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center;
"
>
<a-col
:span=
"4"
class=
"bg-gray
"
>
<a-button
type=
"dashed"
style=
"width: 50%"
@
click=
"addCont('cont1')
"
>
<div
class=
"special-middle
"
>
<a-icon
type=
"plus"
/>
添加
<div
class=
"required"
>
附注说明
</div>
</a-button
>
</div
>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"20"
>
<a-row
>
<a-form-model-item
prop=
"remark"
>
<a-col
:span=
"24"
>
<a-input
placeholder=
"附注说明(限300字)"
v-model=
"formData.remark"
:maxLength=
"300"
style=
"width: 80%"
/
>
(二)主要研发内容
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
序号
<div
class=
"special-middle"
>
<div
class=
"required"
>
项日开始时间
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<a-form-model-item
prop=
"startDate"
style=
"width:200px;display: inline-block;"
>
<a-date-picker
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"formData.startDate"
@
change=
"startDateChange"
style=
"width: 180px"
/>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"20"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
内容
<div
class=
"special-middle"
>
<div
class=
"required"
>
项目结束时间
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"8"
>
操作
<a-form-model-item
prop=
"endDate"
style=
"width:200px;display: inline-block;"
>
<a-date-picker
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"formData.endDate"
@
change=
"endDateChange"
style=
"width: 180px"
/>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in formData.cont2"
:key=
"'cont2' + index"
>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
(
{{
index
+
1
}}
)
<div
class=
"special-middle"
>
<div
class=
"required"
>
项目摘要(400字以内)
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"20"
>
<a-form-model-item
:prop=
"'cont2.' + index + '.contentInfo'"
:rules=
"
{ required: true, message: '内容不能为空' }
">
<a-form-model-item
prop=
"projAbstract
"
>
<a-input
v-model=
"item.contentInfo"
:maxLength=
"200"
style=
"width: 90%;
"
/>
<a-textarea
placeholder=
"项目摘要(限400字)"
v-model=
"formData.projAbstract"
:maxLength=
"400"
style=
"width: 80%; height: 160px; margin-top: 12px
"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"2"
>
</a-row>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"removeCont(item, 'cont2')"
>
<a-row
type=
"flex"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
<a-col
:span=
"4"
class=
"bg-gray"
>
</a-popconfirm>
<div
class=
"special-middle"
>
<div
class=
"required"
>
关键词
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<a-form-model-item
prop=
"projKeywords"
>
<a-input
placeholder=
"关键词(限100字)"
v-model=
"formData.projKeywords"
:maxLength=
"100"
style=
"width: 80%"
/>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"24"
style=
"text-align: center;
"
>
<a-col
:span=
"24"
style=
"border-top: 0px
"
>
<a-button
type=
"dashed"
style=
"width: 50%"
@
click=
"addCont('cont2')
"
>
<div
class=
"main-title
"
>
<a-icon
type=
"plus"
/>
添加
<span>
申请书正文
</span>
</a-button
>
</div
>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
type=
"flex"
>
<a-row>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
class=
"special-middle"
style=
"font-weight: bold;text-align: center;"
>
<a
:href=
"'/downloadFile/textTemplate.docx'"
download=
"申请书正文.docx"
>
<a-icon
type=
"download"
></a-icon>
<span
style=
"color:green;text-decoration:underline;font-size: 16px;"
>
正文模板下载
</span>
</a>
<span
style=
"color: red;margin-left: 42px;"
>
注:正文部分需要下载模版,填写完成后上传到系统中,格式 .doc,.docx,.pdf。
</span>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
>
<div
class=
"tb-title
"
>
<div
style=
"min-height:34px;line-height: 40px;text-align: center;
"
>
<span>
二、项目的考核指标
</span
>
<up-load
:isUpload=
"true"
:file
.
sync=
"formData"
:format=
"['doc', 'docx','pdf']"
message=
"请上传申请书正文"
/
>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
>
(一)主要技术及学术指标 (形成的专利、新技术、新产品、新装置、论文专著、软件等的数量、指标及其水平等)
<!--
<document-view
:fileUrl=
"formData.downloadUrl"
:fileName=
"formData.fileName"
:imageArray=
"[formData.downloadUrl]"
></document-view>
<preview-file
v-model=
"formData.downloadUrl"
:fileName=
"formData.fileName"
></preview-file>
-->
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
序号
<div
class=
"main-title"
>
</a-col>
<span>
项目主要实施内容和目标
</span>
<a-col
:span=
"20"
class=
"bg-gray"
>
</div>
内容
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
操作
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in formData.cont3"
:key=
"'cont3' + index"
>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
(
{{
index
+
1
}}
)
<div
class=
"special-middle"
>
<div
class=
"required"
>
项目实施目标
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"20"
>
<a-form-model-item
:prop=
"'cont3.' + index + '.contentInfo'"
:rules=
"
{ required: true, message: '内容不能为空' }
">
<a-form-model-item
prop=
"researchContent
"
>
<a-input
v-model=
"item.contentInfo"
:maxLength=
"200"
style=
"width: 90%;
"
/>
<a-textarea
placeholder=
"项目实施目标(限5000字)"
v-model=
"formData.researchContent"
:maxLength=
"5000"
style=
"width: 80%; height: 160px; margin-top: 12px
"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"2"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"removeCont(item, 'cont3')"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<a-button
type=
"dashed"
style=
"width: 50%"
@
click=
"addCont('cont3')"
>
<a-icon
type=
"plus"
/>
添加
</a-button>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
(二)人才培养
<div
class=
"tb-title"
>
<span>
项目考核指标
</span>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
序号
<div
class=
"special-middle"
>
</a-col>
<div
class=
"required"
>
主要技术指标
</div>
<a-col
:span=
"20"
class=
"bg-gray"
>
</div>
内容
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"20"
>
操作
<a-form-model-item
prop=
"technologyTarget"
>
<a-textarea
placeholder=
"主要技术指标(限5000字)"
v-model=
"formData.technologyTarget"
:maxLength=
"5000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in formData.cont4"
:key=
"'cont4' + index"
>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
(
{{
index
+
1
}}
)
<div
class=
"special-middle"
>
<div
class=
"required"
>
主要经济指标
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"20"
>
<a-form-model-item
:prop=
"'cont4.' + index + '.contentInfo'"
:rules=
"
{ required: true, message: '内容不能为空' }
">
<a-form-model-item
prop=
"economyTarget
"
>
<a-input
v-model=
"item.contentInfo"
:maxLength=
"200"
style=
"width: 90%;
"
/>
<a-textarea
placeholder=
"主要经济指标(限5000字)"
v-model=
"formData.economyTarget"
:maxLength=
"5000"
style=
"width: 80%; height: 160px; margin-top: 12px
"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"2"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"removeCont(item, 'cont4')"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</a-col>
</a-row>
</a-row>
<a-row
>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center;
"
>
<a-col
:span=
"4"
class=
"bg-gray
"
>
<a-button
type=
"dashed"
style=
"width: 50%"
@
click=
"addCont('cont4')
"
>
<div
class=
"special-middle
"
>
<a-icon
type=
"plus"
/>
添加
<div
class=
"required"
>
项目实施中形成的示范基地、中试线、生产线及其规模等
</div>
</a-button
>
</div
>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"20"
>
<a-row
>
<a-form-model-item
prop=
"achievementTarget"
>
<a-col
:span=
"24"
>
<a-textarea
placeholder=
"项目实施中形成的示范基地、中试线、生产线及其规模等(限5000字)"
v-model=
"formData.achievementTarget"
:maxLength=
"5000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/
>
(三)其他应考核的指标
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
序号
<div
class=
"special-middle"
>
</a-col>
<div
class=
"required"
>
科技报告考核指标
</div>
<a-col
:span=
"20"
class=
"bg-gray"
>
</div>
内容
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"20"
>
操作
<a-form-model-item
prop=
"technologyReportsTarget"
>
<a-textarea
placeholder=
"科技报告考核指标(限5000字)"
v-model=
"formData.technologyReportsTarget"
:maxLength=
"5000"
style=
"width: 80%; height: 160px; margin-top: 12px"
/>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in formData.cont5"
:key=
"'cont5' + index"
>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
(
{{
index
+
1
}}
)
<div
class=
"special-middle"
>
<div
class=
"required"
>
其他应考核的指标
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"20"
>
<a-form-model-item
:prop=
"'cont5.' + index + '.contentInfo'"
:rules=
"
{ required: true, message: '内容不能为空' }
">
<a-form-model-item
prop=
"otherTarget
"
>
<a-input
v-model=
"item.contentInfo"
:maxLength=
"200"
style=
"width: 90%;
"
/>
<a-textarea
placeholder=
"其他应考核的指标(限5000字)"
v-model=
"formData.otherTarget"
:maxLength=
"5000"
style=
"width: 80%; height: 160px; margin-top: 12px
"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"2"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"removeCont(item, 'cont5')"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</a-col>
</a-row>
</a-row>
<a-row
>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<a-button
type=
"dashed"
style=
"width: 50%"
@
click=
"addCont('cont5')
"
>
<div
class=
"special-middle
"
>
<a-icon
type=
"plus"
/>
添加
</a-button
>
</div
>
</a-col>
</a-col>
</a-row>
</a-row>
</div>
<div
v-if=
"stepsArray[1].showStatus"
>
<a-row>
<a-row>
<a-col
:span=
"24
"
>
<a-col
:span=
"24"
style=
"border-top: 0px
"
>
<div
class=
"tb
-title"
>
<div
class=
"main
-title"
>
<span>
三、项目阶段实施内容及目标
</span>
<span>
项目人员情况
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<!-- 项目组成员 -->
<a-col
:span=
"2"
class=
"bg-gray"
>
<project-member-edit
:dataList
.
sync=
"formData.members"
/>
阶段
<a-row
type=
"flex"
>
</a-col>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<a-col
:span=
"12"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
阶段实施内容及阶段目标
</a-col>
</div>
<a-col
:span=
"8"
class=
"bg-gray"
>
起止日期
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
操作
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in formData.cont6"
:key=
"'cont6' + index"
>
<!-- 项目主要参与单位及分工 -->
<a-col
:span=
"2"
>
<participate-units-edit
:participateUnits
.
sync=
"formData.participateUnits"
/>
<div
class=
"special-middle"
>
(
{{
index
+
1
}}
)
</div>
</div>
</a-col>
<div
v-if=
"stepsArray[2].showStatus"
>
<a-col
:span=
"12"
>
<!-- 经费预算 -->
<a-form-model-item
:prop=
"'cont6.' + index + '.contentInfo'"
:rules=
"
{ required: true, message: '内容不能为空' }">
<budget-edit
:budget
.
sync=
"formData.budget"
@
save=
"budgetSave"
/>
<a-textarea
v-model=
"item.contentInfo"
placeholder=
"项目阶段实施内容及目标"
:maxLength=
"500"
style=
"width: 90%;height: 140px;margin-top: 12px;"
/>
<a-row
type=
"flex"
>
</a-form-model-item>
<a-col
:span=
"24"
style=
"text-align: center;"
>
</a-col>
<div
class=
"special-middle"
>
<a-col
:span=
"8"
>
<div
class=
"flex-layout special-middle"
>
<a-form-model-item
:prop=
"'cont6.' + index + '.startTime'"
:rules=
"
{ required: true, message: '内容不能为空' }" style="flex-basis: 45%;">
<a-date-picker
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"item.startTime"
style=
"width: 100%"
@
change=
"dateChange(item)"
/>
</a-form-model-item>
<span
style=
"margin: -12px 10px 0 10px;"
>
~
</span>
<a-form-model-item
:prop=
"'cont6.' + index + '.endTime'"
:rules=
"
{ required: true, message: '内容不能为空' }" style="flex-basis: 45%;">
<a-date-picker
format=
"YYYY-MM-DD"
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"item.endTime"
style=
"width: 100%"
@
change=
"dateChange(item)"
/>
</a-form-model-item>
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
>
</a-row>
<!-- 分年度用款计划 -->
<fund-plan-edit
:fundPlan
.
sync=
"formData.fundPlan"
@
save=
"planSave"
/>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<div
class=
"special-middle"
>
<a-popconfirm
title=
"确定要删除吗?"
ok-text=
"确定"
cancel-text=
"取消"
@
confirm=
"removeCont(item, 'cont6')"
class=
"special-middle"
>
<a-button
type=
"link"
size=
"small"
>
删除
</a-button>
</a-popconfirm>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<!-- 设备费-购置设备预算明细表 -->
<device-edit
:deviceList
.
sync=
"formData.deviceList"
/>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<a-button
type=
"dashed"
style=
"width: 50%"
@
click=
"addCont('cont6')
"
>
<div
class=
"special-middle
"
>
<a-icon
type=
"plus"
/>
添加
</a-button
>
</div
>
</a-col>
</a-col>
</a-row>
</a-row>
<!-- 设备费-试制设备预算明细表 -->
<proj-group-member
:members
.
sync=
"formData.members
"
/>
<manufacture-edit
:manufactureList
.
sync:=
"formData.manufactureList
"
/>
<a-row
type=
"flex"
>
<budget-edit
:budget
.
sync=
"formData.budget"
/
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
<a-row
style=
"margin-top: 20px;text-align:center;"
>
<a-button
style=
"margin-right: 50px;"
@
click=
"save"
>
保存
</a-button
>
</div
>
<a-button
type=
"primary"
@
click=
"submit"
>
完成填写
</a-button
>
</a-col
>
</a-row>
</a-row>
<!-- 项目承担单位研究资金支出预算明细表 -->
<unit-payment-edit
:unitPayment
.
sync=
"formData.unitPayment"
/>
</div>
<div
v-if=
"stepsArray[3].showStatus"
>
<!-- 项目安排及阶段目标 -->
<proj-stage-goals-edit
:stageGoals
.
sync=
"formData.stageGoals"
/>
<!-- 项目课题设置 -->
<project-sub-edit
:projectSubList
.
sync=
"formData.projectSubList"
/>
</div>
<div
v-if=
"stepsArray[4].showStatus"
>
<!-- 项目绩效指标 -->
<project-kpi-edit
:projectKPI
.
sync=
"formData.projectKPI"
/>
</div>
<div
v-if=
"stepsArray[5].showStatus"
>
<!-- 附件 -->
<file-edit
:fileList
.
sync=
"formData.fileList"
/>
</div>
</a-form-model>
</a-form-model>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
ProjGroupMember
from
"@/views/report/project/components/projectMemberEdit"
import
BudgetEdit
from
'@/views/report/project/components/budgetEdit'
import
fundEdit
from
'@/views/report/project/components/fundEdit'
import
documentView
from
'@/views/components/common/documentView'
import
previewFile
from
'@/views/components/common/previewFile'
import
{
getType
}
from
'@/views/utils/auth'
import
projectMemberEdit
from
'@/views/report/project/components/projectMemberEdit'
import
cooperativeUnitsEdit
from
'@/views/report/project/components/cooperativeUnitsEdit'
import
participateUnitsEdit
from
'@/views/report/project/components/participateUnitsEdit'
import
deviceEdit
from
'@/views/report/project/components/deviceEdit'
import
projStageGoalsEdit
from
'@/views/report/project/components/projStageGoalsEdit'
import
budgetEdit
from
'@/views/report/project/components/budgetEdit'
import
fundPlanEdit
from
'@/views/report/project/components/fundPlanEdit'
import
projectKpiEdit
from
'@/views/report/project/components/projectKpiEdit'
import
manufactureEdit
from
'@/views/report/project/components/manufactureEdit'
import
unitPaymentEdit
from
'@/views/report/project/components/unitPaymentEdit'
import
projectSubEdit
from
'@/views/report/project/components/projectSubEdit'
import
fileEdit
from
'@/views/report/project/components/fileEdit'
import
{
isEmptyParams
}
from
"@/views/utils/common"
import
{
isEmptyParams
}
from
"@/views/utils/common"
import
moment
from
'moment'
const
ParticipateUnit
=
{
id
:
null
,
unitName
:
null
,
unitCountry
:
null
,
unitAddress
:
null
,
organizationCode
:
null
,
projectWork
:
null
}
const
ProjResearch
=
{
projNo
:
null
,
projName
:
null
,
approveUnit
:
null
,
leader
:
null
,
startDate
:
null
,
endDate
:
null
,
funds
:
null
}
const
ManagementRule
=
{
policyName
:
null
,
releaseDate
:
null
,
documentNumber
:
null
,
validityPeriod
:
null
,
mainContent
:
null
,
fileId
:
null
,
downloadId
:
null
,
fileName
:
null
,
downloadUrl
:
null
}
const
StageGoals
=
{
startTime
:
null
,
endTime
:
null
,
target
:
null
}
const
ProjectSub
=
{
projName
:
null
,
undertakingUnit
:
null
,
address
:
null
,
director
:
null
,
totalBudget
:
null
,
govBudget
:
null
,
selfBudget
:
null
,
cooperativeUnits
:
null
,
fileId
:
null
,
downloadId
:
null
,
fileName
:
null
,
downloadUrl
:
null
}
const
Cooperative
=
{
id
:
null
,
unitName
:
null
}
const
File
=
{
fileName
:
''
,
downloadUrl
:
''
,
fileExplain
:
''
,
downloadId
:
''
}
const
Equipment
=
{
id
:
""
,
objectId
:
""
,
name
:
""
,
functionTarget
:
""
,
specificationType
:
""
,
quantity
:
1
,
totalBudget
:
0.0
,
useFrom
:
""
,
buyUnit
:
""
,
storageLocation
:
""
,
equipmentType
:
""
,
manufacturer
:
""
,
sharedScope
:
""
,
unitPrice
:
0.0
,
};
const
cont1
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'd37abeb6-14e0-4486-924d-e1e4baf67098'
,
showIndex
:
1
}
}
const
projectKPI
=
{
const
cont2
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'b1fe4003-16ed-482f-8fd5-e34b1482c3d4'
,
showIndex
:
1
}
}
reportYear
:
""
,
const
cont3
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'b19cf66b-c1bb-4974-a524-114c1895dbd8'
,
showIndex
:
1
}
}
projName
:
""
,
const
cont4
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'cf3abeff-9f1a-420e-b375-6aad33f12080'
,
showIndex
:
1
}
}
appUnitName
:
""
,
const
cont5
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'f1cea24c-d13d-48af-8abb-58eed9367c27'
,
showIndex
:
1
}
}
managerDept
:
""
,
const
cont6
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'ebcdf2b0-011c-4d40-a064-f22d6f7ec646'
,
showIndex
:
1
}
}
projAttribute
:
""
,
projDeadline
:
""
,
startDate
:
""
,
endData
:
""
,
yearTarget
:
""
,
year1Goal
:
""
,
year2Goal
:
""
,
year3Goal
:
""
,
totalBudget
:
0.00
,
applyFunds
:
0.00
,
selfFunds
:
0.00
,
yearTotal
:
0.00
,
yearApply
:
0.00
,
yearSelf
:
0.00
,
totalRowSpan
:
0
,
//总合并行数
outTarget
:
0
,
//一级指标(产出指标)
benefitTarget
:
0
,
//一级指标(效益指标)
satisfactionDegree
:
0
,
//一级指标(满意度指标)
quantityTarget
:
0
,
//二级指标(数量指标)
qualityTarget
:
0
,
//二级指标(质量指标)
validityTarget
:
0
,
//二级指标(时效指标)
costTarget
:
0
,
//二级指标(成本指标)
economicTarget
:
0
,
//二级指标(经济效益指标)
socialTarget
:
0
,
//二级指标(社会效益指标)
ecologicalTarget
:
0
,
//二级指标(生态效益指标)
sustainableTarget
:
0
,
//二级指标(可持续影响指标)
serviceTarget
:
0
,
//二级指标(服务对象满意度指标)
threeLevel
:
[],
kpiList
:
[],
};
import
cascaderSelect
from
'@/views/components/common/cascaderSelect'
export
default
{
export
default
{
name
:
"TestEdit"
,
name
:
'projectEdit'
,
components
:
{
fundEdit
,
projectMemberEdit
,
cooperativeUnitsEdit
,
budgetEdit
,
fundPlanEdit
,
projectKpiEdit
,
fileEdit
,
previewFile
,
documentView
,
cascaderSelect
,
deviceEdit
,
projStageGoalsEdit
,
manufactureEdit
,
unitPaymentEdit
,
projectSubEdit
,
participateUnitsEdit
},
props
:
{
value
:
{
type
:
String
,
default
:
()
=>
{
return
null
}
},
stepsArray
:
{
type
:
Array
,
default
()
{
return
[]
}
},
completeStatus
:
{
type
:
String
,
default
()
{
return
"0,0,0,0,0,0"
}
},
},
created
()
{
this
.
getProject
()
},
data
()
{
data
()
{
return
{
return
{
overseasShow
:
false
,
formData
:
{
formData
:
{
id
:
''
,
id
:
null
,
projId
:
''
,
// 实施目标和主要内容
testContent
:
''
,
// 总经费
budgetCount
:
0
,
// 市卫计委资助
budgetGovCount
:
0
,
// 起止日期
startDate
:
null
,
endDate
:
null
,
// 申报人
appPersonName
:
null
,
appPersonName
:
null
,
sex
:
null
,
sex
:
null
,
birth
Year
:
null
,
birth
day
:
null
,
mobil
e
:
null
,
nationNam
e
:
null
,
degreeName
:
null
,
degreeName
:
null
,
titleName
:
null
,
titleName
:
null
,
// 依托单位
mobile
:
null
,
email
:
null
,
appUnitName
:
null
,
appUnitName
:
null
,
linkEmail
:
null
,
unitLinkName
:
null
,
linkTel
:
null
,
unitLinkMobile
:
null
,
linkAddress
:
null
,
unitLinkEmail
:
null
,
postcode
:
null
,
unitLinkFax
:
null
,
authority
:
null
,
projName
:
null
,
// 项目内容
knowledgeId
:
null
,
cont1
:
[
cont1
()],
startDate
:
null
,
cont2
:
[
cont2
()],
endDate
:
null
,
cont3
:
[
cont3
()],
jobTime
:
null
,
cont4
:
[
cont4
()],
mainResearchAreas
:
null
,
cont5
:
[
cont5
()],
address
:
null
,
cont6
:
[
cont6
()],
subjectScope
:
null
,
// 成员
projClass
:
null
,
projAbstract
:
null
,
projKeywords
:
null
,
totalFunding
:
null
,
govFunding
:
null
,
unitFunding
:
null
,
selfFunding
:
null
,
researchContent
:
null
,
technologyTarget
:
null
,
economyTarget
:
null
,
achievementTarget
:
null
,
otherTarget
:
null
,
remark
:
null
,
yearTarget
:
null
,
year1Goal
:
null
,
year2Goal
:
null
,
year3Goal
:
null
,
projectKPI
:
projectKPI
,
cooperativeUnits
:
[],
participateUnits
:
[],
members
:
[],
members
:
[],
// 预期成果形式
target
:
[],
// 经费
budget
:
[],
budget
:
[],
fundPlan
:
[],
deviceList
:
[],
manufactureList
:
[],
unitPayment
:
[],
stageGoals
:
[],
projectSubList
:
[],
fileList
:
[],
auditList
:
[],
managerDept
:
""
,
},
},
rules
:
{
rules
:
{
testContent
:
{
required
:
true
,
message
:
'请填写实施目标和主要内容'
,
trigger
:
'blur'
},
jobTime
:
[{
required
:
true
,
message
:
'请填写每年工作时间(月)'
,
trigger
:
'blur'
},],
target
:
{
required
:
true
,
message
:
'请选择预期成果形式'
},
address
:
[{
required
:
true
,
message
:
'请填写个人通讯地址'
,
trigger
:
'blur'
},],
budgetCount
:
{
required
:
true
,
message
:
'请填写总经费'
,
trigger
:
'blur'
},
mainResearchAreas
:
[{
required
:
true
,
message
:
'请填写主要研究领域'
,
trigger
:
'blur'
},],
budgetGovCount
:
{
required
:
true
,
message
:
'请填写市卫计委资助'
,
trigger
:
'blur'
},
unitLinkName
:
[{
required
:
true
,
message
:
'请填写单位联系人'
,
trigger
:
'blur'
},],
startDate
:
{
required
:
true
,
message
:
'请选择起始日期'
,
trigger
:
'change'
},
unitLinkMobile
:
[{
required
:
true
,
message
:
'请填写联系人电话'
,
trigger
:
'blur'
},],
endDate
:
{
required
:
true
,
message
:
'请选择结束日期'
,
trigger
:
'change'
},
unitLinkEmail
:
[{
required
:
true
,
message
:
'请填写电子邮箱'
,
trigger
:
'blur'
},],
}
unitLinkFax
:
[{
required
:
true
,
message
:
'请填写传真'
,
trigger
:
'blur'
},],
}
projName
:
[{
required
:
true
,
message
:
'请填写项目名称'
,
trigger
:
'blur'
},],
knowledgeId
:
{
required
:
true
,
message
:
'请选择学科代码'
,
trigger
:
'change'
},
// subjectScope: [{ required: true, message: '请填写选题范围', trigger: 'blur' },],
// projClass: [{ required: true, message: '请填写项目类别', trigger: 'blur' },],
remark
:
[{
required
:
true
,
message
:
'请填写附注说明'
,
trigger
:
'blur'
},],
startDate
:
{
required
:
true
,
message
:
'请选择项日开始时间'
,
trigger
:
'change'
},
endDate
:
{
required
:
true
,
message
:
'请选择项目结束时间'
,
trigger
:
'change'
},
// totalFunding: [{ required: true, message: '请填写项目总经费', trigger: 'blur' },],
// govFunding: [{ required: true, message: '请填写申请科技经费', trigger: 'blur' },],
projAbstract
:
[{
required
:
true
,
message
:
'请填写项目摘要'
,
trigger
:
'blur'
},],
projKeywords
:
[{
required
:
true
,
message
:
'请填写关键词'
,
trigger
:
'blur'
},],
researchContent
:
{
required
:
true
,
message
:
'请填写项目实施目标'
,
trigger
:
'blur'
},
technologyTarget
:
{
required
:
true
,
message
:
'请填写主要技术指标'
,
trigger
:
'blur'
},
economyTarget
:
{
required
:
true
,
message
:
'请填写主要经济指标'
,
trigger
:
'blur'
},
achievementTarget
:
[{
required
:
true
,
message
:
'请填写项目实施中形成的示范基地、中试线、生产线及其规模等'
,
trigger
:
'blur'
},],
technologyReportsTarget
:
{
required
:
true
,
message
:
'请填写科技报告考核指标'
,
trigger
:
'blur'
},
otherTarget
:
{
required
:
true
,
message
:
'请填写其他应考核的指标'
,
trigger
:
'blur'
},
downloadUrl
:
[{
required
:
true
,
message
:
'请填写关键词'
,
trigger
:
'blur'
},],
},
},
props
:
{
value
:
{
type
:
String
,
default
:
()
=>
{
return
null
}
}
},
},
computed
:
{
},
},
components
:
{
mounted
()
{
ProjGroupMember
,
BudgetEdit
},
created
()
{
this
.
getTestInfoByProjId
()
},
},
methods
:
{
methods
:
{
getTestInfoByProjId
()
{
moment
,
let
pars
=
{
projId
:
this
.
value
}
save
(
step
)
{
this
.
$api
.
taskReport
.
getTestInfoByProjId
(
pars
).
then
(({
data
=
{}
})
=>
{
if
(
this
.
checkInfo
(
step
))
{
if
(
data
)
{
var
obj
=
this
.
getObj
(
step
)
this
.
formData
=
data
obj
.
step
=
step
if
(
this
.
formData
.
cont1
===
null
)
{
this
.
$emit
(
'load'
,
true
)
this
.
formData
.
cont1
=
[
cont1
()];
let
pars
=
isEmptyParams
(
obj
)
this
.
formData
.
cont2
=
[
cont2
()];
this
.
formData
.
cont3
=
[
cont3
()];
this
.
formData
.
cont4
=
[
cont4
()];
this
.
formData
.
cont5
=
[
cont5
()];
this
.
formData
.
cont6
=
[
cont6
()];
}
}
}).
catch
(()
=>
{
})
},
save
()
{
let
state
=
this
.
formData
.
testState
if
(
state
==
null
)
this
.
formData
.
testState
=
-
20
let
pars
=
isEmptyParams
(
this
.
formData
)
let
par
=
{
...
pars
}
let
par
=
{
...
pars
}
this
.
$api
.
taskReport
.
save
(
par
).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
project
.
saveByStep
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
if
(
data
)
{
this
.
formData
.
id
=
data
this
.
formData
.
id
=
data
this
.
$message
.
success
(
'保存成功!'
)
this
.
$message
.
success
(
'保存成功!'
)
this
.
$emit
(
'close'
,
'save'
)
}
}
this
.
$emit
(
'load'
,
false
)
}).
catch
(()
=>
{
}).
catch
(()
=>
{
this
.
$emit
(
'load'
,
false
)
})
})
}
},
},
submit
()
{
submit
(
step
,
next
)
{
if
(
this
.
checkInfo
(
step
))
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
&&
this
.
checkApplyMoney
())
{
if
(
valid
)
{
let
state
=
this
.
formData
.
testState
this
.
$emit
(
'load'
,
true
)
if
(
state
!=
30
)
var
arr
=
this
.
completeStatus
.
split
(
','
);
this
.
formData
.
testState
=
-
10
arr
[
step
]
=
"1"
;
let
pars
=
isEmptyParams
(
this
.
formData
)
this
.
formData
.
completeStatus
=
arr
.
toString
()
var
obj
=
this
.
getObj
(
step
)
obj
.
step
=
step
let
state
=
obj
.
projState
if
(
state
!=
30
&&
step
==
5
)
obj
.
projState
=
10
let
pars
=
isEmptyParams
(
obj
)
let
par
=
{
...
pars
}
let
par
=
{
...
pars
}
this
.
$api
.
taskReport
.
save
(
par
).
then
(({
data
=
{}
})
=>
{
this
.
$api
.
project
.
saveByStep
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
if
(
data
)
{
this
.
formData
.
id
=
data
this
.
formData
.
id
=
data
this
.
$message
.
success
(
'填写完成!'
)
if
(
next
)
{
this
.
$emit
(
'close'
,
'edit'
)
this
.
$emit
(
'close'
,
'save'
)
this
.
$emit
(
'onStepChange'
,
{
step
:
step
+
1
,
state
:
arr
.
toString
()
})
}
else
{
this
.
$message
.
success
(
'成功!'
)
this
.
$emit
(
'close'
,
'submit'
)
}
}
}
this
.
$emit
(
'load'
,
false
)
}).
catch
(()
=>
{
}).
catch
(()
=>
{
this
.
$emit
(
'load'
,
false
)
})
})
}
else
{
}
else
{
this
.
$message
.
success
(
'任务书信息未填写完全,请检查!
'
)
this
.
$message
.
error
(
'信息未填写完全!
'
)
return
false
return
false
}
}
})
})
}
},
},
checkApplyMoney
()
{
getProject
()
{
if
(
this
.
formData
.
budgetCount
!=
null
&&
this
.
formData
.
budgetCount
!=
this
.
formData
.
budget
[
0
].
totalBudget
)
{
this
.
$emit
(
'load'
,
true
)
alert
(
'项目经费与总经费不一致!'
)
if
(
!!
this
.
value
)
{
return
false
this
.
$api
.
project
.
getProjectInfoById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
formData
=
data
this
.
$emit
(
'onStepChange'
,
{
step
:
0
,
state
:
data
.
completeStatus
})
this
.
loadList
()
}
else
this
.
$emit
(
'close'
,
'error'
)
this
.
$emit
(
'load'
,
false
)
}).
catch
(()
=>
{
this
.
$emit
(
'close'
,
'error'
)
this
.
$emit
(
'load'
,
false
)
})
}
else
{
}
else
{
return
true
this
.
$api
.
project
.
getNewProject
({
projType
:
getType
()
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
formData
=
data
this
.
$emit
(
'onStepChange'
,
{
step
:
0
,
state
:
data
.
completeStatus
})
this
.
loadList
()
}
else
this
.
$emit
(
'close'
,
'error'
)
this
.
$emit
(
'load'
,
false
)
}).
catch
(()
=>
{
this
.
$emit
(
'close'
,
'error'
)
this
.
$emit
(
'load'
,
false
)
})
}
},
getCompleteStatus
(
step
,
completeStatus
)
{
var
arr
=
completeStatus
.
split
(
','
)
if
(
!!
arr
&&
arr
.
length
>
0
)
{
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
if
(
arr
[
i
]
==
"1"
)
{
this
.
stepsArray
[
i
].
status
=
"finish"
}
}
this
.
stepsArray
[
step
].
status
=
"process"
}
},
loadList
()
{
if
(
!!!
this
.
formData
.
cooperativeUnits
||
this
.
formData
.
cooperativeUnits
.
length
==
0
)
this
.
formData
.
cooperativeUnits
=
[]
if
(
!!!
this
.
formData
.
participateUnits
||
this
.
formData
.
participateUnits
.
length
==
0
)
this
.
formData
.
participateUnits
=
[]
//{ ...Cooperative }, { ...Cooperative }
if
(
!!!
this
.
formData
.
members
||
this
.
formData
.
members
.
length
==
0
)
this
.
formData
.
members
=
[]
if
(
!!!
this
.
formData
.
deviceList
||
this
.
formData
.
deviceList
.
length
==
0
)
this
.
formData
.
deviceList
=
[]
if
(
!!!
this
.
formData
.
manufactureList
||
this
.
formData
.
manufactureList
.
length
==
0
)
this
.
formData
.
manufactureList
=
[]
if
(
!!!
this
.
formData
.
unitPayment
||
this
.
formData
.
unitPayment
.
length
==
0
)
this
.
formData
.
unitPayment
=
[]
if
(
!!!
this
.
formData
.
stageGoals
||
this
.
formData
.
stageGoals
.
length
==
0
)
this
.
formData
.
stageGoals
=
[{
...
StageGoals
},
{
...
StageGoals
},
{
...
StageGoals
}]
if
(
!!!
this
.
formData
.
projectSubList
||
this
.
formData
.
projectSubList
.
length
==
0
)
this
.
formData
.
projectSubList
=
[]
if
(
!!!
this
.
formData
.
fileList
||
!
this
.
formData
.
fileList
.
length
||
this
.
formData
.
fileList
.
length
==
0
)
{
this
.
formData
.
fileList
=
[]
}
},
processKpiFunds
()
{
if
(
!!
this
.
formData
.
budget
&&
this
.
formData
.
budget
.
length
>
0
)
{
this
.
formData
.
projectKPI
.
yearTotal
=
this
.
formData
.
budget
[
0
].
totalBudget
this
.
formData
.
projectKPI
.
yearApply
=
this
.
formData
.
budget
[
0
].
applyFunds
this
.
formData
.
projectKPI
.
yearSelf
=
this
.
formData
.
budget
[
0
].
selfFunds
}
},
processProjectYearTarget
()
{
this
.
formData
.
yearTarget
=
this
.
formData
.
projectKPI
.
yearTarget
this
.
formData
.
year1Goal
=
this
.
formData
.
projectKPI
.
year1Goal
this
.
formData
.
year2Goal
=
this
.
formData
.
projectKPI
.
year2Goal
this
.
formData
.
year3Goal
=
this
.
formData
.
projectKPI
.
year3Goal
this
.
formData
.
projectKPI
.
kpiList
=
this
.
formData
.
projectKPI
.
threeLevel
this
.
formData
.
managerDept
=
this
.
formData
.
projectKPI
.
managerDept
this
.
formData
.
projAttribute
=
this
.
formData
.
projectKPI
.
projAttribute
},
getObj
(
step
)
{
var
obj
=
null
switch
(
step
)
{
case
0
:
{
obj
=
{
id
:
null
,
reportYear
:
null
,
batch
:
null
,
projState
:
null
,
appPersonId
:
null
,
appUnitId
:
null
,
projType
:
null
,
jobTime
:
null
,
address
:
null
,
mainResearchAreas
:
null
,
unitLinkName
:
null
,
unitLinkMobile
:
null
,
unitLinkEmail
:
null
,
unitLinkFax
:
null
,
projName
:
null
,
knowledgeId
:
null
,
startDate
:
null
,
endDate
:
null
,
remark
:
null
,
projClass
:
null
,
subjectScope
:
null
,
projAbstract
:
null
,
projKeywords
:
null
,
totalFunding
:
null
,
govFunding
:
null
,
unitFunding
:
null
,
selfFunding
:
null
,
researchContent
:
null
,
technologyTarget
:
null
,
economyTarget
:
null
,
achievementTarget
:
null
,
technologyReportsTarget
:
null
,
otherTarget
:
null
,
fileId
:
null
,
downloadId
:
null
,
completeStatus
:
null
,
step
:
null
}
}
this
.
formData
.
projectKPI
.
appUnitName
=
this
.
formData
.
appUnitName
break
;
}
case
1
:
obj
=
{
id
:
null
,
members
:
[],
participateUnits
:
[],
completeStatus
:
null
,
step
:
null
}
break
;
case
2
:
this
.
processKpiFunds
()
obj
=
{
id
:
null
,
totalFunding
:
null
,
govFunding
:
null
,
unitFunding
:
null
,
selfFunding
:
null
,
budget
:
[],
fundPlan
:
[],
deviceList
:
[],
manufactureList
:
[],
unitPayment
:
[],
completeStatus
:
null
,
step
:
null
}
break
;
case
3
:
obj
=
{
id
:
null
,
stageGoals
:
[],
projectSubList
:
[],
completeStatus
:
null
,
step
:
null
}
break
;
case
4
:
this
.
processProjectYearTarget
()
obj
=
{
id
:
null
,
projectKPI
:
null
,
yearTarget
:
null
,
year1Goal
:
null
,
year2Goal
:
null
,
year3Goal
:
null
,
managerDept
:
null
,
projAttribute
:
null
,
completeStatus
:
null
,
step
:
null
}
break
;
case
5
:
obj
=
{
id
:
null
,
fileList
:
[],
projState
:
null
,
completeStatus
:
null
,
step
:
null
}
break
;
}
Object
.
keys
(
obj
).
forEach
(
key
=>
{
obj
[
key
]
=
this
.
formData
[
key
];
})
return
obj
},
},
onTargetChange
(
item
)
{
checkInfo
(
step
)
{
item
.
checked
=
!
item
.
checked
if
(
step
==
0
)
{
if
(
item
.
checked
)
{
if
(
this
.
formData
.
projName
==
""
||
this
.
formData
.
projName
==
null
)
{
item
.
result
=
'True'
alert
(
'项目名称不能为空'
)
return
false
}
else
return
true
}
else
if
(
step
==
1
)
{
if
(
!!!
this
.
formData
.
members
||
this
.
formData
.
members
.
length
==
0
)
{
this
.
$message
.
error
(
'至少添加一位项目组成员!'
)
return
false
}
else
return
true
}
else
if
(
step
==
2
)
{
return
true
}
else
if
(
step
==
3
)
{
return
true
}
else
if
(
step
==
4
)
{
const
flag
=
this
.
determineProjKPIDetail
()
if
(
flag
)
{
return
true
}
else
{
}
else
{
item
.
result
=
'False'
this
.
$message
.
error
(
'项目绩效目标表需要至少填写其中的一项指标明细!'
)
return
false
}
}
else
if
(
step
==
5
)
{
return
true
}
}
},
},
// 添加项目内容
determineProjKPIDetail
()
{
addCont
(
key
)
{
let
flag
=
false
switch
(
key
)
{
for
(
let
e
of
this
.
formData
.
projectKPI
.
threeLevel
)
{
case
'cont1'
:
if
(
e
.
performanceStandard
&&
e
.
performanceStandard
>
0
)
{
this
.
formData
[
key
].
push
(
cont1
())
flag
=
true
break
case
'cont2'
:
this
.
formData
[
key
].
push
(
cont2
())
break
break
case
'cont3'
:
}
this
.
formData
[
key
].
push
(
cont3
())
if
(
e
.
targetValue
&&
e
.
targetValue
>
0
)
{
flag
=
true
break
break
case
'cont4'
:
}
this
.
formData
[
key
].
push
(
cont4
())
if
(
e
.
yearValue1
&&
e
.
yearValue1
>
0
)
{
flag
=
true
break
break
case
'cont5'
:
}
this
.
formData
[
key
].
push
(
cont5
())
if
(
e
.
yearValue2
&&
e
.
yearValue2
>
0
)
{
flag
=
true
break
break
case
'cont6'
:
}
this
.
formData
[
key
].
push
(
cont6
())
if
(
e
.
yearValue3
&&
e
.
yearValue3
>
0
)
{
flag
=
true
break
break
}
}
},
// 删除项目内容
removeCont
(
item
,
key
)
{
let
index
=
this
.
formData
[
key
].
indexOf
(
item
)
if
(
index
!==
-
1
)
{
this
.
formData
[
key
].
splice
(
index
,
1
)
}
}
return
flag
},
projNameChange
(
value
)
{
this
.
formData
.
projectKPI
.
projName
=
this
.
formData
.
projName
},
},
// 起止日期选择处理
startDateChange
(
value
,
dateString
)
{
dateChange
(
t
)
{
this
.
formData
.
projectKPI
.
startDate
=
this
.
formData
.
startDate
let
statr
=
t
.
start_date
},
let
end
=
t
.
end_date
endDateChange
(
value
,
dateString
)
{
if
(
!
statr
||
!
end
)
{
this
.
formData
.
projectKPI
.
endDate
=
this
.
formData
.
endDate
return
if
(
this
.
formData
.
projectKPI
.
startDate
&&
this
.
formData
.
projectKPI
.
endDate
)
{
let
projDeadline
=
moment
(
this
.
formData
.
startDate
).
format
(
'YYYY-MM-DD'
)
+
"至"
+
moment
(
this
.
formData
.
endDate
).
format
(
'YYYY-MM-DD'
)
this
.
formData
.
projectKPI
.
projDeadline
=
projDeadline
}
}
if
(
statr
>
end
)
{
},
t
.
start_date
=
end
planSave
(
e
)
{
t
.
end_date
=
statr
if
(
!!
e
&&
e
.
length
==
3
)
{
this
.
formData
.
projectKPI
.
yearTotal
=
e
[
0
]
this
.
formData
.
projectKPI
.
yearApply
=
e
[
1
]
this
.
formData
.
projectKPI
.
yearSelf
=
e
[
2
]
}
}
},
budgetSave
(
e
)
{
if
(
!!
e
&&
e
.
length
==
3
)
{
this
.
formData
.
totalFunding
=
e
[
0
]
this
.
formData
.
govFunding
=
e
[
1
]
this
.
formData
.
projectKPI
.
totalBudget
=
this
.
formData
.
totalFunding
this
.
formData
.
projectKPI
.
applyFunds
=
this
.
formData
.
govFunding
this
.
formData
.
projectKPI
.
selfFunds
=
e
[
2
]
}
}
},
}
}
}
}
</
script
>
</
script
>
<
style
scoped
lang=
"less"
>
<
style
lang=
"less"
scoped
>
</
style
>
</
style
>
src/views/report/task/components/taskFileEdit.vue
deleted
100644 → 0
View file @
f18fefd0
<
template
>
<div
class=
"from-table font-line-space"
>
<a-spin
:spinning=
"loading"
style=
"width: 100%;height: 100%;"
>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目编号
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
projNo
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目名称
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
projName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
申报人
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
personName
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
申报单位
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
appUnitName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
申报年度
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
reportYear
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目开始结束时间
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
projectInfo
.
startDate
).
format
(
'YYYY-MM-DD'
)
}}
至
{{
moment
(
projectInfo
.
endDate
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
>
<div
class=
"tb-title"
>
附件上传
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
附件名称
</div>
</div>
</a-col>
<a-col
:span=
"10"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
附件上传
</div>
</div>
</a-col>
<a-col
:span=
"6"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
说明
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in projectInfo.fileList"
:key=
"'fileList' + index"
type=
"flex"
>
<a-col
:span=
"8"
style=
"text-align: center; margin-top: 10px;"
>
<span
class=
"required"
></span>
{{
item
.
fileExplain
}}
<!--
<a-form-model-item
:prop=
"'fileList.' + index + '.fileExplain'"
:rules=
"
{required: true, message: '*',trigger: 'blur',}">
<a-input
v-model=
"item.fileExplain"
:maxLength=
"100"
style=
"width: 80%"
:disabled=
"item.required"
/>
</a-form-model-item>
-->
</a-col>
<a-col
:span=
"10"
>
<div
class=
"special-middle"
>
<div
v-if=
"item.downloadUrl"
class=
"file-box"
>
<div>
<!--
<a-icon
type=
"file"
style=
"margin-right: 8px"
/>
<span
class=
"hover-pointer"
@
click=
"downloadfile(item)"
>
{{
item
.
fileName
}}
</span>
-->
<document-view
:fileUrl=
"item.downloadUrl"
:fileName=
"item.fileName"
:imageArray=
"[item.downloadUrl]"
></document-view>
</div>
<a-icon
type=
"delete"
class=
"hover-pointer d-icon"
@
click=
"deleteTaskFile(item, index)"
/>
</div>
<div
v-else
>
<a-form-model-item
:prop=
"'fileList.' + index + '.downloadUrl'"
:rules=
"
{required: true, message: '请上传附件',trigger: 'blur',}">
<input
type=
"file"
:ref=
"'fileElem' + index"
class=
"visually-hidden"
@
change=
"handleFiles(item, index)"
/>
<a-button
@
click=
"fileSelect(item, index)"
><a-icon
type=
"upload"
/>
选择文件
</a-button>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col
:span=
"6"
>
<div
class=
"special-middle"
>
<span
style=
"margin-left: 10px; font-size: 10pt; color:red; font-weight: bold;"
>
请上传项目任务书附件(文件类型必须为:pdf),文件大小不能超过
{{
fileSize
}}
M!
</span>
</div>
</a-col>
</a-row>
</a-spin>
</div>
</
template
>
<
script
>
import
moment
from
'moment'
import
documentView
from
'@/views/components/common/documentView'
const
File
=
{
fileName
:
""
,
downloadUrl
:
""
,
fileExplain
:
"项目任务书"
,
downloadId
:
""
};
export
default
{
name
:
"taskFileEdit"
,
props
:
{
value
:
{
type
:
String
,
default
:
()
=>
{
return
null
}
},
},
components
:
{
documentView
},
data
()
{
return
{
projectInfo
:
{
projNo
:
''
,
projName
:
''
,
startDate
:
''
,
endDate
:
''
,
appPersonName
:
''
,
appUnitName
:
''
,
mobile
:
''
,
address
:
''
,
fileList
:
[{
...
File
}],
},
fileSize
:
15
,
};
},
created
()
{
this
.
getProjectBasicInfoById
()
},
methods
:
{
moment
,
getProjectBasicInfoById
()
{
if
(
this
.
value
!=
null
)
{
this
.
loading
=
true
this
.
$api
.
project
.
getProjectBasicInfoById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
projectInfo
=
data
if
(
this
.
projectInfo
.
fileList
==
null
||
this
.
projectInfo
.
fileList
.
length
<=
0
)
this
.
projectInfo
.
fileList
=
[{
...
File
}]
this
.
loading
=
false
}
}).
catch
(()
=>
{
this
.
$emit
(
'close'
,
'close'
)
})
}
},
downloadfile
()
{
},
deleteTaskFile
(
item
,
index
)
{
this
.
$api
.
taskReport
.
deleteTaskFile
({
id
:
item
.
downloadId
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
item
.
fileName
=
''
item
.
downloadUrl
=
''
item
.
downloadId
=
''
}
}).
catch
(()
=>
{
this
.
$message
.
error
(
'删除失败'
)
})
},
uploadHandle
(
file
,
fileName
,
projId
)
{
let
formData
=
new
FormData
()
formData
.
append
(
'file'
,
file
)
formData
.
append
(
'fileName'
,
fileName
)
formData
.
append
(
'projId'
,
projId
)
return
formData
},
handleFiles
(
item
,
index
)
{
let
fileElem
=
this
.
$refs
[
'fileElem'
+
index
][
0
]
let
files
=
fileElem
.
files
if
(
files
.
length
<=
0
)
{
this
.
$message
.
error
(
'未选中文件,请尝试重新选择'
)
return
}
if
(
!
this
.
fileCheck
(
files
[
0
]))
return
this
.
$api
.
taskReport
.
asyncUploadTaskFile
(
this
.
uploadHandle
(
files
[
0
],
files
[
0
].
name
,
this
.
value
)).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
item
.
fileName
=
data
.
fileName
item
.
downloadUrl
=
data
.
downloadUrl
item
.
downloadId
=
data
.
id
item
.
fileExplain
=
data
.
fileExplain
}
else
this
.
$message
.
error
(
'上传失败'
)
}).
catch
(()
=>
{
this
.
$message
.
error
(
'上传失败'
)
})
},
fileSelect
(
item
,
index
)
{
let
fileElem
=
this
.
$refs
[
'fileElem'
+
index
][
0
]
if
(
fileElem
)
{
fileElem
.
click
()
}
},
fileCheck
(
file
)
{
//判断是否小于1M
let
isLtSize
=
file
.
size
<
1024
*
1024
*
this
.
fileSize
;
if
(
!
isLtSize
)
{
this
.
$message
.
error
(
'文件大小不能超过'
+
this
.
fileSize
+
'M!'
);
return
false
}
if
(
file
.
type
!==
"application/pdf"
)
{
this
.
$message
.
error
(
'项目任务书附件必须为pdf文件类型!'
);
return
false
}
return
true
},
}
};
</
script
>
\ No newline at end of file
src/views/report/task/components/taskFileInfo.vue
deleted
100644 → 0
View file @
f18fefd0
<
template
>
<div
class=
"from-table font-line-space"
>
<a-spin
:spinning=
"loading"
style=
"width: 100%;height: 100%;"
>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目编号
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
projNo
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目名称
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
projName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
申报人
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
personName
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
申报单位
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
appUnitName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
申报年度
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
projectInfo
.
reportYear
}}
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目开始结束时间
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
projectInfo
.
startDate
).
format
(
'YYYY-MM-DD'
)
}}
至
{{
moment
(
projectInfo
.
endDate
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
>
<div
class=
"tb-title"
>
附件
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
附件名称
</div>
</div>
</a-col>
<a-col
:span=
"16"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
附件文件
</div>
</div>
</a-col>
</a-row>
<a-row
v-for=
"(item, index) in projectInfo.fileList"
:key=
"'fileList' + index"
type=
"flex"
>
<a-col
:span=
"8"
style=
"text-align: center; margin-top: 10px;"
>
<span>
{{
item
.
fileExplain
}}
</span>
</a-col>
<a-col
:span=
"16"
>
<div
class=
"special-middle"
>
<div
v-if=
"item.downloadUrl"
class=
"file-box"
>
<div>
<document-view
:fileUrl=
"item.downloadUrl"
:fileName=
"item.fileName"
:imageArray=
"[item.downloadUrl]"
></document-view>
</div>
</div>
<div
v-else
style=
"text-align: center;"
>
无
</div>
</div>
</a-col>
</a-row>
</a-spin>
</div>
</
template
>
<
script
>
import
moment
from
'moment'
import
documentView
from
'@/views/components/common/documentView'
const
File
=
{
fileName
:
""
,
downloadUrl
:
""
,
fileExplain
:
"项目任务书"
,
downloadId
:
""
};
export
default
{
name
:
"taskFileEdit"
,
props
:
{
value
:
{
type
:
String
,
default
:
()
=>
{
return
null
}
},
},
components
:
{
documentView
},
data
()
{
return
{
projectInfo
:
{
projNo
:
''
,
projName
:
''
,
startDate
:
''
,
endDate
:
''
,
appPersonName
:
''
,
appUnitName
:
''
,
mobile
:
''
,
address
:
''
,
fileList
:
[{
...
File
}],
},
fileSize
:
15
,
};
},
created
()
{
this
.
getProjectBasicInfoById
()
},
methods
:
{
moment
,
getProjectBasicInfoById
()
{
if
(
this
.
value
!=
null
)
{
this
.
loading
=
true
this
.
$api
.
project
.
getProjectBasicInfoById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
projectInfo
=
data
if
(
this
.
projectInfo
.
fileList
==
null
||
this
.
projectInfo
.
fileList
.
length
<=
0
)
this
.
projectInfo
.
fileList
=
[{
...
File
}]
this
.
loading
=
false
}
}).
catch
(()
=>
{
this
.
loading
=
false
})
//() => { this.$emit('close', 'close') }
}
},
}
};
</
script
>
\ No newline at end of file
src/views/report/task/components/taskInfo.vue
View file @
e87de6fa
<
template
>
<
template
>
<div
class=
"assignment-detail"
>
<div
class=
"from-table font-line-space"
v-if=
"tabsData[0].isShow"
>
<!--
<a-button
type=
"primary"
>
导出任务书
</a-button>
-->
<div
v-if=
"tabsData[1].isShow"
>
<div
style=
"margin-top: 16px;"
></div>
<div
class=
"from-table"
>
<a-row>
<a-row>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
style=
"border-top: 0px;text-align: center;"
>
<div
class=
"
tb
-title"
>
<div
class=
"
main
-title"
>
<span>
研究项目
</span>
<span>
项目基本情况
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
项目名称
<div
class=
"tb-title"
>
</a-col>
<span>
申请人信息
</span>
<a-col
:span=
"22"
>
</div>
{{
value
.
projName
}}
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
起止时间
<div
class=
"special-middle"
>
</a-col>
<div>
姓名
</div>
<a-col
:span=
"22"
>
</div>
{{
value
.
startDate
}}
至
{{
value
.
endDate
}}
</a-col>
</a-col>
</a-row>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<a-row>
<div>
<a-col
:span=
"24"
>
{{
value
.
appPersonName
}}
<div
class=
"tb-title"
>
</div>
<span>
第一承担单位
</span>
</div>
</div>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-row
>
<div
class=
"special-middle"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div>
性别
</div
>
名称
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
value
.
appUnitName
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
sex
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
联系电话
<div
class=
"special-middle"
>
<div>
出生日期
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
value
.
linkTel
}}
<div
class=
"special-middle"
>
<div>
{{
moment
(
value
.
birthday
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
地址
<div
class=
"special-middle"
>
<div>
民族
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
value
.
linkAddress
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
nationName
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
邮政编码
<div
class=
"special-middle"
>
<div>
学位
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"5"
>
{{
value
.
postcode
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
degreeName
}}
</div>
</div>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-row
>
<div
class=
"special-middle"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<div>
职称
</div
>
主管部门
</div>
</a-col>
</a-col>
<a-col
:span=
"22"
>
<a-col
:span=
"5"
>
{{
value
.
authority
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
titleName
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
type=
"flex"
>
<a-row>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-col
:span=
"24"
>
<div
class=
"special-middle"
>
<div
class=
"tb-title"
>
<div>
电话
</div>
<span>
主要合作(参加)单位
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
<a-col
:span=
"5"
>
<a-row>
<div
class=
"special-middle"
>
<a-col
:span=
"1"
class=
"bg-gray"
>
<div>
序号
{{
value
.
mobile
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"9"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
单位名称
<div
class=
"special-middle"
>
<div>
电子邮箱
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"11"
class=
"bg-gray"
>
<a-col
:span=
"5"
>
地址
<div
class=
"special-middle"
>
<div>
{{
value
.
email
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
在项目中的分工
<div
class=
"special-middle"
>
<div>
每年工作时间(月)
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
jobTime
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in value.unitList"
:key=
"'unit' + index"
>
<a-row
type=
"flex"
>
<a-col
:span=
"1"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
{{
index
+
1
}}
<div
class=
"special-middle"
>
<div>
个人通讯地址
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"9"
>
<a-col
:span=
"21"
>
{{
item
.
unitName
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
address
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"11"
>
</a-row>
{{
item
.
unitAddress
}}
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
工作单位
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"3"
>
<a-col
:span=
"21"
>
{{
item
.
projectWork
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
appUnitName
}}
</div>
</div>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
主要研究领域
</div>
</div>
</a-col>
<a-col
:span=
"21"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.mainResearchAreas)"
></div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"tb-title"
>
<div
class=
"tb-title"
>
<span>
项目负责人
</span>
<span>
申请单位信息
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
姓名
<div
class=
"special-middle"
>
</a-col>
<div>
单位名称
</div>
<a-col
:span=
"10"
>
</div>
{{
value
.
appPersonName
}}
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
性别
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"20"
>
{{
value
.
sex
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
appUnitName
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
出生年
<div
class=
"special-middle"
>
<div>
联系人
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"8"
>
{{
value
.
birthYear
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
unitLinkName
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
联系电话
<div
class=
"special-middle"
>
<div>
电话
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"8"
>
{{
value
.
mobile
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
unitLinkMobile
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
学位
<div
class=
"special-middle"
>
<div>
电子信箱
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"8"
>
{{
value
.
degreeName
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
unitLinkEmail
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
职称
<div
class=
"special-middle"
>
<div>
传真
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
>
<a-col
:span=
"8"
>
{{
value
.
titleName
}}
<div
class=
"special-middle"
>
<div>
{{
value
.
unitLinkFax
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<!-- 项目合作单位 -->
<!--
<cooperative-units-info
:cooperativeUnits
.
sync=
"value.cooperativeUnits"
/>
-->
<a-row>
<a-row>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"tb-title"
>
<div
class=
"tb-title"
>
<span>
项目
组
</span>
<span>
项目
基本情况
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
type=
"flex"
>
<a-row
type=
"flex"
>
<a-col
:flex=
"1"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"bg-gray"
>
总人数
</div>
<div
class=
"special-middle"
>
<div>
{{
value
.
memCount
}}
</div>
<div>
项目名称
</div>
</a-col>
</div>
<a-col
:flex=
"1"
>
<div
class=
"bg-gray"
>
高职
</div>
<div>
{{
value
.
memHighCount
}}
</div>
</a-col>
<a-col
:flex=
"1"
>
<div
class=
"bg-gray"
>
中职
</div>
<div>
{{
value
.
memMiddleCount
}}
</div>
</a-col>
<a-col
:flex=
"1"
>
<div
class=
"bg-gray"
>
初职
</div>
<div>
{{
value
.
memLowCount
}}
</div>
</a-col>
<a-col
:flex=
"1"
>
<div
class=
"bg-gray"
>
博士研究生
</div>
<div>
{{
value
.
memBsCount
}}
</div>
</a-col>
<a-col
:flex=
"1"
>
<div
class=
"bg-gray"
>
硕士研究生
</div>
<div>
{{
value
.
memSsCount
}}
</div>
</a-col>
<a-col
:flex=
"1"
>
<div
class=
"bg-gray"
>
其他
</div>
<div>
{{
value
.
memOtherCount
}}
</div>
</a-col>
<a-col
:flex=
"0.5"
class=
"bg-gray"
>
<div
style=
"line-height: 80px;"
>
其中
</div>
</a-col>
<a-col
:flex=
"1"
>
<div
class=
"bg-gray"
>
博士
</div>
<div>
{{
value
.
memdegree1
}}
</div>
</a-col>
</a-col>
<a-col
:flex=
"1"
>
<a-col
:span=
"20"
>
<div
class=
"bg-gray"
>
硕士
</div>
<div
class=
"special-middle"
>
<div>
{{
value
.
memdegree2
}}
</div>
{{
value
.
projName
}}
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
实施目标和主要内容
<div
class=
"special-middle"
>
<div>
学科代码
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"20"
>
{{
value
.
testContent
}}
<div
class=
"special-middle"
>
{{
value
.
knowledgeName
}}
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
预期成果形式
<div
class=
"special-middle"
>
<div>
选题范围
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"20"
>
<a-col
:span=
"20"
>
<div
style=
"display: flex;flex-wrap: wrap;line-height: 2.5;"
>
<div
class=
"special-middle"
>
<div
v-for=
"(item, index) in value.target"
:key=
"index"
style=
"margin-right: 20px;"
>
{{
value
.
subjectScope
}}
<a-checkbox
:checked=
"item.checked"
:name=
"item.targetid"
disabled
>
{{
item
.
targetName
}}
</a-checkbox>
(
{{
item
.
resultCount
}}
)
</div>
</div>
</a-col>
<!--
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目类别
</div>
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
{{
value
.
projClass
}}
</div>
</a-col>
-->
</a-row>
</a-row>
<a-row
type=
"flex"
>
<a-row>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"24"
>
<div
class=
"special-middle"
>
<div
class=
"tb-title"
>
<div>
附注说明
</div>
<span>
经费投入
</span>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
class=
"special-middle"
>
{{
value
.
remark
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
总经费
<div
class=
"special-middle"
>
<div>
项日开始时间
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
v-if=
"value.budget.length > 1"
>
<a-col
:span=
"8"
>
{{
value
.
budget
[
0
].
totalBudget
}}
万元
<div
class=
"special-middle"
>
{{
moment
(
value
.
startDate
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
市卫计委资助
<div
class=
"special-middle"
>
<div>
项目结束时间
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
v-if=
"value.budget.length > 1"
>
<a-col
:span=
"8"
>
{{
value
.
budget
[
0
].
govBudget
}}
万元
<div
class=
"special-middle"
>
{{
moment
(
value
.
endDate
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"
24
"
>
<a-col
:span=
"
4"
class=
"bg-gray
"
>
<div
class=
"
tb-tit
le"
>
<div
class=
"
special-midd
le"
>
<
span>
一、项目要实现的目标和主要研发内容
</span
>
<
div>
项目总经费(万元)
</div
>
</div>
</div>
</a-col>
</a-col>
</a-row>
<a-col
:span=
"8"
>
<a-row>
<div
class=
"special-middle"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
{{
value
.
totalFunding
}}
万元
(一)项目要实现的目标
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
申请经费(万元)
</div>
</div>
</a-col>
<a-col
:span=
"8"
>
<div
class=
"special-middle"
>
{{
value
.
govFunding
}}
万元
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
class=
"more-row"
v-if=
"value.cont1.length >= 1"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
v-for=
"(cont, index) in value.cont1"
:key=
"index"
>
<div
class=
"special-middle"
>
{{
index
+
1
}}
、
{{
cont
.
contentInfo
}}
<div>
项目摘要(400字以内)
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
class=
"special-middle"
>
<div
v-html=
"toTextarea(value.projAbstract)"
></div>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
type=
"flex"
>
<a-row>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
(二)主要研发内容
<div>
关键词
</div>
</div>
</a-col>
<a-col
:span=
"20"
>
<div
class=
"special-middle"
>
{{
value
.
projKeywords
}}
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<!-- 项目主要参与单位及分工 -->
<participate-units-info
:dataList
.
sync=
"value.participateUnits"
/>
</div>
<div
v-if=
"tabsData[2].isShow"
>
<a-row>
<a-row>
<a-col
:span=
"24"
class=
"more-row
"
>
<a-col
:span=
"24"
style=
"border-top: 0px
"
>
<div
v-for=
"(cont, index) in value.cont2"
:key=
"index
"
>
<div
class=
"main-title
"
>
{{
index
+
1
}}
、
{{
cont
.
contentInfo
}}
<span>
项目人员情况
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"tb-title"
>
<div
class=
"tb-title"
>
<span>
二、项目的考核指标
</span>
<span>
项目负责人
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
(一)主要技术及学术指标 (形成的专利、新技术、新产品、新装置、论文专著、软件等的数量、指标及其水平等)
<div
class=
"special-middle"
>
<div>
姓名
</div>
</div>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"5"
>
<a-row
>
<div
class=
"special-middle"
>
<a-col
:span=
"24"
class=
"more-row"
>
<div
>
<div
v-for=
"(cont, index) in value.cont3"
:key=
"index"
>
{{
value
.
appPersonName
}}
{{
index
+
1
}}
、
{{
cont
.
contentInfo
}}
</div>
</div>
</div>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-row
>
<div
class=
"special-middle"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div>
性别
</div
>
(二)人才培养
</div>
</a-col>
</a-col>
</a-row
>
<a-col
:span=
"5"
>
<a-row
>
<div
class=
"special-middle"
>
<a-col
:span=
"24"
class=
"more-row"
>
<div
>
<div
v-for=
"(cont, index) in value.cont4"
:key=
"index"
>
{{
value
.
sex
}}
{{
index
+
1
}}
、
{{
cont
.
contentInfo
}}
</div>
</div>
</div>
</a-col>
</a-col>
</a-row>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-row>
<div
class=
"special-middle"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div>
出生日期
</div>
(三)其他应考核的指标
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
moment
(
value
.
birthday
).
format
(
'YYYY-MM-DD'
)
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
class=
"more-row"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
v-for=
"(cont, index) in value.cont5"
:key=
"index"
>
<div
class=
"special-middle"
>
{{
index
+
1
}}
、
{{
cont
.
contentInfo
}}
<div>
证件类型
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
身份证
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
证件号码
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
certId
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
民族
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
nationName
}}
</div>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
type=
"flex"
>
<a-row>
<a-col
:span=
"3"
class=
"bg-gray"
>
<a-col
:span=
"24"
>
<div
class=
"special-middle"
>
<div
class=
"tb-title"
>
<div>
职称
</div>
<span>
三、项目阶段实施内容及目标
</span>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
titleName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
从事专业
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
specName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
学位
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
degreeName
}}
</div>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
阶段
<div
class=
"special-middle"
>
<div>
职务
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
dutyName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
电话
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
mobile
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
电子邮箱
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"22"
class=
"bg-gray"
>
<a-col
:span=
"5"
>
阶段实施内容及阶段目标
<div
class=
"special-middle"
>
<div>
{{
value
.
email
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in value.cont6"
:key=
"index"
>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
{{
index
+
1
}}
</div>
<div
class=
"special-middle"
>
<div>
个人通讯地址
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"22"
class=
"more-row"
>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
<div>
起止日期:
{{
item
.
startTime
}}
---
{{
item
.
endTime
}}
{{
value
.
address
}}
</div>
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
工作单位
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
<div>
{{
item
.
contentInfo
}}
{{
value
.
appUnitName
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
每年工作时间(月)
</div>
</div>
</a-col>
<a-col
:span=
"5"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
jobTime
}}
</div>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<!-- 项目组成员 -->
<a-row>
<project-member-info
:dataList
.
sync=
"value.members"
/>
<a-col
:span=
"24"
>
<a-row
type=
"flex"
>
<div
class=
"tb-title"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<span>
四、项目经费预算
</span>
<div
class=
"special-middle"
>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
style=
"text-align: center;"
>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"8"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
经费来源预算
<div
class=
"special-middle"
>
<div>
总人数
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
高级
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"16"
class=
"bg-gray"
>
<a-col
:span=
"3"
class=
"bg-gray"
>
经费支出预算
<div
class=
"special-middle"
>
<div>
中级
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
初级
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
博士后
</div>
</div>
</a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
博士生
</div>
</div>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
硕士生
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
class=
"row_center"
>
<a-col
:span=
"4"
>
<a-col
:span=
"4"
>
科目
<div
class=
"special-middle"
>
<div>
{{
value
.
memCount
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"4"
>
<a-col
:span=
"3"
>
总经费来源(万元)
<div
class=
"special-middle"
>
<div>
{{
value
.
memHighCount
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memMiddleCount
}}
</div>
</div>
</a-col>
<a-col
:span=
"3"
>
<div
class=
"special-middle"
>
<div>
{{
value
.
memLowCount
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"4"
>
<a-col
:span=
"4"
>
科目
<div
class=
"special-middle"
>
<div>
{{
value
.
memBshCount
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"6"
>
<a-col
:span=
"4"
>
总经费支出(万元)
<div
class=
"special-middle"
>
<div>
{{
value
.
memBsCount
}}
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"6"
>
<a-col
:span=
"3"
>
其中市卫健委科技计费(万元)
<div
class=
"special-middle"
>
<div>
{{
value
.
memSsCount
}}
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
</div>
<template
v-if=
"value.budget.length > 1"
>
<div
v-if=
"tabsData[3].isShow"
>
<a-row>
<a-col
:span=
"4"
>
{{
value
.
budget
[
0
].
budgetName
}}
</a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
0
].
totalBudget
}}
</a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
3
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
3
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
3
].
govBudget
}}
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
>
{{
value
.
budget
[
1
].
budgetName
}}
</a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
1
].
govBudget
}}
</a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
4
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
4
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
4
].
govBudget
}}
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
>
{{
value
.
budget
[
2
].
budgetName
}}
</a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
2
].
unitBudget
}}
</a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
5
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
5
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
5
].
govBudget
}}
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
6
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
6
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
6
].
govBudget
}}
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
7
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
7
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
7
].
govBudget
}}
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
8
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
8
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
8
].
govBudget
}}
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
9
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
9
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
9
].
govBudget
}}
</a-col>
</a-row>
<a-row>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
10
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
10
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
10
].
govBudget
}}
</a-col>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"4"
></a-col
>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<
a-col
:span=
"4"
></a-col
>
<
div
class=
"main-title"
>
<a-col
:span=
"4"
>
{{
value
.
budget
[
11
].
budgetName
}}
</a-col
>
<span>
项目主要实施内容和目标
</span
>
<
a-col
:span=
"6"
>
{{
value
.
budget
[
11
].
totalBudget
}}
</a-col
>
<
/div
>
<a-col
:span=
"6"
>
{{
value
.
budget
[
11
].
govBudget
}}
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"4"
></a-col>
<div
class=
"special-middle"
>
<a-col
:span=
"4"
>
{{
value
.
budget
[
12
].
budgetName
}}
</a-col>
<div>
项目实施目标
</div>
<a-col
:span=
"6"
>
{{
value
.
budget
[
12
].
totalBudget
}}
</a-col>
</div>
<a-col
:span=
"6"
>
{{
value
.
budget
[
12
].
govBudget
}}
</a-col>
</a-col>
<a-col
:span=
"20"
>
<div
v-html=
"toTextarea(value.researchContent)"
></div>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<a-col
:span=
"4"
></a-col>
<a-col
:span=
"4"
>
{{
value
.
budget
[
13
].
budgetName
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
13
].
totalBudget
}}
</a-col>
<a-col
:span=
"6"
>
{{
value
.
budget
[
13
].
govBudget
}}
</a-col>
</a-row>
</
template
>
<a-row>
<a-col
:span=
"24"
>
<div
class=
"tb-title"
>
<div
class=
"tb-title"
>
<span>
项目
组成员(含项目负责人)
</span>
<span>
项目
考核指标
</span>
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
姓名
<div
class=
"special-middle"
>
</a-col>
<div>
主要技术指标
</div>
<a-col
:span=
"3"
class=
"bg-gray"
>
</div>
出生年月
</a-col>
<a-col
:span=
"2"
class=
"bg-gray"
>
学历
</a-col>
</a-col>
<a-col
:span=
"2
"
class=
"bg-gray
"
>
<a-col
:span=
"2
0
"
>
职称
<div
v-html=
"toTextarea(value.technologyTarget)"
></div>
</a-col>
</a-col>
</a-row>
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
研究方向
<div
class=
"special-middle"
>
<div>
主要经济指标
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"
6"
class=
"bg-gray
"
>
<a-col
:span=
"
20
"
>
工作单位
<div
v-html=
"toTextarea(value.economyTarget)"
></div>
</a-col>
</a-col>
<a-col
:span=
"3"
class=
"bg-gray"
>
</a-row>
项目分工
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
项目实施中形成的示范基地、中试线、生产线及其规模等
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"2
"
class=
"bg-gray
"
>
<a-col
:span=
"2
0
"
>
年参加月数
<div
v-html=
"toTextarea(value.achievementTarget)"
></div>
</a-col>
</a-col>
</a-row>
</a-row>
<a-row
v-for=
"(item, index) in value.members"
:key=
"'member' + index"
>
<a-row
type=
"flex"
>
<a-col
:span=
"2"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
{{item.name}}
<div
class=
"special-middle"
>
</a-col>
<div>
科技报告考核指标
</div>
<a-col
:span=
"3"
>
</div>
{{moment(item.birthday).format('YYYY-MM-DD')}}
</a-col>
</a-col>
<a-col
:span=
"2"
>
<a-col
:span=
"2
0
"
>
{{item.degreeName}}
<div
v-html=
"toTextarea(value.technologyReportsTarget)"
></div>
</a-col>
</a-col>
<a-col
:span=
"2"
>
</a-row>
{{item.titleName}}
<a-row
type=
"flex"
>
<a-col
:span=
"4"
class=
"bg-gray"
>
<div
class=
"special-middle"
>
<div>
其他应考核的指标
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"
4
"
>
<a-col
:span=
"
20
"
>
{{item.researchDirection}}
<div
v-html=
"toTextarea(value.otherTarget)"
></div>
</a-col>
</a-col>
<a-col
:span=
"6"
>
</a-row>
{{item.workUnit}}
</div>
<div
v-if=
"tabsData[4].isShow"
>
<a-row>
<a-col
:span=
"24"
style=
"border-top: 0px"
>
<div
class=
"main-title"
>
<span>
申请书正文
</span>
</div>
</a-col>
</a-col>
<a-col
:span=
"3"
>
</a-row>
{{item.projWork}}
<a-row
type=
"flex"
>
<a-col
:span=
"24"
class=
"bg-gray"
>
<div
class=
"special-middle"
style=
"font-weight: bold;text-align: center;"
>
<document-view
:fileUrl=
"value.downloadUrl"
:fileName=
"value.fileName"
:imageArray=
"[value.downloadUrl]"
v-if=
"!!value.downloadUrl"
></document-view>
</div>
</a-col>
</a-col>
<a-col
:span=
"2"
>
</a-row>
{{item.forMonths}}
</div>
<div
v-if=
"tabsData[5].isShow"
>
<!-- 经费预算 -->
<budget-info
:budget
.
sync=
"value.budget"
/>
<a-row
type=
"flex"
>
<a-col
:span=
"24"
style=
"text-align: center;"
>
<div
class=
"special-middle"
>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<!-- 分年度用款计划 -->
<fund-plan-info
:fundPlan
.
sync=
"value.fundPlan"
/>
<!-- 设备费-购置设备预算明细表 -->
<device-info
:deviceList
.
sync=
"value.deviceList"
/>
<!-- 设备费-试制设备预算明细表 -->
<manufacture-info
:manufactureList
.
sync:=
"value.manufactureList"
/>
<!-- 项目承担单位研究资金支出预算明细表 -->
<unit-payment-info
:unitPayment
.
sync=
"value.unitPayment"
/>
</div>
<div
v-if=
"tabsData[6].isShow"
>
<!-- 项目安排及阶段目标 -->
<proj-stage-goals-info
:stageGoals
.
sync=
"value.stageGoals"
/>
</div>
<div
v-if=
"tabsData[7].isShow"
>
<!-- 项目课题设置 -->
<project-sub-info
:dataList
.
sync=
"value.projectSubList"
/>
</div>
<div
v-if=
"tabsData[8].isShow"
>
<project-kpi-info
v-if=
"value.projectKPI"
:projectKPI
.
sync=
"value.projectKPI"
/>
</div>
<div
v-if=
"tabsData[9].isShow"
>
<!-- 附件 -->
<file-info
:fileList
.
sync=
"value.fileList"
/>
</div>
<div
v-if=
"tabsData[10].isShow"
>
<a-row>
<a-row>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
>
<div
class=
"
tb
-title"
>
<div
class=
"
main
-title"
>
<span>
审核记录
</span>
<span>
审核记录
</span>
</div>
</div>
</a-col>
</a-col>
...
@@ -541,163 +828,73 @@
...
@@ -541,163 +828,73 @@
</a-col>
</a-col>
</a-row>
</a-row>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
moment
from
'moment'
import
moment
from
'moment'
import
cooperativeUnitsInfo
from
'@/views/report/project/components/cooperativeUnitsInfo'
import
participateUnitsInfo
from
'@/views/report/project/components/participateUnitsInfo'
import
projectMemberInfo
from
'@/views/report/project/components/projectMemberInfo'
import
projectKpiInfo
from
'@/views/report/project/components/projectKpiInfo.vue'
import
budgetInfo
from
'@/views/report/project/components/budgetInfo'
import
fundPlanInfo
from
'@/views/report/project/components/fundPlanInfo'
import
unitPaymentInfo
from
'@/views/report/project/components/unitPaymentInfo'
import
deviceInfo
from
'@/views/report/project/components/deviceInfo'
import
manufactureInfo
from
'@/views/report/project/components/manufactureInfo'
import
projStageGoalsInfo
from
"@/views/report/project/components/projStageGoalsInfo"
;
import
projectSubInfo
from
'@/views/report/project/components/projectSubInfo'
import
fileInfo
from
"@/views/report/project/components/fileInfo"
;
import
documentView
from
'@/views/components/common/documentView'
import
AuditList
from
'@/views/audit/components/auditInfo'
import
AuditList
from
'@/views/audit/components/auditInfo'
import
{
toTextarea
}
from
'@/views/utils/common'
const
cont1
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'd37abeb6-14e0-4486-924d-e1e4baf67098'
,
showIndex
:
1
}
}
const
cont2
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'b1fe4003-16ed-482f-8fd5-e34b1482c3d4'
,
showIndex
:
1
}
}
const
cont3
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'b19cf66b-c1bb-4974-a524-114c1895dbd8'
,
showIndex
:
1
}
}
const
cont4
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'cf3abeff-9f1a-420e-b375-6aad33f12080'
,
showIndex
:
1
}
}
const
cont5
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'f1cea24c-d13d-48af-8abb-58eed9367c27'
,
showIndex
:
1
}
}
const
cont6
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'ebcdf2b0-011c-4d40-a064-f22d6f7ec646'
,
showIndex
:
1
}
}
export
default
{
export
default
{
components
:
{
components
:
{
AuditList
cooperativeUnitsInfo
,
projectMemberInfo
,
projectKpiInfo
,
budgetInfo
,
fundPlanInfo
,
unitPaymentInfo
,
deviceInfo
,
manufactureInfo
,
fileInfo
,
documentView
,
AuditList
,
projStageGoalsInfo
,
projectSubInfo
,
participateUnitsInfo
},
},
name
:
"
Tes
tInfo"
,
name
:
"
Projec
tInfo"
,
data
()
{
data
()
{
return
{
return
{
testInfo
:
{
id
:
''
,
projId
:
''
,
projName
:
''
,
startDate
:
null
,
endDate
:
null
,
appUnitName
:
''
,
linkTel
:
''
,
linkAddress
:
''
,
linkEmail
:
''
,
// 实施目标和主要内容
testContent
:
''
,
// 总经费
budgetCount
:
0
,
// 市卫计委资助
budgetGovCount
:
0
,
// 起止日期
startDate
:
null
,
endDate
:
null
,
// 申报人
appPersonName
:
null
,
sex
:
null
,
birthYear
:
null
,
mobile
:
null
,
degreeName
:
null
,
titleName
:
null
,
// 依托单位
appUnitName
:
null
,
linkEmail
:
null
,
linkTel
:
null
,
linkAddress
:
null
,
postcode
:
null
,
authority
:
null
,
// 项目内容
cont1
:
[
cont1
()],
cont2
:
[
cont2
()],
cont3
:
[
cont3
()],
cont4
:
[
cont4
()],
cont5
:
[
cont5
()],
cont6
:
[
cont6
()],
// 成员
members
:
[],
// 预期成果形式
target
:
[],
// 经费
budget
:
[],
//审核记录
auditList
:
[{
result
:
''
,
unit
:
''
,
time
:
''
}],
}
}
}
},
},
props
:
{
props
:
{
value
:
{
value
:
{
type
:
Object
,
type
:
Object
,
default
:
()
=>
{
default
:
()
=>
{
return
[...
this
.
testInfo
]
return
null
}
}
},
tabsData
:
{
type
:
Array
,
default
:
()
=>
{
return
[]
}
}
},
},
},
created
()
{
created
()
{
this
.
load
()
if
(
!!!
this
.
tabsData
||
this
.
tabsData
.
length
==
0
)
this
.
tabsData
=
[
{
title
:
'全部'
,
key
:
'0'
,
isShow
:
true
},
{
title
:
'项目基本信息'
,
key
:
'1'
,
isShow
:
true
},
{
title
:
'项目组主要成员'
,
key
:
'2'
,
isShow
:
true
},
{
title
:
'项目主要实施内容和目标'
,
key
:
'3'
,
isShow
:
true
},
{
title
:
'申请书正文'
,
key
:
'4'
,
isShow
:
true
},
{
title
:
'经费预算及设备明细'
,
key
:
'5'
,
isShow
:
true
},
{
title
:
'项目实施阶段及任务'
,
key
:
'6'
,
isShow
:
true
},
{
title
:
'项目课题设置'
,
key
:
'7'
,
isShow
:
true
},
{
title
:
'绩效目标表'
,
key
:
'8'
,
isShow
:
true
},
{
title
:
'附件信息'
,
key
:
'9'
,
isShow
:
true
},
{
title
:
'项目审核记录'
,
key
:
'10'
,
isShow
:
true
},
]
},
},
mounted
()
{
mounted
()
{
this
.
tinymceSet
()
},
},
methods
:
{
methods
:
{
moment
,
moment
,
toTextarea
,
load
()
{
},
tinymceSet
()
{
tinymce
.
remove
(
'#tinymce_dom'
)
tinymce
.
init
({
selector
:
'#tinymce_dom'
,
language
:
'zh_CN'
,
content_style
:
"img {max-width:100%;}"
,
height
:
800
,
inline
:
true
,
readonly
:
true
,
})
},
}
}
}
}
</
script
>
</
script
>
\ No newline at end of file
<
style
lang=
"less"
scoped
>
.from-table {
border-right: 1px solid #f0f0f0;
border-bottom: 1px solid #f0f0f0;
.ant-col {
padding: 0 16px;
line-height: 40px;
min-height: 40px;
border-left: 1px solid #f0f0f0;
border-top: 1px solid #f0f0f0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.bg-gray {
background-color: #f8fafc;
}
.more-row {
white-space: pre-wrap;
line-height: 2;
}
.flex-layout {
display: flex;
}
// 内容垂直居中
.special-middle {
position: relative;
top: 50%;
transform: translateY(-50%);
}
}
// 项目组 格式修改
.ant-row-flex {
text-align: center;
.ant-col {
padding: 0;
}
.bg-gray {
border-bottom: 1px solid #f0f0f0;
}
}
.tb-title {
color: #0079fe;
display: flex;
text-align: center;
height: 40px;
&::after {
content: "";
flex-grow: 1;
border-top: 1px dashed #d9d9d9;
transform: translateY(50%);
margin-left: 10px;
}
}
</
style
>
src/views/report/task/components/taskView.vue
View file @
e87de6fa
<
template
>
<
template
>
<div
class=
"report-detail"
>
<div
class=
"app-content layoutEmbedded"
style=
"height: 76vh;overflow: auto;"
>
<!--
<a-button
type=
"primary"
>
导出任务书
</a-button>
-->
<a-spin
:spinning=
"loading"
style=
"width: 100%;height: 100%;"
>
<div
style=
"margin-top: 16px;"
>
<div
class=
"page-content"
>
<test-info
v-model=
"testInfo"
/>
<a-tabs
type=
"card"
hideAdd
size=
"small"
@
change=
"callback"
>
<a-tab-pane
:key=
"item.key"
:tab=
"item.title"
v-for=
"(item) in tabsData"
>
</a-tab-pane>
</a-tabs>
</div>
<div
class=
"page-footer"
>
<!-- 申报项目详情 -->
<!--
<a-button
type=
"primary"
@
click=
"onExport"
>
导出
</a-button>
-->
<project-info
v-model=
"formData"
:tabsData
.
sync=
"tabsData"
v-if=
"projType=='1'"
/>
<project-info-Key
v-model=
"formData"
:tabsData
.
sync=
"tabsData"
v-if=
"projType=='2'"
/>
</div>
</div>
</a-spin>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
isEmptyParams
}
from
"@/views/utils/common"
const
projectKPI
=
{
import
TestInfo
from
'@/views/report/task/components/taskInfo'
reportYear
:
""
,
import
AuditList
from
'@/views/audit/components/auditInfo'
projName
:
""
,
appUnitName
:
""
,
const
cont1
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'd37abeb6-14e0-4486-924d-e1e4baf67098'
,
showIndex
:
1
}
}
managerDept
:
""
,
const
cont2
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'b1fe4003-16ed-482f-8fd5-e34b1482c3d4'
,
showIndex
:
1
}
}
projAttribute
:
""
,
const
cont3
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'b19cf66b-c1bb-4974-a524-114c1895dbd8'
,
showIndex
:
1
}
}
projDeadline
:
""
,
const
cont4
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'cf3abeff-9f1a-420e-b375-6aad33f12080'
,
showIndex
:
1
}
}
startDate
:
""
,
const
cont5
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'f1cea24c-d13d-48af-8abb-58eed9367c27'
,
showIndex
:
1
}
}
endData
:
""
,
const
cont6
=
()
=>
{
return
{
id
:
null
,
testId
:
null
,
contentInfo
:
''
,
startTime
:
null
,
endTime
:
null
,
contentType
:
'ebcdf2b0-011c-4d40-a064-f22d6f7ec646'
,
showIndex
:
1
}
}
yearTarget
:
""
,
year1Goal
:
""
,
year2Goal
:
""
,
year3Goal
:
""
,
totalBudget
:
0.00
,
applyFunds
:
0.00
,
selfFunds
:
0.00
,
yearTotal
:
0.00
,
yearApply
:
0.00
,
yearSelf
:
0.00
,
totalRowSpan
:
0
,
//总合并行数
outTarget
:
0
,
//一级指标(产出指标)
benefitTarget
:
0
,
//一级指标(效益指标)
satisfactionDegree
:
0
,
//一级指标(满意度指标)
quantityTarget
:
0
,
//二级指标(数量指标)
qualityTarget
:
0
,
//二级指标(质量指标)
validityTarget
:
0
,
//二级指标(时效指标)
costTarget
:
0
,
//二级指标(成本指标)
economicTarget
:
0
,
//二级指标(经济效益指标)
socialTarget
:
0
,
//二级指标(社会效益指标)
ecologicalTarget
:
0
,
//二级指标(生态效益指标)
sustainableTarget
:
0
,
//二级指标(可持续影响指标)
serviceTarget
:
0
,
//二级指标(服务对象满意度指标)
threeLevel
:
[],
kpiList
:
[],
};
import
{
budgetList
}
from
'@/views/report/project/config'
import
{
getType
}
from
'@/views/utils/auth'
import
projectInfo
from
'@/views/report/project/components/projectInfo'
import
projectInfoKey
from
"@/views/report/project/components/keyProject/projectInfo"
export
default
{
export
default
{
name
:
"
Tes
tView"
,
name
:
"
projec
tView"
,
components
:
{
components
:
{
TestInfo
,
AuditList
projectInfo
,
projectInfoKey
},
},
data
()
{
data
()
{
return
{
return
{
testInfo
:
{
tabsData
:
[
id
:
''
,
{
title
:
'全部'
,
key
:
'0'
,
isShow
:
true
},
projId
:
''
,
{
title
:
'项目基本信息'
,
key
:
'1'
,
isShow
:
true
},
projName
:
''
,
{
title
:
'项目组主要成员'
,
key
:
'2'
,
isShow
:
true
},
startDate
:
null
,
{
title
:
'项目主要实施内容和目标'
,
key
:
'3'
,
isShow
:
true
},
endDate
:
null
,
{
title
:
'申请书正文'
,
key
:
'4'
,
isShow
:
true
},
appUnitName
:
''
,
{
title
:
'经费预算及设备明细'
,
key
:
'5'
,
isShow
:
true
},
linkTel
:
''
,
{
title
:
'项目实施阶段及任务'
,
key
:
'6'
,
isShow
:
true
},
linkAddress
:
''
,
{
title
:
'项目课题设置'
,
key
:
'7'
,
isShow
:
true
},
linkEmail
:
''
,
{
title
:
'绩效目标表'
,
key
:
'8'
,
isShow
:
true
},
// 实施目标和主要内容
{
title
:
'附件信息'
,
key
:
'9'
,
isShow
:
true
},
testContent
:
''
,
{
title
:
'项目审核记录'
,
key
:
'10'
,
isShow
:
true
},
// 总经费
],
budgetCount
:
0
,
formData
:
{
// 市卫计委资助
id
:
null
,
budgetGovCount
:
0
,
// 起止日期
startDate
:
null
,
endDate
:
null
,
// 申报人
appPersonName
:
null
,
appPersonName
:
null
,
sex
:
null
,
sex
:
null
,
birth
Year
:
null
,
birth
day
:
null
,
mobil
e
:
null
,
nationNam
e
:
null
,
degreeName
:
null
,
degreeName
:
null
,
titleName
:
null
,
titleName
:
null
,
// 依托单位
mobile
:
null
,
email
:
null
,
jobTime
:
null
,
address
:
null
,
appUnitName
:
null
,
appUnitName
:
null
,
linkEmail
:
null
,
mainResearchAreas
:
null
,
linkTel
:
null
,
unitLinkName
:
null
,
linkAddress
:
null
,
unitLinkMobile
:
null
,
postcode
:
null
,
unitLinkEmail
:
null
,
authority
:
null
,
unitLinkFax
:
null
,
// 项目内容
projName
:
null
,
cont1
:
[
cont1
()],
knowledgeId
:
null
,
cont2
:
[
cont2
()],
subjectScope
:
null
,
cont3
:
[
cont3
()],
projClass
:
null
,
cont4
:
[
cont4
()],
remark
:
null
,
cont5
:
[
cont5
()],
startDate
:
null
,
cont6
:
[
cont6
()],
endDate
:
null
,
// 成员
totalFunding
:
null
,
govFunding
:
null
,
projAbstract
:
null
,
projKeywords
:
null
,
yearTarget
:
null
,
year1Goal
:
null
,
year2Goal
:
null
,
year3Goal
:
null
,
projectKPI
:
projectKPI
,
cooperativeUnits
:
[],
members
:
[],
members
:
[],
// 预期成果形式
target
:
[],
// 经费
budget
:
[],
budget
:
[],
//审核记录
fundPlan
:
[],
auditList
:
[{
result
:
''
,
unit
:
''
,
time
:
''
}],
fileList
:
[],
}
auditList
:
[],
}
managerDept
:
""
,
},
loading
:
false
,
projType
:
getType
()
};
},
},
props
:
{
props
:
{
value
:
{
value
:
{
...
@@ -85,26 +133,69 @@ export default {
...
@@ -85,26 +133,69 @@ export default {
},
},
},
},
created
()
{
created
()
{
this
.
get
TestInfoByProj
Id
()
this
.
get
ProjectInfoBy
Id
()
},
},
methods
:
{
methods
:
{
getTestInfoByProjId
()
{
getProjectInfoById
()
{
let
pars
=
{
projId
:
this
.
value
}
if
(
this
.
value
!=
null
)
{
this
.
$api
.
taskReport
.
getTestInfoByProjId
(
pars
).
then
(({
data
=
{}
})
=>
{
this
.
loading
=
true
this
.
$api
.
project
.
getProjectInfoById
({
id
:
this
.
value
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
if
(
data
)
{
this
.
testInfo
=
data
this
.
formData
=
data
this
.
loading
=
false
}
else
this
.
$emit
(
'close'
,
'error'
)
}).
catch
(()
=>
{
this
.
$emit
(
'close'
,
'error'
)
})
}
}
}).
catch
(()
=>
{
},
onExport
()
{
this
.
$api
.
project
.
export
({
id
:
this
.
value
}).
then
((
res
)
=>
{
let
blob
=
new
Blob
([
res
],
{
type
:
"application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8"
,
});
const
fileName
=
this
.
formData
.
projName
+
'.doc'
;
let
downloadElement
=
document
.
createElement
(
'a'
)
let
href
=
window
.
URL
.
createObjectURL
(
blob
);
//创建下载的链接
downloadElement
.
href
=
href
;
downloadElement
.
download
=
fileName
;
//下载后文件名
document
.
body
.
appendChild
(
downloadElement
);
downloadElement
.
click
();
//点击下载
document
.
body
.
removeChild
(
downloadElement
);
//下载完成移除元素
window
.
URL
.
revokeObjectURL
(
href
);
//释放blob
})
})
}
},
}
callback
(
key
)
{
var
index
=
parseInt
(
key
)
this
.
tabsData
.
forEach
(
e
=>
{
if
(
key
==
'0'
)
e
.
isShow
=
true
else
e
.
isShow
=
false
})
this
.
tabsData
[
0
].
isShow
=
true
;
this
.
tabsData
[
index
].
isShow
=
true
;
},
},
}
}
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
scoped
lang=
"less"
>
.report-detail {
::v-deep .ant-spin-container {
height: 70vh;
width: 100%;
height: 100%;
}
::-webkit-scrollbar {
width: 8px;
height: 6px;
}
.page-content {
width: 100%;
height: 50px;
}
.page-footer {
width: 100%;
height: calc(100% - 50px);
overflow: auto;
overflow: auto;
border-left: 1px solid #f0f0f0;
border-top: 1px solid #f0f0f0;
}
}
</
style
>
</
style
>
src/views/report/task/projectTask.vue
deleted
100644 → 0
View file @
f18fefd0
<
template
>
<div
class=
"app-content"
>
<a-form
layout=
"inline"
:form=
"form"
:model=
"searchForm"
>
<a-form-item>
<a-input
placeholder=
"项目名称"
v-model=
"searchForm.projName"
:maxLength=
"100"
style=
"width: 160px"
/>
</a-form-item>
<a-form-item>
<a-input
placeholder=
"项目编号"
v-model=
"searchForm.projNo"
:maxLength=
"100"
style=
"width: 160px"
/>
</a-form-item>
<a-form-item>
<base-select
v-model=
"searchForm.reportYear"
:title=
"'年度'"
:type=
"7"
:isAll=
"true"
:width=
"160"
/>
</a-form-item>
<a-form-item>
<a-button
type=
"primary"
icon=
"search"
@
click=
"searchList"
>
搜索
</a-button>
<a-button
icon=
"reload"
style=
"margin-left: 10px"
@
click=
"searchFormReset"
class=
"bt-normal"
>
重置
</a-button>
<a-button
type=
"primary"
style=
"margin-left: 10px"
@
click=
"FileDownload"
icon=
"download"
>
项目任务书模板下载
</a-button>
</a-form-item>
<div
style=
"width:100%;margin-bottom: 8px;"
>
<a-button
type=
"primary"
@
click=
"exportData"
>
导出Excel
</a-button>
</div>
</a-form>
<a-table
:dataSource=
"tableData"
:columns=
"columns"
rowKey=
"projId"
:pagination=
"false"
:loading=
"loading"
>
<!-- :row-selection="
{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio' }" -->
<template
slot=
"projName"
slot-scope=
"record"
>
<a
@
click=
"recordClick(record, 'viewProject')"
>
{{
record
.
projName
}}
</a>
</
template
>
<
template
slot=
"testStateName"
slot-scope=
"record"
>
<span
v-if=
"record"
>
{{
record
}}
</span>
<span
v-else
>
未填写
</span>
</
template
>
<
template
slot=
"option"
slot-scope=
"record"
>
<a-button
type=
"primary"
size=
"small"
v-if=
"((!record.testState||record.testState==1))"
@
click=
"recordClick(record,'UploadProjTask')"
>
上传项目任务书
</a-button>
</
template
>
</a-table>
<a-pagination
v-if=
"pagination.total > 0"
:total=
"pagination.total"
show-size-changer
show-quick-jumper
v-model=
"pagination.pageIndex"
:page-size=
"pagination.pageSize"
:page-size-options=
"pagination.pageSizeOptions"
@
showSizeChange=
"showSizeChange"
@
change=
"change"
:showTotal=
"() => `共 ${pagination.total} 条`"
/>
<a-modal
v-model=
"taskFileEditView"
title=
"上传项目任务书"
:width=
"'60%'"
:maskClosable=
"false"
:footer=
"null"
destroyOnClose
class=
"sc_modal"
>
<task-file-edit
v-model=
"selectProjId"
@
close=
"closeTaskFileEditWindow"
/>
</a-modal>
<a-modal
v-model=
"visibleView"
v-if=
"visibleView"
title=
"项目详情"
width=
"94%"
:footer=
"null"
:dialog-style=
"{ top: '8%' }"
destroyOnClose
:maskClosable=
"false"
>
<project-view
v-model=
"selectProjId"
@
close=
"() => this.visibleView = false"
/>
</a-modal>
</div>
</template>
<
script
>
import
{
isEmptyParams
,
filterExportExcelData
,
tableColumnsName
,
}
from
"@/views/utils/common"
;
import
{
getType
}
from
'@/views/utils/auth'
import
baseSelect
from
'@/views/components/common/baseSelect'
import
taskFileEdit
from
'@/views/report/task/components/taskFileEdit'
import
projectView
from
'@/views/report/project/components/projectView'
import
moment
from
'moment'
import
axios
from
'axios'
const
columns
=
[
{
title
:
"项目名称"
,
scopedSlots
:
{
customRender
:
'projName'
}
},
{
title
:
"项目编号"
,
dataIndex
:
"projNo"
},
{
title
:
"项目开始时间"
,
dataIndex
:
"projStart"
,
tabKey
:
"2"
},
{
title
:
"项目结束时间"
,
dataIndex
:
"projEnd"
,
tabKey
:
"2"
},
{
title
:
"申报年度"
,
dataIndex
:
"reportYear"
},
//{ title: "状态", dataIndex: "testStateName", scopedSlots: { customRender: "testStateName" }, },
{
title
:
"操作"
,
fixed
:
"right"
,
width
:
"200px"
,
scopedSlots
:
{
customRender
:
"option"
},
align
:
'center'
},
];
export
default
{
name
:
"projectTask"
,
components
:
{
baseSelect
,
taskFileEdit
,
projectView
,
},
data
()
{
return
{
form
:
this
.
$form
.
createForm
(
this
,
{
name
:
'advanced_search'
}),
searchForm
:
{
projName
:
''
,
projNo
:
''
,
testState
:
'5'
,
reportYear
:
null
},
tableData
:
[],
columns
:
columns
,
pagination
:
{
pageIndex
:
1
,
pageSize
:
this
.
$defaultPageSize
,
total
:
0
,
pageSizeOptions
:
this
.
$defaultPageSizeOptions
,
},
selectedRowKeys
:
[],
loading
:
false
,
taskFileEditView
:
false
,
selectProjId
:
null
,
//selectTaskId: null,
//selectTestState: null,
visibleView
:
false
,
id
:
null
,
url1
:
{
downloadUrl
:
'/downloadFile/202408091430.doc'
,
fileName
:
'项目任务书模板.doc'
,
},
url2
:
{
downloadUrl
:
'/downloadFile/202408091430.doc'
,
fileName
:
'公立医院高水平临床专科发展科技项目任务书.doc'
,
},
realurl
:
null
,
};
},
created
()
{
this
.
getYear
()
if
(
getType
()
==
1
)
this
.
realurl
=
this
.
url1
else
this
.
realurl
=
this
.
url2
},
methods
:
{
getYear
()
{
this
.
$api
.
batch
.
getCurrentYearBatch
({
type
:
1
,
projType
:
getType
()
}).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
this
.
searchForm
.
reportYear
=
data
.
year
this
.
getListByPage
()
}
}).
catch
(()
=>
{
})
},
getListByPage
()
{
this
.
loading
=
true
let
pars
=
isEmptyParams
(
this
.
searchForm
)
let
par
=
{
...
pars
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
}
this
.
$api
.
taskReport
.
getListByPage
(
par
).
then
(({
data
=
{}
})
=>
{
if
(
data
)
{
const
{
dataList
=
[],
total
=
0
}
=
data
this
.
tableData
=
dataList
this
.
pagination
.
total
=
total
this
.
loading
=
false
this
.
tableData
.
forEach
(
e
=>
{
if
(
e
.
projStart
)
{
e
.
projStart
=
moment
(
e
.
projStart
).
format
(
'YYYY-MM-DD'
)
e
.
projEnd
=
moment
(
e
.
projEnd
).
format
(
'YYYY-MM-DD'
)
}
})
}
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
searchList
()
{
this
.
getListByPage
()
},
change
()
{
this
.
getListByPage
()
},
showSizeChange
(
current
,
pageSize
)
{
this
.
pagination
.
pageIndex
=
current
this
.
pagination
.
pageSize
=
pageSize
this
.
getListByPage
()
},
onSelectChange
(
selectedRowKeys
,
selectedRows
)
{
this
.
selectedRowKeys
=
selectedRowKeys
this
.
selectProjId
=
selectedRows
[
0
].
projId
// this.selectTaskId = selectedRows[0].id
// this.selectTestState = selectedRows[0].testState
},
searchFormReset
()
{
this
.
searchForm
=
{
projName
:
''
,
projNo
:
''
,
testState
:
'5'
,
reportYear
:
moment
().
year
(),
}
},
recordClick
(
record
,
type
)
{
if
(
type
===
'UploadProjTask'
)
{
this
.
selectProjId
=
record
.
projId
this
.
taskFileEditView
=
true
}
if
(
type
===
'viewProject'
)
{
this
.
selectProjId
=
record
.
projId
this
.
visibleView
=
true
}
},
closeTaskFileEditWindow
()
{
this
.
taskFileEditView
=
false
},
exportData
()
{
this
.
$ToDoExcel
(
`任务书列表`
,
tableColumnsName
(
this
.
columns
),
filterExportExcelData
(
this
.
columns
,
this
.
tableData
))
},
FileDownload
()
{
axios
({
url
:
this
.
realurl
.
downloadUrl
,
// 替换为实际文件的URL
method
:
'GET'
,
responseType
:
'blob'
// 告诉axios返回的数据类型为Blob
}).
then
(
response
=>
{
const
url
=
window
.
URL
.
createObjectURL
(
new
Blob
([
response
.
data
]))
const
link
=
document
.
createElement
(
'a'
)
link
.
href
=
url
link
.
setAttribute
(
'download'
,
this
.
realurl
.
fileName
)
// 下载文件的名称
document
.
body
.
appendChild
(
link
)
link
.
click
()
})
},
}
};
</
script
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment