vue2-client 1.14.76 → 1.14.78

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 (97) 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 +1 -2
  3. package/package.json +1 -1
  4. package/src/base-client/components/his/XQuestionnaire/XQuestionnaire.json +3 -3
  5. package/src/base-client/components/his/XQuestionnaire/XQuestionnaire.vue +21 -10
  6. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  7. package/src/base-client/components/his/XTreeRows/TreeNode.vue +100 -100
  8. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +197 -197
  9. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  10. package/src/pages/addressSelect/addressDemo.vue +24 -0
  11. package/src/pages/addressSelect/index.vue +259 -0
  12. package/src/router/async/router.map.js +1 -0
  13. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  14. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  15. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  16. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  17. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  18. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  19. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  20. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  21. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  22. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  23. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  24. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  25. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  26. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  27. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  28. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  29. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  30. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  31. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  32. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  33. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  34. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  35. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  36. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  37. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  38. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  39. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  40. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  58. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  59. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  60. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  61. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  62. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  63. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  64. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  65. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  66. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  67. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  68. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  69. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  70. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  71. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  72. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  73. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  74. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  75. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  76. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  77. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  78. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  79. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  80. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  81. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  82. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  83. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  84. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  85. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  86. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  87. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  88. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  89. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  90. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  91. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  92. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  93. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  94. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  95. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  96. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  97. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -11,7 +11,6 @@
11
11
  - ENV 对应 一个 org.json.JSONObject {tenantName:"租户名称",orgName:"分公司名称",applicationName:"应用名称",dbType:"数据库类型"}
12
12
  - logic 对应 LogicService 类,其中有方法
13
13
  * logic.run(logicName,param) 执行logic / logicName 执行的业务逻辑名称,param 参数 返回 org.json.JSONObject
14
- * logic.remoteRun("服务名","logicName", "param")
15
14
  - sql 对应 [SqlService]() 类,其中有方法
16
15
  * sql.query(sql别名 string,sql参数 string) 执行已经注册的sql 返回 org.json.JSONArray
17
16
  * sql.query(sql别名 string,sql参数 string,页数 int,每页行数 int) 执行已经注册的sql 返回 org.json.JSONArray
@@ -60,8 +60,7 @@ this.openDialog('xxx', 5, {}, {}, {})
60
60
  afterDelete( res (删除接口返回数据)) 删除后触发
61
61
  action(record (当前记录), id (当前记录主键), actionType (操作类型)) 操作按钮触发
62
62
  - expandedGrid:"栅格名"
63
- - json配置相关
64
- - "pageMaxSize": (int) num,
63
+
65
64
  # x-report 插槽 使用说明
66
65
 
67
66
  - init(configName,configData) 配置名称 / 报表数据
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.14.76",
3
+ "version": "1.14.78",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -6,7 +6,7 @@
6
6
  "content": [
7
7
  {
8
8
  "key":"", //单行记录的标识
9
- "justifyContent":"",//居中方式
9
+ "style":"",//居中方式
10
10
  "item": [
11
11
  {
12
12
  "type":"",
@@ -18,8 +18,8 @@
18
18
  }
19
19
  ]
20
20
  }
21
- //常量取值
22
- type [radio,checkBox,selectionBox,text,input,time,describe]
21
+ //常量取值 checkBox多选
22
+ type [radio,selectionBox,text,input,time,describe]
23
23
  justifyContent = ['flex-start', 'flex-end', 'center', 'space-between', 'space-around']
24
24
 
25
25
  "results": [{
@@ -26,13 +26,14 @@
26
26
  </template>
27
27
  <template v-else-if="column.type === 'radio'">
28
28
  <x-radio
29
+ :class="['column-item']"
29
30
  :key="`row-${index}-item-${idx}`"
30
31
  :queryParamsName="column.configName"
31
32
  @change="handleChange($event,column,index)">
32
33
  </x-radio>
33
34
  </template>
34
35
  <template v-else-if="column.type === 'time'">
35
- <x-time-select @change="handleChange($event,column,index)" :key="`row-${index}-item-${idx}`" :queryParamsName="column.configName">
36
+ <x-time-select :key="`row-${index}-item-${idx}`" :class="['column-item']" @change="handleChange($event,column,index)" :queryParamsName="column.configName">
36
37
  </x-time-select>
37
38
  </template>
38
39
  <template v-else-if="column.type === 'text'">
@@ -116,6 +117,8 @@ export default {
116
117
  this.mapping.push(this.results.length)
117
118
  value.row_key = fields.key
118
119
  this.results.push(value)
120
+ } else {
121
+ this.mapping.push(undefined)
119
122
  }
120
123
  }
121
124
  })
@@ -136,15 +139,12 @@ export default {
136
139
  const resultIndex = this.mapping[rowIndex]
137
140
  if (resultIndex === undefined) return
138
141
  if (column.type === 'selectionBox') {
139
- this.results[resultIndex] = e.target.checked
142
+ this.results[resultIndex][column.key] = e.target.checked
140
143
  } else if (column.type === 'input') {
141
- this.results[resultIndex] = column.value
144
+ this.results[resultIndex][column.key] = column.value
145
+ } else if (column.type === 'radio' || column.type === 'time') {
146
+ this.results[resultIndex][column.key] = e
142
147
  }
143
- console.log('mapping', this.mapping)
144
- console.log('results', this.results)
145
- console.log('handleChange', column)
146
- console.log('handleChange', e)
147
- console.log('handleChange', rowIndex)
148
148
  }
149
149
  },
150
150
  watch: {
@@ -192,11 +192,21 @@ export default {
192
192
  display: flex;
193
193
  justify-content: center;
194
194
  }
195
-
195
+ .list-wrapper ::v-deep .x-radio-item {
196
+ margin-bottom: 0;
197
+ }
198
+ .list-wrapper ::v-deep .x-radio-item-container{
199
+ padding: 0;
200
+ }
201
+ .list-wrapper ::v-deep span.ant-radio + *{
202
+ padding: 0;
203
+ }
204
+ .list-wrapper ::v-deep .x-time-select {
205
+ width: auto !important;
206
+ }
196
207
  /*每一行的整体样式*/
197
208
  .row-item{
198
209
  display: flex;
199
- flex-wrap: wrap;
200
210
  align-items: center;
201
211
  }
202
212
  /*行中每一列的数据*/
@@ -212,4 +222,5 @@ export default {
212
222
  .item-input{
213
223
  flex: 1;
214
224
  }
225
+
215
226
  </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>