vue2-client 1.15.102 → 1.15.104

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 (184) hide show
  1. package/.history/public/his/editor/editor_20250606134713.html +51 -0
  2. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +509 -0
  3. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +524 -0
  4. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +524 -0
  5. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +524 -0
  6. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +207 -0
  7. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +211 -0
  8. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +212 -0
  9. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +212 -0
  10. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +1320 -0
  11. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +1332 -0
  12. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +1331 -0
  13. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +1331 -0
  14. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +1331 -0
  15. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +1339 -0
  16. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +731 -0
  17. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +748 -0
  18. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +748 -0
  19. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +1071 -0
  20. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +1078 -0
  21. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +1077 -0
  22. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +1077 -0
  23. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +1077 -0
  24. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +442 -0
  25. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +442 -0
  26. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +442 -0
  27. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +475 -0
  28. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +475 -0
  29. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +475 -0
  30. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +477 -0
  31. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +477 -0
  32. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +477 -0
  33. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +473 -0
  34. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +473 -0
  35. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +473 -0
  36. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +473 -0
  37. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +473 -0
  38. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +473 -0
  39. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +473 -0
  40. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +473 -0
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +473 -0
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +473 -0
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +474 -0
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +474 -0
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +474 -0
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +472 -0
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +472 -0
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +472 -0
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +472 -0
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +472 -0
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +472 -0
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +501 -0
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +501 -0
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +501 -0
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +504 -0
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +504 -0
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +504 -0
  58. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +131 -0
  59. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +160 -0
  60. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +160 -0
  61. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +160 -0
  62. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +158 -0
  63. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +173 -0
  64. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +222 -0
  65. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +229 -0
  66. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +229 -0
  67. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +229 -0
  68. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +241 -0
  69. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +241 -0
  70. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +241 -0
  71. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +245 -0
  72. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +245 -0
  73. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +245 -0
  74. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +255 -0
  75. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +255 -0
  76. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +255 -0
  77. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +270 -0
  78. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +270 -0
  79. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +270 -0
  80. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +270 -0
  81. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +294 -0
  82. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +294 -0
  83. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +294 -0
  84. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +303 -0
  85. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +303 -0
  86. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +303 -0
  87. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +288 -0
  88. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +288 -0
  89. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +288 -0
  90. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +317 -0
  91. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +306 -0
  92. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +306 -0
  93. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +306 -0
  94. package/.history/src/base-client/components/his/XList/XList_20250704142024.vue +495 -0
  95. package/.history/src/base-client/components/his/XList/XList_20250704142033.vue +495 -0
  96. package/.history/src/base-client/components/his/XList/XList_20250704142040.vue +494 -0
  97. package/.history/src/base-client/components/his/XList/XList_20250704142211.vue +494 -0
  98. package/.history/src/base-client/components/his/XList/XList_20250704142214.vue +494 -0
  99. package/.history/src/base-client/components/his/XList/XList_20250704143010.vue +495 -0
  100. package/.history/src/base-client/components/his/XList/XList_20250704143203.vue +495 -0
  101. package/.history/src/base-client/components/his/XList/XList_20250707095101.vue +492 -0
  102. package/.history/src/base-client/components/his/XList/XList_20250707100152.vue +492 -0
  103. package/.history/src/base-client/components/his/XList/XList_20250707100200.vue +485 -0
  104. package/.history/src/base-client/components/his/XList/XList_20250707100208.vue +485 -0
  105. package/.history/src/base-client/components/his/XList/XList_20250707100259.vue +488 -0
  106. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134604.vue +263 -0
  107. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134615.vue +302 -0
  108. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134621.vue +301 -0
  109. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134634.vue +311 -0
  110. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134644.vue +330 -0
  111. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134653.vue +330 -0
  112. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134836.vue +330 -0
  113. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135247.vue +330 -0
  114. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135303.vue +354 -0
  115. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135316.vue +363 -0
  116. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135323.vue +363 -0
  117. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135334.vue +366 -0
  118. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135342.vue +364 -0
  119. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135349.vue +364 -0
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135351.vue +346 -0
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135354.vue +346 -0
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135401.vue +346 -0
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135406.vue +346 -0
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135424.vue +346 -0
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807143043.vue +254 -0
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155506.vue +329 -0
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155535.vue +330 -0
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155543.vue +330 -0
  129. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155926.vue +304 -0
  130. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155928.vue +304 -0
  131. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172548.vue +298 -0
  132. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172609.vue +298 -0
  133. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172623.vue +298 -0
  134. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172631.vue +298 -0
  135. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172701.vue +298 -0
  136. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172704.vue +298 -0
  137. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807175937.vue +290 -0
  138. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807175942.vue +290 -0
  139. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180210.vue +290 -0
  140. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180424.vue +290 -0
  141. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180448.vue +290 -0
  142. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180915.vue +262 -0
  143. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180917.vue +262 -0
  144. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101106.vue +283 -0
  145. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101112.vue +289 -0
  146. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101118.vue +289 -0
  147. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101129.vue +294 -0
  148. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101137.vue +318 -0
  149. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101145.vue +320 -0
  150. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101154.vue +320 -0
  151. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101211.vue +320 -0
  152. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101236.vue +320 -0
  153. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101239.vue +320 -0
  154. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103845.vue +142 -0
  155. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103852.vue +142 -0
  156. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103857.vue +142 -0
  157. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103859.vue +142 -0
  158. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103907.vue +142 -0
  159. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103910.vue +142 -0
  160. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103911.vue +142 -0
  161. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103913.vue +142 -0
  162. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103916.vue +142 -0
  163. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103931.vue +142 -0
  164. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145127.vue +85 -0
  165. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145136.vue +81 -0
  166. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145142.vue +81 -0
  167. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145145.vue +81 -0
  168. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145148.vue +81 -0
  169. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145151.vue +81 -0
  170. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145155.vue +81 -0
  171. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +213 -0
  172. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +6 -0
  173. package/package.json +1 -1
  174. package/src/base-client/components/TreeList/TreeList.vue +91 -0
  175. package/src/base-client/components/TreeList/TreeNode.vue +81 -0
  176. package/src/base-client/components/common/XCardSet/XTiltle.vue +191 -0
  177. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +51 -2
  178. package/src/base-client/components/his/XHisEditor/dome.vue +144 -0
  179. package/src/base-client/components/his/XList/XList.vue +1 -1
  180. package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +145 -40
  181. package/src/base-client/components/his/XShiftSchedule/dome.vue +3 -3
  182. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  183. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  184. package/src/router/async/router.map.js +1 -1
@@ -0,0 +1,303 @@
1
+ <template>
2
+ <div class="list-wrapper">
3
+ <a-list size="large" :data-source="data" itemLayout="horizontal" class="list-container" ref="listRef">
4
+ <a-list-item
5
+ slot="renderItem"
6
+ slot-scope="item, index"
7
+ class="list-item"
8
+ @click="handleClick(index)"
9
+ @mouseenter="enableHoverOptions && handleMouseEnter(index)"
10
+ @mouseleave="enableHoverOptions && handleMouseLeave"
11
+ :class="{ 'hover-active': enableHoverOptions && hoveredIndex === index }"
12
+ >
13
+ <div
14
+ class="list-item-content"
15
+ :class="{ 'hover-active': enableHoverOptions && hoveredIndex === index }"
16
+ >
17
+ <i
18
+ v-if="icon"
19
+ class="icon-menu"
20
+ :style="getIconStyle(item)"
21
+ ></i>
22
+ <span
23
+ class="item-text">
24
+ {{ item.number }} {{ item.name }}
25
+ </span>
26
+
27
+ <div v-if="button" class="button-group">
28
+ <a-button
29
+ v-for="(name, idx) in buttonNames"
30
+ :key="idx"
31
+ type="link"
32
+ :class="['confirm-btn', buttonMode ? 'hover-btn' : '']"
33
+ @click.stop="click(index, idx)"
34
+ >
35
+ {{ name }}
36
+ </a-button>
37
+ </div>
38
+
39
+ <!-- 悬浮选项框 -->
40
+ <div
41
+ v-show="enableHoverOptions && hoveredIndex === index"
42
+ class="hover-options"
43
+ @mouseenter="handleOptionsEnter"
44
+ @mouseleave="handleOptionsLeave"
45
+ >
46
+ <div class="hover-options-content">
47
+ <a-button type="link" @click.stop="handleOptionClick(index, 'view')">查看</a-button>
48
+ <a-button type="link" @click.stop="handleOptionClick(index, 'edit')">编辑</a-button>
49
+ <a-button type="link" @click.stop="handleOptionClick(index, 'delete')">删除</a-button>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </a-list-item>
54
+ </a-list>
55
+ </div>
56
+ </template>
57
+
58
+ <script>
59
+
60
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
61
+
62
+ export default {
63
+ name: 'XList',
64
+ props: {
65
+ queryParamsName: {
66
+ type: Object,
67
+ default: null
68
+ },
69
+ fixedQueryForm: {
70
+ type: Object,
71
+ default: { condition: '1=1' }
72
+ },
73
+ enableHoverOptions: {
74
+ type: Boolean,
75
+ default: true
76
+ }
77
+ },
78
+ inject: ['getComponentByName'],
79
+ data () {
80
+ return {
81
+ data: [],
82
+ button: false,
83
+ icon: false,
84
+ buttonNames: [],
85
+ buttonMode: false,
86
+ hoveredIndex: -1,
87
+ isOptionsHovered: false,
88
+ hoverTimer: null,
89
+ leaveTimer: null
90
+ }
91
+ },
92
+ created () {
93
+ this.getData(this.queryParamsName, this.fixedQueryForm)
94
+ },
95
+ methods: {
96
+ async getData (config, param) {
97
+ const that = this
98
+ getConfigByName(config, 'af-his', res => {
99
+ that.button = res.button
100
+ that.icon = res.icon
101
+ that.buttonNames = res.buttonNames || []
102
+ that.buttonMode = res.buttonMode || false
103
+ runLogic(res.data, param, 'af-his').then(ress => {
104
+ that.data = ress
105
+ })
106
+ })
107
+ },
108
+ handleClick (index) {
109
+ this.$emit('listClick', this.data[index])
110
+ },
111
+ refreshList (param) {
112
+ this.getData(this.queryParamsName, param)
113
+ },
114
+ click (index, buttonIndex) {
115
+ this.$emit('click', { data: this.data[index], name: this.buttonNames[buttonIndex] })
116
+ },
117
+ getIconStyle (item) {
118
+ return item.picture
119
+ ? { backgroundImage: `url(${item.picture})` }
120
+ : {}
121
+ },
122
+ filterData (par) {
123
+ runLogic(this.queryParamsName, par, 'af-his').then(res => {
124
+ this.data = res.data
125
+ })
126
+ },
127
+ handleMouseEnter (index) {
128
+ this.clearAllTimers()
129
+ this.hoveredIndex = index
130
+ this.isOptionsHovered = false
131
+ },
132
+ handleMouseLeave () {
133
+ this.clearAllTimers()
134
+ this.leaveTimer = setTimeout(() => {
135
+ if (!this.isOptionsHovered) {
136
+ this.hoveredIndex = -1
137
+ }
138
+ }, 100)
139
+ },
140
+ handleOptionsEnter () {
141
+ this.clearAllTimers()
142
+ this.isOptionsHovered = true
143
+ },
144
+ handleOptionsLeave () {
145
+ this.clearAllTimers()
146
+ this.leaveTimer = setTimeout(() => {
147
+ this.isOptionsHovered = false
148
+ this.hoveredIndex = -1
149
+ }, 100)
150
+ },
151
+ clearAllTimers () {
152
+ if (this.hoverTimer) {
153
+ clearTimeout(this.hoverTimer)
154
+ this.hoverTimer = null
155
+ }
156
+ if (this.leaveTimer) {
157
+ clearTimeout(this.leaveTimer)
158
+ this.leaveTimer = null
159
+ }
160
+ },
161
+ handleOptionClick (index, action) {
162
+ this.$emit('optionClick', { data: this.data[index], action })
163
+ }
164
+ },
165
+ watch: {
166
+ fixedQueryForm: {
167
+ deep: true,
168
+ handler (val) {
169
+ this.refreshList(val)
170
+ }
171
+ }
172
+ },
173
+ beforeDestroy () {
174
+ this.clearAllTimers()
175
+ }
176
+ }
177
+ </script>
178
+
179
+ <style scoped>
180
+ .list-wrapper {
181
+ max-height: 240px;
182
+ overflow-y: auto;
183
+ padding-right: 2px;
184
+ }
185
+
186
+ .list-container {
187
+ width: 100%;
188
+ }
189
+
190
+ .list-item {
191
+ height: 35px;
192
+ border-radius: 6px;
193
+ background-color: #F4F4F4;
194
+ padding: 8px 15px;
195
+ font-size: 16px;
196
+ display: flex;
197
+ align-items: center;
198
+ width: 100%;
199
+ border: 1px solid #D9D9D9;
200
+ box-sizing: border-box;
201
+ margin-bottom: 8px !important;
202
+ position: relative;
203
+ }
204
+
205
+ .icon-menu {
206
+ display: inline-block;
207
+ width: 20px;
208
+ height: 20px;
209
+ background-color: #ccc;
210
+ margin-right: 8px;
211
+ }
212
+
213
+ .item-text {
214
+ flex: 1;
215
+ }
216
+
217
+ .confirm-btn {
218
+ margin-left: auto;
219
+ padding: 0 8px;
220
+ }
221
+
222
+ .confirm-btn.hover-btn {
223
+ opacity: 0;
224
+ transition: opacity 0.3s ease;
225
+ }
226
+
227
+ .button-group {
228
+ display: flex;
229
+ gap: 2px; /* 按钮之间的间距 */
230
+ }
231
+
232
+ .list-item:hover .confirm-btn.hover-btn {
233
+ opacity: 1;
234
+ }
235
+
236
+ /* 自定义滚动条样式 */
237
+ .list-wrapper::-webkit-scrollbar {
238
+ width: 6px;
239
+ }
240
+
241
+ .list-wrapper::-webkit-scrollbar-thumb {
242
+ background-color: #d9d9d9;
243
+ border-radius: 3px;
244
+ }
245
+
246
+ .list-wrapper::-webkit-scrollbar-track {
247
+ background-color: #f0f0f0;
248
+ }
249
+
250
+ .list-item-content {
251
+ position: relative;
252
+ width: 100%;
253
+ height: 100%;
254
+ display: flex;
255
+ align-items: center;
256
+ transition: background-color 0.3s ease;
257
+ }
258
+
259
+ .list-item-content.hover-active {
260
+ background-color: rgb(0, 87, 254) !important;
261
+ color: white;
262
+ }
263
+
264
+ .list-item.hover-active {
265
+ background-color: rgb(0, 87, 254) !important;
266
+ color: white;
267
+ border: 1px solid black;
268
+ }
269
+
270
+ .hover-options {
271
+ position: absolute;
272
+ left: 0;
273
+ right: 0;
274
+ top: 100%;
275
+ background: white;
276
+ border: 1px solid #d9d9d9;
277
+ border-radius: 4px;
278
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
279
+ z-index: 1000;
280
+ margin-top: 4px;
281
+ width: 100%;
282
+ box-sizing: border-box;
283
+ pointer-events: auto;
284
+ }
285
+
286
+ .hover-options-content {
287
+ padding: 8px;
288
+ display: flex;
289
+ flex-direction: column;
290
+ gap: 4px;
291
+ width: 100%;
292
+ }
293
+
294
+ .hover-options-content .ant-btn {
295
+ text-align: left;
296
+ padding: 4px 8px;
297
+ width: 100%;
298
+ }
299
+
300
+ .hover-options-content .ant-btn:hover {
301
+ background-color: #f5f5f5;
302
+ }
303
+ </style>
@@ -0,0 +1,288 @@
1
+ <template>
2
+ <div class="list-wrapper">
3
+ <a-list size="large" :data-source="data" itemLayout="horizontal" class="list-container" ref="listRef">
4
+ <a-list-item
5
+ slot="renderItem"
6
+ slot-scope="item, index"
7
+ class="list-item"
8
+ @click="handleClick(index)"
9
+ @mouseenter="enableHoverOptions && handleMouseEnter(index)"
10
+ @mouseleave="enableHoverOptions && handleMouseLeave"
11
+ :class="{ 'hover-active': enableHoverOptions && hoveredIndex === index }"
12
+ >
13
+ <i
14
+ v-if="icon"
15
+ class="icon-menu"
16
+ :style="getIconStyle(item)"
17
+ ></i>
18
+ <span
19
+ class="item-text">
20
+ {{ item.number }} {{ item.name }}
21
+ </span>
22
+
23
+ <div v-if="button" class="button-group">
24
+ <a-button
25
+ v-for="(name, idx) in buttonNames"
26
+ :key="idx"
27
+ type="link"
28
+ :class="['confirm-btn', buttonMode ? 'hover-btn' : '']"
29
+ @click.stop="click(index, idx)"
30
+ >
31
+ <span :class="{ 'hover-active': enableHoverOptions && hoveredIndex === index }">{{ name }}</span>
32
+ </a-button>
33
+ </div>
34
+
35
+ <!-- 悬浮选项框 -->
36
+ <div
37
+ v-show="enableHoverOptions && hoveredIndex === index"
38
+ class="hover-options"
39
+ @mouseenter="handleOptionsEnter"
40
+ @mouseleave="handleOptionsLeave"
41
+ >
42
+ <div class="hover-options-content">
43
+ <span>一周1111111111111111111</span>
44
+ <span>二周</span>
45
+ <a-button type="link" @click.stop="handleOptionClick(index, 'delete')">删除</a-button>
46
+ </div>
47
+ </div>
48
+ </a-list-item>
49
+ </a-list>
50
+ </div>
51
+ </template>
52
+
53
+ <script>
54
+
55
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
56
+
57
+ export default {
58
+ name: 'XList',
59
+ props: {
60
+ queryParamsName: {
61
+ type: Object,
62
+ default: null
63
+ },
64
+ fixedQueryForm: {
65
+ type: Object,
66
+ default: { condition: '1=1' }
67
+ },
68
+ enableHoverOptions: {
69
+ type: Boolean,
70
+ default: true
71
+ }
72
+ },
73
+ inject: ['getComponentByName'],
74
+ data () {
75
+ return {
76
+ data: [],
77
+ button: false,
78
+ icon: false,
79
+ buttonNames: [],
80
+ buttonMode: false,
81
+ hoveredIndex: -1,
82
+ isOptionsHovered: false,
83
+ hoverTimer: null,
84
+ leaveTimer: null
85
+ }
86
+ },
87
+ created () {
88
+ this.getData(this.queryParamsName, this.fixedQueryForm)
89
+ },
90
+ methods: {
91
+ async getData (config, param) {
92
+ const that = this
93
+ getConfigByName(config, 'af-his', res => {
94
+ that.button = res.button
95
+ that.icon = res.icon
96
+ that.buttonNames = res.buttonNames || []
97
+ that.buttonMode = res.buttonMode || false
98
+ runLogic(res.data, param, 'af-his').then(ress => {
99
+ that.data = ress
100
+ })
101
+ })
102
+ },
103
+ handleClick (index) {
104
+ this.$emit('listClick', this.data[index])
105
+ },
106
+ refreshList (param) {
107
+ this.getData(this.queryParamsName, param)
108
+ },
109
+ click (index, buttonIndex) {
110
+ this.$emit('click', { data: this.data[index], name: this.buttonNames[buttonIndex] })
111
+ },
112
+ getIconStyle (item) {
113
+ return item.picture
114
+ ? { backgroundImage: `url(${item.picture})` }
115
+ : {}
116
+ },
117
+ filterData (par) {
118
+ runLogic(this.queryParamsName, par, 'af-his').then(res => {
119
+ this.data = res.data
120
+ })
121
+ },
122
+ handleMouseEnter (index) {
123
+ this.clearAllTimers()
124
+ this.hoveredIndex = index
125
+ },
126
+ handleMouseLeave () {
127
+ if (!this.isOptionsHovered) {
128
+ this.clearAllTimers()
129
+ this.leaveTimer = setTimeout(() => {
130
+ this.hoveredIndex = -1
131
+ }, 100)
132
+ }
133
+ },
134
+ handleOptionsEnter () {
135
+ this.clearAllTimers()
136
+ this.isOptionsHovered = true
137
+ },
138
+ handleOptionsLeave () {
139
+ this.clearAllTimers()
140
+ this.leaveTimer = setTimeout(() => {
141
+ this.isOptionsHovered = false
142
+ this.hoveredIndex = -1
143
+ }, 100)
144
+ },
145
+ clearAllTimers () {
146
+ if (this.hoverTimer) {
147
+ clearTimeout(this.hoverTimer)
148
+ this.hoverTimer = null
149
+ }
150
+ if (this.leaveTimer) {
151
+ clearTimeout(this.leaveTimer)
152
+ this.leaveTimer = null
153
+ }
154
+ },
155
+ handleOptionClick (index, action) {
156
+ this.$emit('optionClick', { data: this.data[index], action })
157
+ }
158
+ },
159
+ watch: {
160
+ fixedQueryForm: {
161
+ deep: true,
162
+ handler (val) {
163
+ this.refreshList(val)
164
+ }
165
+ }
166
+ },
167
+ beforeDestroy () {
168
+ this.clearAllTimers()
169
+ }
170
+ }
171
+ </script>
172
+
173
+ <style scoped>
174
+ .list-wrapper {
175
+ max-height: 240px;
176
+ overflow-y: auto;
177
+ padding-right: 2px;
178
+ }
179
+
180
+ .list-container {
181
+ width: 100%;
182
+ }
183
+
184
+ .list-item {
185
+ height: 35px;
186
+ border-radius: 6px;
187
+ background-color: #F4F4F4;
188
+ padding: 8px 15px;
189
+ font-size: 16px;
190
+ display: flex;
191
+ align-items: center;
192
+ width: 100%;
193
+ border: 1px solid #D9D9D9;
194
+ box-sizing: border-box;
195
+ margin-bottom: 8px !important;
196
+ position: relative;
197
+ transition: background-color 0.3s ease;
198
+ }
199
+
200
+ .icon-menu {
201
+ display: inline-block;
202
+ width: 20px;
203
+ height: 20px;
204
+ background-color: #ccc;
205
+ margin-right: 8px;
206
+ }
207
+
208
+ .item-text {
209
+ flex: 1;
210
+ }
211
+
212
+ .confirm-btn {
213
+ margin-left: auto;
214
+ padding: 0 8px;
215
+ }
216
+
217
+ .confirm-btn.hover-btn {
218
+ opacity: 0;
219
+ transition: opacity 0.3s ease;
220
+ }
221
+
222
+ .button-group {
223
+ display: flex;
224
+ gap: 2px; /* 按钮之间的间距 */
225
+ }
226
+
227
+ .list-item:hover .confirm-btn.hover-btn {
228
+ opacity: 1;
229
+ }
230
+
231
+ /* 自定义滚动条样式 */
232
+ .list-wrapper::-webkit-scrollbar {
233
+ width: 6px;
234
+ }
235
+
236
+ .list-wrapper::-webkit-scrollbar-thumb {
237
+ background-color: #d9d9d9;
238
+ border-radius: 3px;
239
+ }
240
+
241
+ .list-wrapper::-webkit-scrollbar-track {
242
+ background-color: #f0f0f0;
243
+ }
244
+
245
+ .hover-active {
246
+ color: white;
247
+ }
248
+
249
+ .list-item.hover-active {
250
+ background-color: rgb(0, 87, 254) !important;
251
+ color: white;
252
+ border: 1px solid black;
253
+ }
254
+
255
+ .hover-options {
256
+ position: absolute;
257
+ left: 0;
258
+ right: 0;
259
+ top: 100%;
260
+ background: white;
261
+ border: 1px solid #d9d9d9;
262
+ border-radius: 4px;
263
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
264
+ z-index: 1000;
265
+ margin-top: 4px;
266
+ width: 100%;
267
+ box-sizing: border-box;
268
+ pointer-events: auto;
269
+ }
270
+
271
+ .hover-options-content {
272
+ padding: 8px;
273
+ display: flex;
274
+ flex-direction: column;
275
+ gap: 4px;
276
+ width: 100%;
277
+ }
278
+
279
+ .hover-options-content .ant-btn {
280
+ text-align: left;
281
+ padding: 4px 8px;
282
+ width: 100%;
283
+ }
284
+
285
+ .hover-options-content .ant-btn:hover {
286
+ background-color: #f5f5f5;
287
+ }
288
+ </style>