vue2-client 1.14.42 → 1.14.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,110 +1,126 @@
1
1
  <template>
2
2
  <div id="ApplyBaseInformation">
3
- <a-card :loading="loading" :bordered="false" class="info-tag-box">
4
- <!-- 第一个 -->
5
- <div class="info-tag" :style="{ background: details.f_state === 1 ? '#ffa427' : '#6877ee' }">
6
- <div><a-icon type="appstore" theme="filled" style="font-size: 16px" /></div>
7
- <div class="content">
8
- <div v-if="showProjectPerson" class="title">{{ details.f_entry_name }}
9
- <a-popover placement="bottom">
10
- <template slot="content">
11
- <div v-if="details.person.f_projectadmin">项目经理:{{ details.person.f_projectadmin }}</div>
12
- <div v-if="details.person.f_shangwuren">客户经理:{{ details.person.f_shangwuren }}</div>
13
- <div v-if="details.person.f_salemanager">销售经理:{{ details.person.f_salemanager }}</div>
14
- <div v-if="details.person.f_egionaladministrator">大区经理:{{ details.person.f_egionaladministrator }}</div>
15
- </template>
16
- <a-icon type="info-circle" style="font-size: 17px" />
17
- </a-popover>
3
+ <a-card :loading="loading" :bordered="false" class="info-card-container">
4
+ <div class="info-cards-wrapper">
5
+ <!-- 第一个 -->
6
+ <div class="info-card">
7
+ <div class="info-icon" :class="details.f_state === 1 ? 'status-completed' : 'status-progress'">
8
+ <a-icon type="appstore" theme="filled" />
9
+ </div>
10
+ <div class="info-content">
11
+ <div v-if="showProjectPerson" class="info-title">
12
+ {{ details.f_entry_name }}
13
+ <a-popover placement="bottom">
14
+ <template slot="content">
15
+ <div v-if="details.person.f_projectadmin">项目经理:{{ details.person.f_projectadmin }}</div>
16
+ <div v-if="details.person.f_shangwuren">客户经理:{{ details.person.f_shangwuren }}</div>
17
+ <div v-if="details.person.f_salemanager">销售经理:{{ details.person.f_salemanager }}</div>
18
+ <div v-if="details.person.f_egionaladministrator">大区经理:{{ details.person.f_egionaladministrator }}</div>
19
+ </template>
20
+ <a-icon type="info-circle" class="info-icon-small" />
21
+ </a-popover>
22
+ </div>
23
+ <div v-else class="info-title">{{ details.f_task_name }}</div>
24
+ <div class="info-label" :class="details.f_state === 1 ? 'status-completed-text' : 'status-progress-text'">
25
+ {{ details.f_state === 1 ? '完工' : '正在进行' }}
26
+ </div>
18
27
  </div>
19
- <div v-else class="title">{{ details.f_task_name }}</div>
20
- <div class="sub-text">{{ details.f_state === 1 ? '完工' : '正在进行' }}</div>
21
- </div>
22
- </div>
23
- <!-- 第二个 -->
24
- <div class="info-tag" style="background: #34d6af">
25
- <div><a-icon type="carry-out" theme="filled" style="font-size: 16px" /></div>
26
- <div class="content">
27
- <div class="title">{{ format(details.f_workflow_date, 'yyyy-MM-dd') }}</div>
28
- <div class="sub-text">创建日期</div>
29
28
  </div>
30
- </div>
31
- <!-- 第三个 -->
32
- <div v-show="details.f_state !== 1" class="info-tag" style="background: #ffa427">
33
- <div><a-icon type="profile" theme="filled" style="font-size: 16px" /></div>
34
- <div class="content">
35
- <div class="title">{{ details.f_workflow_define_name }}</div>
36
- <div class="sub-text">{{ details.f_sub_state }}</div>
29
+
30
+ <!-- 第二个 -->
31
+ <div class="info-card">
32
+ <div class="info-icon date-icon">
33
+ <a-icon type="carry-out" theme="filled" />
34
+ </div>
35
+ <div class="info-content">
36
+ <div class="info-title">{{ format(details.f_workflow_date, 'yyyy-MM-dd') }}</div>
37
+ <div class="info-label">创建日期</div>
38
+ </div>
37
39
  </div>
38
- </div>
39
- <!-- 第四个 -->
40
- <div class="info-tag" style="background: #ff5f27" title="若要修改完成时间,请通知部门领导进行修改!">
41
- <div>
42
- <a-icon type="clock-circle" theme="filled" style="font-size: 16px" />
43
- <a-dropdown>
44
- <a-icon type="down" style="float: right;" />
45
- <a-menu slot="overlay">
46
- <a-menu-item @click="showChangeRecord">修改记录</a-menu-item>
47
- </a-menu>
48
- </a-dropdown>
40
+
41
+ <!-- 第三个 -->
42
+ <div v-show="details.f_state !== 1" class="info-card">
43
+ <div class="info-icon workflow-icon">
44
+ <a-icon type="profile" theme="filled" />
45
+ </div>
46
+ <div class="info-content">
47
+ <div class="info-title">{{ details.f_workflow_define_name }}</div>
48
+ <div class="info-label">{{ details.f_sub_state }}</div>
49
+ </div>
49
50
  </div>
50
- <div class="content">
51
- <div class="title">
52
- {{ format(details.f_complete_time, 'yyyy-MM-dd') }}
53
- <!-- 修改任务时间 -->
54
- <a-popover v-if="isCreatedBy" v-model="openCompleteTime" title="修改任务时间" trigger="click">
55
- <template slot="content">
56
- <a-form-item label="任务整体完成时间" :label-col="{ span: 10 }" :wrapper-col="{ span: 14 }">
57
- <a-date-picker
58
- v-model="completeTime"
59
- :disabled-date="disabledDate"
60
- :show-today="false"
61
- :allow-clear="false"
62
- value-format="YYYY-MM-DD HH:mm:ss"
63
- >
64
- </a-date-picker>
65
- </a-form-item>
66
- <a-form-item label="当前环节截止时间" :label-col="{ span: 10 }" :wrapper-col="{ span: 14 }">
67
- <a-date-picker
68
- v-model="overdueTime"
69
- :disabled-date="disabledDate"
70
- :show-today="false"
71
- value-format="YYYY-MM-DD 17:00:00"
72
- >
73
- </a-date-picker>
74
- </a-form-item>
75
- <a-form-item label="修改原因" :label-col="{ span: 10 }" :wrapper-col="{ span: 14 }">
76
- <a-textarea
77
- v-model="note"
78
- :auto-size="{ minRows: 3, maxRows: 5 }"
79
- placeholder="修改原因"
80
- />
81
- </a-form-item>
82
- <!--<a-form-item label="修改原因" :label-col="{span: 10}" :wrapper-col="{span: 14}">-->
83
- <!--<a-badge :count="messageList.length" :offset="[4,-4]" :number-style="{backgroundColor: '#b2b2b2'}"></a-badge>-->
84
- <!--</a-form-item>-->
85
- <div style="text-align: right">
86
- <a-button type="primary" size="small" @click="saveCompleteTime">确定</a-button>
87
- </div>
88
- </template>
89
- <a-icon type="edit" theme="filled" class="edit-complete-time" />
90
- </a-popover>
51
+
52
+ <!-- 第四个 -->
53
+ <div class="info-card" title="若要修改完成时间,请通知部门领导进行修改!">
54
+ <div class="info-icon time-icon">
55
+ <a-icon type="clock-circle" theme="filled" />
56
+ <a-dropdown>
57
+ <a-icon type="down" class="dropdown-icon" />
58
+ <a-menu slot="overlay">
59
+ <a-menu-item @click="showChangeRecord">修改记录</a-menu-item>
60
+ </a-menu>
61
+ </a-dropdown>
62
+ </div>
63
+ <div class="info-content">
64
+ <div class="info-title">
65
+ {{ format(details.f_complete_time, 'yyyy-MM-dd') }}
66
+ <!-- 修改任务时间 -->
67
+ <a-popover v-if="isCreatedBy" v-model="openCompleteTime" title="修改任务时间" trigger="click">
68
+ <template slot="content">
69
+ <a-form-item label="任务整体完成时间" :label-col="{ span: 10 }" :wrapper-col="{ span: 14 }">
70
+ <a-date-picker
71
+ v-model="completeTime"
72
+ :disabled-date="disabledDate"
73
+ :show-today="false"
74
+ :allow-clear="false"
75
+ value-format="YYYY-MM-DD HH:mm:ss"
76
+ >
77
+ </a-date-picker>
78
+ </a-form-item>
79
+ <a-form-item label="当前环节截止时间" :label-col="{ span: 10 }" :wrapper-col="{ span: 14 }">
80
+ <a-date-picker
81
+ v-model="overdueTime"
82
+ :disabled-date="disabledDate"
83
+ :show-today="false"
84
+ value-format="YYYY-MM-DD 17:00:00"
85
+ >
86
+ </a-date-picker>
87
+ </a-form-item>
88
+ <a-form-item label="修改原因" :label-col="{ span: 10 }" :wrapper-col="{ span: 14 }">
89
+ <a-textarea
90
+ v-model="note"
91
+ :auto-size="{ minRows: 3, maxRows: 5 }"
92
+ placeholder="修改原因"
93
+ />
94
+ </a-form-item>
95
+ <div style="text-align: right">
96
+ <a-button type="primary" size="small" @click="saveCompleteTime">确定</a-button>
97
+ </div>
98
+ </template>
99
+ <a-icon type="edit" theme="filled" class="edit-icon" />
100
+ </a-popover>
101
+ </div>
102
+ <div class="info-label">完成时间</div>
91
103
  </div>
92
- <div class="sub-text">完成时间</div>
93
104
  </div>
94
- </div>
95
- <!-- 第五个 -->
96
- <div v-show="details.f_workflow_parentid" @click="ordRecord" class="info-tag" style="background: #31c565">
97
- <div><a-icon type="profile" theme="filled" style="font-size: 16px" /></div>
98
- <div class="content">
99
- <div class="title">{{ details.f_workflow_parentid }}</div>
100
- <div class="sub-text">父级工单编号</div>
105
+
106
+ <!-- 第五个 -->
107
+ <div v-show="details.f_workflow_parentid" @click="ordRecord" class="info-card">
108
+ <div class="info-icon parent-icon">
109
+ <a-icon type="profile" theme="filled" />
110
+ </div>
111
+ <div class="info-content">
112
+ <div class="info-title">{{ details.f_workflow_parentid }}</div>
113
+ <div class="info-label">父级工单编号</div>
114
+ </div>
101
115
  </div>
102
116
  </div>
103
117
  </a-card>
118
+
104
119
  <!-- 完成时间修改记录 -->
105
120
  <a-modal v-model="changeRecordVisible" title="完成时间修改记录" :footer="null" :z-index="1001" :width="1500">
106
121
  <a-table row-key="id" :columns="changeRecordColumns" :data-source="changeRecordDataSource" :loading="changeRecordLoading"></a-table>
107
122
  </a-modal>
123
+
108
124
  <!-- 父级工单 -->
109
125
  <a-modal v-model="masterWorkOrderVisible" title="主工单" :footer="null" :z-index="1001" :width="1500">
110
126
  <work-order-parent-details :workflow-id="details.f_workflow_parentid"></work-order-parent-details>
@@ -263,40 +279,152 @@ export default {
263
279
 
264
280
  <style lang="less">
265
281
  #ApplyBaseInformation {
266
- .info-tag-box {
282
+ .info-card-container {
267
283
  background: transparent;
284
+
268
285
  .ant-card-body {
269
- display: flex;
270
- justify-content: flex-start;
271
286
  padding: 0;
272
287
  }
273
288
  }
274
- .info-tag {
275
- min-width: 200px;
276
- height: 110px;
277
- padding: 10px;
278
- color: #ffffff;
279
- .content {
280
- text-align: center;
281
- .title {
282
- margin-top: 4px;
283
- font-size: 22px;
289
+
290
+ .info-cards-wrapper {
291
+ display: flex;
292
+ flex-wrap: wrap;
293
+ gap: 16px;
294
+
295
+ .info-card {
296
+ flex: 1;
297
+ min-width: 180px;
298
+ background-color: #fff;
299
+ border-radius: 8px;
300
+ padding: 16px;
301
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
302
+ display: flex;
303
+ align-items: center;
304
+ transition: all 0.2s ease;
305
+ cursor: default;
306
+ border: 1px solid #eaedf2;
307
+
308
+ &:hover {
309
+ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.08);
284
310
  }
285
- .sub-text {
286
- margin-top: 6px;
287
- font-size: 14px;
311
+
312
+ .info-icon {
313
+ display: flex;
314
+ align-items: center;
315
+ justify-content: center;
316
+ width: 46px;
317
+ height: 46px;
318
+ border-radius: 8px;
319
+ font-size: 22px;
320
+ margin-right: 14px;
321
+ color: #fff;
322
+ flex-shrink: 0;
323
+ position: relative;
324
+
325
+ &.status-completed {
326
+ background-color: #ebad59;
327
+ }
328
+
329
+ &.status-progress {
330
+ background-color: #5B6B8F;
331
+ }
332
+
333
+ &.date-icon {
334
+ background-color: #4CAF50;
335
+ }
336
+
337
+ &.workflow-icon {
338
+ background-color: #FF9800;
339
+ }
340
+
341
+ &.time-icon {
342
+ background-color: #F44336;
343
+ }
344
+
345
+ &.parent-icon {
346
+ background-color: #2196F3;
347
+ }
348
+
349
+ .dropdown-icon {
350
+ position: absolute;
351
+ right: -8px;
352
+ bottom: -8px;
353
+ color: #8392a5;
354
+ font-size: 14px;
355
+ background: #fff;
356
+ border-radius: 50%;
357
+ width: 20px;
358
+ height: 20px;
359
+ display: flex;
360
+ align-items: center;
361
+ justify-content: center;
362
+ border: 1px solid #eaedf2;
363
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
364
+ cursor: pointer;
365
+
366
+ &:hover {
367
+ color: #5B6B8F;
368
+ }
369
+ }
288
370
  }
289
- .edit-complete-time {
290
- cursor: pointer;
291
- transition: color 0.2s;
292
- &:hover {
293
- color: rgb(24, 144, 255);
371
+
372
+ .info-content {
373
+ flex: 1;
374
+ min-width: 0;
375
+
376
+ .info-title {
377
+ font-size: 20px;
378
+ font-weight: 600;
379
+ color: #2c3e50;
380
+ margin-bottom: 6px;
381
+ white-space: nowrap;
382
+ overflow: hidden;
383
+ text-overflow: ellipsis;
384
+ display: flex;
385
+ align-items: center;
386
+ line-height: 1.3;
387
+
388
+ .info-icon-small {
389
+ margin-left: 6px;
390
+ color: #8392a5;
391
+ font-size: 16px;
392
+ cursor: pointer;
393
+
394
+ &:hover {
395
+ color: #5B6B8F;
396
+ }
397
+ }
398
+
399
+ .edit-icon {
400
+ margin-left: 6px;
401
+ color: #8392a5;
402
+ font-size: 16px;
403
+ cursor: pointer;
404
+
405
+ &:hover {
406
+ color: #5B6B8F;
407
+ }
408
+ }
409
+ }
410
+
411
+ .info-label {
412
+ font-size: 14px;
413
+ color: #8392a5;
414
+ line-height: 1.4;
415
+
416
+ &.status-completed-text {
417
+ color: #ebad59;
418
+ font-weight: 600;
419
+ }
420
+
421
+ &.status-progress-text {
422
+ color: #5B6B8F;
423
+ font-weight: 600;
424
+ }
294
425
  }
295
426
  }
296
427
  }
297
- &:not(:first-child) {
298
- margin-left: 22px;
299
- }
300
428
  }
301
429
  }
302
430
  </style>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div>
3
3
  <!-- 上方流程显示 -->
4
- <a-card :bordered="false" :loading="loading" title="项目进度">
4
+ <a-card :bordered="false" :loading="loading">
5
5
  <!-- 项目进度流程 -->
6
6
  <work-flow-timeline
7
7
  :current-step-id="currentStepId"
@@ -829,7 +829,7 @@ export default {
829
829
  let stepHandler
830
830
  if (this.checkedChargePerson) {
831
831
  // 使用 value 找到对应的 label
832
- stepHandler = this.chargePersonOptions.find(item => item.value === this.checkedChargePerson[0]).label
832
+ stepHandler = this.chargePersonOptions.find(item => item.value === this.checkedChargePerson).label
833
833
  } else if (this.chargePerson.personList.length > 0) {
834
834
  stepHandler = this.chargePerson.personList.map(item => item.name).join(',')
835
835
  }
@@ -142,6 +142,7 @@ export default {
142
142
  <style lang="less" scoped>
143
143
  .timeline {
144
144
  /deep/ .ant-steps-dot {
145
+ margin-bottom: 6px;
145
146
  .ant-steps-item-tail {
146
147
  top: 7px;
147
148
  margin-left: 106px;
@@ -152,7 +153,7 @@ export default {
152
153
  }
153
154
  .ant-steps-item-content {
154
155
  width: 200px;
155
- margin-top: 16px;
156
+ margin-top: 24px;
156
157
  .ant-steps-item-description {
157
158
  text-align: left;
158
159
  margin: 6px 0 0 60px;