vue2-client 1.14.41 → 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.
- package/.env +1 -1
- package/package.json +1 -1
- package/src/base-client/components/common/XReport/XReport.vue +1 -1
- package/src/base-client/components/common/XTab/XTab.vue +22 -7
- package/src/base-client/components/common/XTable/XTable.vue +3 -1
- package/src/base-client/components/common/XUploadFilesView/index.vue +485 -0
- package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +9 -9
- package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
- package/src/base-client/components/his/XTreeRows/TreeNode.vue +100 -100
- package/src/base-client/components/his/XTreeRows/XTreeRows.vue +197 -197
- package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
- package/src/base-client/components/his/threeTestOrders/textBox.vue +50 -102
- package/src/base-client/components/his/threeTestOrders/threeTestOrders.vue +376 -386
- package/src/pages/WorkflowDetail/WorkFlowDemo.vue +1 -1
- package/src/pages/WorkflowDetail/WorkflowDetail.vue +151 -50
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +244 -131
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +188 -139
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +3 -2
- package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
- package/src/base-client/components/TreeList/TreeList.vue +0 -91
- package/src/base-client/components/TreeList/TreeNode.vue +0 -81
- package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
|
@@ -1,110 +1,126 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div id="ApplyBaseInformation">
|
|
3
|
-
<a-card :loading="loading" :bordered="false" class="info-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<div
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<div class="
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
<a-
|
|
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
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
<div class="
|
|
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-
|
|
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
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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
|
-
|
|
286
|
-
|
|
287
|
-
|
|
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
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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>
|