vue2-client 1.14.51 → 1.14.53

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,26 +1,45 @@
1
1
  <template>
2
- <a-spin size="large" :spinning="spinning">
3
- <a-empty v-if="!logList.length" />
4
- <a-steps v-else direction="vertical" progress-dot class="steps">
5
- <a-step v-for="log in logList" :key="log.id" status="finish">
6
- <template #title>
7
- <span class="log-title">{{ log.operation }}</span>
8
- </template>
9
- <template #subTitle>
10
- <span class="log-sub-title">{{ log.desc }}</span>
11
- </template>
12
- <template #description>
13
- <div class="log-description">
14
- <div>操作人: {{ log.operator }}</div>
15
- <div v-if="log.set_handler">指定处理者: 指定下一环节处理者为 {{ log.set_handler }}</div>
16
- <div v-if="log.set_deadline">设定截止时间: 设定下一环节截止时间为 {{ log.set_deadline }}</div>
17
- <div v-if="log.notes">备注: {{ log.notes }}</div>
18
- <div>操作时间: {{ log.date }}</div>
19
- </div>
20
- </template>
21
- </a-step>
22
- </a-steps>
23
- </a-spin>
2
+ <div class="workflow-log-container">
3
+ <a-spin size="large" :spinning="spinning">
4
+ <a-empty v-if="!logList.length" description="暂无流转记录" />
5
+ <a-steps v-else direction="vertical" progress-dot class="steps">
6
+ <a-step v-for="(log, index) in logList" :key="log.id" status="finish">
7
+ <template #title>
8
+ <span class="log-title">{{ log.operation }}</span>
9
+ </template>
10
+ <template #subTitle>
11
+ <span class="log-sub-title">{{ getDesc(log.desc) }}</span>
12
+ </template>
13
+ <template #description>
14
+ <div :class="['log-card', index === 0 ? 'first-card' : '']">
15
+ <div class="log-description">
16
+ <div class="log-item">
17
+ <a-icon type="user" />
18
+ <span>操作人: <span class="highlight">{{ log.operator }}</span></span>
19
+ </div>
20
+ <div class="log-item" v-if="log.set_handler">
21
+ <a-icon type="solution" />
22
+ <span>设定下一环节处理者: <span class="highlight">{{ log.set_handler }}</span></span>
23
+ </div>
24
+ <div class="log-item" v-if="log.set_deadline">
25
+ <a-icon type="clock-circle" />
26
+ <span>设定下一环节截止时间: <span class="highlight">{{ log.set_deadline }}</span></span>
27
+ </div>
28
+ <div class="log-item" v-if="log.notes">
29
+ <a-icon type="message" />
30
+ <span>备注: <span class="highlight">{{ log.notes }}</span></span>
31
+ </div>
32
+ <div class="log-item log-time">
33
+ <a-icon type="calendar" />
34
+ <span>操作时间: <span class="highlight">{{ log.date }}</span></span>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </template>
39
+ </a-step>
40
+ </a-steps>
41
+ </a-spin>
42
+ </div>
24
43
  </template>
25
44
 
26
45
  <script>
@@ -48,26 +67,122 @@ export default {
48
67
  this.logList = res
49
68
  this.spinning = false
50
69
  })
70
+ },
71
+ methods: {
72
+ getDesc (desc) {
73
+ return desc.replace('&gt;', '>')
74
+ }
51
75
  }
52
76
  }
53
77
  </script>
54
78
 
55
79
  <style lang="less" scoped>
56
- .steps /deep/ {
57
- .log-title {
58
- font-size: 18px;
59
- font-weight: 800;
60
- }
61
- .log-sub-title {
62
- margin-left: 6px;
63
- color: #666;
64
- font-size: 16px
65
- }
66
- .log-description {
67
- margin: 5px 16px;
68
- }
69
- /deep/ .ant-steps-item-content {
70
- width: auto;
80
+ .workflow-log-container {
81
+ padding: 16px;
82
+ background-color: #f9fafc;
83
+ border-radius: 8px;
84
+ min-height: 300px;
85
+ }
86
+
87
+ .steps {
88
+ padding: 8px 12px;
89
+
90
+ ::v-deep {
91
+ .ant-steps-item {
92
+ padding-bottom: 24px;
93
+ }
94
+
95
+ .ant-steps-item-container {
96
+ .ant-steps-item-tail {
97
+ &::after {
98
+ background-color: #e8eef7;
99
+ width: 2px;
100
+ }
101
+ }
102
+ }
103
+
104
+ .ant-steps-item-icon {
105
+ .ant-steps-icon-dot {
106
+ background: #1890ff;
107
+ box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
108
+ transition: all 0.3s;
109
+ }
110
+ }
111
+
112
+ .ant-steps-item:hover .ant-steps-icon-dot {
113
+ transform: scale(1.2);
114
+ box-shadow: 0 0 0 4px rgba(24, 144, 255, 0.2);
115
+ }
116
+
117
+ .ant-steps-item-content {
118
+ width: calc(100% - 24px);
119
+ margin-top: -4px;
120
+ .ant-steps-item-title {
121
+ display: flex;
122
+ align-items: center;
123
+ }
124
+ }
125
+
126
+ .log-title {
127
+ font-size: 18px;
128
+ font-weight: 600;
129
+ color: #262626;
130
+ transition: color 0.3s;
131
+ }
132
+
133
+ .log-sub-title {
134
+ margin-left: 8px;
135
+ color: #8c8c8c;
136
+ font-size: 14px;
137
+ font-weight: normal;
138
+ }
139
+
140
+ .log-card {
141
+ margin: 12px 0 0 0;
142
+ padding: 16px;
143
+ background-color: white;
144
+ border-radius: 8px;
145
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
146
+ transition: all 0.3s;
147
+ border-left: 3px solid #1890ff;
148
+
149
+ &:hover {
150
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
151
+ transform: translateY(-2px);
152
+ }
153
+
154
+ &.first-card {
155
+ border-left: 3px solid #52c41a;
156
+ }
157
+ }
158
+
159
+ .log-description {
160
+ color: #595959;
161
+ font-size: 14px;
162
+ line-height: 1.8;
163
+ }
164
+
165
+ .log-item {
166
+ display: flex;
167
+ align-items: center;
168
+ margin-bottom: 8px;
169
+
170
+ .anticon {
171
+ margin-right: 8px;
172
+ color: #8c8c8c;
173
+ }
174
+
175
+ &.log-time {
176
+ margin-top: 12px;
177
+ padding-top: 12px;
178
+ border-top: 1px dashed #f0f0f0;
179
+ }
180
+ }
181
+
182
+ .highlight {
183
+ color: #262626;
184
+ font-weight: 600;
185
+ }
71
186
  }
72
187
  }
73
188
  </style>
@@ -64,8 +64,8 @@ routerResource.example = {
64
64
  // component: () => import('@vue2-client/base-client/components/common/XTab/XTabDemo.vue'),
65
65
  // component: () => import('@vue2-client/base-client/components/common/XRate/demo.vue'),
66
66
  // component: () => import('@vue2-client/base-client/components/common/XForm/demo.vue'),
67
- component: () => import('@vue2-client/base-client/components/his/XTimeSelect/XTimeSelectDemo.vue'),
68
- // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
67
+ // component: () => import('@vue2-client/base-client/components/his/XTimeSelect/XTimeSelectDemo.vue'),
68
+ component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
69
69
  // component: () => import('@vue2-client/base-client/components/common/XConversation/XConversationDemo.vue'),
70
70
  // component: () => import('@vue2-client/base-client/components/common/XButtons/XButtonDemo.vue'),
71
71
  // component: () => import('@vue2-client/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue'),