vue2-client 1.14.42 → 1.14.43

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>
@@ -186,7 +202,6 @@ export default {
186
202
  methods: {
187
203
  init () {
188
204
  this.loading = this.details.f_entry_name === undefined
189
- console.log(this.currUser)
190
205
  // this.isCreatedBy = this.currUser.roles.includes('14524271')
191
206
  this.completeTime = undefined
192
207
  this.overdueTime = undefined
@@ -242,20 +257,6 @@ export default {
242
257
  if (newVal) {
243
258
  this.init()
244
259
  }
245
- },
246
- details: {
247
- deep: true,
248
- handler (newVal) {
249
- if (newVal.person) {
250
- // 删除值为空的键
251
- for (const key in newVal.person) {
252
- if (!newVal.person[key]) {
253
- delete newVal.person[key]
254
- }
255
- }
256
- }
257
- this.init()
258
- }
259
260
  }
260
261
  }
261
262
  }
@@ -263,40 +264,152 @@ export default {
263
264
 
264
265
  <style lang="less">
265
266
  #ApplyBaseInformation {
266
- .info-tag-box {
267
+ .info-card-container {
267
268
  background: transparent;
269
+
268
270
  .ant-card-body {
269
- display: flex;
270
- justify-content: flex-start;
271
271
  padding: 0;
272
272
  }
273
273
  }
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;
274
+
275
+ .info-cards-wrapper {
276
+ display: flex;
277
+ flex-wrap: wrap;
278
+ gap: 16px;
279
+
280
+ .info-card {
281
+ flex: 1;
282
+ min-width: 180px;
283
+ background-color: #fff;
284
+ border-radius: 8px;
285
+ padding: 16px;
286
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
287
+ display: flex;
288
+ align-items: center;
289
+ transition: all 0.2s ease;
290
+ cursor: default;
291
+ border: 1px solid #eaedf2;
292
+
293
+ &:hover {
294
+ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.08);
284
295
  }
285
- .sub-text {
286
- margin-top: 6px;
287
- font-size: 14px;
296
+
297
+ .info-icon {
298
+ display: flex;
299
+ align-items: center;
300
+ justify-content: center;
301
+ width: 46px;
302
+ height: 46px;
303
+ border-radius: 8px;
304
+ font-size: 22px;
305
+ margin-right: 14px;
306
+ color: #fff;
307
+ flex-shrink: 0;
308
+ position: relative;
309
+
310
+ &.status-completed {
311
+ background-color: #ebad59;
312
+ }
313
+
314
+ &.status-progress {
315
+ background-color: #5B6B8F;
316
+ }
317
+
318
+ &.date-icon {
319
+ background-color: #4CAF50;
320
+ }
321
+
322
+ &.workflow-icon {
323
+ background-color: #FF9800;
324
+ }
325
+
326
+ &.time-icon {
327
+ background-color: #F44336;
328
+ }
329
+
330
+ &.parent-icon {
331
+ background-color: #2196F3;
332
+ }
333
+
334
+ .dropdown-icon {
335
+ position: absolute;
336
+ right: -8px;
337
+ bottom: -8px;
338
+ color: #8392a5;
339
+ font-size: 14px;
340
+ background: #fff;
341
+ border-radius: 50%;
342
+ width: 20px;
343
+ height: 20px;
344
+ display: flex;
345
+ align-items: center;
346
+ justify-content: center;
347
+ border: 1px solid #eaedf2;
348
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
349
+ cursor: pointer;
350
+
351
+ &:hover {
352
+ color: #5B6B8F;
353
+ }
354
+ }
288
355
  }
289
- .edit-complete-time {
290
- cursor: pointer;
291
- transition: color 0.2s;
292
- &:hover {
293
- color: rgb(24, 144, 255);
356
+
357
+ .info-content {
358
+ flex: 1;
359
+ min-width: 0;
360
+
361
+ .info-title {
362
+ font-size: 20px;
363
+ font-weight: 600;
364
+ color: #2c3e50;
365
+ margin-bottom: 6px;
366
+ white-space: nowrap;
367
+ overflow: hidden;
368
+ text-overflow: ellipsis;
369
+ display: flex;
370
+ align-items: center;
371
+ line-height: 1.3;
372
+
373
+ .info-icon-small {
374
+ margin-left: 6px;
375
+ color: #8392a5;
376
+ font-size: 16px;
377
+ cursor: pointer;
378
+
379
+ &:hover {
380
+ color: #5B6B8F;
381
+ }
382
+ }
383
+
384
+ .edit-icon {
385
+ margin-left: 6px;
386
+ color: #8392a5;
387
+ font-size: 16px;
388
+ cursor: pointer;
389
+
390
+ &:hover {
391
+ color: #5B6B8F;
392
+ }
393
+ }
394
+ }
395
+
396
+ .info-label {
397
+ font-size: 14px;
398
+ color: #8392a5;
399
+ line-height: 1.4;
400
+
401
+ &.status-completed-text {
402
+ color: #ebad59;
403
+ font-weight: 600;
404
+ }
405
+
406
+ &.status-progress-text {
407
+ color: #5B6B8F;
408
+ font-weight: 600;
409
+ }
294
410
  }
295
411
  }
296
412
  }
297
- &:not(:first-child) {
298
- margin-left: 22px;
299
- }
300
413
  }
301
414
  }
302
415
  </style>