eoss 0.1.0-alpha.20 → 0.1.0-alpha.21

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 (207) hide show
  1. package/lib/account-login.js +1943 -1890
  2. package/lib/alert.js +4 -4
  3. package/lib/aside.js +4 -4
  4. package/lib/autocomplete.js +4936 -4834
  5. package/lib/avatar.js +4 -4
  6. package/lib/backtop.js +4 -4
  7. package/lib/badge.js +4 -4
  8. package/lib/breadcrumb-item.js +6 -6
  9. package/lib/breadcrumb.js +7 -7
  10. package/lib/button-group.js +11 -14
  11. package/lib/button.js +6 -6
  12. package/lib/ca-login.js +2480 -2382
  13. package/lib/calendar.js +798 -798
  14. package/lib/card.js +4 -4
  15. package/lib/carousel-item.js +911 -813
  16. package/lib/carousel.js +1646 -1548
  17. package/lib/cascader-panel.js +2556 -2458
  18. package/lib/cascader.js +4546 -4444
  19. package/lib/checkbox-button.js +4 -4
  20. package/lib/checkbox-group.js +2894 -2841
  21. package/lib/checkbox.js +4 -4
  22. package/lib/col.js +2 -2
  23. package/lib/collapse-item.js +35159 -2572
  24. package/lib/collapse.js +35410 -2762
  25. package/lib/color-picker.js +494 -490
  26. package/lib/config/api.js +15 -1
  27. package/lib/container.js +4 -4
  28. package/lib/cron.js +4 -4
  29. package/lib/data-table.js +1895 -1842
  30. package/lib/date-picker.js +6422 -6320
  31. package/lib/dialog.js +2912 -2806
  32. package/lib/divider.js +4 -4
  33. package/lib/drawer.js +311 -299
  34. package/lib/dropdown-item.js +6 -6
  35. package/lib/dropdown-menu.js +539 -535
  36. package/lib/dropdown.js +2270 -2172
  37. package/lib/email-login.js +1783 -1730
  38. package/lib/empty.js +723 -0
  39. package/lib/eoss.common.js +63680 -56193
  40. package/lib/flip.js +4 -4
  41. package/lib/flow-group.js +2985 -2887
  42. package/lib/flow.js +28067 -28022
  43. package/lib/footer.js +4 -4
  44. package/lib/form-item.js +1935 -1837
  45. package/lib/form.js +9230 -9092
  46. package/lib/header.js +4 -4
  47. package/lib/icon.js +1708 -1590
  48. package/lib/icons.js +4 -4
  49. package/lib/image-viewer.js +1660 -1562
  50. package/lib/image.js +162 -162
  51. package/lib/index.js +1 -1
  52. package/lib/infinite-scroll.js +76 -76
  53. package/lib/input-number.js +172 -172
  54. package/lib/input.js +1362 -1264
  55. package/lib/link.js +4 -4
  56. package/lib/loading.js +321 -317
  57. package/lib/login.js +3306 -3300
  58. package/lib/lowcode.js +13320 -0
  59. package/lib/main.js +14465 -14339
  60. package/lib/marquee.js +1237 -1139
  61. package/lib/menu-item-group.js +119 -119
  62. package/lib/menu-item.js +114 -114
  63. package/lib/menu.js +6193 -6091
  64. package/lib/message-box.js +3582 -3480
  65. package/lib/message.js +2265 -2163
  66. package/lib/notification.js +2430 -2328
  67. package/lib/option-group.js +4 -4
  68. package/lib/option.js +842 -744
  69. package/lib/page-header.js +4 -4
  70. package/lib/pagination.js +1916 -1815
  71. package/lib/phone-login.js +1788 -1735
  72. package/lib/popconfirm.js +8 -8
  73. package/lib/popover.js +4559 -4457
  74. package/lib/progress.js +4 -4
  75. package/lib/qr-code.js +9 -9
  76. package/lib/qrcode-login.js +1600 -1543
  77. package/lib/radio-button.js +6 -6
  78. package/lib/radio-group.js +2142 -2089
  79. package/lib/radio.js +6 -6
  80. package/lib/rate.js +1226 -1128
  81. package/lib/row.js +2 -2
  82. package/lib/scrollbar.js +2695 -2597
  83. package/lib/select.js +5985 -5961
  84. package/lib/selector-panel.js +5239 -5186
  85. package/lib/selector.js +1712 -1659
  86. package/lib/slider.js +16 -16
  87. package/lib/step.js +35836 -2736
  88. package/lib/steps.js +1281 -1183
  89. package/lib/submenu.js +461 -457
  90. package/lib/switch.js +1010 -912
  91. package/lib/tab-pane.js +4 -4
  92. package/lib/table-column.js +2595 -2497
  93. package/lib/table.js +9225 -9239
  94. package/lib/tabs.js +2414 -2320
  95. package/lib/tag.js +4 -4
  96. package/lib/theme-chalk/account-login.css +1 -1
  97. package/lib/theme-chalk/autocomplete.css +1 -1
  98. package/lib/theme-chalk/base.css +1 -1
  99. package/lib/theme-chalk/cascader.css +1 -1
  100. package/lib/theme-chalk/date-picker.css +1 -1
  101. package/lib/theme-chalk/empty.css +1 -0
  102. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  103. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  104. package/lib/theme-chalk/form.css +1 -1
  105. package/lib/theme-chalk/icon.css +1 -1
  106. package/lib/theme-chalk/index.css +1 -1
  107. package/lib/theme-chalk/input-number.css +1 -1
  108. package/lib/theme-chalk/input.css +1 -1
  109. package/lib/theme-chalk/login.css +1 -1
  110. package/lib/theme-chalk/lowcode.css +1 -0
  111. package/lib/theme-chalk/main.css +1 -1
  112. package/lib/theme-chalk/message-box.css +1 -1
  113. package/lib/theme-chalk/pagination.css +1 -1
  114. package/lib/theme-chalk/qrcode-login.css +1 -1
  115. package/lib/theme-chalk/select.css +1 -1
  116. package/lib/theme-chalk/slider.css +1 -1
  117. package/lib/theme-chalk/tabs.css +1 -1
  118. package/lib/theme-chalk/time-picker.css +1 -1
  119. package/lib/theme-chalk/transfer.css +1 -1
  120. package/lib/time-picker.js +5823 -5819
  121. package/lib/time-select.js +3578 -3574
  122. package/lib/timeline-item.js +4 -4
  123. package/lib/timeline.js +4 -4
  124. package/lib/tips.js +1633 -1580
  125. package/lib/toolbar.js +213 -213
  126. package/lib/tooltip.js +4441 -4339
  127. package/lib/transfer.js +938 -840
  128. package/lib/tree-group.js +1875 -1757
  129. package/lib/tree.js +2626 -2573
  130. package/lib/upload.js +7209 -7156
  131. package/lib/utils/ajax.js +185 -243
  132. package/lib/utils/bus.js +2 -2
  133. package/lib/utils/popup/index.js +5 -1
  134. package/lib/utils/util.js +108 -11
  135. package/package.json +2 -2
  136. package/packages/button/src/button-group.vue +1 -4
  137. package/packages/collapse/src/collapse-item.vue +47 -33
  138. package/packages/dialog/src/dialog.vue +4 -1
  139. package/packages/drawer/src/drawer.vue +12 -4
  140. package/packages/empty/index.js +7 -0
  141. package/packages/empty/src/img-empty.vue +132 -0
  142. package/packages/empty/src/index.vue +49 -0
  143. package/packages/form/src/form-item-render.vue +16 -18
  144. package/packages/form/src/form.vue +27 -5
  145. package/packages/icons/src/icon.json +1 -1
  146. package/packages/login/src/login.vue +19 -21
  147. package/packages/login/src/mixins.js +2 -1
  148. package/packages/lowcode/index.js +5 -0
  149. package/packages/lowcode/src/aside.vue +331 -0
  150. package/packages/lowcode/src/attribute/bind.vue +441 -0
  151. package/packages/lowcode/src/attribute/dependency.vue +325 -0
  152. package/packages/lowcode/src/attribute/function.vue +112 -0
  153. package/packages/lowcode/src/attribute/property.vue +331 -0
  154. package/packages/lowcode/src/attribute/styles.vue +318 -0
  155. package/packages/lowcode/src/attribute.vue +135 -0
  156. package/packages/lowcode/src/canvas.vue +296 -0
  157. package/packages/lowcode/src/json.vue +32 -0
  158. package/packages/lowcode/src/lowcode.vue +539 -0
  159. package/packages/lowcode/src/modules.vue +93 -0
  160. package/packages/lowcode/src/pages.vue +91 -0
  161. package/packages/lowcode/src/render.vue +247 -0
  162. package/packages/lowcode/src/source.vue +32 -0
  163. package/packages/lowcode/src/toolbar.vue +162 -0
  164. package/packages/main/src/components/pages.vue +28 -2
  165. package/packages/main/src/components/set-menus.vue +3 -3
  166. package/packages/main/src/components/user.vue +6 -1
  167. package/packages/main/src/early.vue +2 -2
  168. package/packages/main/src/gzw.vue +55 -61
  169. package/packages/main/src/minxs.js +113 -36
  170. package/packages/pagination/src/pager.vue +2 -2
  171. package/packages/pagination/src/pagination.js +4 -1
  172. package/packages/qrcode-login/src/qrcode-login.vue +6 -2
  173. package/packages/select/src/select.vue +28 -6
  174. package/packages/steps/src/step.vue +7 -5
  175. package/packages/tabs/src/tab-nav.vue +1 -0
  176. package/packages/tabs/src/tabs.vue +0 -2
  177. package/packages/theme-chalk/dist/fonts/iconfont.ttf +0 -0
  178. package/packages/theme-chalk/dist/fonts/iconfont.woff +0 -0
  179. package/packages/theme-chalk/gulpfile.js +3 -0
  180. package/packages/theme-chalk/src/account-login.scss +1 -0
  181. package/packages/theme-chalk/src/base.scss +1 -1
  182. package/packages/theme-chalk/src/common/var.scss +16 -0
  183. package/packages/theme-chalk/src/empty.scss +45 -0
  184. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  185. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  186. package/packages/theme-chalk/src/form.scss +1 -8
  187. package/packages/theme-chalk/src/icon.scss +30 -1
  188. package/packages/theme-chalk/src/index.scss +2 -0
  189. package/packages/theme-chalk/src/input-number.scss +0 -4
  190. package/packages/theme-chalk/src/input.scss +9 -0
  191. package/packages/theme-chalk/src/login.scss +32 -29
  192. package/packages/theme-chalk/src/lowcode.scss +461 -0
  193. package/packages/theme-chalk/src/main.scss +28 -65
  194. package/packages/theme-chalk/src/pagination.scss +4 -55
  195. package/packages/theme-chalk/src/qrcode-login.scss +3 -1
  196. package/packages/theme-chalk/src/tabs.scss +81 -50
  197. package/src/config/api.js +13 -0
  198. package/src/index.js +17 -4
  199. package/src/utils/ajax.js +61 -65
  200. package/src/utils/bus.js +2 -2
  201. package/src/utils/popup/index.js +5 -1
  202. package/src/utils/util.js +104 -7
  203. package/lib/index_/345/211/257/346/234/254.js +0 -583
  204. package/packages/dialog copy/index.js +0 -8
  205. package/packages/dialog copy/src/dialog.vue +0 -615
  206. package/src/index_/345/211/257/346/234/254.js +0 -359
  207. /package/{packages/form/src → src/components}/field-render.vue +0 -0
package/lib/utils/util.js CHANGED
@@ -1,5 +1,5 @@
1
1
  exports.__esModule = true;
2
- exports.warning = exports.error = exports.success = exports.confirm = exports.winTopOpen = exports.watermark = exports.uuid = exports.urlJoinParams = exports.upperType = exports.updateTheme = exports.toFunction = exports.toFixed = exports.trimWhitespace = exports.takeRight = exports.takeLeft = exports.startWith = exports.sum = exports.setFavicon = exports.sendMessage = exports.setScale = exports.rmbToCapital = exports.replenish = exports.renderIcon = exports.receiveMessage = exports.queryParams = exports.overbrim = exports.lowerCase = exports.loading = exports.loadJs = exports.joinUrl = exports.isObjectEqual = exports.isFunction = exports.isExist = exports.isEmpty = exports.indexOfObj = exports.identical = exports.hasChars = exports.timestampUrl = exports.getLength = exports.getZoom = exports.getValues = exports.getTypePrefix = exports.getTypeName = exports.getStyle = exports.getScript = exports.getParams = exports.getObjectType = exports.extend = exports.exportXls = exports.exclAttribute = exports.decode = exports.encode = exports.downloadFile = exports.domEval = exports.delUrlParam = exports.concatenate = exports.chunkToChinese = exports.busEmit = exports.browser = exports.formatFileSize = exports.average = exports.arrUnique = exports.getFileType = exports.getWinTop = exports.cancelAnimationFrame = exports.requestAnimationFrame = exports.isEqual = exports.arrayEquals = exports.looseEqual = exports.capitalize = exports.kebabCase = exports.autoprefixer = exports.isFirefox = exports.isEdge = exports.isIE = exports.coerceTruthyValueToArray = exports.arrayFind = exports.arrayFindIndex = exports.escapeRegexpString = exports.valueEquals = exports.generateId = exports.getPropByPath = exports.getValueByPath = exports.toObject = exports.hasOwn = exports.noop = undefined;
2
+ exports.warning = exports.error = exports.success = exports.confirm = exports.winTopOpen = exports.watermark = exports.uuid = exports.urlJoinParams = exports.upperType = exports.updateTheme = exports.toFunction = exports.toFixed = exports.trimWhitespace = exports.takeRight = exports.takeLeft = exports.startWith = exports.sum = exports.setFavicon = exports.sendMessage = exports.setScale = exports.rmbToCapital = exports.replenish = exports.renderIcon = exports.receiveMessage = exports.queryParams = exports.overbrim = exports.lowerCase = exports.loading = exports.loadJs = exports.layoutWaterfall = exports.joinUrl = exports.isObjectEqual = exports.isFunction = exports.isExist = exports.isEmpty = exports.indexOfObj = exports.identical = exports.hasChars = exports.timestampUrl = exports.getLength = exports.getZoom = exports.getValues = exports.getTypePrefix = exports.getTypeName = exports.getStyle = exports.getScript = exports.getParams = exports.getObjectType = exports.extend = exports.exportXls = exports.exclAttribute = exports.decode = exports.encode = exports.downloadFile = exports.domEval = exports.delUrlParam = exports.concatenate = exports.chunkToChinese = exports.busEmit = exports.browser = exports.formatFileSize = exports.average = exports.arrUnique = exports.getFileType = exports.getWinTop = exports.cancelAnimationFrame = exports.requestAnimationFrame = exports.isEqual = exports.arrayEquals = exports.looseEqual = exports.capitalize = exports.kebabCase = exports.autoprefixer = exports.isFirefox = exports.isEdge = exports.isIE = exports.coerceTruthyValueToArray = exports.arrayFind = exports.arrayFindIndex = exports.escapeRegexpString = exports.valueEquals = exports.generateId = exports.getPropByPath = exports.getValueByPath = exports.toObject = exports.hasOwn = exports.noop = undefined;
3
3
 
4
4
  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
5
5
 
@@ -1232,7 +1232,9 @@ var getObjectType = exports.getObjectType = function getObjectType(obj) {
1232
1232
  * @return {Object|string} 参数对象或指定参数值
1233
1233
  **/
1234
1234
  var getParams = exports.getParams = function getParams() {
1235
- var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1235
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1236
+
1237
+ var _ref5 = typeof options === 'string' ? { name: options } : options,
1236
1238
  url = _ref5.url,
1237
1239
  name = _ref5.name;
1238
1240
 
@@ -1644,10 +1646,7 @@ var indexOfObj = exports.indexOfObj = function indexOfObj(arry, target, key) {
1644
1646
  return _i3;
1645
1647
  }
1646
1648
  } else if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object') {
1647
- if (currentItem[currentKey] === undefined) {
1648
- throw new Error('\u5C5E\u6027' + currentKey + '\u4E0D\u5B58\u5728');
1649
- }
1650
- if (currentItem[currentKey] === target[currentKey]) {
1649
+ if (currentItem[currentKey] !== undefined && currentItem[currentKey] === target[currentKey]) {
1651
1650
  return _i3;
1652
1651
  }
1653
1652
  }
@@ -1842,7 +1841,105 @@ var joinUrl = exports.joinUrl = function joinUrl(_ref8) {
1842
1841
  // 如果前缀类型无效,直接返回URL
1843
1842
  return url;
1844
1843
  };
1844
+ /**
1845
+ * layoutWaterfall
1846
+ * @desc 布布流布局计算
1847
+ * @author huangbo
1848
+ * @date 2022年5月7日
1849
+ * @param {String} url - JS文件地址
1850
+ * @param {Function} [callback] - 回调函数
1851
+ **/
1852
+ var layoutWaterfall = exports.layoutWaterfall = function layoutWaterfall(self, container, pages, columns, gap) {
1853
+ if (!container) return;
1854
+
1855
+ if (pages.length === 0) return;
1856
+
1857
+ // 获取容器实际内容宽度(减去 padding)
1858
+ var computedStyle = getComputedStyle(container);
1859
+ var paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;
1860
+ var paddingRight = parseFloat(computedStyle.paddingRight) || 0;
1861
+ var paddingTop = parseFloat(computedStyle.paddingTop) || 0;
1862
+ var containerWidth = container.clientWidth - paddingLeft - paddingRight;
1863
+ if (containerWidth === 0) return;
1864
+
1865
+ // 计算每列宽度
1866
+ var columnWidth = (containerWidth - gap * (columns - 1)) / columns;
1867
+
1868
+ // 初始化每列高度数组(以 paddingTop 为起始偏移)
1869
+ var columnHeights = new Array(columns).fill(paddingTop);
1870
+
1871
+ // 遍历所有元素,分配到高度最小的列
1872
+ pages.forEach(function (item) {
1873
+ // 确保span在有效范围内
1874
+ var span = Math.max(1, Math.min(item.style ? item.style.span || item.span || 1 : item.span || 1, columns));
1875
+
1876
+ // 找到可以容纳当前元素span宽度的最小高度起始列
1877
+ var minHeight = Infinity;
1878
+ var startColumn = 0;
1879
+
1880
+ // 遍历所有可能的起始列,找到可以放置span列元素的位置
1881
+ for (var i = 0; i <= columns - span; i++) {
1882
+ // 计算当前连续span列的最大高度
1883
+ var currentMaxHeight = 0;
1884
+ for (var j = i; j < i + span; j++) {
1885
+ if (columnHeights[j] > currentMaxHeight) {
1886
+ currentMaxHeight = columnHeights[j];
1887
+ }
1888
+ }
1845
1889
 
1890
+ // 找到最小的最大高度
1891
+ if (currentMaxHeight < minHeight) {
1892
+ minHeight = currentMaxHeight;
1893
+ startColumn = i;
1894
+ }
1895
+ }
1896
+
1897
+ // 计算元素宽度和位置
1898
+ var existingWidth = item.style && item.style.width ? parseInt(item.style.width, 10) : null;
1899
+ var hasSpan = item.style && item.style.span || item.span;
1900
+ var calculatedWidth = columnWidth * span + gap * (span - 1);
1901
+ var useCustomWidth = !hasSpan && existingWidth;
1902
+ var elementWidth = useCustomWidth ? existingWidth : calculatedWidth;
1903
+
1904
+ // 根据是否使用自定义宽度计算 left(加上 padding 偏移)
1905
+ var left = void 0;
1906
+ if (useCustomWidth) {
1907
+ // 自定义宽度:在分配的列范围内居中(取整避免亚像素)
1908
+ var columnSpaceWidth = columnWidth * span + gap * (span - 1);
1909
+ left = Math.round(paddingLeft + startColumn * columnWidth + startColumn * gap + (columnSpaceWidth - elementWidth) / 2);
1910
+ } else {
1911
+ // 标准 span 宽度:正常计算位置
1912
+ left = paddingLeft + startColumn * columnWidth + startColumn * gap;
1913
+ }
1914
+ var top = minHeight;
1915
+
1916
+ // 设置元素样式(使用Vue的$set确保响应式)
1917
+ if (!item.style) {
1918
+ self.$set(item, 'style', {});
1919
+ }
1920
+ var height = item.style.height ? parseInt(item.style.height, 10) : 30;
1921
+ self.$set(item.style, 'position', 'absolute');
1922
+ self.$set(item.style, 'width', elementWidth + 'px');
1923
+ self.$set(item.style, 'height', height + 'px');
1924
+ self.$set(item.style, 'left', left + 'px');
1925
+ self.$set(item.style, 'top', top + 'px');
1926
+ if (!useCustomWidth) {
1927
+ self.$set(item.style, 'span', span);
1928
+ }
1929
+
1930
+ // 更新所有被占用列的高度
1931
+ var newHeight = top + height + gap;
1932
+ for (var _i5 = startColumn; _i5 < startColumn + span; _i5++) {
1933
+ columnHeights[_i5] = newHeight;
1934
+ }
1935
+ });
1936
+
1937
+ // 设置容器高度
1938
+ var maxHeight = Math.max.apply(Math, columnHeights);
1939
+ container.style.position = 'relative';
1940
+ container.style.height = maxHeight - gap + 'px'; // 减去最后一个间隙
1941
+ return { columnWidth: columnWidth, width: containerWidth };
1942
+ };
1846
1943
  /**
1847
1944
  * loadJs
1848
1945
  * @desc 加载JS文件
@@ -1991,8 +2088,8 @@ var renderIcon = exports.renderIcon = function renderIcon(data, node, icons) {
1991
2088
  var _ref9 = data || {},
1992
2089
  attributes = _ref9.attributes;
1993
2090
 
1994
- var orgType = attributes.orgType || data.orgType;
1995
- var layerlevel = attributes.layerlevel || data.layerlevel;
2091
+ var orgType = attributes ? attributes.orgType : data.orgType;
2092
+ var layerlevel = attributes ? attributes.layerlevel : data.layerlevel;
1996
2093
  if (!orgType) return '';
1997
2094
  var key = orgType === 'org' ? layerlevel ? 'bumen' : 'gongsi' : 'bumen';
1998
2095
  if (node.level === 1 && (data.subNode || data.isParent || data.hasChildren)) {
@@ -2071,10 +2168,10 @@ var rmbToCapital = exports.rmbToCapital = function rmbToCapital(num) {
2071
2168
  // 处理小数部分
2072
2169
  var decimalCapital = '';
2073
2170
  if (parseInt(decimalPart, 10) > 0) {
2074
- for (var _i5 = 0; _i5 < decimalPart.length; _i5++) {
2075
- var _digit = parseInt(decimalPart[_i5], 10);
2171
+ for (var _i6 = 0; _i6 < decimalPart.length; _i6++) {
2172
+ var _digit = parseInt(decimalPart[_i6], 10);
2076
2173
  if (_digit > 0) {
2077
- decimalCapital += chineseNumbers[_digit] + decimalUnits[_i5];
2174
+ decimalCapital += chineseNumbers[_digit] + decimalUnits[_i6];
2078
2175
  } else if (decimalCapital[decimalCapital.length - 1] !== chineseNumbers[0]) {
2079
2176
  decimalCapital += chineseNumbers[_digit];
2080
2177
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eoss",
3
- "version": "0.1.0-alpha.20",
3
+ "version": "0.1.0-alpha.21",
4
4
  "description": "eoss内部业务组件",
5
5
  "main": "lib/eoss.common.js",
6
6
  "files": [
@@ -74,8 +74,8 @@
74
74
  "slate-history": "^0.100.0",
75
75
  "sm-crypto": "^0.3.11",
76
76
  "sockjs-client": "^1.6.1",
77
- "stompjs": "^2.3.3",
78
77
  "sortablejs": "^1.15.0",
78
+ "stompjs": "^2.3.3",
79
79
  "throttle-debounce": "4.0.0",
80
80
  "ua-parser-js": "^2.0.3"
81
81
  },
@@ -117,10 +117,7 @@ export default {
117
117
  default: 'bottom'
118
118
  },
119
119
  // 是否分隔按钮
120
- separate: {
121
- type: Boolean,
122
- default: true
123
- },
120
+ separate: Boolean,
124
121
  data: Object,
125
122
  // 阻止事件冒泡
126
123
  stop: {
@@ -27,34 +27,11 @@
27
27
  <slot name="title">
28
28
  <template v-if="Array.isArray(title)">
29
29
  <template v-for="(item, index) in title">
30
- <span v-if="typeof item === 'string'" :key="index">{{
31
- item
30
+ <span v-if="item.text || item.type === 'text' || typeof item === 'string'" :key="item.key || item.id || index">{{
31
+ item.text || item.contents || item
32
32
  }}</span>
33
- <template v-else>
34
- <span
35
- v-if="item.text || item.type === 'text'"
36
- :key="item.key || item.id || index"
37
- >{{ item.text || item.contents }}</span
38
- >
39
- <es-icon
40
- v-else-if="item.type === 'icon' || item.icon"
41
- :key="item['key'] || item['id'] || index"
42
- :class="item.class"
43
- :contents="item.contents || item.icon"
44
- :events="item.events"
45
- @click.stop="item.event"
46
- />
47
- <field-renderer
48
- v-else-if="
49
- ['radio', 'checkbox', 'select', 'switch'].includes(
50
- item.type
51
- )
52
- "
53
- :key="item['key'] || item['id'] || index"
54
- v-bind="item"
55
- ></field-renderer>
56
- </template>
57
- </template>
33
+ <component v-else v-bind="getProps(item, index)" :key="item['key'] || item['id'] || index" @click.stop="item.type === 'icon' || item.icon ? item.event : ''"></component>
34
+ </template>
58
35
  </template>
59
36
  <template v-else>
60
37
  {{ title }}
@@ -86,8 +63,7 @@
86
63
  >
87
64
  <div class="es-collapse-item__content">
88
65
  <slot>
89
- <component :is="item.is" v-bind="item" v-if="item.is"></component>
90
- <div v-else>{{ item.content }}</div>
66
+ <div>{{ content }}</div>
91
67
  </slot>
92
68
  </div>
93
69
  </div>
@@ -99,6 +75,7 @@ import EsCollapseTransition from 'eoss/src/transitions/collapse-transition';
99
75
  import Emitter from 'eoss/src/mixins/emitter';
100
76
  import { generateId } from 'eoss/src/utils/util';
101
77
  import EsIcon from 'eoss/packages/icon/src/icon';
78
+ import FieldRender from 'eoss/src/components/field-render.vue';
102
79
 
103
80
  export default {
104
81
  name: 'EsCollapseItem',
@@ -107,7 +84,7 @@ export default {
107
84
 
108
85
  mixins: [Emitter],
109
86
 
110
- components: { EsCollapseTransition, EsIcon },
87
+ components: { EsCollapseTransition, EsIcon, FieldRender },
111
88
 
112
89
  data() {
113
90
  return {
@@ -118,7 +95,9 @@ export default {
118
95
  contentHeight: 0,
119
96
  focusing: false,
120
97
  isClick: false,
121
- id: generateId()
98
+ id: generateId(),
99
+ // 缓存处理后的item对象,避免重复渲染
100
+ itemCache: new Map()
122
101
  };
123
102
  },
124
103
 
@@ -130,7 +109,10 @@ export default {
130
109
  type: Boolean,
131
110
  default: true
132
111
  },
133
- arrow: Boolean,
112
+ arrow: {
113
+ type: Boolean,
114
+ default: true
115
+ },
134
116
  name: {
135
117
  type: [String, Number],
136
118
  default() {
@@ -140,7 +122,6 @@ export default {
140
122
  disabled: Boolean,
141
123
  readonly: Boolean,
142
124
  icon: String,
143
- is: String,
144
125
  content: String
145
126
  },
146
127
 
@@ -160,6 +141,39 @@ export default {
160
141
  },
161
142
 
162
143
  methods: {
144
+ /**
145
+ * 用于生成按钮项的唯一key
146
+ * @param {Object} item - 按钮配置项
147
+ * @param {number} index - 索引值
148
+ * @returns {string|number} - 唯一的key值
149
+ */
150
+ getItemKey(item, index) {
151
+ // 优先使用item中的key属性,如果没有则使用id,最后才使用index
152
+ return item.key || item.id || index;
153
+ },
154
+ /**
155
+ * 处理item对象,移除event属性并缓存结果
156
+ * @param {Object} item - 按钮配置项
157
+ * @param {number} index - 索引值
158
+ * @returns {Object} - 处理后的item对象
159
+ */
160
+ getProps(item, index) {
161
+ const key = this.getItemKey(item, index);
162
+ // 检查缓存中是否已有处理结果
163
+ if (this.itemCache.has(key)) {
164
+ return this.itemCache.get(key);
165
+ }
166
+ const { event, ...props } = item;
167
+ if(item.type === 'icon' || item.icon){
168
+ props.contents = item.contents || item.icon
169
+ props.is = 'es-icon'
170
+ }else{
171
+ props.is = 'field-render'
172
+ }
173
+ // 缓存处理结果
174
+ this.itemCache.set(key, props);
175
+ return props;
176
+ },
163
177
  handleFocus() {
164
178
  setTimeout(() => {
165
179
  if (!this.isClick && !this.readonly) {
@@ -37,7 +37,10 @@
37
37
  type="button"
38
38
  aria-label="Scale"
39
39
  v-if="
40
- showScale && this.width !== '100%' && this.height !== '100%'
40
+ showScale &&
41
+ this.width !== '100%' &&
42
+ this.height !== '100%' &&
43
+ size !== 'full'
41
44
  "
42
45
  @click.stop="handleScale"
43
46
  >
@@ -4,12 +4,15 @@
4
4
  @after-enter="afterEnter"
5
5
  @after-leave="afterLeave"
6
6
  >
7
- <div class="es-drawer__wrapper" v-show="visible">
7
+ <div
8
+ class="es-drawer__wrapper"
9
+ v-show="visible"
10
+ >
8
11
  <div
9
12
  class="es-drawer__container"
10
13
  :class="visible && 'es-drawer__open'"
11
- @click.self="handleWrapperClick"
12
14
  role="document"
15
+ @click.self="handleWrapperClick"
13
16
  >
14
17
  <div
15
18
  aria-modal="true"
@@ -68,7 +71,7 @@ export default {
68
71
  mixins: [Popup, emitter],
69
72
  props: {
70
73
  /**
71
- * Drawer 自身是否插入至 body 元素上。嵌套的 Drawer 必须指定该属性并赋值为 true
74
+ * Drawer 自身是否插入至 body 元素上。
72
75
  */
73
76
  appendToBody: {
74
77
  type: Boolean,
@@ -130,7 +133,9 @@ export default {
130
133
  */
131
134
  modalAppendToBody: {
132
135
  type: Boolean,
133
- default: true
136
+ default() {
137
+ return this.appendToBody;
138
+ }
134
139
  },
135
140
  /**
136
141
  * 是否显示关闭按钮
@@ -279,6 +284,9 @@ export default {
279
284
  }
280
285
  },
281
286
  mounted() {
287
+ if (!this.lazy) {
288
+ return;
289
+ }
282
290
  if (this.visible) {
283
291
  this.rendered = true;
284
292
  this.open();
@@ -0,0 +1,7 @@
1
+ import Empty from './src/index.vue';
2
+
3
+ Empty.install = (Vue) => {
4
+ Vue.component(Empty.name, Empty);
5
+ };
6
+
7
+ export default Empty;
@@ -0,0 +1,132 @@
1
+ <template>
2
+ <svg
3
+ viewBox="0 0 79 86"
4
+ version="1.1"
5
+ xmlns="http://www.w3.org/2000/svg"
6
+ xmlns:xlink="http://www.w3.org/1999/xlink"
7
+ >
8
+ <defs>
9
+ <linearGradient
10
+ :id="`linearGradient-1-${id}`"
11
+ x1="38.8503086%"
12
+ y1="0%"
13
+ x2="61.1496914%"
14
+ y2="100%"
15
+ >
16
+ <stop stop-color="#FCFCFD" offset="0%" />
17
+ <stop stop-color="#EEEFF3" offset="100%" />
18
+ </linearGradient>
19
+ <linearGradient
20
+ :id="`linearGradient-2-${id}`"
21
+ x1="0%"
22
+ y1="9.5%"
23
+ x2="100%"
24
+ y2="90.5%"
25
+ >
26
+ <stop stop-color="#FCFCFD" offset="0%" />
27
+ <stop stop-color="#E9EBEF" offset="100%" />
28
+ </linearGradient>
29
+ <rect
30
+ :id="`path-3-${id}`"
31
+ x="0"
32
+ y="0"
33
+ width="17"
34
+ height="36"
35
+ />
36
+ </defs>
37
+ <g
38
+ id="Illustrations"
39
+ stroke="none"
40
+ stroke-width="1"
41
+ fill="none"
42
+ fill-rule="evenodd"
43
+ >
44
+ <g id="B-type" transform="translate(-1268.000000, -535.000000)">
45
+ <g id="Group-2" transform="translate(1268.000000, 535.000000)">
46
+ <path
47
+ id="Oval-Copy-2"
48
+ d="M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z"
49
+ fill="#F7F8FC"
50
+ />
51
+ <polygon
52
+ id="Rectangle-Copy-14"
53
+ fill="#E5E7E9"
54
+ transform="translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) "
55
+ points="13 58 53 58 42 45 2 45"
56
+ />
57
+ <g
58
+ id="Group-Copy"
59
+ transform="translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"
60
+ >
61
+ <polygon
62
+ id="Rectangle-Copy-10"
63
+ fill="#E5E7E9"
64
+ transform="translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) "
65
+ points="2.84078316e-14 3 18 3 23 7 5 7"
66
+ />
67
+ <polygon id="Rectangle-Copy-11" fill="#EDEEF2" points="-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43" />
68
+ <rect
69
+ id="Rectangle-Copy-12"
70
+ :fill="`url(#linearGradient-1-${id})`"
71
+ transform="translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) "
72
+ x="38"
73
+ y="7"
74
+ width="17"
75
+ height="36"
76
+ />
77
+ <polygon
78
+ id="Rectangle-Copy-13"
79
+ fill="#F8F9FB"
80
+ transform="translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) "
81
+ points="24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"
82
+ />
83
+ </g>
84
+ <rect
85
+ id="Rectangle-Copy-15"
86
+ :fill="`url(#linearGradient-2-${id})`"
87
+ x="13"
88
+ y="45"
89
+ width="40"
90
+ height="36"
91
+ />
92
+ <g id="Rectangle-Copy-17" transform="translate(53.000000, 45.000000)">
93
+ <mask :id="`mask-4-${id}`" fill="white">
94
+ <use :xlink:href="`#path-3-${id}`" />
95
+ </mask>
96
+ <use
97
+ id="Mask"
98
+ fill="#E0E3E9"
99
+ transform="translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) "
100
+ :xlink:href="`#path-3-${id}`"
101
+ />
102
+ <polygon
103
+ id="Rectangle-Copy"
104
+ fill="#D5D7DE"
105
+ :mask="`url(#mask-4-${id})`"
106
+ transform="translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) "
107
+ points="7 0 24 0 20 18 -1.70530257e-13 16"
108
+ />
109
+ </g>
110
+ <polygon
111
+ id="Rectangle-Copy-18"
112
+ fill="#F8F9FB"
113
+ transform="translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) "
114
+ points="62 45 79 45 70 58 53 58"
115
+ />
116
+ </g>
117
+ </g>
118
+ </g>
119
+ </svg>
120
+ </template>
121
+
122
+ <script>
123
+ let id = 0;
124
+ export default {
125
+ name: 'ImgEmpty',
126
+ data() {
127
+ return {
128
+ id: ++id
129
+ };
130
+ }
131
+ };
132
+ </script>
@@ -0,0 +1,49 @@
1
+ <template>
2
+ <div class="es-empty">
3
+ <div class="es-empty__image" :style="imageStyle">
4
+ <img v-if="image" :src="image" ondragstart="return false" />
5
+ <template v-else>
6
+ <slot name="image">
7
+ <img-empty />
8
+ </slot>
9
+ </template>
10
+ </div>
11
+ <div class="es-empty__description">
12
+ <slot name="description">
13
+ <p>{{ description }}</p>
14
+ </slot>
15
+ </div>
16
+ <div v-if="$slots.default" class="es-empty__bottom">
17
+ <slot></slot>
18
+ </div>
19
+ </div>
20
+ </template>
21
+
22
+ <script>
23
+ import ImgEmpty from './img-empty.vue';
24
+
25
+ export default {
26
+ name: 'EsEmpty',
27
+ components: {
28
+ ImgEmpty
29
+ },
30
+ props: {
31
+ image: {
32
+ type: String,
33
+ default: ''
34
+ },
35
+ imageSize: Number,
36
+ description: {
37
+ type: String,
38
+ default: ''
39
+ }
40
+ },
41
+ computed: {
42
+ imageStyle() {
43
+ return {
44
+ width: this.imageSize ? `${this.imageSize}px` : ''
45
+ };
46
+ }
47
+ }
48
+ };
49
+ </script>