vue2-client 1.14.94 → 1.14.95

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 (139) hide show
  1. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +0 -1
  2. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +2 -4
  3. package/package.json +1 -1
  4. package/src/base-client/components/common/XTab/XTab.vue +40 -8
  5. package/src/base-client/components/common/XTable/XTable.vue +23 -21
  6. package/src/base-client/components/his/XList/XList.vue +35 -35
  7. package/src/base-client/components/his/XQuestionnaire/XQuestionnaireItem.vue +7 -6
  8. package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +1 -1
  9. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  10. package/src/base-client/components/his/XTreeRows/TreeNode.vue +100 -100
  11. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +197 -197
  12. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  13. package/src/base-client/components/layout/XPageView/RenderRow.vue +30 -32
  14. package/src/base-client/components/layout/XPageView/XPageRowTemplate.vue +37 -0
  15. package/src/base-client/components/layout/XPageView/XPageView.vue +10 -9
  16. package/src/base-client/components/layout/XPageView/XTab/XTab.vue +96 -0
  17. package/src/base-client/components/layout/XPageView/XTab/index.js +3 -0
  18. package/src/base-client/components/layout/XPageView/componentTypes.js +22 -0
  19. package/src/base-client/components/layout/XPageView/index.js +1 -0
  20. package/src/base-client/components/layout/XPageView/index.md +19 -0
  21. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +10 -4
  22. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +1 -1
  23. package/src/pages/XPageViewExample/index.vue +125 -47
  24. package/src/pages/addressSelect/addressDemo.vue +24 -24
  25. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  26. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  27. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  28. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  29. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  30. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +0 -207
  31. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +0 -211
  32. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +0 -212
  33. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +0 -212
  34. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  35. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  36. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  37. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  38. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  39. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  40. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +0 -731
  41. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +0 -748
  42. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +0 -748
  43. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +0 -1071
  44. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +0 -1078
  45. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +0 -1077
  46. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +0 -1077
  47. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +0 -1077
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  65. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  66. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  67. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  68. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  69. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  70. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  71. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  72. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  73. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  74. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  75. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  76. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  77. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  78. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  79. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  80. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  81. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  82. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  83. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  84. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  85. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  86. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  87. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  88. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  89. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  90. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  91. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  92. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  93. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  94. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  95. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  96. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  97. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  98. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  99. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  100. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  101. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  102. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  103. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  104. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  105. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  106. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  107. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  108. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  109. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  110. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  111. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  112. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  113. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  114. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  115. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  116. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  117. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  118. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +0 -222
  119. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +0 -183
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +0 -183
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +0 -183
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +0 -206
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +0 -209
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +0 -242
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +0 -242
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +0 -242
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +0 -251
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +0 -251
  129. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +0 -250
  130. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +0 -250
  131. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +0 -250
  132. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +0 -250
  133. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +0 -238
  134. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +0 -238
  135. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +0 -238
  136. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  137. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  138. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  139. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -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>
@@ -1,100 +1,100 @@
1
- <template>
2
- <div class="tree-node">
3
- <div class="node-content" @click="handleClick">
4
- <span v-if="hasChildren" class="toggle-icon">
5
- {{ node.expanded ? '-' : '+' }}
6
- </span>
7
- <span v-else class="empty-space"></span>
8
- <span class="node-title" :title="node.title">{{ node.title }}</span>
9
- </div>
10
- <div v-if="hasChildren && node.expanded" class="node-children">
11
- <tree-node
12
- v-for="child in node.children"
13
- :key="child.id"
14
- :node="child"
15
- @toggle="handleToggle"
16
- :level="level + 1"/>
17
- </div>
18
- </div>
19
- </template>
20
-
21
- <script>
22
- export default {
23
- name: 'TreeNode',
24
- props: {
25
- node: {
26
- type: Object,
27
- required: true
28
- },
29
- level: {
30
- type: Number,
31
- default: 0
32
- }
33
- },
34
- computed: {
35
- hasChildren () {
36
- return this.node.children && this.node.children.length > 0
37
- }
38
- },
39
- methods: {
40
- handleClick () {
41
- if (this.hasChildren) {
42
- this.$emit('toggle', this.node)
43
- }
44
- },
45
- handleToggle (childNode) {
46
- this.$emit('toggle', childNode)
47
- }
48
- }
49
- }
50
- </script>
51
-
52
- <style scoped>
53
- .tree-node {
54
- margin: 1px 0;
55
- white-space: nowrap;
56
- }
57
-
58
- .node-content {
59
- display: flex;
60
- align-items: center;
61
- padding: 3px 2px;
62
- user-select: none;
63
- border-radius: 2px;
64
- overflow: hidden;
65
- }
66
-
67
- .toggle-icon {
68
- width: 12px;
69
- text-align: center;
70
- font-size: 14px;
71
- color:#5D5C5C;
72
- font-weight: 400;
73
- margin-right: 3px;
74
- cursor: pointer;
75
- flex-shrink: 0;
76
- }
77
-
78
- .empty-space {
79
- width: 12px;
80
- margin-right: 3px;
81
- flex-shrink: 0;
82
- }
83
-
84
- .node-title {
85
- flex: 1;
86
- cursor: default;
87
- white-space: nowrap;
88
- overflow: hidden;
89
- text-overflow: ellipsis;
90
- min-width: 0;
91
- }
92
-
93
- .node-content:hover {
94
- background-color: #f5f5f5;
95
- }
96
-
97
- .node-children {
98
- padding-left: 15px;
99
- }
100
- </style>
1
+ <template>
2
+ <div class="tree-node">
3
+ <div class="node-content" @click="handleClick">
4
+ <span v-if="hasChildren" class="toggle-icon">
5
+ {{ node.expanded ? '-' : '+' }}
6
+ </span>
7
+ <span v-else class="empty-space"></span>
8
+ <span class="node-title" :title="node.title">{{ node.title }}</span>
9
+ </div>
10
+ <div v-if="hasChildren && node.expanded" class="node-children">
11
+ <tree-node
12
+ v-for="child in node.children"
13
+ :key="child.id"
14
+ :node="child"
15
+ @toggle="handleToggle"
16
+ :level="level + 1"/>
17
+ </div>
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ export default {
23
+ name: 'TreeNode',
24
+ props: {
25
+ node: {
26
+ type: Object,
27
+ required: true
28
+ },
29
+ level: {
30
+ type: Number,
31
+ default: 0
32
+ }
33
+ },
34
+ computed: {
35
+ hasChildren () {
36
+ return this.node.children && this.node.children.length > 0
37
+ }
38
+ },
39
+ methods: {
40
+ handleClick () {
41
+ if (this.hasChildren) {
42
+ this.$emit('toggle', this.node)
43
+ }
44
+ },
45
+ handleToggle (childNode) {
46
+ this.$emit('toggle', childNode)
47
+ }
48
+ }
49
+ }
50
+ </script>
51
+
52
+ <style scoped>
53
+ .tree-node {
54
+ margin: 1px 0;
55
+ white-space: nowrap;
56
+ }
57
+
58
+ .node-content {
59
+ display: flex;
60
+ align-items: center;
61
+ padding: 3px 2px;
62
+ user-select: none;
63
+ border-radius: 2px;
64
+ overflow: hidden;
65
+ }
66
+
67
+ .toggle-icon {
68
+ width: 12px;
69
+ text-align: center;
70
+ font-size: 14px;
71
+ color:#5D5C5C;
72
+ font-weight: 400;
73
+ margin-right: 3px;
74
+ cursor: pointer;
75
+ flex-shrink: 0;
76
+ }
77
+
78
+ .empty-space {
79
+ width: 12px;
80
+ margin-right: 3px;
81
+ flex-shrink: 0;
82
+ }
83
+
84
+ .node-title {
85
+ flex: 1;
86
+ cursor: default;
87
+ white-space: nowrap;
88
+ overflow: hidden;
89
+ text-overflow: ellipsis;
90
+ min-width: 0;
91
+ }
92
+
93
+ .node-content:hover {
94
+ background-color: #f5f5f5;
95
+ }
96
+
97
+ .node-children {
98
+ padding-left: 15px;
99
+ }
100
+ </style>