@yqg/simple 1.0.2 → 1.0.4-beta.0

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 (210) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/dist/cjs/constant/common-fields.js +421 -0
  3. package/dist/cjs/constant/common-fields.js.map +1 -0
  4. package/dist/cjs/constant/def-type.js +34 -0
  5. package/dist/cjs/constant/def-type.js.map +1 -0
  6. package/dist/cjs/constant/fields.js +104 -0
  7. package/dist/cjs/constant/fields.js.map +1 -0
  8. package/dist/cjs/constant/index.js +47 -0
  9. package/dist/cjs/constant/index.js.map +1 -0
  10. package/dist/cjs/constant/table.js +42 -0
  11. package/dist/cjs/constant/table.js.map +1 -0
  12. package/dist/cjs/filter/count-to-time.js +20 -0
  13. package/dist/cjs/filter/count-to-time.js.map +1 -0
  14. package/dist/cjs/filter/date.js +20 -0
  15. package/dist/cjs/filter/date.js.map +1 -0
  16. package/dist/cjs/filter/index.js +34 -0
  17. package/dist/cjs/filter/index.js.map +1 -0
  18. package/dist/cjs/filter/mardown-to-html.js +21 -0
  19. package/dist/cjs/filter/mardown-to-html.js.map +1 -0
  20. package/dist/cjs/filter/number-with-commas.js +25 -0
  21. package/dist/cjs/filter/number-with-commas.js.map +1 -0
  22. package/dist/cjs/filter/percent.js +25 -0
  23. package/dist/cjs/filter/percent.js.map +1 -0
  24. package/dist/cjs/filter/phone-mask.js +21 -0
  25. package/dist/cjs/filter/phone-mask.js.map +1 -0
  26. package/dist/cjs/mixin/card-list.js +65 -0
  27. package/dist/cjs/mixin/card-list.js.map +1 -0
  28. package/dist/cjs/mixin/client-table.js +53 -0
  29. package/dist/cjs/mixin/client-table.js.map +1 -0
  30. package/dist/cjs/mixin/collect-slots.js +40 -0
  31. package/dist/cjs/mixin/collect-slots.js.map +1 -0
  32. package/dist/cjs/mixin/common-table.js +32 -0
  33. package/dist/cjs/mixin/common-table.js.map +1 -0
  34. package/dist/cjs/mixin/enum-type.js +174 -0
  35. package/dist/cjs/mixin/enum-type.js.map +1 -0
  36. package/dist/cjs/mixin/gen-text.js +146 -0
  37. package/dist/cjs/mixin/gen-text.js.map +1 -0
  38. package/dist/cjs/mixin/index.js +21 -0
  39. package/dist/cjs/mixin/index.js.map +1 -0
  40. package/dist/cjs/mixin/modal.js +26 -0
  41. package/dist/cjs/mixin/modal.js.map +1 -0
  42. package/dist/cjs/mixin/static-props.js +40 -0
  43. package/dist/cjs/mixin/static-props.js.map +1 -0
  44. package/dist/cjs/mixin/table.js +110 -0
  45. package/dist/cjs/mixin/table.js.map +1 -0
  46. package/dist/cjs/mixin/watermark.js +55 -0
  47. package/dist/cjs/mixin/watermark.js.map +1 -0
  48. package/dist/cjs/resource/web.js +23 -0
  49. package/dist/cjs/resource/web.js.map +1 -0
  50. package/dist/cjs/store/module/timezone.js +23 -0
  51. package/dist/cjs/store/module/timezone.js.map +1 -0
  52. package/dist/cjs/util/enum.js +18 -0
  53. package/dist/cjs/util/enum.js.map +1 -0
  54. package/dist/cjs/util/format-map.js +169 -0
  55. package/dist/cjs/util/format-map.js.map +1 -0
  56. package/dist/cjs/util/index.js +28 -0
  57. package/dist/cjs/util/index.js.map +1 -0
  58. package/dist/cjs/util/json.js +43 -0
  59. package/dist/cjs/util/json.js.map +1 -0
  60. package/dist/cjs/util/keyCodeMap.js +22 -0
  61. package/dist/cjs/util/keyCodeMap.js.map +1 -0
  62. package/dist/cjs/util/local-storage.js +19 -0
  63. package/dist/cjs/util/local-storage.js.map +1 -0
  64. package/dist/cjs/util/object.js +134 -0
  65. package/dist/cjs/util/object.js.map +1 -0
  66. package/dist/cjs/util/storage/index.js +49 -0
  67. package/dist/cjs/util/storage/index.js.map +1 -0
  68. package/dist/cjs/util/storage/swim-lane.js +17 -0
  69. package/dist/cjs/util/storage/swim-lane.js.map +1 -0
  70. package/dist/cjs/util/tool.js +15 -0
  71. package/dist/cjs/util/tool.js.map +1 -0
  72. package/dist/constant/common-fields.js +388 -0
  73. package/dist/constant/common-fields.js.map +1 -0
  74. package/dist/constant/def-type.js +30 -0
  75. package/dist/constant/def-type.js.map +1 -0
  76. package/dist/constant/fields.js +69 -0
  77. package/dist/constant/fields.js.map +1 -0
  78. package/dist/constant/index.js +4 -0
  79. package/dist/constant/index.js.map +1 -0
  80. package/dist/constant/table.js +38 -0
  81. package/dist/constant/table.js.map +1 -0
  82. package/dist/filter/count-to-time.js +16 -0
  83. package/dist/filter/count-to-time.js.map +1 -0
  84. package/dist/filter/date.js +16 -0
  85. package/dist/filter/date.js.map +1 -0
  86. package/dist/filter/index.js +30 -0
  87. package/dist/filter/index.js.map +1 -0
  88. package/dist/filter/mardown-to-html.js +17 -0
  89. package/dist/filter/mardown-to-html.js.map +1 -0
  90. package/dist/filter/number-with-commas.js +21 -0
  91. package/dist/filter/number-with-commas.js.map +1 -0
  92. package/dist/filter/percent.js +21 -0
  93. package/dist/filter/percent.js.map +1 -0
  94. package/dist/filter/phone-mask.js +17 -0
  95. package/dist/filter/phone-mask.js.map +1 -0
  96. package/dist/index-04f653d8.js +2 -0
  97. package/dist/index-04f653d8.js.map +1 -0
  98. package/dist/index-0bd7b62a.js +2 -0
  99. package/dist/index-0bd7b62a.js.map +1 -0
  100. package/dist/index-11a3a489.js +2 -0
  101. package/dist/index-11a3a489.js.map +1 -0
  102. package/dist/index-33c042c2.js +2 -0
  103. package/dist/index-33c042c2.js.map +1 -0
  104. package/dist/index-35e984eb.js +2 -0
  105. package/dist/index-35e984eb.js.map +1 -0
  106. package/dist/index-3d41a7fe.js +2 -0
  107. package/dist/index-3d41a7fe.js.map +1 -0
  108. package/dist/index-4811e979.js +2 -0
  109. package/dist/index-4811e979.js.map +1 -0
  110. package/dist/index-49dae2ae.js +2 -0
  111. package/dist/index-49dae2ae.js.map +1 -0
  112. package/dist/index-51144d41.js +2 -0
  113. package/dist/index-51144d41.js.map +1 -0
  114. package/dist/index-5628766c.js +2 -0
  115. package/dist/index-5628766c.js.map +1 -0
  116. package/dist/index-5de3b12e.js +2 -0
  117. package/dist/index-5de3b12e.js.map +1 -0
  118. package/dist/index-6f950de0.js +2 -0
  119. package/dist/index-6f950de0.js.map +1 -0
  120. package/dist/index-78155131.js +2 -0
  121. package/dist/index-78155131.js.map +1 -0
  122. package/dist/index-7bf6cd7b.js +2 -0
  123. package/dist/index-7bf6cd7b.js.map +1 -0
  124. package/dist/index-8c097ca2.js +2 -0
  125. package/dist/index-8c097ca2.js.map +1 -0
  126. package/dist/index-8f939d58.js +2 -0
  127. package/dist/index-8f939d58.js.map +1 -0
  128. package/dist/index-9b730240.js +2 -0
  129. package/dist/index-9b730240.js.map +1 -0
  130. package/dist/index-a74745ff.js +2 -0
  131. package/dist/index-a74745ff.js.map +1 -0
  132. package/dist/index-a8ba59f7.js +2 -0
  133. package/dist/index-a8ba59f7.js.map +1 -0
  134. package/dist/index-a8e24232.js +2 -0
  135. package/dist/index-a8e24232.js.map +1 -0
  136. package/dist/index-ad091666.js +2 -0
  137. package/dist/index-ad091666.js.map +1 -0
  138. package/dist/index-c3d7bc57.js +2 -0
  139. package/dist/index-c3d7bc57.js.map +1 -0
  140. package/dist/index-c58a60f0.js +2 -0
  141. package/dist/index-c58a60f0.js.map +1 -0
  142. package/dist/index-cc14a924.js +2 -0
  143. package/dist/index-cc14a924.js.map +1 -0
  144. package/dist/index-d1009f4b.js +2 -0
  145. package/dist/index-d1009f4b.js.map +1 -0
  146. package/dist/index-d8eb1050.js +2 -0
  147. package/dist/index-d8eb1050.js.map +1 -0
  148. package/dist/index-e045b3d6.js +2 -0
  149. package/dist/index-e045b3d6.js.map +1 -0
  150. package/dist/index-ecb16d71.js +2 -0
  151. package/dist/index-ecb16d71.js.map +1 -0
  152. package/dist/index-f144d233.js +2 -0
  153. package/dist/index-f144d233.js.map +1 -0
  154. package/dist/index-f182a282.js +2 -0
  155. package/dist/index-f182a282.js.map +1 -0
  156. package/dist/index-f48f6ae3.js +2 -0
  157. package/dist/index-f48f6ae3.js.map +1 -0
  158. package/dist/index-fd3dfbd2.js +2 -0
  159. package/dist/index-fd3dfbd2.js.map +1 -0
  160. package/dist/index.esm.js +1 -1
  161. package/dist/index.js +1 -1
  162. package/dist/mixin/card-list.js +61 -0
  163. package/dist/mixin/card-list.js.map +1 -0
  164. package/dist/mixin/client-table.js +49 -0
  165. package/dist/mixin/client-table.js.map +1 -0
  166. package/dist/mixin/collect-slots.js +36 -0
  167. package/dist/mixin/collect-slots.js.map +1 -0
  168. package/dist/mixin/common-table.js +28 -0
  169. package/dist/mixin/common-table.js.map +1 -0
  170. package/dist/mixin/enum-type.js +170 -0
  171. package/dist/mixin/enum-type.js.map +1 -0
  172. package/dist/mixin/gen-text.js +142 -0
  173. package/dist/mixin/gen-text.js.map +1 -0
  174. package/dist/mixin/index.js +8 -0
  175. package/dist/mixin/index.js.map +1 -0
  176. package/dist/mixin/modal.js +22 -0
  177. package/dist/mixin/modal.js.map +1 -0
  178. package/dist/mixin/static-props.js +36 -0
  179. package/dist/mixin/static-props.js.map +1 -0
  180. package/dist/mixin/table.js +105 -0
  181. package/dist/mixin/table.js.map +1 -0
  182. package/dist/mixin/watermark.js +51 -0
  183. package/dist/mixin/watermark.js.map +1 -0
  184. package/dist/resource/web.js +19 -0
  185. package/dist/resource/web.js.map +1 -0
  186. package/dist/store/module/timezone.js +19 -0
  187. package/dist/store/module/timezone.js.map +1 -0
  188. package/dist/util/enum.js +15 -0
  189. package/dist/util/enum.js.map +1 -0
  190. package/dist/util/format-map.js +165 -0
  191. package/dist/util/format-map.js.map +1 -0
  192. package/dist/util/index.js +6 -0
  193. package/dist/util/index.js.map +1 -0
  194. package/dist/util/json.js +40 -0
  195. package/dist/util/json.js.map +1 -0
  196. package/dist/util/keyCodeMap.js +18 -0
  197. package/dist/util/keyCodeMap.js.map +1 -0
  198. package/dist/util/local-storage.js +15 -0
  199. package/dist/util/local-storage.js.map +1 -0
  200. package/dist/util/object.js +124 -0
  201. package/dist/util/object.js.map +1 -0
  202. package/dist/util/storage/index.js +45 -0
  203. package/dist/util/storage/index.js.map +1 -0
  204. package/dist/util/storage/swim-lane.js +13 -0
  205. package/dist/util/storage/swim-lane.js.map +1 -0
  206. package/dist/util/tool.js +13 -0
  207. package/dist/util/tool.js.map +1 -0
  208. package/package.json +1 -1
  209. package/src/component/i18n/index.js +6 -0
  210. package/src/component/yqg-simple-form/constant/field-map.js +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-5de3b12e.js","sources":["../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../src/constant/def-type.js","../src/mixin/gen-text.js","../src/util/object.js","../src/component/def-value.vue","../node_modules/vue-runtime-helpers/dist/normalize-component.mjs","../node_modules/vue-runtime-helpers/dist/inject-style/browser.mjs","../src/component/yqg-card-list/index.vue","../src/util/json.js","../src/component/yqg-code-textarea/index.vue","../src/component/yqg-env-switch/index.vue","../src/component/yqg-infinite-pagination.vue","../src/mixin/static-props.js","../src/component/yqg-info.vue","../src/component/yqg-info-table.vue","../src/mixin/watermark.js","../src/mixin/modal.js","../src/mixin/table.js","../src/mixin/common-table.js","../src/mixin/client-table.js","../src/mixin/enum-type.js","../src/mixin/card-list.js","../src/component/yqg-simple-drawer.vue","../src/util/enum.js","../src/util/format-map.js","../src/util/local-storage.js","../src/component/util.js","../src/component/yqg-simple-form/component/field-child-form.vue","../src/component/yqg-simple-form/component/field-button-group.vue","../src/component/yqg-simple-form/component/field-cascader.vue","../src/component/yqg-simple-form/component/field-code.vue","../src/component/yqg-simple-form/component/field-file.vue","../src/component/yqg-simple-form/component/field-group-form.vue","../src/component/yqg-simple-form/component/field-input.vue","../src/component/yqg-simple-form/component/field-select.vue","../src/component/yqg-simple-form/component/field-sql.vue","../src/component/yqg-simple-form/component/field-textarea.vue","../src/component/yqg-simple-form/component/field-tree.vue","../src/component/yqg-simple-form/component/field-virtual-select/index.vue","../src/component/yqg-simple-form/constant/field-map.js","../src/component/yqg-simple-form/component/field-date.vue","../src/component/yqg-simple-form/component/field-table-form.vue","../src/component/yqg-simple-form/index.vue","../src/component/yqg-simple-modal.vue","../src/constant/table.ts","../node_modules/tslib/tslib.es6.js","../src/mixin/collect-slots.ts","../src/util/tool.js","../src/component/yqg-simple-table.vue","../src/component/yqg-static-form.vue","../src/component/yqg-suggestion-shortcuts/index.vue","../src/component/yqg-suggestion-shortcuts/suggestion.png","../src/util/storage/index.js","../src/util/storage/swim-lane.js","../src/component/yqg-swim-lane-input/index.vue","../src/component/yqg-transfer.vue","../src/component/i18n/zh-cn.ts","../src/component/i18n/index.js","../src/component/yqg-simple-form/component/field-auto-complete.vue","../src/component/yqg-simple-form/component/field-checkbox.vue","../src/component/yqg-simple-form/component/field-enum.vue","../src/resource/web.js","../src/constant/common-fields.ts","../src/constant/fields.ts","../src/component/yqg-simple-form/constant/fields.js","../src/component/yqg-simple-form/constant/file-upload-form-options.js","../src/component/yqg-simple-form/modal/file-upload-modal.vue","../src/component/yqg-simple-form/constant/image-upload-form-options.js","../src/component/yqg-simple-form/modal/image-upload-modal.vue","../src/util/keyCodeMap.js","../src/component/yqg-simple-form/component/field-md-editor/action/bold.js","../src/component/yqg-simple-form/component/field-md-editor/action/code.js","../src/component/yqg-simple-form/component/field-md-editor/action/header.js","../src/component/yqg-simple-form/component/field-md-editor/action/italic.js","../src/component/yqg-simple-form/component/field-md-editor/action/link.js","../src/component/yqg-simple-form/component/field-md-editor/action/quote.js","../src/component/yqg-simple-form/component/field-md-editor/action/tab.js","../src/component/yqg-simple-form/component/field-md-editor/action/untab.js","../src/component/yqg-simple-form/component/field-md-editor/action/ytube.js","../src/component/yqg-simple-form/component/field-md-editor/component/md-editor.vue","../src/component/yqg-simple-form/component/field-md-editor/component/md-view.vue","../src/component/yqg-simple-form/component/field-md-editor/index.vue","../src/component/yqg-simple-form/component/field-radio.vue","../src/component/yqg-simple-form/constant/audio-upload-form-options.js","../src/component/yqg-simple-form/modal/audio-upload-modal.vue","../src/component/yqg-simple-form/component/field-rich/inline-color-btn.vue","../src/component/yqg-simple-form/component/field-rich/inline-font-size-btn.vue","../src/component/yqg-simple-form/component/field-rich/mark/alignment.js","../src/component/yqg-simple-form/component/field-rich/mark/inline-style.js","../src/component/yqg-simple-form/component/field-rich/node/anchor.js","../src/component/icons/custom/custom-table.js","../src/component/icons/custom/custom-delete-table.js","../src/component/icons/custom/custom-add-col-before.js","../src/component/icons/custom/custom-add-col-after.js","../src/component/icons/custom/custom-delete-col.js","../src/component/icons/custom/custom-add-row-before.js","../src/component/icons/custom/custom-add-row-after.js","../src/component/icons/custom/custom-delete-row.js","../src/component/icons/custom/custom-combine-cells.js","../src/component/icons/custom/custom-plus-antd.js","../src/component/icons/custom/custom-eye.js","../src/component/icons/custom/custom-eye-invisible.js","../src/component/icons/custom/custom-plus.js","../src/component/icons/custom/custom-minus.js","../src/component/icons/custom/custom-mute.js","../src/component/icons/custom/custom-unmuted.js","../src/component/icons/custom/custom-dial-keyboard.js","../src/component/yqg-simple-form/component/field-rich/node/ant-icon.js","../src/component/yqg-simple-form/component/field-rich/node/audio.js","../src/component/yqg-simple-form/component/field-rich/index.vue","../src/filter/count-to-time.js","../src/filter/date.js","../src/filter/mardown-to-html.ts","../src/filter/number-with-commas.ts","../src/filter/percent.js","../src/filter/phone-mask.js","../src/filter/index.js","../src/index.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign?Object.assign.bind():function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=[].concat(d,e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=[].concat(g,h)}else c[b][f]=a[b][f];}else if(\"hook\"===b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","export default {\n text: 'text', // default field type\n number: 'number',\n color: 'color',\n textarea: 'textarea',\n date: 'date',\n dateTime: 'dateTime',\n dateRange: 'dateRange',\n month: 'month',\n switch: 'switch',\n select: 'select',\n virtualSelect: 'virtualSelect',\n tree: 'tree',\n checkbox: 'checkbox',\n radio: 'radio',\n file: 'file',\n code: 'code',\n sql: 'sql',\n buttonGroup: 'buttonGroup',\n markdown: 'markdown',\n time: 'time',\n rich: 'rich',\n autoComplete: 'autoComplete',\n group: 'group',\n cascader: 'cascader'\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2021-04-07 15:27:57\n * @Last Modified by: yuhaoyang\n * @Last Modified time: 2023-05-23 12:06:16\n */\n\nimport Vue from 'vue';\nimport {mapGetters} from 'vuex';\n\nimport Enum from '@yqg/enum';\n\nimport DefType from '../constant/def-type.js';\n\nconst getText = ({map, enumType, value, seperator = '\\n'}) => {\n if (value === null || value === undefined) return value;\n\n if (value.constructor === Array) {\n return value.map(val => (enumType?.getText(val) || map?.[val] || val)).join(seperator);\n }\n\n return enumType?.getText(value) || map?.[value] || value;\n};\n\nconst getTreeNodeLabel = (value, tree, idKey = 'value', nameKey = 'name') => {\n let str;\n for (const node of tree) {\n if (node[idKey] === value) {\n str = node[nameKey];\n break;\n }\n\n if (node.children?.length) {\n const tmp = getTreeNodeLabel(value, node.children, idKey, nameKey);\n if (tmp) {\n str = tmp;\n break;\n }\n }\n }\n\n return str;\n};\n\nconst getTreeText = ({enumType, value, seperator = '\\n', idKey, nameKey}) => {\n if (value === null || value === undefined) return value;\n const tree = enumType.LIST;\n if (value.constructor === Array) {\n return value.map(val => getTreeNodeLabel(val, tree, idKey, nameKey)).join(seperator);\n }\n\n return getTreeNodeLabel(value, tree, idKey, nameKey) || value;\n};\n\nexport default {\n inject: {\n timestamp: {\n default: undefined\n }\n },\n\n computed: {\n ...mapGetters(['timezone']),\n\n isTimestamp() {\n return this.def.timestamp ?? ((this.$app?.timestamp ?? this.timestamp) !== false);\n }\n },\n\n methods: {\n genText({\n fallback, enumType, mapKey, value: text,\n def: {type, seperator, enumOptions, timezone: defTz, filter, nameKey, idKey, filterParams}\n }) {\n const {timezone, isTimestamp} = this;\n if (enumType) {\n text = type === 'tree'\n ? getTreeText({enumType, value: text, seperator, nameKey, idKey})\n : getText({enumType, value: text, seperator});\n }\n\n if (mapKey) {\n let tMap = this.$t(mapKey);\n if (tMap.constructor === Array) {\n tMap = Enum.fromArray(mapKey, enumOptions).MAP;\n }\n\n text = getText({map: tMap, value: text, seperator});\n }\n\n if (isTimestamp) {\n // date\n if (type === DefType.date) {\n filter = filter || 'date';\n }\n\n // dateTime\n if (type === DefType.dateTime) {\n filter = 'dateTime';\n }\n\n // time\n if (type === DefType.time) {\n filter = 'time';\n }\n }\n\n if (filter) {\n if (['time', 'dateTime', 'date'].includes(filter)) {\n text = Vue.filter(filter)(text, defTz || timezone);\n } else {\n text = Vue.filter(filter)(text, filterParams);\n }\n }\n\n return (text || text === 0 || text === false) ? text : fallback;\n }\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2019-12-07 14:00:32\n * @Last Modified by: mengpeng \n * @Last Modified time: 2022-11-10 15:39:31 \n */\n\nexport const evalProp = (value, values) => {\n if (typeof value === 'function') {\n return value(values);\n }\n\n return value;\n};\n\nconst getKeys = (keyString = '') => keyString.split(/\\]?[[.]/);\n\nexport const pickValue = (obj, keyString) => {\n const keys = getKeys(keyString);\n let value = obj;\n try {\n keys.forEach(key => (value = value[key]));\n } catch (err) {\n value = undefined;\n }\n\n return value;\n};\n\nexport const setValue = (obj = {}, keyString, value) => {\n const keys = getKeys(keyString);\n const result = {...obj};\n let target = result;\n keys.forEach((key, idx) => {\n if (idx === keys.length - 1) {\n target[key] = value;\n } else {\n if (!target[key]) {\n const nextKey = keys[idx + 1];\n if (/^\\d+$/.test(nextKey) && new RegExp(`${key}]?[${nextKey}]`).test(keyString)) {\n target[key] = [];\n } else {\n target[key] = {};\n }\n }\n\n target = target[key];\n }\n });\n\n return result;\n};\n\nexport const spreadObjectKeys = origin => {\n if (!origin) return origin;\n\n return Object.entries(origin)\n .reduce((acc, [key, value]) => setValue(acc, key, value), {});\n};\n\nconst numberToStr = val => {\n if ((val || val === 0 || val === false) && (val.constructor === Number || val.constructor === Boolean)) {\n return val.toString();\n }\n\n return val;\n};\n\nexport const numbersToStr = val => {\n if (val && val.constructor === Array) {\n return val.map(numberToStr);\n }\n\n return numberToStr(val);\n};\n\nexport const isMobile = /mobile/i.test(navigator.userAgent);\n\nexport function spreadProps({class: className, style, ref, key, ...props} = {}) {\n return {\n key,\n class: className,\n style,\n ref,\n props\n };\n}\n\nexport function appendClass(className, appendix) {\n // 目前只支持append string\n if (typeof appendix !== 'string') return className;\n\n if (!className) return appendix;\n\n switch (className.constructor) {\n case String:\n return `${className} ${appendix}`;\n case Object:\n return {...className, [appendix]: true};\n case Array:\n return [...className, appendix];\n }\n\n return className;\n}\n\nconst isPlainObject = obj => {\n if (obj === null || Array.isArray(obj)) {\n return false;\n }\n\n return typeof obj === 'object';\n};\n\nconst customizer = (target, source) => {\n //对象需要考虑深层对象\n if (isPlainObject(target) && isPlainObject(target)) {\n return merge(target, source);\n }\n\n //其他格式一律返回新值\n return source;\n};\n\n//两两合并\nexport const merge = (target = {}, source = {}) => {\n const res = {};\n [...Object.keys(target), ...Object.keys(source)]\n .forEach(key => {\n const val = customizer(target[key], source[key]);\n\n res[key] = typeof val === 'undefined' ? target[key] : val;\n });\n\n return res;\n};\n","<!-- @Author: xiaodongyu -->\n<!-- @Date: 2019/11/1-17:18 -->\n<!-- @Last Modified by: xiaodongyu -->\n<!-- @Last Modified time: 2024-05-14 15:01:18 -->\n\n<script type=\"text/babel\">\nimport Enum from '@yqg/enum';\n\nimport DefType from '../constant/def-type.js';\nimport genText from '../mixin/gen-text.js';\nimport {evalProp, spreadProps} from '../util/object.js';\n\nexport default {\n name: 'DefValue',\n\n mixins: [genText],\n\n props: {\n ctx: {\n type: Object,\n default: () => ({})\n },\n def: {\n type: Object,\n required: true\n },\n value: {\n type: [String, Number, Array, Boolean, Object],\n default: ''\n },\n values: {\n type: Object,\n default: () => ({})\n },\n record: {\n type: Object,\n default: () => ({})\n },\n defaultText: {\n type: String,\n default: ''\n }\n },\n\n data() {\n return {\n mapKey: '',\n enumType: null\n };\n },\n\n computed: {\n comp() {\n const {value, def: {type}} = this;\n\n return (value && value.constructor === Array)\n || type === DefType.textarea\n || type === DefType.code ? 'pre' : 'span';\n },\n\n text() {\n // from mixin\n return this.genText(this);\n },\n\n staticProps() {\n const {def: {staticProps}} = this;\n\n return evalProp(staticProps, this);\n },\n\n fallback() {\n return this.def?.defaultText ?? this.defaultText;\n }\n },\n\n async mounted() {\n let {enumType} = this.def;\n\n if (enumType) {\n enumType = evalProp(enumType, this);\n\n if (!enumType) return;\n\n if (typeof enumType === 'string') {\n this.mapKey = enumType;\n\n return;\n }\n\n // 传对象\n if (typeof enumType.populate !== 'function') {\n enumType = Enum.from(enumType);\n }\n\n this.enumType = enumType;\n\n // handle fetchable Enum\n const {QUERY_PROMISE, query, MAP: previousMap} = enumType;\n const queryPromise = QUERY_PROMISE || (query && query());\n if (queryPromise) {\n await queryPromise;\n // if Enum repopulated, reassign enumType to trigger rerender\n if (previousMap !== enumType.MAP) {\n this.enumType = enumType;\n }\n }\n }\n },\n\n render() {\n const {\n $scopedSlots: {default: defaultSlot},\n comp: Comp, def: {type, formOptions, tableOptions, divider}, staticProps, text, value, fallback, ctx\n } = this;\n if (defaultSlot) {\n return defaultSlot({...this, ...this.staticProps});\n }\n\n if (type === 'markdown') {\n return (\n <div\n class=\"def-value\"\n domPropsInnerHTML={text}\n {...(staticProps && spreadProps(staticProps))}\n />\n );\n }\n\n if (type === 'rich') {\n return (\n <div\n class=\"def-value-rich\"\n domPropsInnerHTML={value}\n {...(staticProps && spreadProps(staticProps))}\n />\n );\n }\n\n if (formOptions) {\n const list = value?.map?.((formVal, idx) => {\n const item = <yqg-static-form\n ctx={ctx}\n key={idx}\n options={{layout: 'inline', ...formOptions}}\n values={formVal}\n scopedSlots={this.$scopedSlots}\n />;\n\n return divider ? (\n <div>\n {item}\n <a-divider/>\n </div>\n ) : item;\n });\n\n return (\n <div>{list?.length && list || fallback}</div>\n );\n }\n\n if (tableOptions) {\n return value?.length ? (\n <yqg-simple-table\n options={tableOptions}\n records={value}\n pagination={false}\n scopedSlots={this.$scopedSlots}\n />\n ) : <div>{fallback}</div>;\n }\n\n return (\n <Comp\n class=\"def-value\"\n {...(staticProps && spreadProps(staticProps))}\n >\n {text}\n </Comp>\n );\n }\n};\n</script>\n<style lang=\"scss\" scoped>\n@import \"./yqg-simple-form/component/field-rich/rich.scss\";\n\n.def-value {\n margin: 0;\n\n &-rich ::v-deep {\n line-height: 1.5;\n\n @include rich;\n }\n}\n</style>\n","function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\nexport default normalizeComponent;\n//# sourceMappingURL=normalize-component.mjs.map\n","const isOldIE = typeof navigator !== 'undefined' &&\r\n /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n return (id, style) => addStyle(id, style);\r\n}\r\nlet HEAD;\r\nconst styles = {};\r\nfunction addStyle(id, css) {\r\n const group = isOldIE ? css.media || 'default' : id;\r\n const style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });\r\n if (!style.ids.has(id)) {\r\n style.ids.add(id);\r\n let code = css.source;\r\n if (css.map) {\r\n // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n // this makes source maps inside style tags work properly in Chrome\r\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */';\r\n // http://stackoverflow.com/a/26603875\r\n code +=\r\n '\\n/*# sourceMappingURL=data:application/json;base64,' +\r\n btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +\r\n ' */';\r\n }\r\n if (!style.element) {\r\n style.element = document.createElement('style');\r\n style.element.type = 'text/css';\r\n if (css.media)\r\n style.element.setAttribute('media', css.media);\r\n if (HEAD === undefined) {\r\n HEAD = document.head || document.getElementsByTagName('head')[0];\r\n }\r\n HEAD.appendChild(style.element);\r\n }\r\n if ('styleSheet' in style.element) {\r\n style.styles.push(code);\r\n style.element.styleSheet.cssText = style.styles\r\n .filter(Boolean)\r\n .join('\\n');\r\n }\r\n else {\r\n const index = style.ids.size - 1;\r\n const textNode = document.createTextNode(code);\r\n const nodes = style.element.childNodes;\r\n if (nodes[index])\r\n style.element.removeChild(nodes[index]);\r\n if (nodes.length)\r\n style.element.insertBefore(textNode, nodes[index]);\r\n else\r\n style.element.appendChild(textNode);\r\n }\r\n }\r\n}\n\nexport default createInjector;\n//# sourceMappingURL=browser.mjs.map\n","<!-- @author youboli -->\n<!-- @email youboli@yangqianguan.com -->\n<!-- @date 2022-11-02 11:48:22 -->\n<!-- @desc yqg-card-list -->\n\n<script>\n\n import _ from 'underscore';\n\n const DEFAULT_PAGINATION = {\n pageSize: 12,\n pageSizeOptions: ['12', '24', '48', '96', '192'],\n showSizeChanger: true\n };\n\n export default {\n name: 'YqgCardList',\n\n props: {\n records: {\n type: Array,\n default: () => ([])\n },\n\n options: {\n type: Object,\n default: () => ({})\n },\n\n pagination: {\n type: [Boolean, Object],\n default: () => ({})\n },\n\n defaultPagination: {\n type: Object,\n default: () => DEFAULT_PAGINATION\n }\n },\n\n data() {\n return {\n clientSearchInput: '',\n innerPagination: null\n };\n },\n\n computed: {\n enableClientSearch() {\n return this.options.enableClientSearch && !!this.records?.length;\n },\n\n activeRecords() {\n const {records, clientSearchInput} = this;\n if (!records) return null;\n if (!clientSearchInput) return records;\n\n // 1. 客户端搜索,只从接口返回中搜索\n return this.records.filter(record => JSON.stringify(record).includes(clientSearchInput));\n }\n },\n\n watch: {\n enableClientSearch() {\n if (this.options?.defaultSearchValue && this.enableClientSearch) {\n this.onClientSearch(this.options.defaultSearchValue);\n }\n }\n },\n\n methods: {\n getWrappedSlots(slotsMapping, context, scope) {\n const wrappedSlots = Object.entries(slotsMapping).reduce((acc, [slotName, slot]) => {\n if (!_.isFunction(slot)) return {...acc, [slotName]: null};\n\n return {\n ...acc,\n [slotName]: (\n <template slot={slotName}>\n {slot.bind(context, scope)()}\n </template>\n )\n };\n }, {});\n\n return Object.values(wrappedSlots);\n },\n\n renderItem(record, index) {\n const {$scopedSlots} = this;\n const {itemTitle, itemExtra, itemActions, itemContent} = $scopedSlots;\n\n // 将 a-card 的 slots 对外暴露为名字为 item* 的 scopedSlots\n const [title, extra, actions, defaultSlot] = this.getWrappedSlots(\n {\n title: itemTitle,\n extra: itemExtra,\n actions: itemActions,\n default: itemContent || $scopedSlots.default\n },\n this,\n {record, index}\n );\n\n return (\n <a-list-item class=\"yqg-card-list-item\">\n <a-card>\n {title}\n {extra}\n {actions}\n {defaultSlot}\n </a-card>\n </a-list-item>\n );\n },\n\n getPagiantion() {\n const {pagination, defaultPagination, innerPagination} = this;\n\n if (pagination === false) return pagination;\n if (pagination?.pageNo) pagination.current = pagination.pageNo;\n\n return {\n ...defaultPagination,\n showTotal: (total, range) => `${range.join('-')}个, 共${total}个`,\n onChange: (current, pageSize) => this.onPaginationChange({pageSize, current}),\n onShowSizeChange: (current, pageSize) => this.onPaginationChange({pageSize, current}),\n ...pagination,\n ...innerPagination\n };\n },\n\n onPaginationChange(pagination) {\n const {pageNo, current, pageSize} = pagination;\n if (pageNo === current && pageSize === this.pagination.pageSize) return;\n\n pagination.pageNo = current;\n this.innerPagination = pagination;\n this.$emit('change', pagination);\n },\n\n renderClientSearch() {\n return (\n <a-input-search\n defaultValue={this.options?.defaultSearchValue}\n class=\"client-search\"\n placeholder=\"表内搜索\"\n onSearch={this.onClientSearch}\n />\n );\n },\n\n onClientSearch(value) {\n this.clientSearchInput = value ? value.trim() : '';\n\n this.$emit('search', this.clientSearchInput);\n }\n },\n\n render() {\n const {activeRecords, enableClientSearch, renderItem, $scopedSlots, $attrs} = this;\n\n if (!activeRecords) return null;\n\n const pagination = this.getPagiantion();\n\n return (\n <div class=\"yqg-card-list\">\n {enableClientSearch && this.renderClientSearch()}\n {\n !activeRecords.length\n ? <a-empty />\n : (\n <a-list\n data-source={activeRecords}\n grid={{column: 4, gutter: 16}}\n pagination={pagination}\n scopedSlots={{renderItem, ...$scopedSlots}}\n {...{props: $attrs}}\n />\n )\n }\n </div>\n );\n }\n };\n\n</script>\n\n<style lang=\"scss\" scoped>\n .yqg-card-list {\n margin-top: 20px;\n\n .client-search {\n width: 200px;\n margin-bottom: 10px;\n }\n\n .ant-empty {\n padding: 16px;\n border: 1px solid #e8e8e8;\n }\n\n ::v-deep .ant-list {\n .ant-list-pagination {\n text-align: left;\n }\n }\n\n ::v-deep .ant-card {\n &-head {\n position: relative;\n min-height: 36px;\n padding: 0 12px;\n\n &-title {\n padding: 8px 0;\n }\n\n &::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n width: 100%;\n height: 2px;\n background-color: #48b;\n }\n }\n\n &-body {\n height: 150px;\n padding: 12px;\n overflow-y: auto;\n\n .ant-form.yqg-static-form {\n .ant-form-item {\n &-label {\n padding-bottom: 0;\n }\n\n &-control {\n line-height: 1.2;\n }\n\n label {\n font-size: 12px;\n color: rgba(0, 0, 0, 65%);\n }\n }\n }\n }\n\n &-actions {\n li {\n margin: 6px 0;\n\n > span {\n display: flex;\n justify-content: space-between;\n\n .ant-btn,\n > span {\n flex: 1;\n\n &:not(:last-of-type) {\n border-right: 1px solid #e8e8e8;\n }\n }\n }\n }\n }\n }\n }\n\n</style>\n","/*\n * @Author: YQG Team\n * @Date: 2024-12-19\n * @Description: JSON utility functions\n */\n\n/**\n * Convert value to pure JSON string\n * @param {any} value - The value to convert\n * @returns {string} JSON string\n */\nexport const pureJSONString = (value) => {\n try {\n return JSON.stringify(value, null, 2);\n } catch (error) {\n console.error('Error converting to JSON string:', error);\n return String(value);\n }\n};\n\n/**\n * Reformat JSON string\n * @param {string} value - The JSON string to reformat\n * @param {Object} context - Component context\n * @returns {string} Reformatted JSON string\n */\nexport const reformatJson = (value, context) => {\n try {\n // Parse and re-stringify to format properly\n const parsed = JSON.parse(value);\n return JSON.stringify(parsed, null, 2);\n } catch (error) {\n console.error('Error reformatting JSON:', error);\n // If parsing fails, return original value\n return value;\n }\n};\n","<!-- @author Kyles Light -->\n<!-- @email kuilin@yangqianguan.com -->\n<!-- @date 2018-03-28 15:20:38.000 -->\n<!-- @desc generated by yqg-cli@0.0.18 -->\n\n<template>\n <div class=\"yqg-code-textarea\">\n <codemirror\n ref=\"cm\"\n :value=\"value\"\n :options=\"CodeMirrorOptions\"\n v-on=\"$listeners\"\n />\n <a-button\n v-if=\"reformatJson\"\n style=\"margin-top: 10px;\"\n @click=\"reformatJSON()\"\n >\n Reformat JSON\n </a-button>\n </div>\n</template>\n\n<script type=\"text/babel\">\n\nimport {codemirror} from 'vue-codemirror';\n// 先导入 CodeMirror 主库,插件依赖它\nimport CodeMirror from 'codemirror';\n\nimport {pureJSONString, reformatJson} from '../../util/json.js';\n\nimport 'codemirror/mode/clike/clike.js';\nimport 'codemirror/mode/groovy/groovy.js';\nimport 'codemirror/mode/javascript/javascript.js';\nimport 'codemirror/mode/sql/sql.js';\nimport 'codemirror/mode/yaml/yaml.js';\nimport 'codemirror/mode/xml/xml.js';\nimport 'codemirror/lib/codemirror.css';\nimport 'codemirror/theme/neo.css';\nimport 'codemirror/addon/hint/show-hint.css';\nimport 'codemirror/addon/display/placeholder.js';\n\nimport 'codemirror/addon/edit/closebrackets.js';\nimport 'codemirror/addon/edit/closetag.js';\nimport 'codemirror/addon/edit/matchbrackets.js';\nimport 'codemirror/addon/edit/matchtags.js';\nimport 'codemirror/addon/hint/show-hint.js';\nimport 'codemirror/addon/hint/sql-hint.js';\nimport 'codemirror/addon/fold/foldgutter.css';\nimport 'codemirror/addon/fold/foldcode.js';\nimport 'codemirror/addon/fold/foldgutter.js';\nimport 'codemirror/addon/fold/brace-fold.js';\nimport 'codemirror/addon/fold/comment-fold.js';\nimport 'codemirror/addon/fold/indent-fold.js';\n\nconst CodeMirrorOptions = {\n // Configuration\n indentUnit: 4,\n smartIndent: false, // TODO by panezhang use JSON-LD mode and enable smartIndent\n tabSize: 4,\n lineWrapping: true,\n\n // Addon Configuration\n autoCloseBrackets: true,\n autoCloseTags: true,\n matchBrackets: true,\n matchTags: true,\n\n extraKeys: {\n 'Tab': cm => {\n if (cm.somethingSelected()) {\n cm.indentSelection('add');\n\n return;\n }\n\n if (cm.getOption('indentWithTabs')) {\n cm.replaceSelection('\\t', 'end', '+input');\n } else {\n cm.execCommand('insertSoftTab');\n }\n },\n\n 'Shift-Tab': cm => {\n cm.indentSelection('subtract');\n }\n\n // TODO by panezhang reformat\n // 'Alt-Cmd-L': () => {\n //\n // }\n }\n};\n\nexport default {\n name: 'YqgCodeTextarea',\n\n components: {\n codemirror\n },\n\n props: {\n value: {\n type: String,\n required: true\n },\n\n mode: {\n type: String,\n default: 'text/javascript'\n },\n\n disabled: {\n type: Boolean,\n default: false\n },\n\n options: {\n type: Object,\n default: () => ({})\n },\n // Reformat JSON的按钮\n reformatJson: {\n type: Boolean,\n default: false\n }\n },\n\n computed: {\n CodeMirrorOptions() {\n const {options, mode, disabled} = this;\n\n return {\n ...CodeMirrorOptions,\n mode,\n ...options,\n ...disabled ? {\n // disabled: 禁止输入、隐藏光标、可以复制\n // ref: https://github.com/codemirror/CodeMirror/issues/2568\n readOnly: true,\n cursorBlinkRate: -1\n } : {}\n };\n },\n\n codeMirror() {\n return this.$refs.cm.codemirror;\n }\n },\n\n mounted() {\n if (this.CodeMirrorOptions.enableAutocomplete) {\n this.codeMirror.on('change', (editor, {origin, text}) => {\n if (origin === '+input' && text.length === 1 && text[0].trim()) {\n editor.showHint({\n completeSingle: false\n });\n }\n });\n }\n },\n\n methods: {\n reformatJSON() {\n const {value} = this;\n try {\n pureJSONString(value);\n this.$emit('input', reformatJson(value, this));\n } catch (error) {\n // ignore\n }\n }\n }\n};\n\n</script>\n\n<style lang=\"scss\" src=\"./index.scss\" />\n","<!-- @Author: xymo -->\n<!-- @Date: 2024-01-04 14:45:38 -->\n<!-- @Last Modified by: xymo -->\n<!-- @Last Modified time: 2024-01-04 14:45:38 -->\n\n<template>\n <div\n v-if=\"showSwitch\"\n class=\"yqg-environment-switch\"\n >\n <a-button\n type=\"primary\"\n @click=\"switchEnv\"\n >\n {{ buttonText }}\n </a-button>\n </div>\n</template>\n\n<script type=\"text/babel\">\n import StageUtil from 'yqg-common/core/StageUtil';\n\n export default {\n name: 'YqgEnvSwitch',\n\n props: {\n // 用于指定测试环境和生产环境的域名\n // 例如:{prod: 'https://prod.yqg.com', test: 'https://test.yqg.com'}\n hostMap: {\n type: Object,\n required: true\n }\n },\n\n data() {\n return {\n isProd: StageUtil.isProdEnv(),\n isTest: StageUtil.isTestEnv()\n };\n },\n\n computed: {\n buttonText() {\n return this.isProd ? '切换到测试环境' : '切换到生产环境';\n },\n\n showSwitch() {\n return this.isProd || this.isTest;\n }\n },\n\n methods: {\n switchEnv() {\n const {$route: {fullPath = ''}} = this;\n const host = this.isProd ? this.hostMap.test : this.hostMap.prod;\n\n window.location.href = `${host}${fullPath}`;\n }\n\n }\n };\n\n</script>\n","<!-- @Author mengpeng -->\n<!-- @Date: 2022-01-29 16:51:07 -->\n<!-- @Last Modified by: mengpeng -->\n<!-- @Last Modified time: 2022-02-07 15:29:33 -->\n\n<template>\n <div class=\"yqg-infinite-pagination\">\n <a-button\n class=\"ant-pagination-prev\"\n :disabled=\"!hasPrev\"\n icon=\"left\"\n @click=\"prev\"\n />\n <span class=\"ant-pagination-item\">{{ current }}</span>\n <a-button\n class=\"ant-pagination-next\"\n :disabled=\"!hasNext\"\n icon=\"right\"\n @click=\"next\"\n />\n <a-select\n v-if=\"showSizeChanger\"\n :default-value=\"pagination.pageSize\"\n class=\"ant-pagination-options\"\n :options=\"genOptions\"\n @change=\"changePageSize\"\n />\n </div>\n</template>\n\n<script>\nconst defaultPageSizeOptions = ['10', '20', '50', '100', '200'];\n\nexport default {\n name: 'YqgInfinitePagination',\n\n props: {\n pagination: {\n type: Object,\n required: true\n },\n dataSize: {\n type: Number,\n required: true\n },\n showSizeChanger: {\n type: Boolean,\n default: true\n }\n },\n\n data() {\n return {\n current: 1\n };\n },\n\n computed: {\n hasPrev({current}) {\n return current > 1;\n },\n\n hasNext({pagination: {pageSize}, dataSize}) {\n return dataSize === Number(pageSize);\n },\n\n genOptions({pagination: {pageSizeOptions = defaultPageSizeOptions}}) {\n return pageSizeOptions.map(value => ({value: Number(value), label: `${value} 条/页`}));\n }\n },\n\n watch: {\n 'pagination.pageNo'(current) {\n this.current = current;\n }\n },\n\n methods: {\n prev() {\n if (this.hasPrev) {\n this.changePage(this.current - 1);\n }\n },\n\n next() {\n if (this.hasNext) {\n this.changePage(this.current + 1);\n }\n },\n\n changePage(page) {\n const {\n pagination: {pageSize}\n } = this;\n const pageNo = page < 1 ? 1 : page;\n this.current = pageNo;\n this.$emit('change', {pageNo, pageSize, current: this.current});\n },\n\n changePageSize(pageSize) {\n const current = 1;\n this.$emit('change', {pageNo: current, pageSize: Number(pageSize), current});\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.yqg-infinite-pagination {\n margin: 16px 0;\n display: table;\n}\n</style>\n","/*\n * @Author: mengpeng\n * @Date: 2022-11-10 10:42:00\n * @Last Modified by: mengpeng \n * @Last Modified time: 2022-11-10 11:07:34 \n */\n\nimport {evalProp} from '../util/object.js';\n\nexport default {\n props: {\n dynamicProps: {\n type: Boolean,\n default: false\n }\n },\n\n methods: {\n getCompProps(params) {\n const {def: {staticProps}} = params;\n const {dynamicProps} = this;\n\n return {\n ...params,\n ...(dynamicProps ? evalProp(staticProps, params) : {})\n };\n }\n },\n};\n","<!-- @author ruiwang-->\n<!-- @email ruiwang@yangqianguan.com -->\n<!-- @date 2021-04-15 13:48:35 -->\n<!-- @desc yqg-info-table-next.vue -->\n\n<script type=\"text/babel\">\nimport staticProps from '../mixin/static-props.js';\nimport {pickValue} from '../util/object.js';\n\nexport default {\n name: 'YqgInfo',\n\n mixins: [staticProps],\n\n inject: {\n isValidDef: {default: () => x => x}\n },\n\n props: {\n ctx: {\n type: Object,\n default: () => ({})\n },\n options: {\n type: Object,\n default: () => ({})\n },\n column: {\n type: Number,\n default: 6\n },\n values: {\n type: Object,\n default: () => ({})\n }\n },\n\n computed: {\n comProps() {\n const {column, options: {colDefs, layout = 'vertical', ...rest}} = this; // eslint-disable-line\n\n return {\n bordered: true,\n layout,\n column,\n ...rest\n };\n }\n },\n\n methods: {\n getDefValueProps(def) {\n const {ctx, values} = this;\n const {field} = def;\n const value = pickValue(values, field);\n const infoCtx = {\n ctx,\n def,\n value,\n values,\n record: values,\n defaultText: '/'\n };\n\n return this.getCompProps(infoCtx);\n },\n\n renderCell(def) {\n const {$scopedSlots} = this;\n const {field: key} = def;\n const props = this.getDefValueProps(def);\n if ($scopedSlots[key]) return $scopedSlots[key](props);\n\n const comp = def.staticComp || 'def-value';\n\n return <comp {...{props}} />;\n }\n },\n\n render() {\n const {options: {colDefs}, comProps: props} = this;\n const items = colDefs.map(def => (\n <a-descriptions-item key={def.field} label={this.$t(def.label)} span={def.span}>\n {this.renderCell(def)}\n </a-descriptions-item>\n ));\n\n return (\n <a-descriptions {...{props}}>\n {items}\n </a-descriptions>\n );\n }\n};\n</script>\n","<!-- @Author: ruiwang -->\n<!-- @Date: 2020-3-13 14:12:44 -->\n<!-- @Last Modified by: shaotanliang -->\n<!-- @Last Modified time: 2023-10-08 16:37:47 -->\n\n<template>\n <div class=\"ant-table ant-table-bordered\">\n <div class=\"ant-table-body\">\n <table\n class=\"info-table\"\n style=\"table-layout: fixed;\"\n >\n <template v-for=\"(group, groupIdx) in tableOptions\">\n <thead\n :key=\"groupIdx\"\n class=\"ant-table-thead\"\n >\n <tr :key=\"groupIdx\">\n <th\n v-for=\"({label, headerTip}, idx) in group\"\n :key=\"idx\"\n >\n {{ $t(label) }}\n <a-tooltip\n v-if=\"headerTip\"\n :trigger=\"headerTip.trigger || 'hover'\"\n :placement=\"headerTip.placement || 'top'\"\n >\n <template slot=\"title\">\n <span>{{ headerTip.content }}</span>\n </template>\n <a-icon\n type=\"question-circle\"\n :style=\"headerTip.style || {}\"\n />\n </a-tooltip>\n </th>\n </tr>\n </thead>\n <tbody\n :key=\"`tbody-${groupIdx}`\"\n class=\"ant-table-tbody\"\n >\n <tr>\n <td\n v-for=\"(def, idx) in group\"\n :key=\"idx\"\n >\n <slot\n :name=\"def.field\"\n v-bind=\"{def, value: pickValue(tableData, def.field), record: tableData, defaultText: '/'}\"\n >\n <component\n :is=\"def.staticComp || 'def-value'\"\n v-bind=\"getCompProps({def, value: pickValue(tableData, def.field), record: tableData, defaultText: '/'})\"\n />\n </slot>\n </td>\n </tr>\n </tbody>\n </template>\n </table>\n </div>\n </div>\n</template>\n\n<script>\nimport _ from 'underscore';\n\nimport staticProps from '../mixin/static-props.js';\nimport {pickValue} from '../util/object.js';\n\nexport default {\n name: 'YqgInfoTable',\n\n mixins: [staticProps],\n\n props: {\n colNum: {\n type: Number,\n default: 6\n },\n\n tableTitle: {\n type: [Array],\n default: () => []\n },\n\n tableData: {\n type: [Object],\n default: () => ({})\n },\n\n options: {\n type: Object,\n default: () => ({})\n }\n },\n\n computed: {\n tableOptions() {\n const {colNum, options} = this;\n let {tableTitle} = this;\n tableTitle = tableTitle.map(({field, value, ...rest}) => ({field: field || value, ...rest}));\n\n return _.chunk((tableTitle.length && tableTitle) || options.colDefs, colNum);\n }\n },\n\n methods: {\n pickValue\n }\n};\n</script>\n\n<style lang=\"scss\">\n.info-table {\n th,\n td {\n font-size: 0.9em;\n white-space: unset !important;\n word-wrap: break-word;\n }\n}\n</style>\n","/*\n * @Author: xiaodongyu\n * @Date 2019-11-18 14:41:13\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2021-11-16 12:58:46\n */\n\nimport Vue from 'vue';\nimport {mapGetters} from 'vuex';\n\nconst NoWatermarkRouteNames = ['login'];\n\nexport default {\n computed: {\n ...mapGetters(['user'])\n },\n\n methods: {\n getBackgroundImage() {\n const {user: {name}, $route: {name: routeName}} = this;\n if (!name || NoWatermarkRouteNames.includes(routeName)) return {};\n\n const width = 260;\n const height = 180;\n const canvas = document.createElement('canvas');\n Object.assign(canvas, {width, height});\n\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(221,221,221, .6)';\n ctx.rotate(20 * (Math.PI / 180));\n ctx.font = 'normal 14px Microsoft Yahei';\n ctx.fillText(name, 20, 10);\n ctx.font = 'normal 12px Microsoft Yahei';\n ctx.fillText(Vue.filter('dateTime')(Date.now()), 20, 30);\n const imgUrl = canvas.toDataURL();\n const background = `url(${imgUrl}) 0 0 repeat, url(${imgUrl}) ${width / 2}px ${height / 2}px repeat`;\n\n return {background};\n }\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2019-12-13 17:27:37\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2019-12-13 17:28:28\n */\n\nexport default {\n props: {\n close: {\n type: Function,\n required: true\n },\n\n dismiss: {\n type: Function,\n required: true\n }\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2019-12-05 15:12:11\n * @Last Modified by: lwwshare\n * @Last Modified time: 2025-06-16 00:37:59\n */\n\nimport _ from 'underscore';\n\n// 使用这个的话,TableOptions没法放在$options里\nexport const tableSelection = (\n TableOptions,\n {disabled, title, width = 37, ...rowSelection} = {}\n) => ({\n data() {\n return {\n selectedRowKeys: [],\n selectedRows: []\n };\n },\n\n computed: {\n TableOptions() {\n return {\n rowSelection: {\n fixed: true,\n columnTitle: title,\n columnWidth: width,\n selectedRowKeys: this.selectedRowKeys,\n onChange: this.onTableSelectChange,\n getCheckboxProps: record => ({props: {disabled: disabled ? disabled(record) : false}}),\n ...rowSelection\n },\n ...TableOptions\n };\n }\n },\n\n methods: {\n onTableSelectChange(selectedRowKeys, selectedRows) {\n this.selectedRowKeys = selectedRowKeys;\n this.selectedRows = selectedRows;\n },\n\n clearSelectedRows() {\n this.selectedRowKeys = [];\n this.selectedRows = [];\n }\n }\n});\n\nexport default {\n data() {\n return {\n cond: null,\n pagination: {\n pageNo: 1,\n pageSize: 10,\n total: 0\n },\n sorter: {}\n };\n },\n\n computed: {\n params() {\n return {\n ...this.pagination,\n total: undefined,\n ...this.cond\n };\n }\n },\n\n methods: {\n onSearch({values} = {}) {\n this.pagination.pageNo = 1;\n this.cond = _.omit(values, value => value === '');\n // 检查 onRefresh 方法是否存在,避免调用不存在的方法\n if (typeof this.onRefresh === 'function') {\n this.onRefresh();\n }\n },\n\n onTableChange({pageSize, pageNo}, filters, sorter) {\n Object.assign(this.pagination, {pageSize, pageNo});\n this.sorter = sorter;\n // 检查 onRefresh 方法是否存在,避免调用不存在的方法\n if (typeof this.onRefresh === 'function') {\n this.onRefresh();\n }\n }\n }\n};\n","/*\n * @Author: ruiwang\n * @Date: 2020-07-08 14:17:29\n * @Last Modified by: ruiwang\n * @Last Modified time: 2020-09-09 18:14:54\n */\n\nimport table from './table.js';\n\nexport default {\n ...table,\n\n data() {\n return {\n cond: null,\n pagination: {\n pageNo: 1,\n pageSize: 50,\n total: 0\n }\n };\n },\n\n mounted() {\n this.$watch('$i18n.locale', this.onRefresh);\n }\n};\n","/*\n * @Author: ruiwang\n * @Date: 2020-09-18 14:00:04\n * @Last Modified by: ruiwang\n * @Last Modified time: 2020-09-18 14:32:02\n */\n\nexport default {\n data() {\n return {\n cond: null,\n pagination: {\n pageNo: 1,\n pageSize: 10,\n total: 0\n }\n };\n },\n\n computed: {\n params() {\n return {\n ...this.pagination,\n total: undefined,\n ...this.cond\n };\n }\n },\n\n methods: {\n onSearch({values} = {}) {\n this.pagination.pageNo = 1;\n this.cond = values;\n this.onRefresh();\n },\n\n onTableChange({pageSize, pageNo}) {\n Object.assign(this.pagination, {pageSize, pageNo});\n }\n }\n};\n","/*\n * @Author: ruiwang\n * @Date: 2020-09-07 17:29:02\n * @Last Modified by: ruiwang\n * @Last Modified time: 2024-11-04 16:21:03\n */\n\nimport Enum from '@yqg/enum';\n\nexport default {\n inject: {\n setCustomInitialValue: {\n default: null,\n },\n },\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n def: {\n type: Object,\n required: true,\n },\n\n enumType: {\n type: [String, Object],\n default: '',\n },\n\n optionDisabled: {\n type: Function,\n default: undefined,\n },\n },\n\n data() {\n return {\n list: [],\n wrappedEnumType: null,\n };\n },\n\n computed: {\n options() {\n const {\n list,\n optionDisabled,\n def: {props: {optionLabelProp} = {}},\n } = this;\n\n return list.map(option => {\n const {text, value, pinyin, shortPinyin, disabled} = option;\n\n return {\n ...(optionLabelProp && {\n [optionLabelProp]: option[optionLabelProp],\n }),\n label: text,\n value: `${value}`,\n pinyin,\n shortPinyin,\n disabled:\n typeof optionDisabled === 'function'\n ? optionDisabled?.(value, option)\n : disabled,\n };\n });\n },\n },\n\n watch: {\n enumType() {\n this.initData();\n },\n },\n\n mounted() {\n this.initData();\n const {enumType} = this;\n if (enumType?.query) {\n enumType.onRefresh?.(this.initData);\n\n if (this.$i18n) {\n this.$watch('$i18n.locale', () => {\n enumType.refresh?.();\n });\n }\n }\n },\n\n beforeDestroy() {\n const {enumType} = this;\n if (enumType?.query) {\n enumType.offRefresh?.(this.initData);\n }\n },\n\n methods: {\n genEnumTypeFromI18n() {\n const {def, enumType: originEnumtype} = this;\n let enumType = originEnumtype;\n if (this.$t(enumType).constructor === Array) {\n enumType = Enum.fromArray(\n this.$t(enumType),\n def.enumOptions\n );\n } else {\n enumType = Enum.from(this.$t(enumType));\n }\n\n return enumType;\n },\n\n refreshClientEnum() {\n const enumType = this.genEnumTypeFromI18n();\n this.wrappedEnumType = enumType;\n this.list = enumType.LIST;\n },\n\n async initData(searchValue) {\n const {def} = this;\n let {enumType} = this;\n let forceUpdate = false;\n if (!enumType) {\n enumType = Enum.from({});\n\n return;\n }\n\n switch (true) {\n case typeof enumType.populate === 'function':\n if (enumType.query) {\n await enumType.query(searchValue);\n forceUpdate = true;\n }\n\n break;\n case enumType.constructor === Object:\n enumType = Enum.from(enumType);\n break;\n case typeof enumType === 'string':\n enumType = this.genEnumTypeFromI18n();\n\n if (this.$i18n) {\n this.$watch('$i18n.locale', () => {\n this.refreshClientEnum();\n });\n }\n\n break;\n default:\n break;\n }\n\n this.wrappedEnumType = enumType;\n this.list = enumType.LIST;\n if (!this.value && def.defaultFirstItem) {\n let value;\n if (typeof def.defaultFirstItem === 'function') {\n value = def.defaultFirstItem(enumType);\n } else if (enumType.LIST[0] !== undefined) {\n [{value}] = enumType.LIST;\n }\n\n const initialValue = {[def.field]: value};\n this.setCustomInitialValue?.(initialValue, forceUpdate);\n }\n },\n },\n};\n","/*\n * @Author: youboli\n * @Date: 2022-11-02 21:10:38\n * @Last Modified by: youboli\n * @Last Modified time: 2022-11-02 21:17:26\n */\n\nimport _ from 'underscore';\n\nexport default {\n data() {\n return {\n scrollTop: false,\n cond: null,\n pagination: {\n pageNo: 1,\n pageSize: 12,\n total: 0\n }\n };\n },\n\n computed: {\n params() {\n return {\n ...this.pagination,\n total: undefined,\n ...this.cond\n };\n }\n },\n\n methods: {\n onRefresh() {\n this.$message.warn('请实现 onRefresh');\n },\n\n onSearch({values} = {}) {\n this.pagination.pageNo = 1;\n this.cond = _.omit(values, value => value === '');\n this.onRefresh();\n },\n\n onListChange({pageSize, pageNo}) {\n Object.assign(this.pagination, {pageSize, pageNo});\n this.onRefresh();\n if (this.scrollTop) window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n }\n }\n};\n","<!-- @author huayizhang -->\n<!-- @date 2023/02/06-15:47 -->\n<!-- @desc yqg-simple-drawer -->\n\n<template>\n <div class=\"yqg-simple-drawer yqg-drawer-wrapper\">\n <a-drawer\n v-for=\"({\n visible,\n drawerComponent,\n componentProps,\n dialogProps,\n close,\n dismiss,\n afterVisibleChange,\n getContainer\n }, key) in drawerMap\"\n :key=\"key\"\n v-bind=\"{\n visible,\n afterVisibleChange,\n destroyOnClose: true,\n width: 500,\n getContainer,\n ...drawerComponent.dialogProps,\n ...dialogProps\n }\"\n @close=\"dismiss\"\n >\n <component\n :is=\"drawerComponent\"\n v-bind=\"getDrawerComponentProps({\n drawerComponent,\n componentProps,\n close,\n dismiss\n })\"\n v-on=\"{\n close,\n dismiss,\n ...(componentProps && componentProps.vOn)\n }\"\n />\n </a-drawer>\n </div>\n</template>\n\n<script type=\"text/babel\">\n\n import Vue from 'vue';\n\n import {modal as drawer} from '../mixin/index.js';\n\n let count = 0;\n\n export default {\n name: 'YqgSimpleDrawer',\n\n data() {\n return {\n drawerMap: {}\n };\n },\n\n beforeCreate() {\n this.$nextTick(() => {\n if (count > 1) throw new Error('YqgSimpleDrawer is singleton pattern!');\n });\n\n count += 1;\n },\n\n created() {\n const {open, clearDrawers, closeDrawers, $router} = this;\n Vue.prototype.$drawer = {\n open,\n clearDrawers,\n closeDrawers\n };\n $router.beforeEach((from, to, next) => {\n clearDrawers();\n next();\n });\n },\n\n beforeDestroy() {\n count -= 1;\n },\n\n methods: {\n open(drawerComponent, componentProps, options) {\n const {drawerMap, closeDrawer, clearDrawer} = this;\n const {dialogProps, getContainer} = options || {};\n\n return new Promise((resolve, reject) => {\n const key = `${drawerComponent.name}-${Object.keys(drawerMap).length}`;\n const close = (...args) => {\n closeDrawer(key);\n resolve(...args);\n };\n\n const dismiss = (...args) => {\n closeDrawer(key);\n reject(...args);\n };\n\n const afterVisibleChange = visible => {\n // 关闭动画完成后销毁\n if (!visible) clearDrawer(key);\n };\n\n // 先渲染,再显示,这样可以保证开启动画能够正常显示\n this.$set(this.drawerMap, key, {\n key,\n drawerComponent,\n componentProps,\n dialogProps,\n close,\n dismiss,\n afterVisibleChange,\n getContainer\n });\n this.$nextTick(() => this.$set(this.drawerMap[key], 'visible', true));\n });\n },\n\n getDrawerComponentProps({drawerComponent, componentProps, close, dismiss}) {\n const {vOn, ...restProps} = componentProps ?? {}; // eslint-disable-line @typescript-eslint/no-unused-vars\n if (drawerComponent.mixins?.includes(drawer) || drawerComponent.functional) {\n return {\n ...restProps,\n close,\n dismiss\n };\n }\n\n Object.entries({close, dismiss}).forEach(([propName, func]) => {\n if (drawerComponent.props?.[propName]) {\n restProps[propName] = func;\n }\n });\n\n return restProps;\n },\n // 关闭不销毁,走动画流程\n closeDrawer(key) {\n const {drawerMap} = this;\n if (drawerMap[key]) {\n this.$set(drawerMap, key, {\n ...drawerMap[key],\n visible: false\n });\n }\n },\n\n closeDrawers() {\n const {drawerMap} = this;\n Object.keys(drawerMap ?? {}).forEach(this.closeDrawer);\n },\n // 直接销毁,不走动画流程\n clearDrawer(key) {\n this.$delete(this.drawerMap, key);\n },\n\n clearDrawers() {\n this.drawerMap = {};\n }\n }\n };\n</script>\n","/*\n * @Author: xiaodongyu\n * @Date 2020-04-07 14:56:22\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-04-07 14:56:56\n */\n\nexport const boolOf = str => !!str && str === 'TRUE';\n\nexport const valueOf = bool => {\n if (typeof bool !== 'boolean') return undefined;\n\n return bool ? 'TRUE' : 'FALSE';\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2019-12-12 11:35:18\n * @Last Modified by: wenxiujiang\n * @Last Modified time: 2024-04-16 14:02:52\n */\nimport moment from 'moment';\n\nimport {boolOf, valueOf} from './enum.js';\n\nconst listSeparator = '\\n';\n\n// ListBrList 展示textarea, 接口要List\nconst list = {\n format: val => val && val.join(listSeparator),\n unformat: (val, {lineTrim}) => {\n if (lineTrim) {\n if (val?.trim()) {\n return val.trim().split(listSeparator).reduce((acc, cur) => cur.trim() ? [...acc, cur.trim()] : acc, []);\n }\n\n return undefined;\n }\n\n return (val ? val.trim().split(listSeparator) : undefined);\n }\n};\n\n// CommaBrComma 展示textarea, 接口要CommaString\nconst comma = {\n format: val => val && val.split(',').join(listSeparator),\n unformat: val => val\n && val\n .trim()\n .split(listSeparator)\n .join(',')\n};\n\n// ListBrJsonList 展示textarea, 接口要JsonList, 多用于查询条件,不支持编辑\nconst listJson = {\n ...list,\n unformat: val => val && JSON.stringify(val.trim().split(listSeparator))\n};\n\n// BooleanEnumBoolean 展示enum, 接口要boolean\nconst boolean = {\n format: valueOf,\n unformat: boolOf\n};\n\nconst bool = {\n format: val => ((!!val || val === false) ? `${val}` : undefined),\n unformat: val => (typeof val !== 'string' ? undefined : val === 'true')\n};\n\n// CommaListComma 展示enum, 接口要CommaString\nconst listComma = {\n format: val => val && val.trim().split(','),\n unformat: val => val && val.join(',')\n};\n\n// 展示,分隔string,接口要list\nconst commaToList = {\n format(val) {\n return val && val.join(',');\n },\n unformat(val) {\n return val ? val.trim().split(',') : undefined;\n }\n};\n\n// ObjectJsonObject 展示textarea, 接口要Object\nconst json = {\n format: val => {\n try {\n return JSON.stringify(val, null, 2);\n } catch (err) {\n return val;\n }\n },\n unformat: val => {\n try {\n return JSON.parse(val);\n } catch (err) {\n return val;\n }\n }\n};\n\n// StringMomentString 财务相关接口要 DateString\nconst date = {\n format: val => {\n if (!val) return val;\n if (Array.isArray(val)) {\n return val.map(item => (moment(item).valueOf()));\n }\n\n return (moment(val).valueOf());\n },\n unformat: val => {\n if (!val) return val;\n if (Array.isArray(val)) {\n return val.map(item => moment(item).format('YYYY-MM-DD'));\n }\n\n return moment(val).format('YYYY-MM-DD');\n }\n};\nconst dateTime = {\n format: val => {\n if (!val) return val;\n if (Array.isArray(val)) {\n return val.map(item => moment(item).valueOf());\n }\n\n return moment(val).valueOf();\n },\n unformat: val => {\n if (!val) return val;\n if (Array.isArray(val)) {\n return val.map(item => moment(item).format('YYYY-MM-DD HH:mm:ss'));\n }\n\n return moment(val).format('YYYY-MM-DD HH:mm:ss');\n }\n};\n\nconst getPrecision = num => {\n const [integer, decimal = ''] = `${num}`.split('.');\n\n return {\n num: +`${integer}${decimal}`,\n digits: decimal?.length\n };\n};\n\nconst percent = {\n format: val => {\n if (!val) return val;\n\n const {num, digits} = getPrecision(val);\n const res = (num * 100) / Math.pow(10, digits);\n\n return !isNaN(res) ? res : val;\n },\n unformat: val => {\n if (!val) return val;\n\n const {num, digits} = getPrecision(val);\n const res = num / (100 * Math.pow(10, digits));\n\n return !isNaN(res) ? res : val;\n }\n};\n\nconst FormatMap = {\n boolean,\n bool,\n list,\n comma,\n listJson,\n json,\n listComma,\n date,\n dateTime,\n percent,\n commaToList\n};\n\nexport default format => {\n if (typeof format === 'string') {\n return FormatMap[format];\n }\n\n return format;\n};\n\n","/*\n * @Author: hongweihu\n * @Date: 2022-01-06 16:54:15\n * @Last Modified by: hongweihu\n * @Last Modified time: 2022-01-06 17:39:21\n */\n\nconst setStorage = (itemName, item) => {\n window.localStorage.setItem(itemName, item);\n};\n\nconst getStorage = itemName => window.localStorage.getItem(itemName);\n\nconst removeItem = itemName => window.localStorage.removeItem(itemName);\n\nexport {setStorage, getStorage, removeItem};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-04-17 18:34:26\n * @Last Modified by: youboli\n * @Last Modified time: 2022-11-11 15:57:28\n */\n\nimport _ from 'underscore';\nimport Vue from 'vue';\n\nexport function hasBaseUi() {\n return !!Vue.component('b-button');\n}\n\nexport const isComponent = component => {\n if (!component) return false;\n\n return typeof component === 'string' // 全局定义组件\n || typeof component.template === 'string' // 定义 template 的组件\n || typeof component.render === 'function'; // 定义 render 函数的组件(比如 .jsx)\n};\n\nexport const isStorageValuesEqual = (storageValues, values) => {\n return _.isEqual(\n storageValues,\n {\n ..._.pick(values, _.keys(storageValues)), // pick出values和storage的key一致的数据\n ..._.pick(values, value => value !== undefined)\n }\n );\n};\n","<!-- @Author: xiaodongyu -->\n<!-- @Date: 2019-12-12 18:30:12 -->\n<!-- @Last Modified by: ruiwang -->\n<!-- @Last Modified time: 2023-07-13 15:43:43 -->\n\n<script type=\"text/babel\">\nimport _ from 'underscore';\nimport draggable from 'vuedraggable';\n\nimport {evalProp} from '../../../util/object.js';\n\nexport default {\n name: 'FieldChildForm',\n\n props: {\n def: {\n type: Object,\n required: true\n },\n\n value: {\n type: Array,\n default: undefined\n },\n\n ctx: {\n type: Object,\n default: () => ({})\n },\n\n showFieldPath: {\n type: Boolean,\n default: false\n },\n\n fieldParent: {\n type: Object,\n default: () => ({})\n }\n },\n\n data() {\n const {def, ctx, value} = this;\n let curValues;\n\n if (value) {\n curValues = value.map((item, index) => ({\n ...item,\n $timestamp: index\n }));\n }\n\n if (!value) {\n curValues = evalProp(def.minLen, {ctx}) === 0 ? [] : [{}];\n }\n\n return {\n curValues\n };\n },\n\n computed: {\n canAdd() {\n const {def: {hasAdd = true, maxLen = Infinity}, ctx, curValues = []} = this;\n\n return evalProp(hasAdd, {ctx}) && curValues.length < evalProp(maxLen, {ctx});\n },\n\n canCopy() {\n const {def: {hasCopy}, ctx, canAdd} = this;\n\n return canAdd && evalProp(hasCopy, {ctx});\n },\n\n canDelete() {\n const {def: {hasDelete = true, minLen = 0}, ctx, curValues = []} = this;\n\n return evalProp(hasDelete, {ctx}) && curValues.length > evalProp(minLen, {ctx});\n }\n },\n watch: {\n value(value) {\n if (this.def.formOptions.sync && value !== this.curValues) {\n this.curValues = [...(value || [])];\n }\n }\n },\n\n methods: {\n singleHasDelete(value, idx, curValues) {\n const {def: {formOptions: {hasDelete = true}}, ctx} = this;\n\n return evalProp(hasDelete, {value, extraData: {idx, curValues, ctx}});\n },\n\n async asyncValidator() {\n const {$refs, getChildForms} = this;\n const childForms = getChildForms($refs);\n const results = await Promise.all(\n childForms.map(\n ({form}) => new Promise(\n resolve => form.validateFields(error => resolve(!error))\n )\n )\n );\n\n return results.every(valid => valid);\n },\n\n childKey(values = {}, idx) {\n const {def: {childKey = 'id'}, ctx} = this;\n\n return `${evalProp(({record}) => (record[childKey] || record.$timestamp), {values, record: values, ctx}) || ''}-${idx}`;\n },\n\n onAdd() {\n const {ctx, def: {getInitialValue, extendAdd}} = this;\n const initialValue = evalProp(getInitialValue, {ctx}) || {};\n initialValue.$timestamp = new Date().getTime();\n\n if (extendAdd) {\n extendAdd(this.curValues, {initialValue, ctx});\n } else {\n this.curValues.push(initialValue);\n }\n\n this.$nextTick(() => {\n this.onChange();\n });\n },\n\n onCopy(idx) {\n const record = _.clone(this.curValues[idx]);\n record.$timestamp = new Date().getTime();\n this.curValues.splice(idx + 1, 0, record);\n this.$nextTick(() => {\n this.onChange();\n });\n },\n\n onChange(idx, {record} = {}) {\n if (idx >= 0) {\n this.curValues.splice(idx, 1, record);\n }\n\n if (this.def.formOptions.sync) {\n this.$emit('change', this.curValues);\n }\n },\n\n onDelete(idx, len = 1) {\n const {ctx, def: {extendDelete}} = this;\n\n this.curValues.splice(idx, len);\n if (extendDelete) {\n extendDelete(this.curValues, {idx, ctx});\n }\n\n this.$nextTick(() => {\n this.onChange();\n });\n },\n\n getChildForms(refs) {\n return Object.keys(refs).reduce((acc, cur) => {\n if (/childForm-(?=.*[\\d]$)/.test(cur) && refs[cur]) {\n acc.push(refs[cur]);\n }\n\n return acc;\n }, []);\n },\n\n getFormValues() {\n const {def} = this;\n const childForms = this.getChildForms(this.$refs);\n\n if (!childForms.length) return {def, values: [], record: []};\n\n const {values, record} = childForms\n .map(ref => ref.getFormValues())\n .reduce(\n ({values, record}, curr) => ({\n values: values.concat(curr.values),\n record: record.concat(curr.record)\n }),\n {values: [], record: []}\n );\n\n return {def, values, record};\n },\n\n getItemTitle(itemIndex) {\n const {def: {itemTitle}, ctx, $t} = this;\n if (!itemTitle) return null;\n\n if (_.isFunction(itemTitle)) {\n return evalProp(itemTitle, {ctx, itemIndex});\n }\n\n return `${$t(itemTitle)} ${itemIndex + 1}`;\n },\n\n async onConfirm() {\n const {def, def: {formOptions: {sync}}, $refs, getChildForms} = this;\n const childForms = getChildForms($refs);\n\n if (!childForms.length) return {err: null, def, values: [], record: []};\n\n const results = await Promise.all(childForms.map(ref => ref.onConfirm()));\n const err = results.reduce((acc, cur) => acc || cur.err, null);\n const valueArr = results.map(({values}) => values);\n const records = results.map(({record}) => record);\n if (!sync) this.$emit('change', records); // 给没配sync的过校验\n\n return {err, values: valueArr, record: records, def};\n },\n\n renderSlot(name, props = {}) {\n const {$scopedSlots} = this;\n\n return $scopedSlots[name] && $scopedSlots[name](props);\n },\n\n renderSlotBtns({formCtx, idx, child}) {\n const {\n curValues, def, onChange, canDelete, singleHasDelete, onDelete, $t, renderSlot, canCopy, ctx\n } = this;\n const fragment = [];\n const childFormExtraBtnNode = renderSlot('childFormExtraBtn', {...formCtx, onChange, idx});\n if (childFormExtraBtnNode) {\n fragment.push(childFormExtraBtnNode);\n }\n\n if (canCopy && !def.childCard) {\n fragment.push(\n <a-button\n type=\"primary\"\n vOn:click={() => this.onCopy(idx)}\n >\n {$t(def.copyText || 'common.copy')}\n </a-button>\n );\n }\n\n if (\n (curValues.length > 1 || !def.required)\n && canDelete && singleHasDelete(child, idx, curValues)\n && !def.childCard\n ) {\n const {confirmDeleteText, popClose} = def;\n\n fragment.push(popClose\n ? <a-popconfirm\n title={`${confirmDeleteText ? evalProp(confirmDeleteText, {ctx, idx, value: child}) : `${$t('common.confirmDelete')}?`}`}\n trigger=\"click\"\n vOn:confirm={() => onDelete(idx)}\n >\n <a-button type=\"danger\">\n {$t('common.delete')}\n </a-button>\n </a-popconfirm>\n : <a-button\n type=\"danger\"\n vOn:click={() => onDelete(idx)}\n >\n {$t('common.delete')}\n </a-button>\n );\n }\n\n return fragment;\n },\n\n renderAddBtn() {\n // addIconOnly-有时候需求不想在按钮里显示文字,只想显示图标\n const {$t, def: {addShape, addIcon, addText, addIconOnly = false}, onAdd} = this;\n\n return (\n <a-button\n type=\"primary\"\n shape={addShape}\n icon={addIcon}\n vOn:click={onAdd}\n >\n { (addIconOnly && addIcon) ? '' : $t(addText || 'common.create') }\n </a-button>\n );\n },\n\n renderChildForm({idx, child}) {\n const {ctx, def, childKey, renderSlotBtns, onChange, showFieldPath, fieldParent} = this;\n\n return (\n <yqg-simple-form\n key={childKey(child, idx)}\n ref={`childForm-${idx}`}\n ctx={ctx}\n values={child}\n idx={idx}\n options={def.formOptions}\n showFieldPath={showFieldPath}\n fieldParent={fieldParent}\n scopedSlots={{\n extraBtns: formCtx => renderSlotBtns({formCtx, idx, child})\n }}\n vOn:change={formValues => onChange(idx, formValues)}\n />\n );\n },\n\n renderForm() {\n const {\n def, def: {childCard, draggable: isDraggable = false, popClose, copyText, confirmDeleteText}, canAdd, canDelete,\n curValues, singleHasDelete, renderChildForm, getItemTitle, onDelete, canCopy, onCopy, ctx\n } = this;\n\n if (!canAdd && !curValues.length) {\n return (\n <div>/</div>\n );\n }\n\n if (childCard) {\n return (\n <div>\n {\n curValues?.map((child, idx) => {\n const CloseIcon = popClose\n ? (\n <a-popconfirm\n title={`${confirmDeleteText ? evalProp(confirmDeleteText, {ctx, idx, value: child}) : `${this.$t('common.confirmDelete')}?`}`}\n trigger=\"click\"\n vOn:confirm={() => onDelete(idx)}\n >\n <a-icon\n class=\"close\"\n type=\"close\"\n />\n </a-popconfirm>\n )\n : <a-icon\n class=\"close\"\n type=\"close\"\n vOn:click={() => onDelete(idx)}\n />;\n\n return (\n <a-card key={idx} class=\"child-form-card\">\n <div class=\"card-header\">\n <div class=\"yqg-form-title title\">{getItemTitle(idx)}</div>\n {\n (curValues.length > 1 || !def.required)\n && canDelete && singleHasDelete(child, idx, curValues)\n && CloseIcon\n }\n </div>\n {renderChildForm({idx, child})}\n {canCopy && (\n <div class=\"card-footer\">\n <a-button\n type=\"primary\"\n vOn:click={() => onCopy(idx)}\n >\n {this.$t(copyText || 'common.copy')}\n </a-button>\n </div>\n )}\n </a-card>\n );\n })\n }\n {canAdd && this.renderAddBtn()}\n </div>\n );\n }\n\n return (\n <a-card>\n <draggable draggable=\".drag-item\" disabled={!isDraggable} vModel={this.curValues}>\n {curValues.map((child, idx) => (\n <div class=\"drag-item\">\n {renderChildForm({idx, child})}\n <a-divider class=\"divider\" />\n </div>\n ))}\n {canAdd && this.renderAddBtn()}\n </draggable>\n </a-card>\n );\n }\n },\n\n render() {\n const {renderSlot, renderForm} = this;\n\n return (\n <a-config-provider autoInsertSpaceInButton={false}>\n <div class=\"field-child-form\">\n {renderSlot('head')}\n {renderForm()}\n {renderSlot('foot')}\n </div>\n </a-config-provider>\n );\n }\n};\n</script>\n\n<style lang=\"scss\">\n.field-child-form {\n .divider {\n margin: 10px 0;\n }\n\n .yqg-simple-form {\n .ant-form-inline {\n .ant-form-item-label {\n justify-content: flex-start;\n }\n }\n }\n\n .child-form-card {\n margin-bottom: 16px;\n\n .card-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n\n .title {\n color: rgba(0, 0, 0, 0.6);\n }\n\n .close {\n font-size: 18px;\n }\n }\n }\n}\n</style>\n\n","<template>\n <a-button-group>\n <a-button\n v-if=\"needAll\"\n :type=\"!active && active !== 0 ? 'primary' : 'default'\"\n @click=\"onClick()\"\n >\n {{ $t('common.all') }}\n </a-button>\n <a-button\n v-for=\"opt in options\"\n :key=\"opt.value\"\n :type=\"active === opt.value ? 'primary' : 'default'\"\n @click=\"onClick(opt.value)\"\n >\n {{ opt.label }}\n </a-button>\n </a-button-group>\n</template>\n\n<script>\nimport {enumType} from '../../../mixin/index.js';\n\nexport default {\n name: 'FieldButtonGroup',\n\n mixins: [enumType],\n\n model: {\n prop: 'value',\n event: 'change'\n },\n\n props: {\n value: {\n type: [String, Number],\n default: undefined\n },\n\n needAll: {\n type: Boolean,\n default: true\n }\n },\n\n data() {\n return {\n active: this.value\n };\n },\n\n watch: {\n value(val) {\n if (this.active === val) {return;}\n\n this.active = val;\n }\n },\n\n methods: {\n onClick(val) {\n if (this.active === val) {return;}\n\n this.active = val;\n this.$emit('change', val);\n }\n }\n};\n</script>\n","<template>\n <a-cascader\n v-bind=\"def.props\"\n :value=\"value\"\n :options=\"list\"\n @change=\"onChange\"\n />\n</template>\n\n<script>\nimport {enumType} from '../../../mixin/index.js';\n\nexport default {\n name: 'FieldCascader',\n\n mixins: [enumType],\n\n props: {\n value: {\n type: Array,\n default: () => []\n },\n },\n\n methods: {\n onChange(value) {\n this.$emit('change', value);\n }\n }\n};\n</script>\n","<!-- @Author: xiaodongyu -->\n<!-- @Date: 2020-02-15 10:03:47 -->\n<!-- @Last Modified by: xiaodongyu -->\n<!-- @Last Modified time: 2023-09-25 16:40:35 -->\n\n<template>\n <div class=\"field-code\">\n <div class=\"code-wrapper\">\n <pre\n :class=\"[`lang-${def.props.language || 'json'}`, 'line-numbers']\"\n :style=\"preStyle\"\n ><code\n ref=\"code\"\n v-text=\"`${value}${$options.LineFeed}`\"\n /></pre>\n <!--末尾最后一个lineFeed会被pre忽略,但textarea会正常展示,所以pre展示总是多加个lineFeed,以免textarea最后是空行,高度不够出现滚动-->\n <a-textarea\n ref=\"textarea\"\n :value=\"value\"\n :style=\"{'resize': textareaResizable ? 'vertical' : 'none'}\"\n class=\"textarea\"\n :disabled=\"def.props.disabled\"\n @change=\"onChange\"\n @scroll=\"onScroll\"\n />\n </div>\n <div\n v-if=\"jsonParseErrMsg\"\n class=\"yqg-text-danger json-error\"\n v-text=\"jsonParseErrMsg\"\n />\n <a-button\n v-if=\"isFormatBtnVisible\"\n @click=\"format()\"\n v-text=\"$t('common.format')\"\n />\n <a-button\n v-if=\"isRemoveSpaceBtnVisible\"\n @click=\"handleSpaceRemove()\"\n v-text=\"$t('common.removeSpace')\"\n />\n <template v-if=\"!!customOperationComp\">\n <component\n :is=\"customOperationComp\"\n :value=\"value\"\n :on-data-change=\"onDataChange\"\n :is-view=\"def.props.disabled\"\n />\n </template>\n </div>\n</template>\n\n<script type=\"text/babel\">\nimport Prism from 'prismjs';\nimport _ from 'underscore';\n\nconst LineFeed = '\\n';\n\nexport default {\n name: 'FieldCode',\n\n LineFeed,\n\n model: {\n prop: 'value',\n event: 'change'\n },\n\n props: {\n value: {\n type: String,\n default: ''\n },\n def: {\n type: Object,\n required: true\n },\n // 自定义扩展按钮,如:配置参数属性的格式化等\n customOperationComp: {\n required: false,\n }\n },\n\n data() {\n return {\n jsonParseErrMsg: '',\n\n textareaHeight: null,\n observer: null,\n\n textareaResizable: !this.def.height\n };\n },\n\n computed: {\n isFormatBtnVisible() {\n const {def: {isFormatBtnVisible = true}} = this;\n\n return isFormatBtnVisible;\n },\n\n isRemoveSpaceBtnVisible() {\n const {def: {isRemoveSpaceBtnVisible = false}} = this;\n\n return isRemoveSpaceBtnVisible;\n },\n\n preStyle() {\n const {def: {backgroundColor}} = this;\n let {def: {height: maxHeight}} = this;\n const {textareaHeight} = this;\n\n if (!maxHeight) return {height: `${textareaHeight}px`};\n\n if (typeof maxHeight === 'number') {\n maxHeight = `${maxHeight}px`;\n }\n\n return {maxHeight, backgroundColor};\n }\n },\n\n watch: {\n value: {\n handler: 'highlightHandler',\n immediate: true\n }\n },\n\n mounted() {\n this.initResizeObserver();\n },\n\n beforeDestroy() {\n this.disconnectResizeObserver();\n },\n\n methods: {\n highlightHandler() {\n this.$nextTick(() => {\n if (!this.$refs.code) return;\n\n Prism.highlightElement(this.$refs.code);\n });\n },\n\n // 格式化data字段值\n onDataChange(nextValue) {\n this.$emit('change', nextValue);\n },\n\n format() {\n if (!this.value) return;\n\n try {\n let tmp; // eslint-disable-line\n const formatedValue = JSON.stringify(eval(`tmp=${this.value}`), null, 2); // eslint-disable-line\n this.$emit('change', formatedValue);\n this.jsonParseErrMsg = '';\n } catch (err) {\n this.$message.error(this.$t('common.formatFailed'));\n try {\n JSON.parse(this.value);\n } catch (error) {\n const {name, message} = error;\n let msg = `${name}: ${message}`;\n const position = (message.match(/position (\\d+)/) ?? [])[1];\n if (position) {\n let lineNumber = 1;\n let columnNumber = position;\n for (let i = 0; i < position; i++) {\n if (this.value[i] === LineFeed) {\n lineNumber++;\n columnNumber = position - i;\n }\n }\n\n msg += `${LineFeed}line: ${lineNumber}, column: ${columnNumber}`;\n }\n\n this.jsonParseErrMsg = msg;\n }\n }\n },\n\n handleSpaceRemove() {\n const {value} = this;\n const newValue = value.replace(/[ \\t]+/g, '');\n this.$emit('change', newValue);\n },\n\n onChange(event) {\n const {target, target: {value, selectionStart}, inputType} = event;\n if (inputType === 'insertLineBreak') {\n const preString = value.substring(0, selectionStart - 1);\n const preLine = preString.substring(preString.lastIndexOf(LineFeed) + 1);\n const preWhitespace = (preLine.match(/^(\\s*).*$/) || [])[1] || '';\n if (preWhitespace) {\n this.$emit('change', `${preString}${LineFeed}${preWhitespace}${value.substring(selectionStart)}`);\n this.$nextTick(() => {\n target.selectionStart = selectionStart + preWhitespace.length;\n target.selectionEnd = target.selectionStart;\n });\n\n return;\n }\n }\n\n this.$emit('change', value);\n },\n\n onScroll(event) {\n this.$refs.code.parentElement.scrollLeft = event.target.scrollLeft;\n this.$refs.code.parentElement.scrollTop = event.target.scrollTop;\n },\n\n initResizeObserver() {\n if (!this.textareaResizable) return;\n\n const config = {attributes: true, attributeFilter: ['style']};\n const textareaNode = this.$refs.textarea.$el;\n\n this.observer = new MutationObserver(_.debounce(this.fixHeight, 10));\n\n this.observer.observe(textareaNode, config);\n },\n\n disconnectResizeObserver() {\n if (!this.textareaResizable) return;\n\n this.observer?.disconnect();\n },\n\n fixHeight() {\n const textareaNode = this.$refs.textarea.$el;\n\n this.textareaHeight = textareaNode.offsetHeight;\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.field-code {\n .code-wrapper {\n position: relative;\n margin-bottom: 0.4em;\n\n .textarea {\n position: absolute;\n padding: 1em;\n padding-left: 3.8em;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n min-height: 100px;\n font-family: Consolas, Monaco, \"Andale Mono\", \"Ubuntu Mono\", monospace;\n color: transparent;\n caret-color: black;\n line-height: 1.5;\n white-space: pre;\n background: transparent;\n tab-size: 4;\n }\n }\n\n .json-error {\n white-space: pre;\n }\n\n pre {\n min-height: 100px;\n border: 1px solid transparent;\n overflow: auto;\n margin: 0;\n }\n}\n</style>\n","<!-- @Author: xiaodongyu -->\n<!-- @Date: 2019-12-16 14:46:43 -->\n<!-- @Last Modified by: wenxiujiang -->\n<!-- @Last Modified time: 2023-06-16 18:05:56 -->\n\n<template>\n <div :class=\"{'preview-file-wrap': customPreview}\">\n <component\n :is=\"component\"\n class=\"field-file\"\n v-bind=\"antProp\"\n @change=\"onChange\"\n @preview=\"onPreview\"\n >\n <component\n :is=\"def.props.draggable ? 'p' : 'a-button'\"\n >\n <a-icon type=\"upload\" />\n <component\n :is=\"draggableTextComp\"\n v-if=\"draggableTextComp\"\n />\n <span\n v-else\n v-html=\"draggableText || $t('common.chooseFile')\"\n />\n <div v-if=\"def.props.draggable && acceptTips\">\n {{ acceptTips }}\n </div>\n </component>\n </component>\n <div\n v-if=\"message\"\n class=\"yqg-text-danger\"\n >\n {{ message }}\n </div>\n <template v-if=\"customPreview\">\n <div\n v-for=\"file in fileList\"\n :key=\"file.uid\"\n >\n <div v-if=\"file.response\">\n <p>\n <a-icon type=\"link\" />\n <a @click=\"onPreview(file)\">{{ decodeURIComponentSafe(file.name) }}</a>\n <a-button\n v-if=\"isPdf(file.name) || (def.docxPreview && isDocx(file.name))\"\n size=\"small\"\n @click=\"onPreviewPdf(file)\"\n >\n {{ $t('file.preview') }}\n </a-button>\n <a-button\n v-if=\"(isPdf(file.name) || isDocx(file.name)) && def.print\"\n size=\"small\"\n @click=\"def.print(file.response.body)\"\n >\n {{ $t('common.print') }}\n </a-button>\n <a-icon\n type=\"delete\"\n class=\"danger\"\n @click=\"remove(file)\"\n />\n </p>\n <img\n v-if=\"isImage(file.name)\"\n class=\"preview-img\"\n :src=\"getFileUrl(file)\"\n >\n <audio\n v-if=\"isAudio(file.name)\"\n :src=\"getFileUrl(file)\"\n controls\n />\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script type=\"text/babel\">\nimport _ from 'underscore';\n\nimport {pickValue, evalProp} from '../../../util/object.js';\n\nconst getScope = (min, max, filter = x => x, $t) => {\n const isExact = min === max;\n if (isExact) return `${filter(min)}`;\n if (min === 0) return $t('file.noGreaterThan', [filter(max)]);\n if (max === Infinity) return $t('file.noLessThan', [filter(min)]);\n\n return `${filter(min)}-${filter(max)}`;\n};\n\nconst unitByte = size => {\n if (typeof size !== 'number' || size < 0) return 0;\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const unitFactor = 1024;\n let result = `${size} B`;\n let index = 0;\n\n while (size >= unitFactor && index !== units.length - 1) {\n index += 1;\n size /= unitFactor;\n if (!Number.isInteger(size)) size = size.toFixed(2);\n result = `${size}${units[index]}`;\n }\n\n return result;\n};\n\nexport default {\n name: 'FieldFile',\n\n props: {\n def: {\n type: Object,\n required: true\n },\n\n value: {\n type: [File, Array, Number, String, Object],\n default: undefined\n },\n\n previewValue: {\n type: [File, Array, Number, String],\n default: undefined\n },\n\n ctx: {\n type: Object,\n default: () => ({})\n }\n },\n\n data() {\n return {\n fileList: [].concat(this.previewValue || []),\n isValid: true,\n message: null\n };\n },\n\n computed: {\n multiple() {\n const {def: {props: {single = true} = {}}} = this;\n\n return !single;\n },\n\n component() {\n return this.def.props.draggable ? 'a-upload-dragger' : 'a-upload';\n },\n\n acceptTips() {\n const {def: {props: {accept, acceptTipsInvisible} = {}}} = this;\n\n return (accept && !acceptTipsInvisible)\n ? this.$t('file.acceptTypes', [this.isZh ? accept.replace(/,/g, '、') : accept])\n : '';\n },\n\n antProp() {\n const {\n def: {props = {}},\n fileList, multiple, beforeUpload, remove\n } = this;\n\n return {\n ...props,\n draggable: undefined,\n raw: undefined,\n fileList,\n multiple,\n beforeUpload,\n remove\n };\n },\n\n draggableText() {\n const {def: {props}} = this;\n\n return evalProp(props.draggableText, props);\n },\n\n draggableTextComp() {\n return this.def.props.draggableTextComp;\n },\n\n customPreview() {\n return this.def.props.preview || false;\n },\n\n isZh() {\n return !this.$i18n || this.$i18n.locale === 'zh';\n }\n },\n\n watch: {\n value(val) {\n if (!val) {\n this.fileList = [];\n }\n },\n\n previewValue(val) {\n if (val && !this.fileList?.length) {\n this.fileList = [].concat(val);\n }\n }\n },\n\n methods: {\n validateFile(file) {\n const {name, size} = file;\n const {$t} = this;\n if (size === 0) {\n return {isValid: false, message: $t('file.empty')};\n }\n\n const {def: {props: {minSize = 0, maxSize = Infinity, accept, imageOnly = false} = {}}, isZh} = this;\n const isImg = this.isImage(name);\n const accepts = accept?.split(',') || [];\n\n if (accepts.length && !accepts.some(ext => new RegExp(`${ext}$`, 'i').test(name))) {\n return {isValid: false, message: $t('file.acceptTypes', [accepts.join(isZh ? '、' : ',')])};\n }\n\n if (imageOnly && !isImg) {\n return {isValid: false, message: $t('file.onlyImage')};\n }\n\n if (size < minSize || size > maxSize) {\n const fileType = $t(isImg ? 'file.image' : 'file.file');\n\n return {\n isValid: false,\n // eslint-disable-next-line max-len\n message: $t('file.size', {fileType, curSize: unitByte(size), size: getScope(minSize, maxSize, unitByte, $t)})\n };\n }\n\n return {isValid: true, message: null};\n },\n\n beforeUpload(file) {\n const {def: {props: {raw, imageOnly = false}, customFileName, customValidateFile}, validateFile, multiple, $t, ctx} = this;\n\n // eslint-disable-next-line\n return new Promise(async (resolve, reject) => {\n if (customValidateFile) {\n const {isValid: isCustomValid, message: customMessage} = await customValidateFile(file, ctx);\n if (!isCustomValid) {\n this.message = customMessage;\n reject();\n\n return;\n }\n }\n\n const {isValid, message} = validateFile(file);\n\n if (!isValid) {\n this.message = message;\n reject();\n\n return;\n }\n\n if (imageOnly) {\n const reader = new FileReader();\n await new Promise((imgResolve, imgReject) => {\n reader.onload = ({target: {result}}) => {\n const image = new Image();\n image.onerror = () => {\n this.message = $t('file.error');\n imgReject();\n };\n\n image.onload = imgResolve;\n image.src = result;\n };\n\n reader.readAsDataURL(file);\n });\n }\n\n this.message = null;\n\n if (customFileName) {\n customFileName(file, ctx);\n }\n\n if (raw) {\n this.fileList = multiple ? [...this.fileList, file] : [file];\n this.$emit('change', multiple ? this.fileList : file);\n reject();\n\n return;\n }\n\n resolve();\n });\n },\n\n onChange(info) {\n const {multiple, def: {props: {raw}}} = this;\n const {file, file: {uid, status}} = info;\n\n if (multiple) {\n this.fileList = _.find(this.fileList, item => item.uid === uid)\n ? this.fileList : [...this.fileList, file];\n } else {\n this.fileList = [file];\n }\n\n if (!raw && status === 'done') {\n // 刷新预览\n this.fileList = [...this.fileList];\n const values = this.getFileListValues();\n this.$emit('change', multiple ? values : values[0]);\n }\n },\n\n onPreview({response}) {\n const {def: {props = {}}} = this;\n if (props.urlField) {\n window.open(pickValue(response.body || response, props.urlField));\n }\n },\n\n async onPreviewPdf(file) {\n const url = await this.getPreviewUrl(file);\n window.open(url);\n },\n\n getFileListValues() {\n const {def: {props: {valueField} = {}}, fileList} = this;\n\n return fileList\n .filter(item => item.response)\n .map(item => {\n const {response} = item;\n const {body = response} = response;\n if (valueField) return pickValue(body, valueField);\n\n // 方便一些中间组件如field-rich的上传,既能拿到url又能拿到id 还能拿到file name\n return {...item, ...body};\n });\n },\n\n remove(file) {\n const {multiple, def: {props = {}}} = this;\n const index = this.fileList.indexOf(file);\n this.fileList.splice(index, 1);\n if (multiple) {\n this.$emit('change', props.raw ? this.fileList : this.getFileListValues());\n } else {\n this.$emit('change', undefined);\n }\n },\n\n getFileUrl({response}) {\n const {def: {props: {urlField} = {}}} = this;\n\n return pickValue(response.body, urlField);\n },\n\n async getPreviewUrl({response}) {\n const {def: {props: {previewField, urlField, getCustomPreviewUrl} = {}}} = this;\n const previewUrl = pickValue(response.body, previewField);\n const url = pickValue(response.body, urlField);\n\n if (!previewUrl && getCustomPreviewUrl) {\n const previewPdfUrl = await getCustomPreviewUrl({url, previewField, body: response.body});\n\n return previewPdfUrl;\n }\n\n return previewUrl || url;\n },\n\n decodeURIComponentSafe(encodedURIComponent) {\n try {\n return decodeURIComponent(encodedURIComponent);\n } catch (err) {\n return encodedURIComponent;\n }\n },\n\n isImage(name) {\n const IMG_TESTER = /\\.(img|jpg|jpeg|png|gif|bmp)$/i;\n\n return IMG_TESTER.test(name);\n },\n\n isPdf(name) {\n return /\\.pdf$/i.test(name);\n },\n\n isDocx(name) {\n return /\\.docx?$/i.test(name);\n },\n\n isAudio(name) {\n return /\\.wav$/i.test(name);\n }\n }\n};\n</script>\n\n<style lang=\"scss\">\n.field-file {\n .ant-upload-drag {\n padding: 20px 0;\n }\n}\n\n.preview-file-wrap {\n .ant-upload-list {\n display: none;\n }\n}\n\n.preview-img {\n max-width: 100%;\n max-height: 200px;\n object-fit: scale-down;\n}\n</style>\n","<!-- @author xiaodongyu -->\n<!-- @email xiaodongyu@yangqianguan.com -->\n<!-- @date 2019-12-12 18:30:12 -->\n<!-- @desc field-child-form.vue -->\n\n<script type=\"text/babel\">\nexport default {\n name: 'FieldGroupForm',\n\n props: {\n def: {\n type: Object,\n required: true\n },\n\n value: {\n type: Object,\n default: () => ({})\n },\n\n ctx: {\n type: Object,\n default: () => ({})\n }\n },\n\n data() {\n return {\n curValue: this.value\n };\n },\n\n methods: {\n onChange({record} = {}) {\n this.curValue = record;\n },\n\n getFormValues() {\n return this.$refs.groupForm.getFormValues();\n },\n\n async onConfirm() {\n const {def, $refs} = this;\n const {err, values, record} = await $refs.groupForm.onConfirm();\n\n this.$emit('change', record);\n\n return {err, values, record, def};\n },\n\n renderSlot(name, props = {}) {\n const {$scopedSlots} = this;\n\n return $scopedSlots[name] && $scopedSlots[name](props);\n },\n\n renderForm() {\n const {\n ctx, onChange, curValue, def: {title, fields}\n } = this;\n const formOptions = {\n layout: 'vertical',\n fieldDefs: fields\n };\n\n return (\n <a-card title={title}>\n <yqg-simple-form\n ref=\"groupForm\"\n ctx={ctx}\n values={curValue}\n options={formOptions}\n vOn:change={formValues => onChange(formValues)}\n />\n </a-card>\n );\n }\n },\n\n render() {\n const {renderSlot, renderForm} = this;\n\n return (\n <a-config-provider autoInsertSpaceInButton={false}>\n <div class=\"field-group-form\">\n {renderSlot('head')}\n {renderForm()}\n {renderSlot('foot')}\n </div>\n </a-config-provider>\n );\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n .field-group-form {\n .yqg-simple-form {\n ::v-deep .ant-form {\n .ant-form-item-label {\n justify-content: flex-start;\n }\n }\n }\n }\n</style>\n","<!-- @author wenxiujiang -->\n<!-- @email wenxiujiang@yangqianguan.com -->\n<!-- @date 2020-9-7 18:51:49 -->\n<!-- @desc field-input.vue -->\n\n<template>\n <a-input\n :value=\"value\"\n :type=\"type\"\n v-bind=\"def.props\"\n @change=\"onChange\"\n @pressEnter=\"onPressEnter\"\n @blur=\"onBlur\"\n >\n <a-icon\n v-if=\"isPassword\"\n slot=\"suffix\"\n :type=\"invisible ? 'beauty-eye-invisible-o' : 'beauty-eye-o'\"\n @click=\"toggleType\"\n />\n <slot\n slot=\"prefix\"\n name=\"prefix\"\n />\n <slot\n slot=\"suffix\"\n name=\"suffix\"\n />\n <slot\n slot=\"addonAfter\"\n name=\"addonAfter\"\n />\n <slot\n slot=\"addonBefore\"\n name=\"addonBefore\"\n />\n </a-input>\n</template>\n\n<script type=\"text/babel\">\nexport default {\n name: 'FieldInput',\n\n model: {\n prop: 'value',\n event: 'change'\n },\n\n props: {\n value: {\n type: [String, Number],\n default: undefined\n },\n def: {\n type: Object,\n required: true\n },\n format: { // 支持业务对于输入内容的format处理, 需要时在业务component中定义format即可\n type: Function,\n default: null\n }\n },\n\n data() {\n return {\n invisible: true\n };\n },\n\n computed: {\n isPassword() {\n return this.def.props.type === 'password';\n },\n\n type() {\n if (this.isPassword) {\n return this.invisible ? 'password' : 'text';\n }\n\n return 'text';\n }\n },\n\n methods: {\n toggleType() {\n this.invisible = !this.invisible;\n },\n\n onChange(evt) {\n const {format} = this;\n const {value} = evt.target;\n\n if (format && value) {\n try {\n Object.assign(evt.target, {\n value: format(value),\n originalVal: value\n });\n } catch (err) {\n this.$emit('change', evt);\n\n throw err;\n }\n }\n\n this.$emit('change', evt);\n },\n\n onPressEnter(evt) {\n this.$emit('pressEnter', evt);\n },\n\n onBlur(evt) {\n this.$emit('blur', evt.target.value);\n }\n }\n};\n</script>\n","<!-- @Author: ruiwang -->\n<!-- @Date: 2020-9-7 17:46:10 -->\n<!-- @Last Modified by: zhengwang1 -->\n<!-- @Last Modified time: 2025-06-19 10:47:11 -->\n\n<template>\n <a-select\n v-model=\"compValue\"\n :auto-clear-search-value=\"!isMultipleSelectAll\"\n :dropdown-menu-style=\"dropdownMenuStyle\"\n v-bind=\"def.props\"\n @change=\"onChange\"\n @search=\"onSearch\"\n @dropdownVisibleChange=\"onDropdownVisibleChange\"\n >\n <template\n v-if=\"isMultipleSelectAll\"\n #dropdownRender=\"menu\"\n >\n <v-nodes :vnodes=\"menu\" />\n <a-divider style=\"margin: 4px 0;\" />\n <div\n class=\"select-all-btn-groups\"\n @mousedown=\"e => e.preventDefault()\"\n >\n <a-button\n size=\"small\"\n @click=\"clearAll\"\n >\n {{ $t('common.clearAll') }}\n </a-button>\n <a-button\n size=\"small\"\n type=\"primary\"\n @click=\"selectAll\"\n >\n {{ $t('common.selectAll') }}\n </a-button>\n </div>\n </template>\n\n <a-select-option\n v-for=\"{label, value: val, ...rest} in selectOptions\"\n v-bind=\"rest\"\n :key=\"val\"\n :value=\"val\"\n :title=\"tooltipVisible ? label : ''\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script>\nimport _ from 'underscore';\n\nimport {enumType} from '../../../mixin/index.js';\nimport {numbersToStr} from '../../../util/object.js';\n\n/* type SelectOption = {\n label: string,\n value: any,\n pinyin: string,\n [optionLabelProp: string]: string\n} */\n\nexport default {\n name: 'FieldSelect',\n\n components: {\n VNodes: {\n functional: true,\n render: (h, ctx) => ctx.props.vnodes\n }\n },\n\n mixins: [enumType],\n\n props: {\n value: {\n type: [Number, String, Array],\n default: undefined\n },\n\n tooltipOption: {\n type: Boolean,\n default: false\n }\n },\n\n data() {\n const {def: {props: {mode}}, value} = this;\n const compValue = mode === 'multiple' && !value ? undefined : numbersToStr(value);\n\n return {\n compValue,\n searchText: undefined,\n changed: false,\n timeout: null\n };\n },\n\n computed: {\n isMultipleSelectAll() {\n return this.def.props.mode === 'multiple' && this.def.selectAll;\n },\n\n selectOptions() {\n // selectOption: SelectOption\n const {\n def: {validateSearch, autoSearchMinLen = Infinity},\n compValue,\n searchText,\n options\n } = this;\n\n if (validateSearch || options.length > autoSearchMinLen) {\n return options.filter(({value, pinyin, shortPinyin}) => {\n if (searchText) {\n return (shortPinyin || pinyin).toLowerCase().indexOf(searchText.toLowerCase()) > -1;\n }\n\n return [].concat(compValue).includes(value);\n });\n }\n\n return options;\n },\n\n tooltipVisible() {\n const {tooltipOption, def} = this;\n\n if (def.tooltipOption !== undefined) {\n return def.tooltipOption;\n }\n\n return tooltipOption;\n },\n\n // 下拉选项菜单样式,dropdownInvisible通过其控制输入时的显隐状态\n dropdownMenuStyle() {\n const {def, searchText} = this;\n\n if (!def?.props?.dropdownInvisible) {\n return {};\n }\n\n return searchText ? {display: 'block'} : {display: 'none'};\n }\n },\n\n watch: {\n value(val) {\n if (val === this.compValue) return;\n\n const {def: {props: {mode}}} = this;\n if (mode === 'multiple' && !val) val = undefined;\n\n this.getSuperText(val);\n },\n\n wrappedEnumType() {\n const {value} = this;\n this.getSuperText(value);\n }\n },\n\n methods: {\n onChange(val) {\n const {def: {props: {mode}}, wrappedEnumType, changed} = this;\n\n // 因为tags模式手输的值肯定不在wrappedEnumType内,故不用filter\n // filter的话会导致第一个手输的值被filter掉\n if (mode !== 'tags' && !changed && Array.isArray(val) && wrappedEnumType) {\n val = val.filter(item => wrappedEnumType.MAP[item]);\n this.changed = true;\n }\n\n this.$emit('change', val);\n },\n\n onSearch(val) {\n this.searchText = val;\n this.$emit('search', val);\n\n const {def: {props: {filterOption} = {}}, timeout} = this;\n\n if (filterOption !== false) return;\n\n if (timeout) clearTimeout(timeout);\n\n this.timeout = setTimeout(() => this.initData(val), 300);\n },\n\n getSuperText(value) {\n const {wrappedEnumType} = this;\n let res;\n const getText = key => {\n if (wrappedEnumType && !wrappedEnumType.MAP[key]) {\n return wrappedEnumType.getText(key);\n }\n\n return key;\n };\n\n if (Array.isArray(value)) {\n res = value.map(item => getText(item));\n } else {\n res = getText(value);\n }\n\n this.compValue = numbersToStr(res) ?? undefined;\n },\n\n selectAll() {\n const {selectOptions, searchText} = this;\n const val = selectOptions?.filter(\n ({pinyin, shortPinyin}) => !searchText || (shortPinyin || pinyin).toLowerCase().indexOf(searchText.toLowerCase()) > -1)\n .map(({value}) => value) || [];\n const uniqVal = _.uniq([...(this.compValue || []), ...val]); // 去重,防止重复添加\n this.$emit('change', uniqVal);\n },\n\n clearAll() {\n this.$emit('change', undefined);\n },\n\n onDropdownVisibleChange(open) {\n if (!open) { // 收起时dropdown时,清空 searchText\n this.searchText = undefined;\n }\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.select-all-btn-groups {\n padding: 4px 8px 8px;\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n}\n</style>\n","<!-- @author xiaodongyu -->\n<!-- @email xiaodongyu@yangqianguan.com -->\n<!-- @date 2020-3-9 18:51:49 -->\n<!-- @desc field-sql.vue -->\n\n<template>\n <yqg-code-textarea\n class=\"field-sql\"\n mode=\"text/x-sql\"\n :value=\"value\"\n :options=\"options\"\n @input=\"onChange\"\n />\n</template>\n\n<script type=\"text/babel\">\nexport default {\n name: 'FieldSql',\n\n props: {\n value: {\n type: String,\n default: ''\n },\n def: {\n type: Object,\n required: true\n }\n },\n\n data() {\n return {\n options: {\n enableAutocomplete: true,\n lineNumbers: true,\n ...this.def.options\n }\n };\n },\n\n watch: {\n 'def.options': function(defOptions) { // eslint-disable-line\n this.options = {\n enableAutocomplete: true,\n lineNumbers: true,\n ...defOptions\n };\n }\n },\n\n methods: {\n onChange(sql) {\n this.$emit('change', sql);\n }\n }\n};\n</script>\n","<!-- @author wenxiujiang -->\n<!-- @email wenxiujiang@yangqianguan.com -->\n<!-- @date 2022-8-26 11:35:09 -->\n<!-- @desc field-textarea.vue -->\n\n<template>\n <a-textarea\n :value=\"value\"\n v-bind=\"def.props\"\n @change=\"onChange\"\n />\n</template>\n\n<script type=\"text/babel\">\nexport default {\n name: 'FieldTextarea',\n\n model: {\n prop: 'value',\n event: 'change'\n },\n\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n def: {\n type: Object,\n required: true\n },\n format: { // 支持业务对于输入内容的format处理, 需要时在业务component中定义format即可\n type: Function,\n default: null\n }\n },\n\n methods: {\n onChange(evt) {\n const {format} = this;\n const {value} = evt.target;\n\n if (format && value) {\n try {\n Object.assign(evt.target, {\n value: format(value),\n originalVal: value\n });\n } catch (err) {\n this.$emit('change', evt);\n\n throw err;\n }\n }\n\n this.$emit('change', evt);\n }\n }\n};\n</script>\n","<!-- @Author: ruiwang -->\n<!-- @Date: 2020-9-7 18:37:27 -->\n<!-- @Last Modified by: huafengli -->\n<!-- @Last Modified time: 2025-07-02 11:13:01 -->\n\n<template>\n <a-tree-select\n v-model=\"compValue\"\n v-bind=\"compProps\"\n @change=\"onChange\"\n />\n</template>\n\n<script>\nimport {enumType} from '../../../mixin/index.js';\nimport {numbersToStr} from '../../../util/object.js';\n\nexport default {\n name: 'FieldTree',\n\n mixins: [enumType],\n\n props: {\n value: {\n type: [Number, String, Array],\n default: undefined\n }\n },\n\n data() {\n return {\n compValue: numbersToStr(this.value)\n };\n },\n\n computed: {\n compProps() {\n const {list, def: {props}} = this;\n const treeData = this.formatTreeData(list);\n\n // 当list为空时,treeCheckStrictly为true时,选中tag无法正确展示,先处理一下treeCheckStrictly为false\n return !list?.length && props.treeCheckStrictly ? {...props, treeData, treeCheckStrictly: false} : {...props, treeData};\n }\n },\n\n watch: {\n value(val) {\n if (val === this.compValue) return;\n\n this.compValue = numbersToStr(val);\n }\n },\n\n methods: {\n formatTreeData(list) {\n if (!list.length) {return list;}\n\n const {def: {idKey = 'id', nameKey = 'name', childrenKey = 'children', leafOnly}} = this;\n\n return list.map(({[childrenKey]: children, [idKey]: id, [nameKey]: name, disabled, selectable}) => ({\n title: name,\n value: `${id}`,\n key: `${id}`,\n disabled,\n selectable: selectable ?? (!leafOnly || (leafOnly && !children?.length)),\n children: children ? this.formatTreeData(children) : null\n }));\n },\n\n onChange(val) {\n this.$emit('change', val);\n }\n }\n};\n</script>\n","<!-- @Author: kaiwang -->\n<!-- @Date: 2022-3-24 17:46:10 -->\n<!-- @Last Modified by: kaiwang -->\n<!-- @Last Modified time: 2023-05-22 18:06:22 -->\n\n<template>\n <a-select\n v-model=\"compValue\"\n show-search\n v-bind=\"def.props\"\n :filter-option=\"filterOption\"\n @change=\"onChange\"\n @search=\"onSearch\"\n >\n <div\n slot=\"dropdownRender\"\n ref=\"list\"\n slot-scope=\"menu\"\n class=\"infinite-list-container\"\n @scroll=\"scrollEvent($event)\"\n >\n <div\n class=\"infinite-list-fake\"\n :style=\"{ height: fakeListHeight + 'px' }\"\n />\n <div\n class=\"infinite-list\"\n :style=\"{ transform: getTransform }\"\n >\n <v-nodes :vnodes=\"restructure(menu)\" />\n </div>\n </div>\n\n <a-select-option\n v-for=\"{label, value: val, pinyin, ...rest} in selectOptions\"\n v-bind=\"rest\"\n :key=\"val\"\n :value=\"val\"\n :pinyin=\"pinyin\"\n >\n <a-tooltip\n v-if=\"def.tooltipOption\"\n :title=\"label\"\n >\n {{ label }}\n </a-tooltip>\n <template v-else>\n {{ label }}\n </template>\n </a-select-option>\n </a-select>\n</template>\n\n<script>\nimport {enumType} from '../../../../mixin/index.js';\nimport {numbersToStr} from '../../../../util/object.js';\n\nexport default {\n name: 'FieldSelect',\n\n components: {\n VNodes: {\n functional: true,\n render: (h, ctx) => ctx.props.vnodes,\n }\n },\n\n mixins: [enumType],\n\n props: {\n value: {\n type: [Number, String, Array],\n default: undefined\n },\n\n def: {\n type: Object,\n required: true\n }\n },\n\n data() {\n const {def: {props: {mode}}, value} = this;\n const compValue = mode === 'multiple' && !value ? undefined : numbersToStr(value);\n\n return {\n compValue,\n searchText: undefined,\n changed: false,\n itemHeight: 32,\n screenHeight: 256,\n startOffset: 0,\n start: 0,\n end: null,\n validOptionsLength: 0\n };\n },\n\n computed: {\n selectOptions() {\n const {\n def: {validateSearch, autoSearchMinLen = Infinity},\n compValue,\n searchText,\n options\n } = this;\n\n if (validateSearch || options.length > autoSearchMinLen) {\n return options.filter(({value, pinyin}) => {\n if (searchText) {\n return pinyin.toLowerCase().indexOf(searchText.toLowerCase()) > -1;\n }\n\n return [].concat(compValue).includes(value);\n });\n }\n\n return options;\n },\n fakeListHeight() {\n return (this.validOptionsLength || this.selectOptions.length) * this.itemHeight;\n },\n visibleCount() {\n return Math.ceil(this.screenHeight / this.itemHeight);\n },\n getTransform() {\n return `translate3d(0,${this.startOffset}px,0)`;\n }\n },\n\n watch: {\n value(val) {\n if (val === this.compValue) return;\n\n const {def: {props: {mode}}} = this;\n if (mode === 'multiple' && !val) val = undefined;\n\n this.getSuperText(val);\n },\n\n wrappedEnumType() {\n const {value} = this;\n this.getSuperText(value);\n }\n },\n\n mounted() {\n this.end = this.start + this.visibleCount;\n },\n\n methods: {\n filterOption(input, option) {\n let target = option.componentOptions.children[0];\n if (this.def.tooltipOption) {\n target = target?.componentOptions.children[0];\n }\n\n return target?.text.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n },\n\n onChange(val) {\n const {wrappedEnumType, changed} = this;\n\n if (!changed && Array.isArray(val) && wrappedEnumType) {\n val = val.filter(item => wrappedEnumType.MAP[item]);\n this.changed = true;\n }\n\n this.$emit('change', val);\n },\n\n onSearch(val) {\n this.searchText = val;\n this.$emit('search', val);\n this.start = 0;\n this.end = this.start + this.visibleCount;\n this.startOffset = 0;\n const scrollEle = this?.$refs?.list;\n scrollEle?.scrollTo(0, 0);\n },\n\n getSuperText(value) {\n const {wrappedEnumType} = this;\n let res;\n const getText = key => {\n if (wrappedEnumType && !wrappedEnumType.MAP[key]) {\n return wrappedEnumType.getText(key);\n }\n\n return key;\n };\n\n if (Array.isArray(value)) {\n res = value.map(item => getText(item));\n } else {\n res = getText(value);\n }\n\n this.compValue = numbersToStr(res) ?? undefined;\n },\n\n scrollEvent() {\n const scrollEle = this?.$refs?.list;\n const scrollTop = scrollEle?.scrollTop;\n this.start = Math.floor(scrollTop / this.itemHeight);\n this.end = this.start + this.visibleCount;\n this.startOffset = scrollTop;\n },\n\n restructure(menu) {\n this.validOptionsLength = menu?.data?.props?.menuItems?.length;\n const menuItems = menu?.componentOptions?.propsData?.menuItems.slice(this.start, Math.min(this.end, this.validOptionsLength || this.selectOptions.length));\n this.$set(menu?.componentOptions?.propsData, 'menuItems', menuItems);\n\n return menu;\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n .infinite-list-container {\n height: 100%;\n overflow: auto;\n position: relative;\n -webkit-overflow-scrolling: touch;\n\n .infinite-list-fake {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n z-index: -1;\n }\n\n ::v-deep .ant-select-dropdown-menu {\n overflow: hidden;\n max-height: 256px;\n padding: 0;\n }\n }\n</style>\n","import DefType from '../../../constant/def-type.js';\nimport FieldButtonGroup from '../component/field-button-group.vue';\nimport FieldCascader from '../component/field-cascader.vue';\nimport FieldCode from '../component/field-code.vue';\nimport FieldFile from '../component/field-file.vue';\nimport FieldGroupForm from '../component/field-group-form.vue';\nimport FieldInput from '../component/field-input.vue';\nimport FieldSelect from '../component/field-select.vue';\nimport FieldSql from '../component/field-sql.vue';\nimport FieldTextarea from '../component/field-textarea.vue';\nimport FieldTree from '../component/field-tree.vue';\nimport FieldVirtualSelect from '../component/field-virtual-select/index.vue';\n\nconst getContainer = (trigger, dialogContext) => (dialogContext ? trigger.parentNode : document.body);\n\nexport const defaultPropsMap = {\n [DefType.select]: {\n placeholder: 'common.pleaseSelect',\n allowClear: true,\n showSearch: true,\n optionFilterProp: 'pinyin',\n getPopupContainer: getContainer\n },\n [DefType.cascader]: {\n placeholder: 'common.pleaseSelect',\n allowClear: true,\n getPopupContainer: getContainer\n },\n [DefType.virtualSelect]: {\n placeholder: 'common.pleaseSelect',\n allowClear: true,\n showSearch: true,\n optionFilterProp: 'pinyin',\n getPopupContainer: getContainer\n },\n [DefType.dateTime]: {\n showTime: true,\n getCalendarContainer: getContainer\n },\n [DefType.date]: {\n getCalendarContainer: getContainer\n },\n [DefType.time]: {\n getPopupContainer: getContainer\n },\n [DefType.tree]: {\n placeholder: 'common.pleaseSelect',\n allowClear: true,\n showSearch: true,\n treeDefaultExpandAll: true,\n dropdownStyle: {maxHeight: '400px', overflow: 'auto'},\n treeNodeFilterProp: 'title'\n },\n [DefType.color]: {\n type: 'color'\n }\n};\n\nexport default {\n [DefType.text]: FieldInput,\n [DefType.textarea]: FieldTextarea,\n [DefType.number]: 'a-input-number',\n [DefType.date]: 'a-date-picker',\n [DefType.dateTime]: 'a-date-picker',\n [DefType.dateRange]: 'a-range-picker',\n [DefType.time]: 'a-time-picker',\n [DefType.month]: 'a-month-picker',\n [DefType.switch]: 'a-switch',\n [DefType.select]: FieldSelect,\n [DefType.virtualSelect]: FieldVirtualSelect,\n [DefType.tree]: FieldTree,\n [DefType.checkbox]: 'field-checkbox',\n [DefType.radio]: 'field-radio',\n [DefType.file]: FieldFile,\n [DefType.code]: FieldCode,\n [DefType.sql]: FieldSql,\n [DefType.buttonGroup]: FieldButtonGroup,\n [DefType.markdown]: 'field-md-editor',\n [DefType.rich]: 'field-rich',\n [DefType.autoComplete]: 'field-auto-complete',\n [DefType.group]: FieldGroupForm,\n [DefType.cascader]: FieldCascader\n};\n","<template>\n <component\n :is=\"comp\"\n :key=\"timezone\"\n v-bind=\"def.props\"\n v-model=\"date\"\n @change=\"onChange\"\n />\n</template>\n\n<script>\nimport moment from 'moment';\nimport 'moment-timezone';\nimport {mapGetters} from 'vuex';\n\nimport FieldMap from '../constant/field-map.js';\n\nconst ModeMethodMap = {\n dayStart: ['startOf', 'day'],\n dayEnd: ['endOf', 'day'],\n secondStart: ['startOf', 'second'],\n secondEnd: ['endOf', 'second']\n};\n\nexport default {\n name: 'FieldDate',\n\n inject: {\n timestamp: {\n default: undefined\n }\n },\n\n model: {\n prop: 'value',\n event: 'change'\n },\n\n props: {\n value: {\n type: [Number, Array, String],\n default: undefined\n },\n\n def: {\n type: Object,\n required: true\n }\n },\n\n data() {\n return {\n date: null\n };\n },\n\n computed: {\n ...mapGetters(['timezone']),\n\n comp() {\n const {def} = this;\n\n return FieldMap[def.type];\n },\n\n isTimestamp() {\n return this.def.timestamp ?? ((this.$app?.timestamp ?? this.timestamp) !== false);\n }\n },\n\n watch: {\n value() {\n this.setDate();\n },\n\n timezone() {\n if (!this.isTimestamp) return;\n\n this.setDate();\n this.onChange(this.date);\n }\n },\n\n mounted() {\n this.setDate();\n },\n\n methods: {\n setDate() {\n const {def, timezone} = this;\n let {value: date} = this;\n\n if (Array.isArray(date)) {\n date = date.map(item => (typeof item === 'number' ? moment.tz(item, def.timezone || timezone) : item));\n } else if (date || date === 0) {\n if (def.type === 'time' && !this.isTimestamp) {\n date = moment.tz(date, def.props.format || 'HH:mm:ss', def.timezone || timezone);\n } else {\n date = moment.tz(date, def.timezone || timezone);\n }\n }\n\n this.date = date;\n },\n\n onChange(val, str) {\n const {def: {roundMode}, isTimestamp} = this;\n\n let timestampOrStr = str;\n if (isTimestamp || roundMode) {\n if (Array.isArray(val)) {\n timestampOrStr = val.map(date => this.dealWithRoundMode(date));\n } else {\n timestampOrStr = this.dealWithRoundMode(val);\n }\n }\n\n this.$emit('change', timestampOrStr);\n },\n\n dealWithRoundMode(date) {\n const {isTimestamp, def: {props: {format}}} = this;\n if (!date) return date;\n\n const {type} = this.def;\n let {roundMode} = this.def;\n let momentInstance = date;\n if (!roundMode && type === 'dateTime') {\n roundMode = 'secondStart';\n }\n\n if (roundMode && ModeMethodMap[roundMode]) {\n const [method, param] = ModeMethodMap[roundMode];\n\n momentInstance = date[method](param);\n }\n\n return isTimestamp ? momentInstance.valueOf() : momentInstance.format(format || 'YYYY-MM-DD HH:mm:ss');\n }\n }\n};\n</script>\n","<script>\nimport _ from 'underscore';\n\nimport DefType from '../../../constant/def-type.js';\nimport getFormat from '../../../util/format-map.js';\nimport {evalProp, pickValue, setValue, spreadProps} from '../../../util/object.js';\nimport {isComponent} from '../../util.js';\nimport FieldMap, {defaultPropsMap} from '../constant/field-map.js';\nimport FieldChildForm from './field-child-form.vue';\nimport FieldDate from './field-date.vue';\n\nexport default {\n name: 'FieldTableForm',\n\n props: {\n def: {\n type: Object,\n required: true\n },\n\n value: {\n type: Array,\n default: () => [{}]\n },\n\n ctx: {\n type: Object,\n default: () => ({})\n }\n },\n\n data() {\n return {\n form: this.$form.createForm(this),\n curValues: []\n };\n },\n\n computed: {\n canAdd() {\n const {def: {hasAdd = true, maxLen = Infinity}, ctx, curValues = []} = this;\n\n return evalProp(hasAdd, {ctx}) && curValues.length < maxLen;\n },\n\n canDelete() {\n const {def: {hasDelete = true, minLen = 0}, ctx, curValues = []} = this;\n\n return evalProp(hasDelete, {ctx}) && curValues.length > evalProp(minLen, {ctx});\n }\n },\n\n watch: {\n value(value) {\n if (this.def.tableOptions.sync && !_.isEqual(value, this.curValues)) {\n this.initCurValues(value);\n }\n }\n },\n\n mounted() {\n this.initCurValues(this.value);\n },\n\n methods: {\n renderSlot(name, props, fallback) {\n return this.$scopedSlots[name]?.(props) || fallback;\n },\n\n hasSlot(name) {\n return !!this.$scopedSlots[name];\n },\n\n singleHasDelete({record, index}) {\n const {def: {tableOptions: {hasDelete = true}}} = this;\n\n return evalProp(hasDelete, {value: record, extraData: {idx: index, curValues: this.curValues}});\n },\n\n formatValues(values, needTrim) {\n const {colDefs} = this.def.tableOptions;\n colDefs.forEach(({field, format, notrim}) => {\n const formattor = getFormat(format);\n let value = pickValue(values, field);\n let handled = false;\n if (needTrim && !notrim && value && typeof value === 'string') {\n value = value.trim();\n handled = true;\n }\n\n if (formattor) {\n value = formattor.unformat(value);\n handled = true;\n }\n\n if (handled) values = setValue(values, field, value);\n });\n\n return values;\n },\n\n getFormCtx() {\n const {ctx, form, curValues} = this;\n const values = curValues.reduce((acc, cur) => ({\n ...acc,\n [cur.feID]: cur\n }), {});\n let formValues = values;\n if (form.isFieldsTouched()) {\n const curFormValues = form.getFieldsValue();\n formValues = Object.keys(curFormValues).reduce((acc, feID) => {\n return {\n ...acc,\n [feID]: {...this.formatValues({...formValues[feID], ...curFormValues[feID]}), feID}\n };\n }, {});\n }\n\n return {\n ctx: ctx || this.$parent,\n ysf: this,\n form,\n values: formValues,\n initialValues: values,\n record: {\n ...values,\n ...formValues\n }\n };\n },\n\n getDecorator(def) {\n if (!def) return [];\n\n const {field, required = false, rules: originRules = [], format} = def;\n const formCtx = this.getFormCtx();\n const formattor = getFormat(format);\n // 兼容field是'a.b.c.d'的情况\n const [rowKey, ...colField] = field.split('.');\n const {curValues} = this;\n const values = curValues.find(item => rowKey === item.feID);\n let initialValue = pickValue(values, colField.join('.'));\n const valuePropName = def.type === DefType.switch ? 'checked' : 'value';\n\n if (formattor) {\n initialValue = formattor.format(initialValue);\n }\n\n const rules = [\n {required: evalProp(required, {...formCtx, rowValues: values}), message: this.$t('rule.required')},\n ...originRules.map(rule => {\n const {validator, message} = rule;\n if (validator) {\n return {\n ...rule,\n validator: (curRule, value, callback) => {\n const msgKey = validator({\n rule: curRule, value, rowKey,\n rowValues: formCtx.values[rowKey],\n ...formCtx\n });\n if (msgKey) {\n callback(this.$t(msgKey));\n\n return;\n }\n\n callback();\n }\n };\n }\n\n if (message) {\n return {\n ...rule,\n message: message.constructor === Function ? message(rule) : this.$t(message)\n };\n }\n\n return rule;\n })\n ];\n\n return [field, {initialValue, rules, valuePropName}];\n },\n\n getListeners(def) {\n const {field, enumType, type} = def;\n const {select} = DefType;\n const listeners = {};\n if ((!type && enumType) || select === type) {\n listeners.search = val => {\n this.$emit(`${field}Search`, val);\n };\n }\n\n return listeners;\n },\n\n renderFormItem(def, formCtx, rowKey) {\n const {\n tableOptions: {commonItemProps}\n } = this.def;\n const field = `${rowKey}.${def.field}`;\n const curDef = {...def, field, rowKey};\n const rowFormCtx = {...formCtx, rowValues: formCtx.values[rowKey]};\n const itemProps = {\n key: field,\n ...commonItemProps,\n ...def.itemProps\n };\n if (evalProp(curDef.hideCell, rowFormCtx)) {\n return (\n <a-form-item {...spreadProps(itemProps)}>\n <div>/</div>\n </a-form-item>\n );\n }\n\n const Comp = this.is(curDef, rowFormCtx);\n const scopedSlots = [\n 'head', 'foot', 'prefix', 'suffix', 'addonAfter', 'addonBefore', 'childFormExtraBtn', 'optionLabel'\n ].reduce((acc, name) => {\n const hasSlot = this.hasSlot(`${def.field}.${name}`);\n if (hasSlot) {\n acc[name] = args => {\n if (!Object.keys(args).length) return this.renderSlot(`${def.field}.${name}`, rowFormCtx);\n\n return this.renderSlot(`${def.field}.${name}`, {parent: rowFormCtx, child: args});\n };\n }\n\n return acc;\n }, {});\n\n const {props: {ref: defRef} = {}} = def;\n const ref = defRef && `${defRef}-${rowKey}`;\n const fallbackEl = (\n <Comp\n {...{\n directives: [{\n name: 'decorator',\n value: this.getDecorator(curDef)\n }],\n ...spreadProps(this.getProps(curDef)),\n ref,\n scopedSlots,\n on: {\n ...this.getListeners(curDef),\n change: $event => {\n this.onFieldChange({$event, def, rowKey});\n }\n }\n }}\n >\n </Comp>\n );\n const itemSuffixEl = this.renderSlot(`${def.field}.itemSuffix`, formCtx);\n if (itemSuffixEl) {\n const itemSuffixClass = 'yqg-form-item-has-suffix';\n const {class: className} = itemProps;\n if (!className) {\n itemProps.class = itemSuffixClass;\n } else {\n if (className.constructor === String) {\n itemProps.class = `${itemProps.class} ${itemSuffixClass}`;\n }\n\n if (className.constructor === Object) {\n className[itemSuffixClass] = true;\n }\n\n if (className.constructor === Array) {\n className.push(itemSuffixClass);\n }\n }\n }\n\n return (\n <a-form-item {...spreadProps(itemProps)}>\n {this.renderSlot(def.field, formCtx, fallbackEl)}\n {itemSuffixEl}\n </a-form-item>\n );\n },\n\n async onConfirm() {\n const {curValues, def} = this;\n if (!curValues.length) return {err: null, def, values: [], record: []};\n\n const refValidPromises = Object.values(this.$refs).filter(ref => ref && ref.onConfirm)\n .map(ref => ref.onConfirm());\n const selfValidPromise = new Promise(resolve => {\n this.form.validateFields((err, values) => {\n resolve({err, values, record: {...values}});\n });\n });\n\n const results = await Promise.all([selfValidPromise, ...refValidPromises]);\n let [{values, record}] = results;\n const err = results.reduce((acc, cur) => acc || cur.err, null);\n results.forEach(({def: curDef, record: refRecord, values: refValues}) => {\n if (curDef) {\n values = setValue(values, curDef.field, refValues);\n record = setValue(record, curDef.field, refRecord);\n }\n });\n\n const valueArr = [];\n const recordArr = [];\n Object.keys(values).forEach(key => {\n const initValue = curValues.find(({feID}) => feID === key);\n const curValue = this.formatValues(values[key], true);\n valueArr.push(curValue);\n recordArr.push({...initValue, ...curValue});\n });\n\n return {err, values: valueArr, record: recordArr, def};\n },\n\n initCurValues(value) {\n this.curValues = value?.map(val => ({...val, feID: _.uniqueId('row_id_')})) ?? [];\n },\n\n onAdd() {\n const {ctx, def: {getInitialValue, extendAdd}} = this;\n const initialValue = evalProp(getInitialValue, {ctx}) || {};\n initialValue.feID = _.uniqueId('row_id_');\n\n if (extendAdd) {\n extendAdd(this.curValues, {initialValue, ctx});\n } else {\n this.curValues.push(initialValue);\n }\n\n this.$nextTick(() => {\n this.onChange();\n });\n },\n\n onFieldChange({def, def: {onChange, field}, rowKey, $event}) {\n const {tableOptions: {sync}} = this.def;\n if (!sync && !onChange) return;\n\n const formCtx = this.getFormCtx();\n if (sync) {\n const {record} = formCtx;\n const value = $event?.target?.value ?? $event;\n const rowData = setValue({...record[rowKey]}, field, value);\n const idx = this.curValues.findIndex(item => item.feID === rowKey);\n this.curValues.splice(idx, 1, rowData);\n this.$emit('change', this.curValues);\n }\n\n if (onChange) {\n const rowFormCtx = {...formCtx, rowKey, rowValues: formCtx.values[rowKey], def};\n onChange({value: $event, ...rowFormCtx});\n }\n },\n\n onChange(idx, {record} = {}) {\n if (idx >= 0) {\n this.curValues.splice(idx, 1, record);\n }\n\n if (this.def.tableOptions.sync) {\n this.$emit('change', this.curValues);\n }\n },\n\n onDelete(idx) {\n this.curValues.splice(idx, 1);\n this.$nextTick(() => {\n this.onChange();\n });\n },\n\n getProps(def) {\n const {enumType, disabled, formOptions, field, rowKey, optionDisabled} = def;\n const {values, ...restFormCtx} = this.getFormCtx();\n const formCtx = {\n ...restFormCtx,\n values,\n rowValues: values[rowKey],\n value: pickValue(values, field)\n };\n let {type, props = {}} = def;\n if (!type) {\n type = enumType ? DefType.select : DefType.text;\n }\n\n props = {\n ...defaultPropsMap[type],\n ...evalProp(props, formCtx),\n disabled: evalProp(disabled, formCtx),\n optionDisabled: optionDisabled?.bind(null, formCtx)\n };\n if (enumType) {\n props.enumType = evalProp(enumType, formCtx);\n }\n\n if (formOptions) {\n props.ctx = formCtx.ctx;\n }\n\n const {placeholder} = props;\n if (placeholder) {\n props.placeholder = this.$t(placeholder);\n }\n\n if (type === DefType.file) {\n const {data, previewValue} = props;\n if (data) props.data = file => evalProp(data, {...formCtx, file});\n\n if (previewValue) {\n props.previewValue = evalProp(previewValue, formCtx);\n }\n }\n\n return {\n ...props,\n def: {\n ...def,\n props\n }\n };\n },\n\n is({type: originType, component, enumType, formOptions, tableOptions}, rowFormCtx) {\n let type = originType;\n if (!type && enumType) {\n type = 'select';\n }\n\n if (evalProp(component, rowFormCtx)) {\n return evalProp(component, rowFormCtx);\n }\n\n if (formOptions) {\n return FieldChildForm;\n }\n\n if (tableOptions) {\n return 'field-table-form';\n }\n\n const {date, dateTime, dateRange, time, month} = DefType;\n if ([date, dateTime, dateRange, time, month].includes(type)) {\n return FieldDate;\n }\n\n return FieldMap[type] || FieldMap.text;\n },\n\n getColSlots(defs) {\n const formCtx = this.getFormCtx();\n\n return defs.reduce((acc, def) => {\n const {field} = def;\n const slot = def.children\n ? this.getColSlots(def.children)\n : {\n [field]: props => {\n if (field === 'op') {\n const opFragments = [];\n const tableFormExtraBtnNode = this.renderSlot('childFormExtraBtn', {def, ...formCtx, feID: props.record.feID});\n if (tableFormExtraBtnNode) {\n opFragments.push(tableFormExtraBtnNode);\n }\n\n if (this.canDelete && this.singleHasDelete(props)) {\n opFragments.push((\n <a-button\n type='danger'\n icon='delete'\n size='small'\n vOn:click={this.onDelete.bind(null, props.index)}\n />\n ));\n }\n\n return opFragments?.length ? opFragments : '-';\n }\n\n return (field === '_idx' && (<span>{props.index + 1}</span>))\n || this.renderFormItem(def, formCtx, props.record.feID);\n }\n };\n\n return {\n ...acc,\n ...slot,\n };\n }, {});\n }\n },\n\n render() {\n const {\n form, curValues, canAdd, canDelete, getColSlots,\n def: {\n tableOptions: {formProps, colDefs: defs, ...rest},\n idxLabel = '#',\n addBtnText = 'common.add',\n hideIdx,\n idxProps,\n opProps = {},\n }\n } = this;\n const hasExtraBtns = this.hasSlot('childFormExtraBtn');\n const formCtx = this.getFormCtx();\n const rowKey = 'feID';\n const op = {field: 'op', label: 'common.op', ...opProps};\n const colDefs = [\n ...(hideIdx ? [] : [{field: '_idx', label: this.$t(idxLabel), ...idxProps}]),\n ...defs.filter(def => !evalProp(def.hide, formCtx)),\n ...(canDelete || hasExtraBtns ? [op] : [])\n ];\n const tableOptions = {rowKey, scroll: {x: 0}, colDefs, ...rest};\n\n const titleSlot = ({title, def}) => {\n const {labelComp} = def;\n const required = evalProp(def.required, formCtx);\n const labelClass = `d-flex align-items-center ${required ? 'required-title' : ''}`;\n\n return (\n <div class={labelClass}>{isComponent(labelComp) ? <labelComp {...spreadProps({...formCtx, def})} /> : title}</div>\n );\n };\n\n return (\n <div class='field-table-form'>\n <a-form {...{props: {...formProps, form}, attrs: {autocomplete: 'off'}}}>\n <yqg-simple-table\n options={tableOptions}\n records={curValues}\n scopedSlots={{...getColSlots(colDefs), title: titleSlot}}\n pagination={false}\n />\n </a-form>\n {canAdd ? (\n <div class=\"field-table-form-add-btn-wrapper\">\n <a-button class=\"field-table-form-add-btn mt10\" icon='plus' vOn:click={this.onAdd}>\n {this.$t(addBtnText)}\n </a-button>\n </div>\n ) : null}\n </div>\n );\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.field-table-form {\n .ant-form-item {\n margin-bottom: 0;\n }\n\n .required-title {\n &::before {\n content: \"*\";\n color: #f5222d;\n margin-right: 4px;\n font-family: SimSun, sans-serif;\n display: inline-block;\n line-height: 1;\n }\n }\n\n &-add-btn-wrapper {\n text-align: left;\n }\n}\n</style>\n","<!-- @Author: ruiwang -->\n<!-- @Date: 2019-11-18 20:05:04 -->\n<!-- @Last Modified by: weisun -->\n<!-- @Last Modified time: 2023-06-19 18:56:31 -->\n\n<script>\nimport elementResizeDetectorMaker from 'element-resize-detector';\nimport {mapGetters} from 'vuex';\n\nimport DefType from '../../constant/def-type.js';\nimport getFormat from '../../util/format-map.js';\nimport {setStorage, getStorage} from '../../util/local-storage.js';\nimport {evalProp, setValue, pickValue, spreadProps, appendClass, spreadObjectKeys, merge} from '../../util/object.js';\nimport {isComponent, isStorageValuesEqual} from '../util.js';\nimport FieldChildForm from './component/field-child-form.vue';\nimport FieldDate from './component/field-date.vue';\nimport FieldTableForm from './component/field-table-form.vue';\nimport FieldMap, {defaultPropsMap} from './constant/field-map.js';\n\nconst DefaultLabelCol = {span: 4};\n\nexport default {\n name: 'YqgSimpleForm',\n\n inject: {\n timezoneKey: {default: ''},\n isValidDef: {default: () => x => x},\n formErd: {default: () => () => null},\n textareaListLineTrim: {default: false} // Each line of textarea list need trim\n },\n\n provide() {\n return {\n formErd: () => this.erd,\n setCustomInitialValue: (initialValue, forceUpdate = false) => {\n this.customInitialValues = {...this.customInitialValues, ...initialValue};\n if (forceUpdate && this.autoSearch) {\n this.onReset();\n }\n }\n };\n },\n\n model: {\n prop: 'values',\n event: 'update'\n },\n\n props: {\n ctx: {\n type: Object,\n default: null\n },\n title: {\n type: String,\n default: ''\n },\n confirmLabel: {\n type: String,\n default: 'common.confirm'\n },\n confirmProps: {\n type: Object,\n default: null\n },\n cancelProps: {\n type: Object,\n default: null\n },\n cancelLabel: {\n type: String,\n default: 'common.cancel'\n },\n resetLabel: {\n type: String,\n default: 'common.reset'\n },\n defaultValues: {\n type: Object,\n default: () => ({})\n },\n values: {\n type: Object,\n default: () => ({})\n },\n options: {\n type: Object,\n required: true\n },\n autoSearch: {\n type: Boolean,\n default: false\n },\n enterSubmit: {\n type: Boolean,\n default: true\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n layout: {\n type: String,\n default: ''\n },\n autoSaveKey: {\n type: String,\n default: ''\n },\n idx: {\n type: Number,\n default: null\n },\n fieldParent: {\n type: Object,\n default: () => ({})\n },\n showFieldPath: {\n type: Boolean,\n default: false\n }\n },\n\n data() {\n return {\n form: this.$form.createForm(this),\n btnItemLabel: ' ',\n erd: null,\n customInitialValues: null,\n interval: null\n };\n },\n\n computed: {\n ...mapGetters(['timezone']),\n\n formLayout() {\n return this.layout || this.options.layout || 'inline';\n },\n\n colObj() {\n const {formLayout, options: {labelCol = DefaultLabelCol, wrapperCol}} = this;\n\n return formLayout === 'horizontal' ? {\n labelCol,\n wrapperCol: wrapperCol || {span: 24 - labelCol.span}\n } : {};\n },\n\n formOptions() {\n const {\n formLayout: layout,\n options: {\n fieldDefs,\n row = {type: 'flex', gutter: 10, justify: 'space-between'},\n column = {span: 24},\n commonItemProps: defItemProps = {},\n ...rest\n },\n colObj\n } = this;\n const commonItemProps = {colon: false, ...defItemProps};\n const isValidDef = this.$app?.isValidDef || this.isValidDef;\n\n return {\n fieldDefs: fieldDefs.filter(def => def && isValidDef(def)),\n commonItemProps,\n row,\n column,\n formProps: {\n layout,\n ...rest,\n ...colObj\n }\n };\n },\n\n initialValues() {\n const {\n values,\n defaultValues,\n customInitialValues,\n options: {defaultValues: optionDefaultValues}\n } = this;\n\n return {\n ...optionDefaultValues,\n ...defaultValues,\n ...spreadObjectKeys(customInitialValues),\n ...values\n };\n },\n\n fieldPathCacheMap() {\n if (!this.showFieldPath) {\n return {};\n }\n\n const {fieldDefs} = this.formOptions; // fieldDefs这里 def一定存在,formOption已经前置筛过一次\n\n return fieldDefs.reduce((map, def) => {\n if (def.field) {\n map[def.field] = this.getFullFieldPath(def);\n }\n\n return map;\n }, {});\n }\n\n },\n\n watch: {\n '$i18n.locale': function watchLocale() {\n if (this.erd) this.$nextTick(this.adjustBtnItemLabel);\n }\n },\n\n beforeMount() {\n const formErd = this.formErd();\n this.erd = formErd ? formErd : elementResizeDetectorMaker({strategy: 'scroll'});\n if (this.formLayout === 'inline') {\n this.$once('hook:mounted', () => {\n this.erd.listenTo(this.$el, this.adjustBtnItemLabel);\n });\n this.$once('hook:beforeDestroy', () => {\n if (this.erd) this.erd.uninstall(this.$el);\n });\n }\n },\n\n mounted() {\n const {autoSearch, autoSaveKey, $t, form, setStorageInteval} = this;\n if (autoSearch) this.onReset();\n\n if (autoSaveKey) {\n const storageVO = JSON.parse(getStorage(autoSaveKey));\n const {record} = this.getFormCtx();\n\n if (storageVO && !isStorageValuesEqual(storageVO, record)) {\n this.$confirm({\n title: $t('common.saveTips'),\n onOk() {\n const realTimeVO = {...record, ...storageVO};\n\n form.setFieldsValue(realTimeVO);\n\n setStorageInteval();\n },\n onCancel() {\n setStorageInteval();\n }\n });\n } else {\n setStorageInteval();\n }\n }\n },\n\n deactivated() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n },\n\n methods: {\n adjustBtnItemLabel() {\n const {$refs: {btnItem}} = this;\n let label = ' ';\n if (btnItem) {\n const el = btnItem.$el;\n const parentEl = el.parentElement;\n if (el.getBoundingClientRect().x === parentEl.getBoundingClientRect().x) {\n label = null;\n }\n }\n\n this.btnItemLabel = label;\n },\n\n getValidInitialValues() {\n const {options: {fieldDefs, strictRecord}, initialValues, form} = this;\n if (!strictRecord || !form.isFieldsTouched()) return initialValues;\n\n let initial = JSON.parse(JSON.stringify(initialValues || {}));\n const fieldsWithHideOption = fieldDefs.filter(def => def.hide).map(def => def.field);\n const validFieldValues = form.getFieldsValue();\n fieldsWithHideOption.forEach(field => {\n const val = pickValue(validFieldValues, field);\n if (!val && val !== 0) {\n initial = setValue(initial, field, undefined);\n }\n });\n\n return initial;\n },\n\n getFormCtx() {\n const {ctx, form, idx} = this;\n\n const initialValues = this.getValidInitialValues();\n const formValues = form.isFieldsTouched() ? this.formatValues(form.getFieldsValue()) : initialValues;\n\n return {\n ctx: ctx || this.$parent,\n ysf: this,\n form,\n values: formValues,\n initialValues,\n record: {\n ...initialValues,\n ...formValues\n },\n idx\n };\n },\n\n onChange(event, def) {\n const {field, onChange} = def;\n if (!onChange && !this.$listeners.change) return;\n\n this.$nextTick(() => {\n const {values, ...rest} = this.getFormCtx();\n const params = {\n ...rest,\n values,\n value: pickValue(values, field),\n def\n };\n this.$emit('change', params);\n this.$emit('update:values', values);\n if (onChange) {\n onChange(params);\n }\n });\n },\n\n is({type, component, enumType, formOptions, tableOptions}) {\n if (!type && enumType) {\n type = 'select';\n }\n\n if (component) {\n return component;\n }\n\n if (formOptions) {\n return FieldChildForm;\n }\n\n if (tableOptions) {\n return FieldTableForm;\n }\n\n const formCtx = this.getFormCtx();\n type = evalProp(type, formCtx);\n\n const {date, dateTime, dateRange, time, month} = DefType;\n if ([date, dateTime, dateRange, time, month].includes(type)) {\n return FieldDate;\n }\n\n return FieldMap[type] || FieldMap.text;\n },\n\n getDecorator(def) {\n if (!def) return [];\n\n const {field, required = false, rules: originRules = [], format} = def;\n const formCtx = this.getFormCtx();\n\n const formattor = getFormat(format);\n let initialValue = pickValue(formCtx.initialValues, field);\n const valuePropName = def.type === DefType.switch ? 'checked' : 'value';\n\n if (formattor) {\n initialValue = formattor.format(initialValue);\n }\n\n const rules = [\n {required: evalProp(required, formCtx), message: this.$t('rule.required')},\n ...originRules.map(rule => {\n const {validator, message} = rule;\n if (validator) {\n return {\n ...rule,\n validator: (curRule, value, callback) => {\n const msgKey = validator({rule: curRule, value, ...formCtx});\n if (msgKey) {\n callback(this.$t(msgKey));\n\n return;\n }\n\n callback();\n }\n };\n }\n\n if (message) {\n return {\n ...rule,\n message: message.constructor === Function ? message(rule, this.$t) : this.$t(message)\n };\n }\n\n return rule;\n })\n ];\n\n return [field, {initialValue, rules, valuePropName}];\n },\n\n getProps(def) {\n const {enumType, disabled, formOptions, tableOptions, field, optionDisabled, useYsfAsCtx} = def;\n const formCtx = this.getFormCtx();\n formCtx.value = pickValue(formCtx.values, field);\n let {type, props = {}} = def;\n if (!type) {\n type = enumType ? DefType.select : DefType.text;\n }\n\n props = {\n ...defaultPropsMap[type],\n ...evalProp(props, formCtx),\n disabled: evalProp(disabled, formCtx),\n optionDisabled: optionDisabled?.bind(null, formCtx),\n ctx: formCtx\n };\n\n if (this.showFieldPath) {\n props = {\n ...props,\n fieldParent: {form: this, def},\n showFieldPath: true\n };\n }\n\n if (enumType) {\n props.enumType = evalProp(enumType, formCtx);\n }\n\n if (formOptions || tableOptions) {\n props.ctx = useYsfAsCtx ? this : formCtx.ctx;\n }\n\n const {placeholder} = props;\n if (placeholder) {\n props.placeholder = typeof placeholder === 'string' ? this.$t(evalProp(placeholder, formCtx)) : evalProp(placeholder, formCtx);\n }\n\n const textKeys = ['addonBefore', 'addonAfter'];\n textKeys.forEach(key => {\n if (props[key]) {\n props[key] = this.$t(evalProp(props[key], formCtx));\n }\n });\n\n if (type === DefType.file) {\n const {data, previewValue} = props;\n if (data) props.data = file => evalProp(data, {...formCtx, file});\n\n if (previewValue) {\n props.previewValue = evalProp(previewValue, {...formCtx, def});\n }\n }\n\n return {\n ...props,\n def: {\n ...def,\n props\n }\n };\n },\n\n getListeners(def) {\n const {field, enumType, type, formOptions, component} = def;\n const {text, textarea, select, virtualSelect, number} = DefType;\n const listeners = {};\n if ((!type && !enumType && !formOptions && !component) || [text, textarea, number].includes(type)) {\n listeners.pressEnter = () => {\n this.$emit(`${field}PressEnter`, this.getFormCtx());\n if (this.enterSubmit && type !== textarea && this.$listeners.confirm) { // input 回车 提交\n this.onConfirm();\n }\n };\n\n listeners.blur = val => {\n this.$emit(`${field}Blur`, val);\n };\n }\n\n if ((!type && enumType) || select === type || virtualSelect === type) {\n listeners.search = val => {\n this.$emit(`${field}Search`, val);\n };\n }\n\n return listeners;\n },\n\n onReset() {\n this.form.resetFields();\n const formCtx = this.getFormCtx();\n this.$emit('reset', formCtx);\n this.$emit('change', formCtx);\n },\n\n onCancel() {\n this.$emit('cancel', {form: this.form});\n },\n\n formatValues(values, needTrim) {\n const {fieldDefs} = this.formOptions;\n fieldDefs.forEach(({field, format, notrim, lineTrim, enumType}) => {\n const formattor = getFormat(format);\n let value = pickValue(values, field);\n let handled = false;\n if (\n needTrim\n && !notrim\n && !enumType\n && value\n && typeof value === 'string'\n ) {\n value = value.trim();\n handled = true;\n }\n\n if (formattor) {\n value = formattor.unformat(value, {\n lineTrim: lineTrim ?? this.textareaListLineTrim\n });\n handled = true;\n }\n\n if (handled) values = setValue(values, field, value);\n });\n\n return values;\n },\n\n // 有 onConfirm 的都认为是子表单\n // field-child-form field-group-form field-table-form\n getChildForms() {\n const {$refs} = this;\n\n return Object.values($refs).filter(ref => ref.onConfirm);\n },\n\n getFormValues() {\n const {options: {mergeRecord = false}} = this;\n const ctx = this.getFormCtx();\n const {initialValues} = ctx;\n let {values} = ctx;\n\n let record = !mergeRecord\n ? {...initialValues, ...values}\n : merge(initialValues, values);\n\n // 子表单内可能没有触发过 $emit('change')\n // 数据不能通过父表单 form.getFieldsValue 得到\n // 需要把子表单的数据添加到 record values 上\n // TODO: field-table-form 还没有实现 getFormValues\n this.getChildForms()\n .filter(childForm => childForm.getFormValues)\n .map(childForm => childForm.getFormValues())\n .filter(({def}) => def)\n .forEach(({def: {field}, record: childFormRecord, values: childFormValues}) => {\n values = setValue(values, field, childFormValues);\n record = setValue(record, field, childFormRecord);\n });\n\n return {values, record};\n },\n\n async onConfirm() {\n const refValidPromises = Object.values(this.$refs).filter(ref => ref && ref.onConfirm)\n .map(ref => ref.onConfirm());\n let results = await Promise.all(refValidPromises);\n const {options: {mergeRecord = false}} = this;\n const initialValues = this.getValidInitialValues();\n const selfValidPromise = new Promise(resolve => {\n this.form.validateFields((err, values) => {\n // 不管校验有没问题,还是要format下,以免把没format的值吐出去\n values = this.formatValues(values, true);\n resolve({err, values, record: !mergeRecord ? {...initialValues, ...values} : merge(initialValues, values)});\n });\n });\n results = [await selfValidPromise].concat(results);\n const err = results.reduce((acc, cur) => acc || cur.err, null);\n let [{values, record}] = results;\n if (!err) {\n results.forEach(({def, record: refRecord, values: refValues}) => {\n if (def) {\n values = setValue(values, def.field, refValues);\n record = setValue(record, def.field, refRecord);\n }\n });\n\n if (this.autoSaveKey) {\n setStorage(this.autoSaveKey, JSON.stringify(null));\n }\n\n this.$emit('confirm', {\n ysf: this,\n form: this.form,\n values,\n record\n });\n } else {\n this.$emit('error', {err, values, record});\n }\n\n return {err, values, record};\n },\n\n setStorageInteval() {\n const {autoSaveKey, interval} = this;\n if (interval) return;\n\n this.interval = setInterval(() => {\n const storageVO = JSON.parse(getStorage(autoSaveKey));\n const {record} = this.getFormCtx();\n\n if (!isStorageValuesEqual(storageVO, record)) {\n setStorage(autoSaveKey, JSON.stringify(record));\n }\n }, 1e4);\n },\n\n renderSlot(name, props, fallback) {\n return this.$scopedSlots[name]?.(props) || fallback;\n },\n\n hasSlot(name) {\n return !!this.$scopedSlots[name];\n },\n\n renderFormBtns(formCtx) {\n const {\n formLayout: layout,\n btnItemLabel,\n resetLabel,\n confirmLabel,\n confirmProps,\n cancelProps,\n cancelLabel,\n $listeners,\n onReset,\n onConfirm,\n onCancel\n } = this;\n const fallbackBtns = [$listeners.reset && resetLabel && (\n <a-button\n vOn:click={onReset}\n >\n {this.$t(resetLabel)}\n </a-button>\n ), $listeners.cancel && cancelLabel && (\n <a-button\n {...spreadProps({...cancelProps})}\n vOn:click={onCancel}\n >\n {this.$t(cancelLabel)}\n </a-button>\n ), $listeners.confirm && confirmLabel && (\n <a-button\n {...spreadProps({type: 'primary', ...confirmProps})}\n vOn:click={onConfirm}\n data-click-gate={confirmProps?.['data-click-gate'] || false}\n >\n {this.$t(confirmLabel)}\n </a-button>\n )].filter(item => item);\n if (!fallbackBtns.length && !this.hasSlot('extraBtns') && !this.hasSlot('btns')) return null;\n\n let Comp = 'div';\n let ref = '';\n const props = {};\n if (layout === 'inline') {\n Comp = 'a-form-item';\n ref = 'btnItem';\n Object.assign(props, {\n colon: false,\n label: btnItemLabel\n });\n }\n\n return (\n <Comp class=\"yqg-form-btn-item\" {...{props, ref}}>\n {this.renderSlot('btns', formCtx, fallbackBtns)}\n {this.renderSlot('extraBtns', formCtx)}\n </Comp>\n );\n },\n\n // 补全字段路径\n getFullFieldPath(def) {\n const path = [def.field];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n let fieldParent = this.fieldParent || {};\n let parentForm = fieldParent.form;\n let parentDef = fieldParent.def;\n // 从当前表单开始,逐级向上查找父表单,直到找到根表单为止\n while (parentForm && parentDef && current) {\n path.push(current.idx, parentDef.field);\n\n current = parentForm;\n fieldParent = current.fieldParent || {};\n parentForm = fieldParent.form;\n parentDef = fieldParent.def;\n }\n\n return path.reverse().join('.');\n },\n\n renderFormItem(def, formCtx) {\n const {\n timezone,\n formOptions: {commonItemProps}\n } = this;\n\n const labelIsComp = isComponent(def.labelComp);\n const itemLabel = labelIsComp ? def.labelComp : this.$t(evalProp(def.label, formCtx), def.labelParam || []);\n let dataFieldPath = '';\n // 如果 showFieldPath 为 true,则补全字段路径\n if (this.showFieldPath) {\n dataFieldPath = this.fieldPathCacheMap[def.field] || '';\n }\n\n const itemProps = {\n key: def.field,\n ...commonItemProps,\n ...evalProp(def.itemProps, formCtx)\n };\n\n const {extra} = itemProps;\n if (extra) itemProps.extra = this.$t(evalProp(extra, formCtx));\n itemProps.class = appendClass(itemProps.class, `yqg-form-item-${def.type ?? 'anonymous'}`);\n const timezoneKey = this.$app?.timezoneKey || this.timezoneKey;\n const timezoneVisible = timezoneKey && def.label && ['date', 'dateTime'].includes(def.type);\n const labelSlotName = `${def.field}.label`;\n const hasLabelSlot = this.hasSlot(labelSlotName);\n const showLabelAsSlot = timezoneVisible || hasLabelSlot || labelIsComp;\n if (!showLabelAsSlot) {\n itemProps.label = itemLabel;\n }\n\n const Comp = this.is(def);\n const scopedSlots = [\n 'head', 'foot', 'prefix', 'suffix', 'addonAfter', 'addonBefore', 'childFormExtraBtn', 'optionLabel'\n ].reduce((acc, name) => {\n const hasSlot = this.hasSlot(`${def.field}.${name}`);\n if (hasSlot) {\n acc[name] = args => {\n if (!Object.keys(args).length) return this.renderSlot(`${def.field}.${name}`, formCtx);\n\n return this.renderSlot(`${def.field}.${name}`, {parent: formCtx, child: args});\n };\n }\n\n return acc;\n }, {});\n\n const fallbackEl = (\n <Comp\n {...{\n directives: [{\n name: 'decorator',\n value: this.getDecorator(def)\n }],\n ...spreadProps(this.getProps(def)),\n scopedSlots,\n on: {\n ...this.getListeners(def),\n change: $event => this.onChange($event, def)\n }\n }}\n >\n </Comp>\n );\n const itemSuffixEl = this.renderSlot(`${def.field}.itemSuffix`, formCtx);\n if (itemSuffixEl) {\n itemProps.class = appendClass(itemProps.class, 'yqg-form-item-has-suffix');\n }\n\n return (\n <a-form-item {...spreadProps(itemProps)} data-field-path={dataFieldPath}>\n {showLabelAsSlot && (\n <span slot=\"label\">\n {\n hasLabelSlot\n ? this.renderSlot(labelSlotName, {...formCtx, def})\n : labelIsComp\n ? <itemLabel {...spreadProps({...formCtx, def})} />\n : itemLabel\n }\n {timezoneVisible && (\n <span class=\"yqg-text-danger\">\n {this.$t(timezoneKey)[timezone]}\n </span>\n )}\n </span>\n )}\n {this.renderSlot(def.field, formCtx, fallbackEl)}\n {itemSuffixEl}\n </a-form-item>\n );\n },\n\n renderColItem(def, formCtx) {\n const {\n formOptions: {column}\n } = this;\n const colProps = {\n key: def.field,\n ...column,\n ...(def && evalProp(def.col, formCtx))\n };\n\n return (\n <a-col {...spreadProps(colProps)}>\n {this.renderFormItem(def, formCtx)}\n </a-col>\n );\n }\n },\n\n render() {\n const {\n form,\n title,\n formLayout: layout,\n autocomplete,\n formOptions: {formProps, fieldDefs, row}\n } = this;\n const formCtx = this.getFormCtx();\n const items = fieldDefs\n .filter(def => !evalProp(def.hide, formCtx))\n .map(def => {\n if (layout === 'vertical') {\n return this.renderColItem(def, formCtx);\n }\n\n return this.renderFormItem(def, formCtx);\n });\n\n return (\n <div class=\"yqg-simple-form\">\n {this.renderSlot('title', formCtx, title && (\n <div class=\"yqg-form-title\">\n {this.$t(title)}\n </div>\n ))}\n {this.renderSlot('topBtns', formCtx)}\n <a-form {...{props: {...formProps, form}, attrs: {autocomplete}}}>\n {layout !== 'vertical' ? items : (\n <a-row {...spreadProps(row)}>\n {items}\n </a-row>\n )}\n {this.renderSlot('default', formCtx)}\n {this.renderFormBtns(formCtx)}\n </a-form>\n </div>\n );\n }\n};\n</script>\n\n<style lang=\"scss\" src=\"./index.scss\"></style>\n\n","<!-- @Author: xiaodongyu -->\n<!-- @Date: 2019/11/15-10:47 -->\n<!-- @Last Modified by: likaiqi -->\n<!-- @Last Modified time: 2023-10-18 19:17:34 -->\n\n<template>\n <div class=\"yqg-modal-wrapper\">\n <a-modal\n v-for=\"({\n visible,\n isForegroundWatermark,\n modalComponent,\n componentProps,\n dialogProps,\n close,\n dismiss,\n afterClose,\n watermarkStyle,\n getContainer\n }, key) in modalMap\"\n :key=\"key\"\n v-bind=\"{\n visible,\n afterClose,\n destroyOnClose: true,\n maskClosable: false,\n footer: modalComponent.onlyClose ? undefined : null,\n width: 768,\n style: { overflowX: 'hidden', overflowY: 'auto' },\n bodyStyle: !isForegroundWatermark ? watermarkStyle : {},\n getContainer: getContainer ? getContainer : () => $el,\n ...modalComponent.dialogProps,\n ...dialogProps\n }\"\n @cancel=\"dismiss\"\n >\n <component\n :is=\"modalComponent\"\n v-bind=\"getModalComponentProps({\n modalComponent,\n componentProps,\n close,\n dismiss\n })\"\n v-on=\"{\n close,\n dismiss,\n ...(componentProps && componentProps.vOn)\n }\"\n />\n <div\n v-if=\"isForegroundWatermark\"\n :style=\"watermarkStyle\"\n class=\"watermark-foreground\"\n />\n <template\n v-if=\"modalComponent.onlyClose\"\n #footer\n >\n <a-button\n @click=\"close\"\n v-text=\"$t('common.close')\"\n />\n </template>\n </a-modal>\n </div>\n</template>\n<script type=\"text/babel\">\nimport _ from 'underscore';\nimport Vue from 'vue';\n\nimport {watermark, modal} from '../mixin/index.js';\nimport {hasBaseUi} from './util.js';\n\n\nlet count = 0;\n\nexport default {\n name: 'YqgSimpleModal',\n\n mixins: [watermark],\n\n props: {\n disableWatermark: {\n type: Boolean,\n default: false\n },\n\n watermarkStyle: Object\n },\n\n data() {\n return {\n modalMap: {}\n };\n },\n\n beforeCreate() {\n this.$nextTick(() => {\n if (count > 1) {\n throw new Error('YqgSimpleModal is singleton pattern!');\n }\n });\n\n count += 1;\n },\n\n created() {\n const {open, clearModals, $router} = this;\n const modalKey = hasBaseUi() ? '$amodal' : '$modal';\n Vue.prototype[modalKey] = {\n open,\n clearModals\n };\n $router.beforeEach((from, to, next) => {\n clearModals();\n next();\n });\n },\n\n beforeDestroy() {\n count -= 1;\n },\n\n methods: {\n open(modalComponent, componentProps, options) {\n const {modalMap, closeModal, clearModal, disableWatermark} = this;\n const {dialogProps, getContainer} = options || {};\n\n return new Promise((resolve, reject) => {\n const key = `${modalComponent.name}-${Object.keys(modalMap).length}`;\n const close = (...args) => {\n closeModal(key);\n resolve(...args);\n };\n\n const dismiss = (...args) => {\n closeModal(key);\n reject(...args);\n };\n\n const afterClose = () => clearModal(key);\n const watermarkStyle = disableWatermark ? {} : this.watermarkStyle ?? this.getBackgroundImage();\n this.modalMap = {\n ...modalMap,\n [key]: {\n key,\n visible: true,\n isForegroundWatermark: modalComponent.watermark === 'foreground',\n modalComponent,\n componentProps,\n dialogProps,\n close,\n dismiss,\n afterClose,\n watermarkStyle,\n getContainer\n }\n };\n });\n },\n\n getModalComponentProps({modalComponent, componentProps, close, dismiss}) {\n const {vOn, ...restProps} = componentProps ?? {}; // eslint-disable-line @typescript-eslint/no-unused-vars\n if (modalComponent.mixins?.includes(modal) || modalComponent?.mixins?.some(item => _.isEqual(item, modal)) || modalComponent.functional) {\n return {\n ...restProps,\n close,\n dismiss\n };\n }\n\n Object.entries({close, dismiss}).forEach(([propName, func]) => {\n if (modalComponent.props?.[propName]) {\n restProps[propName] = func;\n }\n });\n\n return restProps;\n },\n\n closeModal(key) {\n const {modalMap} = this;\n if (modalMap[key]) {\n this.$set(modalMap, key, {\n ...modalMap[key],\n visible: false\n });\n }\n },\n\n clearModal(key) {\n this.$delete(this.modalMap, key);\n },\n\n clearModals() {\n this.modalMap = {};\n }\n }\n};\n</script>\n<style lang=\"scss\" rel=\"stylesheet/scss\" scoped>\n.watermark-foreground {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n</style>\n","/**\n * @Author: xiaodongyu\n * @Date: 2023-02-28 14:40:22\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2023-02-28 14:41:16\n */\n\nimport { pickValue } from '../util/object.js';\n\nexport const DEFAULT_PAGINATION = {\n pageSizeOptions: ['10', '20', '50', '100', '200'],\n showSizeChanger: true\n};\n\nexport const DEFAULT_TABLE_OPTIONS = {\n bordered: true,\n scroll: { x: true },\n rowKey: 'id'\n};\nexport const ClientSorterMap = {\n number: field => (record1, record2) => {\n const val1 = pickValue(record1, field) || 0;\n const val2 = pickValue(record2, field) || 0;\n\n return val1 - val2;\n },\n string: field => (record1, record2) => {\n const val1 = pickValue(record1, field) || '';\n const val2 = pickValue(record2, field) || '';\n\n return `${val1}`.localeCompare(`${val2}`);\n }\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/*\n * @Author: ruiwang\n * @Date 2023-03-02 16:17:53\n * @Last Modified by: ruiwang\n * @Last Modified time: 2023-03-02 18:45:08\n */\n\nexport default {\n methods: {\n genSlots({def, parentIndex}) {\n const scopedSlots = Object.keys(this.$scopedSlots)\n .filter(slotKey => slotKey.startsWith(`${def.field}.`))\n .reduce((acc, cur) => {\n const name = cur.replace(`${def.field}.`, '');\n acc[name] = args => {\n return this.renderSlot(cur, {...args, parentIndex});\n };\n\n return acc;\n }, {});\n\n return scopedSlots;\n },\n\n renderSlot(name: string, props: any, fallback: any) {\n return this.$scopedSlots[name]?.(props) || fallback;\n }\n }\n};\n","/*\n * @Author: qxy\n * @Date: 2020-07-23 15:10:22\n * @Last Modified by: huayizhang\n * @Last Modified time: 2022-10-20 18:15:32\n */\n\nconst isString = value => (typeof value === 'string');\n/* 驼峰转换为下划线链接,例如camelStr => camel_str */\nexport const camelCaseToUnderscore = camelStr => (\n isString(camelStr) ? camelStr.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase() : camelStr\n);\n","<!-- @Author: xiaodongyu -->\n<!-- @date 2019-11-20 10:18:31 -->\n<!-- @Last Modified by: 刘祯昆 -->\n<!-- @Last Modified time: 2025-04-09 11:25:26 -->\n\n<template>\n <a-config-provider\n v-if=\"records\"\n :render-empty=\"renderEmpty\"\n >\n <div :class=\"['yqg-simple-table', renderEmpty ? 'custom-empty-table' : '']\">\n <div class=\"yst-header yqg-clear-float\">\n <a-input-search\n v-if=\"enableClientSearch\"\n :value=\"searchText\"\n :placeholder=\"isSearchTableRendering ? $t('table.searchLoading') : $t('table.searchPlaceholder')\"\n class=\"search-input\"\n :disabled=\"isSearchTableRendering\"\n :loading=\"isSearchTableRendering\"\n @change=\"onSearch\"\n />\n\n <slot name=\"yst-extra-header\" />\n\n <a-button\n v-if=\"$listeners['export-current-page']\"\n style=\"float: right;\"\n size=\"small\"\n @click=\"onExportCurrentPage\"\n >\n {{ $t('table.exportCurrentPage') }}\n </a-button>\n </div>\n <p\n v-if=\"options.enableClientSort && $listeners.change\"\n class=\"client-sort-tip\"\n >\n *{{ $t('table.clientSortTip') }}\n </p>\n <field-checkbox\n v-if=\"enableSelectColumn\"\n v-model=\"checkedColumns\"\n :enum-type=\"columnsMap\"\n :def=\"{}\"\n class=\"mb10\"\n @change=\"onCheckedColumnsChange\"\n />\n <a-table\n ref=\"mainTable\"\n :data-source=\"renderRecords\"\n v-bind=\"tableOptions\"\n @change=\"onChange\"\n @expand=\"onExpand\"\n @expandedRowsChange=\"onExpandedRowsChange\"\n />\n <yqg-infinite-pagination\n v-if=\"isPaginationInfiniteVisible\"\n :pagination=\"pagination\"\n :data-size=\"(records && records.length) || 0\"\n @change=\"onChange\"\n />\n <!-- 用来获取表格内真实数据的全数据表格 -->\n <a-table\n v-if=\"enableClientSearch && isSearchTableRendering\"\n v-show=\"false\"\n ref=\"innerTextTable\"\n :data-source=\"records.slice(searchSliceStart, searchSliceEnd)\"\n v-bind=\"tableOptions\"\n :pagination=\"false\"\n />\n </div>\n </a-config-provider>\n</template>\n\n<script type=\"text/babel\">\n import {DEFAULT_PAGINATION, DEFAULT_TABLE_OPTIONS, ClientSorterMap} from '../constant/table.ts';\n import collectSlots from '../mixin/collect-slots.ts';\n import staticProps from '../mixin/static-props.js';\n import {setStorage, getStorage} from '../util/local-storage.js';\n import {evalProp, pickValue} from '../util/object.js';\n import {camelCaseToUnderscore} from '../util/tool.js';\n\n export default {\n name: 'YqgSimpleTable',\n\n mixins: [staticProps, collectSlots],\n\n inject: {\n timezoneKey: {default: ''},\n isValidDef: {default: () => x => x}\n },\n\n props: {\n ctx: {\n type: Object,\n default: () => null\n },\n options: {\n type: Object,\n default: () => ({})\n },\n records: {\n type: Array,\n default: null\n },\n pagination: {\n type: [Boolean, Object],\n default: () => ({})\n },\n simpleEmpty: {\n type: Boolean,\n default: false\n },\n defaultPagination: {\n type: Object,\n default: () => DEFAULT_PAGINATION\n },\n fontSize: {\n type: Number,\n default: 13\n },\n cellHorizontalPadding: {\n type: Number,\n default: 20\n },\n paginationInfinite: {\n type: Boolean,\n default: false\n },\n rowInnerTextDelay: {\n type: Number,\n default: 1e3\n },\n // 表内搜索全数据表格切片步长\n searchSliceStep: {\n type: Number,\n default: 10\n },\n // 额外自定义的表内搜索方法\n additionalSearchFilter: {\n type: Function,\n default: null\n },\n defaultText: {\n type: String,\n default: '/'\n }\n },\n\n data() {\n const {options: {colDefs = []}} = this;\n\n return {\n searchText: '',\n visibleMap: colDefs.filter(def => def.child).reduce((map, {field: key, child}) => {\n map[key] = !!child.defaultVisible;\n\n return map;\n }, {}),\n checkedColumns: [],\n rowInnerTextList: null,\n searchSliceStart: 0\n };\n },\n\n computed: {\n isPaginationInfiniteVisible() {\n const {paginationInfinite, pagination: {pageNo}, records} = this;\n\n if (!paginationInfinite) return false;\n\n return records?.length || (pageNo > 1);\n },\n\n columnsMap() {\n const {validDefColumns: cols} = this;\n\n return cols.reduce((acc, {field, label, labelParam = []}) => ({\n ...acc,\n [field]: this.$t(label, labelParam)\n }), {});\n },\n\n enableSelectColumn() {\n return this.options.enableSelectColumn;\n },\n\n enableClientSearch() {\n const {options: {search, simpleSearch}, records} = this;\n\n return (search || simpleSearch) && records?.length;\n },\n // 表内搜索表格是否正在渲染\n isSearchTableRendering() {\n const {records, searchSliceStart, options: {simpleSearch}} = this;\n\n return records?.length && searchSliceStart < records.length && !simpleSearch;\n },\n // 表内搜索全数据切片尾标\n searchSliceEnd() {\n return this.searchSliceStart + this.searchSliceStep;\n },\n\n validDefColumns() {\n const {options: {colDefs}} = this;\n const isValidDef = this.$app?.isValidDef || this.isValidDef;\n const realColumns = this.getColDefs(colDefs);\n\n return realColumns.filter(def => def && isValidDef(def));\n },\n\n activeDefColumns() {\n const {validDefColumns, checkedColumns, enableSelectColumn} = this;\n if (!enableSelectColumn) return validDefColumns;\n\n return validDefColumns.filter(def => checkedColumns.includes(def.field));\n },\n\n tableOptions() {\n const {\n options: {scroll = DEFAULT_TABLE_OPTIONS.scroll, ...rest},\n records,\n simpleEmpty,\n defaultPagination,\n activeDefColumns,\n paginationInfinite,\n $scopedSlots: {footer}\n } = this;\n const columns = activeDefColumns.map(this.getColumnOptions);\n\n let {pagination} = this;\n if (paginationInfinite) pagination = false;\n if (pagination) {\n // 如果有传入pagination的话, 表示服务端分页, 否则表示客户端分页\n // 客户端分页不传current, 让<pagiation />非受控\n if (pagination.pageNo) pagination.current = pagination.pageNo;\n pagination = {\n ...defaultPagination,\n showTotal: (total, range) => `${[\n range.join('-'),\n this.$t('pagination.line'),\n ', ',\n this.$t('pagination.total'),\n total,\n this.$t('pagination.line')\n ].join('')}`,\n ...pagination\n };\n /*\n const {total = 0, pageSizeOptions} = pagination;\n pagination = Math.max(total, 0 || (records && records.length)) > Math.min(...pageSizeOptions)\n && pagination;\n */\n }\n\n return {\n ...DEFAULT_TABLE_OPTIONS,\n showHeader: !simpleEmpty || !!(records && records.length),\n columns,\n pagination,\n scroll,\n ...rest,\n ...(footer ? {footer} : {})\n };\n },\n\n renderRecords() {\n const {searchText, records, rowInnerTextList, additionalSearchFilter} = this;\n\n if (!searchText || !rowInnerTextList?.length) {\n return this.records;\n }\n\n const lowerSearchText = searchText.toLowerCase();\n\n return records\n .filter((record, index) => rowInnerTextList[index]?.some(\n tdText => {\n if (['', undefined, null].includes(tdText)) return false;\n\n return additionalSearchFilter?.(`${tdText}`, searchText)\n // 支持驼峰搜索\n || `${tdText}`.includes(camelCaseToUnderscore(searchText))\n // 支持大小写搜索\n || `${tdText}`.toLowerCase().includes(lowerSearchText);\n }\n ));\n },\n\n renderEmpty() {\n const {simpleEmpty, $slots} = this;\n let emptyVNode;\n if (simpleEmpty) emptyVNode = this.$t('common.noData');\n if ($slots.renderEmpty) emptyVNode = $slots.renderEmpty;\n\n return emptyVNode && (() => <div className=\"custom-empty-view\">{emptyVNode}</div>);\n }\n },\n\n watch: {\n records: {\n handler: 'getRowInnerTextList',\n immediate: true\n },\n },\n\n mounted() {\n const {validDefColumns, enableSelectColumn, options: {tableCacheKey}} = this;\n if (enableSelectColumn) {\n this.checkedColumns = validDefColumns.map(({field}) => field);\n // 走localstorage缓存选中的表头\n if (tableCacheKey) {\n const selectColumnsStr = getStorage(tableCacheKey);\n // 之前有缓存过\n if (selectColumnsStr) {\n const selectColumns = JSON.parse(selectColumnsStr);\n this.checkedColumns = selectColumns;\n }\n }\n }\n },\n\n beforeDestroy() {\n clearTimeout(this.rowInnerTextListTimeout);\n },\n\n methods: {\n getColDefs(colDefs) {\n const {ctx} = this;\n\n return colDefs.filter(def => !evalProp(def.colHide, {ctx: ctx ?? this.$parent})).flatMap(def => {\n const {field: key, child, children} = def;\n const tempChildren = children?.length ? this.getColDefs(children) : null;\n\n if (child && child.colDefs && child.colDefs.length) {\n if (this.visibleMap[key]) {\n return [{...def, children: tempChildren}, ...child.colDefs];\n }\n }\n\n return {...def, children: tempChildren};\n });\n },\n\n getColumnOptions(def) {\n const {\n options: {enableClientSort, scroll = DEFAULT_TABLE_OPTIONS.scroll},\n records,\n $scopedSlots,\n ctx\n } = this;\n // children:表头合并; child:表头伸缩(折叠)列;\n const {field: key, label, labelParam = [], column = {}, child, children, rowSpan, colSpan} = def;\n const title = typeof label === 'string' ? this.$t(label, labelParam) : label;\n\n return {\n key,\n dataIndex: key,\n children: children ? children.map(this.getColumnOptions) : null,\n title: () => {\n if ($scopedSlots.title) return $scopedSlots.title({title, def});\n if (child) {\n const visible = this.visibleMap[key];\n\n return (\n <div>\n {title}\n <a-icon\n type={!visible ? 'custom-plus' : 'custom-minus'}\n class=\"ml10 yqg-text-primary\"\n vOn:click_stop={() => this.changeVisible({key, visible: !visible})}\n />\n </div>\n );\n }\n\n return title;\n },\n customRender: (text, record, index) => {\n const props = {\n def,\n value: text,\n record,\n values: record,\n index,\n defaultText: this.defaultText || '/',\n ctx: ctx ?? this.$parent\n };\n\n let cell = $scopedSlots[key]?.(props);\n if (!cell) {\n const scopedSlots = this.genSlots({def, parentIndex: index});\n const comp = def.staticComp || 'def-value';\n cell = <comp {...{props: this.getCompProps(props), scopedSlots}} />;\n }\n\n if (rowSpan || colSpan) {\n const attrs = {\n rowSpan: evalProp(rowSpan, props),\n colSpan: evalProp(colSpan, props)\n };\n\n return {children: cell, attrs};\n }\n\n return cell;\n },\n ...(scroll.y ? {width: this.getColumnWidth({def, column, records})} : {}),\n ...column,\n ...(enableClientSort || def.clientSort ? {\n sorter: this.getClientSorter(def)\n } : {})\n };\n },\n\n getClientSorter(def) {\n const {field, type, filter} = def;\n let {column: {sorter} = {}} = def;\n if (!sorter) {\n sorter = 'string';\n if (/^(number|date)$/.test(type) || /^(date(Time)?$|numberCommas)/.test(filter)) {\n sorter = 'number';\n }\n }\n\n return sorter.constructor === String ? ClientSorterMap[sorter](field) : sorter;\n },\n\n getColumnWidth({def, records}) {\n const {label, field, column, filter} = def;\n if (column?.width) return column.width;\n\n const {$t, fontSize, cellHorizontalPadding} = this;\n const maxLen = Math.max($t(label).length, ...records.map(record => {\n let val = pickValue(record, field);\n val = !val && val !== 0 ? '' : val;\n if (filter) {\n return `${this.$options.filters[filter](val)}`.length * 0.6;\n }\n\n return `${val}`.length;\n }));\n\n return maxLen * fontSize + cellHorizontalPadding;\n },\n\n onChange(pagination, filters, sorter) {\n const {pageNo, current, pageSize} = pagination;\n if (pageNo === current && pageSize === this.pagination.pageSize && this.options.enableClientSort) return;\n\n pagination.pageNo = current;\n this.$emit('change', pagination, filters, sorter);\n },\n\n onExpand(...args) {\n this.$emit('expand', ...args);\n },\n\n onExpandedRowsChange(...args) {\n this.$emit('expandedRowsChange', ...args);\n },\n\n onSearch({target: {value}}) {\n this.searchText = value && value.trim();\n\n this.$emit('search', this.searchText);\n },\n\n changeVisible({key, visible}) {\n this.visibleMap = {\n ...this.visibleMap,\n [key]: visible\n };\n },\n\n onExportCurrentPage() {\n const el = this.$refs.mainTable.$el;\n const header = [].map.call(el.querySelectorAll('th'), item => item.textContent);\n const data = [].map.call(el.querySelectorAll('.ant-table-body tbody tr'), row => {\n const tdList = row.children;\n\n return [].map.call(tdList, td => td.textContent);\n });\n this.$emit('export-current-page', {header, data});\n },\n\n getRowInnerTextList() {\n this.rowInnerTextList = null;\n this.searchSliceStart = 0;\n if (!this.enableClientSearch) return;\n\n const {options: {simpleSearch}} = this; //\n\n if (simpleSearch) {\n this.rowInnerTextList = this.records.map(record => {\n const innerList = [];\n\n this.activeDefColumns.forEach(({field}) => {\n const innerValue = pickValue(record, field);\n if (!['', undefined, null].includes(innerValue)) {\n innerList.push(`${innerValue}`);\n }\n });\n\n return innerList;\n });\n\n return;\n }\n\n this.rowInnerTextListTimeout = setTimeout(() => {\n const loop = () => {\n if (this.isSearchTableRendering) {\n setTimeout(() => {\n const el = this.$refs.innerTextTable?.$el;\n if (!el) return;\n\n const {map} = [];\n const temp = map.call(el.querySelectorAll('.ant-table-body tbody tr'), rowEl => {\n return map.call(rowEl.querySelectorAll('td'), tdEl => tdEl.textContent?.toLowerCase());\n });\n\n this.rowInnerTextList = this.rowInnerTextList?.concat(temp) || temp;\n this.searchSliceStart += this.searchSliceStep;\n loop();\n });\n }\n };\n\n loop();\n }, this.rowInnerTextDelay);\n },\n\n onCheckedColumnsChange(columns) {\n const {options: {tableCacheKey}} = this;\n if (tableCacheKey) setStorage(tableCacheKey, JSON.stringify(columns));\n }\n }\n };\n</script>\n<style lang=\"scss\">\n .yqg-simple-table {\n margin-top: 20px;\n\n .yst-header {\n margin-bottom: 10px;\n }\n\n .search-input {\n width: 200px;\n }\n\n .client-sort-tip {\n margin-bottom: 10px;\n font-size: 12px;\n color: #999;\n }\n\n &.custom-empty-table {\n .ant-table-placeholder {\n padding: 0;\n text-align: left;\n background-color: transparent;\n border: none !important;\n }\n }\n\n .ant-table {\n &-thead,\n &-tbody {\n tr {\n th,\n td {\n padding: 10px;\n white-space: nowrap;\n text-align: center;\n color: rgba(0, 0, 0, 0.95);\n\n pre {\n display: inline-block;\n min-width: 100px;\n max-width: 300px;\n white-space: pre-wrap;\n word-break: break-word;\n overflow: unset;\n }\n }\n }\n }\n\n &-pagination {\n &.ant-pagination {\n float: none;\n }\n }\n }\n\n &.yqg-common-table {\n .ant-table-empty {\n .ant-table-thead {\n display: none;\n }\n\n .ant-table-placeholder {\n border-top: 1px solid #e8e8e8;\n }\n }\n }\n }\n</style>\n","<!-- @Author: xiaodongyu -->\n<!-- @Date: 2019-12-19 11:48:22 -->\n<!-- @Last Modified by: xiaodongyu -->\n<!-- @Last Modified time: 2024-04-09 13:44:49 -->\n\n<script type=\"text/babel\">\nimport collectSlots from '../mixin/collect-slots.ts';\nimport staticProps from '../mixin/static-props.js';\nimport getFormat from '../util/format-map.js';\nimport {evalProp, pickValue, spreadProps} from '../util/object.js';\n\nconst DefaultLabelCol = {span: 4};\n\nexport default {\n name: 'YqgStaticForm',\n\n mixins: [staticProps, collectSlots],\n\n inject: {\n isValidDef: {default: () => x => x}\n },\n\n props: {\n ctx: {\n type: Object,\n default() {\n return this.$parent;\n }\n },\n title: {\n type: String,\n default: ''\n },\n values: {\n type: Object,\n default: () => ({})\n },\n options: {\n type: Object,\n required: true\n },\n hideInvalid: {\n type: Boolean,\n default: false\n }\n },\n\n computed: {\n fieldDefs() {\n const {options: {fieldDefs}, hideInvalid, values, ctx} = this;\n const isValidDef = this.$app?.isValidDef || this.isValidDef;\n\n return fieldDefs.filter(isValidDef).filter(def => {\n const {field, hide} = def || {};\n const value = pickValue(values, field);\n const isInvalid = !value && value !== 0;\n\n return !evalProp(hide, {values, ctx, record: values}) && !(hideInvalid && isInvalid);\n });\n },\n\n formProps() {\n const {\n fieldDefs, staticItemProps, labelCol = DefaultLabelCol, wrapperCol, ...rest // eslint-disable-line\n } = this.options;\n\n return {\n layout: 'horizontal',\n column: {span: 24},\n ...rest,\n ...((!rest.layout || rest.layout === 'horizontal') ? {\n labelCol,\n wrapperCol: wrapperCol || {span: 24 - labelCol.span}\n } : {})\n };\n }\n },\n\n methods: {\n getItemProps(def) {\n const {values, ctx} = this;\n const {label} = def;\n\n return {\n colon: false,\n ...this.options.staticItemProps,\n ...def.staticItemProps,\n label: this.$t(evalProp(label, {values, ctx, record: values}), def.labelParam || [])\n };\n },\n\n getDefValueProps(def) {\n const {ctx, values} = this;\n const {field, format} = def;\n const formattor = getFormat(format);\n let value = pickValue(values, field);\n\n if (formattor) {\n value = formattor.format(value);\n }\n\n const formCtx = {\n ctx,\n def,\n value,\n values,\n record: values,\n defaultText: '/'\n };\n\n return this.getCompProps(formCtx);\n },\n\n renderDefItem(def, key) {\n const {formProps: {layout, column}, values, ctx} = this;\n if (layout === 'inline') {\n return this.renderFormItem(def, key);\n }\n\n const colProps = {\n key,\n ...column,\n ...(def && evalProp(def.staticCol, {values, ctx, record: values}))\n };\n const itemContent = !!def && (layout === 'vertical'\n ? this.renderFormItem(def)\n : this.renderHorizontalItem(def)\n );\n\n return (\n <a-col {...spreadProps(colProps)}>\n {itemContent}\n </a-col>\n );\n },\n\n renderFormItem(def, key) {\n const props = this.getItemProps(def);\n if (key) props.key = key;\n\n return (\n <a-form-item {...spreadProps(props)}>\n {this.renderDefValue(def)}\n </a-form-item>\n );\n },\n\n renderHorizontalItem(def) {\n const {formProps} = this;\n const {colon, labelCol, wrapperCol, ...rest} = this.getItemProps(def);\n const label = def.label && (\n <a-col class=\"ant-form-item-label\" {...{props: labelCol || formProps.labelCol}}>\n <label class={colon ? '' : 'ant-form-item-no-colon'}>\n {this.$t(evalProp(def.label, {values: this.values, ctx: this.ctx, record: this.values}), def.labelParam || [])}\n </label>\n </a-col>\n );\n const value = (\n <a-col class=\"ant-form-item-control-wrapper\" {...{props: wrapperCol || formProps.wrapperCol}}>\n <div class=\"ant-form-item-control\">\n <span class=\"ant-form-item-children\">\n {this.renderDefValue(def)}\n </span>\n </div>\n </a-col>\n );\n\n return (\n <a-row type=\"flex\" class=\"ant-form-item\" {...rest}>\n {label}\n {value}\n </a-row>\n );\n },\n\n renderDefValue(def) {\n const {$slots, $scopedSlots} = this;\n const {field: key} = def;\n if ($slots[key]) return $slots[key];\n\n const props = this.getDefValueProps(def);\n if ($scopedSlots[key]) return $scopedSlots[key](props);\n\n const scopedSlots = this.genSlots({def});\n const comp = def.staticComp || 'def-value';\n\n return <comp {...{props, scopedSlots}} />;\n }\n },\n\n render() {\n const {fieldDefs, formProps, title} = this;\n const {layout} = formProps;\n const items = fieldDefs.map((def, idx) => {\n const key = def?.field || idx;\n if (layout === 'inline') {\n return this.renderFormItem(def, key);\n }\n\n return this.renderDefItem(def, key);\n });\n const titleEl = this.$scopedSlots.title?.(this) || (title && (\n <div class=\"yqg-form-title\">\n {this.$t(title)}\n </div>\n ));\n\n return (\n <a-form class=\"yqg-static-form\" {...{props: formProps}}>\n {titleEl}\n {layout !== 'inline' ? (\n <a-row type=\"flex\">\n {items}\n </a-row>\n ) : (\n items\n )}\n </a-form>\n );\n }\n};\n</script>\n\n<style lang=\"scss\">\n.yqg-static-form {\n .ant-form-item {\n margin-bottom: 0;\n color: rgba(0, 0, 0, 95%);\n }\n\n &.ant-form-horizontal {\n .ant-form-item {\n &-label,\n &-control {\n margin: 12px 0;\n line-height: 1.2;\n white-space: normal;\n }\n\n &-label {\n text-align: left;\n\n label::after {\n margin: 0;\n }\n }\n\n &-control {\n padding-left: 5px;\n }\n }\n }\n}\n</style>\n","<template>\n <div\n title=\"问题反馈\"\n class=\"sug-container\"\n @click=\"jumptoSuggestion\"\n >\n <img\n v-if=\"imgIcon\"\n src=\"./suggestion.png\"\n >\n\n <a-icon\n v-else\n class=\"icon\"\n type=\"bulb-o\"\n />\n </div>\n</template>\n\n<script>\n export default {\n name: 'YqgSuggestionShortcuts',\n\n props: {\n systemId: {\n type: String,\n default: ''\n },\n imgIcon: {\n type: Boolean,\n default: false\n }\n },\n\n methods: {\n jumptoSuggestion() {\n if (!this.systemId) {\n this.$message.warning('请携带生产环境的systemId跳转');\n\n return;\n }\n\n window.open(`https://suggestion.fintopia.tech/feedback-list?systemId=${this.systemId}`);\n }\n }\n };\n</script>\n\n<style lang=\"scss\" scoped>\n.sug-container {\n width: 30px;\n height: 30px;\n display: flex;\n align-items: center;\n\n &:hover {\n cursor: pointer;\n }\n\n & img {\n width: 30px;\n height: 30px;\n }\n\n .icon {\n font-size: 20px;\n }\n}\n</style>\n\n","export default \"data:image/png;base64,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\"","/**\n * @author center\n * @date 2022/12/20-4:21 下午\n * @file index\n */\n\nimport _ from 'underscore';\n\nexport default class Storage {\n\n constructor(key, useSessionStorage = false) {\n this.key = key;\n this.cb = _.noop;\n this.useSessionStorage = useSessionStorage;\n this.storage = useSessionStorage ? sessionStorage : localStorage;\n }\n\n set(cache) {\n this.storage.setItem(this.key, JSON.stringify(cache));\n }\n\n get() {\n try {\n return JSON.parse(this.storage.getItem(this.key));\n } catch (err) {\n return null;\n }\n }\n\n remove() {\n this.storage.removeItem(this.key);\n }\n\n on(fn) {\n this.cb = event => {\n if (event.key === this.key && _.isFunction(fn)) {\n fn(event);\n }\n };\n\n window.addEventListener('storage', this.cb);\n }\n\n off(needsRemove = false) {\n this.cb = _.noop;\n window.removeEventListener('storage', this.cb);\n if (needsRemove) this.remove();\n }\n\n}\n","/**\n * @author center\n * @date 2022/12/20-4:22 下午\n * @file swim-lane\n */\n\nimport Storage from './index.js';\n\nconst StorageKey = 'SwimLane';\nexport default new Storage(StorageKey, true);\n","<!-- @author center -->\n<!-- @date 2022/12/28-4:29 下午 -->\n<template>\n <div\n class=\"yqg-swim-lane-id\"\n style=\"margin-right: 25px;\"\n >\n <a-input-search\n v-model=\"swimLaneId\"\n style=\"display: block;\"\n placeholder=\"设置泳道ID\"\n @blur=\"setSwimLane\"\n @search=\"setSwimLane\"\n >\n <a-icon\n slot=\"enterButton\"\n type=\"setting\"\n />\n </a-input-search>\n </div>\n</template>\n\n<script>\n\n import {axios as http} from '@yqg/resource';\n\n import SwimLaneStorage from '../../util/storage/swim-lane.js';\n\n export default {\n name: 'YqgSwimLaneInput',\n\n data() {\n return {\n swimLaneId: SwimLaneStorage.get()\n };\n },\n\n created() {\n if (this.swimLaneId) {\n http.defaults.headers.common['fintopia-swim-lane-id'] = this.swimLaneId;\n }\n },\n\n methods: {\n setSwimLane() {\n const swimLaneId = (this.swimLaneId || '').trim();\n http.defaults.headers.common['fintopia-swim-lane-id'] = swimLaneId;\n SwimLaneStorage.set(swimLaneId);\n this.$router.go(this.$route.currentRoute);\n },\n }\n };\n</script>\n","<!-- @author chengyuzhang -->\n<!-- @email chengyuzhang@yangqianguan.com -->\n<!-- @date 2020-08-31 14:48:05.472 -->\n<!-- @desc generated by yqg-cli@1.2.9 -->\n\n<template>\n <div class=\"yqg-transfer\">\n <div\n v-if=\"sourceRecords.length\"\n class=\"select-wrapper\"\n >\n <div class=\"source-wrapper\">\n <slot name=\"sourceHeader\" />\n <yqg-simple-table\n :options=\"processSourceTableOptions\"\n :records=\"sourceRecords\"\n />\n </div>\n\n <a-icon\n class=\"icon\"\n type=\"caret-right\"\n />\n\n <div class=\"target-wrapper\">\n <slot name=\"targetHeader\" />\n <yqg-simple-table\n :options=\"processTargetTableOptions\"\n :records=\"targetRecords\"\n simple-empty\n >\n <template #op=\"record\">\n <a-popconfirm\n title=\"是否确认删除\"\n @confirm=\"deleteItem(record)\"\n >\n <a-button\n size=\"small\"\n type=\"danger\"\n icon=\"delete\"\n />\n </a-popconfirm>\n </template>\n </yqg-simple-table>\n </div>\n </div>\n\n <div\n v-else\n class=\"no-data\"\n >\n 暂无数据\n </div>\n </div>\n</template>\n\n<script type=\"text/babel\">\nimport _ from 'underscore';\n\nexport default {\n name: 'YqgTransfer',\n\n props: {\n sourceTableOptions: {\n type: Object,\n required: true\n },\n\n targetTableOptions: {\n type: Object,\n default: () => ({})\n },\n\n sourceRecords: {\n type: Array,\n default: () => []\n },\n\n defaultTargetList: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n targetList: [],\n targetRecords: []\n };\n },\n\n computed: {\n processSourceTableOptions() {\n const {sourceTableOptions} = this;\n\n return {\n rowSelection: {\n columnWidth: 37,\n selectedRowKeys: this.targetList,\n onChange: this.onSelectChange,\n getCheckboxProps: record => ({\n props: {\n disabled: record.selected\n }\n })\n },\n search: true,\n pagination: false,\n scroll: {x: 290},\n ...sourceTableOptions\n };\n },\n\n processTargetTableOptions() {\n const {\n targetTableOptions: {colDefs, ...rest},\n sourceTableOptions: {colDefs: sourceColDefs, ...sourceRest}} = this;\n\n if (colDefs) {\n return {\n search: true,\n pagination: false,\n scroll: {x: 290},\n colDefs: [\n ...colDefs,\n {field: 'op', column: {width: 60}}\n ],\n ...rest\n };\n }\n\n return {\n search: true,\n pagination: false,\n scroll: {x: 290},\n colDefs: [\n ...sourceColDefs,\n {field: 'op', column: {width: 60}}\n ],\n ...sourceRest\n };\n }\n },\n\n mounted() {\n const {defaultTargetList, sourceRecords} = this;\n const {length} = sourceRecords;\n let recordsPoint = 0;\n\n if (defaultTargetList.length) {\n const selectedRecords = [];\n for (let i = 0; i < length; i += 1) {\n if (sourceRecords[i].id === defaultTargetList[recordsPoint]) {\n selectedRecords.push(sourceRecords[i]);\n recordsPoint += 1;\n }\n }\n\n this.onSelectChange(defaultTargetList, selectedRecords);\n }\n },\n\n methods: {\n onSelectChange(selectedList, selectedRecords) {\n this.targetList = selectedList.sort((item1, item2) => item1 - item2);\n const targetRecords = this.targetRecords\n .concat(selectedRecords)\n .sort((left, right) => left.id - right.id);\n this.targetRecords = _.uniq(targetRecords, true, _.iteratee(val => val.id));\n\n this.$emit('change', {\n targetList: this.targetList,\n targetRecords: this.targetRecords\n });\n\n for (let i = 0; i < selectedRecords.length; i += 1) {\n this.$set(selectedRecords[i], 'selected', true);\n }\n },\n\n deleteItem({record, index}) {\n const {targetList, targetRecords} = this;\n\n this.$delete(record, 'selected');\n this.$delete(targetList, index);\n this.$delete(targetRecords, index);\n this.$emit('change', {targetList, targetRecords});\n }\n }\n\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.yqg-transfer {\n .select-wrapper {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n\n .icon {\n align-self: center;\n }\n\n & ::v-deep .yqg-simple-table {\n width: 290px;\n\n .ant-table-tbody tr td {\n white-space: normal;\n }\n }\n }\n}\n</style>\n","/*\n * @Author: wenxiujiang\n * @Date: 2022-11-01 13:28:41\n * @Last Modified by: zhengwang1 \n * @Last Modified time: 2025-06-19 10:47:16 \n */\n\nexport default {\n common: {\n add: '新增',\n addCategory: '新增短信类型',\n addNotifSuccess: '短信类型已成功添加!',\n cancel: '取消',\n checkAll: '全选',\n chooseFile: '选择文件',\n close: '关闭',\n confirm: '确定',\n confirmDelete: '确认删除',\n copy: '复制',\n create: '添加',\n delete: '删除',\n edit: '编辑',\n fileUrl: '文件地址',\n format: '格式化',\n formatFailed: '格式化失败',\n removeSpace: '去空格',\n imageUrl: '图片地址',\n noData: '暂无数据',\n op: '操作',\n uploadFile: '上传文件',\n uploadImage: '上传图片',\n uploadLocal: '本地上传',\n imageDesc: '图片描述',\n fileDesc: '文件描述',\n pleaseSelect: '请选择',\n query: '查询',\n reset: '重置',\n timeCreate: '创建时间',\n timeUpdate: '更新时间',\n uploadAudio: '上传音频',\n modifyPassword: '修改密码',\n logout: '登出',\n pleaseInput: '请输入',\n selectAll: '全选',\n clearAll: '清空',\n },\n pagination: {\n line: '行',\n total: '共'\n },\n rich: {\n auto: '自动',\n addColumnBefore: '前加列',\n addColumnAfter: '后加列',\n addRowBefore: '前加行',\n addRowAfter: '后加行',\n backgroundColor: '背景色',\n blockquote: '引用',\n bold: '加粗',\n bulletList: '无序列表',\n clear: '清除',\n code: '代码',\n codeBlock: '代码块',\n deleteColumn: '删除列',\n deleteRow: '删除行',\n deleteTable: '删除表格',\n file: '文件',\n fontColor: '字体色',\n fontSize: '字体大小',\n h1: '标题1',\n h2: '标题2',\n h3: '标题3',\n h4: '标题4',\n h5: '标题5',\n h6: '标题6',\n horizontalRule: '横线',\n image: '图片',\n insertLink: '插入链接',\n italic: '斜体',\n link: '链接',\n linkUrl: '链接地址',\n linkDesc: '链接描述',\n orderedList: '有序列表',\n paragraph: '段落',\n primaryColor: '主题颜色',\n redo: '重做',\n replace: '替换',\n replaceAll: '全部替换',\n search: '查找',\n standardColor: '标准色',\n strike: '中划线',\n table: '表格',\n tac: '居中',\n tal: '左对齐',\n tar: '右对齐',\n toggleCellMerge: '合并单元格',\n underline: '下划线',\n undo: '撤回',\n audio: '音频'\n },\n file: {\n preview: '预览',\n noGreaterThan: '不大于{0}',\n noLessThan: '不小于{0}',\n acceptTypes: '仅支持{0}格式',\n empty: '文件不能为空,请重新上传',\n onlyImage: '仅支持上传图片',\n image: '图片',\n file: '文件',\n size: '当前{fileType}大小为{curSize},请上传大小为{size}的{fileType}',\n error: '文件有误,请重新上传'\n },\n rule: {\n required: '必填'\n },\n table: {\n searchPlaceholder: '表内搜索',\n clientSortTip: '当前排序仅针对本页数据,并非所有数据',\n exportCurrentPage: '导出本页',\n searchLoading: '表格加载中'\n },\n ytalk: {\n warning: '警告',\n info: '提醒',\n verifyInfo: '不支持当前浏览器版本,外呼无法正常使用!',\n initializeFailed: '外呼初始化失败',\n microphoneEnabled: '请打开浏览器麦克风权限,并检查音频输入设备',\n pageClosed: '确定关闭页面?',\n loginSuccess: '外呼登录成功',\n logoutSuccess: '外呼登出成功',\n networkJitter: '网络抖动',\n registerTips: '当前坐席已在其他设备或浏览器登录,如果频繁出现请尝试关闭浏览器重新登录。',\n callTest: {\n title: '通话检测',\n tipText1: '检测说明:',\n tipText2: '请尝试说几句话,判断耳机里能否听到你刚才说话的声音。如果能听到,代表麦克风、扬声器、网络没有问题。',\n tipText3: '无声解决方案:',\n tipText4: '请切换麦克风或者扬声器设备后重试。如还未解决,请反馈管理员。如果切换设备后能够听到声音,请在电脑设置中调整为对应设备。',\n testing: '回声测试中',\n microphone: '麦克风',\n inputDeviceName: '输入设备名称:',\n speaker: '扬声器',\n outputDeviceName: '输出设备名称:',\n initModal: {\n title: '音频设备发生变化,将重新检测设备',\n },\n systemErrorModal: {\n title: '系统异常 {0}',\n content: '请关闭通话检测窗口,重新检测',\n okText: '重新检测',\n cancelText: '关闭'\n },\n warn: {\n testInMainTab: '请到通话主页面中进行通话检测!'\n },\n error: {\n noAudioDevice: '未检测到音频设备',\n noMicrophone: '未检测到麦克风',\n noSpeaker: '未检测到扬声器',\n noType: 'type不存在',\n noCallAccountNumber: 'callAccountNumber不存在',\n BrowserNotSupported: '浏览器不支持访问用户媒体设备,请升级或更换浏览器',\n AbortError: '操作中止',\n NotAllowedError: '打开设备权限不足,原因是用户拒绝了媒体访问请求',\n NotFoundError: '找不到满足条件的设备',\n NotReadableError: '系统上某个硬件、浏览器或网页层面发生的错误导致设备无法被访问',\n OverConstrainedError: '指定的要求无法被设备满足',\n SecurityError: '安全错误,使用设备媒体被禁止',\n TypeError: '类型错误',\n NotSupportedError: '不支持的操作',\n NetworkError: '网络错误发生',\n TimeoutError: '操作超时',\n UnknownError: '因未知的瞬态的原因使操作失败)',\n ConstraintError: '条件没满足而导致事件失败的异常操作',\n },\n message: {\n 'permission denied': '麦克风、摄像头权限未开启,请检查后重试',\n 'requested device not found': '未检测到摄像头',\n 'could not start video source': '无法访问到摄像头',\n 'unknownError': '未知错误'\n }\n },\n networkInfo: {\n score: '总分数',\n sipLostRate: 'sip 丢包率',\n sipRTT: 'sip 延迟',\n rtpLostRate: 'rtp 丢包率',\n rtpRTT: 'rtp 延迟'\n },\n realTimeQuality: {\n callInfo: '通话内容',\n hitSeverityTagDuringTheCall: '在通话中触发{0}风险标签',\n severityTag: '风险标签',\n seeDetail: '查看详情',\n enum: {\n speakerType: {\n CUSTOMER: '客户',\n SERVICE: '坐席'\n },\n severityLevel: {\n HIGH: '高',\n MIDDLE_HIGH: '中高',\n MIDDLE: '中',\n MIDDLE_LOW: '中低',\n LOW: '低'\n }\n }\n }\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-04-03 21:22:02\n * @Last Modified by: wenxiujiang\n * @Last Modified time: 2022-11-01 13:30:08\n */\n\nimport {pickValue} from '../../util/object.js';\nimport zh from './zh-cn.ts';\n\nexport default {\n install(Vue) {\n // 如果宿主工程已经安装了 vue-i18n 或其他 i18n 方案,则不覆盖\n // 检查是否已有 $t 方法,如果有则跳过\n if (Vue.prototype.$t && typeof Vue.prototype.$t === 'function') {\n // 宿主工程已有 i18n 配置,不覆盖\n return;\n }\n\n // 提供一个简单的 fallback i18n 实现\n Vue.prototype.$t = key => pickValue(zh, key) || key;\n }\n};\n","<!-- @author ruiwang -->\n<!-- @email ruiwang@yangqianguan.com -->\n<!-- @date 2020-11-30 17:44:11 -->\n<!-- @desc field-auto-complete.vue -->\n\n<template>\n <a-auto-complete\n :value=\"value\"\n v-bind=\"def.props\"\n :filter-option=\"filterOption\"\n :data-source=\"list\"\n allow-clear\n option-label-prop=\"value\"\n @change=\"onChange\"\n />\n</template>\n\n<script>\nimport enumType from '../../../mixin/enum-type.js';\n\nexport default {\n name: 'FieldAutoComplete',\n\n mixins: [enumType],\n\n props: {\n value: {\n type: [String],\n default: undefined\n }\n },\n\n methods: {\n onChange(val) {\n this.$emit('change', val);\n },\n\n filterOption(input, option) {\n const {def: {props: {filterOption} = {}}} = this;\n if (typeof filterOption === 'function') return filterOption(input, option);\n\n const text = this.wrappedEnumType.getText(option.key);\n\n return text.includes(input);\n }\n }\n};\n</script>\n","<!-- @author ruiwang -->\n<!-- @email ruiwang@yangqianguan.com -->\n<!-- @date 2019-12-11 11:32:23 -->\n<!-- @desc index.vue -->\n\n<template>\n <div>\n <template v-if=\"!single\">\n <a-checkbox\n v-if=\"!def.checkAllInvisible\"\n v-bind=\"def.props\"\n :indeterminate=\"indeterminate\"\n :checked=\"checkAll\"\n :class=\"{'block-item': !!def.checkAllLabel}\"\n @change=\"onCheckAllChange\"\n >\n {{ def.checkAllLabel || $t('common.checkAll') }}\n </a-checkbox>\n <a-checkbox-group\n v-model=\"checkedList\"\n v-bind=\"def.props\"\n :options=\"options\"\n @change=\"onChange\"\n />\n </template>\n <a-checkbox\n v-else\n v-bind=\"def.props\"\n :checked=\"checked\"\n @change=\"onChange\"\n >\n {{ $t(single) }}\n </a-checkbox>\n </div>\n</template>\n\n<script type=\"text/babel\">\nimport {enumType} from '../../../mixin/index.js';\nimport {numbersToStr} from '../../../util/object.js';\n\nexport default {\n name: 'FieldCheckbox',\n\n mixins: [enumType],\n\n props: {\n value: {\n type: [Boolean, Array, String],\n default: undefined\n },\n single: {\n type: String,\n default: ''\n },\n parseFun: {\n type: Function,\n default: val => val\n }\n },\n\n data() {\n return {\n checked: false,\n checkedList: [],\n checkAll: false,\n indeterminate: false\n };\n },\n\n watch: {\n options() {\n this.setIndeterminateAndCheckAll();\n },\n\n value: {\n handler: 'valueHandler',\n immediate: true\n }\n },\n\n methods: {\n valueHandler(val) {\n const {parseFun, single} = this;\n\n if (val === this.checkedList || (single && val === this.checked)) return;\n\n if (this.single) {\n this.checked = parseFun(val);\n } else {\n this.checkedList = numbersToStr(val);\n this.setIndeterminateAndCheckAll(val);\n }\n },\n\n setIndeterminateAndCheckAll(val) {\n const {options, single, value} = this;\n val = val || value;\n const len = val && val.length;\n if (!single) {\n this.indeterminate = !!len && len < options.length;\n this.checkAll = !!len && len === options.length;\n }\n },\n onChange(event) {\n const {checked} = this;\n event = event.target ? event.target.checked : event;\n\n if (this.single) {\n event = !checked;\n } else {\n this.setIndeterminateAndCheckAll(event);\n }\n\n this.$emit('change', event);\n },\n onCheckAllChange(event) {\n const {options} = this;\n\n Object.assign(this, {\n checkedList: event.target.checked ? this.getValues(options) : [],\n indeterminate: false,\n checkAll: event.target.checked\n });\n\n this.$emit('change', this.checkedList);\n },\n getValues(arr) {\n return arr.map(item => item.value || item);\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.block-item {\n display: block;\n}\n</style>\n","<!-- @author ruiwang -->\n<!-- @email ruiwang@yangqianguan.com -->\n<!-- @date 2019-11-18 20:05:49 -->\n<!-- @desc index.vue -->\n\n<template>\n <component\n :is=\"comp\"\n v-model=\"compValue\"\n v-bind=\"{\n ...compProps,\n ...def.props,\n enumType,\n def\n }\"\n @change=\"onChange\"\n />\n</template>\n\n<script>\nimport Enum from '@yqg/enum';\n\nimport DefType from '../../../constant/def-type.js';\nimport {numbersToStr} from '../../../util/object.js';\nimport FieldMap from '../constant/field-map.js';\n\nexport default {\n name: 'FieldEnum',\n\n model: {\n prop: 'value',\n event: 'change'\n },\n\n props: {\n value: {\n type: [String, Number, Array, Boolean],\n default: undefined\n },\n enumType: {\n type: [String, Object],\n required: true\n }\n },\n\n data() {\n return {\n compValue: numbersToStr(this.value),\n map: null,\n mapKey: '',\n list: []\n };\n },\n\n computed: {\n comp() {\n const {def} = this;\n\n return FieldMap[def.type || DefType.select];\n },\n\n compProps() {\n const {def, mapKey} = this;\n let {map} = this;\n if (mapKey) {\n map = this.$t(mapKey);\n if (map.constructor === Array) {\n map = Enum.fromArray(map, def.enumOptions).MAP;\n }\n }\n\n if (def.type === DefType.tree) {\n const {list, formatTreeData} = this;\n\n return {treeData: formatTreeData(list)};\n }\n\n return {\n options: Object.keys(map || {}).map(key => ({\n label: map[key],\n value: key\n }))\n };\n }\n },\n\n watch: {\n value(val) {\n if (val === this.compValue) return;\n\n this.compValue = numbersToStr(val);\n },\n\n enumType() {\n this.initData();\n }\n },\n\n mounted() {\n this.initData();\n },\n\n methods: {\n onChange(val) {\n this.$emit('change', val);\n },\n\n async initData() {\n const {enumType} = this;\n\n if (typeof enumType === 'string') {\n this.mapKey = enumType;\n\n return;\n }\n\n if (enumType.query) {\n await enumType.query();\n }\n\n this.map = enumType.MAP || enumType;\n this.list = enumType.LIST;\n },\n\n formatTreeData(list) {\n if (!list.length) {return list;}\n\n return list.map(({children, id, name}) => ({\n title: name,\n value: `${id}`,\n key: `${id}`,\n children: children ? this.formatTreeData(children) : null\n }));\n }\n }\n\n};\n</script>\n","/*\n * @Author: xiaodongyu\n * @Date 2020-05-15 15:42:25\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-06-29 22:55:40\n */\n\nimport Resource from '@yqg/resource';\n\nconst api = {\n getToken: {\n url: '/api-web/yqg-upload/get-token',\n method: 'get'\n }\n};\n\nexport default Resource.create(api);\n","/*\n * @Author: xiaodongyu\n * @Date 2019-11-29 23:27:11\n * @Last Modified by: huirubai\n * @Last Modified time: 2024-11-20 19:09:29\n */\n/* eslint-disable global-require, no-underscore-dangle */\n\ndeclare const __USE__COMMON_API__: boolean;\ndeclare const __STAGEENV__: string;\ndeclare const __OCTSAVEPATH__: any;\n\nimport { upload } from 'qiniu-js';\n\nimport { axios as http } from '@yqg/resource';\nimport type { Def, FormCtx, TableOptions } from '@yqg/type';\n\nimport Web from '../resource/web.js';\nimport { boolOf } from '../util/enum.js';\nimport DefType from './def-type.js';\n\nlet octSavePath = '';\n\ntry {\n octSavePath = __OCTSAVEPATH__;\n} catch (e) {\n octSavePath = '';\n\n // eslint-disable-next-line no-console\n console.warn('__OCTSAVEPATH__ 未定义 请按照项目去config设置 默认设置为空');\n}\n\nexport type CommonObject = Record<string | number | symbol, any>;\n\nexport const merge = <T = Def>(...args: Partial<T>[]): T => Object.assign({}, ...args);\n\nexport const required = (def: Def): Def => merge(def, { required: true });\n\nexport const primaryStaticProps: Def = { staticProps: { class: 'yqg-text-primary' } };\n\nexport const successStaticProps: Def = { staticProps: { class: 'yqg-text-success' } };\n\nexport const warningStaticProps: Def = { staticProps: { class: 'yqg-text-warning' } };\n\nexport const sizeLongProps: Def = { props: { style: { maxWidth: '100%', width: '500px' } } };\n\nexport const fixedLeft = (def: Def, width = 20): Def => merge(def, { column: { fixed: 'left', width } });\n\nexport const fixedRight = (def: Def, width = 20): Def => merge(def, { column: { fixed: 'right', width } });\n\n// ant-form-item-control-wrapper占全行\nexport const wholeRow = (def: Def): Def => merge(def, { itemProps: { wrapperCol: { span: 24 } } });\n\nexport const getPre = (prefix: string): (suffix: string) => string => suffix => `${prefix}${suffix}`;\n\nexport const clearFields = (fields: Def['field'][]): (formCtx: FormCtx) => void => ({ form }) => form.setFieldsValue(fields.reduce((acc, field) => ({\n ...acc,\n [field]: undefined\n}), {}));\n\ntype Checker = (value: any) => boolean;\ntype ReturnStaticProps = Record<'class', Record<string, boolean>>\nexport const getSdTextStaticProps = (checker: Checker = boolOf, success = true): (defValueCtx: CommonObject) => ReturnStaticProps => ({ value }) => {\n const valid = checker(value);\n\n return {\n class: {\n 'yqg-text-success': success && valid,\n 'yqg-text-danger': !valid\n }\n };\n};\n\ntype ColunmStyleConfig = {\n minWidth?: number,\n maxWidth?: number,\n wrap?: boolean\n};\ntype ReturnColumnStyle = {\n style: CommonObject\n};\n// yqg-simple-table的column默认不换行,此方法用来给长文本设置宽度和换行,放在staticProps里,slot不可用\nexport const genColumnWrapStyle = ({ minWidth, maxWidth, wrap = false }: ColunmStyleConfig): ReturnColumnStyle => ({\n style: {\n display: 'inline-block',\n minWidth: minWidth ? `${minWidth}px` : 'inherit',\n maxWidth: maxWidth ? `${maxWidth}px` : 'inherit',\n whiteSpace: wrap ? 'normal' : null,\n wordBreak: wrap ? 'break-all' : null\n }\n});\n\nexport const staticComp = (def: Def): Def => merge(def, { component: 'def-value' });\n\nexport const dateTimeDef: Def = { type: 'date', props: { showTime: true }, filter: 'dateTime' };\n\nexport const blockItem: Def = { itemProps: { class: 'yqg-form-item-block' } };\n\nexport const hiddenItem: Def = { itemProps: { class: 'yqg-form-item-hidden' } };\n\nexport const rangeItem: Def = { label: ' ', itemProps: { class: 'yqg-form-item-range' } };\n\nexport const op: Def = { field: 'op', label: 'common.op' };\n\nexport const id: Def = { field: 'id', label: 'ID' };\n\nexport const time: Def = { field: 'time', label: 'common.time', filter: 'dateTime' };\n\nexport const timeCreate: Def = { field: 'timeCreate', label: 'common.timeCreate', filter: 'dateTime' };\n\nexport const timeUpdate: Def = { field: 'timeUpdate', label: 'common.timeUpdate', filter: 'dateTime' };\n\nexport const timeCreated: Def = merge(timeCreate, { field: 'timeCreated' });\n\nexport const timeUpdated: Def = merge(timeUpdate, { field: 'timeUpdated' });\n\nexport const remark: Def = { field: 'remark', type: 'textarea', label: 'common.remark' };\n\nexport const numberCommasFixed2: Def = { filter: 'numberCommasFixed2' };\n\nexport type TableTitleItem = Record<'value' | 'label' | 'cellFilter', string> & CommonObject;\nexport type ExtraDefMap = Record<string, Def>\nexport const generateColumnDefs = (tableTitle: TableTitleItem[], extraDefMap: ExtraDefMap): Def[] => tableTitle.map(({\n value: field,\n label,\n cellFilter: filter\n}) => ({\n field,\n label,\n filter,\n ...(DefType[filter] ? { type: filter } : {}) as Pick<Def, 'type'>,\n ...(extraDefMap && extraDefMap[field])\n}));\n\nexport type CommonTableOptions<T> = {\n tableTitle: T,\n rowKey: string,\n op: boolean,\n extraDefMap: ExtraDefMap,\n extraCols: Def[]\n} & CommonObject;\nexport const getCommonOptions: (options: CommonTableOptions<TableTitleItem[]>) => TableOptions = ({\n tableTitle,\n rowKey = 'id',\n op: flag = true,\n extraDefMap = {},\n extraCols = [],\n ...rest\n}) => ({\n rowKey,\n colDefs: [\n ...generateColumnDefs(tableTitle, extraDefMap),\n ...(flag ? [op] : []),\n ...extraCols\n ],\n ...rest\n});\n\n// const fetchUrlMap = {\n// // 'dev': 'https://octopus-api-test.yangqianguan.com/',\n// 'dev': 'https://test-sea-octopus-api.fintopia.tech/',\n// 'test-overseas': 'https://test-sea-octopus-api.fintopia.tech/',\n// 'test-indo': 'https://test-sea-octopus-api.fintopia.tech/',\n// 'test-mex': 'https://test-sea-octopus-api.fintopia.tech/',\n// 'test-sea': 'https://test-sea-octopus-api.fintopia.tech/',\n// 'test-eu': 'https://test-sea-octopus-api.fintopia.tech/',\n// 'feat-overseas': 'https://test-sea-octopus-api.fintopia.tech/',\n// 'prod-indo': '',\n// 'prod-mex-huawei': '',\n// 'prod-phi': '',\n// 'prod-sea': '',\n// 'prod-eu': ''\n// };\n\n// customRequest 方法 开启开关 将会 使用公共七牛云服务 获取token\nexport const customRequest = async (options: CommonObject): Promise<any> => {\n const { file, onError, onProgress, onSuccess } = options;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const env = __STAGEENV__;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n if (__USE__COMMON_API__) {\n // oct url 为 api-web/yqg-upload/get-token 网关为了区分 web 改成 oct-get-token\n const { data: { body } } = await http.get('/api-web/yqg-upload/oct-get-token', {\n params: {\n platform: 'qiniu',\n savePath: octSavePath ? octSavePath : ''\n }\n });\n const token = body;\n const observable = upload(file, null, token);\n\n return new Promise((resolve, reject) => {\n observable.subscribe({\n next: onProgress,\n error: err => {\n onError(err);\n reject(err);\n uploadlogFail();\n },\n complete: res => {\n onSuccess(res);\n resolve(res);\n uploadlogSuccess();\n }\n });\n });\n } else {\n const { data: { body: token } } = await Web.getToken();\n const observable = upload(file, null, token);\n\n return new Promise((resolve, reject) => {\n observable.subscribe({\n next: onProgress,\n error: err => {\n onError(err);\n reject(err);\n },\n complete: res => {\n onSuccess(res);\n resolve(res);\n }\n });\n });\n }\n};\n\n// 区分正式 测试环境\nconst uploadlogSuccess = async () => {\n const url = 'https://event-tracking-api.yangqianguan.com/logMetrics';\n\n http.post(url, {\n level: 'INFO',\n logs: [{\n time: +new Date(),\n metricsType: 'qiniu-get-token-success',\n measurement: 'app_oct_translate_metrics_newtest',\n parameter: {\n url: window?.location?.href,\n userAgent: navigator?.userAgent,\n metricsType: 'qiniu-get-token-success',\n appName: 'qiniu-common-fields',\n }\n }]\n }, {\n headers: {\n 'YQG-PLATFORM-SDK-TYPE': 'qiniu-gettoken',\n 'Country': 'CN',\n 'content-type': 'application/json'\n },\n hideLoading: true\n } as any);\n};\n\nconst uploadlogFail = async () => {\n const url = 'https://event-tracking-api.yangqianguan.com/logMetrics';\n http.post(url, {\n level: 'INFO',\n logs: [{\n time: +new Date(),\n metricsType: 'qiniu-get-token-error',\n measurement: 'app_oct_translate_metrics_newtest',\n\n parameter: {\n url: window?.location?.href,\n userAgent: navigator?.userAgent,\n metricsType: 'qiniu-get-token-error',\n appName: 'qiniu-common-fields',\n }\n }]\n\n }, {\n headers: {\n 'YQG-PLATFORM-SDK-TYPE': 'qiniu-gettoken',\n 'Country': 'CN',\n 'content-type': 'application/json'\n },\n hideLoading: true\n } as any);\n};\n\nexport const qiniuFileDef: Def = {\n type: 'file',\n props: { customRequest, listType: 'text', valueField: 'url', urlField: 'url' }\n};\n\nexport const qiniuImageDef: Def = {\n type: 'file',\n props: { customRequest, listType: 'picture', valueField: 'url', urlField: 'url' }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2019-11-29 23:27:11\n * @Last Modified by: hongweihu\n * @Last Modified time: 2023-11-08 14:45:52\n */\n\nimport moment from 'moment';\n\nimport type { Def } from '@yqg/type';\n\nimport DefValue from '../component/def-value.vue';\nimport { dateTimeDef } from './common-fields.ts';\n\nimport type { CommonObject } from './common-fields.ts';\n\nexport * from './common-fields.ts';\n\nexport const extendsDefValue = (options: CommonObject): CommonObject => ({\n extends: DefValue,\n ...options\n});\n\nexport const dateTimeDayStartDef: Def = {\n ...dateTimeDef,\n props: { showTime: { defaultValue: moment('00:00:00', 'HH:mm:ss') } }\n};\n\nexport const dateTimeDayEndDef: Def = {\n ...dateTimeDef,\n props: { showTime: { defaultValue: moment('23:59:59', 'HH:mm:ss') } }\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-14 18:00:42\n * @Last Modified by: wenxiujiang\n * @Last Modified time: 2023-07-20 06:29:49\n */\n\nconst required = true;\nconst isLocal = ({record}) => record.isLocal;\nconst notLocal = (...args) => !isLocal(...args);\n\nexport default {\n imageUrl: {\n field: 'imageUrl',\n label: 'common.imageUrl',\n hide: isLocal,\n required\n },\n imageDesc: {\n field: 'imageDesc',\n label: 'common.imageDesc'\n },\n fileUrl: {\n field: 'fileUrl',\n label: 'common.fileUrl',\n hide: isLocal,\n required\n },\n fileDesc: {\n field: 'fileDesc',\n label: 'common.fileDesc'\n },\n isLocal: {\n field: 'isLocal',\n label: 'common.uploadLocal',\n type: 'switch'\n },\n image: {\n field: 'file',\n label: 'common.uploadImage',\n hide: notLocal,\n required\n },\n audio: {\n field: 'file',\n label: 'common.uploadAudio',\n required\n },\n file: {\n field: 'file',\n label: 'common.uploadFile',\n hide: notLocal,\n required,\n onChange({value: {name} = {}, form}) {\n form.setFieldsValue({fileDesc: name});\n }\n }\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-14 18:13:14\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2021-04-14 13:53:39\n */\n\nimport {merge, qiniuFileDef} from '../../../constant/fields.ts';\nimport Fields from './fields.js';\n\nexport default ({fileDef = qiniuFileDef, multiple = false}) => {\n const fieldFile = merge(fileDef, Fields.file);\n if (multiple) {\n fieldFile.props = merge(fieldFile.props, {\n single: !multiple,\n draggable: true,\n // 上传多个不支持设置描述,所以直接吐对象\n valueField: ''\n });\n // 上传多个不支持设置描述,直接使用文件名\n fieldFile.onChange = null;\n }\n\n return {\n layout: 'horizontal',\n fieldDefs: [\n Fields.isLocal,\n Fields.fileUrl,\n fieldFile,\n merge(Fields.fileDesc, {\n hide: ({values: {isLocal}}) => isLocal && multiple\n })\n ]\n };\n};\n","<!-- @author chengyuzhang -->\n<!-- @email chengyuzhang@yangqianguang.com -->\n<!-- @date 2020-05-13 13:45:05.900 -->\n<!-- @desc generated by yqg-cli@1.2.8-alpha.9 -->\n\n<template>\n <yqg-simple-form\n :title=\"$t('common.uploadFile')\"\n :options=\"formOptions\"\n :values=\"{isLocal: true}\"\n @cancel=\"dismiss\"\n @confirm=\"onConfirm\"\n />\n</template>\n\n<script type=\"text/babel\">\nimport {modal} from '../../../mixin/index.js';\nimport getFormOptions from '../constant/file-upload-form-options.js';\n\nexport default {\n name: 'FileUploadModal',\n\n mixins: [modal],\n\n props: {\n fileDef: {\n type: Object,\n default: undefined\n },\n\n multiple: {\n type: Boolean,\n default: false\n }\n },\n\n computed: {\n formOptions() {\n return getFormOptions(this);\n }\n },\n\n methods: {\n onConfirm({record}) {\n this.close(record);\n }\n }\n};\n</script>\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-14 18:03:10\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2021-04-14 13:55:15\n */\n\nimport {merge, qiniuImageDef} from '../../../constant/fields.ts';\nimport Fields from './fields.js';\n\nexport default ({imageDef = qiniuImageDef, multiple = false}) => {\n const fieldImage = merge(imageDef, Fields.image);\n const acceptArr = ['JPG', 'JPEG', 'PNG', 'BMP'];\n if (multiple) {\n fieldImage.props = merge(fieldImage.props, {\n single: !multiple,\n draggable: true,\n imageOnly: true,\n accept: acceptArr.map(ext => `.${ext.toLowerCase()}`).join(','),\n // 上传多个不支持设置描述,所以直接吐对象\n valueField: ''\n });\n }\n\n return {\n layout: 'horizontal',\n fieldDefs: [\n Fields.isLocal,\n fieldImage,\n Fields.imageUrl,\n // 上传多个不支持设置描述,直接使用文件名\n merge(Fields.imageDesc, {\n hide: ({values: {isLocal}}) => isLocal && multiple\n })\n ]\n };\n};\n","<!-- @author chengyuzhang -->\n<!-- @email chengyuzhang@yangqianguang.com -->\n<!-- @date 2020-05-12 15:09:07.480 -->\n<!-- @desc generated by yqg-cli@1.2.8-alpha.9 -->\n\n<template>\n <yqg-simple-form\n :title=\"$t('common.uploadImage')\"\n :options=\"formOptions\"\n :values=\"{isLocal: true}\"\n @cancel=\"dismiss\"\n @confirm=\"onConfirm\"\n />\n</template>\n\n<script type=\"text/babel\">\nimport {modal} from '../../../mixin/index.js';\nimport getFormOptions from '../constant/image-upload-form-options.js';\n\nexport default {\n name: 'ImageUploadModal',\n\n mixins: [modal],\n\n props: {\n imageDef: {\n type: Object,\n default: undefined\n },\n\n multiple: {\n type: Boolean,\n default: false\n }\n },\n\n computed: {\n formOptions() {\n return getFormOptions(this);\n }\n },\n\n methods: {\n onConfirm({record}) {\n this.close(record);\n }\n }\n};\n</script>\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-12 10:43:56\n * @Last Modified by: chengyuzhang\n * @Last Modified time: 2020-05-12 10:43:56\n */\n\nexport default {\n esc: 27,\n tab: 9,\n enter: 13,\n up: 38,\n down: 40,\n backSpace: 8\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-12 20:18:39\n * @Last Modified by: chengyuzhang\n * @Last Modified time: 2020-07-24 16:05:20\n */\n\nexport default {\n name: 'bold',\n\n icon: {\n type: 'text',\n value: 'B'\n },\n\n insert(selectionText = '') {\n if (!selectionText.trim()) return '**bold**';\n const matched = selectionText.match(/\\*\\*(.+)\\*\\*/);\n\n return matched ? selectionText.replace(matched[0], matched[1]) : `**${selectionText}**`;\n }\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-12 20:18:50\n * @Last Modified by: chengyuzhang\n * @Last Modified time: 2020-05-12 20:18:50\n */\n\nexport default {\n name: 'code',\n\n icon: {\n type: 'icon',\n value: 'code'\n },\n\n insert(selectionText = '') {\n if (!selectionText.trim()) return '\\n```\\ncode\\n```\\n';\n const matched = selectionText.match(/\\n```\\n(.+)\\n```\\n/);\n\n return matched ? selectionText.replace(matched[0], matched[1]) : `\\n\\`\\`\\`\\n${selectionText}\\n\\`\\`\\`\\n`;\n }\n};\n","/**\n * @author panezhang\n * @date 2018/7/28-16:02\n * @file header\n */\n\nexport default {\n name: 'header',\n\n icon: {\n type: 'text',\n value: 'H'\n },\n\n modify({text, selectionStart, selectionEnd}) {\n const lineFirstCharIndex = text.lastIndexOf('\\n', selectionStart - 1) + 1;\n const headText = text.slice(0, lineFirstCharIndex);\n const remainText = text.slice(lineFirstCharIndex).trimStart();\n\n let newText;\n const matched = remainText.match(/^#+/);\n if (matched) {\n newText = matched && matched[0].length > 5\n ? `${headText}${remainText.replace(/^#+\\s*/, '')}` // remove\n : `${headText}#${remainText}`; // add\n } else { // add\n newText = `${headText}# ${remainText}`;\n }\n\n const lengthRevise = newText.length - text.length;\n\n return {\n text: newText,\n selectionStart: selectionStart + lengthRevise,\n selectionEnd: selectionEnd + lengthRevise\n };\n }\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-12 20:19:05\n * @Last Modified by: chengyuzhang\n * @Last Modified time: 2020-07-24 16:04:46\n */\n\nexport default {\n name: 'italic',\n\n icon: {\n type: 'icon',\n value: 'italic'\n },\n\n insert(selectionText = '') {\n if (!selectionText.trim()) return '*italic*';\n const matched = selectionText.match(/\\*(.+)\\*/);\n\n return matched ? selectionText.replace(matched[0], matched[1]) : `*${selectionText}*`;\n }\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-12 20:19:16\n * @Last Modified by: chengyuzhang\n * @Last Modified time: 2020-05-12 20:19:16\n */\n\nexport default {\n name: 'link',\n\n icon: {\n type: 'icon',\n value: 'link'\n },\n\n insert(selectionText = '') {\n if (!selectionText) return '[description](url)';\n const matched = selectionText.match(/\\[(.+)]\\(.+\\)/);\n\n return matched ? selectionText.replace(matched[0], matched[1]) : `[${selectionText}](url)`;\n }\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-12 20:19:24\n * @Last Modified by: chengyuzhang\n * @Last Modified time: 2020-05-12 20:19:24\n */\n\nexport default {\n name: 'quote',\n\n icon: {\n type: 'text',\n value: '”'\n },\n\n modify({text, selectionStart, selectionEnd}) {\n const lineFirstCharIndex = text.lastIndexOf('\\n', selectionStart - 1) + 1;\n const headText = text.slice(0, lineFirstCharIndex);\n const remainText = text.slice(lineFirstCharIndex).trimStart();\n const newText = remainText.startsWith('> ')\n ? `${headText}${remainText.slice(2)}` // remove\n : `${headText}> ${remainText}`; // add\n const lengthRevise = newText.length - text.length;\n\n return {\n text: newText,\n selectionStart: selectionStart + lengthRevise,\n selectionEnd: selectionEnd + lengthRevise\n };\n }\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-12 20:19:48\n * @Last Modified by: chengyuzhang\n * @Last Modified time: 2020-05-12 20:19:48\n */\n\nconst TabString = ' ';\n\nexport default {\n name: 'tab',\n\n modify({text, selectionStart, selectionEnd}) {\n const lineFirstCharIndex = text.lastIndexOf('\\n', selectionStart - 1) + 1;\n\n const preText = text.slice(0, lineFirstCharIndex);\n const selectionFirstLineText = text.slice(lineFirstCharIndex, selectionStart);\n const selectionText = text.slice(selectionStart, selectionEnd);\n const postText = text.slice(selectionEnd);\n\n let newSelectionFirstLineText = selectionFirstLineText;\n let newSelectionText = selectionText;\n\n if (selectionStart === selectionEnd) {\n newSelectionText = TabString;\n } else {\n newSelectionFirstLineText = `${TabString}${selectionFirstLineText}`;\n newSelectionText = selectionText.replace(/\\n/g, `\\n${TabString}`);\n if (selectionText[selectionText.length - 1] === '\\n') {\n newSelectionText = newSelectionText.slice(0, newSelectionText.length - TabString.length);\n }\n }\n\n const newText = `${preText}${newSelectionFirstLineText}${newSelectionText}${postText}`;\n\n const lengthRevise = newText.length - text.length;\n\n return {\n text: newText,\n selectionStart: selectionStart + TabString.length,\n selectionEnd: selectionEnd + lengthRevise\n };\n }\n};\n","/*\n * @Author: chengyuzhang\n * @Date: 2020-05-12 20:19:59\n * @Last Modified by: chengyuzhang\n * @Last Modified time: 2020-05-12 20:27:47\n */\n\nconst TabReg = new RegExp(/(\\n( {4})*( {1,3})+)|(\\n( {4})+)|(\\n( {1,3}))/g);\n\nconst TabSpaceReg = new RegExp(/\\n(\\s)+/);\n\nexport default {\n name: 'untab',\n\n modify({text, selectionStart, selectionEnd}) {\n const lineFirstCharIndex = text.lastIndexOf('\\n', selectionStart - 1) + 1;\n\n let preText = text.slice(0, lineFirstCharIndex - 1);\n let selectionFirstLineText = text.slice(lineFirstCharIndex - 1, selectionStart);\n if (!lineFirstCharIndex) {\n preText = '';\n selectionFirstLineText = `\\n${text.slice(0, selectionStart)}`;\n }\n\n const selectionText = text.slice(selectionStart, selectionEnd);\n const postText = text.slice(selectionEnd);\n\n let newSelectionStart = selectionStart;\n let newSelectionFirstLineText = selectionFirstLineText;\n let newSelectionText = selectionText;\n\n if (selectionFirstLineText.match(TabReg)) {\n const spaceNum = selectionFirstLineText.match(TabReg)[0].length - 1;\n const length = spaceNum % 4 ? spaceNum % 4 : 4;\n newSelectionFirstLineText = `\\n${selectionFirstLineText.slice(length + 1)}`;\n newSelectionStart -= length;\n }\n\n if (selectionText.match(TabReg)) {\n const selectionRestTextArray = selectionText.split('\\n');\n [newSelectionText] = selectionRestTextArray;\n for (let i = 1; i < selectionRestTextArray.length; i += 1) {\n let length = 0;\n const spaces = `\\n${selectionRestTextArray[i]}`.match(TabSpaceReg);\n if (spaces) {\n length = (spaces[0].length - 1) % 4 ? (spaces[0].length - 1) % 4 : 4;\n }\n\n newSelectionText += `\\n${selectionRestTextArray[i].slice(length)}`;\n }\n }\n\n if (!lineFirstCharIndex) {\n newSelectionFirstLineText = newSelectionFirstLineText.slice(1);\n }\n\n const newText = `${preText}${newSelectionFirstLineText}${newSelectionText}${postText}`;\n\n const lengthRevise = newText.length - text.length;\n\n return {\n text: newText,\n selectionStart: newSelectionStart,\n selectionEnd: selectionEnd + lengthRevise\n };\n }\n};\n","/*\n * @Author: egafrandika\n * @Date: 2023-07-31 14:10:46\n * @Last Modified by: egafrandika\n * @Last Modified time: 2023-07-31 14:10:46\n */\n\nconst createVideoEmbed = videoUrl => {\n return `<iframe src=\"${videoUrl}\" frameborder=\"0\" allowfullscreen></iframe>`;\n};\n\nexport default {\n name: 'video',\n\n icon: {\n type: 'text',\n value: 'YT'\n },\n\n insert(selectionText = '') {\n if (!selectionText) return createVideoEmbed('https://www.youtube.com/embed/***URL***');\n }\n};\n","<!-- @Author: chengyuzhang -->\n<!-- @Date: 2020-05-11 19:38:51.035 -->\n<!-- @Last Modified by: egafrandika -->\n<!-- @Last Modified time: 2023-07-31 13:50:55 -->\n\n<template>\n <div class=\"md-editor\">\n <div class=\"app-bar\">\n <a-button\n v-for=\"action in actionList\"\n :key=\"action.name\"\n class=\"button\"\n :disabled=\"disabled\"\n @click=\"callAction(action)\"\n >\n <a-icon\n v-if=\"action.icon.type === 'icon'\"\n :type=\"action.icon.value\"\n />\n <span v-else> {{ action.icon.value }} </span>\n </a-button>\n </div>\n\n <div :style=\"customizedStyle\">\n <textarea\n ref=\"textarea\"\n :value=\"value\"\n class=\"textarea\"\n :disabled=\"disabled\"\n :style=\"{cursor: `${disabled ? 'not-allowed': 'pointer'}`}\"\n @input=\"onInput\"\n @keydown=\"handleKeyDown\"\n />\n </div>\n </div>\n</template>\n\n<script type=\"text/babel\">\nimport KeyCodeMap from '../../../../../util/keyCodeMap.js';\nimport bold from '../action/bold.js';\nimport code from '../action/code.js';\nimport header from '../action/header.js';\nimport italic from '../action/italic.js';\nimport link from '../action/link.js';\nimport quote from '../action/quote.js';\nimport tab from '../action/tab.js';\nimport untab from '../action/untab.js';\nimport ytube from '../action/ytube.js';\n\nconst DEFAULT_ACTION_LIST = [\n header,\n bold,\n italic,\n link,\n quote,\n code,\n ytube\n];\n\nconst DEFAULT_OPTIONS = {\n override: false,\n actionList: [], // 用户定义的 action list\n actionOrder: null // 定义 action 展示的顺序,用 name 指定\n};\n\nconst KeyCodeEventMap = {\n [KeyCodeMap.tab]: tab\n};\n\nconst KeyCodeShiftEventMap = {\n [KeyCodeMap.tab]: untab\n};\n\nexport default {\n name: 'MdEditor',\n\n model: {\n prop: 'value',\n event: 'change'\n },\n\n props: {\n value: {\n type: String,\n required: true\n },\n\n options: {\n type: Object,\n default: () => ({})\n },\n\n customizedStyle: {\n type: Object,\n default: () => ({})\n },\n\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n computed: {\n actionList() {\n const options = {...DEFAULT_OPTIONS, ...this.options};\n const {override, actionList: optionActionList, actionOrder} = options;\n const actionList = override ? optionActionList : [...DEFAULT_ACTION_LIST, ...optionActionList];\n\n if (actionOrder) {\n const actionMap = actionList.reduce((map, cur) => {\n map[cur.name] = cur; // 用 name 作为 key\n\n return map;\n }, {});\n\n return actionOrder.map(name => actionMap[name]);\n }\n\n return actionList;\n }\n },\n\n created() {\n Object.defineProperties(this, { // could not use computed, so use this for convenient\n textarea: {\n get() {\n return this.$refs && this.$refs.textarea;\n }\n },\n\n text: {\n get() {\n return this.textarea && this.textarea.value;\n }\n },\n\n selectionStart: {\n get() {\n return this.textarea && this.textarea.selectionStart;\n }\n },\n\n selectionEnd: {\n get() {\n return this.textarea && this.textarea.selectionEnd;\n }\n },\n\n selectionText: {\n get() {\n const {textarea, selectionStart, selectionEnd, text} = this;\n if (!textarea) return '';\n\n return (selectionStart === selectionEnd) ? '' : text.slice(selectionStart, selectionEnd);\n }\n }\n });\n },\n\n methods: {\n callAction(action = {}) {\n if (action.insert) {\n return this.handleInsert(action);\n }\n\n if (action.modify) {\n return this.handleModify(action);\n }\n\n return null;\n },\n\n handleKeyDown(event) {\n if (event.shiftKey && KeyCodeShiftEventMap[event.keyCode]) {\n event.preventDefault();\n this.callAction(KeyCodeShiftEventMap[event.keyCode]);\n\n return;\n }\n\n if (KeyCodeEventMap[event.keyCode]) {\n event.preventDefault();\n this.callAction(KeyCodeEventMap[event.keyCode]);\n }\n },\n\n async handleInsert(action) {\n const {textarea, text, selectionText, selectionStart, selectionEnd} = this;\n const replaceText = await action.insert(selectionText);\n const newText = `${text.slice(0, selectionStart)}${replaceText}${text.slice(selectionEnd)}`;\n this.emitChange(newText);\n this.$nextTick(() => {\n textarea.setSelectionRange(selectionStart, selectionStart + replaceText.length);\n textarea.focus();\n });\n },\n\n async handleModify(action) {\n const {textarea, text, selectionStart, selectionEnd} = this;\n const {\n text: newText,\n selectionStart: newSelectionStart,\n selectionEnd: newSelectionEnd\n } = await action.modify({text, selectionStart, selectionEnd});\n this.emitChange(newText);\n this.$nextTick(() => {\n textarea.setSelectionRange(newSelectionStart, newSelectionEnd);\n textarea.focus();\n });\n },\n\n onInput() {\n const {$refs: {textarea: {value}}} = this;\n this.emitChange(value);\n },\n\n emitChange(value) {\n this.$emit('change', value);\n }\n }\n};\n\n</script>\n\n<style lang=\"scss\" scoped>\n.md-editor {\n .app-bar {\n .button {\n border: 0;\n font-weight: 600;\n padding: 0 8px;\n box-shadow: none;\n }\n }\n\n .textarea {\n width: 100%;\n height: 100%;\n padding: 20px;\n border: none;\n resize: none;\n background-color: #f6f6f6;\n font-size: 14px;\n font-family: \"Monaco\", courier, monospace;\n\n &:focus {\n outline: none;\n border: 1px solid #ccc;\n }\n }\n}\n</style>\n","<!-- @author chengyuzhang -->\n<!-- @email chengyuzhang@yangqianguang.com -->\n<!-- @date 2020-05-11 19:39:23.260 -->\n<!-- @desc generated by yqg-cli@1.2.8-alpha.9 -->\n\n<template>\n <!-- eslint-disable-next-line vue/no-v-html -->\n <div\n class=\"md-view\"\n v-html=\"mdHtml\"\n />\n</template>\n\n<script type=\"text/babel\">\nimport DOMPurify from 'dompurify';\nimport { marked } from 'marked';\n\nexport default {\n name: 'MdView',\n\n props: {\n mdText: {\n type: String,\n required: true\n }\n },\n\n computed: {\n mdHtml() {\n return DOMPurify.sanitize(marked(this.mdText ?? ''));\n }\n }\n};\n</script>\n\n<style lang=\"scss\">\n.md-view {\n max-width: 100%;\n padding: 10px 20px;\n overflow-x: auto;\n color: #616161;\n\n p,\n li,\n table,\n blockquote,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n line-height: 1.6;\n\n code {\n padding: 0 5px;\n border-radius: 3px;\n background-color: #f3f3f3;\n color: #3f51b5;\n font-family: Menlo, Courier, monospace;\n }\n }\n\n ul,\n ol {\n padding-left: 20px;\n margin-bottom: 20px;\n list-style-position: outside;\n\n li {\n list-style: inherit;\n line-height: 1.3em;\n margin-bottom: 5px;\n\n ul,\n ol {\n margin-top: 8px;\n }\n }\n }\n\n hr {\n margin-bottom: 20px;\n }\n\n h1:first-child {\n margin-top: .5em;\n }\n\n table {\n font-size: 12px;\n color: rgba(0, 0, 0, .9);\n text-align: center;\n border-spacing: 0;\n border-collapse: collapse;\n background-color: #fff;\n border-radius: 2px;\n\n thead {\n tr {\n height: 56px;\n line-height: 56px;\n vertical-align: middle;\n border-bottom: 1px solid #bdbdbd;\n\n th {\n min-width: 120px;\n padding: 0 15px;\n color: rgba(0, 0, 0, .54);\n user-select: none;\n }\n }\n }\n\n tbody {\n tr {\n height: 40px;\n line-height: 40px;\n vertical-align: middle;\n border-bottom: 1px solid rgba(0, 0, 0, .12);\n transition: background .3s cubic-bezier(.25, .8, .5, 1);\n\n will-change: backgaound;\n\n &:hover {\n background-color: #f3f3f3;\n }\n\n td {\n padding: 10px;\n line-height: normal;\n }\n }\n }\n }\n\n blockquote {\n font-style: italic;\n margin: 1em 0;\n padding: 1em 20px;\n position: relative;\n color: #616161;\n border-left: 5px solid;\n background-color: #f3f3f3;\n\n p {\n margin: 0;\n }\n }\n\n img {\n max-width: 100%;\n }\n}\n</style>\n","<!-- @Author: chengyuzhang -->\n<!-- @Date: 2020-05-12 10:53:52.422 -->\n<!-- @Last Modified by: suzilin -->\n<!-- @Last Modified time: 2024-07-22 16:55:17 -->\n\n<template>\n <div\n class=\"yqg-md-editor\"\n :class=\"{'full-screen': fullScreen}\"\n >\n <md-editor\n class=\"md-editor\"\n :value=\"value\"\n :customized-style=\"{height: '100%', border: '1px solid #eee'}\"\n :options=\"options\"\n :disabled=\"isDisabled\"\n @change=\"onChange\"\n />\n <md-view\n class=\"md-view\"\n :md-text=\"value\"\n />\n </div>\n</template>\n\n<script type=\"text/babel\">\nimport fileUploadModal from '../../modal/file-upload-modal.vue';\nimport imageUploadModal from '../../modal/image-upload-modal.vue';\nimport mdEditor from './component/md-editor.vue';\nimport mdView from './component/md-view.vue';\n\nexport default {\n name: 'YqgMdEditor',\n\n components: {\n mdEditor,\n mdView\n },\n\n props: {\n value: {\n type: String,\n default: ''\n },\n\n def: {\n type: Object,\n default: () => ({})\n },\n\n ctx: {\n type: Object,\n default: () => ({})\n },\n\n userActionList: {\n type: Array,\n default: () => []\n },\n\n disableUploadImage: {\n type: Boolean,\n default: false\n },\n\n disableUploadFile: {\n type: Boolean,\n default: false\n },\n\n fileDef: {\n type: Object,\n default: undefined\n },\n\n imageDef: {\n type: Object,\n default: undefined\n },\n\n override: {\n type: Boolean,\n default: false\n }\n },\n\n data() {\n return {\n fullScreen: false\n };\n },\n\n computed: {\n options() {\n const vm = this;\n\n return {\n override: vm.override,\n actionList: [\n ...(vm.disableUploadImage ? [] : [{\n name: 'image',\n icon: {\n type: 'icon',\n value: 'file-image'\n },\n insert(selectionText) {\n return vm.openImageUploadModal(selectionText);\n }\n }]),\n ...(vm.disableUploadFile ? [] : [{\n name: 'file',\n icon: {\n type: 'icon',\n value: 'file'\n },\n insert(selectionText) {\n return vm.openFileUploadModal(selectionText);\n }\n }]),\n ...vm.userActionList,\n {\n name: 'expend',\n icon: {\n type: 'icon',\n value: vm.fullScreen ? 'fullscreen-exit' : 'fullscreen'\n },\n insert(selectionText) {\n vm.fullScreen = !vm.fullScreen;\n\n return selectionText;\n }\n }\n ]\n };\n },\n\n isDisabled() {\n const {def: {disabled = false}, ctx} = this;\n\n return !!(typeof(disabled) === 'function' ? disabled(ctx) : disabled);\n },\n },\n\n methods: {\n onChange(value) {\n this.$emit('change', value);\n },\n\n openImageUploadModal() {\n const {imageDef} = this;\n\n return this.$modal\n .open(imageUploadModal, {imageDef})\n .then(({imageDesc, file, imageUrl}) => `![${imageDesc || ''}](${file || imageUrl})`);\n },\n\n openFileUploadModal(selectionText) {\n const {fileDef} = this;\n\n return this.$modal\n .open(fileUploadModal, {fileDef})\n .then(({fileDesc: fileDescription, file, fileUrl}) => {\n const url = `${file || fileUrl}`;\n const description = selectionText || fileDescription || 'file-description';\n const extStartIdx = url.lastIndexOf('.');\n if (extStartIdx === -1) {\n return `[${description}](${url})`;\n }\n\n const ext = url.slice(extStartIdx);\n const attname = `?attname=${encodeURI(description)}${ext}`;\n\n return `[${description}](${url}${attname})`;\n });\n }\n\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.yqg-md-editor {\n width: 100%;\n display: flex;\n line-height: 20px;\n\n .md-editor {\n flex-shrink: 0;\n width: 50%;\n height: 500px;\n }\n\n .md-view {\n margin-top: 32px;\n height: 500px;\n flex-grow: 1;\n border: 1px solid #eee;\n border-left: none;\n }\n\n &.full-screen {\n position: fixed;\n z-index: 9999;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 15px 25px;\n background-color: #fff;\n height: 100vh;\n\n .md-editor,\n .md-view {\n height: calc(100vh - 100px);\n }\n }\n\n img {\n max-width: 100%;\n }\n}\n</style>\n","<!-- @Author: ruiwang -->\n<!-- @Date: 2020-9-7 19:06:59 -->\n<!-- @Last Modified by: xiaoduoshu -->\n<!-- @Last Modified time: 2023-10-09 18:12:50 -->\n\n<script type=\"text/babel\">\nimport {enumType} from '../../../mixin/index.js';\nimport {numbersToStr} from '../../../util/object.js';\n\nexport default {\n name: 'FieldRadio',\n\n mixins: [enumType],\n\n props: {\n value: {\n type: [Number, String, Boolean],\n default: undefined\n },\n\n cancelable: {\n type: Boolean,\n default: false\n }\n },\n\n data() {\n return {\n compValue: numbersToStr(this.value)\n };\n },\n\n watch: {\n value(val) {\n if (val === this.compValue) return;\n\n this.compValue = numbersToStr(val);\n }\n },\n\n methods: {\n renderColOption(option) {\n const {def: {optionCol: column}} = this;\n const colProps = {\n key: option.value,\n ...column\n };\n\n return (\n <a-col {...{props: colProps}}>\n {this.renderOption({option})}\n </a-col>\n );\n },\n\n renderOption({option, key}) {\n const {$scopedSlots, def, def: {radioButton}} = this;\n const {value, label, disabled} = option;\n const Comp = radioButton ? 'a-radio-button' : 'a-radio';\n\n return (\n <Comp key={key} value={value} disabled={disabled} vOn:click={() => this.onClick(value)}>\n {$scopedSlots.optionLabel?.({def, option, value: this.value}) ?? label}\n </Comp>\n );\n },\n\n onChange(val) {\n this.$emit('change', val);\n },\n\n onClick(val) {\n if (!this.cancelable) return;\n\n if (val === this.compValue) {\n this.compValue = undefined;\n this.$emit('change', undefined);\n }\n }\n },\n\n render() {\n const {options, compValue, def: {props, optionCol}} = this;\n const optionItems = options.map(opt => (optionCol\n ? this.renderColOption(opt)\n : this.renderOption({option: opt, key: opt.value})));\n\n return (\n <a-radio-group value={compValue} {...{props}} vOn:change={this.onChange}>\n {optionCol ? (\n <a-row>{optionItems}</a-row>\n ) : optionItems}\n </a-radio-group>\n );\n }\n};\n</script>\n","/*\n * @Author: wenxiujiang \n * @Date: 2023-07-20 06:26:31 \n * @Last Modified by: suzilin\n * @Last Modified time: 2023-07-24 15:19:21\n */\n\nimport {merge, qiniuFileDef} from '../../../constant/fields.ts';\nimport Fields from './fields.js';\n\nexport default ({fileDef = qiniuFileDef, multiple = false}) => {\n const fieldAudio = merge(fileDef, Fields.audio);\n const acceptArr = ['MP3', 'WAV', 'MP2', 'AAC', 'MOV'];\n if (multiple) {\n fieldAudio.props = merge(fieldAudio.props, {\n single: !multiple,\n draggable: true,\n accept: acceptArr.map(ext => `.${ext.toLowerCase()}`).join(','),\n valueField: ''\n });\n }\n\n return {\n layout: 'horizontal',\n fieldDefs: [\n fieldAudio\n ]\n };\n};\n","<!-- @Author: wenxiujiang -->\n<!-- @Date: 2023-7-20 06:24:52 -->\n<!-- @Last Modified by: wenxiujiang -->\n<!-- @Last Modified time: 2023-07-20 06:40:17 -->\n\n<template>\n <yqg-simple-form\n :title=\"$t('common.uploadAudio')\"\n :options=\"formOptions\"\n @cancel=\"dismiss\"\n @confirm=\"onConfirm\"\n />\n</template>\n\n<script type=\"text/babel\">\nimport {modal} from '../../../mixin/index.js';\nimport getFormOptions from '../constant/audio-upload-form-options.js';\n\nexport default {\n name: 'AudioUploadModal',\n\n mixins: [modal],\n\n props: {\n fileDef: {\n type: Object,\n default: undefined\n },\n\n multiple: {\n type: Boolean,\n default: false\n }\n },\n\n computed: {\n formOptions() {\n return getFormOptions(this);\n }\n },\n\n methods: {\n onConfirm({record}) {\n this.close(record);\n }\n }\n};\n</script>\n","<!-- @author xiaodongyu -->\n<!-- @email xiaodongyu@yangqianguan.com -->\n<!-- @date 2020-11-17 18:54:38 -->\n<!-- @desc inline-style-btn.vue -->\n\n<template>\n <div class=\"inline-color-btn\">\n <slot\n name=\"default\"\n :color=\"color\"\n />\n <a-popover\n v-model=\"visible\"\n placement=\"bottom\"\n trigger=\"click\"\n overlay-class-name=\"rich-color-panel\"\n >\n <template slot=\"content\">\n <a-button\n size=\"small\"\n block\n class=\"auto-btn\"\n @click=\"onChange(initColor)\"\n >\n 自动\n </a-button>\n <div class=\"color-title\">\n {{ $t('rich.primaryColor') }}\n </div>\n <div class=\"primary-color-list\">\n <div\n v-for=\"(primaryColor, idx) in $options.PrimaryColors\"\n :key=\"primaryColor\"\n class=\"primary-color-column\"\n >\n <div\n :style=\"`background-color: ${primaryColor};`\"\n class=\"color-box primary-color-box\"\n @click=\"onChange(primaryColor)\"\n />\n <div\n v-for=\"rateColor in $options.PrimaryRateColors[idx]\"\n :key=\"rateColor\"\n :style=\"`background-color: ${rateColor};`\"\n class=\"color-box\"\n @click=\"onChange(rateColor)\"\n />\n </div>\n </div>\n <div class=\"color-title\">\n {{ $t('rich.standardColor') }}\n </div>\n <div class=\"standard-color-list\">\n <div\n v-for=\"standardColor in $options.StandardColors\"\n :key=\"standardColor\"\n :style=\"`background-color: ${standardColor};`\"\n class=\"color-box standard-color-box\"\n @click=\"onChange(standardColor)\"\n />\n </div>\n </template>\n <a-icon\n type=\"down\"\n class=\"icon-down\"\n />\n </a-popover>\n </div>\n</template>\n\n<script type=\"text/babel\">\n/* eslint-disable no-bitwise, no-floating-decimal */\n\nfunction rate(num, percent) {\n const max = 255;\n num += Math.floor((percent > 0 ? max - num : num) * percent);\n num += max;\n\n return num % max;\n}\n\nfunction lighten(col, percent) {\n let usePrefix = false;\n if (col[0] === '#') {\n col = col.slice(1);\n usePrefix = true;\n }\n\n const num = parseInt(col, 16);\n const red = rate(num >> 16, percent);\n const green = rate((num >> 8) & 0x00FF, percent);\n const black = rate(num & 0x0000FF, percent);\n\n return `${usePrefix ? '#' : ''}${(black | (green << 8) | (red << 16)).toString(16).padStart(6, '0')}`;\n}\n\nconst PrimaryColors = [\n '#ffffff',\n '#000000',\n '#e7e6e6',\n '#44536a',\n '#4372c3',\n '#ed7d31',\n '#a5a5a5',\n '#fec001',\n '#5b9bd5',\n '#70ad47'\n];\n// 加深darken传负的\nconst PrimaryRates = [\n [-.05, -.15, -.25, -.35, -.5],\n [.5, .35, .25, .15, .05],\n [-.1, -.25, -.5, -.75, -.9],\n [.8, .6, .4, -.25, -.5],\n [.8, .6, .4, -.25, -.5],\n [.8, .6, .4, -.25, -.5],\n [.8, .6, .4, -.25, -.5],\n [.8, .6, .4, -.25, -.5],\n [.8, .6, .4, -.25, -.5],\n [.8, .6, .4, -.25, -.5]\n];\nconst PrimaryRateColors = PrimaryColors.map((color, idx) => PrimaryRates[idx].map(percent => lighten(color, percent)));\n\nconst StandardColors = [\n '#c00001',\n '#ff0100',\n '#fec001',\n '#ffff01',\n '#92cf50',\n '#00b04f',\n '#01b0ef',\n '#0070bf',\n '#00205f',\n '#7030a0'\n];\n\nexport default {\n name: 'InlineColorBtn',\n\n props: {\n initColor: {\n type: String,\n default: 'unset'\n }\n },\n\n PrimaryColors,\n\n PrimaryRateColors,\n\n StandardColors,\n\n data() {\n return {\n color: this.initColor,\n visible: false\n };\n },\n\n methods: {\n onChange(color) {\n Object.assign(this, {color, visible: false});\n this.$emit('change', color);\n }\n }\n};\n</script>\n\n<style lang=\"scss\">\n$white: #fff;\n$bgc: #323232;\n\n.icon-down {\n padding: .2rem .5rem .2rem 0;\n}\n\n.rich-color-panel {\n .ant-popover-arrow {\n border-color: $bgc !important;\n }\n\n .ant-popover-inner {\n background-color: $bgc;\n }\n\n .auto-btn {\n color: $white;\n background-color: transparent;\n }\n\n .color-title {\n margin: 10px 0;\n font-weight: bold;\n color: $white;\n }\n\n .primary-color-list {\n display: flex;\n\n .primary-color-column {\n &:not(:last-of-type) {\n margin-right: 5px;\n }\n\n .primary-color-box {\n margin-bottom: 10px;\n }\n }\n }\n\n .standard-color-list {\n display: flex;\n\n .standard-color-box {\n margin-right: 5px;\n }\n }\n\n .color-box {\n width: 15px;\n height: 15px;\n cursor: pointer;\n }\n}\n</style>\n","<!-- @author xiaodongyu -->\n<!-- @email xiaodongyu@yangqianguan.com -->\n<!-- @date 2020-11-19 16:55:12 -->\n<!-- @desc inline-font-size-btn.vue -->\n\n<template>\n <div class=\"inline-font-size-btn\">\n <a-icon\n class=\"icon\"\n type=\"font-size\"\n @click=\"onChange()\"\n />\n <select\n v-model=\"fontSize\"\n size=\"small\"\n class=\"font-size-select\"\n @change=\"onChange\"\n >\n <option\n v-for=\"(title, value) in optionMap\"\n :key=\"value\"\n :value=\"value\"\n >\n {{ title }}\n </option>\n </select>\n </div>\n</template>\n\n<script type=\"text/babel\">\nexport default {\n name: 'InlineFontSizeBtn',\n\n props: {\n initSize: {\n type: String,\n default: 'unset'\n }\n },\n\n data() {\n return {\n fontSize: this.initSize\n };\n },\n\n computed: {\n optionMap() {\n const min = 12;\n const arr = new Array(11).fill('').map((item, idx) => min + idx * 2).concat(36, 48, 72);\n\n return arr.reduce(\n (map, size) => ({...map, [`${size}px`]: size}),\n {unset: this.$t('rich.auto')}\n );\n }\n },\n\n methods: {\n onChange() {\n this.$emit('change', this.fontSize);\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.inline-font-size-btn {\n .icon {\n margin: -.2rem 0 -.2rem -.5rem;\n padding: .2rem 0 .2rem .5rem;\n }\n\n .font-size-select {\n width: 45px;\n height: 16px;\n font-size: 12px;\n outline: none;\n border: none;\n }\n}\n</style>\n","/*\n * @Author: xiaodongyu\n * @Date 2020-11-19 23:39:01\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-12-19 11:11:18\n */\n\nimport {Mark} from 'tiptap';\nimport {toggleMark} from 'tiptap-commands';\n\nexport default function Alignment(align) {\n return class extends Mark {\n\n get name() {\n return align;\n }\n\n get schema() {\n return {\n attrs: {\n align: {\n default: null\n }\n },\n parseDOM: [\n {\n style: 'text-align',\n getAttrs: value => ({\n align: value\n })\n }\n ],\n toDOM: mark => ['span', {\n style: `text-align: ${mark.attrs.align};display: block;`\n }, 0]\n };\n }\n\n commands({type}) {\n return () => toggleMark(type, {align});\n }\n\n };\n}\n","/*\n * @Author: xiaodongyu\n * @Date 2020-11-17 14:31:28\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-12-01 13:57:45\n */\n\nimport {Mark} from 'tiptap';\nimport {updateMark, removeMark} from 'tiptap-commands';\n\nexport default function InlineStyle(styleAttr, extraStyle = '') {\n return class extends Mark {\n\n get name() {\n return `inline-${styleAttr}`;\n }\n\n get defaultOptions() {\n return {\n unsetValue: 'unset'\n };\n }\n\n get schema() {\n return {\n attrs: {\n [styleAttr]: {\n default: null\n }\n },\n parseDOM: [\n {\n style: styleAttr,\n getAttrs: value => ({\n [styleAttr]: value\n })\n }\n ],\n toDOM: mark => ['span', {\n style: `${styleAttr}: ${mark.attrs[styleAttr]};${extraStyle}`\n }, 0]\n };\n }\n\n commands({type}) {\n return attrs => {\n const {unsetValue} = this.options;\n if (attrs[styleAttr] === unsetValue) {\n return removeMark(type);\n }\n\n return updateMark(type, attrs);\n };\n }\n\n };\n}\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-29 16:14:09\n * @Last Modified by: zhijiezhanng\n * @Last Modified time: 2021-10-11 17:23:27\n */\n\nimport {InputRule} from 'prosemirror-inputrules';\nimport {Node, Plugin} from 'tiptap';\nimport {getMarkAttrs} from 'tiptap-utils';\n\n/**\n * Matches following attributes in Markdown-typed anchor: [, alt, src, title]\n *\n * Example:\n * [Lorem](image.jpg) -> [, \"Lorem\", \"image.jpg\"]\n * [](image.jpg \"Ipsum\") -> [, \"\", \"image.jpg\", \"Ipsum\"]\n * [Lorem](image.jpg \"Ipsum\") -> [, \"Lorem\", \"image.jpg\", \"Ipsum\"]\n */\n// ref: https://github.com/ueberdosis/tiptap/blob/main/packages/tiptap-extensions/src/nodes/Image.js\nconst ANCHOR_INPUT_REGEX = /\\[(.+|:?)]\\((\\S+)(?:(?:\\s+)[\"'](\\S+)[\"'])?\\)/;\n\nexport default class Anchor extends Node {\n\n get name() {\n return 'anchor';\n }\n\n get defaultOptions() {\n return {\n openOnClick: true,\n target: null\n };\n }\n\n get schema() {\n return {\n content: 'inline*',\n group: 'inline',\n draggable: false,\n inline: true,\n attrs: {\n href: {\n default: null\n },\n target: {\n default: null\n },\n title: {\n default: null\n },\n icon: {\n default: null\n }\n },\n parseDOM: [\n {\n tag: 'a[href]',\n getAttrs: dom => ({\n href: dom.getAttribute('href'),\n target: dom.getAttribute('target'),\n title: dom.getAttribute('title')\n }),\n preserveWhitespace: true\n }\n ],\n toDOM: node => ['a', {\n target: this.options.target,\n ...node.attrs,\n rel: 'noopener noreferrer nofollow'\n }, 0]\n };\n }\n\n commands({type, schema}) {\n return attrs => (state, dispatch) => {\n const {selection} = state;\n const position = selection.$cursor ? selection.$cursor.pos : selection.$to.pos;\n const node = type.create(attrs, [\n schema.nodes.anticon.create({type: attrs.icon ?? 'link'}),\n schema.text(attrs.text)\n ]);\n const transaction = state.tr.insert(position, node);\n dispatch(transaction);\n };\n }\n\n inputRules({type, schema}) {\n return [\n new InputRule(ANCHOR_INPUT_REGEX, (state, match, start, end) => {\n const [, text, href, title] = match;\n const attrs = {href, title};\n const {tr} = state;\n\n if (match[0]) {\n tr.replaceWith(start - 1, end, type.create(attrs, [\n schema.nodes.anticon.create({type: 'link'}),\n schema.text(text)\n ]));\n }\n\n return tr;\n })\n ];\n }\n\n get plugins() {\n if (!this.options.openOnClick) {\n return [];\n }\n\n return [\n new Plugin({\n props: {\n handleClick: (view, pos, event) => {\n const {schema} = view.state;\n const attrs = getMarkAttrs(view.state, schema.marks.anchor || {});\n\n if (attrs.href && event.target instanceof HTMLAnchorElement) {\n event.stopPropagation();\n window.open(attrs.href);\n }\n }\n }\n })\n ];\n }\n\n}\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:18:59\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-28 22:38:14\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-table',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M17 17v5h2a3 3 0 0 0 3-3v-2h-5zm-2 0H9v5h6v-5zm2-2h5V9h-5v6zm-2 0V9H9v6h6zm2-8h5V5a3 3 0 0 0-3-3h-2v5zm-2 0V2H9v5h6zm9 9.18V19a5 5 0 0 1-5 5H5a5 5 0 0 1-5-5V5a5 5 0 0 1 5-5h14a5 5 0 0 1 5 5v2.82a.84.84 0 0 1 0 .36v7.64a.84.84 0 0 1 0 .36zM7 2H5a3 3 0 0 0-3 3v2h5V2zM2 9v6h5V9H2zm0 8v2a3 3 0 0 0 3 3h2v-5H2z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:36:54\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-28 22:38:04\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-delete-table',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M19,14 C21.7600532,14.0033061 23.9966939,16.2399468 24,19 C24,21.7614237 21.7614237,24 19,24 C16.2385763,24 14,21.7614237 14,19 C14,16.2385763 16.2385763,14 19,14 Z M16.5,19.9375 L21.5,19.9375 C22.017767,19.9375 22.4375,19.517767 22.4375,19 C22.4375,18.482233 22.017767,18.0625 21.5,18.0625 L16.5,18.0625 C15.982233,18.0625 15.5625,18.482233 15.5625,19 C15.5625,19.517767 15.982233,19.9375 16.5,19.9375 Z M12.2898787,17 L9,17 L9,22 L12.6736312,22 C13.0297295,22.7496048 13.515133,23.4258795 14.1010173,24 L5,24 C2.23857625,24 -1.43817996e-15,21.7614237 -1.77635684e-15,19 L-3.55271368e-15,5 C-3.89089055e-15,2.23857625 2.23857625,5.07265313e-16 5,-1.77635684e-15 L19,-1.77635684e-15 C21.7614237,-2.28362215e-15 24,2.23857625 24,5 L24,7.82313285 C24.0122947,7.88054124 24.0187107,7.93964623 24.0187107,8 C24.0187107,8.06035377 24.0122947,8.11945876 24,8.17686715 L24,14.1010173 C23.4258795,13.515133 22.7496048,13.0297295 22,12.6736312 L22,9 L17,9 L17,12.2898787 C16.2775651,12.5048858 15.6040072,12.8333806 15,13.2546893 L15,9 L9,9 L9,15 L13.2546893,15 C12.8333806,15.6040072 12.5048858,16.2775651 12.2898787,17 Z M17,7 L22,7 L22,5 C22,3.34314575 20.6568542,2 19,2 L17,2 L17,7 Z M15,7 L15,2 L9,2 L9,7 L15,7 Z M7,2 L5,2 C3.34314575,2 2,3.34314575 2,5 L2,7 L7,7 L7,2 Z M2,9 L2,15 L7,15 L7,9 L2,9 Z M2,17 L2,19 C2,20.6568542 3.34314575,22 5,22 L7,22 L7,17 L2,17 Z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:40:42\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-28 22:41:22\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-add-col-before',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M19,14 C21.7600532,14.0033061 23.9966939,16.2399468 24,19 C24,21.7614237 21.7614237,24 19,24 C16.2385763,24 14,21.7614237 14,19 C14,16.2385763 16.2385763,14 19,14 Z M21.5,19.9375 C22.017767,19.9375 22.4375,19.517767 22.4375,19 C22.4375,18.482233 22.017767,18.0625 21.5,18.0625 L20.25,18.0625 C20.077411,18.0625 19.9375,17.922589 19.9375,17.75 L19.9375,16.5 C19.9375,15.982233 19.517767,15.5625 19,15.5625 C18.482233,15.5625 18.0625,15.982233 18.0625,16.5 L18.0625,17.75 C18.0625,17.922589 17.922589,18.0625 17.75,18.0625 L16.5,18.0625 C15.982233,18.0625 15.5625,18.482233 15.5625,19 C15.5625,19.517767 15.982233,19.9375 16.5,19.9375 L17.75,19.9375 C17.922589,19.9375 18.0625,20.077411 18.0625,20.25 L18.0625,21.5 C18.0625,22.017767 18.482233,22.4375 19,22.4375 C19.517767,22.4375 19.9375,22.017767 19.9375,21.5 L19.9375,20.25 C19.9375,20.077411 20.077411,19.9375 20.25,19.9375 L21.5,19.9375 Z M2,19 C2,20.6568542 3.34314575,22 5,22 C6.65685425,22 8,20.6568542 8,19 L8,5 C8,3.34314575 6.65685425,2 5,2 C3.34314575,2 2,3.34314575 2,5 L2,19 Z M-2.7585502e-16,19 L5.81397739e-16,5 C-1.37692243e-16,2.23857625 2.23857625,0 5,0 C7.76142375,0 10,2.23857625 10,5 L10,19 C10,21.7614237 7.76142375,24 5,24 C2.23857625,24 4.43234962e-16,21.7614237 -2.7585502e-16,19 Z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:40:42\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-28 22:44:27\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-add-col-after',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M5,14 C7.76005315,14.0033061 9.99669388,16.2399468 10,19 C10,21.7614237 7.76142375,24 5,24 C2.23857625,24 1.77635684e-15,21.7614237 1.77635684e-15,19 C1.77635684e-15,16.2385763 2.23857625,14 5,14 Z M7.5,19.9375 C8.01776695,19.9375 8.4375,19.517767 8.4375,19 C8.4375,18.482233 8.01776695,18.0625 7.5,18.0625 L6.25,18.0625 C6.07741102,18.0625 5.9375,17.922589 5.9375,17.75 L5.9375,16.5 C5.9375,15.982233 5.51776695,15.5625 5,15.5625 C4.48223305,15.5625 4.0625,15.982233 4.0625,16.5 L4.0625,17.75 C4.0625,17.922589 3.92258898,18.0625 3.75,18.0625 L2.5,18.0625 C1.98223305,18.0625 1.5625,18.482233 1.5625,19 C1.5625,19.517767 1.98223305,19.9375 2.5,19.9375 L3.75,19.9375 C3.92258898,19.9375 4.0625,20.077411 4.0625,20.25 L4.0625,21.5 C4.0625,22.017767 4.48223305,22.4375 5,22.4375 C5.51776695,22.4375 5.9375,22.017767 5.9375,21.5 L5.9375,20.25 C5.9375,20.077411 6.07741102,19.9375 6.25,19.9375 L7.5,19.9375 Z M16,19 C16,20.6568542 17.3431458,22 19,22 C20.6568542,22 22,20.6568542 22,19 L22,5 C22,3.34314575 20.6568542,2 19,2 C17.3431458,2 16,3.34314575 16,5 L16,19 Z M14,19 L14,5 C14,2.23857625 16.2385763,0 19,0 C21.7614237,0 24,2.23857625 24,5 L24,19 C24,21.7614237 21.7614237,24 19,24 C16.2385763,24 14,21.7614237 14,19 Z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:36:54\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-28 22:45:06\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-delete-col',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M12.6414391,21.9312708 C12.9358807,22.5689168 13.3234155,23.1547532 13.7866134,23.6713497 C13.2317936,23.8836754 12.6294813,24 12,24 C9.23857625,24 7,21.7614237 7,19 L7,5 C7,2.23857625 9.23857625,0 12,0 C14.7614237,0 17,2.23857625 17,5 L17,12.2898787 C16.2775651,12.5048858 15.6040072,12.8333806 15,13.2546893 L15,5 C15,3.34314575 13.6568542,2 12,2 C10.3431458,2 9,3.34314575 9,5 L9,19 C9,20.6568542 10.3431458,22 12,22 C12.220157,22 12.4347751,21.9762852 12.6414391,21.9312708 Z M19,14 C21.7600532,14.0033061 23.9966939,16.2399468 24,19 C24,21.7614237 21.7614237,24 19,24 C16.2385763,24 14,21.7614237 14,19 C14,16.2385763 16.2385763,14 19,14 Z M16.5,19.9375 L21.5,19.9375 C22.017767,19.9375 22.4375,19.517767 22.4375,19 C22.4375,18.482233 22.017767,18.0625 21.5,18.0625 L16.5,18.0625 C15.982233,18.0625 15.5625,18.482233 15.5625,19 C15.5625,19.517767 15.982233,19.9375 16.5,19.9375 Z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:40:42\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-28 22:45:47\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-add-row-before',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M19,14 C21.7600532,14.0033061 23.9966939,16.2399468 24,19 C24,21.7614237 21.7614237,24 19,24 C16.2385763,24 14,21.7614237 14,19 C14,16.2385763 16.2385763,14 19,14 Z M21.5,19.9375 C22.017767,19.9375 22.4375,19.517767 22.4375,19 C22.4375,18.482233 22.017767,18.0625 21.5,18.0625 L20.25,18.0625 C20.077411,18.0625 19.9375,17.922589 19.9375,17.75 L19.9375,16.5 C19.9375,15.982233 19.517767,15.5625 19,15.5625 C18.482233,15.5625 18.0625,15.982233 18.0625,16.5 L18.0625,17.75 C18.0625,17.922589 17.922589,18.0625 17.75,18.0625 L16.5,18.0625 C15.982233,18.0625 15.5625,18.482233 15.5625,19 C15.5625,19.517767 15.982233,19.9375 16.5,19.9375 L17.75,19.9375 C17.922589,19.9375 18.0625,20.077411 18.0625,20.25 L18.0625,21.5 C18.0625,22.017767 18.482233,22.4375 19,22.4375 C19.517767,22.4375 19.9375,22.017767 19.9375,21.5 L19.9375,20.25 C19.9375,20.077411 20.077411,19.9375 20.25,19.9375 L21.5,19.9375 Z M5,2 C3.34314575,2 2,3.34314575 2,5 C2,6.65685425 3.34314575,8 5,8 L19,8 C20.6568542,8 22,6.65685425 22,5 C22,3.34314575 20.6568542,2 19,2 L5,2 Z M5,0 L19,0 C21.7614237,-5.07265313e-16 24,2.23857625 24,5 C24,7.76142375 21.7614237,10 19,10 L5,10 C2.23857625,10 3.38176876e-16,7.76142375 0,5 C-1.2263553e-15,2.23857625 2.23857625,5.07265313e-16 5,0 Z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:40:42\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-30 13:28:05\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-add-row-after',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M19,0 C21.7600532,0.00330611633 23.9966939,2.23994685 24,5 C24,7.76142375 21.7614237,10 19,10 C16.2385763,10 14,7.76142375 14,5 C14,2.23857625 16.2385763,0 19,0 Z M21.5,5.9375 C22.017767,5.9375 22.4375,5.51776695 22.4375,5 C22.4375,4.48223305 22.017767,4.0625 21.5,4.0625 L20.25,4.0625 C20.077411,4.0625 19.9375,3.92258898 19.9375,3.75 L19.9375,2.5 C19.9375,1.98223305 19.517767,1.5625 19,1.5625 C18.482233,1.5625 18.0625,1.98223305 18.0625,2.5 L18.0625,3.75 C18.0625,3.92258898 17.922589,4.0625 17.75,4.0625 L16.5,4.0625 C15.982233,4.0625 15.5625,4.48223305 15.5625,5 C15.5625,5.51776695 15.982233,5.9375 16.5,5.9375 L17.75,5.9375 C17.922589,5.9375 18.0625,6.07741102 18.0625,6.25 L18.0625,7.5 C18.0625,8.01776695 18.482233,8.4375 19,8.4375 C19.517767,8.4375 19.9375,8.01776695 19.9375,7.5 L19.9375,6.25 C19.9375,6.07741102 20.077411,5.9375 20.25,5.9375 L21.5,5.9375 Z M5,16 C3.34314575,16 2,17.3431458 2,19 C2,20.6568542 3.34314575,22 5,22 L19,22 C20.6568542,22 22,20.6568542 22,19 C22,17.3431458 20.6568542,16 19,16 L5,16 Z M5,14 L19,14 C21.7614237,14 24,16.2385763 24,19 C24,21.7614237 21.7614237,24 19,24 L5,24 C2.23857625,24 3.38176876e-16,21.7614237 0,19 C-1.2263553e-15,16.2385763 2.23857625,14 5,14 Z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:36:54\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-28 22:47:01\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-delete-row',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M13.2546893,15 C12.8333806,15.6040072 12.5048858,16.2775651 12.2898787,17 L5,17 C2.23857625,17 3.38176876e-16,14.7614237 0,12 C-1.2263553e-15,9.23857625 2.23857625,7 5,7 L19,7 C21.7614237,7 24,9.23857625 24,12 C24,12.6294813 23.8836754,13.2317936 23.6713497,13.7866134 C23.1547532,13.3234155 22.5689168,12.9358807 21.9312708,12.6414391 C21.9762852,12.4347751 22,12.220157 22,12 C22,10.3431458 20.6568542,9 19,9 L5,9 C3.34314575,9 2,10.3431458 2,12 C2,13.6568542 3.34314575,15 5,15 L13.2546893,15 Z M19,14 C21.7600532,14.0033061 23.9966939,16.2399468 24,19 C24,21.7614237 21.7614237,24 19,24 C16.2385763,24 14,21.7614237 14,19 C14,16.2385763 16.2385763,14 19,14 Z M16.5,19.9375 L21.5,19.9375 C22.017767,19.9375 22.4375,19.517767 22.4375,19 C22.4375,18.482233 22.017767,18.0625 21.5,18.0625 L16.5,18.0625 C15.982233,18.0625 15.5625,18.482233 15.5625,19 C15.5625,19.517767 15.982233,19.9375 16.5,19.9375 Z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-10-28 22:47:19\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-10-28 22:48:06\n */\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-combine-cells',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 24 24', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M2,19 C2,20.6568542 3.34314575,22 5,22 L19,22 C20.6568542,22 22,20.6568542 22,19 L22,5 C22,3.34314575 20.6568542,2 19,2 L5,2 C3.34314575,2 2,3.34314575 2,5 L2,19 Z M-1.16403344e-15,19 L-3.0678068e-16,5 C-6.44957556e-16,2.23857625 2.23857625,0 5,0 L19,0 C21.7614237,0 24,2.23857625 24,5 L24,19 C24,21.7614237 21.7614237,24 19,24 L5,24 C2.23857625,24 9.50500275e-16,21.7614237 -1.16403344e-15,19 Z M12,10 C12.5522847,10 13,10.4477153 13,11 L13,13 C13,13.5522847 12.5522847,14 12,14 C11.4477153,14 11,13.5522847 11,13 L11,11 C11,10.4477153 11.4477153,10 12,10 Z M12,16 C12.5522847,16 13,16.4477153 13,17 L13,20 C13,20.5522847 12.5522847,21 12,21 C11.4477153,21 11,20.5522847 11,20 L11,17 C11,16.4477153 11.4477153,16 12,16 Z M12,3 C12.5522847,3 13,3.44771525 13,4 L13,7 C13,7.55228475 12.5522847,8 12,8 C11.4477153,8 11,7.55228475 11,7 L11,4 C11,3.44771525 11.4477153,3 12,3 Z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: wenxiujiang\n * @Date: 2021-01-26 16:32:54\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2021-04-13 15:20:38\n */\n\n/* eslint-disable max-len */\n\nexport default {\n name: 'plus',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 100 100', stroke: 'currentColor'},\n children: [\n {\n tag: 'line',\n attrs: {\n 'x1': 12,\n 'y1': 50,\n 'x2': 88,\n 'y2': 50,\n 'stroke-width': 6,\n 'stroke-linecap': 'round'\n }\n },\n {\n tag: 'line',\n attrs: {\n 'x1': 50,\n 'y1': 12,\n 'x2': 50,\n 'y2': 88,\n 'stroke-width': 6,\n 'stroke-linecap': 'round'\n }\n }\n ]\n }\n};\n","/*\n * @Author: wenxiujiang\n * @Date: 2021-04-13 8:28:00\n * @Last Modified by: wenxiujiang\n * @Last Modified time: 2021-04-13 8:28:00\n */\n\n/* eslint-disable max-len */\n\nexport default {\n name: 'beauty-eye',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 1025 1024', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M950.930286 548.571429q-86.857143-134.838857-217.709714-201.728 34.852571 59.428571 34.852571 128.585143 0 105.728-75.154286 180.845714t-180.845714 75.154286-180.845714-75.154286-75.154286-180.845714q0-69.156571 34.852571-128.585143-130.852571 66.852571-217.709714 201.728 75.995429 117.138286 190.573714 186.587429t248.283429 69.412571 248.283429-69.412571 190.573714-186.587429zM539.501714 329.142857q0-11.446857-8.009143-19.419429t-19.419429-8.009143q-71.424 0-122.587429 51.126857t-51.126857 122.587429q0 11.446857 8.009143 19.419429t19.419429 8.009143 19.419429-8.009143 8.009143-19.419429q0-49.152 34.852571-84.004571t84.004571-34.852571q11.446857 0 19.419429-8.009143t8.009143-19.419429zM1024.073143 548.571429q0 19.419429-11.446857 39.424-80.018286 131.437714-215.149714 210.578286t-285.44 79.140571-285.44-79.433143-215.149714-210.285714q-11.446857-20.004571-11.446857-39.424t11.446857-39.424q80.018286-130.852571 215.149714-210.285714t285.44-79.433143 285.44 79.433143 215.149714 210.285714q11.446857 20.004571 11.446857 39.424z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: wenxiujiang\n * @Date: 2021-04-13 8:28:00\n * @Last Modified by: wenxiujiang\n * @Last Modified time: 2021-04-13 8:28:00\n */\n\n/* eslint-disable max-len */\n\nexport default {\n name: 'beauty-eye-invisible',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 1024 1024', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M941.677 391.71c9.338-14.006 6.225-32.681-6.225-43.575-14.006-10.894-32.681-7.781-43.575 6.225-1.557 1.556-174.3 205.426-379.728 205.426-199.2 0-379.727-205.426-381.283-206.982-10.895-12.45-31.125-14.006-43.576-3.113-12.45 10.894-14.006 31.125-3.113 43.576 3.113 4.668 40.463 46.687 99.6 93.375l-79.37 82.482c-12.45 12.45-10.893 32.681 1.557 43.575 3.113 6.225 10.894 9.338 18.676 9.338 7.78 0 15.562-3.113 21.787-9.338l85.594-88.706c40.463 28.013 88.707 54.47 141.62 73.144l-32.682 110.495c-4.668 17.118 4.67 34.237 21.788 38.906h9.337c14.006 0 26.457-9.338 29.569-23.344l32.681-110.495c24.9 4.669 51.357 7.782 77.813 7.782s52.913-3.113 77.814-7.782l32.68 108.939c3.114 14.006 17.12 23.343 29.57 23.343 3.113 0 6.225 0 7.782-1.556 17.118-4.67 26.456-21.787 21.788-38.906L649.099 595.58c52.914-18.676 101.157-45.132 141.62-73.144l84.038 87.15c6.225 6.225 14.006 9.338 21.787 9.338 7.781 0 15.563-3.113 21.787-9.337 12.45-12.451 12.45-31.125 1.557-43.576l-79.37-82.481c63.808-46.689 101.16-91.82 101.16-91.82z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: qxy\n * @Date: 2020-06-19 13:35:43\n * @Last Modified by: qxy\n * @Last Modified time: 2020-06-19 14:29:00\n */\n\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-plus',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 1024 1024', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M404.82 912V619.18H112V404.82h292.82V112h214.36v292.82H912v214.36H619.18V912z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: qxy\n * @Date: 2020-06-19 13:48:43\n * @Last Modified by: qxy\n * @Last Modified time: 2020-06-19 13:59:13\n */\n\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-minus',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 1024 1024', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M911.232 420.565v109.718q0 22.848-16 38.848t-38.848 16H161.536q-22.848 0-38.848-16t-16-38.848V420.565q0-22.848 16-38.848t38.848-16h694.848q22.848 0 38.848 16t16 38.848z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: qxy\n * @Date: 2020-07-08 16:27:07\n * @Last Modified by: qxy\n * @Last Modified time: 2020-07-08 16:29:26\n */\n\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-mute',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 1024 1024', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M955.077 110.277l-41.354-41.354c-11.815-11.815-33.477-9.846-47.261 5.908L669.538 271.754v-76.8c0-86.646-68.923-155.57-155.569-155.57h-3.938c-86.646 0-155.57 68.924-155.57 155.57v285.538c0 29.539 7.877 59.077 23.631 82.708l-68.923 68.923C275.692 590.77 256 537.6 256 480.493v-78.77c0-27.57-21.662-47.261-49.23-47.261s-49.232 19.692-49.232 47.261v78.77c0 84.676 31.508 161.476 82.708 220.553L74.831 866.462c-13.785 13.784-15.754 35.446-5.908 47.261l41.354 41.354c11.815 11.815 33.477 9.846 47.261-5.908L949.17 157.54c15.754-13.785 17.723-35.447 5.908-47.262zM768 456.862v23.63c0 137.846-114.215 252.062-256 252.062h-17.723l-76.8 80.738c15.754 3.939 35.446 7.877 55.138 11.816v61.046H384c-27.57 0-49.23 21.661-49.23 49.23s21.66 49.231 49.23 49.231h257.97c27.568 0 49.23-21.661 49.23-49.23s-23.63-49.231-51.2-49.231h-88.615v-63.016c177.23-23.63 315.077-169.353 315.077-342.646v-78.769c0-11.815-5.908-23.63-11.816-31.508L768 456.862z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: qxy\n * @Date: 2020-07-08 16:28:00\n * @Last Modified by: qxy\n * @Last Modified time: 2020-07-08 16:29:11\n */\n\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-unmuted',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 1024 1024', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M817.23 354.462c-27.568 0-49.23 19.692-49.23 47.261v78.77c0 137.845-116.185 252.06-257.97 252.06s-257.968-114.215-257.968-252.06v-78.77c0-27.57-21.662-47.261-49.231-47.261s-45.293 19.692-45.293 47.261v78.77c0 175.26 133.908 319.015 305.231 342.645v66.954h-80.738c-27.57 0-49.231 19.693-49.231 47.262s21.662 47.261 49.23 47.261H640c27.57 0 49.23-19.692 49.23-47.261s-21.66-47.262-49.23-47.262h-80.738v-66.954c173.292-23.63 307.2-167.384 307.2-342.646v-78.769c0-27.57-21.662-47.261-49.231-47.261zM512 638.03c86.646 0 157.538-70.893 157.538-157.539V194.954c0-86.646-68.923-155.57-155.569-155.57h-3.938c-86.646 0-155.57 68.924-155.57 155.57v285.538c0 86.646 70.893 157.539 157.539 157.539z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: qxy\n * @Date: 2020-12-01 11:33:38\n * @Last Modified by: qxy\n * @Last Modified time: 2020-12-02 15:09:33\n */\n\n/* eslint-disable max-len */\n\nexport default {\n name: 'custom-dial-keyboard',\n theme: 'outline',\n icon: {\n tag: 'svg',\n attrs: {viewBox: '0 0 1024 1024', x: '0', y: '0'},\n children: [\n {\n tag: 'path',\n attrs: {\n d: 'M179.2 294.4a115.2 115.2 0 110-230.4 115.2 115.2 0 010 230.4zm0 332.8a115.2 115.2 0 110-230.4 115.2 115.2 0 010 230.4zM512 294.4A115.2 115.2 0 11512 64a115.2 115.2 0 010 230.4zm0 332.8a115.2 115.2 0 110-230.4 115.2 115.2 0 010 230.4zm332.8-332.8a115.2 115.2 0 110-230.4 115.2 115.2 0 010 230.4zm0 332.8a115.2 115.2 0 110-230.4 115.2 115.2 0 010 230.4zM179.2 960a115.2 115.2 0 110-230.4 115.2 115.2 0 010 230.4zm332.8 0a115.2 115.2 0 110-230.4 115.2 115.2 0 010 230.4zm332.8 0a115.2 115.2 0 110-230.4 115.2 115.2 0 010 230.4z'\n }\n }\n ]\n }\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2020-12-17 16:28:15\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2020-12-19 11:09:08\n */\n\nimport {Node} from 'tiptap';\n\nimport {LinkOutline, FileOutline} from '../../../../icons/index.js';\n\nconst AntIconMap = {\n link: LinkOutline,\n file: FileOutline\n};\n\nexport default class AntIcon extends Node {\n\n get name() {\n return 'anticon';\n }\n\n get schema() {\n return {\n content: 'inline*',\n group: 'inline',\n draggable: false,\n inline: true,\n attrs: {\n type: {\n default: null\n }\n },\n parseDOM: [\n {\n tag: 'svg',\n getAttrs: dom => ({\n type: dom.getAttribute('data-icon')\n })\n }\n ],\n toDOM: node => {\n const {icon} = AntIconMap[node.attrs.type];\n\n return [\n 'svg',\n {\n ...icon.attrs,\n 'class': 'anticon',\n 'data-icon': node.attrs.type,\n 'width': '1em',\n 'height': '1em',\n 'fill': 'currentColor'\n },\n ...icon.children.map(({tag, attrs}) => [tag, attrs])\n ];\n }\n };\n }\n\n get view() {\n return {\n props: {\n node: {\n type: Object,\n required: true\n }\n },\n\n render() {\n return <a-icon type={this.node.attrs.type}/>;\n }\n };\n }\n\n}\n","/*\n * @Author: wenxiujiang \n * @Date: 2023-07-20 05:54:34 \n * @Last Modified by: wenxiujiang\n * @Last Modified time: 2023-07-21 13:24:47\n */\n\nimport {Node} from 'tiptap';\n\nexport default class Audio extends Node {\n\n get name() {\n return 'audio';\n }\n\n get schema() {\n return {\n content: 'inline*',\n group: 'inline',\n selectable: false,\n draggable: true,\n inline: true,\n attrs: {\n src: {\n default: null\n },\n title: {\n default: null\n }\n },\n parseDOM: [\n {\n tag: 'audio',\n getAttrs: dom => ({\n src: dom.getAttribute('src'),\n title: dom.getAttribute('title')\n })\n }\n ],\n toDOM: node => {\n return [\n 'audio', {\n src: node.attrs.src,\n title: node.attrs.title,\n class: 'yqg-rich-audio',\n controls: 'controls'\n }\n ];\n }\n };\n }\n\n commands({type}) {\n return attrs => (state, dispatch) => {\n const {selection} = state;\n const position = selection.$cursor ? selection.$cursor.pos : selection.$to.pos;\n const node = type.create(attrs);\n const transaction = state.tr.insert(position, node);\n dispatch(transaction);\n };\n }\n\n}\n","<!-- @Author: xiaodongyu -->\n<!-- @Date: 2020-10-15 13:08:17 -->\n<!-- @Last Modified by: wenxiujiang -->\n<!-- @Last Modified time: 2023-07-20 06:40:15 -->\n\n<template>\n <div class=\"field-rich\">\n <template v-if=\"!disabled\">\n <editor-menu-bar\n v-slot=\"{commands, isActive}\"\n :editor=\"editor\"\n >\n <component\n :is=\"def.customMenubar\"\n v-if=\"def && def.customMenubar\"\n class=\"menubar\"\n v-bind=\"{commands, isActive}\"\n />\n <div\n v-else\n class=\"menubar\"\n >\n <div class=\"row\">\n <a-tooltip\n v-for=\"{icon, cmd} in $options.CmdIcon.action\"\n :key=\"cmd\"\n :title=\"$t(prefix(cmd))\"\n >\n <button\n class=\"menubar__button\"\n @click=\"commands[cmd]\"\n >\n <a-icon :type=\"icon\" />\n </button>\n </a-tooltip>\n <a-tooltip\n v-for=\"{cmd, icon, text, arg, title} in $options.CmdIcon.active.row1\"\n :key=\"text || icon || cmd\"\n :title=\"$t(prefix(title || cmd))\"\n >\n <button\n :class=\"{'is-active': isActive[cmd](arg)}\"\n class=\"menubar__button\"\n @click=\"commands[cmd](arg)\"\n >\n <a-icon\n v-if=\"icon\"\n :type=\"icon\"\n />\n <template v-else>\n {{ text }}\n </template>\n </button>\n </a-tooltip>\n </div>\n <div class=\"row\">\n <a-tooltip\n v-for=\"{cmd, icon, text, arg, title} in $options.CmdIcon.active.row2\"\n :key=\"text || icon || cmd\"\n :title=\"$t(prefix(title || cmd))\"\n >\n <button\n :class=\"{'is-active': isActive[cmd](arg)}\"\n class=\"menubar__button\"\n @click=\"commands[cmd](arg)\"\n >\n <a-icon\n v-if=\"icon\"\n :type=\"icon\"\n />\n <template v-else>\n {{ text }}\n </template>\n </button>\n </a-tooltip>\n <a-tooltip :title=\"$t(prefix('fontSize'))\">\n <button\n :class=\"{'is-active': isActive['inline-font-size']()}\"\n class=\"menubar__button\"\n >\n <inline-font-size-btn\n @change=\"onInlineStyleChange(commands, 'font-size', $event)\"\n />\n </button>\n </a-tooltip>\n <a-tooltip :title=\"$t(prefix('fontColor'))\">\n <button\n :class=\"{'is-active': isActive['inline-color']()}\"\n class=\"menubar__button no-padding\"\n >\n <inline-color-btn\n @change=\"onInlineStyleChange(commands, 'color', $event)\"\n >\n <template #default=\"{color}\">\n <a-icon\n :style=\"`color: ${color};`\"\n class=\"inline-style-btn-icon\"\n type=\"font-colors\"\n @click=\"onInlineStyleChange(commands, 'color', color)\"\n />\n </template>\n </inline-color-btn>\n </button>\n </a-tooltip>\n <a-tooltip :title=\"$t(prefix('backgroundColor'))\">\n <button\n :class=\"{'is-active': isActive['inline-background-color']()}\"\n class=\"menubar__button no-padding\"\n >\n <inline-color-btn\n @change=\"onInlineStyleChange(commands, 'background-color', $event)\"\n >\n <template #default=\"{color}\">\n <a-icon\n :style=\"`color: ${color};`\"\n class=\"inline-style-btn-icon\"\n type=\"bg-colors\"\n @click=\"onInlineStyleChange(commands, 'background-color', color)\"\n />\n </template>\n </inline-color-btn>\n </button>\n </a-tooltip>\n <a-tooltip :title=\"$t(prefix('link'))\">\n <button\n class=\"menubar__button\"\n @click=\"openLinkModal(commands.anchor)\"\n >\n <a-icon type=\"link\" />\n </button>\n </a-tooltip>\n <a-tooltip :title=\"$t(prefix('image'))\">\n <button\n class=\"menubar__button\"\n @click=\"openImageUploadModal(commands.image, commands.hard_break)\"\n >\n <a-icon type=\"file-image\" />\n </button>\n </a-tooltip>\n <a-tooltip :title=\"$t(prefix('audio'))\">\n <button\n class=\"menubar__button\"\n @click=\"openAudioUploadModal(commands.audio, commands.hard_break)\"\n >\n <a-icon type=\"audio\" />\n </button>\n </a-tooltip>\n <a-tooltip :title=\"$t(prefix('file'))\">\n <button\n class=\"menubar__button\"\n @click=\"openFileUploadModal(commands.anchor, commands.hard_break)\"\n >\n <a-icon type=\"file\" />\n </button>\n </a-tooltip>\n <a-tooltip :title=\"$t(prefix('table'))\">\n <button\n class=\"menubar__button\"\n @click=\"commands.createTable({rowsCount: 3, colsCount: 3, withHeaderRow: false })\"\n >\n <a-icon type=\"custom-table\" />\n </button>\n </a-tooltip>\n <template v-if=\"isActive.table()\">\n <a-tooltip\n v-for=\"{icon, cmd} in $options.CmdIcon.table\"\n :key=\"cmd\"\n :title=\"$t(prefix(cmd))\"\n >\n <button\n class=\"menubar__button\"\n @click=\"commands[cmd]\"\n >\n <a-icon :type=\"icon\" />\n </button>\n </a-tooltip>\n </template>\n </div>\n </div>\n </editor-menu-bar>\n <div class=\"search\">\n <input\n v-model=\"searchTerm\"\n :placeholder=\"$t(prefix('search'))\"\n type=\"text\"\n @keydown.enter.prevent=\"onSearch(editor.commands.find)\"\n >\n <input\n v-model=\"replaceWith\"\n :placeholder=\"$t(prefix('replace'))\"\n type=\"text\"\n >\n <a-button\n size=\"small\"\n class=\"search-btn\"\n @click=\"onSearch(editor.commands.find)\"\n >\n {{ $t(prefix('search')) }}\n </a-button>\n <a-button\n size=\"small\"\n class=\"search-btn\"\n @click=\"onClear(editor.commands.clearSearch)\"\n >\n {{ $t(prefix('clear')) }}\n </a-button>\n <a-button\n size=\"small\"\n :disabled=\"!searchTerm ||!replaceWith\"\n class=\"search-btn\"\n @click=\"onReplace(editor.commands.find, editor.commands.replace)\"\n >\n {{ $t(prefix('replace')) }}\n </a-button>\n <a-button\n size=\"small\"\n :disabled=\"!searchTerm ||!replaceWith\"\n class=\"search-btn\"\n @click=\"onReplace(editor.commands.find, editor.commands.replaceAll)\"\n >\n {{ $t(prefix('replaceAll')) }}\n </a-button>\n </div>\n </template>\n <editor-content\n class=\"editor__content\"\n :editor=\"editor\"\n />\n </div>\n</template>\n\n<script type=\"text/babel\">\nimport {Editor, EditorContent, EditorMenuBar} from 'tiptap';\nimport {\n Blockquote,\n CodeBlock,\n HardBreak,\n Heading,\n HorizontalRule,\n OrderedList,\n BulletList,\n ListItem,\n TodoItem,\n TodoList,\n Bold,\n Code,\n Image,\n Italic,\n Strike,\n Underline,\n History,\n Table,\n TableHeader,\n TableCell,\n TableRow,\n Search\n} from 'tiptap-extensions';\n\nimport AudioUploadModal from '../../modal/audio-upload-modal.vue';\nimport FileUploadModal from '../../modal/file-upload-modal.vue';\nimport ImageUploadModal from '../../modal/image-upload-modal.vue';\nimport InlineColorBtn from './inline-color-btn.vue';\nimport InlineFontSizeBtn from './inline-font-size-btn.vue';\nimport Alignment from './mark/alignment.js';\nimport InlineStyle from './mark/inline-style.js';\nimport Anchor from './node/anchor.js';\nimport AntIcon from './node/ant-icon.js';\nimport Audio from './node/audio.js';\n\nexport default {\n name: 'FieldRich',\n\n components: {\n EditorMenuBar,\n EditorContent,\n InlineColorBtn,\n InlineFontSizeBtn\n },\n\n model: {\n props: 'value',\n event: 'change'\n },\n\n props: {\n value: {\n type: String,\n default: undefined\n },\n\n disabled: {\n type: Boolean,\n default: false\n },\n\n fileDef: {\n type: Object,\n default: undefined\n },\n\n imageDef: {\n type: Object,\n default: undefined\n },\n\n def: {\n type: Object,\n default: undefined\n }\n },\n\n CmdIcon: {\n action: [\n {cmd: 'undo', icon: 'undo'},\n {cmd: 'redo', icon: 'redo'},\n {cmd: 'horizontal_rule', icon: 'minus'}\n ],\n active: {\n row1: [\n {cmd: 'paragraph', text: 'P'},\n {cmd: 'heading', arg: {level: 1}, text: 'H1', title: 'h1'},\n {cmd: 'heading', arg: {level: 2}, text: 'H2', title: 'h2'},\n {cmd: 'heading', arg: {level: 3}, text: 'H3', title: 'h3'},\n {cmd: 'heading', arg: {level: 4}, text: 'H4', title: 'h4'},\n {cmd: 'heading', arg: {level: 5}, text: 'H5', title: 'h5'},\n {cmd: 'heading', arg: {level: 6}, text: 'H6', title: 'h6'},\n {cmd: 'bullet_list', icon: 'unordered-list'},\n {cmd: 'ordered_list', icon: 'ordered-list'},\n {cmd: 'blockquote', text: '”'},\n {cmd: 'code', text: '``'},\n {cmd: 'code_block', text: '<>'},\n {cmd: 'left', icon: 'align-left', title: 'tal'},\n {cmd: 'center', icon: 'align-center', title: 'tac'},\n {cmd: 'right', icon: 'align-right', title: 'tar'}\n ],\n row2: [\n {cmd: 'bold', icon: 'bold'},\n {cmd: 'italic', icon: 'italic'},\n {cmd: 'strike', icon: 'strikethrough'},\n {cmd: 'underline', icon: 'underline'}\n ]\n },\n table: [\n {cmd: 'deleteTable', icon: 'custom-delete-table'},\n {cmd: 'addColumnBefore', icon: 'custom-add-col-before'},\n {cmd: 'addColumnAfter', icon: 'custom-add-col-after'},\n {cmd: 'deleteColumn', icon: 'custom-delete-col'},\n {cmd: 'addRowBefore', icon: 'custom-add-row-before'},\n {cmd: 'addRowAfter', icon: 'custom-add-row-after'},\n {cmd: 'deleteRow', icon: 'custom-delete-row'},\n {cmd: 'toggleCellMerge', icon: 'custom-combine-cells'}\n ]\n },\n\n data() {\n const InlineColor = InlineStyle('color');\n const InlineBgc = InlineStyle('background-color', 'display: inline-block;');\n const InlineFontSize = InlineStyle('font-size');\n const AlignLeft = Alignment('left');\n const AlignCenter = Alignment('center');\n const AlignRight = Alignment('right');\n const {disabled, onDrop, onPaste} = this;\n\n return {\n searchTerm: '',\n replaceWith: '',\n editor: new Editor({\n extensions: [\n new Anchor(),\n new AntIcon(),\n new Audio(),\n new Blockquote(),\n new BulletList(),\n new CodeBlock(),\n new HardBreak(),\n new Heading(),\n new HorizontalRule(),\n new ListItem(),\n new OrderedList(),\n new TodoItem(),\n new TodoList(),\n new Bold(),\n new Code(),\n // omit Image drop handler\n Object.create(new Image(), {plugins: []}),\n new Italic(),\n new Strike(),\n new Underline(),\n new History(),\n new Table({resizable: true}),\n new TableHeader(),\n new TableCell(),\n new TableRow(),\n new Search({disableRegex: false}),\n new InlineColor(),\n new InlineBgc(),\n new InlineFontSize(),\n new AlignLeft(),\n new AlignCenter(),\n new AlignRight()\n ],\n\n content: this.value || '<p/>'.repeat(3),\n\n onUpdate: evt => this.$emit('change', evt.getHTML()),\n\n editable: !disabled,\n\n onDrop,\n\n onPaste\n })\n };\n },\n\n watch: {\n value(val) {\n if (val !== this.editor.getHTML()) {\n this.editor.setContent(val);\n }\n }\n },\n\n methods: {\n prefix(cmd) {\n const i18nKey = cmd.replace(/_(.)/g, (match, letter) => letter.toUpperCase());\n\n return `rich.${i18nKey}`;\n },\n\n async openImageUploadModal(imageCmd, brCmd) {\n const {imageDef} = this;\n const {file = {}, imageUrl} = await this.$modal.open(ImageUploadModal, {imageDef, multiple: true});\n [].concat(file).forEach(({id, url}) => {\n imageCmd({src: url || imageUrl, title: id});\n brCmd();\n });\n },\n\n async openAudioUploadModal(audioCmd, brCmd) {\n const {fileDef} = this;\n const {file = {}, fileUrl, fileDesc} = await this.$modal.open(AudioUploadModal, {fileDef, multiple: true});\n [].concat(file).forEach(({id, url, name}) => {\n const src = url || fileUrl;\n audioCmd({src, text: name || fileDesc || src, title: id});\n brCmd();\n });\n },\n\n async openFileUploadModal(anchorCmd, brCmd) {\n const {fileDef} = this;\n const {file = {}, fileUrl, fileDesc} = await this.$modal.open(FileUploadModal, {fileDef, multiple: true});\n [].concat(file).forEach(({id, url, name}) => {\n const href = url || fileUrl;\n anchorCmd({href, text: ` ${name || fileDesc || href} `, title: id, target: '_blank', icon: 'file'});\n brCmd();\n });\n },\n\n async openLinkModal(anchorCmd) {\n const options = {\n layout: 'horizontal',\n fieldDefs: [\n {field: 'url', label: this.prefix('linkUrl'), required: true},\n {field: 'desc', label: this.prefix('linkDesc')}\n ]\n };\n const LinkModal = ({props: {close, dismiss}}) => (\n <yqg-simple-form\n title={this.$t(this.prefix('insertLink'))}\n options={options}\n vOn:confirm={close}\n vOn:cancel={dismiss}\n />\n );\n const {values: {url, desc}} = await this.$modal.open(LinkModal);\n anchorCmd({href: url, text: ` ${desc || url} `, target: '_blank'});\n },\n\n onInlineStyleChange(cmds, styleAttr, value) {\n cmds[`inline-${styleAttr}`]({[styleAttr]: value});\n },\n\n onSearch(searchCmd) {\n const {searchTerm} = this;\n if (!searchTerm) return;\n\n searchCmd(searchTerm);\n },\n\n onClear(clearCmd) {\n Object.assign(this, {\n searchTerm: '',\n replaceWith: ''\n });\n clearCmd();\n },\n\n onReplace(searchCmd, replaceCmd) {\n const {searchTerm, replaceWith} = this;\n searchCmd(searchTerm);\n replaceCmd(replaceWith);\n },\n\n onDrop(editorView, evt) {\n const {files} = evt.dataTransfer;\n this.uploadAndInsert(files, evt);\n },\n\n onPaste(editorView, evt) {\n const {files} = evt.clipboardData;\n this.uploadAndInsert(files, evt);\n },\n\n uploadAndInsert(files, evt) {\n if (files?.length) {\n evt.preventDefault();\n const {props: {customRequest, data}} = this.imageDef;\n const {audio: audioCmd, image: imageCmd, anchor: anchorCmd, hard_break: brCmd} = this.editor.commands;\n Array.from(files).forEach(async file => {\n const {body: {id, url}} = await new Promise((resolve, reject) => {\n customRequest({file, data, onSuccess: resolve, onError: reject});\n });\n if (/image/i.test(file.type)) {\n imageCmd({src: url, title: id});\n } else if (/audio/i.test(file.type)) {\n audioCmd({src: url, text: file.name, title: id});\n } else {\n anchorCmd({href: url, text: ` ${file.name} `, title: id, target: '_blank', icon: 'file'});\n }\n\n brCmd();\n });\n }\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"./rich.scss\";\n\n$color-black: #000;\n$color-white: #fff;\n$color-grey: #ddd;\n\n.field-rich {\n position: relative;\n line-height: 1.5;\n\n // https://stackoverflow.com/questions/22898559/why-is-h2-larger-than-h1 section>h1被webkit规则覆盖导致\n ::v-deep h1 {\n font-size: 2em;\n }\n\n ::v-deep .menubar {\n transition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\n line-height: 1;\n\n &.is-hidden {\n visibility: hidden;\n opacity: 0%;\n }\n\n &.is-focused {\n visibility: visible;\n opacity: 100%;\n transition: visibility 0.2s, opacity 0.2s;\n }\n\n .row {\n margin: 10px 0;\n }\n\n &__button {\n background: transparent;\n border: 0;\n color: $color-black;\n padding: 0.2rem 0.5rem;\n margin-right: 0.2rem;\n border-radius: 3px;\n cursor: pointer;\n outline: none;\n\n &:hover {\n background-color: rgba($color-black, 0.05);\n }\n\n &.is-active {\n background-color: rgba($color-black, 0.1);\n }\n\n &.no-padding {\n padding: 0;\n }\n }\n\n .inline-style-btn-icon {\n padding: 0.2rem 0 0.2rem 0.5rem;\n }\n\n span#{&}__button {\n font-size: 13.3333px;\n }\n }\n\n .search {\n margin-bottom: 10px;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n background-color: rgba($color-black, 0.1);\n padding: 0.5rem;\n border-radius: 5px;\n\n input {\n padding: 0.25rem;\n border: 0;\n border-radius: 3px;\n margin-right: 0.2rem;\n color: #000;\n font: inherit;\n font-size: 0.8rem;\n width: 20%;\n flex: 1;\n outline: none;\n }\n\n &-btn {\n margin-right: 0.2rem;\n }\n }\n\n ::v-deep .find {\n background: rgba(255, 213, 0, 50%);\n }\n\n .editor__content {\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n padding: 10px;\n border: 1px solid #eee;\n max-height: 500px;\n overflow-y: auto;\n\n ::v-deep {\n @include rich;\n\n a {\n text-decoration: underline;\n }\n\n * {\n caret-color: currentColor;\n outline: none;\n }\n\n .resize-cursor {\n cursor: ew-resize;\n cursor: col-resize;\n }\n }\n }\n}\n</style>\n","/*\n * @Author: qxy\n * @Date: 2020-06-30 13:32:14\n * @Last Modified by: qxy\n * @Last Modified time: 2020-06-30 17:23:59\n */\n\nexport default input => {\n const totalSeconds = input / 1000;\n const minute = `${Math.floor(totalSeconds / 60)}`.padStart(2, '0');\n const second = `${Math.floor(totalSeconds % 60)}`.padStart(2, '0');\n\n return `${minute}:${second}`;\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2019-11-22 10:51:02\n * @Last Modified by: ruiwang\n * @Last Modified time: 2023-07-12 17:26:28\n */\n\nimport moment from 'moment-timezone';\n\nexport default (format = 'YYYY-MM-DD') => (\n date,\n timezone = moment.defaultZone?.name || moment.tz.guess(true)\n) => {\n if (!date && date !== 0) return null;\n\n return moment.tz(date, timezone).format(format);\n};\n","/*\n * @Author: bowang \n * @Date: 2023-03-24 11:20:27 \n * @Last Modified by: bowang\n * @Last Modified time: 2023-03-24 11:21:52\n */\n\nimport DOMPurify from 'dompurify';\nimport { marked } from 'marked';\n\nexport default (md: string) => DOMPurify.sanitize(marked(md, { breaks: true }));\n","/**\n * @Author: xiaodongyu\n * @Date: 2023-03-10 10:31:17\n * @Last Modified by: xiaodongyu\n * @Last Modified time: 2023-03-10 10:38:07\n */\n\nexport const numberWithCommas = x => {\n if (!x && x !== 0 && x !== '0') return '';\n\n const parts = x.toString().trim().split('.');\n parts[0] = parts[0] && parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n\n return parts.join('.');\n};\n\nexport const numberWithCommasFixed2 = x => ((x === +x) ? numberWithCommas((x).toFixed(2)) : x);\n\nexport const numberWithCommasFixed4 = x => ((x === +x) ? numberWithCommas((x).toFixed(4)) : x);\n","/*\n * @Author: qxy\n * @Date: 2020-04-20 16:16:52\n * @Last Modified by: shaotanliang@fintopia.tech\n * @Last Modified time: 2024-05-28 16:09:33\n */\n\n/**\n *\n * @param pDigitNum 百分数保留几位小数\n */\nconst decimalToPercent = (pDigitNum = 2) => ({\n // 0.101 => 10.1%\n filter: x => x && (x = +x) && (Math.round(x * (10 ** (pDigitNum + 2))) / (10 ** pDigitNum)),\n\n // 10.11% => 0.101\n reverseFilter: x => x && (x = +x) && (Math.round(x * (10 ** pDigitNum)) / (10 ** (pDigitNum + 2)))\n});\n\nexport default (input, filterParams) => ((input !== null && input === +input && !isNaN(input))\n ? `${decimalToPercent(filterParams?.digit).filter(input).toFixed(filterParams?.digit ?? 2)}%` : '/');\n","/*\n * @Author: ruiwang\n * @Date: 2019-12-19 17:19:06\n * @Last Modified by: ruiwang\n * @Last Modified time: 2019-12-19 17:20:15\n */\n\nexport default (phone, maskNum = 6, suffixNum) => {\n if (!phone) {\n return null;\n }\n\n const regStr = suffixNum ? `(^\\\\+?\\\\d{3})(\\\\d*)(\\\\d{${suffixNum}})` : `(^\\\\+?\\\\d{3})(\\\\d{1,${maskNum}})(\\\\d*)`;\n\n return phone.replace(new RegExp(regStr), (num, $1, $2, $3) => ($1 + $2.replace(/./g, '*') + $3));\n};\n","/*\n * @Author: xiaodongyu\n * @Date 2019-11-22 10:49:59\n * @Last Modified by: bowang\n * @Last Modified time: 2023-03-24 11:22:29\n */\nimport countToTime from './count-to-time.js';\nimport date from './date.js';\nimport markdown from './mardown-to-html.ts';\nimport {numberWithCommas, numberWithCommasFixed2, numberWithCommasFixed4} from './number-with-commas.ts';\nimport percent from './percent.js';\nimport phoneMask from './phone-mask.js';\n\nexport default {\n install(Vue) {\n Vue.filter('date', date());\n Vue.filter('dateTime', date('YYYY-MM-DD HH:mm:ss'));\n Vue.filter('time', date('HH:mm:ss'));\n Vue.filter('numberCommasFixed4', numberWithCommasFixed4);\n Vue.filter('numberCommasFixed2', numberWithCommasFixed2);\n Vue.filter('numberWithCommas', numberWithCommas);\n Vue.filter('phoneMask', phoneMask);\n Vue.filter('percent', percent);\n Vue.filter('countToTime', countToTime);\n Vue.filter('markdown', markdown);\n }\n};\n","/*\n * @Author: YQG Team\n * @Date: 2024-12-19\n * @Description: YQG Simple Component Library - 主入口文件\n */\n\n// 导入 Ant Design Vue 组件\nimport {\n AutoComplete,\n Breadcrumb,\n Badge,\n Button,\n Card,\n Col,\n ConfigProvider,\n Divider,\n Drawer,\n Dropdown,\n Descriptions,\n Form,\n Icon,\n Input,\n Layout,\n LocaleProvider,\n Menu,\n message,\n Modal,\n notification,\n Popconfirm,\n Popover,\n Select,\n Spin,\n Tabs,\n Table,\n Upload,\n Checkbox,\n Tree,\n Rate,\n Radio,\n Row,\n Switch,\n Collapse,\n Tag,\n TreeSelect,\n InputNumber,\n DatePicker,\n TimePicker,\n Tooltip,\n List,\n Steps,\n} from 'ant-design-vue';\n \nimport VueClipboard from 'vue-clipboard2';\n \n// 导入自定义组件\nimport DefValue from './component/def-value.vue';\nimport YqgCardList from './component/yqg-card-list/index.vue';\nimport YqgCodeTextarea from './component/yqg-code-textarea/index.vue';\nimport YqgEnvSwitch from './component/yqg-env-switch/index.vue';\nimport YqgInfinitePagination from './component/yqg-infinite-pagination.vue';\nimport YqgInfo from './component/yqg-info.vue';\nimport YqgInfoTable from './component/yqg-info-table.vue';\nimport YqgSimpleDrawer from './component/yqg-simple-drawer.vue';\nimport YqgSimpleForm from './component/yqg-simple-form/index.vue';\nimport YqgSimpleModal from './component/yqg-simple-modal.vue';\nimport YqgSimpleTable from './component/yqg-simple-table.vue';\nimport YqgStaticForm from './component/yqg-static-form.vue';\nimport YqgSuggestionShortcuts from './component/yqg-suggestion-shortcuts/index.vue';\nimport YqgSwimLaneInput from './component/yqg-swim-lane-input/index.vue';\nimport yqgTransfer from './component/yqg-transfer.vue';\nimport CommonI18n from './component/i18n/index.js';\n\n// 导入表单字段组件\nimport FieldAutoComplete from './component/yqg-simple-form/component/field-auto-complete.vue';\nimport FieldButtonGroup from './component/yqg-simple-form/component/field-button-group.vue';\nimport FieldCascader from './component/yqg-simple-form/component/field-cascader.vue';\nimport FieldCheckbox from './component/yqg-simple-form/component/field-checkbox.vue';\nimport FieldChildForm from './component/yqg-simple-form/component/field-child-form.vue';\nimport FieldCode from './component/yqg-simple-form/component/field-code.vue';\nimport FieldDate from './component/yqg-simple-form/component/field-date.vue';\nimport FieldEnum from './component/yqg-simple-form/component/field-enum.vue';\nimport FieldFile from './component/yqg-simple-form/component/field-file.vue';\nimport FieldGroupForm from './component/yqg-simple-form/component/field-group-form.vue';\nimport FieldInput from './component/yqg-simple-form/component/field-input.vue';\nimport FieldMdEditor from './component/yqg-simple-form/component/field-md-editor/index.vue';\nimport YqgMdView from './component/yqg-simple-form/component/field-md-editor/component/md-view.vue';\nimport FieldRadio from './component/yqg-simple-form/component/field-radio.vue';\nimport FieldRich from './component/yqg-simple-form/component/field-rich/index.vue';\nimport FieldSelect from './component/yqg-simple-form/component/field-select.vue';\nimport FieldSql from './component/yqg-simple-form/component/field-sql.vue';\nimport FieldTableForm from './component/yqg-simple-form/component/field-table-form.vue';\nimport FieldTextarea from './component/yqg-simple-form/component/field-textarea.vue';\nimport FieldTree from './component/yqg-simple-form/component/field-tree.vue';\nimport FieldVirtualSelect from './component/yqg-simple-form/component/field-virtual-select/index.vue';\n \n// 导入混入\nimport { watermark, modal, table, tableSelection, commonTable, clientTable, enumType, cardList } from './mixin/index.js';\n \n// 导入过滤器\nimport Filters from './filter/index.js';\n \n// 导入工具函数\nimport * as util from './util/index.js';\nimport * as formatMap from './util/format-map.js';\nimport * as object from './util/object.js';\n \n// 导入常量\nimport * as constant from './constant/index.js';\n\n// 导入图标\nimport * as Icons from './component/icons/index.js';\n\n// 导入样式\nimport './style/index.scss';\n \n// 全局使用函数\nfunction globalUse(plugins) {\n Object.keys(plugins).forEach(key => {\n this[`$${key}`] = plugins[key];\n });\n}\n \n// 主组件库\nconst YqgSimple = {\n install(Vue) {\n // 注册 Ant Design Vue 组件\n [\n AutoComplete,\n Breadcrumb,\n Badge,\n Button,\n Card,\n Col,\n ConfigProvider,\n Divider,\n Drawer,\n Dropdown,\n Descriptions,\n Form,\n Icon,\n Input,\n Layout,\n LocaleProvider,\n Menu,\n Modal,\n Popconfirm,\n Popover,\n Select,\n Spin,\n Tabs,\n Table,\n Upload,\n Checkbox,\n Tree,\n Rate,\n Radio,\n Row,\n Switch,\n Collapse,\n Tag,\n TreeSelect,\n InputNumber,\n DatePicker,\n TimePicker,\n Tooltip,\n List,\n Steps,\n ].forEach(plugin => Vue.use(plugin));\n \n // 注册全局方法\n const {info, success, error, warning, confirm, destroyAll} = Modal;\n globalUse.call(Vue.prototype, {\n message,\n amessage: message, // 兼容 base-ui,同时注册 $amessage\n notification,\n anotification: notification, // 兼容 base-ui,同时注册 $anotification\n info,\n success,\n error,\n warning,\n confirm,\n aconfirm: confirm, // 兼容 base-ui,同时注册 $aconfirm\n destroyAll,\n });\n \n // 注册第三方插件\n Vue.use(VueClipboard);\n Vue.use(Filters);\n Vue.use(CommonI18n);\n \n // 注册自定义组件\n Vue.component('def-value', DefValue);\n Vue.component('field-auto-complete', FieldAutoComplete);\n Vue.component('field-button-group', FieldButtonGroup);\n Vue.component('field-cascader', FieldCascader);\n Vue.component('field-checkbox', FieldCheckbox);\n Vue.component('field-child-form', FieldChildForm);\n Vue.component('field-code', FieldCode);\n Vue.component('field-date', FieldDate);\n Vue.component('field-enum', FieldEnum);\n Vue.component('field-file', FieldFile);\n Vue.component('field-group-form', FieldGroupForm);\n Vue.component('field-input', FieldInput);\n Vue.component('field-md-editor', FieldMdEditor);\n Vue.component('field-radio', FieldRadio);\n Vue.component('field-rich', FieldRich);\n Vue.component('field-select', FieldSelect);\n Vue.component('field-sql', FieldSql);\n Vue.component('field-table-form', FieldTableForm);\n Vue.component('field-textarea', FieldTextarea);\n Vue.component('field-tree', FieldTree);\n Vue.component('field-virtual-select', FieldVirtualSelect);\n Vue.component('yqg-simple-form', YqgSimpleForm);\n Vue.component('yqg-simple-modal', YqgSimpleModal);\n Vue.component('yqg-simple-drawer', YqgSimpleDrawer);\n Vue.component('yqg-simple-table', YqgSimpleTable);\n Vue.component('yqg-swim-lane-input', YqgSwimLaneInput);\n Vue.component('yqg-env-switch', YqgEnvSwitch);\n Vue.component('yqg-suggestion-shortcuts', YqgSuggestionShortcuts);\n Vue.component('yqg-info', YqgInfo);\n Vue.component('yqg-static-form', YqgStaticForm);\n Vue.component('yqg-info-table', YqgInfoTable);\n Vue.component('yqg-md-view', YqgMdView);\n Vue.component('yqg-transfer', yqgTransfer);\n Vue.component('yqg-infinite-pagination', YqgInfinitePagination);\n Vue.component('yqg-card-list', YqgCardList);\n Vue.component('yqg-code-textarea', YqgCodeTextarea);\n \n // 异步加载组件\n Vue.component('yqg-firework', () => import('./component/yqg-firework/index.vue'));\n \n // 添加全局混入\n Vue.mixin({\n created() {\n // 将混入方法添加到组件实例\n this.$watermark = watermark;\n this.$modal = modal;\n this.$table = table;\n this.$tableSelection = tableSelection;\n this.$commonTable = commonTable;\n this.$clientTable = clientTable;\n this.$enumType = enumType;\n this.$cardList = cardList;\n },\n });\n },\n};\n \n// 导出组件库\nexport default YqgSimple;\n \n// 导出所有组件(按需引入)\nexport {\n // 组件\n DefValue,\n YqgCardList,\n YqgCodeTextarea,\n YqgEnvSwitch,\n YqgInfinitePagination,\n YqgInfo,\n YqgInfoTable,\n YqgSimpleDrawer,\n YqgSimpleForm,\n YqgSimpleModal,\n YqgSimpleTable,\n YqgStaticForm,\n YqgSuggestionShortcuts,\n YqgSwimLaneInput,\n yqgTransfer,\n \n // 表单字段组件\n FieldAutoComplete,\n FieldButtonGroup,\n FieldCascader,\n FieldCheckbox,\n FieldChildForm,\n FieldCode,\n FieldDate,\n FieldEnum,\n FieldFile,\n FieldGroupForm,\n FieldInput,\n FieldMdEditor,\n YqgMdView,\n FieldRadio,\n FieldRich,\n FieldSelect,\n FieldSql,\n FieldTableForm,\n FieldTextarea,\n FieldTree,\n FieldVirtualSelect,\n \n // 混入\n watermark,\n modal,\n table,\n tableSelection,\n commonTable,\n clientTable,\n enumType,\n cardList,\n \n // 过滤器\n Filters,\n \n // 国际化\n CommonI18n,\n \n // 工具函数\n util,\n formatMap,\n object, \n // 常量\n constant,\n // 图标\n Icons,\n};\n "],"names":["_extends","Object","assign","bind","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","helper","DefType","text","number","color","textarea","date","dateTime","dateRange","month","switch","select","virtualSelect","tree","checkbox","radio","file","code","sql","buttonGroup","markdown","time","rich","autoComplete","group","cascader","getText","map","enumType","value","seperator","constructor","val","join","getTreeNodeLabel","idKey","nameKey","str","node","children","tmp","getTreeText","LIST","genText","inject","timestamp","default","undefined","computed","mapGetters","isTimestamp","def","$app","methods","fallback","mapKey","type","enumOptions","timezone","defTz","filter","filterParams","tMap","$t","Enum","fromArray","MAP","includes","Vue","evalProp","values","getKeys","keyString","split","pickValue","obj","keys","forEach","key","err","setValue","result","target","idx","nextKey","test","RegExp","spreadObjectKeys","origin","entries","acc","numberToStr","Number","Boolean","toString","numbersToStr","isMobile","navigator","userAgent","spreadProps","class","className","style","ref","props","appendClass","appendix","String","isPlainObject","isArray","customizer","source","merge","res","script$F","name","mixins","ctx","required","record","defaultText","data","comp","staticProps","mounted","populate","from","QUERY_PROMISE","query","previousMap","queryPromise","render","$scopedSlots","defaultSlot","Comp","formOptions","tableOptions","divider","_mergeJSXProps","domProps","innerHTML","_mergeJSXProps2","list","formVal","item","attrs","options","layout","scopedSlots","records","pagination","_mergeJSXProps3","normalizeComponent","template","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","existing","beforeCreate","isOldIE","toLowerCase","id","addStyle","HEAD","styles","css","media","ids","Set","has","sources","btoa","unescape","encodeURIComponent","JSON","stringify","element","document","createElement","setAttribute","head","getElementsByTagName","appendChild","push","styleSheet","cssText","index","size","textNode","createTextNode","nodes","childNodes","removeChild","insertBefore","__vue_script__","DEFAULT_PAGINATION","pageSize","pageSizeOptions","showSizeChanger","script$E","defaultPagination","clientSearchInput","innerPagination","enableClientSearch","activeRecords","watch","defaultSearchValue","onClientSearch","getWrappedSlots","slotsMapping","scope","$createElement","wrappedSlots","slotName","slot","_","isFunction","renderItem","itemTitle","itemExtra","itemActions","itemContent","title","extra","actions","getPagiantion","pageNo","current","showTotal","total","range","onChange","onPaginationChange","onShowSizeChange","$emit","renderClientSearch","defaultValue","placeholder","on","search","trim","$attrs","grid","column","gutter","pureJSONString","error","console","reformatJson","parsed","parse","CodeMirrorOptions","indentUnit","smartIndent","tabSize","lineWrapping","autoCloseBrackets","autoCloseTags","matchBrackets","matchTags","extraKeys","Tab","cm","somethingSelected","indentSelection","getOption","replaceSelection","execCommand","script$D","components","codemirror","mode","disabled","readOnly","cursorBlinkRate","codeMirror","$refs","enableAutocomplete","editor","showHint","completeSingle","reformatJSON","script$C","hostMap","isProd","StageUtil","isProdEnv","isTest","isTestEnv","buttonText","showSwitch","switchEnv","$route","fullPath","host","prod","window","location","href","defaultPageSizeOptions","script$B","dataSize","hasPrev","hasNext","genOptions","label","prev","changePage","next","page","changePageSize","dynamicProps","getCompProps","params","script$A","isValidDef","x","comProps","colDefs","rest","bordered","getDefValueProps","field","infoCtx","renderCell","staticComp","items","span","script$z","colNum","tableTitle","tableData","chunk","NoWatermarkRouteNames","watermark","getBackgroundImage","user","routeName","canvas","width","height","getContext","fillStyle","rotate","Math","PI","font","fillText","Date","now","imgUrl","toDataURL","background","modal","close","Function","dismiss","tableSelection","TableOptions","rowSelection","selectedRowKeys","selectedRows","fixed","columnTitle","columnWidth","onTableSelectChange","getCheckboxProps","clearSelectedRows","table","cond","sorter","onSearch","omit","onRefresh","onTableChange","filters","commonTable","$watch","clientTable","setCustomInitialValue","model","prop","event","optionDisabled","wrappedEnumType","optionLabelProp","option","pinyin","shortPinyin","initData","$i18n","refresh","beforeDestroy","offRefresh","genEnumTypeFromI18n","originEnumtype","refreshClientEnum","searchValue","forceUpdate","defaultFirstItem","initialValue","cardList","scrollTop","$message","warn","onListChange","scrollTo","top","left","behavior","count","script$y","drawerMap","$nextTick","Error","created","open","clearDrawers","closeDrawers","$router","$drawer","beforeEach","to","drawerComponent","componentProps","closeDrawer","clearDrawer","dialogProps","getContainer","Promise","resolve","reject","$set","args","afterVisibleChange","visible","getDrawerComponentProps","vOn","restProps","drawer","propName","func","$delete","boolOf","valueOf","bool","listSeparator","format","unformat","lineTrim","cur","comma","listJson","boolean","listComma","commaToList","json","moment","getPrecision","num","integer","decimal","digits","percent","pow","isNaN","FormatMap","getFormat","setStorage","itemName","localStorage","setItem","getStorage","getItem","removeItem","hasBaseUi","component","isComponent","isStorageValuesEqual","storageValues","isEqual","pick","script$x","showFieldPath","fieldParent","curValues","$timestamp","minLen","canAdd","hasAdd","maxLen","Infinity","canCopy","hasCopy","canDelete","hasDelete","sync","singleHasDelete","extraData","asyncValidator","getChildForms","childForms","all","form","validateFields","every","valid","childKey","onAdd","getInitialValue","extendAdd","getTime","onCopy","clone","splice","onDelete","len","extendDelete","refs","getFormValues","curr","getItemTitle","itemIndex","onConfirm","results","valueArr","renderSlot","renderSlotBtns","formCtx","child","fragment","childFormExtraBtnNode","childCard","click","copyText","confirmDeleteText","popClose","trigger","confirm","renderAddBtn","addShape","addIcon","addText","addIconOnly","shape","icon","renderChildForm","extraBtns","change","formValues","renderForm","draggable","isDraggable","CloseIcon","callback","$$v","autoInsertSpaceInButton","script$w","needAll","active","onClick","script$v","LineFeed","script$u","customOperationComp","jsonParseErrMsg","textareaHeight","observer","textareaResizable","isFormatBtnVisible","isRemoveSpaceBtnVisible","preStyle","backgroundColor","maxHeight","handler","immediate","initResizeObserver","disconnectResizeObserver","highlightHandler","Prism","highlightElement","onDataChange","nextValue","formatedValue","eval","message","msg","position","match","lineNumber","columnNumber","handleSpaceRemove","newValue","replace","selectionStart","inputType","preString","substring","preWhitespace","lastIndexOf","selectionEnd","onScroll","parentElement","scrollLeft","textareaNode","$el","MutationObserver","debounce","fixHeight","observe","attributes","attributeFilter","disconnect","offsetHeight","getScope","min","max","unitByte","units","isInteger","toFixed","script$t","File","previewValue","fileList","isValid","multiple","single","acceptTips","accept","acceptTipsInvisible","isZh","antProp","beforeUpload","remove","raw","draggableText","draggableTextComp","customPreview","preview","locale","validateFile","minSize","maxSize","imageOnly","isImg","isImage","accepts","some","ext","fileType","curSize","customFileName","customValidateFile","async","isCustomValid","customMessage","reader","FileReader","imgResolve","imgReject","onload","image","Image","onerror","src","readAsDataURL","info","uid","status","find","getFileListValues","onPreview","response","urlField","body","onPreviewPdf","url","getPreviewUrl","valueField","getFileUrl","previewField","getCustomPreviewUrl","previewUrl","decodeURIComponentSafe","encodedURIComponent","decodeURIComponent","isPdf","isDocx","isAudio","script$s","curValue","groupForm","fields","fieldDefs","script$r","invisible","isPassword","toggleType","evt","originalVal","onPressEnter","onBlur","script$q","VNodes","vnodes","tooltipOption","compValue","searchText","changed","timeout","isMultipleSelectAll","selectAll","selectOptions","validateSearch","autoSearchMinLen","tooltipVisible","dropdownMenuStyle","dropdownInvisible","display","getSuperText","filterOption","clearTimeout","setTimeout","uniqVal","uniq","clearAll","onDropdownVisibleChange","script$p","lineNumbers","defOptions","script$o","script$n","compProps","treeData","formatTreeData","treeCheckStrictly","childrenKey","leafOnly","selectable","script$m","itemHeight","screenHeight","startOffset","start","end","validOptionsLength","fakeListHeight","visibleCount","ceil","getTransform","input","componentOptions","scrollEle","scrollEvent","floor","restructure","menu","menuItems","propsData","slice","dialogContext","parentNode","defaultPropsMap","allowClear","showSearch","optionFilterProp","getPopupContainer","showTime","getCalendarContainer","treeDefaultExpandAll","dropdownStyle","overflow","treeNodeFilterProp","FieldMap","FieldInput","FieldTextarea","FieldSelect","FieldVirtualSelect","FieldTree","FieldFile","FieldCode","FieldSql","FieldButtonGroup","FieldGroupForm","FieldCascader","ModeMethodMap","dayStart","dayEnd","secondStart","secondEnd","script$l","setDate","tz","roundMode","timestampOrStr","dealWithRoundMode","momentInstance","method","param","script$k","$form","createForm","initCurValues","hasSlot","formatValues","needTrim","notrim","formattor","handled","getFormCtx","feID","isFieldsTouched","curFormValues","getFieldsValue","$parent","ysf","initialValues","getDecorator","rules","originRules","rowKey","colField","valuePropName","rowValues","rule","validator","curRule","msgKey","getListeners","listeners","renderFormItem","commonItemProps","curDef","rowFormCtx","itemProps","hideCell","is","defRef","fallbackEl","directives","getProps","$event","onFieldChange","itemSuffixEl","itemSuffixClass","refValidPromises","selfValidPromise","refRecord","refValues","recordArr","initValue","uniqueId","rowData","findIndex","restFormCtx","originType","FieldChildForm","FieldDate","getColSlots","defs","opFragments","tableFormExtraBtnNode","formProps","idxLabel","addBtnText","hideIdx","idxProps","opProps","hasExtraBtns","op","hide","scroll","autocomplete","titleSlot","labelComp","_mergeJSXProps4","DefaultLabelCol","script$j","timezoneKey","formErd","textareaListLineTrim","provide","erd","customInitialValues","autoSearch","onReset","confirmLabel","confirmProps","cancelProps","cancelLabel","resetLabel","defaultValues","enterSubmit","autoSaveKey","btnItemLabel","interval","formLayout","colObj","labelCol","wrapperCol","row","justify","defItemProps","colon","optionDefaultValues","fieldPathCacheMap","getFullFieldPath","adjustBtnItemLabel","beforeMount","elementResizeDetectorMaker","strategy","$once","listenTo","uninstall","setStorageInteval","storageVO","$confirm","onOk","realTimeVO","setFieldsValue","onCancel","deactivated","clearInterval","btnItem","el","parentEl","getBoundingClientRect","getValidInitialValues","strictRecord","initial","fieldsWithHideOption","validFieldValues","$listeners","FieldTableForm","useYsfAsCtx","pressEnter","blur","resetFields","mergeRecord","childForm","childFormRecord","childFormValues","setInterval","renderFormBtns","fallbackBtns","reset","cancel","path","parentForm","parentDef","reverse","labelIsComp","itemLabel","labelParam","dataFieldPath","timezoneVisible","labelSlotName","hasLabelSlot","showLabelAsSlot","_mergeJSXProps6","_mergeJSXProps5","renderColItem","colProps","col","_mergeJSXProps7","_mergeJSXProps8","script$i","disableWatermark","watermarkStyle","modalMap","clearModals","modalKey","modalComponent","closeModal","clearModal","isForegroundWatermark","afterClose","getModalComponentProps","DEFAULT_TABLE_OPTIONS","ClientSorterMap","record1","record2","string","val1","val2","localeCompare","__assign","t","s","n","p","__rest","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","rejected","done","then","__generator","y","sent","trys","ops","create","Iterator","verb","Symbol","iterator","v","TypeError","pop","__spreadArray","pack","ar","l","SuppressedError","collectSlots","genSlots","_a","_this","parentIndex","slotKey","startsWith","_b","isString","camelCaseToUnderscore","camelStr","script$h","simpleEmpty","fontSize","cellHorizontalPadding","paginationInfinite","rowInnerTextDelay","searchSliceStep","additionalSearchFilter","visibleMap","defaultVisible","checkedColumns","rowInnerTextList","searchSliceStart","isPaginationInfiniteVisible","columnsMap","validDefColumns","cols","enableSelectColumn","simpleSearch","isSearchTableRendering","searchSliceEnd","getColDefs","activeDefColumns","footer","columns","getColumnOptions","showHeader","renderRecords","lowerSearchText","tdText","renderEmpty","$slots","emptyVNode","tableCacheKey","selectColumnsStr","selectColumns","rowInnerTextListTimeout","colHide","flatMap","tempChildren","enableClientSort","rowSpan","colSpan","dataIndex","stopPropagation","changeVisible","customRender","cell","getColumnWidth","clientSort","getClientSorter","onExpand","onExpandedRowsChange","onExportCurrentPage","mainTable","header","querySelectorAll","textContent","tdList","td","getRowInnerTextList","innerList","innerValue","loop","innerTextTable","temp","rowEl","tdEl","onCheckedColumnsChange","script$g","hideInvalid","isInvalid","staticItemProps","getItemProps","renderDefItem","staticCol","renderHorizontalItem","renderDefValue","titleEl","script$f","systemId","imgIcon","jumptoSuggestion","warning","__$_require_suggestion_png__","Storage","useSessionStorage","cb","noop","storage","sessionStorage","set","cache","get","fn","addEventListener","off","needsRemove","removeEventListener","StorageKey","SwimLaneStorage","script$e","swimLaneId","http","axios","defaults","headers","common","setSwimLane","go","currentRoute","script$d","sourceTableOptions","targetTableOptions","sourceRecords","defaultTargetList","targetList","targetRecords","processSourceTableOptions","onSelectChange","selected","processTargetTableOptions","sourceColDefs","sourceRest","recordsPoint","selectedRecords","selectedList","sort","item1","item2","right","iteratee","deleteItem","zh","addCategory","addNotifSuccess","checkAll","chooseFile","confirmDelete","copy","delete","edit","fileUrl","formatFailed","removeSpace","imageUrl","noData","uploadFile","uploadImage","uploadLocal","imageDesc","fileDesc","pleaseSelect","timeCreate","timeUpdate","uploadAudio","modifyPassword","logout","pleaseInput","line","auto","addColumnBefore","addColumnAfter","addRowBefore","addRowAfter","blockquote","bold","bulletList","clear","codeBlock","deleteColumn","deleteRow","deleteTable","fontColor","h1","h2","h3","h4","h5","h6","horizontalRule","insertLink","italic","link","linkUrl","linkDesc","orderedList","paragraph","primaryColor","redo","replaceAll","standardColor","strike","tac","tal","tar","toggleCellMerge","underline","undo","audio","noGreaterThan","noLessThan","acceptTypes","empty","onlyImage","searchPlaceholder","clientSortTip","exportCurrentPage","searchLoading","ytalk","verifyInfo","initializeFailed","microphoneEnabled","pageClosed","loginSuccess","logoutSuccess","networkJitter","registerTips","callTest","tipText1","tipText2","tipText3","tipText4","testing","microphone","inputDeviceName","speaker","outputDeviceName","initModal","systemErrorModal","content","okText","cancelText","testInMainTab","noAudioDevice","noMicrophone","noSpeaker","noType","noCallAccountNumber","BrowserNotSupported","AbortError","NotAllowedError","NotFoundError","NotReadableError","OverConstrainedError","SecurityError","NotSupportedError","NetworkError","TimeoutError","UnknownError","ConstraintError","unknownError","networkInfo","score","sipLostRate","sipRTT","rtpLostRate","rtpRTT","realTimeQuality","callInfo","hitSeverityTagDuringTheCall","severityTag","seeDetail","enum","speakerType","CUSTOMER","SERVICE","severityLevel","HIGH","MIDDLE_HIGH","MIDDLE","MIDDLE_LOW","LOW","CommonI18n","install","script$c","script$b","parseFun","checked","checkedList","indeterminate","setIndeterminateAndCheckAll","valueHandler","onCheckAllChange","getValues","arr","script$a","api","getToken","Web","Resource","octSavePath","__OCTSAVEPATH__","_i","primaryStaticProps","successStaticProps","warningStaticProps","sizeLongProps","maxWidth","fixedLeft","fixedRight","wholeRow","getPre","prefix","suffix","clearFields","getSdTextStaticProps","checker","success","genColumnWrapStyle","minWidth","wrap","whiteSpace","wordBreak","dateTimeDef","blockItem","hiddenItem","rangeItem","timeCreated","timeUpdated","remark","numberCommasFixed2","generateColumnDefs","extraDefMap","cellFilter","getCommonOptions","_c","flag","_d","_e","extraCols","customRequest","onError","onProgress","onSuccess","__STAGEENV__","__USE__COMMON_API__","platform","savePath","token","observable_1","upload","subscribe","uploadlogFail","complete","uploadlogSuccess","observable_2","post","level","logs","metricsType","measurement","parameter","appName","Country","hideLoading","qiniuFileDef","listType","qiniuImageDef","extendsDefValue","extends","DefValue","dateTimeDayStartDef","dateTimeDayEndDef","isLocal","notLocal","Fields","getFormOptions$2","fileDef","fieldFile","script$9","getFormOptions","getFormOptions$1","imageDef","fieldImage","acceptArr","script$8","KeyCodeMap","esc","tab","enter","up","down","backSpace","insert","selectionText","matched","modify","lineFirstCharIndex","headText","remainText","trimStart","newText","lengthRevise","quote","TabString","preText","selectionFirstLineText","postText","newSelectionFirstLineText","newSelectionText","TabReg","TabSpaceReg","untab","newSelectionStart","spaceNum","selectionRestTextArray","spaces","createVideoEmbed","videoUrl","ytube","DEFAULT_ACTION_LIST","DEFAULT_OPTIONS","override","actionList","actionOrder","KeyCodeEventMap","KeyCodeShiftEventMap","script$7","customizedStyle","optionActionList","actionMap","defineProperties","callAction","action","handleInsert","handleModify","handleKeyDown","shiftKey","keyCode","preventDefault","replaceText","emitChange","setSelectionRange","focus","newSelectionEnd","onInput","script$6","mdText","mdHtml","DOMPurify","sanitize","marked","script$5","mdEditor","mdView","userActionList","disableUploadImage","disableUploadFile","fullScreen","vm","openImageUploadModal","openFileUploadModal","isDisabled","$modal","imageUploadModal","fileUploadModal","fileDescription","description","extStartIdx","encodeURI","script$4","cancelable","renderColOption","optionCol","renderOption","radioButton","optionLabel","optionItems","opt","fieldAudio","script$3","rate","lighten","usePrefix","parseInt","red","green","padStart","PrimaryColors","PrimaryRates","PrimaryRateColors","StandardColors","script$2","initColor","script$1","initSize","optionMap","fill","unset","Alignment","align","Mark","schema","parseDOM","getAttrs","toDOM","mark","commands","toggleMark","InlineStyle","styleAttr","extraStyle","defaultOptions","unsetValue","removeMark","updateMark","ANCHOR_INPUT_REGEX","Anchor","Node","openOnClick","inline","tag","dom","getAttribute","preserveWhitespace","rel","state","dispatch","selection","$cursor","pos","$to","anticon","tr","inputRules","InputRule","replaceWith","plugins","Plugin","handleClick","view","getMarkAttrs","marks","anchor","HTMLAnchorElement","customTable","theme","viewBox","customDeleteTable","customAddColBefore","customAddColAfter","customDeleteCol","customAddRowBefore","customAddRowAfter","customDeleteRow","customCombineCells","customPlusAntd","stroke","x1","y1","x2","y2","customEye","customEyeInvisible","customPlus","customMinus","customMute","customUnmuted","customDialKeyboard","AntIconMap","LinkOutline","FileOutline","AntIcon","Audio","controls","EditorMenuBar","EditorContent","InlineColorBtn","InlineFontSizeBtn","CmdIcon","cmd","row1","arg","row2","InlineColor","InlineBgc","InlineFontSize","AlignLeft","AlignCenter","AlignRight","onDrop","onPaste","searchTerm","Editor","extensions","Blockquote","BulletList","CodeBlock","HardBreak","Heading","HorizontalRule","ListItem","OrderedList","TodoItem","TodoList","Bold","Code","Italic","Strike","Underline","History","Table","resizable","TableHeader","TableCell","TableRow","Search","disableRegex","repeat","onUpdate","getHTML","editable","setContent","letter","toUpperCase","imageCmd","brCmd","ImageUploadModal","openAudioUploadModal","audioCmd","AudioUploadModal","anchorCmd","FileUploadModal","openLinkModal","LinkModal","desc","onInlineStyleChange","cmds","searchCmd","onClear","clearCmd","onReplace","replaceCmd","editorView","files","dataTransfer","uploadAndInsert","clipboardData","hard_break","countToTime","totalSeconds","defaultZone","guess","md","breaks","numberWithCommas","parts","numberWithCommasFixed2","numberWithCommasFixed4","decimalToPercent","pDigitNum","round","reverseFilter","digit","phoneMask","phone","maskNum","suffixNum","regStr","$1","$2","$3","Filters","globalUse","YqgSimple","AutoComplete","Breadcrumb","Badge","Button","Card","Col","ConfigProvider","Divider","Drawer","Dropdown","Descriptions","Form","Icon","Input","Layout","LocaleProvider","Menu","Modal","Popconfirm","Popover","Select","Spin","Tabs","Upload","Checkbox","Tree","Rate","Radio","Row","Switch","Collapse","Tag","TreeSelect","InputNumber","DatePicker","TimePicker","Tooltip","List","Steps","plugin","use","destroyAll","amessage","notification","anotification","aconfirm","VueClipboard","FieldAutoComplete","FieldCheckbox","FieldEnum","FieldMdEditor","FieldRadio","FieldRich","YqgSimpleForm","YqgSimpleModal","YqgSimpleDrawer","YqgSimpleTable","YqgSwimLaneInput","YqgEnvSwitch","YqgSuggestionShortcuts","YqgInfo","YqgStaticForm","YqgInfoTable","YqgMdView","yqgTransfer","YqgInfinitePagination","YqgCardList","YqgCodeTextarea","require","mixin","$watermark","$table","$tableSelection","$commonTable","$clientTable","$enumType","$cardList"],"mappings":"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","x_google_ignoreList":[0,5,6,45]}