vue2-client 1.22.6 → 1.22.7

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 (164) hide show
  1. package/.claude/settings.local.json +30 -30
  2. package/.env.his +19 -19
  3. package/.eslintrc.js +74 -74
  4. package/.history/.eslintrc_20260521171150.js +74 -0
  5. package/.history/.eslintrc_20260521171213.js +74 -0
  6. package/.history/src/base-client/components/common/HIS/HAddNativeForm/HAddNativeForm_20260601154443.vue +726 -0
  7. package/.history/src/base-client/components/common/HIS/HAddNativeForm/HAddNativeForm_20260601154700.vue +478 -0
  8. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260512175435.vue +706 -0
  9. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260512175450.vue +694 -0
  10. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260611152602.vue +755 -0
  11. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513145941.vue +524 -0
  12. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513153133.vue +731 -0
  13. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513160316.vue +525 -0
  14. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260601144150.vue +1046 -0
  15. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260310142713.vue +512 -0
  16. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260310145118.vue +511 -0
  17. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260311094834.vue +696 -0
  18. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260320143028.vue +693 -0
  19. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260409101450.vue +677 -0
  20. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260508164645.vue +758 -0
  21. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260508164714.vue +693 -0
  22. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260508171651.vue +716 -0
  23. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260509133717.vue +695 -0
  24. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260509171115.vue +664 -0
  25. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513140637.vue +1455 -0
  26. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513140935.vue +1441 -0
  27. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513150818.vue +1441 -0
  28. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513153119.vue +1442 -0
  29. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513153126.vue +1486 -0
  30. package/.history/src/base-client/components/common/XForm/XFormItem_20260513140854.vue +1607 -0
  31. package/.history/src/base-client/components/common/XMarkdownViewer/XMarkdownViewer_20260519140403.vue +643 -0
  32. package/.history/src/base-client/components/common/XMarkdownViewer/XMarkdownViewer_20260519140829.vue +628 -0
  33. package/.history/src/base-client/components/common/XMarkdownViewer/demo_20260519142824.vue +104 -0
  34. package/.history/src/base-client/components/common/XMarkdownViewer/demo_20260519143155.vue +102 -0
  35. package/.history/src/base-client/components/common/XReportGrid/XReport_20260309171231.vue +1241 -0
  36. package/.history/src/base-client/components/common/XReportGrid/XReport_20260309171441.vue +1223 -0
  37. package/.history/src/base-client/components/his/HAi/HAi_20260612174826.vue +472 -0
  38. package/.history/src/base-client/components/his/HAi/HAi_20260612175839.vue +538 -0
  39. package/.history/src/base-client/components/his/HAi/HAi_20260615103331.vue +650 -0
  40. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260424134504.vue +1469 -0
  41. package/.history/src/base-client/components/his/XSidebar/XSidebar_20260610171133.vue +788 -0
  42. package/.history/src/base-client/components/his/XSidebar/XSidebar_20260610171151.vue +780 -0
  43. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260511170841.vue +585 -0
  44. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260511171138.vue +787 -0
  45. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260512141830.vue +739 -0
  46. package/.history/src/components/STable/index_20260409155138.js +806 -0
  47. package/.history/src/components/STable/index_20260409155218.js +814 -0
  48. package/.history/src/expression/core/Expression_20260305164427.js +1371 -0
  49. package/.history/src/expression/core/Expression_20260305170258.js +1358 -0
  50. package/.history/src/expression/core/Program_20260305111830.js +944 -0
  51. package/.history/src/expression/core/Program_20260305112041.js +931 -0
  52. package/.history/src/logic/LogicRunner_20260304154306.js +170 -0
  53. package/.history/src/logic/LogicRunner_20260304155553.js +112 -0
  54. package/.history/src/logic/LogicRunner_20260305105834.js +112 -0
  55. package/.history/src/logic/LogicRunner_20260305112718.js +129 -0
  56. package/.history/src/logic/LogicRunner_20260305182436.js +133 -0
  57. package/.history/src/logic/LogicRunner_20260306151301.js +213 -0
  58. package/.history/src/logic/LogicRunner_20260306152419.js +213 -0
  59. package/.history/src/logic/plugins/common/DateTools_20260305154159.js +61 -0
  60. package/.history/src/logic/plugins/common/DateTools_20260305154217.js +44 -0
  61. package/.history/src/logic/plugins/common/DateTools_20260305161014.js +44 -0
  62. package/.history/src/logic/plugins/common/HttpTools_20260305164352.js +80 -0
  63. package/.history/src/logic/plugins/common/HttpTools_20260305170258.js +75 -0
  64. package/.history/src/logic/plugins/common/HttpTools_20260305171634.js +75 -0
  65. package/.history/src/logic/plugins/common/HttpTools_20260306152419.js +72 -0
  66. package/.history/src/services/api/restTools_20260427142149.js +245 -0
  67. package/.history/src/services/api/restTools_20260427142853.js +230 -0
  68. package/.history/src/services/api/restTools_20260519135558.js +230 -0
  69. package/.history/src/services/api/restTools_20260519140825.js +230 -0
  70. package/.history/src/services/api/restTools_20260519151223.js +230 -0
  71. package/.history/src/utils/indexedDB_20260306150918.js +593 -0
  72. package/.history/src/utils/indexedDB_20260306151301.js +586 -0
  73. package/.idea/af-vue2-client.iml +9 -0
  74. package/.idea/codeStyles/Project.xml +62 -0
  75. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  76. package/.idea/misc.xml +6 -0
  77. package/.idea/modules.xml +1 -1
  78. package/Components.md +60 -60
  79. package/index.js +31 -31
  80. package/jest-transform-stub.js +8 -8
  81. package/jest.setup.js +7 -7
  82. package/package.json +1 -1
  83. package/preview-input-box.html +180 -0
  84. package/src/assets/img/querySlotDemo.svg +15 -15
  85. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  86. package/src/base-client/components/common/CitySelect/index.js +3 -3
  87. package/src/base-client/components/common/CitySelect/index.md +109 -109
  88. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  89. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  90. package/src/base-client/components/common/HIS/HForm/HForm.vue +1186 -1186
  91. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  92. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  93. package/src/base-client/components/common/Tree/index.js +2 -2
  94. package/src/base-client/components/common/Upload/index.js +3 -3
  95. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  96. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  97. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  98. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  99. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  100. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  101. package/src/base-client/components/common/XDescriptions/index.md +382 -382
  102. package/src/base-client/components/common/XForm/index.md +178 -178
  103. package/src/base-client/components/common/XMarkdownViewer/demo.vue +102 -102
  104. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  105. package/src/base-client/components/common/XStepView/index.js +3 -3
  106. package/src/base-client/components/common/XStepView/index.md +31 -31
  107. package/src/base-client/components/common/XTable/index.md +255 -255
  108. package/src/base-client/components/his/HAi/HAi.vue +349 -141
  109. package/src/base-client/components/his/XList/XList.vue +130 -17
  110. package/src/base-client/components/his/XTransfer/index.md +327 -327
  111. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  112. package/src/base-client/plugins/Config.js +19 -19
  113. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  114. package/src/components/Charts/Bar.vue +62 -62
  115. package/src/components/Charts/ChartCard.vue +134 -134
  116. package/src/components/Charts/Liquid.vue +67 -67
  117. package/src/components/Charts/MiniArea.vue +39 -39
  118. package/src/components/Charts/MiniBar.vue +39 -39
  119. package/src/components/Charts/MiniProgress.vue +75 -75
  120. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  121. package/src/components/Charts/Radar.vue +68 -68
  122. package/src/components/Charts/RankList.vue +77 -77
  123. package/src/components/Charts/TagCloud.vue +113 -113
  124. package/src/components/Charts/TransferBar.vue +64 -64
  125. package/src/components/Charts/Trend.vue +82 -82
  126. package/src/components/Charts/chart.less +12 -12
  127. package/src/components/Charts/smooth.area.less +13 -13
  128. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  129. package/src/components/NumberInfo/index.js +3 -3
  130. package/src/components/NumberInfo/index.less +54 -54
  131. package/src/components/NumberInfo/index.md +43 -43
  132. package/src/components/STable/index.js +953 -953
  133. package/src/components/card/ChartCard.vue +79 -79
  134. package/src/components/chart/Bar.vue +60 -60
  135. package/src/components/chart/MiniArea.vue +67 -67
  136. package/src/components/chart/MiniBar.vue +59 -59
  137. package/src/components/chart/MiniProgress.vue +57 -57
  138. package/src/components/chart/Radar.vue +80 -80
  139. package/src/components/chart/RankingList.vue +60 -60
  140. package/src/components/chart/Trend.vue +79 -79
  141. package/src/components/chart/index.less +9 -9
  142. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  143. package/src/components/input/IInput.vue +66 -66
  144. package/src/components/menu/SideMenu.vue +75 -75
  145. package/src/components/menu/menu.js +273 -273
  146. package/src/components/tool/AStepItem.vue +60 -60
  147. package/src/layouts/CommonLayout.vue +56 -56
  148. package/src/lib.js +1 -1
  149. package/src/mock/extend/index.js +84 -84
  150. package/src/mock/goods/index.js +108 -108
  151. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  152. package/src/pages/system/dictionary/index.vue +44 -44
  153. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  154. package/src/pages/system/monitor/operLog/index.vue +37 -37
  155. package/src/services/api/cas.js +79 -79
  156. package/src/store/modules/setting.js +119 -119
  157. package/src/utils/errorCode.js +6 -6
  158. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
  159. package/.idea/MarsCodeWorkspaceAppSettings.xml +0 -7
  160. package/.idea/google-java-format.xml +0 -6
  161. package/.idea/inspectionProfiles/Project_Default.xml +0 -24
  162. package/.idea/jsLinters/eslint.xml +0 -6
  163. package/.idea/vue2-client.iml +0 -12
  164. package/.vscode/settings.json +0 -28
@@ -1,178 +1,178 @@
1
- # XForm
2
-
3
- 动态表单控件,根据JSON配置生成一个完整的动态表单
4
-
5
-
6
- ## 何时使用
7
-
8
- 当需要一个动态生成的表单时
9
-
10
-
11
- 引用方式:
12
-
13
- ```javascript
14
- import XForm from '@vue2-client/base-client/components/XForm/XForm'
15
-
16
- export default {
17
- components: {
18
- XForm
19
- }
20
- }
21
- ```
22
-
23
-
24
-
25
- ## 代码演示
26
-
27
- ```html
28
- <x-form
29
- :json-data="json"
30
- :isExports="true"
31
- @onSubmit="onSubmit">
32
- </x-form>
33
- ```
34
-
35
- ## API
36
-
37
- | 参数 | 说明 | 类型 | 默认值 |
38
- |-----------|--------------------------|---------|------|
39
- | jsonData | JSON配置,根据[工具>查询配置生成]功能生成 | Object | {} |
40
- | isExports | 是否显示导出按钮 | Boolean | true |
41
- | getDataParams | 调用logic获取数据源的追加参数 | Object | - |
42
- | @onSubmit | 表单的提交事件 | event | - |
43
-
44
- ## 例子1
45
- ----
46
- (基础使用)
47
-
48
- ```vue
49
- <template>
50
- <x-form
51
- v-if="loaded"
52
- :json-data="formItemJson"
53
- :isExports="false"
54
- @onSubmit="onSubmit">
55
- </x-form>
56
- </template>
57
-
58
- <script>
59
- import XForm from '@vue2-client/base-client/components/XForm/XForm'
60
-
61
- export default {
62
- components: {
63
- XForm
64
- },
65
- data () {
66
- return {
67
- // 加载查询参数JSON配置文件是否完成
68
- loaded: false,
69
- // 从查询参数JSON配置中得到的生成表单的JSON
70
- formItemJson: undefined,
71
- // 表单
72
- form: {}
73
- }
74
- },
75
- created () {
76
- this.getQueryJson()
77
- },
78
- methods: {
79
- // 加载查询参数JSON配置文件
80
- getQueryJson () {
81
- this.formItemJson = [
82
- {
83
- "name":"燃气公司",
84
- "keyName":"orgList",
85
- "model":"orgName",
86
- "placeholder":"请选择",
87
- "type":"select"
88
- },
89
- {
90
- "name":"用户地址",
91
- "model":"f_address",
92
- "type":"input"
93
- },
94
- {
95
- "name":"指令类型",
96
- "keyName":"指令类型",
97
- "model":"f_instruct_type",
98
- "placeholder":"请选择",
99
- "type":"select"
100
- },
101
- {
102
- "name":"指令说明",
103
- "model":"f_instruct_title",
104
- "placeholder":"请输入指令说明",
105
- "type":"input"
106
- },
107
- {
108
- "name":"指令状态",
109
- "keyName":"指令状态",
110
- "model":"f_instruct_state",
111
- "placeholder":"请选择",
112
- "type":"select"
113
- },
114
- {
115
- "name":"响应结果",
116
- "model":"f_receive_state",
117
- "placeholder":"请输入响应结果",
118
- "type":"input"
119
- },
120
- {
121
- "name":"生成时间",
122
- "model":"f_instruct_date",
123
- "type":"rangePicker"
124
- },
125
- {
126
- "name":"操作人",
127
- "model":"f_inputtor",
128
- "placeholder":"请输入操作人员",
129
- "type":"input"
130
- }
131
- ]
132
- this.loaded = true
133
- },
134
- // 表单提交方法
135
- onSubmit (res) {
136
- // 如果通过校验
137
- if (res.valid) {
138
- // 表单赋值
139
- this.form = res.form
140
- } else {
141
- return false
142
- }
143
- }
144
- }
145
- }
146
- </script>
147
- ```
148
-
149
- 注意事项
150
- ----
151
-
152
- > 本组件已经实现了自适应布局,在不同分辨率下的设备均可得到基本理想的展示效果
153
- >
154
- > 以上示例查询参数配置为后台生成后的结果,此处为了方便调试,所以直接写在了代码中,实际使用请通过发起请求获取查询参数配置,如下:
155
- ```vue
156
- <script>
157
- import { commonApi } from '@vue2-client/base-client/api/common'
158
- import Vue from 'vue'
159
-
160
- export default {
161
- data () {
162
- return {
163
- // 查询配置文件名
164
- queryParamsName: 'instructQueryParams'
165
- }
166
- },
167
- methods: {
168
- getConfig () {
169
- Vue.resetpost(commonApi.getConfig, {str: this.queryParamsName}).then((res) => {
170
- this.formItemJson = res.formJson
171
- this.columnItemJson = res.columnJson
172
- this.loaded = true
173
- })
174
- }
175
- }
176
- }
177
- </script>
178
- ```
1
+ # XForm
2
+
3
+ 动态表单控件,根据JSON配置生成一个完整的动态表单
4
+
5
+
6
+ ## 何时使用
7
+
8
+ 当需要一个动态生成的表单时
9
+
10
+
11
+ 引用方式:
12
+
13
+ ```javascript
14
+ import XForm from '@vue2-client/base-client/components/XForm/XForm'
15
+
16
+ export default {
17
+ components: {
18
+ XForm
19
+ }
20
+ }
21
+ ```
22
+
23
+
24
+
25
+ ## 代码演示
26
+
27
+ ```html
28
+ <x-form
29
+ :json-data="json"
30
+ :isExports="true"
31
+ @onSubmit="onSubmit">
32
+ </x-form>
33
+ ```
34
+
35
+ ## API
36
+
37
+ | 参数 | 说明 | 类型 | 默认值 |
38
+ |-----------|--------------------------|---------|------|
39
+ | jsonData | JSON配置,根据[工具>查询配置生成]功能生成 | Object | {} |
40
+ | isExports | 是否显示导出按钮 | Boolean | true |
41
+ | getDataParams | 调用logic获取数据源的追加参数 | Object | - |
42
+ | @onSubmit | 表单的提交事件 | event | - |
43
+
44
+ ## 例子1
45
+ ----
46
+ (基础使用)
47
+
48
+ ```vue
49
+ <template>
50
+ <x-form
51
+ v-if="loaded"
52
+ :json-data="formItemJson"
53
+ :isExports="false"
54
+ @onSubmit="onSubmit">
55
+ </x-form>
56
+ </template>
57
+
58
+ <script>
59
+ import XForm from '@vue2-client/base-client/components/XForm/XForm'
60
+
61
+ export default {
62
+ components: {
63
+ XForm
64
+ },
65
+ data () {
66
+ return {
67
+ // 加载查询参数JSON配置文件是否完成
68
+ loaded: false,
69
+ // 从查询参数JSON配置中得到的生成表单的JSON
70
+ formItemJson: undefined,
71
+ // 表单
72
+ form: {}
73
+ }
74
+ },
75
+ created () {
76
+ this.getQueryJson()
77
+ },
78
+ methods: {
79
+ // 加载查询参数JSON配置文件
80
+ getQueryJson () {
81
+ this.formItemJson = [
82
+ {
83
+ "name":"燃气公司",
84
+ "keyName":"orgList",
85
+ "model":"orgName",
86
+ "placeholder":"请选择",
87
+ "type":"select"
88
+ },
89
+ {
90
+ "name":"用户地址",
91
+ "model":"f_address",
92
+ "type":"input"
93
+ },
94
+ {
95
+ "name":"指令类型",
96
+ "keyName":"指令类型",
97
+ "model":"f_instruct_type",
98
+ "placeholder":"请选择",
99
+ "type":"select"
100
+ },
101
+ {
102
+ "name":"指令说明",
103
+ "model":"f_instruct_title",
104
+ "placeholder":"请输入指令说明",
105
+ "type":"input"
106
+ },
107
+ {
108
+ "name":"指令状态",
109
+ "keyName":"指令状态",
110
+ "model":"f_instruct_state",
111
+ "placeholder":"请选择",
112
+ "type":"select"
113
+ },
114
+ {
115
+ "name":"响应结果",
116
+ "model":"f_receive_state",
117
+ "placeholder":"请输入响应结果",
118
+ "type":"input"
119
+ },
120
+ {
121
+ "name":"生成时间",
122
+ "model":"f_instruct_date",
123
+ "type":"rangePicker"
124
+ },
125
+ {
126
+ "name":"操作人",
127
+ "model":"f_inputtor",
128
+ "placeholder":"请输入操作人员",
129
+ "type":"input"
130
+ }
131
+ ]
132
+ this.loaded = true
133
+ },
134
+ // 表单提交方法
135
+ onSubmit (res) {
136
+ // 如果通过校验
137
+ if (res.valid) {
138
+ // 表单赋值
139
+ this.form = res.form
140
+ } else {
141
+ return false
142
+ }
143
+ }
144
+ }
145
+ }
146
+ </script>
147
+ ```
148
+
149
+ 注意事项
150
+ ----
151
+
152
+ > 本组件已经实现了自适应布局,在不同分辨率下的设备均可得到基本理想的展示效果
153
+ >
154
+ > 以上示例查询参数配置为后台生成后的结果,此处为了方便调试,所以直接写在了代码中,实际使用请通过发起请求获取查询参数配置,如下:
155
+ ```vue
156
+ <script>
157
+ import { commonApi } from '@vue2-client/base-client/api/common'
158
+ import Vue from 'vue'
159
+
160
+ export default {
161
+ data () {
162
+ return {
163
+ // 查询配置文件名
164
+ queryParamsName: 'instructQueryParams'
165
+ }
166
+ },
167
+ methods: {
168
+ getConfig () {
169
+ Vue.resetpost(commonApi.getConfig, {str: this.queryParamsName}).then((res) => {
170
+ this.formItemJson = res.formJson
171
+ this.columnItemJson = res.columnJson
172
+ this.loaded = true
173
+ })
174
+ }
175
+ }
176
+ }
177
+ </script>
178
+ ```
@@ -1,102 +1,102 @@
1
- <template>
2
- <div style="padding: 16px">
3
- <h2>XMarkdownViewer Demo</h2>
4
-
5
- <div style="margin: 12px 0; padding: 12px; background: #f5f5f5; border-radius: 4px">
6
- <h4 style="margin: 0 0 8px 0">流式 AI 调用示例</h4>
7
- <div style="margin-bottom: 8px">
8
- <input
9
- v-model="userMessage"
10
- type="text"
11
- placeholder="输入消息"
12
- style="width: 300px; padding: 6px 8px; border: 1px solid #ddd; border-radius: 4px"
13
- @keyup.enter="sendMessage"
14
- >
15
- <button
16
- type="button"
17
- style="margin-left: 8px; padding: 6px 16px; background: #1890ff; color: #fff; border: none; border-radius: 4px; cursor: pointer"
18
- @click="sendMessage"
19
- >
20
- 发送
21
- </button>
22
- <button
23
- v-if="isStreaming"
24
- type="button"
25
- style="margin-left: 8px; padding: 6px 16px; background: #ff4d4f; color: #fff; border: none; border-radius: 4px; cursor: pointer"
26
- @click="stopMessage"
27
- >
28
- 停止
29
- </button>
30
- </div>
31
- <div v-if="isStreaming" style="color: #1890ff; font-size: 12px">AI 正在思考中...</div>
32
- </div>
33
-
34
- <div style="margin: 8px 0; color: #666; font-size: 12px">
35
- <span v-if="fileName">当前文件:{{ fileName }}({{ md.length }} 字符)</span>
36
- <span v-else-if="md">当前内容:流式响应({{ md.length }} 字符)</span>
37
- <span v-else>请输入消息并点击发送</span>
38
- </div>
39
-
40
- <x-markdown-viewer ref="viewer" :markdown="md" />
41
- </div>
42
- </template>
43
-
44
- <script>
45
- import XMarkdownViewer from './XMarkdownViewer.vue'
46
-
47
- export default {
48
- name: 'XMarkdownViewerDemo',
49
- components: {
50
- XMarkdownViewer
51
- },
52
- data () {
53
- return {
54
- md: '',
55
- fileName: '',
56
- userMessage: '',
57
- isStreaming: false,
58
- currentStream: null
59
- }
60
- },
61
- methods: {
62
- async sendMessage () {
63
- const message = this.userMessage.trim()
64
- if (!message) return
65
-
66
- const viewer = this.$refs.viewer
67
- if (!viewer || typeof viewer.callAiStream !== 'function') {
68
- console.warn('[Demo] viewer 不存在或没有 callAiStream 方法')
69
- return
70
- }
71
-
72
- // 开始时显示提示
73
- viewer.receiveMarkdownString('### 思考中,请稍后...\n')
74
- this.isStreaming = true
75
-
76
- // 调用流式接口
77
- const stream = viewer.callAiStream(message, {
78
- onChunk: (text) => {
79
- viewer.receiveMarkdownString('### 思考中,请稍后...\n\n' + viewer.getStreamContent())
80
- },
81
- onEnd: (fullContent) => {
82
- viewer.receiveMarkdownString(fullContent)
83
- this.isStreaming = false
84
- },
85
- onError: (error) => {
86
- viewer.receiveMarkdownString('### 抱歉,发生了错误\n\n' + error)
87
- this.isStreaming = false
88
- }
89
- })
90
-
91
- this.currentStream = stream
92
- },
93
- stopMessage () {
94
- if (this.currentStream && typeof this.currentStream.stop === 'function') {
95
- this.currentStream.stop()
96
- this.isStreaming = false
97
- }
98
- }
99
- }
100
- }
101
- </script>
102
-
1
+ <template>
2
+ <div style="padding: 16px">
3
+ <h2>XMarkdownViewer Demo</h2>
4
+
5
+ <div style="margin: 12px 0; padding: 12px; background: #f5f5f5; border-radius: 4px">
6
+ <h4 style="margin: 0 0 8px 0">流式 AI 调用示例</h4>
7
+ <div style="margin-bottom: 8px">
8
+ <input
9
+ v-model="userMessage"
10
+ type="text"
11
+ placeholder="输入消息"
12
+ style="width: 300px; padding: 6px 8px; border: 1px solid #ddd; border-radius: 4px"
13
+ @keyup.enter="sendMessage"
14
+ >
15
+ <button
16
+ type="button"
17
+ style="margin-left: 8px; padding: 6px 16px; background: #1890ff; color: #fff; border: none; border-radius: 4px; cursor: pointer"
18
+ @click="sendMessage"
19
+ >
20
+ 发送
21
+ </button>
22
+ <button
23
+ v-if="isStreaming"
24
+ type="button"
25
+ style="margin-left: 8px; padding: 6px 16px; background: #ff4d4f; color: #fff; border: none; border-radius: 4px; cursor: pointer"
26
+ @click="stopMessage"
27
+ >
28
+ 停止
29
+ </button>
30
+ </div>
31
+ <div v-if="isStreaming" style="color: #1890ff; font-size: 12px">AI 正在思考中...</div>
32
+ </div>
33
+
34
+ <div style="margin: 8px 0; color: #666; font-size: 12px">
35
+ <span v-if="fileName">当前文件:{{ fileName }}({{ md.length }} 字符)</span>
36
+ <span v-else-if="md">当前内容:流式响应({{ md.length }} 字符)</span>
37
+ <span v-else>请输入消息并点击发送</span>
38
+ </div>
39
+
40
+ <x-markdown-viewer ref="viewer" :markdown="md" />
41
+ </div>
42
+ </template>
43
+
44
+ <script>
45
+ import XMarkdownViewer from './XMarkdownViewer.vue'
46
+
47
+ export default {
48
+ name: 'XMarkdownViewerDemo',
49
+ components: {
50
+ XMarkdownViewer
51
+ },
52
+ data () {
53
+ return {
54
+ md: '',
55
+ fileName: '',
56
+ userMessage: '',
57
+ isStreaming: false,
58
+ currentStream: null
59
+ }
60
+ },
61
+ methods: {
62
+ async sendMessage () {
63
+ const message = this.userMessage.trim()
64
+ if (!message) return
65
+
66
+ const viewer = this.$refs.viewer
67
+ if (!viewer || typeof viewer.callAiStream !== 'function') {
68
+ console.warn('[Demo] viewer 不存在或没有 callAiStream 方法')
69
+ return
70
+ }
71
+
72
+ // 开始时显示提示
73
+ viewer.receiveMarkdownString('### 思考中,请稍后...\n')
74
+ this.isStreaming = true
75
+
76
+ // 调用流式接口
77
+ const stream = viewer.callAiStream(message, {
78
+ onChunk: (text) => {
79
+ viewer.receiveMarkdownString('### 思考中,请稍后...\n\n' + viewer.getStreamContent())
80
+ },
81
+ onEnd: (fullContent) => {
82
+ viewer.receiveMarkdownString(fullContent)
83
+ this.isStreaming = false
84
+ },
85
+ onError: (error) => {
86
+ viewer.receiveMarkdownString('### 抱歉,发生了错误\n\n' + error)
87
+ this.isStreaming = false
88
+ }
89
+ })
90
+
91
+ this.currentStream = stream
92
+ },
93
+ stopMessage () {
94
+ if (this.currentStream && typeof this.currentStream.stop === 'function') {
95
+ this.currentStream.stop()
96
+ this.isStreaming = false
97
+ }
98
+ }
99
+ }
100
+ }
101
+ </script>
102
+