1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<template>
<div class="app-content" style="height: 76vh;overflow: auto;">
<a-spin :spinning="loading" style="width: 100%;height: 100%;">
<div class="page-content">
<div style=" width: 100%;height: 50px;">
<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 style="width: 100%;height: calc(100% - 50px);overflow: auto;" ref="main">
<div class="x_modal_content">
<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'" />
<a-form-model ref="form" :model="auditObj" :rules="rules" class="from-table font-line-space">
<audit-edit :auditObj.sync="auditObj" />
</a-form-model>
</div>
</div>
</div>
<div class="page-footer">
<a-button type="primary" @click="submit" style="margin-left:16px;">提交</a-button>
</div>
</a-spin>
</div>
</template>
<script>
const projectKPI = {
reportYear: "",
projName: "",
appUnitName: "",
managerDept: "",
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 { isEmptyParams } from "@/views/utils/common";
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"
import AuditList from '@/views/audit/components/auditInfo'
import AuditEdit from '@/views/audit/components/auditEdit'
export default {
name: "Audit",
components: {
projectInfo, projectInfoKey, AuditList, AuditEdit
},
data () {
return {
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 },
],
formData: {
id: null,
appPersonName: null,
sex: null,
birthday: null,
nationName: null,
degreeName: null,
titleName: null,
mobile: null,
email: null,
jobTime: null,
address: null,
appUnitName: null,
mainResearchAreas: null,
unitLinkName: null,
unitLinkMobile: null,
unitLinkEmail: null,
unitLinkFax: null,
projName: null,
knowledgeId: null,
subjectScope: null,
projClass: null,
remark: null,
startDate: null,
endDate: null,
totalFunding: null,
govFunding: null,
projAbstract: null,
projKeywords: null,
yearTarget: null,
year1Goal: null,
year2Goal: null,
year3Goal: null,
projectKPI: projectKPI,
cooperativeUnits: [],
members: [],
budget: [],
fundPlan: [],
fileList: [],
auditList: [],
managerDept: "",
},
auditObj: { id: this.value, auditObjectId: this.objId, auditResult: null, auditType: 1, auditContent: '' },
rules: {
auditContent: { required: true, message: '请填写审核意见', trigger: 'blur' },
auditResult: { required: true, message: '请选择审核结果', trigger: 'change' },
},
loading: false,
projType: getType()
};
},
props: {
value: {
type: String,
default: () => {
return null
}
},
objId: {
type: String,
default () {
return null
}
},
},
created () {
this.loadProject()
},
methods: {
loadProject () {
let pars = { id: this.objId }
if (this.objId != null) {
this.loading = true
this.$api.project.getProjectInfoById(pars).then(({ data = {} }) => {
if (data) {
this.formData = data
this.loading = false
} else
this.$emit('close', 'error')
}).catch(() => { this.$emit('close', 'error') })
}
},
submit () {
this.$refs.form.validate(valid => {
if (valid) {
this.loading = true
let pars = isEmptyParams(this.auditObj)
let par = { ...pars }
this.$api.audit.projectAudit(par).then(({ data = {} }) => {
if (data) {
if (data === '项目上报已经到达上限!') {
this.$message.info('项目上报已经到达上限!')
} else {
this.$message.success('审核成功!')
this.$emit('close', 'audit')
}
}
this.loading = false
}).catch(() => { this.loading = false })
} else {
this.changeScroll()
this.$message.error('请选择审核结果或填写审核意见!')
return false
}
})
},
changeScroll () {
this.$refs.main.scrollTop = document.getElementsByClassName('x_modal_content')[0].offsetHeight
},
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>
<style scoped lang="less">
::v-deep .ant-spin-container {
width: 100%;
height: 100%;
}
::v-deep .page-content {
width: 100%;
height: calc(100% - 40px);
overflow: auto;
}
::v-deep .page-footer {
width: 100%;
height: 40px;
line-height: 40px;
background: rgb(248, 248, 248);
text-align: center;
}
textarea {
height: 115px;
}
</style>