vue2-client 1.15.47 → 1.15.49

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 (121) hide show
  1. package/package.json +1 -1
  2. package/src/base-client/components/common/XForm/XFormItem.vue +5 -1
  3. package/src/base-client/components/his/XList/XList.vue +14 -6
  4. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  5. package/src/base-client/components/his/XTreeRows/TreeNode.vue +100 -100
  6. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  7. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  8. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  9. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  10. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  11. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  12. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +0 -207
  13. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +0 -211
  14. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +0 -212
  15. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +0 -212
  16. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  17. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  18. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  19. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  20. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  21. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  22. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +0 -731
  23. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +0 -748
  24. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +0 -748
  25. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +0 -1071
  26. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +0 -1078
  27. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +0 -1077
  28. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +0 -1077
  29. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +0 -1077
  30. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  31. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  32. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  33. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  34. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  35. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  36. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  37. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  38. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  39. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  40. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  64. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  65. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  66. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  67. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  68. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  69. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  70. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  71. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  72. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  73. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  74. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  75. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  76. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  77. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  78. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  79. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  80. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  81. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  82. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  83. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  84. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  85. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  86. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  87. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  88. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  89. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  90. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  91. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  92. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  93. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  94. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  95. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  96. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  97. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  98. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  99. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  100. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +0 -222
  101. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +0 -183
  102. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +0 -183
  103. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +0 -183
  104. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +0 -206
  105. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +0 -209
  106. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +0 -242
  107. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +0 -242
  108. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +0 -242
  109. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +0 -251
  110. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +0 -251
  111. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +0 -250
  112. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +0 -250
  113. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +0 -250
  114. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +0 -250
  115. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +0 -238
  116. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +0 -238
  117. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +0 -238
  118. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  119. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  120. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  121. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.15.47",
3
+ "version": "1.15.49",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -1054,7 +1054,11 @@ export default {
1054
1054
  this.getDataCallback(
1055
1055
  res.filter(h => {
1056
1056
  if (fromModel.indexOf('org') > -1) {
1057
- return formModelData?.includes(h.orgid || h.f_organization_id || h.parentid)
1057
+ if(type === '部门'){
1058
+ return formModelData?.includes(h.orgid || h.f_organization_id ) || formModelData?.includes(h.parentid)
1059
+ } else {
1060
+ return formModelData?.includes(h.orgid || h.f_organization_id || h.parentid)
1061
+ }
1058
1062
  } else {
1059
1063
  return formModelData?.includes(h?.parentid)
1060
1064
  }
@@ -2,13 +2,14 @@
2
2
  <!-- 列表卡片模式 listMode: card -->
3
3
  <div v-if="listMode"
4
4
  class="demo-infinite-container"
5
- ref="listRef">
5
+ ref="listRef"
6
+ @scroll="handleInfiniteOnLoad">
6
7
  <a-list :grid="{ gutter: 16, xs: 1, sm: 2, md: 2, lg: 3, xl: 3, xxl: 4 }"
7
8
  :data-source="localData">
8
9
  <a-list-item slot="renderItem" slot-scope="item, index">
9
10
  <div class="card-a-col">
10
11
  <a-row class="card-row">
11
- <a-col class="id-a-col" :span="4" v-for="(detail,idx) in item" :key="idx" v-if="detail.label == label">
12
+ <a-col class="id-a-col" :span="4" v-for="(detail,idx) in item.filter(d => d.label == label)" :key="idx">
12
13
  {{detail.value}}<span style="font-size: 16px;font-weight: 400 !important;">床</span>
13
14
  </a-col>
14
15
  <a-col :span="20" class="id-a-col-2">
@@ -35,7 +36,6 @@
35
36
  <a-button v-for="(btn, i) in buttonNames"
36
37
  :key="i"
37
38
  icon="search"
38
- v-if="1"
39
39
  class="button-a-col"
40
40
  @click.stop="click(item, index)">
41
41
  {{btn}}
@@ -166,8 +166,12 @@ export default {
166
166
  this.getData(this.queryParamsName, this.fixedQueryForm)
167
167
  },
168
168
  mounted () {
169
- // 卡片模式绑定滚动事件
170
- this.$refs.listRef.addEventListener('scroll', this.handleInfiniteOnLoad)
169
+ this.$nextTick(() => {
170
+ const ref = this.$refs.listRef
171
+ if (ref && ref.addEventListener) {
172
+ ref.addEventListener('scroll', this.handleInfiniteOnLoad)
173
+ }
174
+ })
171
175
  },
172
176
  computed: {
173
177
  forwardAllEvents () {
@@ -305,6 +309,10 @@ export default {
305
309
  }
306
310
  },
307
311
  beforeDestroy () {
312
+ const ref = this.$refs.listRef
313
+ if (ref && ref.removeEventListener) {
314
+ ref.removeEventListener('scroll', this.handleInfiniteOnLoad)
315
+ }
308
316
  this.clearAllTimers()
309
317
  }
310
318
  }
@@ -482,6 +490,6 @@ export default {
482
490
  height: 297px;
483
491
  width: auto;
484
492
  border-radius: 6px;
485
- border: 1px solid rgba(255, 255, 255, 0.08)
493
+ border: 1px solid #E5E9F0;
486
494
  }
487
495
  </style>
@@ -1,207 +1,207 @@
1
- <template>
2
- <div>
3
- <div class="text-card">
4
- <div
5
- v-for="(item, index) in displayItems"
6
- :key="index"
7
- class="text-item"
8
- @click="handleItemClick(index, item.id)"
9
- @contextmenu.prevent="handleContextMenu(index, item.id)">
10
- <div class="text-content" :class="{ 'is-empty': !item.content }">
11
- {{ item.content || '+' }}
12
- </div>
13
- </div>
14
- <!-- 编辑弹出框 -->
15
- <div
16
- v-if="showEdit"
17
- class="edit-overlay"
18
- @click.self="handleOverlayClick">
19
- <div class="edit-card">
20
- <a-textarea
21
- v-model="editingContent"
22
- :autoSize="{ minRows: 3 }"
23
- @keyup.enter="handleSave"
24
- ref="textarea"/>
25
- </div>
26
- </div>
27
- <!-- 删除确认弹框 -->
28
- <a-modal
29
- v-model="showDeleteModal"
30
- title="确认删除"
31
- okText="确认"
32
- cancelText="取消"
33
- @ok="handleDeleteConfirm">
34
- <p>确定要删除这条内容吗?</p>
35
- </a-modal>
36
- </div>
37
- </div>
38
- </template>
39
-
40
- <script>
41
- import { runLogic } from '@vue2-client/services/api/common'
42
-
43
- export default {
44
- name: 'XTextCard',
45
- props: {
46
- // logic配置名,要求返回一个数组[{ id: , content: }]
47
- queryParamsName: {
48
- type: String,
49
- default: 'memorandumLOGIC'
50
- },
51
- queryParams: {
52
- type: Object,
53
- default: () => { return {} }
54
- },
55
- // 请求参数
56
- parameter: {
57
- type: Object,
58
- default: () => { return {} }
59
- }
60
- },
61
- data () {
62
- return {
63
- localItems: [], // 本地数据
64
- showEdit: false, // 是否显示编辑框
65
- editingIndex: -1, // 当前编辑的索引
66
- editingContent: '', // 编辑框的内容
67
- showDeleteModal: false, // 是否显示删除确认框
68
- deleteIndex: -1, // 要删除的项目索引
69
- ID: 0
70
- }
71
- },
72
- computed: {
73
- // 显示的列表,始终保持一个空行
74
- displayItems () {
75
- const items = [...this.localItems]
76
- // 如果最后一项不是空的,添加一个空项
77
- if (!items.length || items[items.length - 1].content) {
78
- items.push({ content: '' })
79
- }
80
- return items
81
- }
82
- },
83
- methods: {
84
- // 点击项目
85
- handleItemClick (index, id) {
86
- this.ID = id
87
- this.editingIndex = index
88
- this.editingContent = this.displayItems[index].content
89
- this.showEdit = true
90
- this.$nextTick(() => {
91
- this.$refs.textarea?.focus()
92
- })
93
- },
94
- // 点击遮罩层保存
95
- handleOverlayClick () {
96
- this.handleSave()
97
- },
98
- // 保存内容
99
- handleSave () {
100
- if (this.editingContent.trim()) {
101
- if (this.editingIndex === this.localItems.length) {
102
- // 如果是在最后一个空行添加,push新内容
103
- this.localItems.push({ content: this.editingContent.trim() })
104
- } else {
105
- // 否则更新现有内容
106
- this.localItems[this.editingIndex].content = this.editingContent.trim()
107
- }
108
- const addData = { data: this.editingContent.trim(), ID: this.ID }
109
- // 触发更新事件
110
- this.$emit('add', addData)
111
- }
112
- this.showEdit = false
113
- this.editingIndex = -1
114
- this.editingContent = ''
115
- },
116
- // 初始化数据
117
- async initData (data, parameter) {
118
- // 从配置中获取数据
119
- const resData = await runLogic(data, parameter, 'af-his')
120
- this.localItems = resData
121
- return resData
122
- },
123
- // 处理右键菜单
124
- handleContextMenu (index, id) {
125
- // 如果是最后一个空行,不显示删除框
126
- if (index === this.localItems.length) {
127
- return
128
- }
129
- this.ID = id
130
- this.deleteIndex = index
131
- this.showDeleteModal = true
132
- },
133
- // 确认删除
134
- handleDeleteConfirm () {
135
- if (this.deleteIndex > -1) {
136
- this.localItems.splice(this.deleteIndex, 1)
137
- const deleteData = { data: [...this.localItems][this.deleteIndex], ID: this.ID }
138
- this.$emit('deleteData', deleteData)
139
- this.deleteIndex = -1
140
- }
141
- this.showDeleteModal = false
142
- }
143
- },
144
- watch: {
145
- queryParamsName: {
146
- immediate: true,
147
- handler (newVal) {
148
- this.initData(newVal, this.parameter)
149
- },
150
- deep: true
151
- }
152
- }
153
- }
154
- </script>
155
-
156
- <style scoped lang="less">
157
- .text-card {
158
- position: relative;
159
- width: 100%;
160
- .text-item {
161
- padding: 8px 12px;
162
- border-bottom: 1px solid #f0f0f0;
163
- cursor: pointer;
164
- transition: all 0.3s;
165
- user-select: none;
166
-
167
- &:hover {
168
- background-color: #f5f5f5;
169
- }
170
-
171
- .text-content {
172
- white-space: nowrap;
173
- overflow: hidden;
174
- text-overflow: ellipsis;
175
- line-height: 1.5;
176
-
177
- &.is-empty {
178
- color: #5D5C5C;
179
- font-weight: 400;
180
- }
181
- }
182
- }
183
- .edit-overlay {
184
- position: fixed;
185
- top: 0;
186
- left: 0;
187
- right: 0;
188
- bottom: 0;
189
- background-color: rgba(0, 0, 0, 0.45);
190
- z-index: 1000;
191
- display: flex;
192
- align-items: center;
193
- justify-content: center;
194
- .edit-card {
195
- background: white;
196
- padding: 16px;
197
- border-radius: 8px;
198
- width: 90%;
199
- max-width: 500px;
200
- box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12);
201
- .ant-input {
202
- width: 100%;
203
- }
204
- }
205
- }
206
- }
207
- </style>
1
+ <template>
2
+ <div>
3
+ <div class="text-card">
4
+ <div
5
+ v-for="(item, index) in displayItems"
6
+ :key="index"
7
+ class="text-item"
8
+ @click="handleItemClick(index, item.id)"
9
+ @contextmenu.prevent="handleContextMenu(index, item.id)">
10
+ <div class="text-content" :class="{ 'is-empty': !item.content }">
11
+ {{ item.content || '+' }}
12
+ </div>
13
+ </div>
14
+ <!-- 编辑弹出框 -->
15
+ <div
16
+ v-if="showEdit"
17
+ class="edit-overlay"
18
+ @click.self="handleOverlayClick">
19
+ <div class="edit-card">
20
+ <a-textarea
21
+ v-model="editingContent"
22
+ :autoSize="{ minRows: 3 }"
23
+ @keyup.enter="handleSave"
24
+ ref="textarea"/>
25
+ </div>
26
+ </div>
27
+ <!-- 删除确认弹框 -->
28
+ <a-modal
29
+ v-model="showDeleteModal"
30
+ title="确认删除"
31
+ okText="确认"
32
+ cancelText="取消"
33
+ @ok="handleDeleteConfirm">
34
+ <p>确定要删除这条内容吗?</p>
35
+ </a-modal>
36
+ </div>
37
+ </div>
38
+ </template>
39
+
40
+ <script>
41
+ import { runLogic } from '@vue2-client/services/api/common'
42
+
43
+ export default {
44
+ name: 'XTextCard',
45
+ props: {
46
+ // logic配置名,要求返回一个数组[{ id: , content: }]
47
+ queryParamsName: {
48
+ type: String,
49
+ default: 'memorandumLOGIC'
50
+ },
51
+ queryParams: {
52
+ type: Object,
53
+ default: () => { return {} }
54
+ },
55
+ // 请求参数
56
+ parameter: {
57
+ type: Object,
58
+ default: () => { return {} }
59
+ }
60
+ },
61
+ data () {
62
+ return {
63
+ localItems: [], // 本地数据
64
+ showEdit: false, // 是否显示编辑框
65
+ editingIndex: -1, // 当前编辑的索引
66
+ editingContent: '', // 编辑框的内容
67
+ showDeleteModal: false, // 是否显示删除确认框
68
+ deleteIndex: -1, // 要删除的项目索引
69
+ ID: 0
70
+ }
71
+ },
72
+ computed: {
73
+ // 显示的列表,始终保持一个空行
74
+ displayItems () {
75
+ const items = [...this.localItems]
76
+ // 如果最后一项不是空的,添加一个空项
77
+ if (!items.length || items[items.length - 1].content) {
78
+ items.push({ content: '' })
79
+ }
80
+ return items
81
+ }
82
+ },
83
+ methods: {
84
+ // 点击项目
85
+ handleItemClick (index, id) {
86
+ this.ID = id
87
+ this.editingIndex = index
88
+ this.editingContent = this.displayItems[index].content
89
+ this.showEdit = true
90
+ this.$nextTick(() => {
91
+ this.$refs.textarea?.focus()
92
+ })
93
+ },
94
+ // 点击遮罩层保存
95
+ handleOverlayClick () {
96
+ this.handleSave()
97
+ },
98
+ // 保存内容
99
+ handleSave () {
100
+ if (this.editingContent.trim()) {
101
+ if (this.editingIndex === this.localItems.length) {
102
+ // 如果是在最后一个空行添加,push新内容
103
+ this.localItems.push({ content: this.editingContent.trim() })
104
+ } else {
105
+ // 否则更新现有内容
106
+ this.localItems[this.editingIndex].content = this.editingContent.trim()
107
+ }
108
+ const addData = { data: this.editingContent.trim(), ID: this.ID }
109
+ // 触发更新事件
110
+ this.$emit('add', addData)
111
+ }
112
+ this.showEdit = false
113
+ this.editingIndex = -1
114
+ this.editingContent = ''
115
+ },
116
+ // 初始化数据
117
+ async initData (data, parameter) {
118
+ // 从配置中获取数据
119
+ const resData = await runLogic(data, parameter, 'af-his')
120
+ this.localItems = resData
121
+ return resData
122
+ },
123
+ // 处理右键菜单
124
+ handleContextMenu (index, id) {
125
+ // 如果是最后一个空行,不显示删除框
126
+ if (index === this.localItems.length) {
127
+ return
128
+ }
129
+ this.ID = id
130
+ this.deleteIndex = index
131
+ this.showDeleteModal = true
132
+ },
133
+ // 确认删除
134
+ handleDeleteConfirm () {
135
+ if (this.deleteIndex > -1) {
136
+ this.localItems.splice(this.deleteIndex, 1)
137
+ const deleteData = { data: [...this.localItems][this.deleteIndex], ID: this.ID }
138
+ this.$emit('deleteData', deleteData)
139
+ this.deleteIndex = -1
140
+ }
141
+ this.showDeleteModal = false
142
+ }
143
+ },
144
+ watch: {
145
+ queryParamsName: {
146
+ immediate: true,
147
+ handler (newVal) {
148
+ this.initData(newVal, this.parameter)
149
+ },
150
+ deep: true
151
+ }
152
+ }
153
+ }
154
+ </script>
155
+
156
+ <style scoped lang="less">
157
+ .text-card {
158
+ position: relative;
159
+ width: 100%;
160
+ .text-item {
161
+ padding: 8px 12px;
162
+ border-bottom: 1px solid #f0f0f0;
163
+ cursor: pointer;
164
+ transition: all 0.3s;
165
+ user-select: none;
166
+
167
+ &:hover {
168
+ background-color: #f5f5f5;
169
+ }
170
+
171
+ .text-content {
172
+ white-space: nowrap;
173
+ overflow: hidden;
174
+ text-overflow: ellipsis;
175
+ line-height: 1.5;
176
+
177
+ &.is-empty {
178
+ color: #5D5C5C;
179
+ font-weight: 400;
180
+ }
181
+ }
182
+ }
183
+ .edit-overlay {
184
+ position: fixed;
185
+ top: 0;
186
+ left: 0;
187
+ right: 0;
188
+ bottom: 0;
189
+ background-color: rgba(0, 0, 0, 0.45);
190
+ z-index: 1000;
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ .edit-card {
195
+ background: white;
196
+ padding: 16px;
197
+ border-radius: 8px;
198
+ width: 90%;
199
+ max-width: 500px;
200
+ box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12);
201
+ .ant-input {
202
+ width: 100%;
203
+ }
204
+ }
205
+ }
206
+ }
207
+ </style>