cloud-web-corejs 1.0.276 → 1.0.278

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 (311) hide show
  1. package/package.json +30 -24
  2. package/src/App.vue +73 -71
  3. package/src/api/user.js +21 -0
  4. package/src/components/baseArea/index.vue +82 -27
  5. package/src/components/baseTabs/mixins.js +5 -1
  6. package/src/components/formDialog/README.md +371 -0
  7. package/src/components/formDialog/actionButtons.js +90 -0
  8. package/src/components/formDialog/index.js +48 -0
  9. package/src/components/formDialog/index.vue +802 -0
  10. package/src/components/formDrawer/drawer.vue +722 -0
  11. package/src/components/formDrawer/index.js +50 -0
  12. package/src/components/luckysheet/dialog.vue +1 -1
  13. package/src/components/micro-view-host/contract.js +66 -0
  14. package/src/components/micro-view-host/index.vue +148 -0
  15. package/src/components/table/tableForm.vue +16 -5
  16. package/src/components/table/tableFormMixin.js +35 -7
  17. package/src/components/vb-tabs/x-tabs.vue +167 -143
  18. package/src/components/wf/content.vue +14 -0
  19. package/src/components/wf/content2.vue +4 -2
  20. package/src/components/wf/wf.js +74 -23
  21. package/src/components/wf/wfActionDropdown.vue +85 -0
  22. package/src/components/wf/wfActionItems.js +136 -0
  23. package/src/components/wf/wfAutoConfirm.js +55 -0
  24. package/src/components/wf/wfButtonName.js +60 -0
  25. package/src/components/wf/wfUserRange.js +53 -0
  26. package/src/components/wf/wfUtil.js +373 -295
  27. package/src/components/xform/XFormTabContainer//346/226/260/345/242/236/351/241/265/347/255/276/346/250/241/345/274/217-/346/234/200/347/273/210/345/256/236/347/216/260.md +195 -0
  28. package/src/components/xform/docs/2026-07 table/344/270/216excelExport/344/277/256/345/244/215/345/217/212/345/257/274/345/207/272/344/274/230/345/214/226.md" +57 -0
  29. package/src/components/xform/docs/2026-07 /346/216/222/346/237/245/344/277/256/345/244/215/350/256/260/345/275/225.md" +73 -0
  30. package/src/components/xform/docs/autocomplete /350/207/252/345/212/250/345/256/214/346/210/220/347/273/204/344/273/266/350/257/264/346/230/216.md" +126 -0
  31. package/src/components/xform/docs//345/257/271/346/257/224/345/212/237/350/203/275/350/220/275/345/234/260/346/226/271/346/241/210.md +986 -0
  32. package/src/components/xform/docs//346/225/260/346/215/256/350/241/250/346/240/274/345/212/250/346/200/201/345/210/227 JSON /350/257/264/346/230/216.md" +657 -0
  33. package/src/components/xform/docs//346/240/221/350/241/250rowField/346/224/266/346/225/233-/350/220/275/345/234/260/346/226/207/346/241/243.md +1427 -0
  34. package/src/components/xform/form-designer/designer.js +2085 -2025
  35. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +9 -11
  36. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +76 -75
  37. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +10 -4
  38. package/src/components/xform/form-designer/form-widget/container-widget/detail-plain-widget.vue +76 -0
  39. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +59 -5
  40. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +38 -17
  41. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +138 -13
  42. package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +1 -1
  43. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1774 -1772
  44. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +2 -3
  45. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +1 -1
  46. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +66 -53
  47. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +287 -214
  48. package/src/components/xform/form-designer/form-widget/field-widget/button-widget.vue +76 -66
  49. package/src/components/xform/form-designer/form-widget/field-widget/cascader-widget.vue +208 -124
  50. package/src/components/xform/form-designer/form-widget/field-widget/census-widget.vue +3 -9
  51. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +11 -2
  52. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +7 -6
  53. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +43 -19
  54. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +680 -372
  55. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +879 -763
  56. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +17 -2
  57. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +3 -9
  58. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +3 -9
  59. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +3 -9
  60. package/src/components/xform/form-designer/form-widget/field-widget/mixins/relative-default-mixin.js +107 -0
  61. package/src/components/xform/form-designer/form-widget/field-widget/mixins/relativeDateUtil.js +321 -0
  62. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -0
  63. package/src/components/xform/form-designer/form-widget/field-widget/mixins/vabsearch-mixin.js +13 -0
  64. package/src/components/xform/form-designer/form-widget/field-widget/number-widget.vue +13 -8
  65. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +4 -9
  66. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +3 -0
  67. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +120 -120
  68. package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +4 -0
  69. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +11 -0
  70. package/src/components/xform/form-designer/form-widget/field-widget/switch-widget.vue +9 -1
  71. package/src/components/xform/form-designer/form-widget/field-widget/tempStorage-widget.vue +1 -1
  72. package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +7 -3
  73. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +4 -2
  74. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +36 -5
  75. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +338 -374
  76. package/src/components/xform/form-designer/form-widget/index.vue +6 -1
  77. package/src/components/xform/form-designer/form-widget/indexMixin.js +29 -25
  78. package/src/components/xform/form-designer/index.vue +194 -191
  79. package/src/components/xform/form-designer/indexMixin.js +860 -847
  80. package/src/components/xform/form-designer/setting-panel/dataSource-setting.vue +397 -397
  81. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +602 -601
  82. package/src/components/xform/form-designer/setting-panel/form-setting.vue +1790 -1483
  83. package/src/components/xform/form-designer/setting-panel/index.vue +2 -7
  84. package/src/components/xform/form-designer/setting-panel/indexMixin.js +370 -335
  85. package/src/components/xform/form-designer/setting-panel/option-items-setting.vue +585 -544
  86. package/src/components/xform/form-designer/setting-panel/property-editor/a-link-editor.vue +1 -1
  87. package/src/components/xform/form-designer/setting-panel/property-editor/a-text-editor.vue +1 -1
  88. package/src/components/xform/form-designer/setting-panel/property-editor/alignType-editor.vue +1 -1
  89. package/src/components/xform/form-designer/setting-panel/property-editor/buttonIcon-editor.vue +14 -15
  90. package/src/components/xform/form-designer/setting-panel/property-editor/censusClass-editor.vue +1 -1
  91. package/src/components/xform/form-designer/setting-panel/property-editor/colorClass-editor.vue +1 -1
  92. package/src/components/xform/form-designer/setting-panel/property-editor/commonAttributeEnabled-editor.vue +3 -3
  93. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/columnRenderDialog.vue +124 -125
  94. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +1151 -957
  95. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +96 -74
  96. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail-plain/detail-plain-editor.vue +75 -0
  97. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/colHeight-editor.vue +1 -1
  98. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +14 -13
  99. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-height-editor.vue +1 -1
  100. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-offset-editor.vue +1 -1
  101. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-pull-editor.vue +1 -1
  102. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-push-editor.vue +1 -1
  103. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue +4 -4
  104. package/src/components/xform/form-designer/setting-panel/property-editor/container-h5-card/h5-card-editor.vue +124 -124
  105. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +26 -31
  106. package/src/components/xform/form-designer/setting-panel/property-editor/container-panel/height-editor.vue +1 -1
  107. package/src/components/xform/form-designer/setting-panel/property-editor/container-panel/width-editor.vue +1 -1
  108. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue +119 -119
  109. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tabClass-editor.vue +45 -45
  110. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +340 -342
  111. package/src/components/xform/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue +1 -1
  112. package/src/components/xform/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue +1 -1
  113. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree/tree-customClass-editor.vue +2 -2
  114. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree-pane/tree-pane-editor.vue +1 -1
  115. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/cancelButtonLabel-editor.vue +1 -1
  116. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/okButtonLabel-editor.vue +1 -1
  117. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/title-editor.vue +1 -1
  118. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue +1 -1
  119. package/src/components/xform/form-designer/setting-panel/property-editor/containerClass-editor.vue +1 -1
  120. package/src/components/xform/form-designer/setting-panel/property-editor/customClass-editor.vue +1 -1
  121. package/src/components/xform/form-designer/setting-panel/property-editor/defaultValue-editor.vue +1 -1
  122. package/src/components/xform/form-designer/setting-panel/property-editor/descriptionsItems-editor.vue +4 -4
  123. package/src/components/xform/form-designer/setting-panel/property-editor/downloadButtonFlag-editor.vue +3 -3
  124. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +6 -2
  125. package/src/components/xform/form-designer/setting-panel/property-editor/dsName-editor.vue +1 -1
  126. package/src/components/xform/form-designer/setting-panel/property-editor/echartHeight-editor.vue +1 -1
  127. package/src/components/xform/form-designer/setting-panel/property-editor/endPlaceholder-editor.vue +1 -1
  128. package/src/components/xform/form-designer/setting-panel/property-editor/field-accessUrl/accessUrl-editor.vue +2 -2
  129. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +1 -1
  130. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -50
  131. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +1 -1
  132. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +7 -7
  133. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/addTableData-event-editor.vue +84 -85
  134. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/button-type-editor.vue +1 -1
  135. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindActions.js +262 -0
  136. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindEvent-editor.vue +97 -88
  137. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/form-host-event-editor.vue +188 -0
  138. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/icon-editor.vue +14 -15
  139. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +27 -10
  140. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/checkStrictly-editor.vue +11 -13
  141. package/src/components/xform/form-designer/setting-panel/property-editor/field-common/keyName-editor.vue +74 -67
  142. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +27 -5
  143. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +35 -18
  144. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-format-editor.vue +1 -1
  145. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-type-editor.vue +1 -1
  146. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-valueFormat-editor.vue +1 -1
  147. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultTime-editor.vue +1 -1
  148. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +35 -18
  149. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-format-editor.vue +1 -1
  150. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-type-editor.vue +1 -1
  151. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-valueFormat-editor.vue +1 -1
  152. package/src/components/xform/form-designer/setting-panel/property-editor/field-divider/contentPosition-editor.vue +1 -1
  153. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-menu-editor.vue +59 -59
  154. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-bar-editor.vue +11 -11
  155. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-category-editor.vue +10 -10
  156. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-pie-editor.vue +12 -12
  157. package/src/components/xform/form-designer/setting-panel/property-editor/field-file-upload/file-upload-fileTypes-editor.vue +44 -44
  158. package/src/components/xform/form-designer/setting-panel/property-editor/field-html-text/htmlContent-editor.vue +29 -29
  159. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +6 -6
  160. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +4 -4
  161. package/src/components/xform/form-designer/setting-panel/property-editor/field-number/controlsPosition-editor.vue +1 -1
  162. package/src/components/xform/form-designer/setting-panel/property-editor/field-picture-upload/picture-upload-fileTypes-editor.vue +44 -44
  163. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-button-editor.vue +115 -115
  164. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-detail-button-editor.vue +115 -115
  165. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/highThreshold-editor.vue +1 -1
  166. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/lowThreshold-editor.vue +1 -1
  167. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue +1 -1
  168. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-max-editor.vue +1 -1
  169. package/src/components/xform/form-designer/setting-panel/property-editor/field-script/script-editor.vue +4 -4
  170. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +4 -4
  171. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/fontSize-editor.vue +1 -1
  172. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/textContent-editor.vue +1 -1
  173. package/src/components/xform/form-designer/setting-panel/property-editor/field-status/field-status-editor.vue +3 -3
  174. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/activeText-editor.vue +1 -1
  175. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/inactiveText-editor.vue +1 -1
  176. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/switchWidth-editor.vue +1 -1
  177. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-button-editor.vue +2 -2
  178. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +74 -74
  179. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +3 -3
  180. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +34 -18
  181. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-format-editor.vue +1 -1
  182. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-timeLimit-editor.vue +53 -0
  183. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +35 -18
  184. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-format-editor.vue +1 -1
  185. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchField-editor.vue +2 -2
  186. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchName-editor.vue +2 -2
  187. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/field-vabUpload-editor.vue +1 -1
  188. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload2/field-vabUpload2-editor.vue +1 -1
  189. package/src/components/xform/form-designer/setting-panel/property-editor/field-vue-page/vue-page-editor.vue +2 -2
  190. package/src/components/xform/form-designer/setting-panel/property-editor/fileMaxSize-editor.vue +1 -1
  191. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesSelect.vue +176 -176
  192. package/src/components/xform/form-designer/setting-panel/property-editor/fixedQuery-editor.vue +39 -0
  193. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +41 -6
  194. package/src/components/xform/form-designer/setting-panel/property-editor/formatType-editor.vue +2 -2
  195. package/src/components/xform/form-designer/setting-panel/property-editor/formula-editor.vue +972 -972
  196. package/src/components/xform/form-designer/setting-panel/property-editor/iconClass-editor.vue +1 -1
  197. package/src/components/xform/form-designer/setting-panel/property-editor/label-editor.vue +1 -1
  198. package/src/components/xform/form-designer/setting-panel/property-editor/labelAlign-editor.vue +1 -1
  199. package/src/components/xform/form-designer/setting-panel/property-editor/labelColor-editor.vue +1 -1
  200. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +1 -1
  201. package/src/components/xform/form-designer/setting-panel/property-editor/labelWidth-editor.vue +1 -1
  202. package/src/components/xform/form-designer/setting-panel/property-editor/limit-editor.vue +1 -1
  203. package/src/components/xform/form-designer/setting-panel/property-editor/max-editor.vue +1 -1
  204. package/src/components/xform/form-designer/setting-panel/property-editor/maxLength-editor.vue +1 -1
  205. package/src/components/xform/form-designer/setting-panel/property-editor/min-editor.vue +1 -1
  206. package/src/components/xform/form-designer/setting-panel/property-editor/minLength-editor.vue +1 -1
  207. package/src/components/xform/form-designer/setting-panel/property-editor/multipleLimit-editor.vue +1 -1
  208. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +15 -4
  209. package/src/components/xform/form-designer/setting-panel/property-editor/oplog-editor.vue +3 -3
  210. package/src/components/xform/form-designer/setting-panel/property-editor/placeholder-editor.vue +1 -1
  211. package/src/components/xform/form-designer/setting-panel/property-editor/precision-editor.vue +1 -1
  212. package/src/components/xform/form-designer/setting-panel/property-editor/prefixIcon-editor.vue +14 -15
  213. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +6 -6
  214. package/src/components/xform/form-designer/setting-panel/property-editor/relative-default-block.vue +369 -0
  215. package/src/components/xform/form-designer/setting-panel/property-editor/requiredHint-editor.vue +1 -1
  216. package/src/components/xform/form-designer/setting-panel/property-editor/rows-editor.vue +1 -1
  217. package/src/components/xform/form-designer/setting-panel/property-editor/space-editor-editor.vue +1 -1
  218. package/src/components/xform/form-designer/setting-panel/property-editor/startPlaceholder-editor.vue +1 -1
  219. package/src/components/xform/form-designer/setting-panel/property-editor/step-editor.vue +1 -1
  220. package/src/components/xform/form-designer/setting-panel/property-editor/styleTableClass-editor.vue +1 -1
  221. package/src/components/xform/form-designer/setting-panel/property-editor/styleTitClass-editor.vue +1 -1
  222. package/src/components/xform/form-designer/setting-panel/property-editor/suffixIcon-editor.vue +14 -15
  223. package/src/components/xform/form-designer/setting-panel/property-editor/tempStorage-editor.vue +1 -1
  224. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +2 -3
  225. package/src/components/xform/form-designer/setting-panel/property-editor/type-editor.vue +1 -1
  226. package/src/components/xform/form-designer/setting-panel/property-editor/uploadTip-editor.vue +1 -1
  227. package/src/components/xform/form-designer/setting-panel/property-editor/uploadURL-editor.vue +1 -1
  228. package/src/components/xform/form-designer/setting-panel/property-editor/urlValueEnabled-editor.vue +91 -0
  229. package/src/components/xform/form-designer/setting-panel/property-editor/validation-editor.vue +1 -1
  230. package/src/components/xform/form-designer/setting-panel/property-editor/validationHint-editor.vue +1 -1
  231. package/src/components/xform/form-designer/setting-panel/property-editor/widgetWidth-editor.vue +1 -1
  232. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +374 -351
  233. package/src/components/xform/form-designer/toolbar-panel/index.vue +266 -103
  234. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +655 -589
  235. package/src/components/xform/form-designer/widget-panel/index.vue +391 -341
  236. package/src/components/xform/form-designer/widget-panel/indexMixin.js +351 -308
  237. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +4642 -4028
  238. package/src/components/xform/form-render/container-item/containerItemMixin.js +76 -61
  239. package/src/components/xform/form-render/container-item/data-table-item.vue +24 -13
  240. package/src/components/xform/form-render/container-item/data-table-mixin.js +5927 -3400
  241. package/src/components/xform/form-render/container-item/detail-h5-item.vue +173 -173
  242. package/src/components/xform/form-render/container-item/detail-item.vue +446 -224
  243. package/src/components/xform/form-render/container-item/detail-plain-item.vue +92 -0
  244. package/src/components/xform/form-render/container-item/list-h5-item.vue +1186 -411
  245. package/src/components/xform/form-render/container-item/tab-item.vue +129 -125
  246. package/src/components/xform/form-render/container-item/table-item.vue +0 -3
  247. package/src/components/xform/form-render/container-item/table2-item.vue +18 -10
  248. package/src/components/xform/form-render/dynamicDialogRender.js +140 -99
  249. package/src/components/xform/form-render/index.vue +8 -8
  250. package/src/components/xform/form-render/indexMixin.js +5299 -3766
  251. package/src/components/xform/form-render/refMixin.js +14 -11
  252. package/src/components/xform/lang/en-US.js +473 -438
  253. package/src/components/xform/lang/en-US_extension.js +4 -0
  254. package/src/components/xform/lang/zh-CN.js +646 -620
  255. package/src/components/xform/mixins/defaultHandle.js +363 -26
  256. package/src/components/xform/mixins/scriptHttp.js +54 -51
  257. package/src/components/xform/utils/attachmentValueUtil.js +239 -0
  258. package/src/components/xform/utils/fixedQueryUtil.js +93 -0
  259. package/src/components/xform/utils/format.js +195 -169
  260. package/src/components/xform/utils/queryParamUtil.js +84 -0
  261. package/src/components/xform/utils/tableColumnHelper.js +7 -8
  262. package/src/components/xform/utils/util.js +1663 -1551
  263. package/src/components/xform/utils/validators.js +100 -48
  264. package/src/index.js +403 -89
  265. package/src/layout/components/AppMain.vue +147 -119
  266. package/src/layout/components/Sidebar/default.vue +109 -59
  267. package/src/layout/components/TagsView/index.vue +1 -1
  268. package/src/layout/components/extractedCode/queryDialog.vue +33 -26
  269. package/src/layout/components/extractedCode/viewDialog.vue +207 -193
  270. package/src/layout/components/langTool.vue +128 -123
  271. package/src/layout/defaultLayout.vue +170 -158
  272. package/src/mixins/wf/index.js +40 -38
  273. package/src/public-path.js +38 -0
  274. package/src/router/modules/system.js +4 -0
  275. package/src/store/config/index.js +945 -669
  276. package/src/utils/pdfUtil.js +428 -70
  277. package/src/views/bd/setting/bd_company_env/dialog.vue +1 -1
  278. package/src/views/bd/setting/formVersion/button.vue +5 -0
  279. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +21 -10
  280. package/src/views/bd/setting/formVersion/link.vue +5 -0
  281. package/src/views/bd/setting/form_script/edit.vue +1 -0
  282. package/src/views/bd/setting/form_script/edit1.vue +1 -0
  283. package/src/views/bd/setting/form_script/form_list.vue +1 -0
  284. package/src/views/bd/setting/form_script/list.vue +1 -0
  285. package/src/views/bd/setting/form_script/list1.vue +2 -0
  286. package/src/views/bd/setting/form_template/edit.vue +1 -0
  287. package/src/views/bd/setting/form_template/list.vue +2 -0
  288. package/src/views/bd/setting/form_template/mixins/edit.js +77 -74
  289. package/src/views/bd/setting/table_model/edit.vue +16 -29
  290. package/src/views/bd/setting/table_model/list.vue +1 -0
  291. package/src/views/bd/setting/table_model/mixins/edit.js +295 -149
  292. package/src/views/bd/setting/table_model/mixins/zdDialog.js +32 -0
  293. package/src/views/support/export_template/list.vue +1 -1
  294. package/src/views/user/company_info/edit.vue +149 -88
  295. package/src/views/user/form/form_template/dialog.vue +1 -1
  296. package/src/views/user/form/form_template/itemList.vue +1 -1
  297. package/src/views/user/form/form_template/list.vue +1 -1
  298. package/src/views/user/form/form_template_field/dialog.vue +1 -1
  299. package/src/views/user/form/form_type/dialog.vue +1 -1
  300. package/src/views/user/form/form_type/list.vue +1 -1
  301. package/src/views/user/form/report_requestaccess/dialog.vue +1 -1
  302. package/src/views/user/form/report_requestaccess/list.vue +1 -1
  303. package/src/views/user/form/vform/designer.vue +51 -22
  304. package/src/views/user/form/vform/render.vue +21 -23
  305. package/src/views/user/form/view/list.vue +134 -37
  306. package/src/views/user/wf/wfReport/index.vue +24 -1
  307. package/src/views/user/wf/wf_manage/list.vue +8 -4
  308. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +0 -209
  309. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin - /345/211/257/346/234/254.js" +0 -1639
  310. package/src/views/bd/setting/table_model/mixins/edit copy.js +0 -903
  311. package/src/views/user/menu/voc_list.vue +0 -686
@@ -15,6 +15,7 @@
15
15
  </el-tab-pane>
16
16
  <el-tab-pane :label="$t1('列表')" name="second">
17
17
  <div class="tree-box fl">
18
+ <slot name="treeTop"></slot>
18
19
  <div class="tit">
19
20
  <b>{{ $t1("表单分类") }}</b>
20
21
  </div>
@@ -159,6 +160,7 @@
159
160
  <formVersionButton
160
161
  objType="FormTemplate"
161
162
  :objCode="row.formCode"
163
+ :sid="row.sid"
162
164
  @reverCallback="searchEvent"
163
165
  ></formVersionButton>
164
166
  <a
@@ -2,24 +2,24 @@ import projectTagView from "@base/components/projectTag/view.vue";
2
2
  import MenuKindDialog from "@base/views/bd/setting/menu_kind/dialog.vue";
3
3
  import preformDialog from "@base/views/bd/setting/form_template/preformDialog.vue";
4
4
  import formOplogTable from "@base/components/formOplog/index.vue";
5
- import {getBdFlag} from "@base/api/user";
5
+ import { getBdFlag } from "@base/api/user";
6
6
  import otherAuthDialog from "../otherAuthDialog.vue";
7
7
 
8
8
  let modules = {};
9
9
  modules = {
10
- name: 'bd_form_templateEdit',
10
+ name: "bd_form_templateEdit",
11
11
  props: {
12
12
  _dataId: [String, Number],
13
13
  currentFormType: Object,
14
14
  // readonly: Boolean,
15
- otherFlag:Boolean,
15
+ otherFlag: Boolean,
16
16
  extractedObj: {
17
- type:Object,
18
- default:()=> null
17
+ type: Object,
18
+ default: () => null,
19
19
  },
20
- hData:{
21
- type:Object,
22
- default:()=> null
20
+ hData: {
21
+ type: Object,
22
+ default: () => null,
23
23
  },
24
24
  compareHData: Object,
25
25
  },
@@ -28,62 +28,63 @@ modules = {
28
28
  MenuKindDialog,
29
29
  preformDialog,
30
30
  formOplogTable,
31
- otherAuthDialog
31
+ otherAuthDialog,
32
32
  },
33
33
  data() {
34
34
  return {
35
35
  isEdit: false,
36
- tabIndex: 'first',
37
- dataId: '',
36
+ tabIndex: "first",
37
+ dataId: "",
38
38
  formTemplate: {
39
39
  enabled: true,
40
40
  history: false,
41
- serviceId: 'user',
41
+ serviceId: "user",
42
42
  formTypeCode: null,
43
43
  menuKindName: null,
44
44
  menuKindCode: null,
45
45
  serviceName: null,
46
46
  formTemplateTagDTOs: [],
47
- hasWf: false
47
+ hasWf: false,
48
48
  },
49
49
  oldFormTemplate: {
50
50
  enabled: true,
51
51
  history: false,
52
- serviceId: 'user',
52
+ serviceId: "user",
53
53
  formTypeCode: null,
54
54
  menuKindName: null,
55
55
  menuKindCode: null,
56
56
  serviceName: null,
57
57
  formTemplateTagDTOs: [],
58
- hasWf: false
58
+ hasWf: false,
59
59
  },
60
60
  isInited: false,
61
- serviceIds: ['user'],
61
+ serviceIds: ["user"],
62
62
  showMenuKindDialog: false,
63
63
  isDev: true,
64
64
  showPreformDialog: false,
65
65
  menuKindAuth: {
66
- editAuth: 0
66
+ editAuth: 0,
67
67
  },
68
68
  sid: null,
69
- showOtherAuthDialog:false,
69
+ showOtherAuthDialog: false,
70
70
  readonly: false,
71
71
  isCompare: false,
72
72
  };
73
73
  },
74
74
  created() {
75
- if(this.hData){
75
+ if (this.hData) {
76
76
  this.readonly = true;
77
- }else{
77
+ } else {
78
78
  this.readonly = this.$attrs.readonly || false;
79
79
  }
80
- if(this.extractedObj?.objx?.id){
80
+ if (this.extractedObj?.objx?.id) {
81
81
  this.dataId = this.extractedObj.obj.id;
82
- }else if (this._dataId) {
82
+ } else if (this._dataId) {
83
83
  this.dataId = this._dataId;
84
84
  } else {
85
85
  this.formTemplate.menuKindName = this.currentFormType?.name || null;
86
- this.formTemplate.menuKindCode = this.currentFormType?.menuKindCode || null;
86
+ this.formTemplate.menuKindCode =
87
+ this.currentFormType?.menuKindCode || null;
87
88
  this.formTemplate.serviceName = this.currentFormType?.serviceName || null;
88
89
  }
89
90
  },
@@ -92,7 +93,7 @@ modules = {
92
93
  this.getData();
93
94
  },
94
95
  methods: {
95
- initData(formData){
96
+ initData(formData) {
96
97
  this.isEdit = true;
97
98
  this.formTemplate = formData || {};
98
99
  this.getMenuKindAuth(this.formTemplate.menuKindCode);
@@ -101,38 +102,38 @@ modules = {
101
102
  });
102
103
  },
103
104
  getData() {
104
- if(this.extractedObj){
105
+ if (this.extractedObj) {
105
106
  this.dataId = this.extractedObj.id;
106
- this.initData(this.extractedObj)
107
+ this.initData(this.extractedObj);
107
108
  //获取操作日志数据
108
- this.$refs['oplogTable'].initData({
109
+ this.$refs["oplogTable"].initData({
109
110
  param: () => {
110
111
  return {
111
112
  logType: "FormTemplate",
112
- logObjCode: this.formTemplate.formCode
113
+ logObjCode: this.formTemplate.formCode,
113
114
  };
114
- }
115
+ },
115
116
  });
116
- }else if (this.dataId) {
117
+ } else if (this.dataId) {
117
118
  this.$commonHttp({
118
119
  aes: true,
119
120
  url: USER_PREFIX + `/formTemplate/get`,
120
121
  method: `post`,
121
122
  data: {
122
- id: this.dataId
123
+ id: this.dataId,
123
124
  },
124
125
  isLoading: true,
125
126
  modalStrictly: true,
126
- success: res => {
127
- this.initData(res.objx)
127
+ success: (res) => {
128
+ this.initData(res.objx);
128
129
  //获取操作日志数据
129
- this.$refs['oplogTable'].initData({
130
+ this.$refs["oplogTable"].initData({
130
131
  param: () => {
131
132
  return {
132
133
  logType: "FormTemplate",
133
- logObjCode: this.formTemplate.formCode
134
+ logObjCode: this.formTemplate.formCode,
134
135
  };
135
- }
136
+ },
136
137
  });
137
138
  /* this.formTemplate = res.objx || {};
138
139
  this.getMenuKindAuth(this.formTemplate.menuKindCode);
@@ -148,12 +149,12 @@ modules = {
148
149
  };
149
150
  }
150
151
  }); */
151
- }
152
+ },
152
153
  });
153
- } else if (this.hData){
154
+ } else if (this.hData) {
154
155
  this.isEdit = true;
155
156
  this.formTemplate = this.$baseLodash.cloneDeep(this.hData);
156
- this.dataId = this.hData.id
157
+ this.dataId = this.hData.id;
157
158
  this.isInited = true;
158
159
  this.getMenuKindAuth(this.formTemplate.menuKindCode);
159
160
  if (this.compareHData && this.$attrs.isCompare) {
@@ -166,17 +167,19 @@ modules = {
166
167
  }
167
168
  },
168
169
  saveData() {
169
- this.$refs.editForm.$baseValidate(valid => {
170
+ this.$refs.editForm.$baseValidate((valid) => {
170
171
  if (valid) {
171
172
  this.openPreformDialog();
172
173
  }
173
174
  });
174
175
  },
175
176
  saveDataHandle(preformData) {
176
- var url = USER_PREFIX + (this.isEdit ? `/formTemplate/update` : `/formTemplate/save`);
177
+ var url =
178
+ USER_PREFIX +
179
+ (this.isEdit ? `/formTemplate/update` : `/formTemplate/save`);
177
180
  let formData = {
178
181
  ...this.formTemplate,
179
- logContent: preformData.logContent
182
+ logContent: preformData.logContent,
180
183
  };
181
184
  this.$http({
182
185
  aes: true,
@@ -184,24 +187,24 @@ modules = {
184
187
  method: `post`,
185
188
  data: formData,
186
189
  isLoading: true,
187
- success: res => {
190
+ success: (res) => {
188
191
  this.$message({
189
192
  message: res.content,
190
- type: 'success',
193
+ type: "success",
191
194
  duration: 500,
192
- onClose: t => {
195
+ onClose: (t) => {
193
196
  if (this.isEdit) {
194
197
  this.$baseReload();
195
198
  } else {
196
199
  this.$baseReload({
197
200
  updateParam: {
198
- _dataId: res.objx || this.formTemplate.id
199
- }
201
+ _dataId: res.objx.id || this.formTemplate.id,
202
+ },
200
203
  });
201
204
  }
202
- }
205
+ },
203
206
  });
204
- }
207
+ },
205
208
  });
206
209
  },
207
210
  openPreformDialog() {
@@ -213,40 +216,40 @@ modules = {
213
216
  confirmInsertMenuKind(rows) {
214
217
  if (rows.length > 0) {
215
218
  let row = rows[0];
216
- this.$set(this.formTemplate, 'menuKindCode', row.menuKindCode);
217
- this.$set(this.formTemplate, 'menuKindName', row.name);
219
+ this.$set(this.formTemplate, "menuKindCode", row.menuKindCode);
220
+ this.$set(this.formTemplate, "menuKindName", row.name);
218
221
  }
219
222
  },
220
223
  getBdEnv() {
221
224
  getBdFlag({
222
- success: res => {
223
- this.isDev = res.objx === 1
224
- }
225
+ success: (res) => {
226
+ this.isDev = res.objx === 1;
227
+ },
225
228
  });
226
229
  },
227
230
  openDesignDialog() {
228
- let readonly = this.readonly || !this.menuKindAuth.editAuth
229
- this.$emit('openDesignDialog', {
231
+ let readonly = this.readonly || !this.menuKindAuth.editAuth;
232
+ this.$emit("openDesignDialog", {
230
233
  row: this.formTemplate,
231
234
  readonly,
232
235
  callback: () => {
233
- this.$baseReload()
234
- }
235
- })
236
+ this.$baseReload();
237
+ },
238
+ });
236
239
  },
237
240
  getMenuKindAuth(menuKindCode) {
238
- if(this.otherFlag){
241
+ if (this.otherFlag) {
239
242
  this.getOtherMenuKindAuth();
240
- }else if (menuKindCode) {
243
+ } else if (menuKindCode) {
241
244
  this.$http({
242
245
  // aes: true,
243
- url: USER_PREFIX + '/menu_kind_auth/getAuth',
246
+ url: USER_PREFIX + "/menu_kind_auth/getAuth",
244
247
  method: `post`,
245
- data: {stringOne: menuKindCode},
248
+ data: { stringOne: menuKindCode },
246
249
  isLoading: true,
247
- success: res => {
248
- this.menuKindAuth = res.objx || {}
249
- }
250
+ success: (res) => {
251
+ this.menuKindAuth = res.objx || {};
252
+ },
250
253
  });
251
254
  }
252
255
  },
@@ -257,7 +260,7 @@ modules = {
257
260
  aes: true,
258
261
  url: USER_PREFIX + "/form_template_auth/getAuth",
259
262
  method: `post`,
260
- data: {stringOne: this.formTemplate.sid},
263
+ data: { stringOne: this.formTemplate.sid },
261
264
  isLoading: true,
262
265
  success: (res) => {
263
266
  this.menuKindAuth = res.objx || {};
@@ -265,13 +268,13 @@ modules = {
265
268
  });
266
269
  }
267
270
  },
268
- openOtherAuthDialog(){
269
- this.sid = this.formTemplate.sid
270
- this.showOtherAuthDialog = true
271
+ openOtherAuthDialog() {
272
+ this.sid = this.formTemplate.sid;
273
+ this.showOtherAuthDialog = true;
271
274
  },
272
- confirmOtherAuthDialog(){
273
- this.$baseReload()
275
+ confirmOtherAuthDialog() {
276
+ this.$baseReload();
274
277
  },
275
- }
278
+ },
276
279
  };
277
- export default modules
280
+ export default modules;
@@ -11,6 +11,7 @@
11
11
  v-if="!hData && szTaMb.id && !readonly"
12
12
  objType="SzTaMb"
13
13
  :objCode="szTaMb.taCode"
14
+ :sid="szTaMb.sid"
14
15
  @reverCallback="$baseReload()"
15
16
  ></formVersionButton>
16
17
  <reverButton
@@ -211,16 +212,14 @@
211
212
  class="search-input"
212
213
  max="200"
213
214
  v-model="szTaMb.sszstEn"
214
- @clear="
215
- szTaMb.sszst = null;
216
- szTaMb.sszstBm = null;
217
- $forceUpdate();
218
- "
215
+ @clear="clearSszst"
219
216
  :disabled="szTaMb.taType === 0"
220
217
  v-el-readonly
221
218
  clearable
222
219
  >
220
+ <!-- element 的 suffix 插槽不受 disabled 影响,图标要自己按禁用条件收起来 -->
223
221
  <i
222
+ v-if="szTaMb.taType !== 0"
224
223
  slot="suffix"
225
224
  class="el-input__icon el-icon-search"
226
225
  @click="showSzTaMbDialog = true"
@@ -292,15 +291,13 @@
292
291
  class="search-input"
293
292
  max="200"
294
293
  v-model="szTaMb.menuKindName"
295
- @clear="
296
- szTaMb.menuKindCode = '';
297
- $forceUpdate();
298
- "
294
+ @clear="clearMenuKind"
299
295
  v-el-readonly
300
296
  clearable
301
297
  :disabled="otherFlag"
302
298
  >
303
299
  <i
300
+ v-if="!otherFlag"
304
301
  slot="suffix"
305
302
  class="el-input__icon el-icon-search"
306
303
  @click="showMenuKindDialog = true"
@@ -395,7 +392,7 @@
395
392
  class="button-sty"
396
393
  icon="el-icon-upload2"
397
394
  @click="excelExport"
398
- >导出</el-button
395
+ >{{ $t1("导出") }}</el-button
399
396
  >
400
397
  </template>
401
398
  <template #default>
@@ -468,11 +465,12 @@
468
465
  >
469
466
  <span slot="suffix" class="el-input__suffix-inner">
470
467
  <i
471
- v-if="row.referenceZd"
468
+ v-if="row.referenceZd && !!row.zdEn"
472
469
  class="el-input__icon el-icon-circle-close"
473
470
  @click.stop="confirmClearReferenceZd(row)"
474
471
  ></i>
475
472
  <i
473
+ v-if="!!row.zdEn"
476
474
  class="el-input__icon el-icon-search"
477
475
  @click="openReferenceZdDialog(row, rowIndex, $table)"
478
476
  ></i>
@@ -509,7 +507,7 @@
509
507
  >
510
508
  <el-input
511
509
  v-model="row.zdEn"
512
- @keydown.native="inputZdEn(row)"
510
+ @focus="cacheZdEn(row)"
513
511
  @input="
514
512
  (val) => {
515
513
  changeZdEn(val, row);
@@ -673,11 +671,11 @@
673
671
  class="search-input"
674
672
  v-model="row.toTaBmZd"
675
673
  clearable
676
- @clear="$forceUpdate()"
677
674
  v-el-readonly
678
675
  :disabled="!!row.systems || !!row.relationZd"
679
676
  >
680
677
  <i
678
+ v-if="!row.systems && !row.relationZd"
681
679
  slot="suffix"
682
680
  class="el-input__icon el-icon-search"
683
681
  @click="openToTaBmZdDialog(row, rowIndex, $table)"
@@ -747,12 +745,6 @@
747
745
  @confirm="confirmInsertSzTaMb"
748
746
  :multi="false"
749
747
  />
750
- <szTaMbDialog
751
- v-if="showItemSzTaMbDialog"
752
- :visiable.sync="showItemSzTaMbDialog"
753
- @confirm="confirmInsertItemSzTaMb"
754
- multi="false"
755
- />
756
748
  <MenuKindDialog
757
749
  v-if="showMenuKindDialog"
758
750
  :visiable.sync="showMenuKindDialog"
@@ -787,12 +779,7 @@
787
779
  class="search-input"
788
780
  max="200"
789
781
  v-model="referenceEntity"
790
- @clear="
791
- referenceKey = null;
792
- refServiceName = null;
793
- referenceShowFields = [];
794
- $forceUpdate();
795
- "
782
+ @clear="clearReferenceEntity"
796
783
  v-el-readonly
797
784
  clearable
798
785
  >
@@ -888,6 +875,7 @@
888
875
  :visiable.sync="showEntityFieldDialog1"
889
876
  @confirm="confirmEntityFieldDialog1"
890
877
  :taBm="referenceEntity"
878
+ :rows="referenceKeyRows"
891
879
  :multi="false"
892
880
  />
893
881
  <zdDialog
@@ -895,6 +883,7 @@
895
883
  :visiable.sync="showEntityFieldDialog2"
896
884
  @confirm="confirmEntityFieldDialog2"
897
885
  :taBm="referenceEntity"
886
+ :rows="referenceShowRows"
898
887
  :multi="true"
899
888
  />
900
889
  <preformDialog
@@ -981,10 +970,7 @@
981
970
  class="search-input"
982
971
  max="200"
983
972
  v-model="toTaBmZdEntity"
984
- @clear="
985
- toTaBmZdEntity = null;
986
- toTaBmZdField = null;
987
- "
973
+ @clear="toTaBmZdField = null"
988
974
  v-el-readonly
989
975
  clearable
990
976
  >
@@ -1055,6 +1041,7 @@
1055
1041
  :visiable.sync="showEntityFieldDialog3"
1056
1042
  @confirm="confirmEntityFieldDialog3"
1057
1043
  :taBm="toTaBmZdEntity"
1044
+ :rows="toTaBmZdFieldRows"
1058
1045
  :multi="false"
1059
1046
  />
1060
1047
  <!--end-->
@@ -148,6 +148,7 @@
148
148
  <formVersionButton
149
149
  objType="SzTaMb"
150
150
  :objCode="row.taCode"
151
+ :sid="row.sid"
151
152
  @reverCallback="searchEvent"
152
153
  ></formVersionButton>
153
154
  <a