vue2-client 1.15.78 → 1.15.80

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.
Files changed (141) hide show
  1. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +0 -6
  2. package/package.json +1 -1
  3. package/public/index.html +1 -1
  4. package/src/base-client/components/common/Recording/Recording.vue +1 -1
  5. package/src/base-client/components/common/XButtons/XButtons.vue +203 -12
  6. package/src/base-client/components/common/XFormTable/XFormTable.vue +1 -1
  7. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +7 -7
  8. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  9. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  10. package/src/base-client/plugins/Recording.js +1 -1
  11. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +1 -1
  12. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +6 -1
  13. package/src/router/async/router.map.js +1 -2
  14. package/vue.config.js +1 -1
  15. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  16. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  17. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  18. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  19. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  20. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +0 -207
  21. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +0 -211
  22. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +0 -212
  23. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +0 -212
  24. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  25. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  26. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  27. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  28. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  29. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  30. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +0 -731
  31. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +0 -748
  32. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +0 -748
  33. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +0 -1071
  34. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +0 -1078
  35. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +0 -1077
  36. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +0 -1077
  37. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +0 -1077
  38. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  39. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  40. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  65. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  66. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  67. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  68. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  69. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  70. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  71. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  72. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  73. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  74. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  75. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  76. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  77. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  78. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  79. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  80. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  81. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  82. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  83. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  84. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  85. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  86. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  87. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  88. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  89. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  90. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  91. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  92. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  93. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  94. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  95. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  96. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  97. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  98. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  99. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  100. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  101. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  102. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  103. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  104. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  105. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  106. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  107. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  108. package/.history/src/base-client/components/his/XList/XList_20250704142024.vue +0 -495
  109. package/.history/src/base-client/components/his/XList/XList_20250704142033.vue +0 -495
  110. package/.history/src/base-client/components/his/XList/XList_20250704142040.vue +0 -494
  111. package/.history/src/base-client/components/his/XList/XList_20250704142211.vue +0 -494
  112. package/.history/src/base-client/components/his/XList/XList_20250704142214.vue +0 -494
  113. package/.history/src/base-client/components/his/XList/XList_20250704143010.vue +0 -495
  114. package/.history/src/base-client/components/his/XList/XList_20250704143203.vue +0 -495
  115. package/.history/src/base-client/components/his/XList/XList_20250707095101.vue +0 -492
  116. package/.history/src/base-client/components/his/XList/XList_20250707100152.vue +0 -492
  117. package/.history/src/base-client/components/his/XList/XList_20250707100200.vue +0 -485
  118. package/.history/src/base-client/components/his/XList/XList_20250707100208.vue +0 -485
  119. package/.history/src/base-client/components/his/XList/XList_20250707100259.vue +0 -488
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +0 -222
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +0 -183
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +0 -183
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +0 -183
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +0 -206
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +0 -209
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +0 -242
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +0 -242
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +0 -242
  129. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +0 -251
  130. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +0 -251
  131. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +0 -250
  132. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +0 -250
  133. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +0 -250
  134. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +0 -250
  135. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +0 -238
  136. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +0 -238
  137. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +0 -238
  138. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  139. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  140. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  141. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -1,488 +0,0 @@
1
- <template>
2
- <!-- 列表卡片模式 listMode: card -->
3
- <div v-if="listMode"
4
- class="demo-infinite-container"
5
- ref="listRef"
6
- @scroll="handleInfiniteOnLoad">
7
- <a-list :grid="{ gutter: 16, xs: 1, sm: 2, md: 2, lg: 3, xl: 3, xxl: 4 }"
8
- :data-source="localData">
9
- <a-list-item slot="renderItem" slot-scope="item, index">
10
- <div class="card-a-col">
11
- <a-row class="card-row">
12
- <a-col class="id-a-col" :span="4" v-for="(detail,idx) in item.filter(d => d.label == label)" :key="idx">
13
- {{detail.value}}<span style="font-size: 16px;font-weight: 400 !important;">床</span>
14
- </a-col>
15
- <a-col :span="20" class="id-a-col-2">
16
- <template v-for="(detail,idx) in item">
17
- <span class="describe-list-a-col" :class="{name: detail.bold}" :key="idx" v-if="detail.type == 'title'">{{detail.value}}</span>
18
- <span :key="idx" class="component-a-col" v-else-if="detail.type == 'component' && detail.label != label">
19
- {{`${detail.label}:`}}
20
- <component
21
- :is="detail.slotType"
22
- :key="idx"
23
- :ref="`dynamicComponent_${ idx.slotType || idx}_${idx}`"
24
- :serviceName="serviceName"
25
- v-on="forwardAllEvents"
26
- :queryParamsName="detail.value"
27
- :countVisible="false"
28
- />
29
- </span>
30
- <span :key="idx" class="component-a-col" v-else-if="detail.type == 'date'">
31
- {{`${detail.label}:`}}
32
- <a-date-picker @change="onChange" />
33
- </span>
34
- <span class="describe-list-a-col" :class="{name: detail.bold}" :key="idx" v-else-if="detail.label != label">{{`${detail.label}:${detail.value}`}}</span>
35
- </template>
36
- <a-button v-for="(btn, i) in buttonNames"
37
- :key="i"
38
- icon="search"
39
- class="button-a-col"
40
- @click.stop="click(item, index)">
41
- {{btn}}
42
- </a-button>
43
- </a-col>
44
- </a-row>
45
- </div>
46
- </a-list-item>
47
- <div v-if="loading" class="demo-loading-container">
48
- <a-spin />
49
- </div>
50
- <div v-if="allLoaded">
51
- <div class="demo-infinite-list-bottom">
52
- 已经显示全部数据
53
- </div>
54
- </div>
55
- </a-list>
56
- </div>
57
-
58
- <!-- 默认标签模式 -->
59
- <div class="list-wrapper" v-else>
60
- <a-list size="large" :data-source="data" itemLayout="horizontal" class="list-container" ref="listRef">
61
- <a-list-item slot="renderItem"
62
- slot-scope="item, index"
63
- class="list-item"
64
- @click="handleClick(index)"
65
- @mouseenter="enableHoverOptions && handleMouseEnter(index)"
66
- @mouseleave="handleMouseLeave"
67
- :class="{ 'hover-active': enableHoverOptions && hoveredIndex === index }">
68
- <i v-if="icon"
69
- class="icon-menu"
70
- :style="getIconStyle(item)">
71
- </i>
72
- <span
73
- class="item-text">
74
- {{ item.number }} {{ item.name }}
75
- </span>
76
-
77
- <div v-if="button" class="button-group">
78
- <a-button
79
- v-for="(name, idx) in buttonNames"
80
- :key="idx"
81
- type="link"
82
- :class="['confirm-btn', buttonMode ? 'hover-btn' : '']"
83
- @click.stop="click(index, idx)">
84
- <span :class="{ 'hover-active': enableHoverOptions && hoveredIndex === index }">{{ name }}</span>
85
- </a-button>
86
- </div>
87
-
88
- <!-- 悬浮选项框 -->
89
- <div v-show="enableHoverOptions && hoveredIndex === index"
90
- class="hover-options"
91
- @mouseenter="handleOptionsEnter"
92
- @mouseleave="handleOptionsLeave">
93
- <div class="hover-options-content">
94
- <div v-for="(item, idx) in select_options"
95
- :key="idx"
96
- class="option-item"
97
- @click="handleOptionClick(index, item)">
98
- {{ item }}
99
- </div>
100
- </div>
101
- </div>
102
- </a-list-item>
103
- </a-list>
104
- </div>
105
- </template>
106
-
107
- <script>
108
-
109
- import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
110
-
111
- export default {
112
- name: 'XList',
113
- components: {
114
- XReport: () => import('@vue2-client/base-client/components/common/XReport/XReport.vue'),
115
- XButtons: () => import('@vue2-client/base-client/components/common/XButtons/XButtons.vue'),
116
- XInput: () => import('@vue2-client/base-client/components/common/XInput/XInput.vue'),
117
- XRadio: () => import('@vue2-client/base-client/components/his/XRadio/XRadio.vue'),
118
- XTimeSelect: () => import('@vue2-client/base-client/components/his/XTimeSelect/XTimeSelect.vue'),
119
- XCheckbox: () => import('@vue2-client/base-client/components/his/XCheckbox/XCheckbox.vue'),
120
- XTitle: () => import('@vue2-client/base-client/components/his/XTitle/XTitle.vue'),
121
- XSelect: () => import('@vue2-client/base-client/components/his/XSelect/XSelect.vue')
122
- },
123
- props: {
124
- queryParamsName: {
125
- type: Object,
126
- default: null
127
- },
128
- fixedQueryForm: {
129
- type: Object,
130
- default: { condition: '1=1' }
131
- },
132
- enableHoverOptions: {
133
- type: Boolean,
134
- default: true
135
- },
136
- serviceName: {
137
- type: String,
138
- default: 'af-his'
139
- }
140
- },
141
- inject: ['getComponentByName'],
142
- data () {
143
- return {
144
- data: [], // 数据源
145
- localData: [], // 本地数据源
146
- loading: false, // 加载中
147
- busy: false, // 繁忙状态
148
- button: false,
149
- icon: false,
150
- buttonNames: [],
151
- listMode: undefined, // 列表模式
152
- buttonMode: true,
153
- hoveredIndex: -1, // 当前悬浮的索引
154
- isOptionsHovered: false, // 悬浮选项框是否悬浮
155
- hoverTimer: null, // 悬浮选项框定时器
156
- leaveTimer: null, // 离开选项框定时器
157
- select_options: [], // 悬浮选项框
158
- logicName: '',
159
- nowPage: 0, // 当前页
160
- pageSize: 12,
161
- allLoaded: false,
162
- label: 'id',
163
- scrollTimer: null
164
- }
165
- },
166
- created () {
167
- this.getData(this.queryParamsName, this.fixedQueryForm)
168
- },
169
- mounted () {},
170
- computed: {
171
- forwardAllEvents () {
172
- return {
173
- // 监听所有事件并转发给父组件
174
- '*': (eventName, ...payload) => {
175
- this.$emit(eventName, ...payload)
176
- }
177
- }
178
- }
179
- },
180
- methods: {
181
- onChange (date, dateString) {
182
- this.$emit('dateChange', date, dateString)
183
- },
184
- handleInfiniteOnLoad (event) {
185
- if (this.busy || this.allLoaded) return // 防止重复加载
186
- if (this.scrollTimer) clearTimeout(this.scrollTimer)
187
- this.scrollTimer = setTimeout(() => {
188
- const container = event.target
189
- const scrollTop = container.scrollTop
190
- const scrollHeight = container.scrollHeight
191
- const clientHeight = container.clientHeight
192
- const bottomOffset = 10
193
- if (scrollTop + clientHeight >= scrollHeight - bottomOffset) {
194
- this.busy = true
195
- this.loading = true
196
- this.nowPage = this.nowPage + this.pageSize
197
- this.fixedQueryForm.condition = `Limit ${this.nowPage}, ${this.pageSize}`
198
- runLogic(this.logicName, this.fixedQueryForm, 'af-his').then(async (res) => {
199
- this.localData = [...this.localData, ...res]
200
- if (res.length < this.pageSize) {
201
- this.allLoaded = true
202
- }
203
- }).catch(e => {
204
- this.$message.error(e.message)
205
- }).finally(() => {
206
- this.loading = false
207
- this.busy = false
208
- })
209
- }
210
- }, 100)
211
- },
212
- async getData (config, param) {
213
- const that = this
214
- getConfigByName(config, 'af-his', async (res) => {
215
- that.listMode = await res.listMode == 'card'
216
- that.logicName = await res.data
217
- that.button = await res.button // 按钮
218
- that.icon = await res.icon // 图标
219
- that.label = await res.label // 标签
220
- that.buttonNames = await res.buttonNames || []// 按钮文本
221
- that.buttonMode = await res.buttonMode || false// 按钮模式
222
- this.enableHoverOptions = await res.enableHoverOptions || false// 悬浮选项框
223
- if (this.enableHoverOptions) {
224
- this.select_options = await res.select_options
225
- }
226
- if (that.listMode) { param.condition = `Limit ${that.nowPage}, ${that.pageSize}` }
227
- runLogic(res.data, param, 'af-his').then(result => {
228
- that.data = result
229
- if (that.nowPage == 0) { this.localData = result }
230
- })
231
- })
232
- },
233
- // 点击列表项
234
- handleClick (index) {
235
- this.$emit('listClick', this.data[index])
236
- },
237
- refreshList (param) {
238
- this.getData(this.queryParamsName, param)
239
- },
240
- click (index, buttonIndex) {
241
- this.$emit('click', { data: this.data[index], name: this.buttonNames[buttonIndex] })
242
- },
243
- getIconStyle (item) {
244
- return item.picture
245
- ? { backgroundImage: `url(${item.picture})` }
246
- : {}
247
- },
248
- filterData (par) {
249
- runLogic(this.queryParamsName, par, 'af-his').then(res => {
250
- this.data = res.data
251
- })
252
- },
253
- // 鼠标进入列表项
254
- handleMouseEnter (index) {
255
- this.clearAllTimers()
256
- this.hoveredIndex = index
257
- this.isOptionsHovered = true
258
- },
259
- // 鼠标离开列表项
260
- handleMouseLeave () {
261
- this.clearAllTimers()
262
- this.leaveTimer = setTimeout(() => {
263
- this.isOptionsHovered = false
264
- this.hoveredIndex = -1
265
- }, 100)
266
- },
267
- // 鼠标进入悬浮选项框
268
- handleOptionsEnter () {
269
- this.clearAllTimers()
270
- this.isOptionsHovered = true
271
- },
272
- // 鼠标离开悬浮选项框
273
- handleOptionsLeave () {
274
- this.clearAllTimers()
275
- this.leaveTimer = setTimeout(() => {
276
- this.isOptionsHovered = false
277
- this.hoveredIndex = -1
278
- }, 100)
279
- },
280
- // 清除所有定时器
281
- clearAllTimers () {
282
- if (this.hoverTimer) {
283
- clearTimeout(this.hoverTimer)
284
- this.hoverTimer = null
285
- }
286
- if (this.leaveTimer) {
287
- clearTimeout(this.leaveTimer)
288
- this.leaveTimer = null
289
- }
290
- },
291
- // 选项框点击
292
- handleOptionClick (index, action) {
293
- this.$emit('optionClick', { data: this.data[index], action })
294
- }
295
- },
296
- watch: {
297
- fixedQueryForm: {
298
- deep: true,
299
- handler (val) {
300
- this.refreshList(val)
301
- }
302
- }
303
- },
304
- beforeDestroy () {
305
- const ref = this.$refs.listRef
306
- if (ref && ref.removeEventListener) {
307
- ref.removeEventListener('scroll', this.handleInfiniteOnLoad)
308
- }
309
- this.clearAllTimers()
310
- }
311
- }
312
- </script>
313
-
314
- <style scoped>
315
- .list-wrapper {
316
- max-height: 240px;
317
- overflow-y: auto;
318
- padding-right: 2px;
319
- }
320
-
321
- .list-container {
322
- width: 100%;
323
- }
324
-
325
- .list-item {
326
- height: 35px;
327
- border-radius: 6px;
328
- background-color: #F4F4F4;
329
- padding: 8px 15px;
330
- font-size: 16px;
331
- display: flex;
332
- align-items: center;
333
- width: 100%;
334
- border: 1px solid #D9D9D9;
335
- box-sizing: border-box;
336
- margin-bottom: 8px !important;
337
- position: relative;
338
- transition: background-color 0.3s ease;
339
- }
340
-
341
- .icon-menu {
342
- display: inline-block;
343
- width: 20px;
344
- height: 20px;
345
- background-color: #ccc;
346
- margin-right: 8px;
347
- }
348
-
349
- .item-text {
350
- flex: 1;
351
- }
352
-
353
- .confirm-btn {
354
- margin-left: auto;
355
- padding: 0 8px;
356
- }
357
-
358
- .confirm-btn.hover-btn {
359
- opacity: 0;
360
- transition: opacity 0.3s ease;
361
- }
362
-
363
- .button-group {
364
- display: flex;
365
- gap: 2px; /* 按钮之间的间距 */
366
- }
367
-
368
- .list-item:hover .confirm-btn.hover-btn {
369
- opacity: 1;
370
- }
371
-
372
- /* 自定义滚动条样式 */
373
- .list-wrapper::-webkit-scrollbar {
374
- width: 6px;
375
- }
376
-
377
- .list-wrapper::-webkit-scrollbar-thumb {
378
- background-color: #d9d9d9;
379
- border-radius: 3px;
380
- }
381
-
382
- .list-wrapper::-webkit-scrollbar-track {
383
- background-color: #f0f0f0;
384
- }
385
-
386
- .hover-active {
387
- color: white;
388
- }
389
-
390
- .list-item.hover-active {
391
- background-color: rgb(0, 87, 254) !important;
392
- color: white;
393
- border: 1px solid black;
394
- }
395
-
396
- .hover-options {
397
- position: absolute;
398
- left: 0;
399
- right: 0;
400
- top: 100%;
401
- background: white;
402
- border: 1px solid #d9d9d9;
403
- border-radius: 4px;
404
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
405
- z-index: 1000;
406
- margin-top: 4px;
407
- width: 100%;
408
- box-sizing: border-box;
409
- pointer-events: auto;
410
- }
411
-
412
- .hover-options-content {
413
- padding: 4px 0;
414
- display: flex;
415
- flex-direction: column;
416
- width: 100%;
417
- }
418
-
419
- .option-item {
420
- padding: 8px 12px;
421
- cursor: pointer;
422
- transition: all 0.3s ease;
423
- color: #333;
424
- font-size: 14px;
425
- display: flex;
426
- align-items: center;
427
- }
428
-
429
- .option-item:hover {
430
- background-color: #f5f5f5;
431
- color: #1890ff;
432
- }
433
-
434
- .option-item:active {
435
- background-color: #e6f7ff;
436
- }
437
-
438
- .demo-loading-container {
439
- position: absolute;
440
- bottom: 40px;
441
- width: 100%;
442
- text-align: center;
443
- }
444
-
445
- .demo-infinite-container{
446
- overflow-x: hidden;
447
- overflow-y: auto;
448
- height: 80vh;
449
- }
450
- .card-row{
451
- height: 100%;
452
- width: 100%;
453
- border-radius: 6px;
454
- padding: 6px;
455
- }
456
- .id-a-col{
457
- font-size: 22px;
458
- font-weight: 700;
459
- display: flex;
460
- justify-content: space-evenly;
461
- align-items: center;
462
- }
463
- .id-a-col-2{}
464
- .describe-list-a-col{
465
- display: block;
466
- font-size: 16px;
467
- }
468
- .name{
469
- font-size: 18px;
470
- font-weight: 700;
471
- }
472
- .component-a-col{
473
- display: flex;
474
- align-items: center;
475
- }
476
- .button-a-col{
477
- position: absolute;
478
- top: 245px;
479
- left: 225px;
480
- }
481
- .card-a-col{
482
- background-color: rgba(247, 249, 252);
483
- height: 297px;
484
- width: auto;
485
- border-radius: 6px;
486
- border: 1px solid #E5E9F0;
487
- }
488
- </style>
@@ -1,222 +0,0 @@
1
- <template>
2
- <a-table
3
- :columns="columns"
4
- :data-source="data"
5
- :rowSelection="rowSelection"
6
- :scroll="{ y: '75vh' }">
7
- <span slot="time" class="time-title">
8
- <span v-for="(item, index) in configData.timePeriod" :key="index">{{ item }}</span>
9
- </span>
10
- <template :slot="day.key" slot-scope="text, record" v-for="day in shiftTable">
11
- <div class="time-title" :key="day.key">
12
- <a-button v-for="(item, index) in record[day.key]" :key="index" @click="handleShiftChange(day.key, index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
13
- </div>
14
- </template>
15
- <template slot="sk_limit" slot-scope="text, record">
16
- <a-input-number id="inputNumber" v-model="record.sk_limit" :min="configData.sk_limitMin" :max="configData.sk_limitMax" />
17
- </template>
18
- </a-table>
19
- </template>
20
- <script>
21
- import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
22
-
23
- export default {
24
- data () {
25
- return {
26
- data: [],
27
- // 列配置
28
- columns: [],
29
- // 列名
30
- columnNames: [],
31
- // 选中的行键值集合
32
- selectedRows: [],
33
- // 选中的行信息集合
34
- selectedRowKeys: [],
35
- // 原始数据备份
36
- originalData: [],
37
- // 配置参数
38
- configData: {},
39
- // 排班时间表
40
- shiftTable: [
41
- {
42
- title: '周一',
43
- key: 'Monday',
44
- dataIndex: 'Monday',
45
- scopedSlots: { customRender: 'Monday' },
46
- align: 'center'
47
- },
48
- {
49
- title: '周二',
50
- key: 'Tuesday',
51
- dataIndex: 'Tuesday',
52
- scopedSlots: { customRender: 'Tuesday' },
53
- align: 'center'
54
- },
55
- {
56
- title: '周三',
57
- key: 'Wednesday',
58
- dataIndex: 'Wednesday',
59
- scopedSlots: { customRender: 'Wednesday' },
60
- align: 'center'
61
- },
62
- {
63
- title: '周四',
64
- key: 'Thursday',
65
- dataIndex: 'Thursday',
66
- scopedSlots: { customRender: 'Thursday' },
67
- align: 'center'
68
- },
69
- {
70
- title: '周五',
71
- key: 'Friday',
72
- dataIndex: 'Friday',
73
- scopedSlots: { customRender: 'Friday' },
74
- align: 'center'
75
- },
76
- {
77
- title: '周六',
78
- key: 'Saturday',
79
- dataIndex: 'Saturday',
80
- scopedSlots: { customRender: 'Saturday' },
81
- align: 'center'
82
- },
83
- {
84
- title: '周日',
85
- key: 'Sunday',
86
- dataIndex: 'Sunday',
87
- scopedSlots: { customRender: 'Sunday' },
88
- align: 'center'
89
- },
90
- {
91
- title: '排班数',
92
- key: 'sk_limit',
93
- dataIndex: 'sk_limit',
94
- scopedSlots: { customRender: 'sk_limit' },
95
- align: 'center'
96
- }
97
- ]
98
- }
99
- },
100
- props: {
101
- // 配置名
102
- queryParamsName: {
103
- type: String,
104
- default: ''
105
- },
106
- // 服务名
107
- serviceName: {
108
- type: String,
109
- default: 'af-his'
110
- }
111
- },
112
- computed: {
113
- rowSelection () {
114
- return {
115
- selectedRowKeys: this.selectedRowKeys,
116
- onChange: (selectedRowKeys, selectedRows) => {
117
- this.onSelectChange(selectedRowKeys, selectedRows)
118
- }
119
- }
120
- }
121
- },
122
- mounted () {},
123
- methods: {
124
- handleShiftChange (day, index, record) {
125
- // 找到当前记录在data中的索引
126
- const dataIndex = this.data.findIndex(item => item.id === record.id)
127
- if (dataIndex === -1) return
128
- // 获取当前状态
129
- const currentValue = record[day][index]
130
- const newValue = currentValue === 1 || currentValue === '1' ? 0 : 1
131
- // 更新按钮显示
132
- this.$set(record[day], index, newValue)
133
- // 同步更新data中的数据
134
- this.$set(this.data[dataIndex][day], index, newValue)
135
- },
136
- onSelectChange (selectedRowKeys, selectedRows) {
137
- this.selectedRowKeys = selectedRowKeys
138
- this.selectedRows = selectedRows
139
- },
140
- // 获取选中的行数据
141
- getSelectedRowData () {
142
- return this.selectedRows
143
- },
144
- // 获取全部数据
145
- getAllTable () {
146
- return this.data
147
- },
148
- // 初始化数据
149
- async init (queryParamsName) {
150
- getConfigByName(queryParamsName, this.serviceName, result => {
151
- this.configData = result
152
- runLogic(result.dataSource, {}, this.serviceName).then(res => {
153
- this.columns = []
154
- this.columns = JSON.parse(JSON.stringify(this.configData.columns))
155
- for (let i = 0; i < this.shiftTable.length; i++) {
156
- this.columns.push(this.shiftTable[i])
157
- }
158
- if (res && Array.isArray(res)) {
159
- const weekDays = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
160
- const shifts = ['am', 'pm', 'evening']
161
- let key = 0
162
- this.data = res.map(item => {
163
- const scheduleData = {
164
- key: key++
165
- }
166
- this.configData.columnsName.forEach(columnName => { scheduleData[columnName] = item[columnName] })
167
- weekDays.forEach(day => {
168
- scheduleData[day.charAt(0).toUpperCase() + day.slice(1)] = shifts.map(shift => item[`f_${day}_${shift}`] === '1' ? 1 : 0)
169
- })
170
- return scheduleData
171
- })
172
- // 保存原始数据
173
- this.originalData = JSON.parse(JSON.stringify(this.data))
174
- }
175
- })
176
- })
177
- },
178
- // 查询数据函数
179
- filterTableData (filters) {
180
- if (!filters || Object.keys(filters).length === 0) {
181
- // 如果没有过滤条件,恢复原始数据
182
- this.data = JSON.parse(JSON.stringify(this.originalData))
183
- return
184
- }
185
- // 从原始数据开始过滤
186
- this.data = this.originalData.filter(item => {
187
- // 检查每一项是否满足所有过滤条件
188
- return Object.entries(filters).every(([key, value]) => {
189
- // 如果过滤值是字符串,进行模糊匹配
190
- if (typeof value === 'string') {
191
- return item[key] && item[key].toString().toLowerCase().includes(value.toLowerCase())
192
- }
193
- // 如果过滤值是数字,进行精确匹配
194
- return item[key] === value
195
- })
196
- })
197
- }
198
- },
199
- watch: {
200
- queryParamsName: {
201
- handler (newValue) {
202
- this.init(newValue)
203
- },
204
- deep: true,
205
- immediate: true
206
- }
207
- }
208
- }
209
- </script>
210
-
211
- <style scoped type="less">
212
- .time-title {
213
- display: flex !important;
214
- flex-direction: column !important;
215
- align-items: center !important;
216
- }
217
- ::v-deep .ant-table-thead > tr > th,
218
- ::v-deep .ant-table-tbody > tr > td {
219
- padding: 8px 16px !important;
220
- overflow-wrap: break-word;
221
- }
222
- </style>