|
|
@@ -7,6 +7,7 @@
|
|
7
|
7
|
<el-divider></el-divider>
|
|
8
|
8
|
|
|
9
|
9
|
<div class="content">
|
|
|
10
|
+ <!-- 项目基本信息 -->
|
|
10
|
11
|
<div class="box1">
|
|
11
|
12
|
<div class="title">项目基本信息
|
|
12
|
13
|
<div class="line"></div>
|
|
|
@@ -142,6 +143,7 @@
|
|
142
|
143
|
</el-descriptions>
|
|
143
|
144
|
</div>
|
|
144
|
145
|
</div>
|
|
|
146
|
+ <!-- 项目管理部安排 -->
|
|
145
|
147
|
<div class="box1 mt20">
|
|
146
|
148
|
<div class="title">项目管理部安排
|
|
147
|
149
|
<div class="line"></div>
|
|
|
@@ -204,6 +206,7 @@
|
|
204
|
206
|
</el-descriptions>
|
|
205
|
207
|
</div>
|
|
206
|
208
|
</div>
|
|
|
209
|
+ <!-- 任务审核情况 -->
|
|
207
|
210
|
<div class="box1 mt20">
|
|
208
|
211
|
<div class="title">任务审核情况
|
|
209
|
212
|
<div class="line"></div>
|
|
|
@@ -218,7 +221,9 @@
|
|
218
|
221
|
<div>
|
|
219
|
222
|
<el-input disabled type="textarea" v-model="projectComment.jyComment"></el-input>
|
|
220
|
223
|
<div class="sign mt10">
|
|
221
|
|
- <div class="mr20">签名:<span class="auditor">{{ projectComment.jyUser ? projectComment.jyUser.nickName : '' }}</span>
|
|
|
224
|
+ <div class="mr20">签名:<span class="auditor">{{ projectComment.jyUser ? projectComment.jyUser.nickName :
|
|
|
225
|
+ ''
|
|
|
226
|
+ }}</span>
|
|
222
|
227
|
</div>
|
|
223
|
228
|
<div class="ml20"><span>审核时间:{{ projectComment.jyApprovalTime }}</span></div>
|
|
224
|
229
|
</div>
|
|
|
@@ -232,7 +237,8 @@
|
|
232
|
237
|
<div>
|
|
233
|
238
|
<el-input disabled type="textarea" v-model="projectComment.manageComment"></el-input>
|
|
234
|
239
|
<div class="sign mt10">
|
|
235
|
|
- <div class="mr20">签名:<span class="auditor">{{ projectComment.managerUser ? projectComment.managerUser.nickName : '' }}</span>
|
|
|
240
|
+ <div class="mr20">签名:<span class="auditor">{{ projectComment.managerUser ?
|
|
|
241
|
+ projectComment.managerUser.nickName : '' }}</span>
|
|
236
|
242
|
</div>
|
|
237
|
243
|
<div class="ml20"><span>审核时间:{{ projectComment.manageApprovalTime }}</span></div>
|
|
238
|
244
|
</div>
|
|
|
@@ -255,10 +261,131 @@
|
|
255
|
261
|
</el-descriptions>
|
|
256
|
262
|
</div>
|
|
257
|
263
|
</div>
|
|
|
264
|
+
|
|
|
265
|
+ <div class="box1 mt20">
|
|
|
266
|
+ <div class="title">项目生产情况
|
|
|
267
|
+ <div class="line"></div>
|
|
|
268
|
+ </div>
|
|
|
269
|
+ <div class="info mt20">
|
|
|
270
|
+ <el-descriptions class="descriptions" border :column="2" style="text-align: center;">
|
|
|
271
|
+ <el-descriptions-item :span="2">
|
|
|
272
|
+ <template slot="label">
|
|
|
273
|
+ <svg-icon slot="prefix" icon-class="form" />
|
|
|
274
|
+ 安全交底记录表
|
|
|
275
|
+ </template>
|
|
|
276
|
+ <el-link type="primary" @click="openSafe = true">安全交底记录表</el-link>
|
|
|
277
|
+ </el-descriptions-item>
|
|
|
278
|
+ <el-descriptions-item :span="2">
|
|
|
279
|
+ <template slot="label">
|
|
|
280
|
+ <svg-icon slot="prefix" icon-class="form" />
|
|
|
281
|
+ 技术交底记录表
|
|
|
282
|
+ </template>
|
|
|
283
|
+ <el-link type="primary" @click="openTech = true">技术交底记录表</el-link>
|
|
|
284
|
+ </el-descriptions-item>
|
|
|
285
|
+ <el-descriptions-item :span="2">
|
|
|
286
|
+ <template slot="label">
|
|
|
287
|
+ <svg-icon slot="prefix" icon-class="equipment" />
|
|
|
288
|
+ 申请设备
|
|
|
289
|
+ </template>
|
|
|
290
|
+ <el-select v-model="devices" multiple disabled style="width:100%">
|
|
|
291
|
+ <el-option v-for="item in deviceList" :key="item.deviceId" :label="item.name + '【' + (item.brand != null ? item.brand : '') + (item.series != null ? '-' + item.series + '】' : '')
|
|
|
292
|
+ + (item.code != null ? '(设备编号:' + item.code + ')' : '') + '📍' + item.place" :value="item.deviceId">
|
|
|
293
|
+ </el-option>
|
|
|
294
|
+ </el-select>
|
|
|
295
|
+ </el-descriptions-item>
|
|
|
296
|
+ <el-descriptions-item :span="2">
|
|
|
297
|
+ <template slot="label">
|
|
|
298
|
+ <svg-icon slot="prefix" icon-class="car" />
|
|
|
299
|
+ 使用车辆
|
|
|
300
|
+ </template>
|
|
|
301
|
+ <el-select v-model="cars" multiple disabled style="width:100%">
|
|
|
302
|
+ <el-option v-for="item in carList" :label="item.licensePlate + item.brand" :value="item.carId"
|
|
|
303
|
+ :key="item.carId">
|
|
|
304
|
+ </el-option>
|
|
|
305
|
+ </el-select>
|
|
|
306
|
+ </el-descriptions-item>
|
|
|
307
|
+ <el-descriptions-item :span="2">
|
|
|
308
|
+ <template slot="label">
|
|
|
309
|
+ <svg-icon slot="prefix" icon-class="peoples" />
|
|
|
310
|
+ 驾驶员
|
|
|
311
|
+ </template>
|
|
|
312
|
+ <el-select v-model="drivers" multiple disabled style="width:100%">
|
|
|
313
|
+ <el-option v-for="item in userList" :label="item.nickName" :value="item.userId" :key="item.userId">
|
|
|
314
|
+ </el-option>
|
|
|
315
|
+ </el-select>
|
|
|
316
|
+ </el-descriptions-item>
|
|
|
317
|
+ <el-descriptions-item :span="2">
|
|
|
318
|
+ <template slot="label">
|
|
|
319
|
+ <svg-icon slot="prefix" icon-class="dept" />
|
|
|
320
|
+ 参与人员
|
|
|
321
|
+ </template>
|
|
|
322
|
+ <el-select v-model="participates" multiple disabled style="width:100%">
|
|
|
323
|
+ <el-option v-for="item in userList" :label="item.nickName" :value="item.userId" :key="item.userId">
|
|
|
324
|
+ </el-option>
|
|
|
325
|
+ </el-select>
|
|
|
326
|
+ </el-descriptions-item>
|
|
|
327
|
+ <el-descriptions-item>
|
|
|
328
|
+ <template slot="label">
|
|
|
329
|
+ <svg-icon slot="prefix" icon-class="date" />
|
|
|
330
|
+ 进场时间
|
|
|
331
|
+ </template>
|
|
|
332
|
+ {{ project.entryTime }}
|
|
|
333
|
+ </el-descriptions-item>
|
|
|
334
|
+ <el-descriptions-item>
|
|
|
335
|
+ <template slot="label">
|
|
|
336
|
+ <svg-icon slot="prefix" icon-class="date" />
|
|
|
337
|
+ 撤场时间
|
|
|
338
|
+ </template>
|
|
|
339
|
+ {{ project.exitTime }}
|
|
|
340
|
+ </el-descriptions-item>
|
|
|
341
|
+ <el-descriptions-item :span="2">
|
|
|
342
|
+ <template slot="label">
|
|
|
343
|
+ <svg-icon slot="prefix" icon-class="date" />
|
|
|
344
|
+ 项目进度
|
|
|
345
|
+ </template>
|
|
|
346
|
+ <div>
|
|
|
347
|
+ <el-table :data="progressList">
|
|
|
348
|
+ <el-table-column type="index" width="50" />
|
|
|
349
|
+ <el-table-column label="截至日期" prop="date" />
|
|
|
350
|
+ <el-table-column label="累计总进度(%)" prop="percentage" />
|
|
|
351
|
+ <el-table-column label="情况说明" prop="situation" />
|
|
|
352
|
+ </el-table>
|
|
|
353
|
+ </div>
|
|
|
354
|
+ </el-descriptions-item>
|
|
|
355
|
+ <el-descriptions-item :span="2">
|
|
|
356
|
+ <template slot="label">
|
|
|
357
|
+ <svg-icon slot="prefix" icon-class="date" />
|
|
|
358
|
+ 项目借款
|
|
|
359
|
+ </template>
|
|
|
360
|
+ <borrow-data :taskForm="taskForm"></borrow-data>
|
|
|
361
|
+ </el-descriptions-item>
|
|
|
362
|
+ <el-descriptions-item :span="2">
|
|
|
363
|
+ <template slot="label">
|
|
|
364
|
+ <svg-icon slot="prefix" icon-class="date" />
|
|
|
365
|
+ 成果汇交
|
|
|
366
|
+ </template>
|
|
|
367
|
+ {{'xxxx'}}
|
|
|
368
|
+ </el-descriptions-item>
|
|
|
369
|
+ <el-descriptions-item :span="2">
|
|
|
370
|
+ <template slot="label">
|
|
|
371
|
+ <svg-icon slot="prefix" icon-class="date" />
|
|
|
372
|
+ 产值结算
|
|
|
373
|
+ </template>
|
|
|
374
|
+ <settle-data :taskForm="taskForm"></settle-data>
|
|
|
375
|
+ </el-descriptions-item>
|
|
|
376
|
+ </el-descriptions>
|
|
|
377
|
+ </div>
|
|
|
378
|
+ </div>
|
|
258
|
379
|
</div>
|
|
259
|
380
|
<el-dialog title="项目预算" :visible.sync="openBudget" width="1000px" append-to-body>
|
|
260
|
381
|
<budget-info :taskForm="taskForm" :taskName="''"></budget-info>
|
|
261
|
382
|
</el-dialog>
|
|
|
383
|
+ <el-dialog title="安全交底记录表" :visible.sync="openSafe" width="1000px" append-to-body>
|
|
|
384
|
+ <safe-tab :taskForm="taskForm"></safe-tab>
|
|
|
385
|
+ </el-dialog>
|
|
|
386
|
+ <el-dialog title="技术交底记录表" :visible.sync="openTech" width="1000px" append-to-body>
|
|
|
387
|
+ <technical-tab :taskForm="taskForm"></technical-tab>
|
|
|
388
|
+ </el-dialog>
|
|
262
|
389
|
</div>
|
|
263
|
390
|
</template>
|
|
264
|
391
|
|
|
|
@@ -266,23 +393,33 @@
|
|
266
|
393
|
import { getDept } from "@/api/system/dept";
|
|
267
|
394
|
import { getUsersDeptLeaderByDept } from '@/api/system/post'
|
|
268
|
395
|
import { listUser, getUser } from "@/api/system/user";
|
|
269
|
|
-import { listProject, getProject, submitProject, modifyProject, delProject } from "@/api/oa/project/project";
|
|
|
396
|
+import { getProject } from "@/api/oa/project/project";
|
|
270
|
397
|
import { listProjectWork, addProjectWork } from "@/api/oa/project/projectWork";
|
|
271
|
398
|
import { listProjectComment, getProjectComment } from "@/api/oa/project/projectComment";
|
|
272
|
399
|
import { listProjectProgress, getProjectProgress } from "@/api/oa/project/projectProgress";
|
|
273
|
400
|
import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
|
|
274
|
401
|
import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
|
|
|
402
|
+import { listDevice } from "@/api/oa/device/device";
|
|
|
403
|
+import { listCar } from '@/api/oa/car/car';
|
|
275
|
404
|
import budgetInfo from '../../flowable/form/budget/budgetInfo.vue';
|
|
|
405
|
+import SafeTab from '../../flowable/form/projectProcess/safeTab.vue';
|
|
|
406
|
+import TechnicalTab from '../../flowable/form/projectProcess/technicalTab.vue';
|
|
|
407
|
+import SettleData from '../../flowable/form/inProgress/settleData.vue';
|
|
|
408
|
+import BorrowData from '../../flowable/form/inProgress/borrowData.vue';
|
|
276
|
409
|
export default {
|
|
277
|
|
- components: { budgetInfo },
|
|
|
410
|
+ components: { budgetInfo, SafeTab, TechnicalTab, SettleData, BorrowData },
|
|
278
|
411
|
created() {
|
|
279
|
412
|
this.getUserList();
|
|
|
413
|
+ this.getDeviceList();
|
|
|
414
|
+ this.getCarList();
|
|
280
|
415
|
if (this.$route.query) {
|
|
281
|
416
|
this.taskForm.formId = this.$route.query.projectId
|
|
282
|
|
- this.getProjectInfo(this.$route.query.projectId)
|
|
283
|
|
- this.getProjectWorkList(this.$route.query.projectId)
|
|
284
|
|
- this.getProjectCommentList(this.$route.query.projectId)
|
|
285
|
|
- this.getContractDataList(this.$route.query.projectId);
|
|
|
417
|
+ let projectId = this.$route.query.projectId
|
|
|
418
|
+ this.getProjectInfo(projectId)
|
|
|
419
|
+ this.getProjectWorkList(projectId)
|
|
|
420
|
+ this.getProjectCommentList(projectId)
|
|
|
421
|
+ this.getContractDataList(projectId);
|
|
|
422
|
+ this.getProjectProgressList(projectId);
|
|
286
|
423
|
}
|
|
287
|
424
|
},
|
|
288
|
425
|
data() {
|
|
|
@@ -292,15 +429,24 @@ export default {
|
|
292
|
429
|
activeName: '1',
|
|
293
|
430
|
column: 3,
|
|
294
|
431
|
userList: [],
|
|
|
432
|
+ deviceList: [],
|
|
|
433
|
+ carList: [],
|
|
295
|
434
|
workList: [],
|
|
296
|
435
|
deptLeaderList: [],
|
|
|
436
|
+ progressList: [],
|
|
297
|
437
|
contractCode: "",
|
|
298
|
438
|
contractNumber: "",
|
|
299
|
439
|
openBudget: false,
|
|
|
440
|
+ openSafe: false,
|
|
|
441
|
+ openTech: false,
|
|
300
|
442
|
taskForm: {
|
|
301
|
443
|
formId: ''
|
|
302
|
444
|
},
|
|
303
|
|
- projectComment: {}
|
|
|
445
|
+ projectComment: {},
|
|
|
446
|
+ devices: [],
|
|
|
447
|
+ cars: [],
|
|
|
448
|
+ drivers: [],
|
|
|
449
|
+ participates: []
|
|
304
|
450
|
}
|
|
305
|
451
|
},
|
|
306
|
452
|
methods: {
|
|
|
@@ -319,9 +465,20 @@ export default {
|
|
319
|
465
|
})
|
|
320
|
466
|
getUsersDeptLeaderByDept({ deptId: Number(dept) }).then(res => {
|
|
321
|
467
|
this.deptLeaderList.push(res.data.nickName);
|
|
322
|
|
- console.log(this.deptLeaderList);
|
|
323
|
468
|
})
|
|
324
|
469
|
}
|
|
|
470
|
+ if (this.project.devices) {
|
|
|
471
|
+ this.devices = (this.project.devices.split(',')).map(Number)
|
|
|
472
|
+ }
|
|
|
473
|
+ if (this.project.cars) {
|
|
|
474
|
+ this.cars = (this.project.cars.split(',')).map(Number)
|
|
|
475
|
+ }
|
|
|
476
|
+ if (this.project.drivers) {
|
|
|
477
|
+ this.drivers = (this.project.drivers.split(',')).map(Number)
|
|
|
478
|
+ }
|
|
|
479
|
+ if (this.project.participates) {
|
|
|
480
|
+ this.participates = (this.project.participates.split(',')).map(Number)
|
|
|
481
|
+ }
|
|
325
|
482
|
}
|
|
326
|
483
|
})
|
|
327
|
484
|
},
|
|
|
@@ -335,6 +492,28 @@ export default {
|
|
335
|
492
|
}
|
|
336
|
493
|
})
|
|
337
|
494
|
},
|
|
|
495
|
+ getDeviceList() {
|
|
|
496
|
+ listDevice({
|
|
|
497
|
+ pageNum: 1,
|
|
|
498
|
+ pageSize: 99999999,
|
|
|
499
|
+ type: '仪器设备'
|
|
|
500
|
+ }).then(res => {
|
|
|
501
|
+ this.deviceList = res.rows
|
|
|
502
|
+ })
|
|
|
503
|
+ },
|
|
|
504
|
+ getCarList() {
|
|
|
505
|
+ listCar({ pageSize: 9999, pageNum: 1 }).then(res => {
|
|
|
506
|
+ this.carList = res.rows
|
|
|
507
|
+ })
|
|
|
508
|
+ },
|
|
|
509
|
+ getProjectProgressList(projectId) {
|
|
|
510
|
+ getProjectProgress(projectId).then(res => {
|
|
|
511
|
+ if (res.data) {
|
|
|
512
|
+ this.progressList = res.data;
|
|
|
513
|
+
|
|
|
514
|
+ }
|
|
|
515
|
+ });
|
|
|
516
|
+ },
|
|
338
|
517
|
// 获取项目相关合同编号
|
|
339
|
518
|
getContractDataList(projectId) {
|
|
340
|
519
|
listProjectContract({ projectId }).then(res => {
|
|
|
@@ -365,7 +544,6 @@ export default {
|
|
365
|
544
|
},
|
|
366
|
545
|
getProjectCommentList(projectId) {
|
|
367
|
546
|
getProjectComment(projectId).then(res => {
|
|
368
|
|
- console.log(res);
|
|
369
|
547
|
if (res.data) {
|
|
370
|
548
|
this.projectComment = res.data
|
|
371
|
549
|
}
|
|
|
@@ -382,13 +560,11 @@ export default {
|
|
382
|
560
|
}
|
|
383
|
561
|
},
|
|
384
|
562
|
getUserListName(userIdArr) {
|
|
385
|
|
- debugger
|
|
386
|
563
|
if (userIdArr) {
|
|
387
|
564
|
for (let user of userIdArr) {
|
|
388
|
565
|
|
|
389
|
566
|
}
|
|
390
|
567
|
}
|
|
391
|
|
-
|
|
392
|
568
|
},
|
|
393
|
569
|
getFileName(name) {
|
|
394
|
570
|
if (name != null) {
|