cloud-web-corejs-haier 1.0.43 → 1.0.45

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 (228) hide show
  1. package/package.json +8 -6
  2. package/src/api/user.js +54 -46
  3. package/src/components/baseAlert/index.vue +57 -53
  4. package/src/components/baseInputExport/index.vue +3 -3
  5. package/src/components/baseTabs/mixins.js +12 -1
  6. package/src/components/errorMsg/index.vue +78 -78
  7. package/src/components/excelExport/button.vue +54 -45
  8. package/src/components/excelExport/exportFieldDialog.vue +3 -3
  9. package/src/components/excelExport/index.js +1 -43
  10. package/src/components/excelExport/index.vue +62 -34
  11. package/src/components/excelExport/mixins.js +74 -87
  12. package/src/components/excelImport/index.js +1 -62
  13. package/src/components/excelImport/mixins.js +1 -774
  14. package/src/components/fileLibrary/index.vue +113 -33
  15. package/src/components/fileLibrary/propertiesDialog.vue +6 -0
  16. package/src/components/hiprint/view/design/index.vue +139 -47
  17. package/src/components/hiprint/view/design/preview.vue +75 -52
  18. package/src/components/hiprint/view/json-view.vue +31 -31
  19. package/src/components/luckysheet/dialog.vue +159 -0
  20. package/src/components/luckysheet/export.js +595 -0
  21. package/src/components/luckysheet/fileUtils.js +147 -0
  22. package/src/components/luckysheet/index.js +69 -0
  23. package/src/components/luckysheet/templateJson.js +12078 -0
  24. package/src/components/luckysheet/view.vue +210 -0
  25. package/src/components/onlineTalk/index.vue +328 -6
  26. package/src/components/onlineTalk/talkUserDialog.vue +280 -0
  27. package/src/components/wf/addTaskUserdialog.vue +5 -5
  28. package/src/components/wf/content.vue +1244 -1169
  29. package/src/components/wf/content2.vue +604 -604
  30. package/src/components/wf/mixins/setCandidateDialog.js +228 -2
  31. package/src/components/wf/mixins/setCandidateDialog2.js +116 -101
  32. package/src/components/wf/mixins/wfTaskUserRangeDialog.js +67 -1
  33. package/src/components/wf/setCandidateDialog.vue +5 -7
  34. package/src/components/wf/setCandidateDialog2.vue +14 -10
  35. package/src/components/wf/wf.js +2325 -2209
  36. package/src/components/wf/wfTaskUserRangeDialog.vue +1 -1
  37. package/src/components/wf/wfUtil.js +129 -91
  38. package/src/components/xform/form-designer/designer.js +1994 -9
  39. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +10 -0
  40. package/src/components/xform/form-designer/form-widget/container-widget/detail-pane-widget.vue +3 -2
  41. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +5 -1
  42. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin - /345/211/257/346/234/254.js" +1639 -0
  43. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1756 -2
  44. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +1 -0
  45. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-item-widget.vue +10 -1
  46. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-widget.vue +170 -0
  47. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +1630 -1
  48. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +153 -40
  49. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +65 -46
  50. package/src/components/xform/form-designer/form-widget/field-widget/vue-page-widget.vue +231 -0
  51. package/src/components/xform/form-designer/setting-panel/form-setting.vue +7 -4
  52. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/edit-tree-button-group-config-dialog.vue +281 -0
  53. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +659 -221
  54. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +3 -3
  55. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +133 -0
  56. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +14 -6
  57. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +1 -1
  58. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +1 -1
  59. package/src/components/xform/form-designer/setting-panel/property-editor/field-vue-page/vue-page-editor.vue +48 -0
  60. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconClass-editor.vue +18 -17
  61. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +26 -26
  62. package/src/components/xform/form-designer/setting-panel/property-editor/labelTooltip-editor.vue +67 -13
  63. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +2 -0
  64. package/src/components/xform/form-designer/setting-panel/property-editor/showViewButton-editor.vue +29 -0
  65. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +8 -6
  66. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +1 -0
  67. package/src/components/xform/form-render/container-item/data-table-mixin.js +20 -17
  68. package/src/components/xform/form-render/container-item/detail-item.vue +72 -48
  69. package/src/components/xform/form-render/container-item/sub-form-item.vue +10 -2
  70. package/src/components/xform/form-render/container-item/table2-item.vue +40 -10
  71. package/src/components/xform/form-render/indexMixin.js +3705 -1
  72. package/src/components/xform/icon-picker/icons.json +284 -0
  73. package/src/components/xform/icon-picker/index.vue +145 -0
  74. package/src/components/xform/lang/zh-CN.js +2 -1
  75. package/src/components/xform/mixins/defaultHandle.js +366 -2
  76. package/src/components/xform/utils/formula-util.js +3 -0
  77. package/src/components/xform/utils/sfc-generator.js +2 -2
  78. package/src/components/xform/utils/smart-vue-i18n/index.js +2 -1
  79. package/src/components/xform/utils/tableColumnHelper.js +54 -10
  80. package/src/components/xform/utils/util.js +1547 -1
  81. package/src/index.js +190 -211
  82. package/src/lang/locale/en/login.js +26 -19
  83. package/src/lang/locale/zh/login.js +25 -19
  84. package/src/layout/components/Sidebar/default.vue +252 -71
  85. package/src/layout/components/Sidebar/index.vue +6 -1
  86. package/src/layout/components/TagsView/index.vue +6 -0
  87. package/src/layout/components/langTool.vue +32 -29
  88. package/src/layout/defaultLayout.vue +16 -8
  89. package/src/layout/index.vue +5 -3
  90. package/src/permission.js +135 -1
  91. package/src/router/index.js +1 -4
  92. package/src/store/config/index.js +667 -1
  93. package/src/store/getters.js +2 -1
  94. package/src/store/modules/permission.js +332 -1
  95. package/src/store/modules/settings.js +26 -1
  96. package/src/store/modules/tagsView.js +190 -1
  97. package/src/store/modules/user.js +358 -1
  98. package/src/utils/aes.js +15 -1
  99. package/src/utils/auth.js +27 -1
  100. package/src/utils/componentDialog.js +217 -0
  101. package/src/utils/request.js +368 -1
  102. package/src/utils/vab.js +1256 -7
  103. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -174
  104. package/src/views/bd/setting/bd_company_env/edit.vue +193 -193
  105. package/src/views/bd/setting/formVersion/button.vue +55 -0
  106. package/src/views/bd/setting/formVersion/compareBasicSection.vue +125 -0
  107. package/src/views/bd/setting/formVersion/compareCodeSection.vue +539 -0
  108. package/src/views/bd/setting/formVersion/compareContMixin.scss +65 -0
  109. package/src/views/bd/setting/formVersion/compareContent.vue +63 -0
  110. package/src/views/bd/setting/formVersion/compareDialog.vue +88 -0
  111. package/src/views/bd/setting/formVersion/compareMixin.js +93 -0
  112. package/src/views/bd/setting/formVersion/fieldCompare.vue +54 -0
  113. package/src/views/bd/setting/formVersion/formScriptCompareView.vue +94 -0
  114. package/src/views/bd/setting/formVersion/formTemplateCompareView.vue +74 -0
  115. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +491 -0
  116. package/src/views/bd/setting/formVersion/link.vue +58 -0
  117. package/src/views/bd/setting/formVersion/preformDialog.vue +87 -0
  118. package/src/views/bd/setting/formVersion/reverButton.vue +82 -0
  119. package/src/views/bd/setting/formVersion/tableDetailDiff.js +99 -0
  120. package/src/views/bd/setting/formVersion/tableModelCompareView.vue +514 -0
  121. package/src/views/bd/setting/formVersion/textDiff.js +102 -0
  122. package/src/views/bd/setting/form_import_log/edit.vue +6 -3
  123. package/src/views/bd/setting/form_import_log/list.vue +5 -0
  124. package/src/views/bd/setting/form_script/edit.vue +196 -83
  125. package/src/views/bd/setting/form_script/edit1.vue +410 -220
  126. package/src/views/bd/setting/form_script/form_list.vue +19 -0
  127. package/src/views/bd/setting/form_script/list.vue +95 -21
  128. package/src/views/bd/setting/form_script/list1.vue +24 -0
  129. package/src/views/bd/setting/form_script/mixins/dialog.js +2 -2
  130. package/src/views/bd/setting/form_script/mixins/edit.js +265 -207
  131. package/src/views/bd/setting/form_script/mixins/edit1.js +259 -201
  132. package/src/views/bd/setting/form_script/mixins/form_list.js +322 -296
  133. package/src/views/bd/setting/form_script/mixins/list.js +163 -95
  134. package/src/views/bd/setting/form_script/mixins/list1.js +244 -155
  135. package/src/views/bd/setting/form_script/mixins/otherAuthDialog.js +1 -1
  136. package/src/views/bd/setting/form_template/batchWfObjConfigDialog.vue +1 -1
  137. package/src/views/bd/setting/form_template/edit.vue +355 -205
  138. package/src/views/bd/setting/form_template/formDesignerDialog.vue +171 -0
  139. package/src/views/bd/setting/form_template/list.vue +49 -74
  140. package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +3 -3
  141. package/src/views/bd/setting/form_template/mixins/edit.js +51 -8
  142. package/src/views/bd/setting/form_template/mixins/itemList.js +1 -1
  143. package/src/views/bd/setting/form_template/mixins/list.js +114 -82
  144. package/src/views/bd/setting/form_template/mixins/list2.js +3 -3
  145. package/src/views/bd/setting/form_template/mixins/otherAuthDialog.js +1 -1
  146. package/src/views/bd/setting/form_template/mixins/wf_list.js +3 -7
  147. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +254 -254
  148. package/src/views/bd/setting/form_template/wf_list.vue +161 -127
  149. package/src/views/bd/setting/request_async_setting/edit.vue +320 -320
  150. package/src/views/bd/setting/request_setting/edit.vue +300 -300
  151. package/src/views/bd/setting/request_setting/list.vue +15 -25
  152. package/src/views/bd/setting/table_model/edit.vue +702 -498
  153. package/src/views/bd/setting/table_model/list.vue +28 -0
  154. package/src/views/bd/setting/table_model/mixins/dialog.js +1 -1
  155. package/src/views/bd/setting/table_model/mixins/edit copy.js +903 -0
  156. package/src/views/bd/setting/table_model/mixins/edit.js +228 -121
  157. package/src/views/bd/setting/table_model/mixins/list.js +55 -20
  158. package/src/views/bd/setting/table_model/mixins/otherAuthDialog.js +1 -1
  159. package/src/views/bd/setting/table_model/mixins/zdDialog.js +50 -46
  160. package/src/views/bd/setting/utils/index.js +15 -0
  161. package/src/views/user/api_request/list.vue +203 -203
  162. package/src/views/user/bill_setting/list.vue +345 -345
  163. package/src/views/user/code_rules/list.vue +204 -204
  164. package/src/views/user/common_attribute/list.vue +378 -378
  165. package/src/views/user/common_script/list.vue +341 -341
  166. package/src/views/user/company_info/dialog.vue +80 -49
  167. package/src/views/user/country/list.vue +197 -197
  168. package/src/views/user/extend_datasource/dialog.vue +0 -3
  169. package/src/views/user/extend_datasource/edit.vue +1 -2
  170. package/src/views/user/extend_datasource/list.vue +221 -224
  171. package/src/views/user/fieldTranslation/editDialog.vue +1 -1
  172. package/src/views/user/fieldTranslation/list.vue +473 -473
  173. package/src/views/user/field_values_invisible/list.vue +207 -207
  174. package/src/views/user/file_type/list.vue +271 -271
  175. package/src/views/user/file_view_area/list.vue +331 -331
  176. package/src/views/user/form/vform/designer.vue +303 -287
  177. package/src/views/user/form/vform/formFieldMapping.js +2 -3
  178. package/src/views/user/form/view/edit.vue +19 -1
  179. package/src/views/user/form/view/list.vue +59 -17
  180. package/src/views/user/groups/list.vue +158 -158
  181. package/src/views/user/home/default.vue +274 -182
  182. package/src/views/user/home/default2.vue +1148 -0
  183. package/src/views/user/home/index.vue +2 -1
  184. package/src/views/user/lang_tag/list.vue +170 -170
  185. package/src/views/user/language_setting/list.vue +208 -208
  186. package/src/views/user/ledger_library/list.vue +12 -10
  187. package/src/views/user/login/default.vue +1 -1
  188. package/src/views/user/login/indexMixin.js +204 -169
  189. package/src/views/user/menu/list.vue +575 -575
  190. package/src/views/user/notify_message/dialog.vue +7 -1
  191. package/src/views/user/notify_template/list.vue +192 -192
  192. package/src/views/user/notify_template/list2.vue +190 -190
  193. package/src/views/user/position/list.vue +188 -188
  194. package/src/views/user/project_tag/list.vue +175 -175
  195. package/src/views/user/push_setting/list.vue +236 -236
  196. package/src/views/user/request_setting/list.vue +248 -248
  197. package/src/views/user/role/list.vue +182 -182
  198. package/src/views/user/system_notice/infoDialog.vue +61 -2
  199. package/src/views/user/system_notice/list.vue +203 -203
  200. package/src/views/user/system_parameter/list.vue +141 -141
  201. package/src/views/user/user/edit.vue +45 -0
  202. package/src/views/user/user/form_list.vue +245 -245
  203. package/src/views/user/user/info.vue +253 -140
  204. package/src/views/user/user_log_classify/list.vue +197 -197
  205. package/src/views/user/wf/iframe/index.vue +46 -46
  206. package/src/views/user/wf/wfReport/index.vue +1 -1
  207. package/src/views/user/wf/wf_auto_submit_data/list.vue +659 -659
  208. package/src/views/user/wf/wf_diy_attribute/edit.vue +1 -1
  209. package/src/views/user/wf/wf_manage/list.vue +795 -795
  210. package/src/views/user/wf/wf_manage/wfContentDialog.vue +106 -106
  211. package/src/views/user/wf/wf_obj_config/dialog.vue +2 -2
  212. package/src/views/user/wf/wf_obj_config/edit.vue +1 -1
  213. package/src/views/user/wf/wf_obj_config/edit_form.vue +2 -2
  214. package/src/views/user/wf/wf_obj_config/itemEdit.vue +1 -1
  215. package/src/views/user/wf/wf_obj_config/itemEdit_form.vue +1 -1
  216. package/src/views/user/wf/wf_obj_config/itemOperateDialog.vue +4 -4
  217. package/src/views/user/wf/wf_obj_config/list.vue +28 -28
  218. package/src/views/user/wf/wf_obj_config/list_form.vue +5 -5
  219. package/src/views/user/wf/wf_obj_config/wfBizDataSettingDialog.vue +292 -292
  220. package/src/views/user/wf/wf_param/edit.vue +1 -1
  221. package/src/views/user/wf/wf_transfer_setting/edit.vue +1 -1
  222. package/src/views/user/wf/wf_transfer_setting/list.vue +321 -319
  223. package/src/views/user/wf/wf_work_calendar/components/calendar.vue +369 -367
  224. package/src/views/user/wf/wf_work_calendar/components/calendar2.vue +401 -399
  225. package/src/views/user/wf/wf_work_calendar/configDialog.vue +6 -6
  226. package/src/views/user/wf/wf_work_calendar/date.js +84 -83
  227. package/src/views/user/wf/wf_work_calendar/list.vue +6 -6
  228. package/src/views/user/workbench_menu/list.vue +555 -0
@@ -0,0 +1,539 @@
1
+ <template>
2
+ <div
3
+ class="compare-cont compare-code-section"
4
+ :class="{ 'is-section-fullscreen': fullscreen, 'is-diff-mode': enableDiff }"
5
+ >
6
+ <div class="compare-code-header">
7
+ <div class="compare-header-main">
8
+ <div class="title">
9
+ <b>{{ $t1(sectionTitle) }}</b>
10
+ </div>
11
+ <div v-if="enableDiff" class="compare-diff-legend">
12
+ <span class="compare-diff-nav">
13
+ <el-button plain
14
+ :type="!diffNavList.length ? 'info' : 'primary'"
15
+ class="button-sty"
16
+ :disabled="!diffNavList.length"
17
+ @click="diffNavList.length && gotoPrevDiff()"
18
+ >
19
+ <i class="el-icon-top"></i>{{ $t1("上一处差异") }}
20
+ </el-button>
21
+ <el-button plain
22
+ :type="!diffNavList.length ? 'info' : 'primary'"
23
+ class="button-sty"
24
+ :disabled="!diffNavList.length"
25
+ @click="diffNavList.length && gotoNextDiff()"
26
+ >
27
+ <i class="el-icon-bottom"></i>{{ $t1("下一处差异") }}
28
+ </el-button>
29
+ <el-button type="primary" plain @click="gotoTop" class="button-sty">
30
+ <i class="el-icon-caret-top"></i>{{ $t1("返回顶部") }}
31
+ </el-button>
32
+ <span v-if="diffNavList.length" class="diff-nav-count">
33
+ {{ currentDiffIndex < 0 ? "-" : currentDiffIndex + 1 }} /
34
+ {{ diffNavList.length }}
35
+ </span>
36
+ </span>
37
+ </div>
38
+ </div>
39
+ <el-tooltip
40
+ class="item"
41
+ effect="dark"
42
+ :content="$t1('全屏')"
43
+ placement="top"
44
+ >
45
+ <el-link class="is-full" :underline="false" @click="toggleFullscreen">
46
+ <i class="iconfont icon-quanping"></i>
47
+ </el-link>
48
+ </el-tooltip>
49
+ </div>
50
+ <div class="flex compare-code-flex">
51
+ <div class="flex-1 compare-code-col">
52
+ <span class="version-blue">{{ $t1("版本号") }}:{{ preVersion }}</span>
53
+ <div class="compare-code-editor-wrap">
54
+ <code-editor
55
+ ref="leftEditor"
56
+ :mode="mode"
57
+ :readonly="true"
58
+ :value="leftCode"
59
+ :resize="false"
60
+ :height="editorHeight"
61
+ />
62
+ </div>
63
+ </div>
64
+ <div class="flex-1 compare-code-col">
65
+ <span class="version-green">{{ $t1("版本号") }}:{{ curVersion }}</span>
66
+ <div class="compare-code-editor-wrap">
67
+ <code-editor
68
+ ref="rightEditor"
69
+ :mode="mode"
70
+ :readonly="true"
71
+ :value="rightCode"
72
+ :resize="false"
73
+ :height="editorHeight"
74
+ />
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </template>
80
+
81
+ <script>
82
+ import ace from "ace-builds";
83
+ import { diffLines } from "./textDiff";
84
+
85
+ export default {
86
+ name: "compareCodeSection",
87
+ props: {
88
+ sectionTitle: {
89
+ type: String,
90
+ default: "脚本",
91
+ },
92
+ preVersion: [String, Number],
93
+ curVersion: [String, Number],
94
+ leftCode: {
95
+ type: String,
96
+ default: "",
97
+ },
98
+ rightCode: {
99
+ type: String,
100
+ default: "",
101
+ },
102
+ mode: {
103
+ type: String,
104
+ default: "java",
105
+ },
106
+ enableDiff: {
107
+ type: Boolean,
108
+ default: false,
109
+ },
110
+ },
111
+ data() {
112
+ return {
113
+ fullscreen: false,
114
+ diffNavList: [],
115
+ currentDiffIndex: -1,
116
+ diffMarkerIds: {
117
+ left: [],
118
+ right: [],
119
+ },
120
+ activeMarkerIds: {
121
+ left: null,
122
+ right: null,
123
+ },
124
+ };
125
+ },
126
+ computed: {
127
+ editorHeight() {
128
+ return this.fullscreen ? "100%" : "450px";
129
+ },
130
+ },
131
+ watch: {
132
+ leftCode() {
133
+ this.syncAndApplyDiff();
134
+ },
135
+ rightCode() {
136
+ this.syncAndApplyDiff();
137
+ },
138
+ editorHeight() {
139
+ this.resizeEditors();
140
+ if (this.enableDiff) {
141
+ this.syncAndApplyDiff();
142
+ }
143
+ },
144
+ enableDiff(val) {
145
+ if (val) {
146
+ this.syncAndApplyDiff();
147
+ } else {
148
+ this.clearDiffMarkers();
149
+ this.diffNavList = [];
150
+ this.currentDiffIndex = -1;
151
+ }
152
+ },
153
+ },
154
+ mounted() {
155
+ this.syncAndApplyDiff();
156
+ },
157
+ beforeDestroy() {
158
+ this.clearDiffMarkers();
159
+ },
160
+ methods: {
161
+ syncEditorContent() {
162
+ [
163
+ { ref: "leftEditor", code: this.leftCode },
164
+ { ref: "rightEditor", code: this.rightCode },
165
+ ].forEach(({ ref, code }) => {
166
+ const editorComp = this.$refs[ref];
167
+ const aceEditor = editorComp?.aceEditor;
168
+ if (!aceEditor) return;
169
+ const newVal = code || "";
170
+ if (aceEditor.getValue() !== newVal) {
171
+ aceEditor.setValue(newVal, -1);
172
+ aceEditor.clearSelection();
173
+ }
174
+ });
175
+ },
176
+ syncAndApplyDiff() {
177
+ this.$nextTick(() => {
178
+ this.syncEditorContent();
179
+ if (!this.enableDiff) return;
180
+ this.$nextTick(() => {
181
+ this.applyDiffHighlightWithRetry();
182
+ });
183
+ });
184
+ },
185
+ applyDiffHighlightWithRetry(retry = 0) {
186
+ if (!this.enableDiff) return;
187
+ const leftReady = !!this.$refs.leftEditor?.aceEditor;
188
+ const rightReady = !!this.$refs.rightEditor?.aceEditor;
189
+ if ((!leftReady || !rightReady) && retry < 20) {
190
+ setTimeout(() => this.applyDiffHighlightWithRetry(retry + 1), 50);
191
+ return;
192
+ }
193
+ this.syncEditorContent();
194
+ this.applyDiffHighlight();
195
+ },
196
+ toggleFullscreen() {
197
+ this.fullscreen = !this.fullscreen;
198
+ this.$nextTick(() => {
199
+ this.resizeEditors();
200
+ this.syncAndApplyDiff();
201
+ });
202
+ },
203
+ resizeEditors() {
204
+ this.$nextTick(() => {
205
+ ["leftEditor", "rightEditor"].forEach((refName) => {
206
+ const editor = this.$refs[refName];
207
+ if (editor && editor.aceEditor) {
208
+ editor.aceEditor.resize();
209
+ }
210
+ });
211
+ });
212
+ },
213
+ clearDiffMarkers() {
214
+ this.clearActiveMarkers();
215
+ ["leftEditor", "rightEditor"].forEach((refName, index) => {
216
+ const side = index === 0 ? "left" : "right";
217
+ const editor = this.$refs[refName]?.aceEditor;
218
+ if (!editor) return;
219
+ this.diffMarkerIds[side].forEach((id) => {
220
+ editor.session.removeMarker(id);
221
+ });
222
+ this.diffMarkerIds[side] = [];
223
+ });
224
+ },
225
+ clearActiveMarkers() {
226
+ ["leftEditor", "rightEditor"].forEach((refName, index) => {
227
+ const side = index === 0 ? "left" : "right";
228
+ const editor = this.$refs[refName]?.aceEditor;
229
+ const markerId = this.activeMarkerIds[side];
230
+ if (editor && markerId != null) {
231
+ editor.session.removeMarker(markerId);
232
+ }
233
+ this.activeMarkerIds[side] = null;
234
+ });
235
+ },
236
+ applyDiffHighlight() {
237
+ if (!this.enableDiff) return;
238
+
239
+ const leftEditor = this.$refs.leftEditor?.aceEditor;
240
+ const rightEditor = this.$refs.rightEditor?.aceEditor;
241
+ if (!leftEditor || !rightEditor) return;
242
+
243
+ this.syncEditorContent();
244
+ this.clearDiffMarkers();
245
+
246
+ const leftText = leftEditor.getValue();
247
+ const rightText = rightEditor.getValue();
248
+ const { oldMarks, newMarks, diffNavList } = diffLines(
249
+ leftText,
250
+ rightText
251
+ );
252
+ this.diffNavList = diffNavList || [];
253
+ this.currentDiffIndex = -1;
254
+ const Range = ace.require("ace/range").Range;
255
+
256
+ this.diffMarkerIds.left = oldMarks.map((row) =>
257
+ leftEditor.session.addMarker(
258
+ new Range(row, 0, row, Number.MAX_VALUE),
259
+ "compare-diff-old",
260
+ "fullLine",
261
+ false
262
+ )
263
+ );
264
+ this.diffMarkerIds.right = newMarks.map((row) =>
265
+ rightEditor.session.addMarker(
266
+ new Range(row, 0, row, Number.MAX_VALUE),
267
+ "compare-diff-new",
268
+ "fullLine",
269
+ false
270
+ )
271
+ );
272
+ },
273
+ gotoPrevDiff() {
274
+ if (!this.diffNavList.length) return;
275
+ this.currentDiffIndex =
276
+ (this.currentDiffIndex - 1 + this.diffNavList.length) %
277
+ this.diffNavList.length;
278
+ this.locateCurrentDiff();
279
+ },
280
+ gotoNextDiff() {
281
+ if (!this.diffNavList.length) return;
282
+ this.currentDiffIndex =
283
+ (this.currentDiffIndex + 1) % this.diffNavList.length;
284
+ this.locateCurrentDiff();
285
+ },
286
+ gotoTop() {
287
+ const leftEditor = this.$refs.leftEditor?.aceEditor;
288
+ const rightEditor = this.$refs.rightEditor?.aceEditor;
289
+ if (!leftEditor || !rightEditor) return;
290
+
291
+ this.clearActiveMarkers();
292
+ this.currentDiffIndex = -1;
293
+ this.scrollEditorToLine(leftEditor, 0);
294
+ this.scrollEditorToLine(rightEditor, 0);
295
+ },
296
+ resolveDiffScrollRows(diffItem) {
297
+ const leftRow =
298
+ diffItem.left != null ? diffItem.left : diffItem.anchorLeft ?? 0;
299
+ const rightRow =
300
+ diffItem.right != null ? diffItem.right : diffItem.anchorRight ?? 0;
301
+ return { leftRow, rightRow };
302
+ },
303
+ addActiveHunkMarker(editor, side, diffItem) {
304
+ const Range = ace.require("ace/range").Range;
305
+ const isLeft = side === "left";
306
+ const start = isLeft ? diffItem.left : diffItem.right;
307
+ const end = isLeft ? diffItem.leftEnd : diffItem.rightEnd;
308
+
309
+ if (start == null) return null;
310
+
311
+ const endRow = end != null ? end : start;
312
+ return editor.session.addMarker(
313
+ new Range(start, 0, endRow, Number.MAX_VALUE),
314
+ isLeft ? "compare-diff-active-old" : "compare-diff-active-new",
315
+ "fullLine",
316
+ false
317
+ );
318
+ },
319
+ scrollEditorToLine(editor, row) {
320
+ const maxRow = Math.max(editor.session.getLength() - 1, 0);
321
+ const targetRow = Math.max(0, Math.min(row, maxRow));
322
+ editor.scrollToLine(targetRow, true, true, () => {});
323
+ editor.gotoLine(targetRow + 1, 0, true);
324
+ editor.renderer.scrollCursorIntoView({ row: targetRow, column: 0 }, 0.5);
325
+ },
326
+ locateCurrentDiff() {
327
+ const diffItem = this.diffNavList[this.currentDiffIndex];
328
+ if (!diffItem) return;
329
+
330
+ const leftEditor = this.$refs.leftEditor?.aceEditor;
331
+ const rightEditor = this.$refs.rightEditor?.aceEditor;
332
+ if (!leftEditor || !rightEditor) return;
333
+
334
+ this.clearActiveMarkers();
335
+ const { leftRow, rightRow } = this.resolveDiffScrollRows(diffItem);
336
+
337
+ this.scrollEditorToLine(leftEditor, leftRow);
338
+ this.scrollEditorToLine(rightEditor, rightRow);
339
+
340
+ this.activeMarkerIds.left = this.addActiveHunkMarker(
341
+ leftEditor,
342
+ "left",
343
+ diffItem
344
+ );
345
+ this.activeMarkerIds.right = this.addActiveHunkMarker(
346
+ rightEditor,
347
+ "right",
348
+ diffItem
349
+ );
350
+ },
351
+ },
352
+ };
353
+ </script>
354
+
355
+ <style scoped lang="scss">
356
+ @import "./compareContMixin.scss";
357
+
358
+ .compare-code-section {
359
+ @include compare-cont-shell;
360
+ @include compare-cont-full-link;
361
+ @include compare-version-label;
362
+ @include compare-flex-row;
363
+ padding:0 16px 16px;
364
+ overflow: hidden;
365
+ .compare-code-flex {
366
+ margin-top: 0;
367
+
368
+ .compare-code-col {
369
+ .version-blue,
370
+ .version-green {
371
+ margin-bottom: 8px;
372
+ }
373
+ }
374
+
375
+ ::v-deep .ace-container {
376
+ border: 1px solid #ebeef5;
377
+ }
378
+ }
379
+
380
+ .compare-code-header {
381
+ position: relative;
382
+ min-height: 28px;
383
+ padding-right: 24px;
384
+ margin-bottom:16px;
385
+ }
386
+
387
+ .compare-header-main {
388
+ position:relative;
389
+ }
390
+
391
+ .title {
392
+
393
+ }
394
+
395
+ .compare-diff-legend {
396
+ display: inline-flex;
397
+ align-items: center;
398
+ flex-wrap: wrap;
399
+ font-size: 12px;
400
+ gap: 0 12px;
401
+ position: absolute;
402
+ top: 8px;
403
+ left: 127px;
404
+ .legend-item {
405
+ display: inline-block;
406
+ padding: 2px 8px;
407
+ border-radius: 2px;
408
+
409
+ &.legend-old {
410
+ background: rgba(245, 108, 108, 0.2);
411
+ color: #f56c6c;
412
+ }
413
+
414
+ &.legend-new {
415
+ background: rgba(103, 194, 58, 0.2);
416
+ color: #67c23a;
417
+ }
418
+ }
419
+
420
+ .compare-diff-nav {
421
+ display: inline-flex;
422
+ align-items: center;
423
+ gap: 8px;
424
+
425
+ .diff-nav-btn {
426
+ display: inline-flex;
427
+ align-items: center;
428
+ height: 24px;
429
+ padding: 0 10px;
430
+ font-size: 12px;
431
+ line-height: 22px;
432
+ color: #409eff;
433
+ background: #ecf5ff;
434
+ border: 1px solid #b3d8ff;
435
+ border-radius: 2px;
436
+ cursor: pointer;
437
+ white-space: nowrap;
438
+ user-select: none;
439
+ transition: all 0.2s;
440
+
441
+ i {
442
+ margin-right: 4px;
443
+ font-size: 12px;
444
+ }
445
+
446
+ &:hover:not(.is-disabled) {
447
+ color: #fff;
448
+ background: #409eff;
449
+ border-color: #409eff;
450
+ }
451
+
452
+ &.is-disabled {
453
+ color: #c0c4cc;
454
+ background: #f5f7fa;
455
+ border-color: #e4e7ed;
456
+ cursor: not-allowed;
457
+ }
458
+ }
459
+
460
+ .diff-nav-count {
461
+ color: #909399;
462
+ white-space: nowrap;
463
+ padding-left: 4px;
464
+ }
465
+ }
466
+ }
467
+
468
+ &.is-diff-mode {
469
+ ::v-deep .ace_marker-layer {
470
+ .compare-diff-old {
471
+ position: absolute;
472
+ background: rgba(245, 108, 108, 0.2);
473
+ z-index: 3;
474
+ }
475
+
476
+ .compare-diff-new {
477
+ position: absolute;
478
+ background: rgba(103, 194, 58, 0.2);
479
+ z-index: 3;
480
+ }
481
+
482
+ .compare-diff-active-old {
483
+ position: absolute;
484
+ background: rgba(245, 108, 108, 0.35);
485
+ z-index: 4;
486
+ }
487
+
488
+ .compare-diff-active-new {
489
+ position: absolute;
490
+ background: rgba(103, 194, 58, 0.35);
491
+ z-index: 4;
492
+ }
493
+ }
494
+ }
495
+
496
+ &.is-section-fullscreen {
497
+ position: fixed;
498
+ top: 0;
499
+ right: 0;
500
+ bottom: 0;
501
+ left: 0;
502
+ z-index: 9999;
503
+ display: flex;
504
+ flex-direction: column;
505
+ margin: 0;
506
+ overflow: hidden;
507
+ background:#FFF;border-radius:12px;
508
+
509
+ .compare-code-header {
510
+ flex-shrink: 0;
511
+ }
512
+
513
+ .compare-code-flex {
514
+ flex: 1;
515
+ min-height: 0;
516
+ align-items: stretch;
517
+ }
518
+
519
+ .compare-code-col {
520
+ display: flex;
521
+ flex-direction: column;
522
+ min-height: 0;
523
+ }
524
+
525
+ .compare-code-editor-wrap {
526
+ flex: 1;
527
+ min-height: 0;
528
+
529
+ ::v-deep .ace-container {
530
+ height: 100%;
531
+ }
532
+
533
+ ::v-deep .ace-editor {
534
+ height: 100% !important;
535
+ }
536
+ }
537
+ }
538
+ }
539
+ </style>
@@ -0,0 +1,65 @@
1
+ @import "~@/styles/variables.scss";
2
+ @mixin compare-cont-shell {
3
+ position: relative;
4
+ ~ .compare-cont {
5
+ margin-bottom: 0;
6
+
7
+ }
8
+ }
9
+
10
+ @mixin compare-cont-title {
11
+ > .title {
12
+ margin: -16px -16px 16px;
13
+ }
14
+ }
15
+
16
+ @mixin compare-cont-full-link {
17
+ .is-full {
18
+ position: absolute;
19
+ top: 12px;
20
+ right: 12px;
21
+ padding: 4px 6px;
22
+ font-size: 16px;
23
+ color: $baseColor;
24
+ background: #f2f6fc;
25
+ border-radius: 4px;
26
+
27
+ i {
28
+ font-size: 16px;
29
+ }
30
+ }
31
+ }
32
+
33
+ @mixin compare-version-label {
34
+ .version-blue,
35
+ .version-green {
36
+ display: inline-block;
37
+ height: 26px;
38
+ padding: 0 8px;
39
+ line-height: 26px;
40
+ color: #fff;
41
+ vertical-align: middle;
42
+ width: 88px;
43
+ text-align: center;
44
+ }
45
+
46
+ .version-blue {
47
+ background: $baseColor;
48
+ }
49
+
50
+ .version-green {
51
+ background: $green;
52
+ }
53
+ }
54
+
55
+ @mixin compare-flex-row {
56
+ .flex {
57
+ display: flex;
58
+
59
+ .flex-1 {
60
+ flex: 1;
61
+ min-width: 0;
62
+ margin: 0 8px;
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,63 @@
1
+ <template>
2
+ <div>
3
+ <component
4
+ v-if="type"
5
+ :is="type"
6
+ :objType="objType"
7
+ :objCode="objCode"
8
+ :compareHData1="compareHData1"
9
+ :compareHData2="compareHData2"
10
+ :preVersion="preVersion"
11
+ :curVersion="curVersion"
12
+ @reverCallback="$emit('reverCallback')"
13
+ />
14
+ </div>
15
+ </template>
16
+ <script>
17
+ import formTemplateCompareView from "./formTemplateCompareView.vue";
18
+ import formScriptCompareView from "./formScriptCompareView.vue";
19
+ import tableModelCompareView from "./tableModelCompareView.vue";
20
+ export default {
21
+ name: "compareContent",
22
+ components: {
23
+ formTemplateCompareView,
24
+ formScriptCompareView,
25
+ tableModelCompareView,
26
+ },
27
+ props: {
28
+ objType: {
29
+ type: String,
30
+ default: "",
31
+ },
32
+ objCode: String,
33
+ compareHData1: {
34
+ type: Object,
35
+ default: () => ({}),
36
+ },
37
+ compareHData2: {
38
+ type: Object,
39
+ default: () => ({}),
40
+ },
41
+ preVersion: [String, Number],
42
+ curVersion: [String, Number],
43
+ },
44
+ data() {
45
+ return {
46
+ type: null,
47
+ };
48
+ },
49
+ created() {
50
+ this.initType();
51
+ },
52
+ methods: {
53
+ initType() {
54
+ this.type =
55
+ this.objType === "FormTemplate"
56
+ ? "formTemplateCompareView"
57
+ : this.objType === "FormScript"
58
+ ? "formScriptCompareView"
59
+ : "tableModelCompareView";
60
+ },
61
+ },
62
+ };
63
+ </script>