vue2-client 1.15.67 → 1.15.70

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 (138) hide show
  1. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +0 -10
  2. package/package.json +1 -1
  3. package/src/base-client/components/common/XFormTable/demo.vue +2 -2
  4. package/src/base-client/components/common/XTable/XTableWrapper.vue +1 -1
  5. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +43 -51
  6. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  7. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  8. package/src/router/async/router.map.js +2 -2
  9. package/src/utils/EncryptUtil.js +87 -0
  10. package/src/utils/request.js +12 -0
  11. package/vue.config.js +1 -1
  12. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  13. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  14. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  15. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  16. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  17. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +0 -207
  18. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +0 -211
  19. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +0 -212
  20. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +0 -212
  21. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  22. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  23. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  24. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  25. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  26. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  27. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +0 -731
  28. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +0 -748
  29. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +0 -748
  30. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +0 -1071
  31. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +0 -1078
  32. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +0 -1077
  33. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +0 -1077
  34. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +0 -1077
  35. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  36. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  37. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  38. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  39. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  40. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  65. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  66. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  67. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  68. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  69. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  70. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  71. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  72. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  73. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  74. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  75. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  76. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  77. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  78. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  79. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  80. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  81. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  82. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  83. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  84. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  85. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  86. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  87. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  88. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  89. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  90. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  91. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  92. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  93. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  94. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  95. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  96. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  97. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  98. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  99. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  100. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  101. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  102. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  103. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  104. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  105. package/.history/src/base-client/components/his/XList/XList_20250704142024.vue +0 -495
  106. package/.history/src/base-client/components/his/XList/XList_20250704142033.vue +0 -495
  107. package/.history/src/base-client/components/his/XList/XList_20250704142040.vue +0 -494
  108. package/.history/src/base-client/components/his/XList/XList_20250704142211.vue +0 -494
  109. package/.history/src/base-client/components/his/XList/XList_20250704142214.vue +0 -494
  110. package/.history/src/base-client/components/his/XList/XList_20250704143010.vue +0 -495
  111. package/.history/src/base-client/components/his/XList/XList_20250704143203.vue +0 -495
  112. package/.history/src/base-client/components/his/XList/XList_20250707095101.vue +0 -492
  113. package/.history/src/base-client/components/his/XList/XList_20250707100152.vue +0 -492
  114. package/.history/src/base-client/components/his/XList/XList_20250707100200.vue +0 -485
  115. package/.history/src/base-client/components/his/XList/XList_20250707100208.vue +0 -485
  116. package/.history/src/base-client/components/his/XList/XList_20250707100259.vue +0 -488
  117. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +0 -222
  118. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +0 -183
  119. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +0 -183
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +0 -183
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +0 -206
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +0 -209
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +0 -242
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +0 -242
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +0 -242
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +0 -251
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +0 -251
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +0 -250
  129. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +0 -250
  130. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +0 -250
  131. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +0 -250
  132. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +0 -238
  133. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +0 -238
  134. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +0 -238
  135. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  136. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  137. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  138. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -19,16 +19,6 @@
19
19
  - getOutEnv 获取获取 outEnv
20
20
  - this.getRealKeyData(obj) 获取真实的数据 传递 {a_a:"1"} 返回 {a:"1"}
21
21
  - this.currUser.operaInfo 获取当前用户信息
22
- - ```js
23
- {
24
- f_operator: "心血管内科医生2",
25
- f_operatorid: "387280281096290306",
26
- f_orgid: "387184994751217666",
27
- f_orgname: "门诊部",
28
- f_depid: "387185267599081474",
29
- f_depname: "心血管内科"
30
- }
31
- ```
32
22
 
33
23
  ```js
34
24
  this.openDialog('xxx', 5, {}, {}, {})
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.15.67",
3
+ "version": "1.15.70",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -8,7 +8,7 @@
8
8
  @action="action"
9
9
  @selectRow="selectRow"
10
10
  @columnClick="columnClick"
11
- serviceName="af-liuli"
11
+ serviceName="af-system"
12
12
  ref="xFormTable">
13
13
  </x-form-table>
14
14
  </a-card>
@@ -26,7 +26,7 @@ export default {
26
26
  data () {
27
27
  return {
28
28
  // 查询配置文件名
29
- queryParamsName: 'crud_namespace_manage',
29
+ queryParamsName: 'ceshiCRUD',
30
30
  // 新增表单固定值
31
31
  fixedAddForm: {},
32
32
  // 是否显示详情抽屉
@@ -98,7 +98,7 @@
98
98
  </span>
99
99
  <span v-else-if="item.slotType === 'action'" :key="'action-' + c_index">
100
100
  <template v-if="item.actionArr && item.actionArr.length > 0">
101
- <a-dropdown :getPopupContainer=" triggerNode => { return triggerNode.parentNode } ">
101
+ <a-dropdown placement="bottomCenter" :getPopupContainer=" triggerNode => { return triggerNode.parentNode } ">
102
102
  <a class="ant-dropdown-link" @click="e => e.preventDefault()">
103
103
  {{ item.scopedSlots?.customRender || item.slotValue }} <a-icon type="down"/>
104
104
  </a>
@@ -44,7 +44,7 @@
44
44
  重命名
45
45
  </a-button>
46
46
  <!-- 组合按钮容器 -->
47
- <div class="combined-save-btn">
47
+ <div class="save-btn-main">
48
48
  <!-- 保存按钮 (左侧) -->
49
49
  <a-button
50
50
  type="primary"
@@ -62,7 +62,7 @@
62
62
  placement="bottomRight">
63
63
  <a-button
64
64
  type="primary"
65
- class="save-btn-dropdown">
65
+ class="dropdown-trigger-btn">
66
66
  <a-icon type="down" />
67
67
  </a-button>
68
68
  <a-menu slot="overlay">
@@ -76,7 +76,7 @@
76
76
  <a-modal
77
77
  title="保存"
78
78
  :visible="saveVisible"
79
- :confirm-loading="confirmLoading"
79
+ confirm-loading = false
80
80
  @ok="handleSaveConfirm"
81
81
  @cancel="saveVisible = false"
82
82
  >
@@ -179,7 +179,6 @@ export default {
179
179
  admissionId: undefined,
180
180
  // 保存类型
181
181
  saveType: 'normal',
182
- confirmLoading: false,
183
182
  fileName: '',
184
183
  // 数据模式列表
185
184
  modeList: [
@@ -301,24 +300,23 @@ export default {
301
300
  },
302
301
  showSaveModal (type) {
303
302
  this.saveType = type // 记录当前保存类型
304
- this.saveVisible = true;
305
- },
306
- handleSaveConfirm () {
307
- if (!this.fileName.trim()) {
308
- this.$message.error('文件名不能为空');
309
- return;
310
- }
311
- this.confirmLoading = true;
312
- // 根据保存类型执行不同的操作
313
- if (this.saveType === 'normal') {
303
+ if (type === 'template') {
304
+ this.saveVisible = true
305
+ }else {
314
306
  if (this.resId !== -1 || this.resId !== undefined) {
315
- this.save();
307
+ this.save()
316
308
  } else {
317
- this.openAddResModal();
309
+ this.openAddResModal()
318
310
  }
319
- } else if (this.saveType === 'template') {
320
- this.saveAsTemplate();
321
311
  }
312
+
313
+ },
314
+ handleSaveConfirm () {
315
+ if (!this.fileName.trim()) {
316
+ this.$message.error('文件名不能为空')
317
+ return
318
+ }
319
+ this.saveAsTemplate()
322
320
  },
323
321
  /* eslint-disable */
324
322
  // 初始化文档
@@ -500,7 +498,7 @@ export default {
500
498
  return;
501
499
  }
502
500
  this.editorRef.setBindObject(this.assignBindObject)
503
- console.log('resId', this.resId)
501
+ // console.log('resId', this.resId)
504
502
  },
505
503
  // 切换文档
506
504
  changeRes (value) {
@@ -590,49 +588,43 @@ export default {
590
588
  :deep(.ant-divider-horizontal) {
591
589
  margin: 4px 0;
592
590
  }
593
- /* 组合按钮容器 */
591
+ /* 组合按钮容器 - 关键修正 */
594
592
  .combined-save-btn {
595
593
  display: inline-flex;
596
- position: relative;
597
- height: 32px; /* 标准按钮高度 */
594
+ height: 32px;
598
595
  }
599
596
 
600
- /* 主保存按钮(保持原有样式,只调整右边框) */
597
+ /* 主保存按钮 - 保持原有样式 */
601
598
  .save-btn-main {
602
- border-top-right-radius: 0;
603
- border-bottom-right-radius: 0;
604
- border-right: none;
605
- padding-right: 24px; /* 为下拉图标留空间 */
606
- height: 100%;
599
+ border-top-right-radius: 0 !important;
600
+ border-bottom-right-radius: 0 !important;
601
+ border-right: none !important;
602
+ height: 32px;
603
+ padding: 0 15px;
604
+ display: inline-flex;
605
+ align-items: center;
606
+ justify-content: center;
607
+ margin-right: -1px; /* 关键:负边距消除间距 */
607
608
  }
608
609
 
609
- /* 下拉触发区域 */
610
- .dropdown-trigger {
611
- position: absolute;
612
- right: 0;
613
- top: 0;
614
- height: 100%;
615
- width: 24px;
616
- display: flex;
610
+ /* 下拉按钮 - 仅调整间距 */
611
+ .dropdown-trigger-btn {
612
+ height: 32px !important;
613
+ width: 24px !important;
614
+ min-width: 24px !important;
615
+ padding: 0 !important;
616
+ border-top-left-radius: 0 !important;
617
+ border-bottom-left-radius: 0 !important;
618
+ border-left: 1px solid rgba(255, 255, 255, 0.3) !important;
619
+ display: inline-flex;
617
620
  align-items: center;
618
621
  justify-content: center;
619
- background: #1890ff; /* 与主按钮颜色一致 */
620
- border-top-right-radius: 4px;
621
- border-bottom-right-radius: 4px;
622
- cursor: pointer;
623
- border-left: 1px solid rgba(255,255,255,0.3);
622
+ margin-left: 0px;
624
623
  }
625
624
 
626
- /* 下拉图标 */
627
- .dropdown-trigger .anticon {
625
+ /* 下拉图标保持原样 */
626
+ .dropdown-trigger-btn .anticon {
628
627
  font-size: 12px;
629
- color: #fff;
630
- }
631
-
632
- /* 悬停效果 */
633
- .combined-save-btn:hover .save-btn-main,
634
- .combined-save-btn:hover .dropdown-trigger {
635
- background: #40a9ff;
636
- border-color: #40a9ff;
628
+ margin: 0 !important;
637
629
  }
638
630
  </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>